In my articles "Microsoft Azure and the Allure of 100 Percent Application Availability" and "Microsoft Windows Azure: Why I Still Haven't Tried It," I wrote about Windows Azure and my experiences with the platform. Since then I've had some great experiences working with SQL Azure that's largely due to some fantastic uptimes. However, I've also wanted to test the Windows Azure VM Role, which has recently become much easier to take for a test drive than what was previously possible. Although I'm still evaluating how these virtual machines (VMs) stack up against competing offerings and their ability to handle my specific workloads, I'm already seeing that there are a lot of things that make Azure VMs an attractive option.
Easier VM Provisioning Means There's No Need to Upload VHD Files
Windows Azure VMs have been available for awhile now, so it's not like they just became available for testing. However, Microsoft recently announced new Azure Management Portal improvements that includes the ability to quickly provision VMs directly from existing base images instead of having to create them by uploading VHD files to Microsoft's data centers. This enhancement was the exact breakthrough that I've been waiting for that led me to take these VMs for test drive. Although the ability take an on-premises machine and upload it to the cloud was a neat option, up until now it was simply way too encumbering and labor intensive for my tastes to the point that it has prevented me from trying out the Windows Azure VM Role. As I've been wondering about whether Windows Azure VMs would be worth my time and effort, I've actually been very happy using competing offerings -- most especially with Cytanium's cloud offerings where I've been able to find dirt-cheap VMs that have experienced excellent uptime and performance.
Great Pricing and Features
Although I've been more than happy with my Cytanium VM, pricing is one factor that has kept the Windows Azure's VM Role in the back of my mind. Azure's VMs appear to be priced slightly higher compared to competing offerings, but the one big exception is Windows Azure's Extra-Small (XS) VM role. For roughly $9 per month, this role provides a VM with 768MB of RAM, a shared CPU, and roughly 40GB of storage with 20GB allocated to a system drive and another 20GB assigned for application data. Granted, that's an obscenely tiny and low-powered server, but the application that I'm going to be hosting doesn't need very much horsepower at all. Instead, what I actually need are several low-end hosts that can be geographically distributed throughout the globe for better availability testing and redundancy purposes. In my case, the Azure XS role is actually a decent fit (even if I couldn't actually wait long enough for a Windows Server 2008 R2 XS instance to boot, whereas a Windows 2012 XS instance took a few minutes to book but was responsive once it was up and running).
Another big thing that has kept me interested in potentially using Azure VMs is the fact that Microsoft has several data centers that are spread throughout the world. This option is something that makes Azure more attractive in terms of providing options that can alleviate potential outages stemming from natural disasters, along with the kinds of manmade disasters that might otherwise render an entire data center offline.
As I started looking into some of the redundancy options available for Azure VMs, I bumped into a several impressive findings. The following highlights some of the bigger benefits that I found:
- Availability Sets. In terms of availability, one of the realities of hosting entire VMs is that they will periodically need to be rebooted, which is an unfortunate consequence in terms of what that does to uptime. Furthermore, Microsoft acknowledges that the company periodically needs to update hosted VMs to keep everything running smoothly and securely. Accordingly, Microsoft has created a set of incredibly easy configuration options that you can use to create pools or groups of linked servers so you can distribute downtime by putting machines into different availability sets to decrease downtime overall.
- Load Balancing. Along the same lines, Azure VMs can be easily teamed or load-balanced to not only increasing uptime, but also to serve as a mechanism for an even distribution of workloads among multiple peered machines.
- Linux VMs. Okay, this one doesn't have anything to do with availability or redundancy -- at least for my purposes. However, I find it remarkable that Microsoft is actually offering Linux hosting at all. Linux hosting lets me easily deploy a whole host of application servers (presumably running Windows) for an application and then spin up a Memcached appliance when needed. In other words, the mere fact that Microsoft provides Linux hosting proves to me that there are still departments at Microsoft who get it, which is sadly the complete opposite of what I frequently complain and kvetch about in terms of what we see from the Windows and Office folks who frequently drive me batty.
In the end, I'm still in the process of evaluating how well Azure VMs will meet my needs. But so far I like what I'm seeing especially in terms of the features and options that are geared toward helping me achieve greater uptime and availability.