Cloud computing as a concept came over a decade back and is now a significant part of IT strategy. To visualise cloud services, three verticals were identified – IaaS, PaaS, and SaaS. Along with these three, a fourth vertical exists that depicts the on-prem deployment of applications, i.e. managing your own datacenter.
This definition has been universally accepted for about a decade now. However, during this time, cloud services have evolved significantly. The most dynamic offering is the set of managed services such as databases, messaging, Bigdata etc. The managed services vary significantly depending on the cloud provider but that is a discussion for another time.
In this article, let’s focus on the originally identified verticals – IaaS, PaaS, and SaaS. IaaS is a viable option for taking control of the stack from the VM and upwards, while SaaS is exactly the opposite end of the spectrum of control. When we look at these services from the perspective of hosting business applications, it becomes clear that platform as a service seems like a good balance where most of the infrastructure and scaling related heavy lifting is done by the cloud provider and yet vendor lock-in is not the primary concern. Due to this, the PaaS vertical has also evolved significantly.
Let’s take an example to illustrate PaaS. Assume we have a web application written in java/python (programming language does not matter) and the business is not interested in managing the hardware, networking, storage, back up, recovery, patching and the list goes on and on. PaaS looks to provide the environment to run the application and takes the responsibility for uptime including scale. By scale, I mean adding more components when the load increases and removing components when the load reduces, in simple terms, elasticity.
In the last decade, PaaS has morphed into two more services, container (CaaS) and function (FaaS). The difference in PaaS, CaaS and FaaS is subtle and is in the run time. Going with the previous application example, the PaaS run time (can vary among cloud providers), could be java or python although many other options do exist. The application can be bundled natively for that language and can be dropped in the environment managed by the PaaS. An example is AWS Elastic Beanstalk, GCP App Engine flexible and Azure App Service.
In CaaS, it practically does not matter what the application is and how it is written, as long as it is bundled or packaged in a specific way. That bundle very popularly is known as the docker image. So the application image is provided to the CaaS which will run it like PaaS and the only difference being it will manage a cluster of containers. Obviously containers will require underlying IaaS but that is not the focus for the user of this service. An example is AWS Elastic Container Service, GCP Cloud Run and Azure Container Instances.
Developers can argue that writing code is the interesting part and everything else from then on; not so! FaaS allows developers to write code in small units and the service will manage everything else. The term FaaS does not indicate application, instead calls it “Function”. An example could be given: a customer id returns the list of past orders or given a saving bank account number, fetch the last ten transactions and so on. This service really delivers on agility, fail-fast and pivoting rapidly. An example is AWS Lambda, GCP Cloud Functions and Azure Functions.
We all know the software will have bugs, something mostly goes wrong at the wrong time. Imagine there is an important customer and the new deployment has a bug that slipped through the cracks! With the traditional approach of servers, it will be a hectic task to roll back the change. However, in CaaS and FaaS, and to a certain extent in PaaS, you can switch from one version to another in a heartbeat (depending on the nature of implementation by the cloud provider).
These innovations in the platform layer are helping businesses roll out new features, experiment new capabilities, and test new markets rapidly which was a bit difficult in the past. Finally, these services are seemingly becoming the go-to implementation choice in the most preferred application development process – Agile (not fragile)!
If you want to pursue a career in cloud computing, then upskill with Great Learning’s PG Program in Cloud Computing.