Understanding Public Clouds: IaaS, PaaS, & SaaS
Contents
Infrastructure as a Service (IaaS)
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)?
Infrastructure as a Service (IaaS)
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 Accounts (Java, Python)
Image Manipulation (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