When Amazon’s EC2 service first came out I was amazed. I thought this was going to change things forever. When Azure first came out, I was a sceptic. The thing that put me off Azure was the tie-in. Microsoft to date are the only Azure hosting provider. I knew that there were Azure specific libraries, and that I would have to develop my app specifically for the Azure platform. Moving it elsewhere would be an expensive option. This assumption was wrong. In fact, I believe that most web-based applications could probably just be copied across onto Azure with modest, or even zero changes. It’s true, there are Azure libraries which provide you with access to things like performance counters, logging, Azure blob storage, etc… What I learned, is that most of this stuff is not necessary, and just ‘nice to have’. Playing with Azure helped me to appreciate what Amazon lacked.
With Azure your hands are tied, you upload your files, and you’re done (with the exception of pressing the ‘go live’ button). This means that Microsoft are responsible for deploying your solution across the server farm, but not only this, they take responsibility for patching the OS, for performing the ‘transitions’ (when you swap instances). With Amazon, you’re left to figure these things out for yourself. Of course, comparing the two technologies is like comparing apples with pears. Amazon allows you to do anything you want with just about any kind of machine image you could need, Azure hosts services, data and web roles, a narrow service offering, but this probably covers 90% of the use cases out there.
So anyway, here is a table to summarise the key differences between the offerings (there are plenty of similarities):
|Amazon EC2||Windows Azure|
|Deployment||You are responsible||Microsoft is responsible|
(i.e. patching the OS)
|You are responsible||Microsoft is responsible|
|Software licence cost
(i.e. OS and database)
|Free if using Linux/MySQL etc…
otherwise you pay
|Software licensing included in the cost|
|Choice||Runs whatever you want||Runs .NET services and applications that run on IIS
(i.e. ASP.NET and PHP)
So my advice is; if your application will run on Azure, use it, otherwise it’s Amazon.