Microsoft just added capabilities to its Azure cloud computing service that makes the difference between various brands and flavors of cloud computing -- already foggy in the minds of even IT people already testing them -- a little more uncertain.
The addition is the ability for customers to launch a virtual server running an explicit instance of Windows Server 2008 R2 developers can configure any way they like.
It seems like a small change from the generic Windows-Serverlike app execution environment Azure has offered until now, but it's actually a pretty big difference.
While Azure was a Windows environment, it didn't allow developers to launch their own VMs, independent of those that are part of the service itself, or configure them to the point that they could potentially run the same application image on both a VM in their own data center and on Azure without rewriting or recompiling it first.
Until now Azure's platform-as-a-service (PAAS)offering provided and environment in which applications developed in VisualStudio, or using the .NET framework could run as if they were on Windows servers. Customers could decide how many 'nodes' -- the equivalent of an x86-based server -- the application should run on, and increase or decrease memory, computing power and other resources the app would use.
Though nodes are virtual machines themselves, users had only limited control over them or the resources they used. That's a good thing, according to Bernard Golden,CEO of consultancy Hyperstratus and a CIO.com blogger.
By abstracting the resource- and infrastructure management so developers can focus on the application and not worry about the infrastructure required to deploy it, Microsoft made Azure a lot easier to use and more approachable for .NET and VisualStudio developers, Golden says.
"What Microsoft did was take the .NET framework and VisualStudio and put them in a cloud environment; it looked the same, felt the same and the apps people ran looked just like what they'd run on their own [machines]," according to Margaret Dawson, vice president of marketing and product management for Hubspan, whose service has nothing to do with Azure, but has been doing cloud-based application integration for a lot longer than most cloud-service companies.
Easy or not, a lot of cloud customers -- especially those who want to put up systems more demanding or complex than a .NET app -- usually want some control over how they use storage, I/O, memory, processors, network bandwidth, security and all the other inconsequential support systems they're accustomed to being able to use to secure, stabilize or tune the performance of applications in an on-premise data center.
For that, they had to go to an Infrastructure-as-a-Service (IAAS) provider such as Amazon that offers not an abstracted execution environment, but direct access to all the data-center infrastructure systems. That access allows customers not only to run applications, but install their own virtual servers, choose among a variety of operating systems, and run applications in ways similar to running them in a data center of their very own.
Unfortunately for Microsoft, Azure and Amazon's EC2 have become the poster children for public cloud, which highlighted the advantages EC2's IAAS offers to people who really want to get down in the guts of the systems on which they run their apps.
Aside from more granular control of resources and infrastructure, EC2 lets customers run VMs with a variety of operating systems -- Windows, Linux and MacOS, primarily.
Azure's new VM offering doesn't go so far as to support "alien" operating systems like those last two.
It does let customers peel away one layer of abstraction between the software they're using and the metal on which it runs, though. Whether that's a good thing or a bad thing depends on the volume of guts you feel you need to wade through.
That one extra layer of control will make Azure much more like a virtual-server farm and much less like coding apps to run on the iPhone or Facebook or any platform that gives developers an entire operating environment and specs on how to use it, but no real control over how it's going to behave or detailed control over the resources it uses.