craigthompson.dev

$ cat case-studies/aws.md

Nothing public but the CDN

// aws architecture · 2021 → 2026

Nothing public but the CDN

I led the platform’s move from containers on EC2 hosts behind a public load balancer to Fargate tasks that talk over , with all customer traffic entering through CloudFront and WAF. Each step shipped without a big-bang cutover.

before · ~2020
  1. Internet
  2. Public load balancer · internet-facing
  3. ECS on EC2 hosts · hosts to patch
  4. Database via VPC peering
Operator access: SSH bastion
after · 2026
  1. Internet
  2. CloudFront + WAF · the only public entry
  3. Internal load balancer · private
  4. Fargate · Service Connect · no hosts
  5. Database via PrivateLink
Operator access: SSO + SSM, no SSH
How it evolved: hosts to patch → no hosts at all
  1. ECS on EC2 hosts
  2. capacity autoscaling
  3. awsvpc networking
  4. Fargate rollout
  5. Fargate + Service Connect
# in practice
  • No servers to patch: every service runs on Fargate.
  • The attack surface is one CDN. WAF moved to blocking only after a 14-day shadow run showed no legitimate traffic would be stopped.
  • Each service receives only the events it handles, using subscription filters generated from its code at build time.
  • Dev environments share one networking stack and one database cluster, so a new environment is cheap to stand up.

# terms used

ECS Service Connect
An AWS feature that lets services in a container cluster find and call each other, with traffic metrics built in.

$ ls case-studies/

Search and jump