Last week, Microsoft announced its cloud-computing effort, called Azure. Fitting between Google's and Amazon.com's current offerings, it represents a very big step toward moving applications off the desktop and out of a corporation's own datacenters. Whether or not it will have any traction with corporate IT developers remains to be seen.
Nonetheless, the Azure effort has brought more of a Wild West feel to the whole arena of cloud computing. If this were the late 1880s, Amazon.com would provide the land grants, as well as raw Linux and Windows acreage to build your applications upon. Google's general goods store would stock and give away all the APIs that a programmer could ever use, and some of the scrappy prospectors that came to build the new towns would be from Microsoft. Steve Ballmer as Billy the Kid, anyone?
Enough of the metaphors. Mary Jo Foley's excellent explanation of the different bits and pieces of Azure is worth reading. But the first instance of Azure is long on vision and short on the actual implementation: Microsoft calls it a "community technology preview," what the rest of us would consider an alpha version, given how long it takes Microsoft to actually get things nailed down and working properly (Version 3 is usually where most of us start to think of its code as solid). Granted, Google calls many of its applications beta, but they are typically in much better shape -- I mean, Gmail has been in beta for about 17 years now.
What you'll need to settle on the Azure frontier
So why should you consider entering Microsoft's cloud frontier? First, consider what your .Net skill set is and whether your programmers will use JScript or something else for the majority of their coding work. The good news is that Azure will work with .Net apps right from the start. (Support for SOAP, REST, and AJAX will be coming, Microsoft promises.)
Microsoft has talked about testing and debugging these apps on your local desktop, just as you do now, then deploying them in its Azure cloud. The bad news is that you probably have to rewrite a good portion of these apps so that the user interface and data-extraction logic can work across low-bandwidth Internet connections.
Microsoft CTO Ray Ozzie, in a Cnet interview, says, "Fundamentally, the application pattern does have to change. Most applications will not run that way out of the box [on Azure]." While good programming practice today is to separate Web-page content from formatting instructions, most programmers assume they are running everything on the same box. Remember how miserable LAN apps were back in the days of Token Ring? We have 10Gbps Ethernet now, and people have gotten sloppy.