Microsoft finally took the wraps off its revamped cloud computing platform, Windows Azure, today. If what was shown today lives up to the demos, it will put Microsoft into a whole new league. Windows Azure has moved light years ahead of where it was in terms of power, flexibility, and usability. More than that, though, Azure has transformed itself from a private club with a bunch of arbitrary rules to an inclusive society governed by common sense.
The dark days That may be a little melodramatic, but it's not an exaggeration. When Azure first launched, it was, at its core, a Windows Server-based platform for running .NET Web applications and services. And at the same time that it catered to that particular platform choice, it also imposed awkward requirements that the developers in that demographic found foreign.
The reason for these requirements? Windows Azure was designed as a pure Platform as a Service (PaaS) cloud. The PaaS scheme, in theory, is superior, because explicit management of virtual machines is not required. You simply deploy your apps, storage, databases, and so forth, and the rest is taken care of for you. But the PaaS scheme also prevents you from administering machines directly and, for some applications, that's quite inferior; it can even be a deal-breaker.
The competition On the other hand, an Infrastructure as a Service (IaaS) cloud, like that of Amazon Web Services' Elastic Compute Cloud (EC2), forces you to manage your machines directly, but in doing so enables most on-premise applications to run. EC2 was Linux-only when it launched, but Windows instances were added early on as was a companion SQL Server option. The IaaS architecture and choice in operating systems has made EC2 very popular, and that hasn't changed.
Back on the Azure side, file and key-value data storage services replaced conventional file access. Local drives were present but offered only "ephemeral" storage; in other words, if your Azure virtual machine instance were rebooted, all changes to the local disk would be lost.
PaaS vs. IaaS Access to the actual desktops on the virtual machines was unavailable. Deployment of your applications took minutes as the underlying virtual machines were deployed, and had to be done through a Web portal that...well...was built to lower productivity standards than Visual Studio, or just about any other development environment.
Things did get better. A cloud-outfitted version of Microsoft's SQL Server relational database was added. Databases were limited in size to 10GB, but that maximum has steadily increased and now sits at 150GB. Distributed caching was added too, albeit based on Microsoft's own technology code-named "Velocity" rather than the popular open source distributed cache called Memcached. The Azure portal was improved, and creature comforts like Remote Desktop, admin Web server access, VPN support, a traffic manager and database reporting came too. "Queues" and "topics" were added to the Azure Service Bus, providing message-based middleware. For the enterprise at least, Azure had become much more flexible.
Tricks and tweaks, for flexible setup Tools that aided in the scripted installation of software allowed Azure compute instances to be treated more like a conventionally administered server, but it was a work-around. You can't make a PaaS compute instance become an IaaS instance. A beta of an Azure "VM Role" provided a real IaaS solution solution, but in Beta it stayed.
Microsoft strecthed Azure to make it support the PHP Web development language popular in the open source and startup world, but did so expecting those developers to use SQL Server as their database. Given that most PHP developers work with the open source MySQL database by default, Microsoft still had great difficulty making its case to startups. It seemed tone deaf to all except .NET developers and even that constituency was not monolithically on-board.
Worst of all worlds Microsoft was challenged on every front. Lack of an IaaS option blocked enterprise adoption. Lack of support for Linux and many open source technologies kept the startups away. And though prices had come down quite a bit over Azure's lifetime, entry-level solutions were still cheaper to deploy onto low-end hosting accounts.
When Microsoft Corporate Vice President Scott Guthrie moved from Microsoft's Developer Division to take over the Azure team, he had his work cut out for him. Guthrie, who is somewhat of a folk hero in .NET developer circles, confused some people by the move. But others were left thinking that if anyone could rationalize Azure, tie up its loose ends, make it fun and easy to use, and make its cross-platform story strong and credible, it was Guthrie.
A year later, it's a new cloud That latter camp was seemingly proven correct on Thursday, as Guthrie keynoted the Meet Azure event live in San Francisco, and streamed online for all to see. In his customary red polo, Guthrie announced, discussed and demoed the numerous additions and reworkings of the Windows Azure platform. It was as if someone created a punchlist and Guthrie carefully descirbed how his team had nailed every item on it.
Here's a rundown of what's new:
- Azure now supports Linux virtual machines using any of several distributions. Ubuntu, Suse and CentOS are on the list; Red Hat is not
- A true IaaS option, with durable storage, is now available and the VM images are 100% compatible with the Hyper-V virtualization platform on Windows Server, allowing them to be run on-premise or in the Azure cloud
- In addition to .NET, applications written in Java, PHP, Node.js and Python get first class support
- Beyond Microsoft's own Team Foundation Server, deployment from source code repositories in GitHub Git are Azure-compatible too
- In addition to SQL Azure, developers now have access to a PaaS implementation of MySQL
- Popular NoSQL databases are supported too. Cloudant offers a PaaS implementation of BigCouch, its API-compatible implementation of CouchDB. MongoDB is available as well
- Azure's distributed cache is now API-compatible with Memcached. This means PHP code written against MySQL, and which uses Memcached for caching, can run on Azure's PaaS platform with very little if any change
- Application deployment has been sped up significantly
- New so-called Web Sites, which can be developed in .NET, PHP or Node.js, make Azure competitive with low-cost hosting accounts. How competitive? You can deploy up to 10 apps, in the Multi-tenant environment, for free. Azure Web Sites offer simplified deployment, quick provisioning of popular apps like WordPress, Drupal and Joomla, and the ability to run on-premise as well.
- Deployment tools for Linux and Mac were introduced, and the Eclipse tools were updated
- The Azure Management portal has been completely revamped and tested to work well in a number of browsers on a few different platforms. Microsoft has even added a command-line tool for performing all portal-based functions, and REST-based application programming interfaces (APIs) that do likewise.
Swing your partner These changes really put to rest a number Azure's chief criticisms. I think a key ingredient here is not just the support for non-Microsoft technologies, but actual, numerous partnerships with many of the companies behind those products. This includes 10gen for MongoDB, Cloudant for CouchDB/BigCouch, Joyent for Node.js and more.
I cover Big Data for this Web site, and although Microsoft is incubating an offering in that arena (including an Azure-based flavor) the Big Data world in general is well removed from the Microsoft universe. But lately more of the vendors I talk to about Big Data are telling me that they've been working with Microsoft to get their products running on Azure. These worlds used to be a long distance call away, and you'd have to dial a country code first. Now the call is a local one.
Folklore I've heard some Azure stories. In one of them, Scott Guthrie, on the first day at his new job running Windows Azure, put himself through the process of coding, deploying and managing an application on Windows Azure. Guthrie wanted to see this process end-to-end, and be hands-on with each step involved. The story goes on to say that he was perplexed and disturbed by what he saw and vowed to get all the inefficencies out, and make the hodge podge tooling and procedures into something unified and elegant.
In another Azure story, a C-level Microsoft exec has Azure's first boss and original visionary in his office. The C-level exec, speaking with a down-home accent, asks why the Azure business isn't doing better. The boss responds by saying PaaS is the right way to go, that it's the future, and that people are still learning that it's the best solution. The C-level guy then says: "Well, that may be. But tell me something. How does it feel to have your @$s handed to you by a bookseller?" The story goes on to explain how the meeting with the C-level ended and that it was that boss' last."
I imagine there's at least some legend and exaggeration involved in one or both of these stories. But it does seem like Guthrie made a list of things he needed to change, and then he and his team achieved those changes. Once these new features become available to the public, Microsoft's got a cloud platform it can really sell. And it might just take its rear-end back from that "bookseller."
- Ubuntu, CentOS, & SUSE Linux comes to Windows Azure
- What does Windows Azure Web Sites bring to Microsoft's cloud?
- Windows Azure's spring fling: Linux comes to Microsoft's cloud
- Cloudant brings NoSQL to Microsoft’s cloud