Tuesday, March 09, 2010                 Register

Keith Pijanowski's Blog
May 31

Written by: Keith Pijanowski
5/31/2009 5:40 AM

Understanding Public Clouds: IaaS, PaaS, & SaaS
Contents
 
Several months ago I wrote about the different types of Cloud computing in a post titled: The Many Flavors of Cloud Computing. In that post I described Software as a Service, Platform as a Service and I concluded with a description of Software plus Services which is Microsoft’s marketing pitch on their PaaS and SaaS offerings. 
Cloud computing is a dynamic innovation in the software industry. Consequently, much has changed since I wrote my original assessment on Cloud computing. Everything in my previous post is still accurate. My definitions of Software as a Service, Platform as a Service, and Software plus Services are still true. However, in the past year the software industry has seen an “as a service” hype wave. During this hype wave many software vendors attempted to create a Cloud taxonomy that favorably classified their product as a premier Cloud offering. This hype wave is dying down and in the past several months it seems that the industry has settled upon the taxonomy shown in Figure 1.    
Figure 1 – Cloud Computing Taxonomy or Cloud Computing Stack
 
In this post I would like to describe Cloud computing again. I’ll do this by describing each of the offerings shown in Figure 1. To guide this discussion I will answer the following questions for each of the Cloud offerings shown. 
1.       Who is the customer?
2.       What service is being provided?
3.       What is being hosted? (What is the unit of deployment?) 
4.       What is the pricing structure?
5.       What are some real world examples (actual vendors)? 
 
In its purest incarnation Infrastructure as a Service (IaaS) offers compute power, storage, and networking infrastructure (such as firewalls and load balancers) as a service via the public internet.  An IaaS customer is a software owner that is in need of a hosting environment to run their software. Originally the term for this type of offering was Hardware as a Service; however, in the past year or so Infrastructure as a Service has gained favor and is now the more common term. 

IaaS vendors use virtualization technologies to provide compute power. Therefore the unit of deployment is a virtual machine which is built by the software owner. Figure 2 illustrates how a virtual machine is built for an IaaS environment, uploaded to the environment, configured, and then deployed within the environment. An application (the software owned by the software owner) as well as anything that the application requires will need to be installed on the virtual machine. For example, if an application requires a relational database then the relational database will need to be installed on the virtual machine in addition to the application itself. The virtual machine can then be uploaded to the IaaS vendor’s hosting environment where it can be configured to use the IaaS vendor’s raw storage. Once configured, the virtual machine can be deployed and started via some form of automation which automatically finds available hardware to run the virtual machine. The computers needed to run the application and the raw storage that is needed by the application are owned and supported by the IaaS vendor. 

 

Figure 2 – Infrastructure as a Service
 
It is important to configuring each virtual machine to use the Cloud vendor’s storage offerings as opposed to using storage that is local to the virtual machine. (The “C:\” drive for example.) Configuring virtual machines in this manner allows the cloud vendor to backup data and provide a more durable form of storage since the data resides outside the virtual machine itself.
Some IaaS vendors offer Cloud Services. Examples of Cloud Services are: Database services, queue services, and services which provide raw storage for any binary data. Cloud services reduce the amount of licensed software that needs to be installed on the virtual machine. These capabilities are typically available via a SOAP or REST API.   If application code can be rewritten to utilize these services instead of software that is installed onto the virtual machine then the customer can reduce their third party license costs and also reduce the amount of software that they need to support at run time.
IaaS vendors will charge based on several line items. Figure 3 below shows a list of common usage metrics that will be measure by most IaaS vendors in order to produce a bill. In other words, a charge for each metric will be seen on the customer’s bill.
 
Line Item
Description of charge
Compute Usage
per hour used within the billing period
Data Transfer-in
per GB received within the billing period
Data Transfer-out
per GB sent within the billing period
Put/List requests
per Million within the billing period
Storage
per GB used in the billing period
Storage transfer-in
per GB sent to storage within the billing period
Storage transfer-out
per GB sent to storage within the billing period
Storage I/O Requests
per thousand Requests in the billing period
 
Figure 3 – Typical Pricing Model for IaaS vendors and PaaS vendors
 
Figure 4 shows a list of a few of the IaaS vendors in the software industry today and their offerings. When comparing the offerings of the various vendors it is helpful to organize their capabilities according to Hosting Environment, Storage, and other Cloud Services.
 
Vendor
IaaS Offering
Hosting Environment
Storage
Cloud Services
Amazon
ServePath
None.
Rackspace
Storage is integrated with the Cloud Servers offering.
 
Figure 4 – IaaS Vendors
 
To summarize, the value of IaaS is that compute power, storage and supporting infrastructure (firewalls, and load balancers) can be acquired and utilized on-demand. These datacenter capabilities do not need to be purchased and owned by the customer. IaaS allows these capabilities to be turned on and off at will and customers are only charged for what they use when they use it. IaaS is also a flexible offering that often appeals to infrastructure architects. Infrastructure architects like IaaS because it provides an infrastructure based approach to outsourcing datacenter workloads to the Cloud. If an application can be virtualized it can be uploaded to an IaaS environment and run. Figure 5 summarizes Infrastructure as a Service.
 
 
 
Customer
Software owner that would like an application hosted in the internet for their end users.
Offering
Compute power, storage, and networking infrastructure. Some IaaS vendors may also provide Cloud Services.
Unit of deployment
Virtual Machine Image
Pricing structure
Compute usage per hour, data transfer in/out per GB, IO requests per million, storage per GB, data transfer in/out to storage per GB, data storage requests per thousand. All charges per billing period. For more details see Figure 3.
Examples
Amazon, GoGrid, and Rackspace. For more details see Figure 4.
 
Figure 5 - IaaS Summary
 
A Platform as a Service (PaaS) also offers compute power, storage, and networking infrastructure as a service via the public internet. However, PaaS environments also offer a runtime environment for compiled application code. This means that an entire virtual machine does not need to be built, configured and uploaded. Only the application code needs to be uploaded and started. PaaS environments also offer an array of Cloud Services. We will see why Cloud services are important when I discuss the runtime environment. A customer of a Platform as a Service offering is also a software owner that is in need of a hosting environment for their application. 
A PaaS environment provides compute power by providing a runtime environment for application code. Therefore the unit of deployment is a package that contains application code or some compiled version of the application code. This is shown in Figure 6.   
The application package shown in Figure 6 only contains what was developed by the software owner using a programming environment that is supported by the PaaS vendor.  For example, Microsoft’s Azure Services Platform supports the .NET Framework and php. As another example Google’s App Engine supports Java and Python. Another distinction between PaaS environments and IaaS environments is that most PaaS vendors provide some collection of Cloud Services that provide capabilities for storing data, connecting to other services, orchestrating calls to other services, billing, and authentication/authorization just to name a few. This is necessary because third party components cannot be uploaded and run. By using Cloud services software owners can eliminate their dependencies on licensed third party software.
Figure 6 – Platform as a Service
 
Another capability of PaaS environments is that scale can be specified via configuration and provided automatically by the environment. For example, if you need three instances of a web user interface in order to deal with anticipated load then this could be specified in a configuration file and the environment would deploy your three instances automatically. While PaaS environments can do more for the application in terms of reducing third party dependencies and providing scale it does come with an expense. You must code to the capabilities of the environment and you are locked into your vendor’s platform. If you do not want to be locked into a specific vendor and you need flexibility in order to deploy existing assets then an IaaS environment is best.
PaaS environments cater more to the developer than the infrastructure architect. In addition to providing a runtime environment and cloud services a PaaS vendor may also provide an Interactive Development Environment that allows for offline development of an application by emulating the runtime environment on the developer’s workstation. The interactive development environment may also provide tools that package up the custom solution and deploy it to the PaaS environment directly from the IDE itself.
The pricing model for a typical PaaS vendor will be the same as the model shown in Figure 5. This should not be a surprise because a running application requires the same resources as a running virtual machine. In other words, storage, bandwidth, and compute power.
The three biggest PaaS providers today are Google, Microsoft and Salesforce.com. The table below (Figure 7) lists each of these vendors and their offerings. The Runtime environment and the Cloud services of each vendor are also listed.
 
Vendor
PaaS Offering
Runtime Environment
Cloud Services
Google
 
Datastore (Java, Python)
Google Accounts (Java, Python)
Image Manipulation (Java, Python)
Mail (Java, Python)
Memcache (JavaPython)
URL Fetch (Java, Python)
Microsoft
Salesforce.com
Apex Code for business logic
 
Visualforce for user interfaces
 
Figure 7 – PaaS Vendors
 
 
 
Customer
Software owner that would like an application hosted in the internet for their end users.
Offering
Runtime environment for application code, Cloud Services, Compute power, storage, and networking infrastructure. 
Unit of deployment
Application Package
Pricing structure
Compute usage per hour, data transfer in/out per GB, IO requests per million, storage per GB, data transfer in/out to storage per GB, data storage requests per thousand. All charges per billing period. For more details see Figure 3.
Examples
Google’s App Engine, Microsoft’s Azure Services Platform, and Salesforce.com’s Force.com. For more details see Figure 7.
 
Figure 8 - PaaS Summary
 
The basic idea behind Software as a Service (SaaS) is simple. With SaaS an entire finished application can be available on-demand from some SaaS vendor. The application exists in the cloud (not in an on-premise datacenter) and can be consumed from any browser. Therefore, the customer of a SaaS vendor is the end user. This is shown in Figure 9. Here we see that the SaaS vendor is not only offering an entire application to the end user but that the SaaS vendor is also responsible for providing the compute power, storage, and networking infrastructure necessary to run the application. Now the SaaS vendor may utilize a third party IaaS or PaaS vendor to provide the compute power, storage, and networking infrastructure but this does not always have to be the case. The application may be implemented in such a way that it directly consumes resources without the need for third party infrastructure services or platform services. As a matter of fact, most of the popular SaaS offerings today are built in this fashion. Figure 10 shows the different environments that can be used to host a SaaS Application. As IaaS and PaaS offerings become more mature and more popular I expect to see more SaaS offerings built on top of IaaS and PaaS environments.
Figure 9 – Software as a Service
Figure 10 – Three ways to host a SaaS Application
 
Since SaaS vendors deal directly with the end user there is no unit of deployment. In other words, there is no third party that needs to upload an asset to be run by the SaaS vendor. The SaaS vendor owns the application which is up and running and available on-demand and is also responsible for the hosting environment.
The value of SaaS is that complete applications are available over the internet on demand. The End user does not need to license and support the software in the traditional fashion. The end user also does not have to purchase and support the infrastructure that the application runs upon. The pricing structure for SaaS offerings is usually a per user per month fee. Some examples of SaaS vendors are shown in Figure 11. Figure 12 is a summary of SaaS.
 
 
Vendor/IaaS Offering
SaaS Brand
Offerings
Microsoft
 
Salesforce.com
 
IBM
 
 
Figure 11 – SaaS Vendors
 
 
 
Offering
Finished application on-demand
Customer
End User
Unit of deployment
Not Applicable
Pricing structure
Per user, per month
Examples
See Figure 10
 
Figure 12 - SaaS Summary
 
Understanding Cloud computing and its many forms can be tricky. However, categorizing the various offerings according to Infrastructure, Platform, and Software services can help when trying to understand the full array of cloud offerings. In this post I investigated IaaS, PaaS, and SaaS. I did this by describing, for each style of cloud computing, the customer, the offering, the hosting environment, and the pricing structure. A summary of these discussion points can be found in Figure 13. Along the way I also discussed the potential value and provided some real world examples.
 
Type
Customer
Unit of Deployment
Offering
Pricing Structure
IaaS
Software Owner
Virtual Machine Image
· Runtime environment for virtual machines
 
· Cloud storage
 
· May have Cloud Services
All charges per billing period. 
· Compute usage per hour
· Data transfer in per GB
· Data transfer out per GB
· I/O requests per million
· Storage per GB
· Storage transfer in per GB
· Storage transfer out per GB
· Storage I/O requests per thousand 
 
For more details see Figure 3.
 
PaaS
Software Owner
Application Package
· Runtime environment for application code
 
· Cloud Storage
 
· Cloud Services
All charges per billing period. 
· Compute usage per hour
· Data transfer in per GB
· Data transfer out per GB
· I/O requests per million
· Storage per GB
· Storage transfer in per GB
· Storage transfer out per GB
· Storage I/O requests per thousand 
 
For more details see Figure 3.
 
SaaS
End User
Not Applicable
The SaaS vendor does business directly with the End User
· Finished applications
 
Per user, per month
 
Figure 13 – Summary of Cloud Computing Offerings
Technorati Tags:  ,
Bookmark:   Digg    Del.icio.us    Reddit

 

Tags:

26 comments so far...

Re: Understanding Public Clouds: IaaS, PaaS, and SaaS

Good post, Keith! A very clear explanation of differences between cloud platform types: SaaS, PaaS, and IaaS.

One minor point... I realize you were just giving development language examples when you mentioned .NET and PHP in the Windows Azure PaaS discussion, but for clarity I want to call out that I think Windows Azure will also allow for Ruby, Python, and even java syntax (though not "true" java support - no servlet container, for example) - basically, any language environment that is xcopy deployable should work.

By comparison, I think Google App Engine actually is constrained to python and a subset of Java, and Force.com is limited to their proprietary languages.

By John Mullinax on   6/8/2009 2:57 PM

Re: Understanding Public Clouds: IaaS, PaaS, and SaaS

Thanks for writing (and illustrating) this. I've seen many descriptions of these terms, many of which are flat-out wrong and many more of which are simply vague. Yours is both reasonable and lucid.

By Jeff Darcy on   6/16/2009 6:30 AM

Re: Understanding Public Clouds: IaaS, PaaS, and SaaS

Thanks for this blog post. I've been reviewing articles/blogs on the topic for the past 10 days - and your post wins on clarity of presentation and structure of content. Much appreciated!

By Karen McCullagh on   6/18/2009 12:26 PM

Re: Understanding Public Clouds: IaaS, PaaS, and SaaS

Excellent post dude! Very informative and straight to the point, and the diagrams are neat as well. Well done!

By Doan Than on   7/2/2009 6:37 PM

Re: Understanding Public Clouds: IaaS, PaaS, and SaaS

thanks keith for this blog. i have understood much about cloud computing

By Ashok neuapne on   7/8/2009 11:08 PM

Re: Understanding Public Clouds: IaaS, PaaS, and SaaS

Very detailed explanation of Cloud Computing from a practical perspective. I like the IaaS section specifically. Looking forward for your next writing on this subject.

By Yuvaraj Thiagarajan on   8/20/2009 4:46 AM

Re: Understanding Public Clouds: IaaS, PaaS, and SaaS

Keith, great post. I have just spent the past couple of days reading posts on the matter to form a definition of my own and without doubt your overview is the most succinct. I would only point out that not all SaaS services are delivered through the browser as you have stated however I do not think you actually mean.

Again great post though

By Anthony Russell on   8/31/2009 7:20 PM

Re: Understanding Public Clouds: IaaS, PaaS, and SaaS

Hi Anthony,

Hi Anthony,

Thanks for the favorable review.

You are 100% correct - not all SaaS services are delivered through the browser. Alot of customers I talk to today are building SaaS applications with Windows based user interfaces so that the application can be available offline and then synced up when connedted. The IPhone is also quickly gaining in popularity as a UI for SaaS applications - I see this alot as well.

These scenarios are an omission on my part. Good catch.

Keith

By keithpij on   9/1/2009 8:23 PM

Re: Understanding Public Clouds: IaaS, PaaS, and SaaS

Thanks for nice article. It clearly understand the meaning of all three terms effectively.

By Deependra Solanky on   10/21/2009 12:11 AM

Re: Understanding Public Clouds: IaaS, PaaS, and SaaS

It will always be easier to understand cloud computing vis-a-vis IaaS, PaaS and SaaS so great job illustrating the benefits potential adopters can leverage specifically. Nice step to combat 'hype' tag.

Best.
Alain Yap
G2iX.com

By Alain Yap on   10/21/2009 12:52 AM

Re: Understanding Public Clouds: IaaS, PaaS, and SaaS

Brilliant, just what I needed. I will go away and study and then comment agin.

I am trying to work out how I price our software.

regards Arthur Haynes

By Arthur Haynes on   10/23/2009 4:55 AM

Re: Understanding Public Clouds: IaaS, PaaS, and SaaS

thanks Keth

By Hanan on   11/21/2009 6:03 AM

Re: Understanding Public Clouds: IaaS, PaaS, and SaaS

Excellent post. Thanks!

By Pradeep on   11/23/2009 5:45 AM

Re: Understanding Public Clouds: IaaS, PaaS, and SaaS

Very lucid article. Thanks

By Tarannum on   12/3/2009 2:55 AM

Re: Understanding Public Clouds: IaaS, PaaS, and SaaS

Awesome article, clarifying cloud computing exactly. Many thanks!

By Jacques on   12/3/2009 4:53 PM

Re: Understanding Public Clouds: IaaS, PaaS, and SaaS

good article kaith, can i explin the comparision paas with traditional oS

By hari on   12/4/2009 2:54 PM

Re: Understanding Public Clouds: IaaS, PaaS, and SaaS

good article kaith, can you explain the comparision of paas with traditional OS

By hari on   12/4/2009 3:33 PM

Re: Understanding Public Clouds: IaaS, PaaS, and SaaS

Wonderful, crystal clear delineation between IaaS, PaaS and SaaS. Thanks taking time and effort in putting this together.

By Vinay Rajadhyaksha on   12/10/2009 4:33 AM

Re: Understanding Public Clouds: IaaS, PaaS, and SaaS

wonderful explanation. thank you

By Monica on   1/2/2010 2:53 AM

Re: Understanding Public Clouds: IaaS, PaaS, and SaaS

very detailed explanation, it really helped in making my presentation

thankyou sir

By irum jamshed on   1/2/2010 11:52 AM

Re: Understanding Public Clouds: IaaS, PaaS, and SaaS

Thanks for explaination. Good article.

By NJ.GUPTA on   1/4/2010 12:07 PM

Re: Understanding Public Clouds: IaaS, PaaS, and SaaS

Lucid explanation, Thanks for the clear explanation

By KRAM on   1/12/2010 5:54 AM

Re: Understanding Public Clouds: IaaS, PaaS, and SaaS

Good Article. Really useful.Thanks a lot.

By Ramya on   1/23/2010 6:46 AM

Re: Administrator

GLT10a02peng24
nice article, i got good information, thanks for posting..chanel handbags

By Coco on   2/24/2010 2:29 AM

Re: Understanding Public Clouds: IaaS, PaaS, and SaaS

Dear Keith

I am a member of a team of security professionals writing and researching a paper that will be published by ASIS International (www.asisonline.org), a not for profit membership of security professionals.

We noticed your diagrams on your blog and are writing to enquire if these may be used in our white paper, respecting your copyright, by crediting your blog as the source in the footnotes.

The source is "Understanding Public Cloud, dated May 31, 2009":

http://www.keithpij.com/Home/tabid/36/EntryID/27/Default.aspx

Figure 2, figure 6 and figure 9

Please let us know if this would be satisfactory.

Kind regards

Shayne Bates, CPP.

By shayne.bates on   3/2/2010 2:21 PM

Re: Understanding Public Clouds: IaaS, PaaS, and SaaS

The post is just great and the blog is awesome. autism resources

By Micky on   3/9/2010 8:32 AM

Your name:
Title:
Comment:
Add Comment    Cancel  
The Workflow Foundation Series
The SOA Series
Other Posts
Privacy Statement    |    Terms Of Use Copyright 2007 by Keith Pijanowski