Two Servers, Every Project: Why We Self-Host Instead of Using Platforms
We run our infrastructure on two dedicated servers instead of serverless platforms. Here's the economics and engineering behind that choice.
Shadi Almosri
April 3, 2026

The Economics of Self-Hosting
Two Hetzner dedicated servers run every Momentous project. Apollo handles production workloads. Thor handles staging, CI/CD, and internal tools. Total monthly cost: under €200 for more compute than most startups put on AWS.
The serverless pitch is compelling — pay only for what you use, scale automatically, no maintenance. But for a consultancy running 15+ concurrent projects, the math doesn't work. Serverless pricing models optimize for spiky, unpredictable traffic. Our workloads are steady and predictable.
Docker Compose, Not Kubernetes
Every project gets a Docker Compose stack on the appropriate server. Traefik handles routing and automatic TLS certificates. Deployments are git-push triggered. There's no Kubernetes cluster to manage, no service mesh to debug, no cloud-specific vendor lock-in.
This isn't anti-cloud dogma — our client projects run on GCP, AWS, Azure, wherever the client needs them. But our own infrastructure is simple, affordable, and fully under our control.
What We Lose
Auto-scaling. Geographic redundancy. Managed database failover. We've accepted these trade-offs because our projects don't need them at this stage. When they do, we'll move specific workloads to cloud — not everything, just the ones that justify the cost.
What We Gain
Full visibility into every process, every log, every byte of network traffic. Sub-10ms latency between services that share a server. Consistent development-to-production parity because Docker Compose is the same everywhere. And a monthly infrastructure bill that doesn't require a spreadsheet to understand.
“A monthly infrastructure bill that doesn't require a spreadsheet to understand.”