Azure VS Heroku – FIGHT!

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.

Windows Azure Tools for Microsoft Visual Studio 1.2 (June 2010)

I am very happy Microsoft updated the Azure Tools to have full integration with Visual Studio. It is extremely easy to set up, just a few clicks to create a certificate and upload it. The process is all guided and it took me around 30 seconds. After the certificate has been uploaded you can deploy from Visual Studio with a neat status bar.

There are some other neat features like IntelliTrace and others that are now available.

Here is a link to the latest release: Windows Azure Tools for Microsoft Visual Studio 1.2 (June 2010)

Dynamic Azure Web Services URLs

I am currently building a lot of web services for Azure. Since URLs change a lot in development and deployment environments I needed to be able to have those services URLs updated dynamically. The easiest way I found is using handlers and:


HttpContext.Current.Request.Headers["Host"];

This way none of the URLs get hard-coded and deployment is extremely easy. This also brings a lot of neat options for Intercloud communication, but that is for another post.