Every six months someone asks us why we don't "just move to AWS." The usual arguments: managed services, no ops team, global regions, elastic scaling. All true. Also: we would go bankrupt.
This post is the math.
The workload
Rivervo serves ~180k active hosting accounts across three data-centre regions. Our average rack holds 24 servers, each with 2× Xeon Gold, 512 GB RAM, 8 × 7.68 TB NVMe. Load is steady — shared hosting doesn't spike like an ad campaign. Nothing about this workload rewards elasticity.
That matters. Cloud pricing is a tax on unpredictability. If your load is flat and your footprint is predictable, you're paying for someone else's surge capacity.
The bill
Take one of our mid-density racks. Here's what we actually pay per month, fully loaded:
| Line item | Monthly |
|---|---|
| Colocation (30A, 10U space + 24U compute) | €2,100 |
| Cross-connect + transit (2× 10G) | €680 |
| Hardware depreciation (5-year straight-line) | €3,400 |
| Remote hands (SLA-based) | €150 |
| Total | €6,330 |
That rack gives us ~96 CPU cores × 24 = 2,304 vCPU-equivalent, ~12 TB RAM, ~1.4 PB NVMe.
The nearest cloud equivalent (on-demand, no reserved pricing) for similar compute + storage in a comparable region: €48,000–€72,000/month depending on provider. Reserved instances drop that to €28,000–€40,000. We're still 4.5–6× more expensive if we move.
Where cloud wins
It's not that we think cloud is wrong. It's right for a lot of things — and we use it ourselves for pieces that don't fit the bare-metal profile:
- Ephemeral workloads. Our CI runners live on spot instances. Cheaper than owning hardware that's idle 70% of the week.
- Global edge. Our CDN is Cloudflare. Building our own anycast network to 300 cities would be insane.
- Object storage for backups. S3 is cheaper than we can build at our scale. No contest.
- Unknown demand. A brand-new product where you don't know if it'll have 10 customers or 10,000 belongs in the cloud, always.
Where cloud loses
Stateful, predictable, high-throughput workloads. That's us. It's also most SaaS companies past a certain size — which is why Dropbox, GitHub, and every large hosting company you've heard of all run their own iron for the core workload. The public narrative is "cloud won." The private reality is more nuanced.
If your load is flat and your footprint is predictable, you're paying for someone else's surge capacity.
What we give up
Honest list:
- No auto-scaling. We capacity-plan 12 weeks out. If a sudden 2× growth hit us tomorrow we'd be ordering servers in a hurry. This is a real constraint and it shapes how we onboard.
- Regional expansion is slow. A new POP is a 9–14 month project, not a
terraform apply. - Hardware failures are our problem. One DOA server means a rack takes six weeks to get to full capacity instead of four.
We accept all of this because the alternative is paying a 5× premium forever, which would mean either raising prices or going under.
The quiet third option
There's a middle path people don't talk about enough: rent bare metal. Companies like Hetzner, OVH, and Latitude.sh will lease you a dedicated server for €80–€400/month with no colocation overhead. For a small team that wants the economics of bare metal without the ops load, that's often the right answer.
We run our own because at 1,100+ servers, hardware operations is cheaper than rent-to-own margins. But if we were half our current size, we'd be on Hetzner and nobody would notice the difference.
Bottom line
Cloud vs. bare metal is a pricing question, not a philosophy. If your workload is predictable and your footprint is large, renting it from AWS costs roughly 4–6× more than owning it. That difference either gets passed to customers or it doesn't. We choose not to pass it on.
— Aleksi