Different Cloud models

Giorgio Boa
FullStack Developer @ Qarik
Microsoft MVP
# Different Cloud models
Let's start by saying that the term Cloud is very generic and therefore it makes sense to go into detail to fully understand what it means.
It is clear that when you move execution to the Cloud you are not changing the way you run your application, you always need a server or runtime that runs your code. Thanks to certain types of abstraction, it is no longer you who has the management and burden of the entire system and by paying for external services, you can lighten the work because it will be managed by these services.
# Legenda
I have simplified the system layers and grouped them to allow you to better understand the various types of Cloud services that are available, it is deliberately a summary to avoid losing focus with too many concepts.
With this term, we mean the entire part relating to the physical place where the server resides, the light, the wiring, internet connection, air conditioning, and a whole series of precautions that must be taken to manage everything safely.
With this term, we are talking about the physical part of the server, hard disk, RAM, and CPU.
This layer, however, is the operating system that allows your applications to run and is therefore the basis of your system.
This layer indicates the application part, it is the compiled code, it is the final part of the stack and it is what differentiates a certain type of business from another. An e-commerce application will have an application part that is certainly different from an application that collects reservations for a public car park.
You have the burden of management and therefore you will have to personally worry about doing things in the best possible way.
It is managed by a third party, you don't have to worry too much about how things are implemented, you pay for a service that offers you different customizations.
# On premises
You saw this approach in the previous lesson. Everything is managed in-house from the internet connection with the relevant wiring to the final application. As mentioned, this approach leaves a lot of freedom for customization, it's your tailor-made home, and you can decide whether to have an open kitchen or divide it from the dining room with a wall. It is you who decides how to do things and above all how much to spend on various materials.
# Hosted
With this Cloud service model, you have the possibility of renting a space within a data center, with cabling and, internet connection, etc. etc. The service provider will charge you for the slot you occupy while you use the hardware you chose and purchased. So it would be as if we were going to build our house but on rented land. You will pay for the land in your favorite place, close to amenities, and you will have the freedom to build your dream home, as you have always dreamed of.
# Infrastructure as a Service (IasS)
As we go down we are increasingly reducing the scope of your possibilities for intervention, we are moving more and more into an environment managed by the service manager.
In fact, with IasS you will have a machine sized according to your disk, RAM, and CPU needs. Here you can install the operating system of your choice and you will have to take care of updating the system and other maintenance operations of the system itself. On top of the operating system, you will run the application relating to your business. It's as if they rented us the land with the external walls of the house, we will then be the ones to decide how to divide the rooms to live everyday life as best as possible.
# Platform as a Service (PaaS)
With this model, you can really appreciate the concept of service because you have very little left to do because you will have a system completely managed by third parties where your application can run. A real platform managed and maintained by the vendor you choose. It's like having a rented house without furniture, you will decide which sofa you prefer, but most of the decisions and problems are solved upfront.
# Software as a Service (SaaS)
This is the maximum level of abstraction, you already have a working application, and all you have to do is use it. It's like a rented house complete with furniture, all that remains is to live in it. We can think of applications like "Gmail", it is for all intents and purposes a software that you are using without going into the details of where the application is running or how much memory has been dedicated to be able to run it.
Clearly, here your freedom in terms of configuration and functionality is limited to what the software offers, you cannot have everything you want.
# Function as a Service (FaaS)
A variant of SaaS is Function as a Service (FaaS), it is in fact very similar except that the vendor provides functions to execute our application logic. A possible use of FaaS could be a service to remove the background from an image. You could implement the code to receive even a large image and return a new image with no background. This is a great use case. You could charge for the service and receive money for each execution. In terms of costs, you would only pay for the time you use the infrastructure and thus you could optimize costs and create your business.
# Conclusion
The cloud computing landscape is rich with diverse models, each offering unique benefits and drawbacks.
From the complete control of on-premise to the scalability and cost-effectiveness of cloud services, the key is to understand your specific needs and choose the model that best aligns with them.
Whether you opt for the shared resources of public cloud, the dedicated infrastructure of private cloud, or a hybrid approach combining both, the future of computing is undoubtedly cloud-based. By carefully evaluating your requirements and exploring the available options, you can harness the power of the cloud to drive innovation, optimize resources, and ultimately achieve your business goals.
We have laid the foundations to see together how to deploy a React application with Google Firebase Hosting.