Skip to content

Latest commit

 

History

History
77 lines (64 loc) · 3.76 KB

COST.md

File metadata and controls

77 lines (64 loc) · 3.76 KB

Chapter 2 Cost Decision: baseline AWS run-rate

Every later comparison in the book (GKE cost, dual-run cost, the final postmortem) is measured against this number. Record the AWS baseline now, before GKE exists.

This is a teardown project, not a standing bill. You'll spin this up, work through the chapters over a few days, then terraform destroy it in Chapter 25: nothing here is designed to run for a full month, and the monthly figures below are a unit of comparison, not a prediction of what you'll actually be charged. Read the daily figure first; it's the one that matters for how you'll actually use this.

# The exit, whenever you want it: costs stop accruing the moment this runs
cd infra/aws/terraform && terraform destroy

Prices below are on-demand, us-east-1, current as of September 2026. Verify against the AWS Pricing Calculator before treating these as gospel, they drift.

Component Spec Daily cost Monthly cost (reference only)
EC2 instance t3.micro (2 vCPU, 1 GiB) ~$0.25 ~$7.59
EBS root volume 20 GB gp3 ~$0.05 ~$1.60
Elastic IP 1 address, attached ~$0.12 ~$3.65
RDS Postgres db.t3.micro, single-AZ, 20 GB gp3 ~$0.80 ~$24.20
Data transfer out low volume, demo traffic ~$0–0.05 ~$0–2
Total ~$1.25/day ~$37–39/month

A weekend spent working through this book, spin up Friday evening, tear down Sunday night, runs somewhere around $2.50-3.50 total. The monthly column exists purely so this number means something comparable later, next to GKE's own cost and the dual-run window in Part 7: it's not what you're actually going to pay.

The line item that catches people off guard

The Elastic IP is not free just because it's attached to a running instance. Since February 2024, AWS charges $0.005/hour for every public IPv4 address, attached or idle, about $0.12/day, whether it's doing anything or not. This used to be free when attached. It isn't anymore, and it applies to EIPs, in-use ephemeral public IPs, load balancers, and NAT gateways alike. Small number over a few days; it's exactly the kind of line item this book's cost thread exists to catch before it multiplies across a real fleet, worth internalizing now, not discovering later.

What's deliberately NOT here

  • Multi-AZ RDS, would roughly double the database line. The legacy system doesn't have it. That's not an oversight; it's realistic, and it's part of what makes "the database stays on AWS" in Chapter 4 a real risk worth naming, not a formality.
  • Detailed (1-minute) CloudWatch monitoring, off by default in the Terraform (detailed_monitoring = false). Turning it on costs more for metrics resolution this system doesn't need yet.
  • A load balancer, nginx on the instance terminates TLS instead. An ALB would add its own hourly cost and its own public IP charge, for a single-instance system that doesn't need load balancing yet.

None of these are "wrong", they're the kind of trade-off a real small team makes, and they're exactly what a proper GKE architecture (Chapter 7 onward) gets to do differently on purpose, with reasons, rather than by default.

Using this number later

  • Chapter 6, Cost Ledger entry 1 references the daily figure directly , the running ledger tracks in days, not months, for the same reason this file leads with days.
  • Chapter 4's migration budget should be sized against this, what's the dual-run window allowed to cost, as a multiple of this daily rate, before Chapter 24's rollback-retention deadline forces a decision.
  • Chapter 27's cost postmortem closes the loop: did the migration actually beat this baseline, and by how much, once GKE's real bill came in and the whole thing got torn down.