Software Engineer
Feb 18, 2023·4 min

Hosting - Part 2 : The Different Levels

Illustration article hébergement 2

Now that we have a clearer idea of our hosting journey, some vocabulary is necessary! As we saw in the previous article, we went through several levels of hosting and they all have their little acronyms.

IaaS (Infrastructure as a Service)

Do you remember when I took my machine and went to put it with a host, or when I rented a machine from them? Well, that was IaaS. In this context, the host takes care of the infrastructure, that is, the building, electricity, network. It can go as far as setting up the machine and installing the operating system, but no further. Then it's up to me to install everything else so that my backend works correctly. If I need a database, or storage, it's up to me to install and configure all that ideally on other machines. In case of hardware failure, it's also up to me to request interventions from the provider to change a disk or memory, for example.

OVH, Scaleway, etc. are mainly IaaS-type hosts. They are slowly evolving to the next level, but they are far behind Google, Amazon, or Microsoft.

PaaS (Platform as a Service)

Historically, this is where the Cloud positions itself. Even if it also indirectly does IaaS, it goes further by offering ready-to-use software components and tools, as well as APIs to tool everything. We are no longer obligated to operate for database management, file storage, or sending emails. We use the services provided and can focus on our software's features.

SaaS (Software as a Service)

This is the most well-known to the general public. When you use Gmail, Drive, etc., you are using SaaS. Where PaaS will just give you software components, SaaS will give you the entire software with its different business rules. You don't have to worry about how it works internally, where it is hosted, how it scales, etc. Just, it works and you can use it directly.

And more recently, 2 new ones have appeared

CaaS (Container as a Service)

As we have seen, in order to optimize the use of physical machines, providers generally offer virtual machines. In terms of execution, if we take the entire execution flow, the server will allocate time slots to each virtual machine so that they can perform their tasks. And in the virtual machines themselves, we will find an operating system that will also allocate time for my back-end but also for other things. The same is true for access to resources. There is a redundancy in all this that adds unnecessary workload for us. That's where what is called Containers or more specifically, Docker comes in. This allows, in a somewhat obscure way at first glance, to partition our backends as we would with virtual machines but without the overload associated with the intermediate operating system. It is the physical machine system that directly operates the allocation of resources of each backend through the containers.

The big advantage of this approach is that it standardized the way to package an application. Regardless of the type of application (php, java, node, ...) we package it in a container.

And well there are providers that allow to deploy containers directly without worrying about the machine below. This is notably what AWS does with its ECS Fargate service.

FaaS (Function as a Service)

When you do your shopping at the Drive, Carrefour will give you a time slot and send you an email to tell you that your groceries are available. There you go and occupy a parking spot for a few minutes then your groceries arrive and you can leave. If there was no email to warn you, and the time slot was provided by the Post Office, you would have to arrive very early in the morning and monopolize the parking spot for a long time waiting for the order preparation, preventing someone else from picking up theirs. A traditional back-end is the same thing. It is something that is started and patiently waits for applications to send requests to it. During this time it monopolizes a machine that we pay for. In FaaS, the provider is responsible for waiting and listening to requests from multiple applications. When it receives a request from your application, it will load your back-end and forward the request. Once it is processed, it will release the resources occupied by your back-end to be used for another back-end. In short, in FaaS mode, you are the "Function" and Carrefour is the provider. At AWS, this service is possible with AWS-Lambda coupled with API-Gateway.

Conclusion That's it, we're done with off-putting acronyms. It allowed us to understand that there were several levels of abstraction in the Cloud, from the closest, from the hardware to the most distant. Now that we have a better idea of ​​these different levels, I suggest you see this more concretely on a typical architecture in the article Hosting - Part 3.

4 min

Thank you for reading this article.

Our website uses cookies
Our website uses cookies to measure our audience, track performance during advertising campaigns and provide the best experience.