Lee Rob and The Story of Heroku
Heroku made it easy for any developer to build and run applications in the cloud without managing their own infrastructure. Now 15 years later, it continues to inspire the next generation of developers. Why did Heroku become so popular? What can we learn from their incredible developer experience? How is Heroku shaping the next generation of serverless?
Heroku set a new standard for developer experience. To deploy your application, you pushed code to git and received a URL. git push heroku main. That's it.
Heroku would build your application remotely (in the cloud) and deploy it to their infrastructure. Developers weren't used to deployment being this easy or fast. Heroku was ahead of its time and “serverless” in the sense you didn't have to manage servers yourself.
I'm personally inspired by Heroku and have used the platform since 2012 for some side projects. We can learn a lot from their story and how it's shaped the software industry.
- Git push to URL is incredibly powerful: When folks talk about Heroku 15 years later, they still mention git push heroku main. Heroku inspired platforms like Vercel with one command (vercel) to deploy your frontend globally, while having a singular remote (origin) and creating deeper integrations into first-party git providers (e.g. GitHub).
- Editing code in browser lowers the barrier to entry: While Heroku pivoted away from an in-browser IDE, their ideas have led (either directly or indirectly) to the creation of Codepen, CodeSandbox, GitHub CodeSpaces, Replit, StackBlitz, and more.
- Don't forget about solo developer productivity: Some developers still deploy monolithic applications to Heroku or other services like Fly.io, Railway, and Render to colocate their backend and frontend. They don't need (or want) to have microservices.
I'm also biased, as I work at Vercel, in believing serverless and Edge platforms are the future. Here's my thoughts on where we're headed:
- On the frontend, you want to git push and have your code close to your visitors globally. Platforms like Vercel help you go from idea to global app in seconds.
- On the backend, you (probably) don't want to scale Kubernetes yourself. There's now fully-managed Kubernetes (AWS EKS, Google Cloud GKE), as well as Google Cloud Run, which allows you to run and automatically scale stateless serverless containers.
- Serverless functions don't need health checks and are highly available (multi-az) without having to think about "number of dynos". For each concurrent request, you get a function instance. Scaling is not something you spend time tuning or thinking much about. Entire categories of commands like
ps:scaledisapper and become unnecessary.
Great article from Lee on Heroku and he makes a lot of good points at the end.