What Ray Ozzie didn't tell you about Microsoft Azure
Behind the whiteboard of confusion
More Components Means More Whiteboard Action
Documentation issues aside, it seems that Microsoft has actually produced something useful - once you separate the signal from the noise. Here's how it breaks down:
- Windows Azure is the operating system on which your applications will run, sort of. It's more of a manager for virtual machines. It can run on your developer workstation and in Microsoft's data center. Programming for Windows Azure is done in .NET, but Ruby, PHP, and Python will soon be supported. For the time being, tour coding should be done in Visual Studio, but Eclipse support is also on the way.
- Windows Azure protects you from scary shit like managing operating systems. You deploy your application straight to the data center, and it's all run in virtual instances of Windows Server 2008. Marshalling that virtualization is Windows Azure's job. Microsoft has understood that every time a developer needs to configure services on a machine, they fuck it up and need to page the ops people. To make matters easier on everyone, they've only provided two roles for Windows Azure machines: one to handle HTTP requests and one to do everything else. With these two roles, you can do both web applications and asynchronous background processes.
- Windows Azure also provides you with some neutered data storage. You can store both structured and unstructured data, but nowhere do you get relational semantics. If you want to do anything remotely practical with this platform, you'll need to use the SQL Service.
- Giving you access to a straight-up hosted Microsoft SQL Server would be too useful, so in the Azure platform, you get a weak abstraction over it. You can query this data store with a LINQ-like language over REST or SOAP. Why not provide you with just an SQL server? Because scaling an SQL server arbitrarily is a real pain in the nuts, and you can scrape by with this abstraction. I hope you're not too dependent on stored procedures. That will learn you to tightly couple your data and your business logic, fucker.
- The engineers should have just stopped there, but there are more components to the Azure platform that are just there for show. First, the .NET Services part, which is more of a marketing tool than a useful piece of software. .NET Services let you expose web endpoints for your services so that you can connect your application to other applications out there. The idea is that businesses can easily interoperate with one another with this “service bus.” Good theory, but probably not worthy of an abstraction. .NET Services also provides a fairly convoluted federated identity system based on SAML. The path to a generalized authentication scheme is always watered with tears.
- Ray Ozzie has been rewriting the same data-synchronization application for years, and over that time, he's become very good at re-branding it as something that people need. The last time we heard, it was called Hailstorm, and now it's Windows Live Mesh. In the Azure platform, it's called Live Services, and it was likely thrown into the mix because Ozzie needed something to do. It serves no practical purpose in the greater scheme of the system and can be safely ignored.
A Thunderhead Is A Cloud, Too
This is all within one standard deviation of the average amount of fail in any given Microsoft product. In fact, I think it stands a better chance than Google's or Amazon's offering.
Let's say you're a business decision maker, and you got yourself on this cloud computing kick. Who would you rather buy your cloud resources from?
Or maybe you should just stick with the one that has the best cloud graphics. ®
Ted Dziuba is a co-founder at Milo.com You can read his regular Reg column, Fail and You, every other Monday.