Wednesday, May 18, 2011

What is the actual difference between IaaS, SaaS and PaaS in Cloud Computing?


Almost everyone who is beginning to read about Cloud Computing will encounter the difficulty of understanding the intricate difference between SaaS, PaaS and IaaS under the Cloud Computing realm.

I am detailing the differences below in a way I understood it. May be you have an alternate approach to understanding the difference, nevertheless I believe that the explanation below gives you an insight into the beautiful difference between the three terminologies.

Firstly, the terms stand for the following:

SaaS: Software as a service.
PaaS: Platform as a service.
IaaS:  Infrastructure as a service.


Whenever you consider a cloud computing system, (or rather let’s consider a simple server), there are three main types of capabilities that it exposes. These are:

1) Computing: Of course, you need lot of computing power to perform complex calculations. This is achieved by installing high-end complex processors into the hardware to expose to computing capability. Such processors could be used for various kinds of calculations such as BioTech related, Mathematics and may be even Textual String Processing.

2) Storage: Any cloud computing system has to provide a service to enable you to be able to store large amount of data into the hardware. While calculations is one thing, storage is a different ball game all together. So when a cloud computing system exposes storage as a capability, you leverage it to be able to organize and store the data in an organized fashion you want to. Later, you use the same storage capabilities that the system exposes to retrieve the data you want.

3) Management: While you have hardware to compute and store, management is something you cannot ignore. You need various kinds of API functions and other management capabilities that you want the system to expose, so that you are able to specify various tasks and organize them or queue them up for processing. Consider the case of a Mc Donald counter here. Having the Computing Infrastructure to fry chips and Storage Racks to store the goods is not enough. You need a Management System to be able to organize the incoming customers in a queue and then also to be able to distribute the work among the workers, right?

So, while we spoke about the 3 kinds of capabilities any Cloud Computing system should enable someone to leverage, now let’s talk about what exactly is IaaS, PaaS and SaaS.

IaaS: When the cloud computing system that is offered to you provides you with only infrastructure or the actual hardware (servers and disks), the system is essentially a IaaS. What you get is an infrastructure. You are responsible for installing all the required platforms on top of it. You are responsible for upgrading the necessary platforms if there is a new version released in the market. Let’s say you have installed the .NET Platform on IaaS. Whenever Microsoft releases a new version of .Net, you as an end user of the cloud computing system, take full responsibility of upgrading the system to a newer version of the .Net. It might require you to completely bring your website running on the cloud down, to complete the upgrading process and you will have to live with it 

PaaS: Platform as a service as you have probably guessed by now, provides you all the hardware and computing infrastructure, and in addition also takes care of the platforms that are installed on top of the hardware. Think of PaaS as an additional layer on top of IaaS. You don’t need to bother with the platforms up gradation process and you don’t need to worry about your website coming down during the maintenance process. The cloud computing service which is a PaaS comes as a package with the platforms that it supports and it takes complete responsibility of maintaining them. PaaS is like a box that comes with the computing infrastructure and the required platforms. You basically pay for what you use. The platform that is pre-installed could be .Net or something else.

SaaS: Now the last one which is SaaS, is the top most layer on the PaaS service. If the cloud computing service is a SaaS, then it means that you not only get the underlying hardware infrastructure and installed platforms on top of it, but also various kinds of software(s) on those platforms. A simple software on top of .Net platform could be a simple calculator that allows you to send numbers and perform calculations. Calculator is the software running on top of the PaaS (which consists of the .Net platform). Think of it this way. Any software needs a platform to run. So SaaS gives you all those softwares. Now the kinds of softwares that run may intern depend on what kind of cloud computing SaaS is the company providing. If the SaaS is for enterprise, then you will have various pre-installed enterprise softwares. If it is a e-commerce SaaS, then you have various e-commerce related softwares at your disposal. SaaS requires you to basically send data and you will get data back.

I personally feel that the gap between the three types of services above is diminishing and very soon everything would be offered as single package, allowing the end-user to use what he wants.

There are various Cloud Computing Service providers coming up in the market and each one of them is known best for the kind of service (IaaS/PaaS/SaaS) they provide.