Tag Archives: iaas

Demystifying the Cloud (IaaS/PaaS/SaaS)

So, I got a chance to work on a product which was based on social networking. And before I joined the team, they were using Heroku, a cloud-based platform. At that time, I was wondering, what the hell is Heroku? how does it work? Eventually I came to know that they are a PaaS provider. Now again I was wondering, what the hell is this cloud business? After a lot of reading and studying some papers(!), I think I now understand the buzz words of the cloud, the IaaS, the PaaS and the SaaS.
To understand the cloud business you first have to understand the lifecycle of an actual product which is aimed for a significant amount of users. Below is an abstracted flow of a development-deployment cycle:

development-deployment-cycle

We, the developer are mostly interested in developing the system, applying bug-fixes, adding new features and not interested in deploying the system in the actual environment. Deployment mainly related to DevOps guys, and they have a hard time managing it. Because they need to make sure the correct library is running which are required by our developed application, patching the system if any critical bug was fixed and upgrading the whole system if required. And to be honest we, the developers know, these are a painful and time-consuming task.

Now suppose we are to develop and deploy a product. From high level after deployment the overall system would look like something like below:

overall

At the highest level, our app is running, which is providing the actual experience to its user. But the application is obviously running on a platform depending upon a set of libraries of frameworks. And again the OS or the platform itself is running over actual hardware. So, in order to deploy the application we have to know different specific requirements from different perspective (e,g : which CPU, how much RAM, how much bandwidth from Hardware perspective).

Enter IaaS:

Now what if we don’t want to manage the hardware part of our high-level view? Hardware can be viewed as infrastructure which facilitates our application growth/deployment. And if you don’t want to manage them, just go to someone who provides them as a service, A.K.A Infrastructure as a service provider, hence IaaS provider. There are many IaaS providers, amazon, google, microsoft (azure), vmware, rakespace etc.

If you pay the IaaS they will provide you with VM (Virtual Machine) of your desired OS, CPU, RAM, network bandwidth and then you don’t have to manage them, they will manage the VM for you.
Now our overall view becomes a less complicated than before:

IaaS-overall

 

Enter PaaS:

A lot of pain was abated but still there is room for serious pain. We still need to install the correct library, manage them and update them if any security patches are released by them. Also, there are some complex dependency tree for some high-level languages. They are painful to maintain. If one broke, all of them crumble down. So, now we would like to remove this pain also. Enter PaaS A.K.A Platform as a service. You just buy any popular PaaS solution and it will have all the dependencies your application need. You upload your code, your app is instantly deployed into the real world. It is just the dream come true!

There should be a lot of PaaS providers, but I know only about heroku and pivotal.

So, with PaaS our overall view looks like below:

pass-overall

 

Enter SaaS:

Now, what if our employer thinks that they don’t need our cool software, they don’t want to invest money to continuously manage it, improve it; instead they just want to use it. Well sadly for us, SaaS A.K.A Software as service provides such application to the user. And sadly we also use it 🙂 . Google Docs is a fine example of SaaS, you can buy their premium service and you will get the whole suit for your corporation without investing any money to develop it, manage it or to deploy it.

 

I hope my examples were clear enough to demystify the Cloud. One may infer that SaaS is deployed over PaaS. But be aware, that might not be the case. But it is possible to do so and in fact, it is logical to do so.

If you have any suggestion or comment, please leave them in the comment section.

The images were used for demonstration purpose and are registered trademark of their  respective company.