Windows Azure or Amazon EC2 for ASP.NET MVC Development?

Both are for slightly different purposes -

Amazon is infrastructure as a service, which means you dont have to purchase hardwrae, the networking equipment and maintain them. You will get virtual machines that can host linux or windows OS and can easily install any framework, web server or applications you want on it to use for hosting web apps or web services or long running processes. You are still responsible for maintaining the operating system which means that you still need to apply upgrade patches, protect against viruses, and are completely responsible to ensure that the OS does not crash.

Windows azure is a platform-as-a-service - you basically get windows VMs like in Amazon, but the operating system management and the application framework is also completely abstracted away from you. It allows for automatic OS upgrades and maintenance. Also this means you just load your app and it starts working - no need to worry about the low level details.

While this reduces the control you have over what you can install and what you can't it gives you much lesser operational overhead since you don't need a lot of administrative effort in maintaining your instances. Also scaling up and down, load balancing, auto high uptime, all these are handled by the azure service controller (or the fabric controller).

Sql azure is one step ahead in this direction - you dont even have to consider a VM, you just get a particular size db in the cloud, and you pay for what you use. The data is seemingly triple replicated and hence there is very good reliability built in. It is much cheaper to have this at least for smaller databases than to have a full blown instance for an sql server.

MS is also introducing some features like windows server vms which will give you an option for having amazon like instances, but I personally like the current azure better.

So to summarize - for new asp.net mvc applications, with sql server backend, windows azure is a great platform to build on. On the other hand, if you have an existing website which has a lot of dependency on legacy components that are not supported by windows azure, amazon will be a far better choice. Also Amazon will be slightly cheaper for an instance of same size (though the pricing structures can vary depending on the commitment you want to give).


Roopesh gave a good description of some of the differences. Let me add to it, for your specific case.

Since you want to use Microsoft SQL Server, Azure's SQL Azure is going to be a good fit. Further, if you deploy your application into an Azure Web Role (a role is a virtual machine with a specific template, and a web role specifically runs IIS), you can then work directly with your SQL Azure databases in the same data center without incurring any bandwidth charges or Internet latency between your app and your database.

One clarification: SQL Azure does triple-replicate your data. This replication is instant, so keep this in mind when you DELETE * FROM CUSTOMERS, as this deletion is also triple-replicated. Consider this when planning your backup strategy (maybe take advantage of Azure's sync service to periodically back up to another database, either in Azure or on-premises).


We currently host our own app on a private cloud for our customers and we're currently migrating it to Azure as an R&D project.

Our product utilizes the Free Text Search feature of MSSQL Server. Unfortunately that hasn't made it into Azure.

I'm thinking that moving to Azure now will make it more difficult, compared to AWS, to switch to, or to support any other platform down the track.