Does the Cloud Need Server Virtualization?
Simeon Simeonov, former Chief Architect of Allaire, who has brought to market Cold Fusion, one of the first Web Application Server, wrote an essay on the future of virtualization after VMWare CTO, Steve Herrod commented:
We are committed to making Spring the best language for cloud applications, even if that cloud is not based on VMware vSphere.
Simeon argues like many that:
Server virtualization created cloud computing. Without the ability to run multiple logical server instances on a single physical server, the cloud computing economics we know today wouldn’t be possible.
Yet, he adds
Server virtualization as we know it today [...] is only a crutch we need until cloud-based application platforms mature to the point where applications are built and deployed without any reference to current notions of servers and operating systems. At that point, the value of server virtualization will go down substantially.
VMware CEO, Paul Maritz, explains that:
clouds at the infrastructure layer are the new hardware.The unit of cloud scaling today is the virtual server. [...] This will change in the next phase of the evolution of cloud computing. We are already starting to see the early signs of this transformation with Google App Engine, which has automatic scaling built in, and Heroku with its notion of dynos and workers as the units of scalability. Developers working on top of Google App Engine and Heroku never have to think about servers, virtual or physical. [...] clouds at the application platform layer will be the new hardware
Simeon argues that:
First and foremost, server virtualization generates overhead. VMware performance tests suggest that the overhead is in the 8 to 12 percent range. However, when several virtual machines run on the same server and start competing for hardware and network resources, the overhead is substantially higher.
He explains that there is no reason to pay such a price as:
most modern applications, [...] rely on network-accessible resources such as databases and Web services as opposed to local resources such as files and processes. [This is why] startups are building custom application virtualization layers that free applications from servers, obviating the need for virtualizing Windows or full-featured Linux OSes. [...] Multi-tenancy isolation will be achieved at the platform-as-a-service layer, not at the virtual machine layer.
Simeon explains after a conversation with Werner Vogels, CTO of Amazon:
The biggest hindrance to deploying these types of PaaS offerings on public clouds is trust. Right now AWS trusts the server virtualization tier to provide security and isolation. Technically, this is not harder to do at the PaaS layer. In fact, it is easier — you just have to remove or trap dangerous APIs — but I expect it will still take at least a year or two before the volume of PaaS usage makes it worthwhile for large public cloud providers to go through the effort of eliminating server virtualization overhead.
He predicts that:
Enterprise private clouds will need server virtualization for a while,[but the server virtualization and the traditional server operating system] markets will peak in three years and then begin a steady decline
VMware has seen the future clearly and is preparing to move up the stack to PaaS offerings. [...] Soon we will be able to throw away the server virtualization crutch and, like in that memorable moment from Forrest Gump, we will be able to run leaner and more scalable applications in the cloud on next-generation platforms-as-a-service. For the time being, my call to action is for application developers to stop writing code that directly touches any hardware or operating system objects and try the current generation of platforms-as-a-service.
Bloated Application Architecture stacks (from the hypervisor, the operating system, the virtual machine to the various service, data and application containers) are ripe for a major transformation. After a timid debut compared to IaaS and SaaS, PaaS may be the next big thing in Cloud Computing. What is your take on it?
I completely agree
* Self-service - its much easier to bootstrap a new tenant in a multi-tenant PaaS than to install a new VM
* New tenants are incrementally free: a new VM costs memory to run, therefore you cannot just add a new VM unless you intend to use it. For example if you already have a set of VMs running on a machine you may not be able to add a new one. If you have a new tenant, however, that can be added for near zero extra memory until the time it is used. Therefore people can add development, test and staging systems and only pay as they are needed.
If people want to try a PaaS that is available today, the WSO2 Stratos offering is live at cloud.wso2.com. This allows you to deploy WAR files, services, gadgets, and mashups.
For an interesting take on the characteristics a PaaS needs to implement please take a look at my blog on Cloud Native: bit.ly/CloudNative