In my last post I started dissecting the term “cloud”, looking at Infrastructure-as-a-Service (IaaS) and what it means in terms of Open Source Software. This time I’ll be moving to the next layer of the cloud stack to look at Platform-as-a-Service, or PaaS.
PaaS provides a way of provisioning development environments and tools on top of an IaaS system. PaaS allows you to easily deploy the tools required for developing and running applications; languages, runtime environments and testing tools, with the inherent flexibility of resource allocation that comes with running on IaaS.
For example, you might want to start developing a Ruby on Rails application. Without PaaS, you might create a new Virtual machine, set up the operating system, install a database, Ruby, Rails and all their dependencies, configure remote access to the machine, and so on. With PaaS you can simply use the provided tools to deploy a pre-configured Ruby on Rails platform as per your specifications.
The key benefits here is that developers can focus on developing applications rather than setting up their environment and managing server resources, and that custom-built applications can scale easily to meet demand.
You can get PaaS solutions from several of the usual suspects. Windows Azure offers PaaS tools to run on top of its IaaS offerings, while Google App Engine allows you to develop and run your software in Google-land. Both of these systems are proprietary, purely sold as a service.
Open Source PaaS offerings are also emerging. RedHat’s OpenShift and VMWare’s CloudFoundry are both platforms providing similar features to the proprietary competitors, but are available under an Open Source licence. RedHat and VMWare bother offer their respective solutions as a supported commercial service, but as is the nature of Open Source, there are other companies selling services based on the same systems.
The key differentiator touted by the Open Source solutions as opposed to their proprietary competitors is freedom from lock-in, although OpenShift and Cloud Foundry present this benefit differently. OpenShift focuses on support for portable technologies such as Java and Open Source languages as a means of allowing you to take your applications elsewhere if you choose. Cloud Foundry provides support for similar technologies, but focuses on avoiding lock-in to a single IaaS platform. This means that Cloud Foundry will run on VMWare’s own vSphere infrastructure, OpenStack, or even Amazon’s EC2. The OpenShift website does make mention of OpenShift running on Amazon Web Services, but most of the documentation refers to running on OpenStack.
Of course, the other benefit of Open Source solutions is that you’re not tied to using a commercial service at all. If you’ve got a supported IaaS system running in house, or rented infrastructure from an external service, you can deploy your own PaaS atop it and let your staff spend more time developing and less time setting up platforms.