[SEV] Короткий опис і дата
1) Принципи і культура
Blameless. Помилка - властивість системи, а не людини. Шукаємо «чому так вийшло», а не «хто винен».
Факти та інваріанти. Будь-які висновки спираються на таймлайн, SLO, трасування і логи.
Публічність всередині компанії. Підсумки та уроки доступні суміжним командам.
Дії важливіші за протоколи. Документ без змін ≡ втрачений час.
Швидка публікація. Чернетка постмортема - протягом 48-72 годин після інциденту.
2) Таксономія та критерії інцидентів
Серйозність (SEV):- SEV1 - повна недоступність/втрата грошей/даних;
- SEV2 - істотна деградація (помилки> SLO, p99 за межами);
- SEV3 - часткова деградація/обхідний сценарій існує.
- Вплив: порушені регіони/тенанти/продукти, тривалість, бізнес-метрики (конверсія, GMV, відмова платежів).
- SLO/помилковий бюджет: скільки бюджету вичерпано, як це впливає на швидкість релізів і експерименти.
3) Ролі і процес інциденту
Incident Commander (IC): керує процесом, пріоритезує кроки, призначає власників.
Communications Lead: інформує стейкхолдерів/клієнтів за шаблоном.
Ops/On-call: ліквідація, мітигуючі дії.
Scribe: веде таймлайн і артефакти.
Subject Matter Experts (SME): Глибока діагностика.
Етапи: виявлення → ескалація → стабілізація → верифікація → відновлення → постмортем → впровадження поліпшень.
4) Шаблон постмортема (структура)
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 Алерт p99> 800ms (gateway)
13: 24:00 IC призначений, war-room відкритий
13: 27:30 Ідентифікований «повільний успіх» currency-api
13: 30:15 Фіча-прапор stale-rates ON (10% трафіку)
13: 41:00 Stale-rates 100%, p99 стабілізований 290ms
13: 52:40 Обмеження ретраїв на gateway
13: 58:00 Інцидент закритий, моніторинг 30хв
11. 2 Solutions and Validation (DoD)
Рішення: увімкнути breaker (slow_success)
DoD: chaos-сценарій «+ 300ms до currency» - p99 <450ms, error_rate <0. 5%, stale_share < 12%
11. 3 Policy "gate" (check)
deny_release if any(postmortem_action. status!= "Done" and action. severity in ["critical"])
12) Анти-патерни
«Полювання на відьом» і покарання → приховування помилок, втрата сигналів.
Протокол заради протоколу: довгі документи без дій/власників/термінів.
РЦА рівня «баг в коді» без системних факторів.
Закриття інциденту без ретесту і оновлення базлайнів.
Відсутність публічності всередині компанії: повторення тих самих помилок в інших командах.
Ігнорування зворотного зв'язку від саппорта/партнерів і «невидимих» деградацій (повільний успіх).
Зведення «все полагодили, рухаємося далі» - без змін в архітектурі/процесах.
13) Чек-лист архітектора
1. Є єдиний шаблон постмортема і SLA публікації ≤ 72 ч?
2. Ролі (IC, Comms, Scribe, SME) призначаються автоматично?
3. Таймлайни засновані на телеметрії (трейси/метрики/логи) і мітках релізів/прапорів?
4. Методики RCA застосовуються системно (5 Why, Ishikawa, Barrier)?
5. Дії мають власників, терміни і DoD, пов'язані з ризиком і гейтами релізів?
6. Інцидент призводить до оновлення runbook/xaoc-сценаріїв/алертів?
7. Вбудовані канали VoC/Support, є регулярний огляд «топ-болів»?
8. Помилковий бюджет впливає на політику релізів і експериментів?
9. Метрики зрілості відстежуються (time-to-postmortem, reopen rate, повторюваність)?
10. Публічні внутрішньокомандні розбори і база знань з пошуком доступні?
Висновок
Постмортеми і зворотний зв'язок - це механізм навчання архітектури. Коли розбори без звинувачень, вимірний ефект дій і інтеграція сигналів з продакшену стають нормою, система щотижня стає стійкішою, швидшою і зрозумілішою. Робіть факти видимими, дії обов'язковими, а знання - доступними, і інциденти перетворяться на паливо для еволюції вашої платформи.