I started using Heroku three weeks ago since @_micho from teambox.com recommended it to me. He told me they had a free app tier with some basic functionality and you can upgrade if you need more power or other functionality.
I’ve been testing it for deploying several development and staging apps the last two weeks and Everyday Feed already runs on it in a production-kind-of way. I’ve come to a conclusion: always deploy your first deployment on Heroku.
So, why is this?
- Because Heroku is an app-based deployment service instead of an instance or server-based deployment service you can focus on the application and making it work, without having to worry about server installations, best deployment settings, software etc. You deploy your app on Heroku so you can fix your app, and not waste time on fixing your server.
- Heroku is totally Git-based so it will force you have a good Git-workflow right away, from the start of your first deploy. One of the advantages of using Git is of course that your code is in version management and you can easily manage various feature sets and rollback to previous deployments, but it’ll also help you right away when you get more team members.
- Heroku forces you to configure all your things that run around your app, like cronjobs, sending email, doing queuing and caching. Because Heroku forces you to work in a very automated and modular way you’ll never mess up your app’s code with external things. This make sure you configure everything nicely in external files or in the Heroku admin panel so you never hardcode things in your code.
- Heroku is free. Well at least the first database package they have (up to 5MB). I like this from a business point-of-view because you can also scope what you spend on Heroku with your income of the app. I have a simpel rule with Everyday Feed: I will not upgrade Heroku until the application has some users or advertisers that are paying. This way I make sure people want to pay for the core functionality and add extra features from there, when I can buy more power at Heroku.
When you have your application up-and-running on Heroku, it is probably a very clean application with all configuration outside the application logic. This means you should easily be able to migrate to another server or your own EngineYard Cloud or EC2 load-balanced cloud environment because your app is not tied to a hardcoded server configuration.
When you move away, you can even keep using Heroku’s add-ons because they have a lot of partnerships with external services like New Relic and SendGrid when you move away.
Of course, you can also just stick with Heroku because from what I’ve heard they provide excellent application hosting for all your needs.
I am Michiel Sikkes and I'm Lead Developer and partner at