A Quick note about Heroku
Heroku is good. Like, Really good. He’s my best-virtual-friend. And if you’ve never used it, you’ve been missing on a lot. And you should start here. To sum it up in a sentence, it’s a Platform as a Service build by and for developers that makes the product lifecycle easier to handle from build to deploy & run. It supports Ruby, Java, Scala, NodeJS, Clojure, and Python. That’s super Awesome. But it comes with side effects: expensive (for production) and not highly flexible (for out of this world apps).
Here’s 5 reasons where using Heroku is a legitimate choice.
1- Budget isn’t an issue.
The first Dyno is free. Nobody really knows what a Dyno’s physical capacity is, but it’s somewhere around ~2GHz of CPU and ~512MB of RAM. And if your app isn’t being used, it shuts it down. The next user should wait for the app to boot up (6-16sec) in order to use it. Not very cool. That’s why you always need a second Dyno to back you up. And it costs $35/mo. An app isn’t complete without a database. Heroku suggests a starter Postgres database at $0. That has no cache, and limited to 100K rows. That’s highly limiting when you’re talking big apps. The starter production tier database starts at $50/mo. To sum it up, it would cost at least $85/mo to run a production app at Heroku. Some wouldn’t mind paying this sum for the great work they do. My company does, unfortunately.
2- You don’t wanna hear the words “Sys Admin”, “Linux”, or “uptime”.
Some get goosebumps when they hear about servers, maintaining server infrastructure, migrations, … Heroku takes care of all this for you.
I was kinda the same – an 80% front-end guy who doesn’t care about how things works on the other side, scared to death by the $apt-get s and the thought of installing Puppet or Chef. And didn’t know any good sys admin who could handle a mashup of Java/Ruby/NodeJS/Memcache/Elasticsearch/Redis/… but mostly, the headaches it causes.
But I had to take things in my own hand – especially when I discovered DigitalOcean’s offer: a $5 droplet (1CPU/512MB/20GB SSD). Compared to Heroku’s suggested production environment, you could get for $80: 8GB RAM/4 CPUS/80GB SSD. Plus they have an awesome referral program.
The investment, on the long run, to go ninja with my sys admin skills was well worth it.
3- You’re learning, experimenting, or prototyping.
Truth be told, I was a PHP guy before I conquered the NodeJS/Ruby/Java world. That was mainly because of the Hosting constraint: you use what you have at hand. And all hosting companies provided a dirt cheap PHP hosting.
When I started out with NodeJS, building LiberTweet for Chrome experiment, I had to NodeJS-it, without much server hassle. Heroku was my first PaaS pick.
Same goes for many other recreational projects I’ve worked on.
Also, if you visit the Heroku addons page, you’d certenly be impressed. They have it all figured out there.
4- You need HTTPS, now.
When you need SSL, you have a few options: Buy an SSL, or use Heroku.
Heroku by default points your app on http://AMAZING_APP_NAME.herokuapp.com. But what you might not know is that you can piggyback over herokuapp.com’s SSL and use https://AMAZING_APP_NAME.herokuapp.com – out of the box! (Sidenote: if you want a domain-SSL https://AMAZING_APP_NAME.com you need to add $20!).
This feature comes really handy especially when building Facebook Canvas/Tabs apps.
5- You’re running a highly unexpected-return experiment.
Or what you might call a “Next Big Thing” material.
When I started working on Talk & Comment, which is a Chrome extension to make Facebook Voice Audio Comments possible, I had no clue what would the return be.
On one hand, it’s so out of the box, and people would be quite sceptical to use it. On the other hand, it’s the kind of out-of-the-box that could degenerate into a phenomenon. So I didn’t wanna take any bets. I let Heroku manage it. At least, for now.
The “add a Dyno as you go” feature is impressive, and it’s without any downtime. Imagine being able to scale to a 1Million user burst in a second!
6- Bonus: Git Push.
This is magic.
To deploy an app to heroku you just need to git push heroku master it, it’s pushed to Heroku, the slug compiled and instantly deployed. If you’re a big fan of being productive, the “git push vs Capistrano/FTP/SSH/other” choice is a no-brainer!