L81 — Incident Management & Postmortem

Ba mô phỏng tương tác: (1) Error budget calculator — kéo SLO xem downtime cho phép & budget burn; (2) Incident timeline — Detect → Triage → Mitigate → Resolve → Postmortem; (3) 5 Whys — đào root cause từng tầng.

Module 1 — Error budget calculator

Kéo SLO để thấy downtime cho phép mỗi tháng (30 ngày = 43200 phút). Kéo "downtime đã dùng" để xem budget cạn dần — khi vượt budget thì freeze feature. Khớp công thức README mục 2-3: downtime = (1 − SLO) × 43200.

SLO = 99.900%
20 phút
Budget downtime
43.2 phút/tháng
Còn lại
23.2 phút
Downtime/năm
8.8 giờ
đã dùng 46% budget
Còn nhiều budget → ship feature thoải mái.

Module 2 — Incident timeline

Bấm "▶ Chạy incident" để xem một sự cố đi qua 5 giai đoạn. Chú ý: Mitigate (cầm máu) đến TRƯỚC Resolve (sửa gốc) — rollback đưa user về trạng thái tốt rồi mới điều tra (README mục 5, 8).

14:00
📟
Detect
Alert error rate > 50% page on-call.
🏷️
Triage
Gán SEV1, chỉ định IC, kéo Ops + Comms.
🩹
Mitigate
Rollback v2.3 → v2.2. User hết bị 500.
🔧
Resolve
Điều tra nil-pointer, fix + test, deploy v2.4.
📝
Postmortem
Blameless: timeline + root cause + action items.
Bấm "▶ Chạy incident" để bắt đầu mô phỏng.

Module 3 — 5 Whys (root cause drill-down)

Incident: "API trả 500 hàng loạt". Bấm "Hỏi tại sao tiếp" để đào từng tầng — mỗi câu trả lời là nguyên nhân của tầng trên, tới khi chạm nguyên nhân hệ thống/process (không dừng ở triệu chứng). Khớp README mục 10.1.

Tầng 0 / 5
🎯 ROOT CAUSE: thiếu chuẩn/process kiểm tra input từ dependency bên ngoài.
  • Prevent: nil-check + giá trị mặc định cho mọi external response.
  • Detect: test case "response thiếu trường"; alert burn-rate.
  • Process: thêm "validate mọi external response" vào review checklist.
Lưu ý: KHÔNG dừng ở Why 1 ("fix bug") — đào tới vì sao class lỗi này tồn tại.