Реакция на инцидент

3 утра. Pager пищит. Половина пользователей не может зайти. Что делать? Это не про панику — это про процесс.

Главные правила

  1. Stop the bleeding first. Сначала восстанови сервис, потом ищи причину.
  2. Один Incident Commander. Не «давайте все вместе» — нужен координатор.
  3. Communicate. Статус каждые 30 минут даже если «ничего нового».
  4. Document live. Кто что когда сделал — в треде Slack.
  5. Blameless. После — разбор без обвинений людей.

Фреймворк PICERL (NIST SP 800-61)

1. Preparation (до инцидента)

Готовиться надо когда всё спокойно:

2. Identification (минуты 0-5)

Что произошло?

3. Containment (минуты 5-30)

Остановить кровотечение. Быстрые победы:

💡 Главный лайфхак

«Что изменилось за последние 24 часа?» — отвечает на 80% инцидентов. Деплой, конфиг-изменение, миграция, праздничный трафик.

4. Eradication (минуты 30+)

Устранить корневую причину:

5. Recovery

Вернуть в нормальное состояние, проверить что фиксит, мониторить, постепенно снимать ограничения.

6. Lessons learned (через 24-72 часа)

Post-mortem. О нём — отдельная глава ниже.

Роли в крупном инциденте

Алгоритм дебага

Шаг 1. Сколько и кому больно?

Шаг 2. Что изменилось?

Шаг 3. Куда смотреть

Status page communication

Шаблоны:

🟡 Investigating — We're investigating reports of [issue]. Updates in 30 min.

🟠 Identified — We've identified the issue: [одно предложение]. Working on fix.

🟢 Monitoring — Fix is deployed. Monitoring for 30 min before all-clear.

✅ Resolved — Service restored. Post-mortem within 48h.

Правила:

Post-mortem — blameless

Структура документа

  1. Summary — одно предложение что случилось
  2. Impact — кого, насколько, сколько по времени, в деньгах если можно
  3. Timeline — минуты с заходами действий и observations
  4. Root cause(s) — что технически вызвало (часто их несколько)
  5. Contributing factors — что усугубило (monitoring gap, поздно увидели)
  6. What went well — да, и это
  7. What went wrong
  8. Action items — с owners и due dates

5 Whys

Чтобы дойти до root cause — задавай «почему?» 5 раз:

Симптом: API упало
1. Почему? — Pod упал с OOM
2. Почему? — Memory leak в новой версии
3. Почему утечка? — Не закрывали БД connections
4. Почему не закрывали? — Connection pool не имел timeout
5. Почему? — Конфиг был скопирован из примера без проверки

→ Root cause: процесс review не проверяет config-related defaults
→ Action: чек-лист review для config файлов

Blameless principle

Цель — найти процесс, который позволил ошибке случиться. Не человека.

«Alice задеплоила в пятницу» — плохо.
«У нас не было guard rail против пятничных деплоев» — хорошо.

💎 Принцип Charity Majors

«Все ошибки — это сбой системы. Если человек может сделать одно неверное движение и положить продакшен — это не его ошибка, это плохая система.»

Action items — главное в post-mortem

Без action items post-mortem бесполезен.

Хорошие action items

Типы

Чек-лист готовности к инциденту

Ресурсы