About 2 years ago I started playing with distributed code and large scale architectures. Recently most of my development time has been under Azure and Heroku. The following are my thoughts on when either Azure or Heroku is better under specific circumstances.
What I like about Azure:
- Python/Ruby/PHP/ETC
- Lots of built in options to fit storage needs – Blobs, SQL Azure, Table Storage and Queues
- Great for working with interns/students with .NET
- If the project does not compile the IDE will not let them deploy!
- Amazingly fast growth of learning resources for them to learn and use
- IntelliSense to get them started quickly
- When a new intern arrives we can use the nice built in debugger to step in code explain how things work
What I like about Heroku:
- Free development environment
- GIT for deployment
- RubyGems
- Deployment and startup time is fast (compared to Azure)
I make my choice based on of the following questions:
Will interns/students have to work with this project? If interns are involved I most likely choose Azure because they are bound to make less mistakes. They have more resources everyday including MSDN and also they can learn by poking around with IntelliSense.
What is the budget? If budget is an issue, Heroku is a great service. The fact is that Azure is kinda expensive even during development stages. Developing a big distributed architecture on Azure is not free. The good part: Microsoft has listened to a lot of people and is currently having a few free trial promotion in the USA.
Development speed of middleware components? Heroku - in my personal opinion it is faster and cleaner to develop middleware components under Sinatra than on the .NET counterparts.
What libraries and languages are necessary? If it is a collaboration project where multiple languages and libraries are used, Azure has tools to fit other developers. For example the new Azure PHP tools are coming up nicely.
Conclusion
Those are just a few of the points that I use to decide if Azure or Heroku are the right service for a project. After all, both have great strengths which have to be leveraged to maximise the returns. The right tool for the job.