The term Cloud computing encompasses a variety of technologies and offerings and its usage as an umbrella term for all these offerings often confuses the consumer. Vendors with different offerings call themselves cloud service providers and this serves to perpetuate the confusion.
Cloud computing is defined as delivery of hosted services over the Internet in an on-demand model. A cloud provider offers resources (hardware, software or development stacks) as services over the internet that can be consumed on a pay-as-you-use basis. The cloud offerings can be broadly divided into three categories. Vendors whose offerings fall into each of these categories call themselves providers of cloud services. Let us take a look at these layers keeping in mind that the definitions of each of these are still open to debate.
“Software as a Service is the hosted delivery of Software that consumers can access over the internet.” This definition is rather simplistic. By this definition web based email services such as Gmail, Hotmail etc are SaaS applications. Two features of a SaaS application are scalability and configurability. SaaS applications should be able to quickly scale with demand. In mature SaaS applications, the customer should be able to customize their instance of the software using meta-data. Depending on who you talk to multi-tenancy is yet another feature of SaaS applications. Multiple customers share a single instance of the software and the provider can optimize the resources to suit individual demands.
Google Apps - a SaaS version of desktop applications where the software is hosted on google’s servers. Salesforce - SaaS CRM products.
Platform as a Service offers a complete platform and the tools to develop and deploy applications on the platform. Typically the PaaS vendors also provide tools and other services that enable rapid application development. Applications developed on the platform are tied to the platform. Each platform has its own development model (can be more aptly called quirks) and developers need to be aware of these.
App Engine is a PaaS offering from Google. Applications are developed and deployed on Google’s infrastructure. Google App Engine uses big table to store data. This is an example of platform specific development, a change that traditional developers will have to face when they move to App Engine. It does not support relational databases.
Force.com is a PaaS offering from Salesforce. Developers can create applications that run on the force.com platform. It includes database, workflow and UI tools. Applications can be built using their proprietary Apex programming language or using Visual Force (a tag based markup language).
Microsoft Azure is Microsoft’s platform as a service offering. It includes an OS with .NET runtime, a database (SQL Azure) and other services that make it easier to couple on-premise and off-premise applications.
Infrastructure as a Service is the hosted delivery of infrastructure services such as servers, networks and other hardware to consumers. IaaS provides consumers access to on-demand, scalable storage and compute power.
Amazon EC2 is an example of IaaS which provides scalable compute capacity in the cloud. Basically, consumers get a machine that they customize and use. This is an example of hardware as a service.
A different way to think about the different layers of cloud computing is to think in terms of control that the customer has: