Heroku sucks. Now before you jump out of your seat, hear me out. Heroku makes deploying applications dead simple. If you or a startup asked for a platform recommendation, I would pick Heroku in a heartbeat. Then what’s the problem? Well, Heroku pricing sucks.

I love to tinker. I build apps to test product ideas weekly. But spending $7 per app to validate my ideas with Heroku is a huge turn off. Heroku has a free tier but your apps sleep after 30 minutes of inactivity depending on your remaining free dyno hours.

If an app took off then at minimum I will have a $100 monthly bill. Not to mention I would have to optimize for limited compute resources if I want to keep my bill low. There are other alternatives, but none of them have a comparable developer experience. Use their price estimator if you don’t believe me.

The price debate always raises a question. Is it possible to save money by hosting my own Heroku-like platform? I can’t say for sure but I want to find out. Put simply, let’s tinker and flex those creativity muscles.

Today we kickoff the first post of the "build your own Heroku on Kubernetes" series. Over the next few weeks I’ll document my journey as I explore how to build a Heroku platform on Kubernetes. I’ll share with you updates, system design plans, code snippets, and costs.

When I’m done, I’ll combine all these resources into a streamlined video you can watch to build your platform in a few hours. Then we’ll answer the question: can we save money by self-hosting Heroku?

Building a Heroku prototype

Over the weekend I spent two hours working on a prototype of the Heroku platform. I built a GKE cluster using preemptible e2-standard-4 worker nodes to save on prototyping costs. I installed Knative with Istio to configure a serverless container runtime.

To confirm all was working I deployed a sample application, made a request, and got a 200 response. Afterwards, I tore down the infrastructure to save money until the next session. The session cost me $0.31 on Google Cloud!

See you next time

In the coming blog posts I will explain how I built the prototype. You will learn how to create a GKE cluster with Terraform. Then, you'll learn how to install Knative with Istio. Join the mailing list below to stay updated with the series. Hope you’re excited about this project!

Additional Reading