[SEV] Krótki opis i data
1) Zasady i kultura
Nienaganny. Błąd jest własnością systemu, a nie osoby. Szukamy „dlaczego to się stało”, a nie „kto jest winny”.
Fakty i niezmienne. Wszystkie wyjścia są oparte na linii czasowej, SLO, śladach i dziennikach.
Reklama w firmie. Sumy i lekcje dostępne są dla pokrewnych zespołów.
Działania są ważniejsze niż protokoły. Niezmieniony dokument - stracony czas.
Szybkie wydawnictwo. Projekt pośmiertny - w ciągu 48-72 godzin od zdarzenia.
2) Kryteria taksonomii i incydentów
Ciężkość (SEV):- SEV1 - całkowita niedostępność/utrata pieniędzy/danych;
- SEV2 - znaczna degradacja (błędy> SLO, p99 na zewnątrz);
- SEV3 - istnieje częściowa degradacja/obrót.
- Wpływ: dotknięte regiony/najemcy/produkty, czas trwania, wskaźniki biznesowe (konwersja, GMV, awaria płatności).
- SLO/błędny budżet: ile budżetu jest wyczerpany, jak wpływa na szybkość zwolnień i eksperymentów.
3) Role incydentów i proces
Incydent Commander (IC): zarządza procesem, wyznacza priorytety kroków, przypisuje właścicieli.
Prowadzenie komunikacji: Informuje zainteresowane strony/klientów na szablonie.
Operacje/dyżury: likwidacja, działania łagodzące.
Skryba: Utrzymuje linię czasu i artefakty.
Przedmiot Eksperci (MŚP): głęboka diagnostyka.
Etapy: wykrywanie → eskalacja → stabilizacja → weryfikacja → przywrócenie → postmorty → wprowadzenie ulepszeń.
4) Szablon postmortem (struktura)
5) RCA Techniques (Root Cause Search)
5 Why - sequential clarification of causes to the system level.
Ishikawa (fish bone) - factors "People/Processes/Tools/Materials/Environment/Dimensions."
Event-Chain/Ripple - a chain of events with probabilities and triggers.
Barrier Analysis - which "fuses" (timeouts, breakers, quotas, tests) were supposed to stop the incident and why they did not work.
Change Correlation - correlation with releases, config digs, feature flags, provider incidents.
Practice: Avoid "root cause = person/one bug." Look for a system combination (debt + lack of guard rails + irrelevant runbooks).
6) Communications and transparency
Internal: single channel (war-room), short updates according to the template: status → actions → ETA of the next update.
External: status page/newsletter with facts without "guilt," with apologies and an action plan.
Sensitivity: do not disclose PD/secrets; legal wording to be agreed.
After the incident: a summary note with human language and a link to a technical report.
External update template (brief):
"31 Oct 2025, 13:40 UTC - some users encountered payment errors (up to 18 minutes). The reason is the degradation of the dependent service. We turned on bypass mode and restored operation at 13:58 UTC. Apologies. Within 72 hours, we will publish a report with actions to prevent recurrence"
7) Actions and implementation management
Each action is owner, deadline, acceptance criteria, risk and priority relationship.
Action classes:
1. Engineering: timeout budgets, jitter retreats, breakers, bulkheads, backprescher, stability/chaos tests.
2. Observability: SLI/SLO, alert guards, saturation, traces, steady-state dashboards.
3. Process: runbook update, on-call workouts, game day, CI gates, bipartisan review for risky changes.
4. Architecture: cache with coalescing, outbox/saga, idempotency, limiters/shading.
Gates: releases fail unless "post-mortem critical actions" are closed (Policy as Code).
Verification: retest (chaos/load) confirms the elimination of the risk.
8) Integration of feedback
Sources:
Telemetry: p99/p99 tails. 9, error-rate, queue depth, CDC lag, retray budget.
VoC/Support: topics of calls, CSAT/NPS, churn signals, "pain points."
Product/Analytics: user behavior, failure/friction, drop-off in funnels.
Partners/Integrators: webhook failures, contract incompatibility, SLA timing.
Signal → decision loop:
1. The signal is classified (severity/cost/frequency).
2. An architectural ticket is created with a hypothesis and the price of the problem.
3. Falls into the engineering portfolio (quarterly/monthly), ranked by ROI and risk.
4. Execute → measure effect → update SLI/SLO/cost baselines.
9) Post-mortem maturity metrics
% postmortems published ≤ 72 h (target ≥ 90%).
Average "lead time" from incident to closure of key actions.
Reopen rate of actions (quality of DoD formulations).
Repeated incidents for the same reason (target → 0).
Proportion of incidents caught by guards (breaker/limiter/timeouts) vs "breakthrough."
Saturation of dashboards (SLI covering critical paths) and "noise" of alerts.
Share of game-day/chaos scenarios that simulate detected failure classes.
10) Example of postmortem (summary)
Event: SEV2. Payment API: up p99 to 1. 8s, 3% 5xx, 31 Oct 2025 (13:22–13:58 UTC).
Impact: 12% of payment attempts with retrays, part - cancellation. Erroneous budget q4: − 7%.
Root Cause: "slow success" of currency dependence (p95 + 400 ms), retrai without jitter → cascade.
Barrier failure: the breaker is configured only for 5xx, not for timeouts; there was no rate-cap for low priority.
What worked: hand shading and stale-rates feature flag.
Actions:
Enter timeout budget and jitter retrays (DoD: p99 <400 ms at + 300 ms to dependency).
Breaker for "slow success" and fallback stale data ≤ 15 minutes.
Update runbook "slow dependency," add chaos script.
Add dashboard "served-stale share" and alert at> 10%.
Enter release-gate: without passing chaos-smoke - prohibit release.
11) Artifact patterns
11. 1 Timeline (example)
13: 22:10 Alert p99> 800 ms (brama)
13: 24:00 przydzielony IC, sala wojenna otwarta
13: 27:30 waluta-api „powolny sukces” zidentyfikowany
13: 30:15 Ficha-flaga stale-stawki ON (10% ruchu)
13: 41:00 Stale-stawki 100%, p99 stabilizowane 290ms
13: 52:40 Ograniczenie retreas do bramy
13: 58:00 Incydent zamknięty, monitorowanie 30min
11. 2 Solutions and Validation (DoD)
Rozwiązanie: włączyć wyłącznik (slow_success)
DoD: skrypt' + 300ms do waluty "- p99 <450ms, error_rate <0. 5%, stale_share <12%
11. 3 Policy "gate" (check)
deny_release jeśli występuje (postmortem_action. status! = „Done” i działanie. ciężkość w [„krytyczny”])
12) Anty-wzory
„Polowanie na czarownice” i kara → ukrywanie błędów, utrata sygnałów.
Protokół dla dobra protokołu: długie dokumenty bez działań/właścicieli/terminy.
Poziom OCA „błąd w kodzie” bez czynników systemowych.
Zamknięcie incydentu bez powtarzania i aktualizacji linii podstawowych.
Brak rozgłosu w firmie: powtarzanie tych samych błędów w innych zespołach.
Ignorowanie opinii ze strony wsparcia/partnerów i „niewidzialnej” degradacji (powolny sukces).
Podsumowanie „naprawiono wszystko, poruszając się” - brak zmian w architekturze/procesach.
13) Lista kontrolna architekta
1. Czy masz jeden szablon pośmiertny i publikację SLA ≤ 72 godziny?
2. Czy role (IC, Comms, Scribe, SME) są przypisywane automatycznie?
3. Linie czasowe są oparte na telemetrii (trasy/mierniki/kłody) i etykietach uwalniania/flagi?
4. Metody RCA są stosowane systemowo (5 Dlaczego, Ishikawa, Bariera)?
5. Działania mają właścicieli, terminy i DoD, związane z ryzykiem i bramy uwolnienia?
6. Czy incydent aktualizuje skrypty/wpisy runbooka/xaoc?
7. Wbudowane kanały VoC/Support, czy istnieje regularna recenzja „bólów górnych”?
8. Czy błędny budżet wpływa na politykę uwolnień i eksperymentów?
9. Czy mierniki dojrzałości są śledzone (czas-do-postmortem, szybkość ponownego otwarcia, powtarzalność)?
10. Dostępne są publiczne analizy wewnątrz zespołu oraz baza wiedzy z wyszukiwaniem?
Wniosek
Postmortemy i opinie są mechanizmem uczenia się architektury. Gdy normą staje się wolne od winy parsowanie, wymierny efekt działań i integracja sygnałów z produkcji, system staje się stabilniejszy, szybszy i wyraźniejszy co tydzień. Aby fakty były widoczne, działania obowiązkowe i dostępna wiedza, a incydenty stają się paliwem dla ewolucji platformy.