We have had the opportunity to try each service independently and have enjoyed both.  While the platforms are in a similar competitive space, they are different in their offerings.

Amazon Web Services, also known simply as AWS, is considered an IaaS (Infrastructure as a Service).  Their platform gives you access to infrastructure that is dynamic and easy to manage.  The downside of this environment is that you still have software maintenance and more server management.

Windows Azure on the other hand is considered a PaaS (Platform as a Service).  They take deployments one-step further by abstracting away the servers.  You tell Azure how much traffic and storage you need to support and how many servers you want to deploy and Microsoft manages the rest.

Both services provide a great way for businesses of all sizes to scale. AWS and Azure also utilize the power of very sophisticated server setups without the huge costs of managing these systems.  There are also a number of very new and successful PaaS besides these two platforms worth checking out.  Heroku, OpenShift, and AppHarbor are just a few.

At SquareHook, when evaluating the platforms, we ended up settling on AWS.  We were particularly interested in Azure as it was perfect for our .NET environment.  However, after reviewing our options on databases, we opted to use MongoDB and at the time there weren’t great options for managed databases on the Azure platform.  Since that time however, companies like MongoHQ have started to offer managed solutions on the Azure platform.