Skip to content
← Back to blog
Teardowns · 10 min read

AWS Cost Shock: How $100 a Month Becomes $10,000

AWS starts small and seems scalable. Two years later, your bill is $8,000/month. We show you how it happens and what to do instead.

Almost every startup uses AWS. It starts innocuously: a small EC2 instance, a database, some S3 storage. Your first month bill: $50.

You think: great, we can scale on AWS. We only pay for what we use.

Two years later, you open an AWS bill and see $8,000 for the month.

You have no idea where that bill came from. Nobody intended to spend $8,000. It crept up silently over months of ignored resource creep, misconfigured auto-scaling, and abandoned services running in the background.

How AWS Bills Explode (Real Examples)

Scenario 1: Database Backup Explosion

You set up automated database backups. They run every hour. Each backup is 50GB. You keep them for 30 days.

That's 50GB × 24 backups/day × 30 days = 36,000GB stored = 36TB = $800/month in S3 storage alone. You didn't know. It just happened.

Scenario 2: Data Transfer Costs

You host your app in us-east-1. Your database in us-west-2. AWS charges $0.02 per GB for data transfer between regions. Your app transfers 10GB per day.

That's 10GB × 30 days × $0.02 = $6/day = $180/month. Times three (your app, your cache, your backups) = $500+ per month just for inter-region traffic.

Scenario 3: NAT Gateway Costs

Your private subnet needs to reach the internet (to call external APIs). You use a NAT gateway. AWS charges $0.045 per hour ($32/month) plus $0.045 per GB processed.

Your app processes 100GB/month through the NAT gateway. That's $32 + (100 × 0.045) = $32 + $4.50 = $36.50/month. Seems fine alone. But multiply it across 10 services, 10 regions = $3,650+ per month.

Scenario 4: The Load Balancer Trap

You set up a load balancer because "we need high availability." Load balancers cost $16.43/month per load balancer plus $0.006 per LB capacity unit (LCU).

You have 5 load balancers across services = $82/month. Plus LCU charges for traffic = $50/month. Seems okay. But now every engineer spins up new load balancers for testing. You have 20 load balancers running. Cost: $400+ per month for something you're barely using.

The Real AWS Cost Breakdown (For a Typical Startup)

ServiceExpectedActual (With Waste)
EC2 (compute)$500/month$2,000 (over-provisioned instances left running)
RDS (database)$300/month$1,200 (test databases never deleted)
S3 (storage)$100/month$800 (backup proliferation, unoptimized storage classes)
Data Transfer$100/month$1,500 (inter-region traffic, unoptimized routes)
NAT Gateways$0 (if you plan correctly)$400–$800 (misconfigured subnets)
Load Balancers$100/month$400 (abandoned test load balancers)
CloudFront (CDN)$200/month$1,000 (data transfer to CDN not optimized)
Expected Total$1,300/month$8,100/month

You planned for $1,300/month. You're paying $8,100. That's 6x.

Why AWS Costs Spiral (The Business Model)

AWS's business model depends on customers not understanding their bills.

  • Pricing is opaque. EC2 has 500+ instance types. Each has different pricing in different regions. Most companies can't optimize because they don't know what they're paying for.
  • Every service has hidden costs. The EC2 cost is the headline. But data transfer, NAT gateways, backup storage—these are separate line items that add up.
  • Default configurations are wasteful. AWS's default setup is not optimized for cost. It's optimized for availability and simplicity. That costs money.
  • There's no enforcement of cost discipline. Engineers spin up resources without thinking about costs. The bill arrives 30 days later when it's too late.

What You Should Do

Option 1: Use AWS, but be disciplined

  • Set up CloudWatch billing alerts ($1,000/month threshold, escalate to CTO)
  • Use AWS Cost Explorer to see what's costing money
  • Reserve instances for predictable workloads (30% discount)
  • Auto-scale aggressively down (don't leave instances running 24/7 if unnecessary)
  • Clean up test resources monthly

Option 2: Use a simpler, cheaper platform

  • Heroku: $50–$500/month. Higher unit cost but much simpler. No unexpected bills. Good for <$5K/month traffic.
  • DigitalOcean: $5–$100/month. Simpler than AWS, predictable pricing. Good for startups under Series A.
  • Railway or Render: Modern alternatives. Pay-as-you-go but with simpler billing than AWS.
  • Hetzner or Linode: Fixed pricing. No surprises. Less integrations than AWS but much cheaper.

Option 3: Hybrid approach

  • Use Heroku or Railway for your main app ($500/month predictable)
  • Use AWS only for specific needs (big data, machine learning, complex integrations)
  • Cap your AWS spend at $1,000/month with hard limits

The Cost Comparison

PlatformTypical CostPredictabilityWhen to Use
AWS (disciplined)$2,000–$5,000/monthUnpredictable without managementSeries B+ or complex infrastructure
Heroku$200–$2,000/monthHighly predictableStartups, <10 engineers
DigitalOcean$100–$500/monthVery predictableSide projects, bootstrapped startups
Linode / Hetzner$50–$300/monthExtremely predictableSmall teams, fixed capacity needs

The SaaSKiller Take

AWS bills grow 10x without anyone intending it to. Backup storage, data transfer, NAT gateways, abandoned resources—costs spiral silently.

For most startups <Series A: use Heroku or DigitalOcean. Fixed costs. No surprises. Move to AWS only when you have engineers dedicated to optimizing it. Don't let AWS convince you that "pay for what you use" is cheaper. For you, it's 5-10x more expensive than simpler alternatives.

AWSCloud ComputingCost ExplosionInfrastructure
Related

Paying for one of these?

Type it into the calculator, see three years of rent, send the list.

Kill my SaaS