My problem with Heroku
Posted on December 3, 2010
We’ve all been hearing a lot about Heroku lately. In fact, it seems that almost every rails blog has a post about how you “must use Heroku!’ or you’re an idiot to not using Heroku.
Over the last month or so, I’ve been working on a project hosted on Heroku. Now this app has a lot of issues including code written by a billion developers that is often stupid or redundant and inconsistent staging and production code, schema, and data. Needless to say, the project has been frustrating at times and most of the reasons for that had nothing at all to do with Heroku.
However, as the progress has been made there have been issues with Heroku that have cropped up and a couple of them have turned into deal breakers for me.
- Database access and Taps: Heroku doesn’t give you root access to your database which, at its core, rubs me the wrong way. However, it is possibly something I could live with.
What I can’t live with is the fact that I was not able to push the production database to staging EVER. I used Taps to pull the entire production database. (The fact that you can’t just dump a table is annoying in itself.) This took a couple hours as, instead of doing a simple pg_dump, it creates a database and pulls data from each time one at a time. Fine.
Then I attempted to push the prod database to staging. After an hour or so, it would barf. So I tried again and again it barfed.
Finally, I contacted Heroku support who took me to upgrade my heroku and Taps gems (which were already up to date). That’s it — that’s all they could say. Eventually, I took to truncated tables and deleting old records until I finally got a push to work.
- Support: As noted above, Heroku support was pretty much useless on the database issue. It got worse when the server was down for an entire day because compiling of the slug hung.
After the slug was still “compiling” for a couple hours, I contacted support with an Urgent request. It took them over twelve hours to respond. This is just unacceptable. I’d even be happy to pay for real support but it doesn’t seem to be an option.
- Log Files: You only have access to the last 100 lines of the combined log files which means if you are looking at the logs in production, even an error that just happened might not show up. Yes, I’m using HopToad (although again, the app is messy so not all errors are getting sent) but, still, it just seems basic to have access to log files. It would also be nice to have access to log files separately, i.e. I’d like to just look at the delayed_job log file.
Now, don’t get me wrong, I think there are a lot of fantastic things about Heroku, but I have a hard time seeing how a working, production app could justify staying on Heroku for very long without database access, decent support, and access to log files.
Has anyone successfully dealt with these issues?