The most important step when you start a project is to get it deployed somewhere, anywhere. Running your code in your local development environment is great, but getting your deployment workflow setup is the holy grail.
When I started a hobby project about a month ago, I searched and searched for Heroku alternatives. In the past, I knew Heroku had a tendency to be costly. Heroku can also lack flexibility in certain situations.
After what seemed like an exhaustive search, I gave up. There are alternatives to Heroku, but nothing caught my eye. I had used AWS Elastic Beanstalk for a product in the past, but the initial setup took hours I didn't want to spend.
Ultimately, here's what I wanted in a service
- Automated deployment when merging to master
- Automated deployment when the tests pass
- One click setup of the database, Redis
- Process monitoring for Sidekiq
- Easy, simple cron
- Easy, simple scaling
To this day, Heroku still checks all those boxes. Even more so, everything has improved since I last used Heroku.
I booted up my Heroku account and started looking around. To my surprise, there was a lot I could scale up for free.
What I got out of Heroku
- A small PostgreSQL database
- A small Redis instance
- Cron
- A single web dyno
- A single Sidekiq dyno
- Automated deployments integrated with CircleCI
- Bonus: Free Mailgun
- Bonus: Free Sentry
I did all of this with minimal configuration. I didn't write any YAML. I don't deploy via the terminal. I don't worry about processes being killed.
The only annoyance is dynos going to sleep. Since the product I'm building isn't in production yet, that's not a big deal.
However, what I do have is a complete deployment workflow and somewhere to ship my code automatically. Instead of worrying about DevOps, I can focus on building. That's worth a lot to me.
It is amazing just being able to publish to heroku and consume your api