I haven’t posted on my blog for a while, but as always after a period of holidays, you have good intentions and posting on this blog is one of mine, so I thought I’d start today and make it more regular.
Over the past couple of months I have been using Heroku for a couple of websites with both PHP & Python / Django. It’s been a very good experience, although there are some real hiccups and I thought I’d put some of them up here for whoever might be interested in using it:
In terms of simplicity, I don’t think you could make it any simpler: you push from git to Heroku and the rest is automatic. For quick iterations and continuous deployment this is pretty much the dream, and it’s all done for you.
On top of this first step being very easy and automated, there are a bunch of modules that you can add to it through a simple click. This makes for very fast integrations of mail servers, logging, etc. that would take you a lot longer to set-up otherwise.
Other than making it easier to set-up, I think the biggest point for Heroku is that it enables you to focus on the application you present to your users.
It’s expensive. Heroku uses AWS and adds a bunch of automated stuff on top. As AWS is not the most inexpensive cloud provider, you can imagine Heroku can become costly pretty quickly.
Also, SSL is badly integrated. You can only use a single certificate, which means you generally have to buy a wildcard and that becomes expensive. It is an even bigger problem if you host multiple domains on the same heroku instance: it is impossible to use an SSL certificate on heroku in this case.
A last, but very important point is that you lose control over your infrastructure. You are reliant not only on Heroku, but also AWS (as Heroku uses AWS). Over the past 3 months, we have had several hours of downtime and another 12h+ where the Heroku API was inaccessible (effectively cutting access to deploy anything). This is of course to be expected, as no service can be perfect, but something to take into account when you make the choice to move to Heroku.
As of today, I am still undecided. We will continue using it for a bit and try to find possible fail-safes that would enable us to fall back on other services if we need to. As we are still a start-up, iterating fast is more important than scaling costs, but that is only the case until the costs become too high to bear.