Home › Cloud services › Choosing
guide medium

Cloud providers compared

Problem Choosing where to host a new system, or checking whether the current cloud bill is out of line. This guide answers which kind of provider (hyperscaler, commodity, specialist) fits which workload.

AWS, GCP and Azure sell breadth and managed services; Hetzner, OVH, Cloudflare and neoclouds sell raw compute, bandwidth or GPUs at a fraction of the price.

awsgcpazurehetznercloudflarepricingegress
Overview

Two kinds of cloud exist. Hyperscalers (AWS, GCP, Azure) rent hundreds of managed services, global regions and compliance paperwork, and charge a premium on compute and a large one on bandwidth. Commodity providers (Hetzner, OVH, Scaleway, DigitalOcean, Vultr) rent servers and bandwidth at 3-10x lower prices with few managed services. Specialists sit beside both: Cloudflare for edge and zero-egress storage, neoclouds (CoreWeave, Lambda, RunPod) for GPUs.

Key facts

Use when

  • Picking a home for a new system, or checking whether the current bill is out of line.

Avoid when

Deep dive

The landscape

TierProvidersStrengthWeakness
HyperscalerAWS, GCP, Azure200+ managed services, 30+ regions, IAM, compliance (SOC 2, HIPAA, FedRAMP)Price of compute and egress, complexity of the bill
Commodity cloudHetzner, OVHcloud, Scaleway, DigitalOcean, Vultr, Akamai (Linode)3-10x cheaper compute, bundled trafficFew managed services, fewer regions, smaller quotas
Bare metalHetzner dedicated, OVH, Latitude.sh, Equinix-style colocationLowest cost per core and per TB, full NVMe speedYou own hardware failures, slower provisioning
Edge platformCloudflare, Fastly, Bunny, Vercel/Netlify on topGlobal PoPs, cheap or free bandwidth, Workers/edge functionsLimits on CPU time, memory, runtime APIs
GPU neocloudCoreWeave, Lambda, RunPod, Vast.ai, Nebius, CrusoeGPUs at 2-4x below hyperscaler on-demandCapacity varies, thinner networking/storage services

Price orders of magnitude (2026-ish, on demand, check the pricing page)

ItemAWS / GCP / AzureHetzner / OVHCloudflare
2 vCPU / 8 GB VMorder of $60-80/monthorder of €8-20/monthn/a
16-core dedicated server, 64-128 GB, 2x NVMeorder of $500-900/month as VMorder of €60-150/monthn/a
Object storage$0.020-0.026/GB-monthorder of €5-6/TB-monthR2 $0.015/GB-month
Internet egress$0.08-0.12/GB (first 100 GB/month free on AWS)bundled TBs, then about €1/TB$0 (R2, CDN)
Cross-zone traffic$0.01/GB each way (AWS, Azure similar)free inside a locationn/a
Managed Postgres, 2 vCPU / 8 GB, HAorder of $250-350/monthself-run, or small managed offersD1 (SQLite) only
H100 GPU-hourorder of $4-8raren/a

Rule of thumb: 1 TB served from a hyperscaler costs about $90; the same terabyte from a Hetzner server is inside the bundle.

Decision table

SituationChoiceWhy
Startup, small team, needs managed DB, queues, auth fastOne hyperscaler, one regionManaged services save engineer time, which costs more than the premium at small scale
Steady load, > ~$5k/month compute, team can run LinuxHetzner/OVH VMs or bare metal3-10x lower, predictable bill
Serves many TB/month (video, downloads, game patches)Cloudflare/Bunny CDN in front, R2 or bare metal originEgress at $0.09/GB dominates everything else
Enterprise customers ask for compliance attestations, VPC peering, private linksHyperscaler (where the customer is)Contracts and procurement, not tech
GPU training or batch inferenceNeocloud or spot GPUs2-4x cheaper per GPU-hour
Latency-critical global API (< 50 ms everywhere)Edge platform + regional originsPoPs within ~20 ms of most users
Data residency in the EUEU region of any provider; EU providers ease legal reviewGDPR and Schrems II reviews
Spiky load, idle most of the dayServerless on a hyperscaler or Cloudflare WorkersPay per request, scale to zero

Code

Price a workload before choosing; egress and storage usually decide it.

/// Rough monthly cost model; plug in the current pricing-page numbers.
fn monthly(vms: f64, vm_price: f64, egress_tb: f64, egress_per_gb: f64,
           included_tb: f64, storage_tb: f64, storage_per_tb: f64) -> f64 {
    let egress = (egress_tb - included_tb).max(0.0) * 1000.0 * egress_per_gb;
    vms * vm_price + egress + storage_tb * storage_per_tb
}

fn main() {
    // 10 VMs, 50 TB/month served, 20 TB stored (order-of 2026 prices)
    let hyperscaler = monthly(10.0, 140.0, 50.0, 0.085, 0.0, 20.0, 23.0);
    let hetzner = monthly(10.0, 30.0, 50.0, 0.001, 10.0 * 20.0, 20.0, 6.0); // 20 TB included per server
    println!("hyperscaler ~${hyperscaler:.0}/month, hetzner ~${hetzner:.0}/month");
    // hyperscaler ~$6110/month, hetzner ~$420/month
}

Efficiency

  • Cost: the meters are VM-hours, GB stored and GB sent to the internet; for bandwidth-heavy products egress dominates. Hetzner EU cloud servers include 20 TB of traffic per month (Hetzner traffic docs) and R2 has no egress bandwidth charge (R2 pricing), both as of 2026-10. Other prices on this page are order of. Bound: egress price, not CPU.
  • Levers:
    • serve downloads from zero-egress storage or a bundled-traffic server — removes the per-GB line (R2 pricing; Hetzner traffic docs) — bandwidth-heavy products
    • commitments on the steady floor — up to 72 % off covered compute (AWS Savings Plans User Guide) — steady base on a hyperscaler
    • spot for interruptible work — up to 90 % off (AWS Spot Instances page) — batch, CI, rendering
    • keep chatty traffic in one region and zone — cross-region and cross-cloud transfer is billed as egress (order of) — replicas, pipelines
    • commodity bare metal for steady cores — 3-10x lower per core (order of, price lists in Sources) — teams that can run Linux
  • Naive → standard → state of the art:
    • everything on one hyperscaler at on-demand list price · baseline
    • commitments on the floor, spot for batch · up to 72 % / 90 % off the covered part
    • hyperscaler control plane, commodity compute, CDN or zero-egress storage for the heavy bytes · egress line near zero

Implementation notes

  • Hybrid is normal: hyperscaler for managed control-plane pieces (auth, DNS, small DB), commodity servers for heavy compute and bandwidth. Put a VPN (WireGuard) or the provider's private network between them.
  • Pick the region next to your users and your data; cross-region and cross-cloud transfer is billed as egress.
  • Hyperscaler "free tier" and startup credits hide the real run-rate; model the post-credit bill on day one.
  • Quotas: new accounts on every provider start with low vCPU/GPU limits. Request increases before launch.

Pitfalls

  • NAT gateways: order of $0.045/GB processed on AWS on top of egress; a chatty service pulling images through NAT can cost more than its VMs.
  • Public IPv4 addresses are billed on AWS (about $3.6/month each since 2024).
  • Cross-AZ replication traffic of a database or Kafka cluster is billed both ways and is often the largest line item.
  • Commodity providers can lock accounts on abuse reports or failed KYC; keep backups and DNS outside the provider.
  • Comparing list prices only: hyperscaler commitments and spot change the answer for steady fleets.

Implementations

namelangrepoinstallverdictlicencehealthas_ofnotes
InfracostGoinfracost/infracostbrew install infracost————cost estimate from Terraform plans
OpenCostGoopencost/opencostn/a (Kubernetes install via Helm, see docs)————cost allocation for Kubernetes
Hetzner Cloud CLI (hcloud)Gohetznercloud/clibrew install hcloud————create and manage Hetzner servers
AWS CLIPythonaws/aws-clin/a (installer per AWS docs)————cost and usage queries from the shell

Sources

  • AWS, Amazon EC2 On-Demand Pricing and EC2 Data Transfer pricing (web pages). pricing
  • Hetzner Online, Cloud and Dedicated Root Server price lists (web pages). cloud · dedicated · traffic
  • Cloudflare, R2 pricing (web page). pricing
  • Sarah Wang and Martin Casado, The Cost of Cloud, a Trillion Dollar Paradox, Andreessen Horowitz, 2021. post

Builds on

Alternatives and related