Собесов

Сценарий: внезапная просадка ночью — runbook для on-call

Продуктовая аналитикаDiagnose dropСредняяMiddle

Условие

В 03:47 alert: «Conversion упала на 40%». Ты on-call. Что делать в первые 30 минут?

Решение

Минута 0-5: подтвердить инцидент

  1. Открыть дашборд → метрика реально упала, не глитч.
  2. Дублируется ли в других метриках (revenue, transactions)? Если только в conversion — может быть проблема трекинга.
  3. Не сломан ли источник данных (Kafka lag, ETL last_run)?

Минута 5-15: классифицировать

  • Срочно (Sev1): revenue падает, юзеры жалуются, конкурентный риск. Будить команду.
  • Подождём до утра (Sev3): ночное затишье, мало транзакций, бизнес не страдает. Документируем, утром разберёмся.

Принять решение быстро, не зависать.

Минута 15-25: диагностика

-- Что упало конкретно
SELECT
  EXTRACT(HOUR FROM ts) AS hour,
  platform, region,
  COUNT(*) AS attempts,
  COUNT(CASE WHEN converted THEN 1 END) / COUNT(*)::float AS conv
FROM events
WHERE ts >= now() - INTERVAL '6 hours'
GROUP BY 1, 2, 3
ORDER BY hour DESC, conv;

Сегменты:

  • Платформа.
  • Регион.
  • Способ оплаты.
  • Версия билда.

Минута 25-30: первичная гипотеза

Что Кому писать
Релиз сломан backend on-call → rollback
ETL врёт data eng on-call
Платёжный провайдер payments team
3rd-party API down вендор support
DDoS / outage infrastructure

Чек-лист первого часа

  • Подтвердить, что метрика правда упала (а не дашборд).
  • Severity (Sev1/2/3).
  • Сегментация по 3-5 осям.
  • Status page вендоров проверить.
  • Slack #incidents канал создать (если Sev1).
  • Назначить incident commander.
  • Communicate stakeholders.

Что не делать в 3 ночи

  • Менять прод без согласования.
  • Будить весь стафф из-за Sev3.
  • Без данных запускать «давайте откатим».
  • Писать в общий канал спекуляции до понимания.

Post-mortem

После incident — blameless post-mortem:

  1. Timeline.
  2. Root cause.
  3. Что сработало в response.
  4. Action items: что улучшить в alerting, runbook, рассказать команде.

Подводные камни

  1. Alerts по фиксированному порогу шумят ночью (низкий трафик = высокая вариативность). Используйте z-score или Prophet.
  2. «Откатил релиз — стало лучше» ≠ root cause; может быть совпадением.
  3. Сначала mitigate (восстановить сервис), потом fix (найти и исправить корень). Не наоборот.
  4. Без timeline нельзя восстановить, что произошло. Логи всех изменений (deploy, config, feature flag) обязательны.
  5. Ложные срабатывания — это плохо: команда перестаёт реагировать на alerts. Калибруйте.

Эталонный ответ

Первые 30 мин: 1) подтвердить, что метрика правда упала (не дашборд). 2) Severity. 3) Сегментация. 4) Status pages вендоров. 5) Первичная гипотеза → нужный on-call. 6) Mitigate сначала, fix потом, post-mortem утром.

Хочешь увидеть разбор?

Зарегистрируйся бесплатно — откроется развёрнутое решение этой задачи и ещё 4 на выбор.

Зарегистрироваться и увидеть разбор
Уже есть аккаунт? Войти