pa-09 — Analysis

What the engine must get right

  1. Error budget = 1 − target; burn rate = errorRate / budget.
  2. Multi-window alert: PAGE only when long AND short windows exceed the page threshold; TICKET on slower sustained burn; never page a blip.
  3. Bulkhead isolation: a full bulkhead rejects; independent dependencies don't interfere.

Design decisions

  • Burn rate, not raw error rate. Normalizing by the budget makes the number comparable across services and ties directly to "time to exhaustion," which is what you alert on.
  • Conjunction (long AND short) to page. The long window kills blip-paging; the short window auto-resolves the alert after recovery. This is the single most important alerting design choice.
  • Float tolerance in tests. 1 − target isn't exact; comparisons use an epsilon — the correct way to test floating-point math.
  • Bulkhead = non-blocking semaphore. Reject-not-queue (fail fast) so a saturated dependency doesn't build an unbounded queue (the gw-06 lesson).

Tradeoffs worth flagging

  • SLO target vs cost/velocity. Higher targets cost exponentially and shrink the error budget (less room to ship). Pick what users need, not the max.
  • Window sizes vs detection speed. Short long-windows page faster but risk blips; long ones are robust but slow. Production uses several pairs at different thresholds to balance.
  • Bulkhead sizing. Too small starves a healthy dependency; too large fails to isolate. Size to the dependency's healthy concurrency, like a pool (gw-04).
  • Symptom vs cause alerting. Page on SLO burn (user impact); route cause metrics to dashboards. Mixing them causes fatigue.

What production adds beyond this lab

  • Rolling time-window SLI computation from real metrics (gw-11), multiple burn-rate/window pairs, and an error-budget policy (what freezes when the budget is gone).
  • Bulkheads + breakers + adaptive concurrency + timeouts composed per dependency (gw-06), with criticality-aware shedding and degradation.