Cloud Computing’s most Basic Concepts-Service Models
Do you understand the concepts of IaaS, PaaS, FaaS, SaaS, Serverless, CaaS? Can you tell the differences between them?
With the containerization of Docker, Kubernetes, CNCF, and the development of open-source communities, related frameworks and technology is booming and iterating rapidly. Cloud Computing, been applied for many years, is pushing developers into the new technological era. Companies and developers who are not using or not planning to use Cloud-Native gradually feel tremendous pressure in keeping up with the technology trends.
The first step is to understand the concepts of IaaS, PaaS, FaaS, SaaS, Serverless, CaaS, etc., which appear in almost all cloud computing-related conferences, technologies, and documents. So that you can clarify where you are and select suitable technologies and frameworks reasonably.
You can easily find related articles and videos on the internet explaining these concepts. And they are the same essentially, understanding the advantages of Cloud Computing and why we give up the old on-premises and embrace the cloud era.
No matter how technology updates and frameworks vary, our demand remains unchangeable. That is computing power(provided by the server), such as CPU, GPU, etc., storage hardware, including MEM, etc., and network functions to ensure their interaction. These are what we call Infrastructures.
On this basis, OS, Virtualization, Middleware, and other software that was once maintained by IT personnel develop. They provide a basically usable environment with corresponding computing and storage capabilities.
The last thing is the application level, including runtime(such as JVM), data(such as files, pictures), code about which ordinary developers used to concern.
These three layers and nine factors are the must-included in both on-premises and cloud computing. You can see that various open-source frameworks and tools in the CNCF landscape are also developed around these concepts, whether those that provide better network management functions, such as proxy, service mesh, or the various runtimes, such as storage, container runtime.
As an analogy, imagine the development of modern agriculture. From plowing, sowing, planting to final harvest, one family may only manage 3 acres of land. The current mechanized operation boosts the family’s management capacity to hundreds of acres. The standardization, high efficiency, and higher resistance to various natural disasters are just like the advantages of cloud computing compared to on-premises.
- Scalability. Automatic and rapid expansion, expanding and contracting on demands.
- Cost. Charges-on-demand avoids ineffective expansion, expensive server, bandwidth, etc., and reduces maintenance overhead.
- Maintenance. Rely on the professional cloud providers, with no need to form an own maintenance team.
- Security. You are not required to propose your security strategy. Instead, leave it to professionals.
World-class companies like AWS, Google, and Microsoft bring the cloud into play to provide rapid innovation, flexible resources, and scale economy. For cloud services, users usually pay for what they use and adjust service usage according to business needs, reducing operating costs, making the infrastructure run more efficiently.
After understanding the advantages of the cloud and its related basic components, it is easy to digest the concepts of IaaS, PaaS, FaaS, SaaS, Serverless, and CaaS.
TL;DR, IaaS, PaaS, FaaS, SaaS, Serverless, CaaS are different service models that cloud providers made to meet different needs after combining the nine basic elements.
Look at the figure below to know IaaS, PaaS, FaaS, SaaS.
- IaaS, the most basic layer, forms the cloud by managing the underlying hardware’s computing and storage resources. It provides virtualization services involving functions, including network management and container orchestration. For example, you can set a reasonable resource range for applications via Kubernetes, and it also has functions such as autoscale, upgrades, etc. And you can achieve network traffic management through service mesh.
- PaaS includes
middleware+ IaaS, and users only take charge of deploying code and managing data.
- FaaS is more advanced, on which users no longer need to manage data, but only to provide a code library, and the platform will implement all other functions. FaaS, a practical application of Serverless, is actually not serverless, but a hosting server concept. With this undoubtedly huge boon for individual developers, it is conceivable that more and more app developers will deploy their code through AWS lambda or Google Cloud Functions.
- SaaS is not just a cloud computing concept, but more like deploying traditional software on the cloud and accessing via the Internet. It is a package for real external users, not ordinary developers. And users can use it through the accounts without the need to concern about anything else.
If the classification above is still a little confusing, let’s make a metaphor. Many videos or articles take buses, cars, and taxis as a metaphor, while I think maybe using houses can help your understanding.
Consider IaaS as a plain house, electricity, gas, water as infrastructures. First, you have to finish the wiring and piping, then decorations, and the furniture and ornament(just like runtime and code) as well before you can finally move in. Besides this cost, there will also be utility costs when living in it.
The real estate companies develop the apartment to make it easier. With them completing all the interior finish, you only need to buy furniture and decorate. That is just what PaaS does. You run away from the trouble of choosing a contractor or materials, and IKEA can satisfy you. (This is not an advertisement!)
Using FaaS is like renting. You pay the rental on the lease and pay the utility fee according to consumption.
Then what is SaaS? It is like you staying in a hotel or Airbnb when you are on vacation, and all the costs are covered in the room rates.
Now the last one, CaaS(Containers as a Service). I first saw this concept in the official Kubernetes blog.
Containers as a Service, the foundation for next-generation PaaS — from kubernetes.io
Is it another PaaS? Code has become a deeply rooted concept in the container when the containerization concept develops, just like Kubernetes, and the container is the truly smallest unit. The container in CaaS is more like an image, an executable unit of code package with dependencies. It has obvious advantages, such as portability and speed. Furthermore, for the use of tools such as
buildpacks, our image becomes safer.
In the recent North American Kubecon2020, edge computing was listed as one of 2021’s most noteworthy cloud-native fields. What an exciting thing it is when various images developed are directly deployed through CaaS to terminals and run directly.
To be noted, when you search for CaaS in Google, another CaaS (Communication as a Service) maybe jump out. This is the abbreviation for voice services large telecom companies provided to other small or medium-sized companies, also a use case of Cloud Computing, but not the commonly discussed one.
How to choose?
After understanding the basic concepts and relations between those Cloud service models, it important to know when to adopt them.
It depends on who you are or what you try to build.
Generally speaking, FaaS, PaaS, and IaaS meet the needs of three types of developers, respectively.
- FaaS, the most popular choice these days, encouraging more and more small companies or independent developers to build apps on top of it. It greatly cuts their operation, maintenance costs, reduces security risks, and gives them the ability to iterate products quickly.
- PaaS is more suitable for middle-level companies or companies with multiple products and more control over their code and data. These companies usually have DevOps developers to manage the PaaS configuration and make sure things work well.
- IaaS, designed for big companies who don’t want to take the risk to build their own private cloud, and want to be able to own the choice of control things like CI/CD or resource management. These companies can simply enjoy the cloud’s advantages, like disaster recovery or transcontinental deployment, without investing so much. And their platform developers can build internal tools to facilitate development efficiency.
In the end
I am trying to describe the most common Service Models in the Cloud Computing concept based on my understanding. I hope this article is beneficial to the readers.
If you seek a more in-depth understanding, click on the links I provided to learn more. Nothing better than their explanation!
Thanks for reading!