If you were to base your opinion on what was the most important announcement at Microsoft's Professional Developers' Conference last week in Los Angeles, you might conclude that it was Windows 7. To a certain extent, that makes sense. If Windows Vista proved a difficult operating system for customers and reflected negatively on Microsoft, then its successor is of particular importance for the company. Windows doesn't just represent a large portion of the company's revenues (which it does). It also represents Microsoft's ability to lay claim to developer mindshare.
I noted back in December of 2007 that Microsoft MUST make user experience (which includes interface) a priority. I thought then that putting Sinofsky in charge of the Windows development group and Julie Larson-Green in charge of the user experience for next generation Windows were inspired choices, given what they had done with Office 2007. That confidence seems to be born out in the directions they took with Windows 7, as revealed at the PDC.
However, it's important to note that the keynote related to Windows 7 was presented on day TWO of the conference. At a conference whose sole purpose is to present to the public development futures at Microsoft, Windows Azure's role in the opening keynote is expressive of an internal ranking among Microsoft executives that is the reverse of the emphasis given by bloggers. Windows 7 is incredibly important, to be sure, but in terms of Microsoft's long-term vision of itself, I think Windows Azure is ranked higher.
Azure is clearly something that Microsoft has been working on for awhile. Analysts have questioned why Microsoft was spending billions on large server farms in far-flung locations, possibly thinking that the company was dumping cement trucks of cash down the MSN well. Windows Azure pulled the curtain back on those expenditures.
I think my attempt last week at a pithy definition of Windows Azure is still apt. Windows Azure is "a framework that allows you to scale from 10 users to 10 million users without additional coding." Granted, you aren't going to take an existing application and just drop it into the Azure "cloud" and expect to achieve the scales promised by Azure. You have to design to Azure abstractions, and that takes work, but if you do the work, you will have an application that can scale instantaneously. Microsoft, in other words, is trying to provide abstractions and services designed to make achieving those scales a lot easier.
My biggest concern, as noted last week, was whether people would be willing to write to an abstraction that results in an application that can only be hosted on a Microsoft server farm. I'm willing to modify that a bit as my appreciation of the scale of the Azure system has grown. At a Thursday session, an engineer working on the Service Bus, which is an essential part of the naming, location and communications infrastructure that drives the Azure system, explained that it has a self-organizing ring architecture which requires a MINIMUM of 50 nodes in order to achieve baseline levels of fault tolerancy. Suffice to say, there will be many, many such rings in a production Azure system.
Windows Azure server farms will have so many machines that fixing problems in individual servers becomes an unacceptable cost. When a system experiences problems, the machine will first be "reimaged" (the "ring" will automatically work around a failing computer). The first step, however, also ends up being the last step, as if reimaging fails, you don't have server administrators RDPing into the system to try to diagnose problems. There are simply too many machines to make that remotely practical. The machine will be pulled out of the farm and sent back to the vendor to be refurbished.
In other words, hosting Windows Azure would be a hard thing to do for anyone but the most well-capitalized hosting provider. Scale, in other words, is paramount, and few companies could easily achieve those scales as third-party Azure hosts...at least in the near term. Never say never, in my opinion, and I still think many will want third party Azure hosts to appear eventually. On the other hand, given Microsoft's intent to roll innovations from the Azure side of the house into its server products, perhaps that is where things will evolve.
Microsoft does emphasize Azure's ability to interoperate with non-Azure business systems. They allow users to easily "plug in" to their own authentication and authorization system, as an example. What that implies is that companies who wish to use Azure wouldn't have to move everything to Azure servers. They can figure out the bits that need the kind of scalability and availability that Azure provides, and keep the rest either in-house, or at a hosting provider that does more traditional kinds of hosting.
Windows Azure, in other words, is simply another tool in the development toolkit. Granted, Microsoft views it as an important tool, ranking it alongside Microsoft flagships such as desktop and server Windows. It is, however, just one of many Microsoft development tools. Parts of an application targeted at large numbers of users will be hosted on Azure, and other parts will be hosted by enterprises themselves.
Anyway, I think that rounds out my thoughts from last week. I would have finished up yesterday, but Barack Obama was busy getting himself elected president of the United States (I had to wait in line yesterday morning, which cut into my blogging time), a result that I find gratifying even as I rejoice at the end of an incredibly long election season.