REST AzuredEvery now and again I'll take a peek to see what's happening in the race-to-the-clouds. After looking around I was particularly interested in what Microsoft is doing with Azure since I believe there are some good examples of both good things to do and bad ones as well. As an avid fan of the Force.com platform I can azure you my cloud goggles are welded on. But following is a list of what I personally feel are dos and don'ts of good cloud design (not cloud programming).
Microsoft recently announced that their new cloud offering Azure will be ready for launch in mid November, along with debuting Office 2010 which has many built-in features that take advantage of Azure (
http://www.techcrunch.com/2009/07/14/microsofts-azure-gets-a-business-model-and-an-official-release-date). I've been "involved" in their community technology preview since 2008 and have formed a few opinions about their delay in getting to market and their inability to let go of their old way of approaching the tech world.
First and foremost, one of the great mistakes of a cloud environment - unmanaged code. The following is from a CTP email: "
The Windows Azure compute service is based, of course, on Windows. For the initial availability of this service, a Community Technology Preview (CTP) made public in the fall of 2008, Microsoft allowed Windows Azure to run only applications built on the .NET Framework. The company has announced plans to support unmanaged code as well, i.e., applications that aren’t built on the .NET Framework, on Windows Azure in 2009."
Basing their cloud on the .NET framework is a dubious choice IMO, since this framework was never built to be leveraged
within a multi-tenant architecture. Using .NET to
build a multi-tenant architecture would be a fine plan though. Then allowing unmanaged code is a step further in the wrong direction, and I don't believe even Microsoft will truly pull this off. The comparison would be like saying I'll allow you to have C-like pointers and complete control of your own memory, AND guarantee no memory leaks in the process

Another dubious direction: it's a "cloud
operating system"
From a purely stink-cleansing perspective, this is a bad marketing move. Windows works on the hardware everyone has. That's why everyone has it, not because it's the best. So jumping into the cloud they would be better off distancing themselves from their 13-RPH legacy (reboots per-hour), again IMO. More importantly, the very notion of an operating system goes against what cloud computing is and what actually works out there in web 2.0 land. They seem to believe that with enough money and effort they'll make such a great cloud that people will surrender the greatest freedoms of being there in the first place: it's an open, standards-based collective of equally empowered players bringing solutions together by leveraging services at will and only as needed. The better you play with others, the higher the adoption rate. Taking the pay-as-you-play model and applying it to an online version of Office, for example, is a Kinko's endgame at best.
So what have they done right? Quite a bit and they've obviously purchased the talent and done their research to know a few things. One definite winner: there will be no SQL Server based database in their cloud

Bravo
"Both Windows Azure applications and on-premises applications can access the Windows Azure storage service, and both do it in the same way: using a RESTful approach. The underlying data store is not Microsoft SQL Server, however. In fact, Windows Azure storage isn’t a relational system, and its query language isn’t SQL. Because it’s primarily designed to support applications built on Windows Azure, it provides simpler, more scalable kinds of storage. Accordingly, it allows storing binary large objects (blobs), provides queues for communication between components of Windows Azure applications, and even offers a form of tables with a straightforward query language." Meta-data driven is the right path in the cloud, since everything should be self descriptive and discoverable. Also Microsoft is attempting what others haven't dreamed of: integrating client/server-side programmability. This is an aggressive attempt to blend the traditional Service Oriented Architecture with a true cloud environment. Also they're finally letting go of forcing everything through web services and embracing a RESTful approach.
Based on history, I'll keep November penciled-in

