The Evolution of PaaS
Wednesday, February 22, 2012
Will Platform as a Service (PaaS) eventually become more popular than Infrastructure as a Service (IaaS)? Nobody knows—the jury is still out. What is clear is that the idea of PaaS is evolving.
The original group of PaaS platforms, including Google App Engine, Salesforce.com Force.com, and Microsoft Windows Azure, all focused on providing a managed foundation for applications running in the public cloud. Later entrants, such as Heroku and Engine Yard, have taken a similar approach. More recently, though, the idea of providing PaaS as software that can run on a public or private IaaS foundation has taken root. With this approach, developers can deploy and run applications identically on multiple clouds, both inside and outside their organization, without worrying about configuring and maintaining infrastructure.
The advent of Cloud Foundry makes us think harder about what PaaS really means. Like the original public cloud PaaS platforms, Cloud Foundry lets developers focus solely on their applications. The platform and the people who administer it handle resource allocation (e.g., VMs), operating system updates, and other details. Cloud Foundry also brings these benefits to both public and private networks and minimizes the chances of lock-in to a single public PaaS platform.
But technologies always have trade-offs, and so dedicated public PaaS platforms have some advantages of their own. One interesting difference between Cloud Foundry and its PaaS predecessors is the way they support services an application uses, such as a database. Traditional public PaaS platforms commonly offer these things as just more PaaS services. In Windows Azure, for example, an application can use SQL Azure for relational storage. This managed service provides built-in data redundancy with high availability and no maintenance window. All of this is possible because SQL Azure is a complex piece of software running on a specific (and large) set of hardware in Microsoft datacenters.
With Cloud Foundry, by contrast, a database is typically just that: a DBMS running in a VM. Cloud Foundry provides an interesting mechanism that lets services like these advertise themselves and bind to applications that wish to use them, but how the service is managed is up to the organization that’s running it. In a typical enterprise datacenter or a generic public IaaS cloud, providing Cloud Foundry applications with a high availability, no-maintenance-window relational database service will be non-trivial. The cost of the required software and hardware, together with the specialized expertise required, probably won’t be worthwhile for most organizations.
Are highly available PaaS storage services part of the definition of Platform as a Service? That’s what public PaaS platforms have traditionally provided, so you could make this argument. The solutions aren’t necessarily relational, as with the Google App Engine Datastore or Windows Azure Tables, but they do provide automatically replicated and fully managed storage. PaaS built on Cloud Foundry probably won’t offer this, at least in the near term.
But even though there are trade-offs, providing PaaS as software is a really good idea. And Cloud Foundry isn’t the only option. Red Hat offers a similar technology with OpenShift, while vendors such as the .NET-focused Apprenda and the Java-focused CloudBees have their own approach.
The big thing to notice, however, is the shift in mindset: We can no longer think of PaaS solely as something provided by big platform vendors in the public cloud. Look for it soon in a datacenter near you.