Why do we need different types of Cloud Services?

Thursday, May 05, 2011 » Cloud, Cloud Services, IaaS, PaaS, SaaS

One of my clients asked me today "Why do we need IaaS (Infrastructure as a Service), PaaS (Platform as a Service), and SaaS (Software as a Service)?  Isn't one clearly better than the other and hence the 'right' model?  Which one will win?" The question of which model is "best" really differs according to use case.  Each model having its advantages for particular use cases.  Overall, the models are not necessarily in competition with each other, but a complimentary set of tools for solving various problems.

A consistent theme that I've seen throughout the Internet is ambiguity about what these models actually are.  One expert had a beautiful chart on her site that showed Google Apps as a PaaS, while the blog of one cloud computing company used Facebook as an example of a PaaS and made the claim that PaaS were distinguished by having proprietary APIs.  Sigh.  If these experts can't get it right, how are people who aren't knowledgeable about cloud computing supposed to understand it all?

<!--break-->

So, the place to start is with some solid definitions.  In this article I use the word consumer to refer to the subscriber to the service.  I use the word user to refer to the person who ultimately uses the service.  Individuals or small businesses could be both consumers and users, where in larger companies, the IT department may be the consumer, and the user would be the end-user. 

In an earlier article on my blog I defined cloud computing services as those that met all of the following criteria (whose benefits should be self-evident):

  1.  Services that are offered on demand over the Internet
  2.  Scalable or Elastic - you can scale up or down, on demand, according to your needs
  3.  You only pay for what you use
  4.  You can self-provision over the web or using a utility program to obtain and configure services without human interaction
  5.  Opacity - you are not aware of hardware or software requirements for any of the above - it's all handled without your knowledge

IaaS (Infrastructure as a Service) provides access to computing, storage and networking hardware as a utility service.  In most cases the hardware is virtualized and under the management of frameworks that provide self-service, billing, scalability, reliability, and, in some cases, fault tolerance.

IaaS provides a very low-level service.  It's not a solution, but a set of tools to build a solution.  Often the consumer must load (or at least choose) an operating system for a virtual machine IaaS.  Storage IaaS may present virtual drives for direct consumption as network accessible drives or for use by virtual machines that may use them as raw devices.

IaaS generally provide a high-degree of control (and correspondingly high configuration and administrative cost) over the computing environment.  This high degree of control allows consumers to create and tailor a computing environment to their precise needs.  For example, in many cases, selection of operating system, services such as databases, caches, and messaging, and authentication services, webservers, etc are all facilitated through IaaS because basically, the consumer is getting a virtual machine that lives in the cloud.  The consumer can install and configure these services exactly the way the want to.  Almost anything that can be done with a real machine can be done with the virtual machine.

IaaS, as it turns out, is exactly what's needed to take most existing systems to the cloud.   It's the lowest common denominator, but also provides the lowest level of benefits (which are still plenty).  IaaS also may be the platform upon which to build PaaS of course PaaS can be built without IaaS and even without virtualization.

PaaS (Platform as a Service) provides access to an environment that supports the deployment of applications (and occasionally, development too in the form of cloud-based IDEs). The platform environment usually includes frameworks, APIs and services that are available to developers.  The PaaS may be a rich environment with many choices, or a relatively closed environment with few choices.  Some PaaS are very proprietary, forcing developers to write applications that are specific to that environment, while others are more open, using non-proprietary APIs and services that can be found in other environments.  Some are general purpose, and some are built to solve very specific types of problems.

PaaS environments generally do not provide the consumer access to the underlying platform on which they're built.  This relieves the consumer of all of the details of implementing and maintaining the underlying infrastructure.  A PaaS can be viewed as an engine on which to run particular types of applications.  By abstracting away from all of the underlying implementation details, PaaS provide the opportunity to focus on developing great applications instead of managing details.

Several of the PaaS that exist today are suitable for running existing applications with little or no modifications.  Others have requirements that range from creating platform specific deployment code to including platform-specific API references.

In either case, where there are applications that are capable of being run on the PaaS  (or the opportunity to develop applications anew to run on the PaaS), PaaS offers tremendous benefits of abstraction and relief from nearly all system-related tasks.

DaaS (Database as a Service) is often a key supporting service offered by PaaS providers.  I call it a supporting service because cloud-based databases are most often used by applications running in the cloud, such as those on a PaaS, and occasionally those on IaaS.  In theory it's certainly possible to utilize a DaaS from a non-cloud based application too, in practice I've seen this done only very rarely.   As network speeds grow and latency becomes less of a constraint, I suspect we might see more use of DaaS from non-cloud-based applications.

DaaS offerings can be based on well-known database systems that also exist outside the cloud, or new custom database systems that only exist on the cloud. The latter may carry the advantages of being faster and more scalable, but also the disadvantage of lock-in coding for that particular database may lock a consumer into that solution.  I say may because properly designed application architectures would provide code that abstracts access to the database, avoiding that problem.

PaaS are often exactly the right solution for implementing enterprise applications in the cloud.  PaaS may also be the platform upon which to build SaaS.

SaaS (Software as a Solution) provides access to a pre-built, managed instance of a software application.  The consumer has no control over the underlying platform or environment.  All maintenance and configuration is provided to consumers and users through the applications own menus or perhaps some organization-wide control panels.  SaaS represent the highest level of abstraction, and the lowest cost of maintenance for consumers.

The most popular SaaS provide wide horizontal appeal.  For example, offering cloud-based replacements for common desktop applications such as mail, word-processing, spreadsheets, calendaring, project management, basic timekeeping and invoicing.  Cloud-based SaaS offer the added benefits of accessibility from anywhere there's Internet connectivity. 

SaaS that provide more complex applications represent the higher-end of the spectrum in terms of cost and customization.  Multi-user accounting applications, Payroll services, CRM (customer relationship management), ERP (enterprise resource management), and vertical (i.e. industry specific) packages are all examples of higher-end SaaS.

SaaS offer access to pre-built, best of breed (hopefully) applications on a cloud-basis (see the cloud computing criteria/benefits listed above).   The ability to add an end user with no install, minimal provisioning, and no concerns about capacity planning, licensing and service levels provides an incredible level of agility for IT consumers.

A SaaS may be built upon a PaaS.  SaaS provide the additional benefits over PaaS that consumers can offer SaaS to their users with few application management and no data management burdens.  This is as close to turn-key as cloud computing gets.

While SaaS offers a very high-level of benefit to the consumer, it's not without its downsides.  SaaS solutions, on the low-end, tend to provide little ability to customize they're mostly one-size-fits-all.  SaaS solutions are also notorious for creating vendor lock-in although many SaaS vendors have responded to this issue by providing some way of taking your data with you if you decided to migrate away, these methods are seldom convenient, efficient or effective.  SaaS solutions also tend to provide little opportunity for corporate control over data, relying purely on access controls that are often not under centralized control.

Security in the cloud is another can of worms, which is beyond the scope of this article.  I hope to get around to writing another article on cloud-security shortly.

IaaS, SaaS, and Paas (along with DaaS) all have their value to cloud computing.  Although personally I see PaaS as one of the greater growth areas as it clearly targets new development. I believe many enterprises will migrate slowly as they develop new applications rather than migrate everything they've got to the cloud.   In my opinion, enterprises and individuals can BEST exploit cloud computing by using each of these where appropriate..

comments powered by Disqus