Are you building your cloud application directly on the Infrastructure-as-a-Service (IaaS) provider vs. using a Platform-as-a-Service (PaaS)? In recent conversations with dozens of cloud application developers I’ve found many developers are still choosing to build their application using services offered by the IaaS (Infrastructure-as-a-Service) provider, e.g., Amazon (AWS), Rackspace or other IaaS providers vs. using a PaaS between the application and the infrastructure. In nearly every instance I find the primary reason for selecting an IaaS first was that the development team didn’t fully understand the benefits of a PaaS or didn’t know how to evaluate one.
We recommend to our clients that they select their PaaS first and then select the IaaS provider that best supports their selected PaaS. By developing your application using a PaaS, you can lower the total cost of ownership of your application by 30% or more. With the right PaaS, you also gain the freedom to change cloud infrastructure providers over-time and avoid infrastructure vendor lock-in by making your application portable to any IaaS provider.
We see five primary reasons for using a PaaS:
Reduced Operations Cost – we generally find that 30% or greater of development time can be consumed in DevOps functions. A PaaS will nearly eliminate the DevOps function and reduce it to simple user administration and resource allocation functions. AppFog, a leading PaaS provider, has a great infographic on this topic and our experience validates their claim that almost all DevOps functions can be eliminated by developing and deploying cloud applications using a PaaS.
Reduced Development Cost – An IaaS provides network, compute and storage scalability; but it doesn’t automatically provide application scalability. Application scalability is not only an operations issue but it is a development issue as well. A significant amount of development time is spent repeatedly building such functions as application health checks and reporting, but a PaaS provides these functions out of the box. A PaaS provides application runtimes, data and messaging services that are cloud aware. As adoption of the PaaS layer increases, the leading providers are investing time and energy, in providing tools to increase development productivity and the development productivity gains of using a PaaS will continue to increase.
Application Portability- It is a bad idea to develop on-premise applications specific to a hardware vendor, so why would it be a good idea to write cloud applications specific to the hardware vendors of the cloud, i.e., IaaS providers? Your PaaS offers developers a set of services that are independent of the infrastructure, ensuring that the application and operational tools you integrate into your application are agnostic of any cloud infrastructure. By leveraging application development runtime environments, data and application management services within an open PaaS you can deploy to your application to any IaaS, without changing a line of code.
More Deployment Alternatives – Open and portable PaaS offerings, like Cloud Foundry, can be deployed to public or private cloud configurations giving you the most flexible deployment alternatives. For instance, the Cloud Foundry ecosystem includes multiple public cloud providers including AppFog and Cloudfoundry.com. Additionally, the PaaS bundle is available from CloudFoundry.org for private cloud deployments to your data center, or public clouds such as Amazon Web Services, Rackspace and Hosting.com.
More Development Services – We find that a PaaS such as Cloud Foundry has a wider range of run time and data services available than do most IaaS providers. Cloud Foundry for example supports Java, Ruby and Node.js application run-times, as well as PostgreSQL and MongoDB data services. Also, a vibrant ecosystem of partners have extended the available runtimes to include PHP, .Net, and added data services for MySQL, Microsoft SQLServer and Hadoop.
Are you considering a PaaS for your next cloud application development project? What are the primary reasons?