Part 0 · 1 chapters · ~8 min

Anatomy of a Production Request

One request from a phone through DNS, CDN and WAF, load balancer and gateway, the app, cache, database and queue, with what each box does, what fails there, and which later part covers it.

1

Every box, in order

boxjobtypical producttypical failure
DNSname to edge addressRoute 53, Cloudflare DNSbad record, long TTL during failover
CDN / WAFTLS, caching, attack filteringCloudflare, CloudFront, Fastly, AkamaiWAF false positives, cache of private data
load balancerspread across healthy instancesALB, NLB, HAProxy, Envoyidle timeout mismatch (502s), unhealthy targets
API gatewayauth, rate limits, routing, transformationKong, Apigee, AWS API Gatewaya bad route config takes everything down
appbusiness logicyour servicebugs, blocked threads, memory
pooler + databasedurable statePgBouncer + Postgresconnections, locks, slow queries
cachefast reads, ephemeral stateRedisstampedes, eviction, stale data
queue + workersslow and retryable workSQS, RabbitMQ, Kafka + workersbacklog growth, poison messages
ONE REQUEST, END TO END
a mobile app tapping "send money", through every box in a typical production stack
phoneDNSCDN / WAFLB / gatewayapp podRedisPostgresqueueapi.bank.com?edge IP (GeoDNS / anycast)
swipe the figure sideways, or tap expand for full screen
1/5
resolve
DNS returns the address of the nearest edge (GeoDNS or an anycast IP). TTLs decide how fast traffic can move during an incident.
DNS points at the edgeTTL controls failover speed