The Cloud Is Overkill

Lukas Werner

A few months ago I started on a job that heavily utilizes cloud infrastructure. I went in head first into this “futuristic” cloud utopia.

I built microservices.
I setup dockerfiles and containers.
I wrote terraform files.
I setup command line toolkits (CLIs).

I even started pushing my team to start using terraform and git to manage the whole company-wide infrastructure stack.

Then I tried pushing apps into production.

That was the moment that the sparkle and the grandiose disappeared. I would have problem after problem after problem trying to get my basic architecture app to run. I will note that running everything on my laptop was a piece of cake.

A diagram showing the infrastructure of my app

Just get the images, run the images, voila easy. But for the cloud I needed to know the differences between Azure Postgres and Azure Postgres Flexible Server, how Azure Container Apps do not allow for over-provisioning of containers to a “host”, or how to separate infrastructure so that terraform wouldn’t re-build all of my infrastructure every deploy and cause me to lose my public IP.

After dealing with all this I was assigned to a small project to build up a glorified web grepping program for nested excel sheets (at some point I’ll have to blog about how SQLite powers that, omg it is so cool!). Anyhow, the program is just a single container with a read only SQLite database. I ran that on a host that has TONS of containers, and linked the container IP to the HTTP gateway (kinda how Zuul works at Netflix) and done.

That process was simpler and had a lot faster route to production allowing for faster iteration time between deploys. The grepper would have simple changes that could be deployed in 2 minutes while the big cloud app would take about 30 minutes or more to deploy. Plus heaven forbid I change any of the infrastructure in the cloud. Then it could be weeks until I get a working change.

So.

What should most people do instead? Just get a computer on a public IP, it could just be a $5 a month droplet from digital ocean or wherever. Throw docker on it and bam you have “a cloud.”

And yes I know about scaling. But that isn’t necessary for most apps that people build. No your little website that gets 1000 DAUs doesn’t need Kubernetes or some crazy autoscaler.

Just worry about growing first then deal with scaling.

And if it doesn’t work out then you can meme about how by following some blog on the internet made it that your business crashed.