Искусство Postmortem:
Как превратить сбой в победу
Прозрачность вашего кода в реальном времени — это только половина дела. Вторая половина — это то, как ваша команда реагирует, когда индикаторы становятся красными.
Безобидный подход (Blameless)
В Statusly мы убеждены: вине не место в инженерии. Если вы ищете виноватого, вы останавливаете расследование на первом же человеке, чья ошибка стала триггером. Это ошибка.
Культура Blameless Postmortem фокусируется не на том, кто нажал кнопку, а на том, почему система позволила нажать эту кнопку без подтверждения или защиты. Сбой — это симптом того, что процесс дал трещину.
Анатомия идеального Postmortem
Отчет должен быть документом, который можно показать инвесторам, клиентам и новичкам. Он должен отвечать на вопросы: Что случилось? Почему? Как мы это починили?
Исполнительная сводка (Executive Summary)
Краткое описание инцидента для не-технических стейкхолдеров. Включает время простоя, затронутые сервисы и бизнес-потери (например, "Потеряно 15 транзакций за 20 минут").
Хронология (Timeline)
Минутная разбивка событий. Когда сработал алерт Statusly? Когда инженер взял инцидент в работу? Когда был применен фикс? Это помогает найти узкие места в реагировании.
Корневая причина (Root Cause)
Техническое объяснение. Не "Олег удалил базу", а "Отсутствовала защита от DROP TABLE для пользователей уровня 'writer'".
Шаги по предотвращению рецидивов
Postmortem без Action Items — это просто жалоба. Чтобы инцидент имел ценность, он должен привести к изменениям в коде или инфраструктуре.
-
1Ограничение ущерба Автоматическое отключение сервиса при аномалиях (Circuit Breaker).
-
2Улучшение наблюдаемости Добавление новых метрик в Statusly, которые сработали бы раньше.
-
3Тестирование хаоса Намеренное повторение сбоя в тестовом окружении для проверки защиты.
Шаблон Postmortem
Стандартизированный подход, который мы рекомендуем использовать с Statusly.
Инцидент: Падение API шлюза (2023-10-24)
Влияние на пользователей
Пользователи не могли авторизоваться через OAuth. Мобильное приложение возвращало ошибку 503.
Что мы узнали
Наши алерты на загрузку CPU были настроены неправильно. Мы увидели проблему только когда упал сервис, а не когда началась нагрузка.