As you may recall from Part 6 (PaaS), Windows Azure is Microsoft’s implementation of Platform-as-a-Service. In a nutshell, it means that you build your application, configure your data, and load it up into “the cloud”, where it can be easily scaled and managed on top of our operating-system-in-the-cloud. And that’s great if you have or are building applications that can run and easily scale up-or-down that way. But what if you have an existing application that is more difficult to install? Or maybe the installation, even though quiet installs can be launched at the time a new instance is created in Windows Azure, is more complex, or takes a long time. There are times when you might want to just build the virtual machine yourself. Install and configure the application ahead of time, and upload it into the cloud.
“Yeah, I could see doing that sometimes.”
Well.. that’s where the VM Role comes in. The VM Role is not like a Worker Role or Web Role in Windows Azure in the sense that it isn’t just instances of an application running on server instances; it’s your own installed and virtualized server (running Windows Server 2008 R2) that can be uploaded into Azure, duplicated into one or more running instances, has your application already installed and configured on it.
“Sounds awesome. When would I use this?”
Well, as I said.. whenever you’ve got an application that isn’t otherwise easy to let Windows Azure install upon the spin-up of a new instance of your role.. that’s when you might want to build it yourself.
The biggest catch is that it is NOT IaaS! Let me repeat that, because it’s very easy to look at it and say “Oh.. I upload and manage my own virtual machine.. so it’s all mine to run on Microsoft’s infrastructure.”, which sounds a lot like “Infrastructure-as-a-Service.” But that’s true only to the extent that yes, it’s an OS that you are responsible for (which is not as good as letting Azure manage the platform. It means you have to consider configuration of the OS, updates, security patches, etc.), but it is a machine – or instances of a machine – that must be stateless. Your application can’t store any data locally (registry or disk) and expect that it will be there forever.. because the platform is dynamic. You’re pretty much guaranteed that at some time your machine may need to move to a new piece of hardware or for some reason may need to restart. The SLAs can only be met if your application has more than one instance, and the fabric controller may need to restart an instance somewhere else if it detects a problem. So.. it is NOT Infrastructure-as-a-Service. It’s still PaaS.
If you want to maintain an application’s state and have it persist (and do that among multiple instances if you want to scale out), you would use something like Azure Storage (Blobs or Tables) or a Windows Azure Drive (which is an implementation of a BLOB that looks like a drive to your application).
“So how do I get started?”
The VM Role is still in beta, but with an existing Windows Azure or trial Windows Azure account you can request admission to the beta through your Windows Azure Management Portal. On the “Home” tab, click “Beta Programs”:
Once you’re approved, you can follow the instructions and links found here: Overview of the VM Role in Windows Azure
I haven’t done this yet personally, but I’m going to give it a whirl sometime later this week.
“Is Microsoft going to come out with an Azure-based or some other IaaS cloud platform someday?”
I honestly don’t know. My gut feeling is that it would make sense to extend the VM Role someday to include support for persistent VMs. Maybe even charge a little bit more to make up for the loss of some flexibility on the platform side. But I have no knowledge whatsoever of any such plans, and am only speculating. Honestly, Microsoft is pretty firmly committed to the benefits of PaaS over IaaS. And I agree with them. …whether or not they sign my paycheck. And anyway, if you really just want IaaS, you have several “Private Cloud” / “Hyper-V Cloud” options; whether in your own datacenter or through a hosting provider.
Have you tried the VM Role? Do you have any questions / concerns / comments about it? Let’s discuss it in the comments.
Tomorrow in part 27 I’m going to outline what I think are some of the most exciting new improvements in the next version of System Center Virtual Machine Manager – SCVMM 2012.