The addition of the new VMRole to the existing Web and Worker Roles, opens up many new possibilities to developers of Windows Azure applications.
First off – what is it? At first look it appears to be nothing more than a VM hosted on the Windows Azure fabric. In the PDC 10 announcement, Bob Muglia used the word “Infrastructure” in his description of the new role. This has caused some to understand the role is essentially an IaaS role and there are certainly a number of lively debates on the net today about what it is and what it isn’t.
Perhaps the thing to do here, right now in this blog is to say what it is and what it isn’t. I’m going to take this messaging from the Senior Vice President of Windows Azure and from the Business Group in Microsoft who own the product. So you’re just about to get the “official answer”. Here goes:
--- official message starts here ---
The VM role is not meant to be an IaaS offering. Rather than explain why it isn’t, let’s talk about what it is and highlight it:
Windows Azure is a Platform as a Service offering. It is both a programming model, we believe the next generation of how applications will be built, and a service where those applications can be deployed. We differentiate based on three important areas:
We believe that the Windows Azure application programming model is a more efficient way to develop and manage applications because of the advantages stated above.
That being said, for many customers, the move from traditional, on-premises applications to the cloud services model can be intimidating. To make the process of migrating existing Windows Server applications to Windows Azure easier and faster, the VM role was released yesterday at PDC10. While the VM role is a part of the Windows Azure application programming model, it differs from Web & worker roles. VM role offers additional control and flexibility but requires that developers manage and patch the operating system. It also means they take on more of the deployment and management tasks.
For many customers, simply having data and applications outside the network, which the VM role will enable, is a major step forward in cloud adoption. Over time, we believe that customers will see the advantage of the Windows Azure application programming model and embrace it further. Since VM role plugs into the Windows Azure service model, customers running Windows Server in the VM role inherit many of the automated service management benefits provided by Windows Azure.
VM role is about enabling a faster adoption of our Platform as a Service. It is about making it easier to migrate a broader range of existing applications on our PaaS. The more customers embrace our PaaS the more money they will save and the more agile they will become. We believe at some point in the future the notion of developers dropping a disk with an OS image into a drive and packaging up a VHD they have to administer will be a quaint artifact (to borrow from Ray Ozzie). And once they have embraced this, they will never turn back.
Now, Microsoft does provide technology for IaaS offerings used by some of the largest providers in the industry including Amazon Web Services. But that is not Windows Azure.
--- official message ends here ---
Now – that was the official message from the grand-fromages at Microsoft. Why is it that VMRole != IaaS then?
VM Role is really like the current web or worker role in Windows Azure with more admin access and more responsibility on the customer to manage. Remember that the Windows Azure model does not persist state in the worker\web roles… hence deploying an app into Windows Azure means you need to ensure it fits the Windows Azure architecture model. The same concepts still apply with the VM Role.
You can’t upload any old VM with any old OS. So, for example, when you upload your VM role image to Windows Azure, at some point the VM will be reset (hardware failure etc etc), and it gets reset to the state at the point of initial upload. Windows Azure doesn’t persist state changes, not even in the VM Role. There will be however, a startup section in the definition which can be used to get the instance to a known state (within the limitations of what it permits). VM Role still = Azure PaaS.
The way to think about the “it’s not IaaS” question is that VMRoles are created within the context of the Windows Azure Service Model, this enables Microsoft to manage the service (they can upgrade, load balance traffic, alter the number of instances, manage failure, manage the network etc.) so it’s a custom VM within the Windows Azure PaaS model. The one thing you lose from using the web or worker role is that Microsoft doesn’t offer the automatic\platform provided guest OS patching for the VM Role. Many people state the “I” in IaaS is a VM container, the OS is in the platform. Many others disagree with this as the VM container does nothing useful until it has an OS inside it, but that can be countered with “Windows Azure does nothing useful until an app is deployed”. The models are different and therefore the arguments are different.
On the topic of the guest OS - limitations about the guest OS will start to be relaxed (Windows Server 2008 and Windows Server 2003) in 2011, as announced at the PDC yesterday.