Organizations practicing agile development face many decisions when moving to the cloud. None is bigger than choosing whether to use IaaS or PaaS solutions for developing and deploying their applications. While each organization’s requirements are unique, there are 10 key criteria that can greatly influence an organization’s cloud strategy.
IaaS vs. PaaS
Infrastructure as a Service (IaaS) refers to services provided by vendors that allow organizations to provision processing, storage and networks for running their software (whether custom developed or packaged). An organization does not manage or control the underlying cloud infrastructure, but they control the operating systems, storage and deployed applications that run on the vendor’s cloud infrastructure.
Platform as a Service (PaaS) refers to the services provided by vendors that allow organizations to deploy their customer developed or packaged applications using programming languages, libraries, services and tools provide by the vendor. Like IaaS, an organization does not manage or control the underlying cloud infrastructure. Unlike IaaS, in the PaaS model vendors manage and control the servers, operation systems and storage for an organization so it can focus on just the deployed application and related configuration settings.
Popular public PaaS solutions include Heroku, Engine Yard, Windows Azure, Google App Engine, Force.com, CloudFoundry, CloudForge, AppFog and Cloudbees. As analyst Mike Norman covers in his recent post, private PaaS solutions are also emerging including Stackato and CumuLogic.
Essentially, in the PaaS model the vendor manages more infrastructure for the organization so they can focus their time and money on the business problem, not setting up and managing infrastructure. PaaS solutions are simpler and quicker to create and deploy thus are a favorite of technology companies and start-ups. The IaaS model, in contrast, requires more organizational knowledge about the setting up and managing the operational aspects of an application but provides organizations more control than IaaS solutions.
As one CTO I know put it “With IaaS, you get yarn from the vendor and can weave it as you like, customizing it as needed. With PaaS, the vendor has already woven the yarn for you into building blocks that can easily be assembled into a deployed application.”
Key Criteria for Choosing IaaS or PaaS
Organizations developing their cloud strategy face many questions, none bigger than whether IaaS or PaaS is a better fit for them. While each organizations requirements are unique, based on industry trends there are emerging criteria that can influence your strategy.
Time to Market
If you want to get an application built and deployed as quickly and simply as possible, go PaaS. Simply stated, there’s less infrastructure and related decisions to worry about so your organization can focus all their time and energy on creating business value, not setting up and managing infrastructure. This is not to say IaaS is slow, but you’ll have to think through more decisions and make more choices in order to deploy your application – all requiring time.
The costs of raw computing power, storage and networks are typically less for IaaS than PaaS. When factoring in the additional talent and skills required to setup and maintain the operating systems, application and database servers for IaaS solutions, PaaS solutions typically emerge as a better return on investment in the long run.
Existing Operations Talent
If your organization has an existing operations team with good talent and their own inertia, IaaS may be the way to go. Operations typically like having complete control of their environments and IaaS solutions give them more control. If, however, you don’t have an existing operations team or they are staffed with poor talent, PaaS is likely a better route.
PaaS vendors support the most popular technology platforms including Ruby, Java, .NET, PHP, Python and Node.js. If you’re building applications with these popular technologies, chances there’s multiple PaaS vendors you could go with. If you’re using a less popular technology stack or a packaged product with a non-standard deployment model, you may have no choice but to go IaaS.
With PaaS vendors, you’re completely reliant on them to ensure your application and data are secure. While there are organizations who host sensitive data with their PaaS providers, some organizations might be too nervous to completely rely in their PaaS vendor for security. In that case, you may want to go with an IaaS solution and leverage third-party security tools and manage security yourself. Depending on the security requirements, you may determine that neither IaaS or PaaS are viable options, which means you’ll need to host your application yourself.
PaaS is built on IaaS, therefore PaaS solutions are only as available as their underlying IaaS partner’s solutions. High availability solutions typically require multiple, geographically disbursed deployments with load balancing. If this sounds complex to you, then PaaS is probably a good choice because your vendor will handle the settings for making your application highly available. If your application doesn’t need to be highly available, PaaS is also a good choice because you don’t have to worry about availability. On the other hand, if you’re team is comfortable with managing this complexity or you want to have redundancy by using multiple IaaS providers, then PaaS may not be a good fit.
Like availability, the performance of PaaS solutions are somewhat dependent on the underlying performance of their IaaS partner. If you want your application’s computing and storage resources to scale with the least amount of your involvement, then PaaS is a good bet. If, however, you want more control over the underlying computing, storage and network components so that you can turn the performance dials yourself, IaaS will provide more access and control of the resources affecting application performance.
If your application requires a specific hardware stack to run, then PaaS probably isn’t a good fit. IaaS may also not be a good fit, but there are likely more options to choose from with IaaS vendors for specific hardware stacks. On the other hand, if you don’t care what type of hardware your application runs on, then PaaS is a good fit (but again, IaaS may also be a good fit too – so do some research).
If you’re application is relatively simple involving some application code, databases, content, queues and web-service integrations then PaaS is a good fit. IaaS is a better fit for applications with more complex or non-standard deployments because of the greater management control they provide. An organization’s public web site is usually a prime candidate for deploying PaaS given the typical simplicity and lack of data security concerns. For more sophisticated enterprise applications, IaaS may be a better solution because of the increased control it provides.
New vs. Existing Application
PaaS is a perfect fit for organizations developing brand new applications for the reasons listed above. Organizations migrating existing solutions may be able to go the PaaS route, but depending on their complexity and technology standards, IaaS may be the only option.
IaaS and PaaS: A Hybrid Approach
The choice of IaaS or PaaS doesn’t have to be binary. Most enterprise applications are really a set of integrated applications each running on separate platforms. When organizations migrate enterprise applications to the cloud they may choose to deploy some on PaaS and some on IaaS, giving them the flexibility of selecting the best fit on an application-by-application basis. Organizations may also start with PaaS for simplicity and speed and then migrate to IaaS as their business grows and they become more mature.
Organizations developing their cloud strategy face many questions, none bigger than whether IaaS or PaaS is the right choice. As we’ve seen, there are key criteria that can strongly influence the decision one way or another. Progressive organizations will include both IaaS and PaaS solutions in their cloud strategy so they can leverage the benefits of both and provide their organizations with maximum flexibility today and into the future.
Share this Article:
Latest posts by Ryan Shriver (see all)
- APM for Agile and DevOps: 7 practical use cases - February 8, 2013
- Infrastructure as Code: From Bottleneck to Test-Driven - January 16, 2013
- Java’s Evolution from Enterprise Language to Cloud Platform - October 10, 2012