As a fullstack dev / (dev)op I have configured many a server. From Linux based Rails, to Windows Asp.net or the latest docker based new shiny widget. I actually kind of like doing that stuff, endlessly tweaking dials here and there to get everything functional. But just because you can do something, does not mean you should.
Heroku provides amazing value for almost any tech startup. While it is quite 'expensive', it is way cheaper than hiring a full time team member to deal with all your ops needs. Yeah maybe you can do it, but are you considering all of the other issues that need to be dealt with when running your own infrastructure? Oh, you mean you are running SSH on every one of your hosts on the wide open internet? I hope you are using config management like Chef or Ansible. Even then, what about your snowflake servers? Hey, I have no problem with artisanal servers, but leave that for your hobby servers at home. There are a million other reasons, so trust me, just use Heroku until you can afford to move off. 1
Stay tuned for future posts on how to get more milage out of your Heroku infrastructure. There are definite gotchas that you will need to avoid. Heroku is just like any other cloud provider, it does not run on unicorn farts. It does actually have real hardware running it. You need to be cognizant of the constraints2.
Notice I said that you should stick with Heroku until you can afford to move off. Heroku is saving you money. ↩
The constraints that 12 factor imposes on your application are almost always good. Though, if you need to do anything special on the boundaries of your application, it can force you into some anti-patterns if not careful. ↩