With IaaS, it is up to the consumer to architect for scale and failover. PaaS solutions have upper bound limitations by client that limit how much compute resources a consumer can request making PaaS less desirable for very high scaling and performing solutions.
The beauty of PaaS is that it abstracts away the infrastructure and application stack so that developers only need to focus on building business functionality. PaaS promises increased speed to market but is the least mature of the three cloud service models. Some companies do not trust PaaS yet and will simply default to IaaS.
IaaS should be used when high scale and performance requirements are important. It is also a desirable option for companies who want more control over the application stack whether it be for performance, security, or control reasons.
TRP: What are the pros and cons of each service model?
MK: With cloud service models, there is a tradeoff between control and agility.
The more responsibility you shift to the cloud service provider the less control you have over security, business requirements, etc. but the faster you can get to market. On the flip side, the more you control the more work you have to do and the longer it takes to get to market.
With SaaS, the consumer has very little control over the application other than who has access. The consumer can alter various configurations but often has no say in SLAs, maintenance windows, underlying architecture, etc.
The advantage is that the consumer can quickly be up and running using the SaaS solution and does not have to manage and maintain the application freeing up precious IT resources to work on other priorities.
Another advantage is that the SaaS provider keeps up with changes in technology so that the consumer does not have to. For example, as more devices and tablets hit the market, the service provider makes the necessary changes to ensure the SaaS solution can support these devices.
With PaaS, the consumer does not have to manage hardware, operating systems, database systems, programming stacks, etc. Instead they focus on building software on top of these robust platforms.
The downside is that the developers must work within the constraints of the platform which may not be optimal for high performing architectures. Another disadvantage is that the consumer is highly reliable on the SLAs of the PaaS providers. Some of these PaaS providers like Heroku run on top of Amazon Web Services (AWS), an IaaS provider. When AWS has issues the developers are at the mercy of PaaS providers like Heroku to stay highly available.
When the PaaS service goes down the developers are mostly helpless and must wait until the PaaS provider restores services.
With IaaS, consumers have the absolute most control over all three cloud service models. The advantage of IaaS is that the infrastructure is abstracted and made available as a collection of APIs.
The IaaS providers provide seemingly infinite cloud resources available in minutes on demand without the long procurement cycles of the past. Application can be built to scale on demand as workloads increase and decrease consumption of compute resources as workloads decrease, thus optimizing the infrastructure spend. No longer do companies need to buy two or three times the capacity to sit idle in the case of a peak workload.
The downside is the consumer is constrained to a subset of virtual cloud servers. Some applications require very specific hardware requirements which may not be available from the cloud service provider.
Another disadvantage is that some companies are not willing to place sensitive data outside of their firewalls and in a public cloud. For these companies they often chose to build their own clouds (private clouds).
By doing so they do not get the benefits of public clouds such as nearly infinite on-demand resource (they must procure their own hardware), rapid elasticity (they can only scale based on how much physical hardware they have), and metered price consumption (they no longer pay for what they use since they now have to buy physical machines).
TRP: If you had one piece of advice for those responsible making a decision about their corporation's cloud service model, what would it be?
MK: Spend some time up front understanding the business requirements before selecting a cloud service model. Too often companies pick a cloud service model before addressing the needs of the applications.
A prime example is many .Net shops immediately default to Windows Azure which is a PaaS. Not all workloads are good candidates for PaaS yet companies forge ahead and force square pegs into round holes.
Would these same decision makers buy all the materials for a house before you know what the plans for the house were? Don't settle on favorite vendors without doing some upfront analysis. Expect to leverage all three service models in some form or fashion. Choose the right tools for the job.
- Mike Kavis is author of Architecting the Cloud: Design Decisions for Cloud Computing Service Models (SaaS, PaaS, IaaS)