fivenines
16/38
Lesson 1.14 99.9%

Recap: what 99.9% buys — and what breaks

🔗 Connect

This is a consolidation lesson — pure germane load. Nothing new: we replay Part 1 as one picture and one honest failure inventory, which becomes Part 2's to-do list.

You now have a complete ride exchange: onboarding through matching through money through reporting, running in one region across three zones, watched by symptom alerts and a human rotation. Its availability story: instance and zone failures self-heal; database failover takes minutes of human action; everything else is on-call plus runbooks inside a 43-minute monthly budget. That story is legitimate — and it has a ceiling. The honest failure inventory:

FailureAt 99.9% todayBudget damage (30 d = 43 m 50 s)Fixed in
Instance or zone lossAutomatic re-route, secondsNegligible
Database primary diesHuman failover, 5–10 min~20% of budget per event2.3
Bad deploy ships a bugRolling deploy spreads it everywhere; rollback after detection10–30 min — most of the budget2.8
Downstream vendor (PSP, maps) browns outRequests hang or fail; manual mitigationDepends on their SLA — coupled fate2.6
Traffic spike (concert, storm)Autoscaling may lag; overload cascadesUnbounded2.6
One service's failure cascades via sync callsNothing stops itUnbounded2.4, 2.6
Region failureTotal outage until region returnsHours — years of budget2.7, 3.2
flowchart TB
  P1["Part 1 system — one region, humans in the loop"] --> W1["Self-healing: instances, zones"]
  P1 --> W2["Human-healing: DB failover, bad deploys, vendor issues"]
  P1 --> W3["No healing: region loss, cascades, overload"]
  W2 --> M2["Minutes each — budget survives a bad month, barely"]
  W3 --> M3["Hours — one event exceeds a year of budget"]
  M2 --> P2["Part 2: automate detection + recovery, contain failures"]
  M3 --> P2
Part 1's ceiling in one picture. Everything humans heal must become automatic; everything unhealed must become survivable. That sentence is Part 2.
Next step

See what actually stuck.

Take the practice scenarios now.