As a web developer, I have always been on the lookout for ways to simplify the process of deploying and managing my applications. That’s why I recently decided to adopt Heroku as my platform of choice.
Heroku is an incredibly user-friendly platform that allows developers to quickly and easily deploy their applications in minutes. With a few clicks, my applications can be deployed to production. More importantly, with Heroku, I can focus on development rather than having to spend time dealing with tedious server configuration.
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 it sure will be useful to start investigating a bit more about this great platform.
What is Heroku?
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 developed your web application and then what?
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.
Concentrate on development, not on deployment
Even if you build your own blog where you document your experiences, you need a 99% uptime so you will have these main tasks:
- Configure the production environment
- Scale. Ok, only if you write lots and interesting articles 🙂
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.
- Great support
- Nice uptime
- A large list of Add-ons
- A free plan to start learning and to have your testing environment (unless you do stress testing).
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.
My experience with Java and Heroku
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.