Dedicated servers vs cloud for a SaaS with a €20,000 monthly bill
Somewhere between €10,000 and €30,000 per month, most SaaS teams discover their cloud bill grew faster than their revenue. This guide walks through a typical €20,000 bill, what it actually buys, and what the same workload looks like on dedicated servers that are run for you.
9 minute read
A typical €20,000 bill
| Line | What it is | Monthly |
|---|---|---|
| Compute | 28 general-purpose instances across API, workers, cron and staging | €7,200 |
| Managed database | Primary and replica, 1.2 TB, provisioned IOPS, backups | €4,800 |
| Cache and queue | Managed Redis and a message queue | €1,100 |
| Kubernetes control plane and load balancers | €600 | |
| Egress | About 35 TB to users and a CDN | €2,900 |
| Observability | Metrics, logs and traces | €1,800 |
| Backups, storage, secrets, misc | €900 | |
| Support plan | €700 | |
| Total | €20,000 |
The instances are typically running at 15 to 30 percent utilisation. The managed database is sized by the IOPS tier rather than the actual working set. Egress is paid per gigabyte at a rate that has not fallen in a decade.
The same workload on dedicated hardware
Twenty-eight small instances at 25 percent utilisation is about seven instances' worth of compute, which is a fraction of one 48-core server. The database wants memory and NVMe, which a dedicated server has in abundance. The question is not whether it fits, but how much redundancy you want.
| Minimal: two servers | Resilient: Cluster 3 plus database | |
|---|---|---|
| Application tier | Core 48, Kubernetes, all services | Cluster 3: three nodes, HA Kubernetes |
| Database | Core 48 Max, Postgres with WAL archiving; replica on the Core 48 | Replicated Postgres with failover included in Cluster 3; Core 48 Max as dedicated primary if needed |
| Cache and queue | On the application server | Redis Sentinel included |
| Egress | 40 TB included across two servers, then €1 per TB | 60 TB included, then €1 per TB |
| Observability, backups, security, support, Exa | Included | Included |
| Monthly | €6,660 | €9,850, or €13,970 with a dedicated Core 48 Max primary |
Even the resilient layout with a dedicated database server is about 30 percent less than the cloud bill, and it comes with more compute, far more I/O, and an operations team. The minimal layout is a third of the cost and suits teams who accept a short failover window.
What you give up
- Elasticity by the minute. Dedicated servers scale by adding a server in 48 hours, not an instance in 48 seconds. Most SaaS load is predictable enough that this does not matter; bursty batch workloads may want to stay in the cloud.
- Proprietary managed services. If your product is built on a hyperscaler's queue, search or AI service, moving it is a rewrite. Open equivalents exist for almost all of them.
- Multi-region in a click. Infraexa is Germany and Finland. If you need an active region in another continent, you need a different conversation.
How the migration goes
- Week 1: inventory the services, measure real utilisation, choose the layout. Infraexa delivers the servers and the platform.
- Week 2: deploy the application to the new cluster from the same repositories; run it against a copy of the database.
- Week 3: set up database replication from the cloud primary to the new primary; test the failover.
- Week 4: cut over traffic at a quiet hour with DNS at a low TTL; promote the new database; keep the cloud environment for a week as a fallback.
- Week 5: decommission, and watch the final cloud invoice arrive.
The honest comparison
Clouds are extraordinary for variable workloads and for breadth of services. For a steady SaaS workload, they are an expensive way to rent a fraction of a server, and the egress and managed-service margins compound. Dedicated hardware with operations included gives most product teams more capacity for less money and fewer things to worry about.
Packages mentioned.
- Core 48Core
48 Zen 4 cores, 256 GB and fast NVMe for your main application tier.
- CPU
- 48 cores / 96 threads
- Memory
- 256 GB DDR5 ECC
- Storage
- 2 × 3.84 TB NVMe (mirrored)
€2,540per month - Core 48 MaxCore
512 GB of memory and 30 TB of NVMe for in-memory data and large databases.
- CPU
- 48 cores / 96 threads
- Memory
- 512 GB DDR5 ECC
- Storage
- 2 × 15.36 TB NVMe (mirrored)
€4,120per month - Cluster 3Cluster
Three 48-core nodes on a private network with highly available Kubernetes and Postgres.
- CPU
- 144 cores / 288 threads total
- Memory
- 384 GB DDR5 ECC total
- Storage
- 6 × 1.92 TB NVMe total
€9,850per month
Comparisons.
Keep reading.
Managed vs unmanaged dedicated servers: the true monthly cost
A line-by-line comparison of what a bare dedicated server costs once monitoring, backups, security tooling and engineer time are added.
Read the guideKubernetes on bare metal: a three-node high-availability design
How to build a production Kubernetes cluster on three dedicated servers: control plane, storage, networking, ingress and the operations that keep it running.
Read the guideTell us what you run. We will tell you what it costs to run it properly.
A quote within one business day, from an engineer rather than a sales script. No setup fee, three-month minimum, delivery in 48 hours.