The following 3 descriptions are being used in the industry today to describe the main types of cloud computing service offerings. Chances are you won’t be able to find any two sites that describe these services in exactly the same way but most people do at least agree with the categories.
Software as a Service (SaaS)
At the highest level is Software as a Service. SaaS delivers an application to a consumer or business user through a web browser client. The business logic and data for the application run on a server living somewhere on the network, not through an application running on the user’s computer. The software is normally sold to the end user via a subscription, as opposed to a one time, upfront license fee.
There are 1000s of examples of SaaS applications. One of the first, and still one of the best known, is Salesforce.com, which is an enterprise CRM tool. Other popular examples of SaaS applications are:
- Google Docs
- Microsoft Office 365
Infrastructure as a Service (IaaS)
At the lowest level is Infrastructure as a Service. IaaS is as close to the “metal” as you can get. An IaaS service provider typically provides networked computers running in a hosted environment. At it simplest, the IaaS provides the hardware and, usually virtualized, OS.
Every web hosting company out there could almost be considered an IaaS provider. The key differentiator between a web hosting provider and an IaaS provider is how they charge for their services. A web hosting company charges by the system by the month. An IaaS provider charges only for the compute power that is utilized (usually by CPU hours used by month).
By this definition, some of the more well known IaaS providers are:
- Amazon EC2 (elastic cloud compute)
- Google Compute Engine
Platform as a Service (PaaS)
Somewhere in the middle is Platform as a Service (PaaS). The biggest difference between IaaS and PaaS is that PaaS adds support for the development environment (development language and application server technology).
By writing your application in this environment you can very easily take advantage of dynamic scalability, automated database backups, and other platform services without the need to specifically code for it. For this reason, PaaS offerings generally support a specific set of programming languages or development environments.
PaaS services are usually billed as an incremental cost on top of the IaaS monthly charges. For example, there may be a small monthly fee for the use of a load balancer or a database backup service.
Some examples of the more popular PaaS providers are:
- Amazon AWS Elastic Beanstalk PaaS built on top of Amazons IaaS infrastructure. Supports Java (on Tomcat), PHP, Python, .Net and Node.js
- Google App Engine — Supports a subset of common Java environments as well as Python and Go.
- Cloud Foundry — Owned by VMWare. Supports Java, Ruby, Node.js and Scala.
- Engine Yard — Ruby on Rails, PHP and recently Node.js
What is supported by the platform will obviously impact your decision on which platform to use.
The line between IaaS and PaaS is blurring as many IaaS providers have started offering database servers and application servers in addition to the OS.
Hope that helps clarify the cloud for you. What is your top cloud question? Comment below and maybe your question will be turned into an upcoming post.