Incident response playbook для малих та середніх команд
· 8 хв читання
Коротко: Коли у п'ятницю о 23:30 падає production сервер, не час вигадувати процедуру з нуля. Incident response playbook - документ, що визначає ролі, комунікацію та процедури до того, як вони вам потрібні. Тут мінімальний playbook, що підходить для команди 5-20 осіб.
Коротко: Коли у п'ятницю о 23:30 падає production сервер, не час вигадувати процедуру з нуля. Incident response playbook - документ, що визначає ролі, комунікацію та процедури до того, як вони вам потрібні. Тут мінімальний playbook, що підходить для команди 5-20 осіб.
Ролі під час інциденту
Чіткі ролі усувають хаос. Навіть маленькій команді потрібен мінімум:
- Incident Commander (IC) - керує інцидентом, приймає рішення, ескалює. Не пише код.
- Technical lead - людина, що знає проблемну область. Пише fix.
- Communications lead - оновлює status page, клієнтів, менеджмент. Для малої команди може бути тим же, що IC.
- Scribe - пише timeline, хто що робить, коли. Ключове для post-mortem.
У команді до 5 осіб типово IC + Technical lead = 2 ролі розділені, інших бере IC.
Severity рівні
Визначте 3-4 рівні серйозності заздалегідь:
- SEV1 (Critical) - основний сервіс повністю недоступний. Реагують негайно, paging навіть вночі.
- SEV2 (Major) - значна деградація (частина фіч, деякі користувачі). Реакція протягом 30 хв у робочий час, 1 г поза.
- SEV3 (Minor) - невеликий вплив, workaround існує. Реакція до наступного робочого дня.
- SEV4 (Cosmetic) - без user-facing впливу, йде у звичайну queue.
Процедура SEV1: перші 15 хвилин
- 00:00 - Виявлення. Alert приходить з моніторингу або від клієнта. Хтось на on-call ротації підтверджує, що проблема реальна.
- 00:02 - Активація IC. Відкривається виділений канал комунікації (Slack #incident-N або Discord). Викликають Technical lead.
- 00:05 - Перший status update. На публічній status page: «Investigating reports of [проблема].» Email внутрішнім людям, які мають знати.
- 00:10 - Initial diagnostics. Перевірте недавні деплої, графіки моніторингу, error логи. Що змінилося за останні 30-60 хв?
- 00:15 - Рішення: rollback, hotfix чи workaround? Якщо не одразу ясно, IC ескалює або кличе інших інженерів.
Комунікація: правило «5 + 30»
Оновлення status page мінімум кожні 30 хвилин під час SEV1, навіть якщо немає нової інфи. «Все ще розслідуємо, ETA поки невідомий» - кращий update, ніж тиша - клієнти принаймні знають, що хтось працює над проблемою.
Перший update має бути протягом 5 хвилин від виявлення. Незалежно від того, чи знаєте ви причину.
Rollback як default
При SEV1, що почався невдовзі після деплою, rollback - перший вибір, не hotfix. Hotfix під тиском вночі - джерело подальших багів. Rollback відновлює відомий хороший стан і дає час на спокійну діагностику вранці.
Для rollback необхідно мати:
- Версіонування розгортання (Docker tags, Git tags, deployment артефакт)
- Database migrations backwards compatible (якщо нова версія дропає стовпець, стара не відновить)
- Документовану rollback процедуру (команди, скільки займає, хто може запустити)
Post-mortem протягом 48 годин
Після кожного SEV1/SEV2 інциденту напишіть документ зі структурою:
- Summary - 2-3 речення що сталося, скільки тривало, кого зачепило
- Timeline - точні часи виявлення, ключових дій, вирішення
- Root cause - чому це сталося (технічна причина + процедурна причина)
- Impact - кількість зачеплених клієнтів, business impact
- What went well - що ми зробили добре (оцінити команду)
- What went wrong - де ми втратили час
- Action items - конкретні задачі з owner та deadline (не «тестувати краще» - краще «додати integration test для payment flow протягом 14 днів, owner: X»)
Правило blameless post-mortem: Не шукаєте винуватця, шукаєте системну слабкість. «John задеплоїв погану версію» - неправильний висновок - правильний «процес деплою не містив canary фазу, що зловила б баг до повного rollout».
On-call ротація
Для команди з 24/7 продуктом:
- Тижневі ротації - коротше вигорає, довше означає неперервність контексту
- Завжди primary + secondary on-call. Secondary переймає, коли primary не реагує за 5 хв.
- Компенсація (екстра оплата, time-off) за нічний та вихідний paging
- Місячний «on-call review» - кого часто будили, що можна автоматизувати
Інструменти
- Monitoring (ePulz.io, Datadog, New Relic) - виявлення + alerting
- Paging (PagerDuty, Opsgenie, Better Stack) - ескалація, ротація, SMS/голос
- Status page (власна, ePulz.io, StatusPage.io) - зовнішня комунікація
- Хостинг runbook (Notion, GitHub Wiki, internal docs) - playbooks та runbooks
- Шаблон postmortem (Confluence, Notion template) - стандартизація
Висновок
Incident response не можна імпровізувати під тиском. 30 хвилин, інвестованих у написання playbook, окупаються при першому більшому збої - менше хаосу, коротший MTTR, краща комунікація з клієнтами та команда, що знає що робити.
Почніть з автоматичного виявлення
ePulz.io вирішує перші хвилини incident response: виявлення + alerting через e-mail, Telegram та webhook у Slack / Discord / PagerDuty.
Спробуйте ePulz.io безкоштовно - 7 днів без банківської картки.
Створити акаунт