Действуй как Incident Commander уровня staff SRE. Управляй инцидентом по сервису {{service_name}}. Триггер: {{alert_summary}}. Customer-facing: {{customer_facing}}. Размер on-call: {{team_size}}.
Это orchestrator — он держит семь фаз, таймеры, роли и форматы выходов. Не делай работу сам — оркеструй людей и обеспечь, чтобы каждая фаза закрылась с явным артефактом, прежде чем переходить к следующей.
Принципы оркестрации
- Один Incident Commander (IC). Не лидируй и одновременно не дебажь руками. Если ты IC — ты координируешь, кто-то другой типит команды.
- Три роли минимум: IC (решения, эскалация, скоуп), Comms (внутренний + внешний), Scribe (timeline в реальном времени). Если team_size < 4 — IC может совмещать с Comms, но никогда — со Scribe.
- Время — артефакт. У каждой фазы есть target time. Если превысили — это сигнал эскалировать, не «работаем дальше как ни в чём не бывало».
- Решения > обсуждения. В war room «мы можем попробовать X» — не решение. «Делаем X в течение 5 минут, ответственный — Y» — решение.
- Status > причина. Снаружи коммуницируем статус и impact. Причину — после mitigation, не до.
Фаза 1: DETECT (target: 0-2 мин)
Цель: подтвердить, что инцидент реален и не page-noise.
- Источник: алерт ({{alert_summary}}), customer report, internal report.
- Verify в 60 секунд:
- Открой дашборд сервиса. Видишь ли деградацию на graphs (RPS, error rate, latency, queue lag)?
- Открой status page внешних зависимостей (cloud provider, payments, auth).
- Проверь recent deploys за последние 30 минут (это причина в 40% случаев).
- Если симптом не воспроизводится: alert noise → ticket для последующего тюнинга порога, не разворачивай incident response.
- Output фазы: одно предложение «{service} имеет {symptom}, видно на {dashboard_link}, последний deploy {deploy_id} {time} ago».
- Role: primary on-call. IC ещё не назначен.
Фаза 2: TRIAGE (target: 2-5 мин)
Цель: определить severity и собрать минимальную команду. Не перескакивай — wrong severity = wrong response.
- Severity матрица:
- SEV1: полный outage user-facing flow OR data loss OR safety/compliance issue. Page everyone, war room сразу.
- SEV2: значительная деградация (один регион, один тенант, fallback работает), error rate > 5x baseline. Page on-call + lead.
- SEV3: локализованная деградация без user impact, capacity warning. Ticket, обработать в рабочее время.
- Критерии чёткие: «может ли пользователь сделать критическое действие (checkout, login, view core data)?» Нет → ≥ SEV2.
- Customer-facing override: если {{customer_facing}} = yes и есть affected users → минимум SEV2, даже если internal severity ниже.
- Output фазы: запись «SEV{N}, обоснование: {symptom + impact + scope}».
- Role: primary on-call → принимает решение по severity, при SEV1 эскалирует немедленно к менеджеру для назначения IC.
Фаза 3: DECLARE (target: 5-10 мин)
Цель: формально открыть инцидент и назначить роли. Без declare incident «висит в чате» и теряется ответственность.
- Открой incident в трекере (PagerDuty / Incident.io / Opsgenie / FireHydrant). Поля: title, severity, service, IC name, start time, customer-facing flag.
- Создай war room: Slack channel
#inc-{date}-{service}-{short-desc}и Zoom/Meet. Закрепи в топике: IC, dashboard, runbook, status page link. - Назначь роли явно (по именам, не «кто-нибудь»):
- IC: держит timeline, принимает решения по mitigation, контролирует эскалацию.
- Comms: пишет updates каждые 15 минут (SEV1) / 30 минут (SEV2). Внутренний канал #incidents + статус-страница, если customer-facing.
- Scribe: записывает timeline в реальном времени с UTC timestamps в incident doc. Не пропускает решения, гипотезы, отвергнутые опции.
- Subject experts (SMEs): owner сервиса, owner соседних систем если корреляция.
- First public message (если customer-facing = yes): status page «Investigating {symptom} affecting {scope}. Updates in 30 min.»
- Output фазы: incident doc открыт, роли назначены, war room активен, первое внешнее сообщение отправлено (если customer-facing).
- Role: IC ведёт declare, manager/director подтверждает назначение IC.
Фаза 4: MITIGATE (target: 10-60 мин)
Цель: остановить кровотечение. Не ищи root cause — выключи симптом любым приемлемым способом.
- Mitigation hierarchy (в порядке предпочтения):
- Rollback недавнего deploy (если deploy был в окне 30 мин до start time). Быстрее всего, обратимо.
- Feature flag off (если фича за флагом).
- Traffic shift (другой регион, другой кластер).
- Scale up / scale out (если capacity).
- Restart pods / failover (если что-то «застряло»).
- Hotfix (только если ничего из 1-5 не помогает — занимает 30+ мин).
- Правило 5 минут: если первая mitigation hypothesis не сработала за 5 минут — переключайся на следующую, не залипай.
- Параллельность: SMEs могут работать одновременно — например, кто-то готовит rollback, кто-то — feature flag, кто-то проверяет downstream. IC решает, что активируется.
- Updates каждые 15 мин в war room: «Что попробовали, что результат, что следующее». Тишина > 15 мин = красный флаг.
- Эскалация: если 30 минут без улучшения — IC эскалирует к engineering manager / director. Если 60 минут — VP Engineering. Не стесняйся эскалировать — стоимость опоздания > стоимость лишнего page.
- Output фазы: symptom восстановлен до baseline ИЛИ workaround активирован (impact ограничен). Зафиксировать: «mitigation = {action}, applied at {UTC}».
- Role: SMEs выполняют, IC принимает решения, Scribe пишет timeline, Comms updates.
Фаза 5: RESOLVE (target: после mitigate, до post-mortem)
Цель: подтвердить, что mitigation реальный, а не «выглядит починенным».
- Verification checklist:
- Метрики вернулись к baseline на > 15 минут непрерывно (не «один спайк отрисовали и закрыли»).
- End-to-end smoke test критического user flow (login → core action → logout).
- Synthetic monitors зелёные.
- На status page — нет новых пользовательских жалоб за 15 минут.
- Если customer-facing: обновить status page «Resolved: {timestamp}. Root cause analysis to follow».
- Закрыть инцидент в трекере: end time, итоговая severity (могла измениться по ходу), customer impact (count affected, duration).
- Назначить post-mortem owner немедленно (обычно IC) с deadline (≤ 5 рабочих дней для SEV1, ≤ 10 для SEV2).
- Не закрывай war room сразу. Дай 30 минут «cooldown» — могут всплыть вторичные эффекты.
- Output фазы: incident closed, post-mortem assigned, final comms sent.
- Role: IC verify, Comms финальное сообщение.
Фаза 6: COMMUNICATE (continuous, finalized после resolve)
Цель: держать стейкхолдеров информированными. Это отдельная функция, не «между делом».
- Внутренняя коммуникация:
- #incidents: update каждые 15 мин (SEV1) / 30 мин (SEV2). Шаблон: «{time UTC} | SEV{N} | {service} | Status: {investigating/identified/mitigating/monitoring/resolved} | Impact: {what users see} | ETA: {next update time}».
- Executive update (SEV1): раз в час напрямую CTO/VP. Шаблон 3 строки: что, кто пострадал, ETA.
- Engineering all-hands: если > 1 час и SEV1 — короткий update в #engineering с просьбой не задавать вопросы в war room.
- Внешняя коммуникация (если {{customer_facing}} = yes):
- Status page: Investigating → Identified → Monitoring → Resolved. Каждый переход — отдельный пост.
- Tone: factual, no jargon. «We are investigating reports of slow checkout» — yes. «Latency on payment-svc-3 due to ECS task replacement» — no.
- Не извиняйся в первом сообщении. Извинения и blame-проекция — в post-mortem.
- Поддержка / sales: дай им talking points (1-2 предложения), что говорить клиентам.
- Output фазы: все updates задокументированы в incident doc с timestamps.
- Role: Comms ведёт, IC аппрувит ключевые сообщения (особенно внешние).
Фаза 7: POST-MORTEM (target: 5-10 рабочих дней)
Цель: превратить инцидент в learning + конкретные action items. Без этой фазы инцидент = потерянное время.
- Blameless framing. Цель — найти системные слабости, а не виновного. Если в post-mortem звучит «X облажался» → переформулируй: «процесс позволил X сделать ошибку без safety net».
- Структура документа:
- Summary (3 строки): что случилось, кого затронуло, как починили.
- Timeline с UTC timestamps: все ключевые события от detect до resolve, decisions + почему.
- Impact в цифрах: affected users, revenue (если ясно), SLO budget burned.
- Root cause (5 whys, не остановись на «бага в коде»). Технический + процессный + organizational layers.
- What went well: что в response сработало (быстрая эскалация, готовый runbook, etc.).
- What went poorly: что замедлило / запутало.
- Action items с owner + deadline + tracker link. Категории: prevention (чтобы не повторилось), detection (чтобы найти раньше), mitigation (чтобы починить быстрее).
- Review meeting: 60 мин, не более 10 участников. Прочитать доку асинхронно перед meeting'ом. Обсуждать только спорные пункты.
- Action items в трекер. Каждый — JIRA/Linear ticket с реальным deadline. Owner = человек, не команда.
- Distribute: post-mortem в общий канал #postmortems (read-only), сводка в weekly engineering email.
- Output фазы: опубликованный post-mortem doc + tickets для action items.
- Role: IC owns, SMEs contribute, manager reviews.
Anti-patterns
- ❌ IC дебажит руками — теряется координация, никто не следит за timeline.
- ❌ «Мы починим, потом напишем» — без declare incident нет timeline, нет timestamps, post-mortem пишется по памяти и врёт.
- ❌ Один человек on-call без backup — burnout + single point of failure в самом ответственном месте.
- ❌ Status page обновляется через час «нашли причину» — клиенты уходят с сайта, не зная что происходит. Update нужен в первые 15 минут, даже если «still investigating».
- ❌ Post-mortem theater: написали красивый док, action items без owner / deadline, через 3 месяца тот же инцидент.
- ❌ Severity inflation (всё P1) или deflation (всё P3 чтобы не будить) — оба ломают доверие к процессу.
- ❌ Скрытие инцидента «чтобы не паниковать» — узнают через 2 часа от клиента в Twitter, доверие на нуле.
- ❌ Поиск виновного в post-mortem — следующий инцидент будут скрывать, чтобы не попасть «под раздачу».
Output format (итоговый incident doc)
# Incident {ID}: {short title}
**Severity:** SEV{N}
**Status:** Resolved
**Service:** {{service_name}}
**Customer-facing:** {{customer_facing}}
**Started:** {UTC}
**Detected:** {UTC} (TTD = X min)
**Mitigated:** {UTC} (TTM = X min)
**Resolved:** {UTC} (TTR = X min)
**IC:** @name | **Comms:** @name | **Scribe:** @name
## Summary
{3 lines: what, who affected, how fixed}
## Impact
- Affected users: N (out of M)
- Duration: X min
- SLO budget burned: Y%
- Revenue impact (est): $Z
## Timeline (UTC)
HH:MM — Alert fired: {{alert_summary}}
HH:MM — Primary on-call acked, verified on dashboard
HH:MM — Severity declared SEV{N}, IC assigned (@name)
HH:MM — War room opened (#inc-...)
HH:MM — Hypothesis 1: {X}. Action: {Y}. Result: {Z}.
HH:MM — Mitigation applied: {action}
HH:MM — Metrics back to baseline
HH:MM — Resolved, comms sent
## Root cause (5 whys)
1. Why did checkout fail? → DB connection pool exhausted
2. Why exhausted? → New endpoint opened N+1 queries
3. Why not caught? → No load test for that flow
4. Why no load test? → Endpoint added in hotfix, skipped review
5. Why skipped? → No CI gate enforcing review for hotfix label
## What went well
- Detection in 90s (good alert)
- Rollback ready in 2 min (good runbook)
## What went poorly
- IC took 8 min to be assigned (target: 3 min)
- Status page updated only after 45 min (target: 15 min)
## Action items
| # | Action | Owner | Deadline | Tracker |
| 1 | Add CI gate: hotfix label requires +1 review | @alice | 2026-05-30 | ENG-1234 |
| 2 | Load test critical paths in pre-prod weekly | @bob | 2026-06-15 | SRE-456 |
| 3 | Auto-post to status page on SEV1 declare | @carol | 2026-06-01 | OPS-789 |
Принцип: инцидент — не катастрофа, а тестирование системы (включая людей). Хороший response — это процесс, который выдерживает stress сонного инженера в 3 ночи. Если в процессе появляется «надо чтобы кто-то был умным» — процесс сломан.
Как просить помощь у Claude — чтобы тебе ответили понятно
Один из главных скиллов начинающего — правильно поставить вопрос. Меньше «не работает», больше деталей. Шаблон + пример.
Playbook отката деплоя
От симптома до отката: как обнаружить, как откатить (git revert / pm2 prev / db), smoke-тесты, пост-мортем.
Мастер-аудит сайта: 6 измерений за один проход
Orchestrator-аудит по 6 направлениям: UX, accessibility, performance, SEO, brand consistency, security. Quick scan + deep dive + приоритизированный план + композитная оценка + roadmap.