This post is built from a developer perspective where the main task we do daily is (obviously) development. So if you are a sysadmin guy, Heroku will like you at the beginning but soon you will have your hands tied since flexibility is not the main feature.
It’s not a complete guide and probably won’t be enough to make a decision but sure will be useful to start to investigate a bit more about this great platform.
Heroku is a platform as a service (PaaS) acquired by Salesforce in 2011.
Let’s say it’s a smart hosting for your web apps (*)
(*) Even you can deploy a daemon (a.k.a Heroku worker), I would bet that most of the software deployed on Heroku are web applications.
You created a beautiful web application and now you want to publish it under your own domain http://www.myawesomeapp.com. You have a couple of options.
One option is to hire a Virtual Private Server (VPS).
Another option is to hire a dedicated server. Both of them require some sysadmin knowledge because most of the time you get (literally) an OS with enough software to boot.
For sure that has some advantages such as total control of security and performance. The main disadvantage I see is you lose focus on development to pay attention to backups, security, deployments, etc.
Even if you build your own blog where you document your experiences, you need a 99% uptime so you will have these main tasks:
It seems lots of tasks just for a personal blog, right?
Most of those tasks you can delegate to Heroku and concentrate more on development.
Flexibility. Is not like a VPS where you are able to customize lots of things such as web server configuration and even the OS.
But wait… is not too expensive?
The answer depends on the value you add to your time and headaches.
Since most of the time we don’t have a sysadmin guy on our team, we will have to that work, taking time from our main task: development our cool app.
I’m involved in the Java world for 10+ years and even more if I count years from the university. However, I started to use Heroku a couple of years ago. In the past, I used to configure a server from scratch, install Tomcat, Glassfish, MySql, Iptables, Mail server (very painful), Apache, PHP, JRE, etc. Even it’s hard, it’s also fun to learn
Currently, I’m involved in some projects with Java plus Heroku and It feels very comfortable to do deployments just with one command or click without configuring so much stuff.
If you deal with sensitive data such as Salesforce org data, Heroku offers private spaces that have (among other things) special configuration for those cases.