Heroku.. almost a bad word in many circles. It’s expensive, polished, and restrictive. To me: it’s like the Apple of hosting providers. I can rely on it to “just work” the vast, vast majority of the time.

Why Heroku?

Managed hosting.

As a developer first, I want to get right to the meat of the business logic and start solving problems. Getting around configuring an EC2 instance for the umpteenth time is an incredible productivity boost.

It’s like having your own dev ops team. Right out of the box we can leverage many managed services like automated deployments, backups, security updates, quick recovery from outages, etc.

For example, instead of spinning up an instance of Postgres, making our own backup solution, verifying it works, writing tools to make it easier to make backups before deploys, etc… we can use Heroku Postgres which comes with WAL (Write Ahead Logging) aka realtime live backups with a 4hour rollback window.

Pros:

Cons:

Why AWS?

Control.

If you need some complicated configuration of Postgis, nginx caching, non-emphemeral local storage, yadda yadda.. it’s probably easier to go straight to EC2 instances than it is plumbing some gross configuration on Heroku together.

Also, if you are running a VVIP top secret app then you will want to sandbox your code away from any prying eyes. But, in my opinion, this is rarely needed and often times for small-to-medium sized enterprises: security theater. Certainly it is another point of failure to rely on a separate service storing your code, but I’d bet on a managed host with hundreds of millions behind it.

Pros:

Cons:

Conclusion

At CKC we love simplicity and speed. Heroku brings us the capability to develop complex applications as quickly as possible, and to run those applications at scale.

Have an app you’re having trouble deploying? Let us setup something for you!

Eric Carmichael wrote this on 15 March 2019