The most expensive line in a mid-size Azure bill is often the one nobody budgeted: data transfer out. At roughly €0.09–€0.13 per gigabyte, a workload pushing 2 TB a month pays €180–€260 a month for bandwidth alone — before a single VM, database, or managed service enters the picture. On Hetzner, that same 2 TB costs exactly zero, drawn from the 20 TB of included monthly traffic on each cloud instance.
That single line item is the engine behind the European hyperscaler exit wave that Gart Solutions documents in its 2026 From Azure to Hetzner guide. The guide frames the migration as cost, control, and compliance, and backs it with a WZ-IT case study, a side-by-side comparison table, and a zero-downtime playbook. But switcher guides are written by companies that sell migrations, so the right question is sharper: which parts of the checklist transfer directly to a real migration runbook, and what does the guide gloss over?
The short answer, with numbers first. A typical small Azure stack — two modest VMs, a managed database, a terabyte of object storage, and 2 TB of egress — runs about $354 a month; the equivalent Hetzner rebuild lands around €20–€25 a month, a ~93% cut driven overwhelmingly by the bandwidth line going to zero (Gart's AWS-to-Hetzner teardown models the same shape). At larger scale, one team documented a $4,200-a-month AWS bill collapsing to $470 a month on Hetzner plus Cloudflare plus Backblaze — $22,380 saved in six months, an 89% cut (CodePulse, January 2026).
Those savings are real and repeatable, but only under conditions the guides print in smaller type — steady usage, no deep managed-service entanglement, and a team willing to own operations again. This post reads the switchers' guide the way a PaaS migrator should: verifying what it gets right, pricing what it glosses, and pulling out the runbook that survives both.
The €200-a-month line item hiding in your Azure bill
Start with egress forensics, because that is where every honest exit analysis starts. Azure includes 100 GB of outbound traffic a month, then charges $0.087 per GB in North America and Europe (Zone 1), with higher zone rates up to $0.16–$0.18 per GB in Asia-Pacific and beyond.
Independent pricing surveys from September 2026 confirm the $0.087 Zone 1 figure and a blended $0.08–$0.12 per GB that most European teams actually model against (Aleksei Aleinikov's 2026 comparison). Gart's €0.09–€0.13 range is the same number in euros with zone variance. It checks out.
The guide's second claim — that data transfer alone makes up 20–30% of some monthly bills — also survives contact with real invoices. In the CodePulse teardown, "data transfer out" was $650 of a $4,200 bill (15%), and that stack was compute-heavy; media-rich or replication-heavy workloads skew much higher.
Hetzner, by contrast, ships 20 TB of outbound traffic per instance per month in EU regions, with only nominal per-TB fees beyond that. For bandwidth-heavy products — gaming downloads, SaaS file delivery, streaming — the bandwidth line doesn't shrink after migration. It disappears.
Here is the small-stack shape that makes the argument concrete:
| Resource | Azure-style hyperscaler | Hetzner rebuild |
|---|---|---|
| 2 small VMs | ~$76/mo | ~€13.80/mo |
| Managed database | ~$75/mo (RDS-class) | self-hosted (~€0 incremental) |
| 1 TB object storage | ~$23/mo | ~€2.90/mo |
| 2 TB egress | ~$180/mo | included (€0) |
| Total | ~$354/mo | ~€20–€25/mo |
And the large-stack shape, from a real six-month production run: $4,200 a month (including $650 egress, $380 CloudWatch logs, $220 NAT gateway, and $600 the team couldn't even attribute) down to $470 a month. Note what the big bill reveals beyond egress: the managed-service patchwork — a load balancer here, log ingestion there, a NAT gateway tax on every private-subnet packet — compounds into a second, quieter exit motive. Gart calls it "a patchwork of microcharges," and the unattributable $600 line in a real invoice is the most persuasive evidence in this entire debate.
What the switchers' guide gets right
Three claims in the guide survive verification, plus the wave itself.
1. Egress-bill forensics first. The guide's opening move — audit data transfer before touching a workload — is the correct first step of any exit runbook. Egress is the least elastic hyperscaler cost: you can right-size VMs and delete zombie snapshots, but you cannot negotiate physics on per-GB pricing.
If transfer is under 5% of your bill, the exit math probably doesn't close; if it's over 20%, it almost certainly does. Any migration plan that starts with compute instead of bandwidth is auditing in the wrong order.
2. Managed-service unbundling, mapped explicitly. The guide's service-mapping table is genuinely useful as a planning artifact: App Service becomes Docker containers or Nginx on Ubuntu VMs, Azure SQL becomes self-hosted PostgreSQL or MySQL, Blob Storage moves to S3-compatible object storage, Azure Monitor becomes Prometheus plus Grafana, Functions become containers. The independent WZ-IT migration practice publishes nearly the identical map — Azure SQL to PostgreSQL/MySQL with replication during cutover, Functions to Docker via Coolify or Kubernetes, Blob to S3-compatible storage — which is what convergent validation looks like (WZ-IT's Azure-to-Hetzner practice). When two migration shops that compete with each other agree on the target architecture, the map is probably right.
3. Compliance domicile as the forcing function. Hetzner's EU regions sit in Germany and Finland, under a German-headquartered company — no US-parent-entity guesswork for GDPR-sensitive workloads. And the regulatory backdrop tilted further in June 2026, when the European Commission reached the preliminary position that AWS and Azure should be designated as gatekeepers under the Digital Markets Act — the first time cloud infrastructure entered the EU's strictest competition regime, with egress fees and switching costs explicitly in scope (The Register, June 25, 2026, Tech Times). Cost gets teams interested; domicile plus regulatory tailwind gets compliance officers to sign.
4. The wave is real — named switchers, named numbers. WZ-IT's own Azure-to-Hetzner move — App Services containerized with Docker onto Hetzner Cloud — cut infrastructure costs by over 70% with performance and uptime held steady. The Stonehenge migration replaced Azure managed services with dedicated Hetzner servers running Docker containers for efficiency and cost control (Bitcot case study).
A Dubai real-estate platform's Hetzner migration saves a documented €13,200 a year at 81% savings. And the CodePulse team's 89% cut came with a warts-and-all public ledger, which is worth more than ten vendor case studies. These are not the same anecdote retold; they are independent teams converging on the same 70–90% band. When Gart's own OVH-vs-Hetzner page concedes that hyperscaler egress "typically represents 15–25% of total cloud spend for data-intensive applications," the vendor's own numbers agree with its customers' invoices.
What the guide glosses: the labor bill you re-assume
Now the counter-ledger — the costs that don't appear in the comparison table but absolutely appear in your calendar.
Operations becomes your job again. Hetzner sells servers, not services. Backups go from "click a button" to scripts, cron jobs, and a Backblaze B2 bucket. Monitoring goes from CloudWatch to a Prometheus-plus-Grafana stack you configure yourself.
DDoS protection goes from AWS Shield Standard (free, built in) to Cloudflare in front ($20 a month in the CodePulse case — cheap, but a new dependency you must configure after your load balancer already died once under a modest flood). New Hetzner IPs start with zero email reputation: SPF/DKIM setup plus weeks of warmup before transactional mail stops hitting spam. None of this is hard. All of it is yours now, including the 2 AM discovery that the backup you thought was running wasn't.
There is no managed Kubernetes control plane and no RDS-style failover. This is the deepest gloss. Azure SQL's automated failover, point-in-time restore, and patching become your replication topology, your backup verification, and your 3 AM pages.
Teams that run Kubernetes get k3s or RKE via community tooling — good software, but the control plane's availability is your runbook, not a vendor SLA. WZ-IT is admirably candid here: "not every proprietary feature has a one-to-one replacement," and savings depend on "the future operating model," not just the invoice delta. Price one part-time DevOps hire (CodePulse's own framing: the savings "left us with enough to hire a part-time DevOps person") or a managed-operations contract before declaring victory.
Hetzner's own prices moved in 2026 — twice. A broader adjustment of up to 37% landed April 1, and a second round on June 15 pushed dedicated-vCPU CPX and CCX lines up by as much as 176% (the widely cited CPX22 went from €7.99 to €19.49 a month), while cost-optimized CX and CAX lines rose a milder 33–38% on a DRAM/NVMe price shock. The margin still favors Hetzner decisively for bandwidth-heavy and shared-vCPU workloads, but RAM-heavy dedicated workloads now deserve a fresh quote against Hetzner's own cost-optimized tier, a dedicated root server, or a second EU provider before committing. Any exit model using pre-2026 Hetzner prices is stale; re-run it.
Regions and elasticity set the boundary. Hetzner's footprint is Germany, Finland, the US, and Singapore — not thirty-plus regions. Latency-sensitive global deployments and spiky autoscaling workloads stay on hyperscalers for good reason. Gart's own guide concedes the "when Azure still wins" list: deep managed services, heavyweight compliance certifications, enterprise multi-region scale. Believe that section; it's the most honest page in the genre.
A final sobriety check from the other direction: Q1 2026 saw GCP grow 63% year over year, Azure 40%, and AWS 28% — and at least one analyst argues the memory-and-storage price crisis is reopening the repatriation debate in reverse, as owned-hardware economics absorb the same DRAM shock (TechStrong). The exit wave is real, but it is a selective wave: steady, bandwidth-heavy, EU-domiciled workloads with a team willing to operate them. Everything else is still renting.
The PaaS migrator's runbook: what transfers, what's glossed
Distilled for a team planning an actual exit — or building the platform the exit lands on:
| Checklist item | Transfers from the guide? | The unglossed version |
|---|---|---|
| Egress-bill forensics first | Yes — step zero of the runbook | Under 5% of bill: exit math likely doesn't close; over 20%: it almost certainly does |
| Service unbundling map | Yes — the mapping table is validated | Add the ops owner for every row: who pages for Postgres failover, who verifies backups |
| Compliance domicile | Yes — EU regions as forcing function | DPA plus documented measures; configuration and subprocessors still determine actual posture |
| Zero-downtime cutover | Yes — parallel env, staged traffic, rollback window | Budget the rollback window explicitly; keep Azure infra live until validation completes |
| "70–90% savings" headline | Partially | True on infrastructure invoices; net of one part-time ops hire or managed-ops contract |
| Managed K8s / managed SQL parity | No — glossed | No native control plane, no RDS failover; k3s/RKE plus self-managed replication is the real target |
| 2026 Hetzner pricing | Stale in older guides | Re-quote post–June 15; dedicated-vCPU lines moved up to 176% |
The cutover shape itself transfers cleanly: inventory and map every Azure dependency, build the Hetzner target in parallel, replicate databases and sync object storage incrementally, then shift traffic in stages (10%, 50%, 100%) with the old environment warm and a defined rollback point. WZ-IT prices that scoped migration work from €1,990 excluding VAT — a useful anchor for "hire the cutover" versus "DIY it over weekends." Either way, lower DNS TTLs before the switch and validate checksums, not vibes.
Why the exit wave is a demand signal for self-hosted PaaS
Step back from the invoice math and notice what the switchers actually build on the other side: Docker containers on Ubuntu VMs, Prometheus and Grafana, Terraform and Ansible, Coolify or Kubernetes for the deploy path. Every successful exit story ends with the team hand-rolling a small, private platform — a to-do list that reads exactly like a PaaS feature backlog with worse documentation.
That is the demand signal. "European companies are switching" doesn't mean they want a second hyperscaler with a different logo; it means they want the deploy-from-git, automatic-TLS, push-and-it-runs experience without the per-GB meter running. The migration guides stop at "here are your VMs, good luck with the YAML." The gap between a Hetzner account and a Heroku-like workflow is precisely a self-hosted PaaS: the box is cheap and sovereign, and the platform layer that makes the box feel like a cloud is the missing product.
So read the switchers' guide twice. Once as a cost teardown — the egress math is right, the unbundling map is validated, the compliance forcing function is strengthening. And once as a bill of materials for what comes next: every team that exits needs container orchestration, managed Postgres semantics, observability, and zero-downtime deploys on hardware they own. Build that layer once, in the open, and the exit wave stops being a series of heroic weekend migrations and starts being an onboarding funnel.
Bex.co is the open-source, AI-native Render alternative — push a git repo, get a running HTTPS service on machines you own. Star the repo on GitHub or deploy your first app today.



