Cloud cost engineering

Cost of running a single web app on each provider

Same Rails/Django/Node web app: 2 web instances + Postgres + Redis + 500 GB egress. Real 2026 list prices across 7 providers.

cloudprice editorial ~3 min read

Most "cloud hosting cost" articles compare a single bare VM, which is misleading. A real production web app is a small system: app instances, a database, a cache, a CDN, monitoring, backups. Let's price one such system across all seven providers in the cloudprice catalogue.

The workload spec

  • Stateless web app (Rails / Django / Node / etc) — 2 × small instances (2 vCPU, 4 GB RAM) behind a load balancer
  • Postgres 16 — small managed or self-hosted (2 vCPU, 4 GB RAM, 100 GB SSD)
  • Redis cache — 1 GB
  • 500 GB / month outbound traffic
  • 50 GB object storage (uploaded user assets)
  • Daily backups
  • Monitoring / logs (basic)

This profile fits ~95% of small SaaS, internal tools, and side projects.

AWS — managed everywhere

  • 2 × t4g.small (2 vCPU ARM, 2 GB): $0.0168 × 2 × 730 = $24.53
  • 1 × t4g.medium for headroom: $0.0336 × 730 = $24.53 (skip, use the two smalls)
  • ALB: ~$22/month
  • RDS db.t4g.small Postgres: ~$50/month
  • RDS storage 100 GB gp3: $11
  • RDS backups (free up to storage size)
  • ElastiCache cache.t4g.micro Redis: $13/month
  • 500 GB egress @ $0.09 (after 100 GB free) = $36
  • S3 storage 50 GB: $1.15
  • CloudWatch + logs: ~$20/month
  • NAT gateway: ~$35/month (one AZ)

AWS total: ~$213/month.

With 3-year Compute Savings Plan + RIs: ~$160/month.

GCP — managed equivalent

  • 2 × e2-small (2 vCPU shared, 2 GB): $0.024/hour × 2 = $35/month
  • Cloud Load Balancing: ~$25/month
  • Cloud SQL db-custom-2-4096 Postgres: ~$80/month
  • Memorystore Basic 1 GB Redis: $40/month
  • 500 GB egress @ $0.12 (after 200 GB free) = $36
  • Cloud Storage 50 GB: $1.30
  • Cloud Logging: ~$5/month (free up to 50 GB)

GCP total: ~$220/month.

Azure — managed equivalent

  • 2 × Standard_B2s (2 vCPU, 4 GB): ~$60/month
  • Standard Load Balancer: ~$18/month
  • Azure Database for PostgreSQL Flexible Server Standard_B2s: ~$120/month with HA
  • Azure Cache for Redis Basic C1: $40/month
  • 500 GB egress @ $0.087 = $35
  • Blob Storage 50 GB Hot: $1/month
  • Log Analytics: ~$5/month

Azure total: ~$280/month. Most expensive of the hyperscalers.

Hetzner — self-host everything

  • 2 × CPX21 (3 vCPU AMD, 4 GB, 80 GB NVMe): 2 × €5.83 = €11.66 (~$12.50)
  • Hetzner Load Balancer (LB11): €5.39 (~$5.80)
  • 1 × CPX21 for Postgres + Redis (could combine into one box at this scale): €5.83 (~$6.30)
  • Backups (20% of VM cost): ~€3.50
  • Object Storage (1 TB included with the bucket fee): €5.39
  • Egress: free under 20 TB

Hetzner total: ~$36/month (~€33).

Operationally: you run Postgres + Redis yourself. For a workload this size, that's 2-4 hours/month.

DigitalOcean — managed where it counts

  • 2 × s-2vcpu-4gb-amd: 2 × $24 = $48/month
  • Load Balancer: $12/month
  • Managed Postgres Basic (1 vCPU, 1 GB shared CPU — needs upgrade to dedicated 2 vCPU): $60/month
  • Managed Redis 1 GB: $15/month
  • 500 GB egress: $0 (well under 5 TB included with droplets)
  • Spaces (object storage) 50 GB: $5/month base
  • Snapshot backups: $1.20

DO total: ~$141/month.

Vultr — managed-but-cheap

  • 2 × vc2-2c-4gb (2 vCPU, 4 GB): 2 × $24 = $48/month
  • Vultr Load Balancer: $10/month
  • Managed Postgres (Vultr Cloud Compute + manual): $24 for a 2nd VM
  • Self-hosted Redis on the same box
  • 500 GB egress: $0 (included)
  • Object Storage 50 GB: $1.50/month
  • Backups: $4.80 (20% of VM cost)

Vultr total: ~$90/month.

Linode — managed Postgres, self-hosted Redis

  • 2 × Linode 4 GB (1 vCPU, 4 GB): 2 × $24 = $48/month — note Linode 4 GB only has 1 vCPU, need to step up to dedicated
  • 2 × Dedicated CPU 4 GB: 2 × $36 = $72/month
  • NodeBalancer: $10/month
  • Managed Postgres Cluster (smallest): $60/month
  • Self-hosted Redis on one of the dedicated boxes
  • 500 GB egress: free (well within 4 TB allocation per dedicated VM)
  • Object Storage 50 GB: $1/month
  • Backups: $5/month for the worker VMs

Linode total: ~$148/month.

Summary table

ProviderList $/month1-year discountSetup style
AWS$213$170Managed everything
GCP$220$170Managed everything
Azure$280$220Managed everything
Hetzner$36$36Fully self-hosted
DigitalOcean$141$141Managed PG + Redis
Vultr$90$90VMs + manual PG
Linode$148$148Managed PG + DIY Redis

The "developer experience" weighting

This pure-cost view ignores the time tax. AWS's managed services (RDS auto-backups, ALB health checks, CloudWatch dashboards) save engineer-hours. DigitalOcean's developer experience is famously clean and saves time during setup.

If you value engineering time at $100/hour and the time delta between Hetzner and DigitalOcean is 5 hours/month, the effective cost gap shrinks from ~$100/month to ~$50/month. Still in DO's favour for many teams.

For a side project or boot-strapped product where the founder is also the operator: Hetzner wins outright. For a small team with one senior infra engineer: DigitalOcean or Vultr. For a growing SaaS with a dedicated devops/SRE: any of them, but the hyperscalers are paying for compliance and ecosystem rather than raw capability.

The "what about Cloudflare" answer

For a minimal modern web app, the cheapest viable architecture in 2026 is genuinely:

  • Vercel / Cloudflare Pages for static + edge functions: $0-20/month
  • Neon or Supabase for Postgres: $0-25/month
  • Upstash for Redis: $0-10/month
  • Cloudflare R2 for assets: $0-5/month

Total: $0-60/month with zero operations. For early-stage apps, this is hard to beat.

The catch: the moment you outgrow free tiers and hit serious traffic, the per-request pricing models can spike unpredictably. The "cloud serverless lock-in tax" is real at scale.

For instance-level pricing comparison across these seven providers see the cloudprice main table. To run your own workload through a TCO calculation, the TCO calculator handles compute + storage + egress.

Try it yourself
Compare list prices across all seven providers, side by side. Live snapshot updated regularly.