In the Cloud Ecosystem, we often hear the terms IaaS(Infrastructure as a Service), PaaS(Platform as a Service), and SaaS(Software as a Service). Various services are provided to the users for users to be able to save costs or time or both. Before we look at what these 3 terms are, let's first take a look at why they came into being.
Before the age of Cloud Computing, if someone wanted to host a website or application, they had to spend a lot of money just to set up the infrastructure needed. This excludes the development costs. Also, a drawback with this was that if your hardware goes bad, it would take quite a bit of time to replace it. Moreover, you had to set up the Operating System, Virtual Environments, Runtime Environments by yourself. As you can guess, this is was very expensive and time-consuming to set up.
This is why services such as IaaS, PaaS, and SaaS came into the picture. Let's take a look at each of these
Infrastructure as a Service (IaaS)
Infrastructure as a Service is exactly what it sounds like. The resources which we need to run our applications are taken from a cloud provider. What this means, is that we can ask a provider to create a Virtual Environment with a certain amount of resources. Let's take an example of this.
Let's say I have a very weak laptop, and I want to run some Machine Learning Model which needs more computing power than what my laptop is providing. One solution is for me to buy a more powerful laptop. Of course, this would be quite expensive, and setting up the environment will also take time.
Instead, I can ask a Cloud provider such as AWS, GCP, or Azure to make a Virtual Machine which let's say 4 CPUs and 16 GB Ram, and 40GB Storage. This too will cost me money, however, it is a much more efficient solution compared to buying a new laptop. I can now run my Machine Learning Model in this Virtual Environment which has adequate resources.
How are these resources allocated? Well, The provider still has to spend lots of money in order to set up the hardware. They have physical hardware resources which are then allocated to the users on demand. When the user request some resources, the resources are allocated from the available resource pool. Since multiple users are allocated resources from the same pool, the costs are much lower than having to buy and set up all the hardware yourself. The only thing the user needs to have is a stable internet connection to be able to access these.
A couple of IaaS providers include AWS, Azure, and OpenStack
Platform as a Service (PaaS)
PaaS is built on top of IaaS. This means that we already have the infrastructure ready and PaaS provides us with Middleware and a Runtime. It also gives us a lot more such as developer tools, databases and more. PaaS takes care of most of the infrastructure and tools needed to develop any application, so all we have to do is enter the data, logic, and APIs and finally create the application.
PaaS also allows you to avoid the expense and complexity of buying and managing software licenses, the underlying application infrastructure, middleware, container orchestrators such as Kubernetes or the development tools and other resources.
PaaS often has Kubernetes as a platform which in turn can let us deploy and scale our applications, make a CI/CD pipeline, have a Container Orchestrator, and add more features using a Service Mesh.
Some popular examples of Paas are Kubernetes, Docker, Heroku, OpenShift, GitHub, and GitLab.
Software as a Service (SaaS)
SaaS is something we've all used with or without knowing. Web-based applications such as a browser games are a good example of this. In simple terms, SaaS is an application that is delivered to the user through the web, without the user having to worry about having the infrastructure or software requirements needed to run the application.
SaaS applications are sometimes called Web-based software, on-demand software, or hosted software. Regardless of the name, these applications are run and managed by the provider. This includes the performance, security, and availability of the application
If your looking to make applications used by a non-technical person, implementing SaaS would be a good idea as the user will not need to worry about Infrastructure or any other software requirements.
IaaS is useful when your local system is not powerful enough to do a certain task. PaaS is useful when you don't want to worry about the infrastructure or runtime. SaaS is useful to deliver applications to the end-user in an easy manner.
SaaS is dependent on PaaS, while PaaS is dependent on IaaS.
Did you find this article valuable?
Support Siddhant Khisty by becoming a sponsor. Any amount is appreciated!