Эффективный постмортем — это не просто "написать документ". Это итеративный процесс, который включает несколько этапов. Рассмотрим основную последовательность шагов.
Шаг 1: Собрать данные и артефакты
Сразу после устранения инцидента важно зафиксировать всё, что может понадобиться для анализа:
- логи;
- метрики;
- скриншоты дашбордов;
- переписку в Slack/Teams;
- коммиты и конфигурации, которые менялись во время инцидента.
Чем быстрее это сделать, тем меньше риск, что данные будут удалены или забыты.
Шаг 2: Восстановить хронологию (timeline)
Timeline — это детальная временная шкала событий:
- когда началась проблема;
- когда её заметили;
- какие действия предпринимали;
- какие гипотезы проверяли, когда восстановились.
Хронология помогает синхронизировать понимание между участниками и выявить "узкие места" в реагировании (например, алерт сработал через 10 минут после начала проблемы, или команда потратила час на проверку неверной гипотезы).
Шаг 3: Провести встречу или асинхронный разбор
В зависимости от сложности инцидента можно провести синхронную встречу (postmortem meeting) с участием всех вовлечённых сторон или организовать асинхронный разбор в документе с возможностью комментариев. Цель встречи — не "отчитаться", а коллективно разобрать причины, обсудить гипотезы и согласовать действия.
Шаг 4: Разобрать root cause и contributing factors
Root cause — это непосредственный триггер инцидента (например, "деплой новой версии с багом в SQL-запросе"). Но почти всегда есть
contributing factors. Условия, которые усилили проблему или замедлили восстановление. Важно зафиксировать и то, и другое, потому что работа с contributing factors часто даёт больший эффект, чем "заплатка" на конкретный баг.
Шаг 5: Определить action items
Action items — это конкретные задачи, которые снизят вероятность повторения инцидента или уменьшат его влияние. Каждое действие должно иметь владельца, срок и приоритет. Примеры хороших action items:
- Добавить алерт на рост latency 95-го перцентиля для API /checkout (владелец: Иван, срок: 2 недели, P1)
- Внедрить canary deployment для микросервиса payments (владелец: команда Platform, срок: месяц, P0)
- Провести ретроспективу процесса on-call эскалации и обновить runbook (владелец: SRE-тима, срок: неделя, P2)
Слабое место многих постмортемов — это "красивый документ", после которого ничего не меняется. Поэтому важно не только записать действия, но и регулярно отслеживать их выполнение, например, в отдельном Jira-борде.
Шаг 6: Опубликовать и распространить знания
- Постмортем нужно сохранить в доступном месте (wiki, Confluence, Google Docs) и поделиться с командами, которых он может касаться. В некоторых компаниях практикуется публикация "обезличенных" версий постмортемов в общедоступных каналах или даже в блогах — это повышает прозрачность и культуру обучения.