On-call практики: дежурство без выгорания¶
Из всех тем SRE эта — самая человеческая. Не про серверы, метрики или код. Про людей, которые просыпаются в 3 часа ночи. Про справедливость, усталость и культуру.
On-call (дежурство) — это когда инженер назначается ответственным за реагирование на инциденты в определённый период времени. Звучит просто. На практике это самая частая причина выгорания SRE, по себе знаю, когда у меня 120 часов переработок заканчивались за три месяца.
Почему дежурство выжигает¶
Дежурный не просто ждёт алерта. Он в состоянии постоянной готовности: не может пойти в кино, выпить с друзьями или просто выключить телефон. Непрерывное ожидание, даже если инцидентов нет, — это когнитивная нагрузка. А если они есть — это стресс плюс прерванный сон или вообще его отсутствие сутками.
Исследования показывают: после трёх ночных пробуждений за неделю продуктивность падает на уровень человека с похмелья. А если так длится месяцами — это прямой путь к выгоранию.
Сколько должен дежурить один человек¶
Google SRE в своей классической книге рекомендует: SRE должен тратить не более 50% времени на операционную работу (включая on-call). Остальные 50% — на инженерные проекты.
Для on-call это означает: - Не чаще одной недели в месяц. Если человек дежурит две недели из четырёх — он не успевает восстанавливаться. - Не более 8–12 часов в день для primary дежурного В идеале — 12-часовые смены с переключением на secondary, чтобы дежурный мог выспаться. - Не более 2–3 ночных инцидентов за дежурство. Если система валится каждую ночь несколько раз, то эту проблему нужно решать системно, а не усиливать дежурную команду.
Модели дежурства¶
Primary / Secondary (эскалация)¶
Два инженера на смене. Primary — первый на линии. Если не справляется или проблема выходит за рамки его компетенции — подключается Secondary.
Схема:
[Алерт] → Primary (10 мин) → если не решил → Secondary (30 мин)
→ если не решил → L3 / разработчики
Плюсы: Primary не чувствует себя брошенным, Secondary подстраховывает. Минусы: нужно вдвое больше людей в ротации.
Follow-the-sun¶
Команды распределены по часовым поясам. Дневная смена передаётся коллегам в другом регионе, а не переходит в ночную.
Плюсы: инженеры не работают ночью. Минусы: нужны распределённые команды, накладные расходы на handover.
На мой взгляд - это лучшее решение. Но это возможно организовать далеко не всегда (вернее, почти никогда).
Round-robin (простая ротация)¶
Дежурные меняются по расписанию, каждый дежурит неделю. Самая распространённая модель.
Плюсы: предсказуемо, легко планировать. Минусы: ночные дежурства неизбежны, если команда в одном часовом поясе.
Компенсация за дежурство¶
Есть два подхода:
Компенсация временем. Отработал ночной инцидент — на следующий день начинаешь не с 9, а с 13. Или получаешь дополнительный выходной.
Компенсация деньгами. Доплата за дежурную неделю — фиксированная сумма плюс почасовка за реальные инциденты.
Лучший вариант — сочетание обоих. Деньгами вы признаёте, что дежурство — это дополнительная нагрузка. Выходными — что это нагрузка на здоровье.
Как сделать дежурство выносимым¶
1. Хорошие алерты — залог спокойной ночи¶
Главный враг дежурного — шум. Алерты, которые не требуют действий, но будят каждые 15 минут. Почитайте главу про качественный алертинг: каждый алерт должен вести к действию. Если алерт можно проигнорировать — его не должно быть.
2. Runbook для типовых ситуаций¶
Когда дежурный видит алерт, он должен открыть runbook и выполнить шаги. Не вспоминать, не искать, не гадать. Runbook — это страховка от паники в 3 часа ночи. А понимание того, как разворачивается инцидент от алерта до постмортема — в главе про жизненный цикл инцидента.
Метрика качества runbook: может ли новый инженер, который впервые дежурит, выполнить его без помощи коллег? Может - отличный ранбук! Не может - переделывай!
3. Чёткая эскалация¶
Дежурный должен знать, кому звонить, если он не справляется. Не «найди кого-нибудь в маттермосте, а «если проблема не решена за 15 минут — звони Ивану +7...».
4. Культура психологической безопасности¶
Если после инцидента дежурного спрашивают «как ты мог это пропустить?» — он уволится. Если спрашивают «как сделать, чтобы ты не пропустил это в следующий раз?» — он останется.
5. Анализ после дежурства¶
После дежурной недели команда собирается на 30 минут:
- Сколько было инцидентов?
- Сколько из них требовали реального вмешательства?
- Какие алерты были ложными?
- Что можно автоматизировать, чтобы снизить нагрузку?
Ретроспектива дежурства — это не «кто виноват». Это «что мы можем сделать, чтобы следующая неделя была легче».
Когда дежурство не нужно¶
В некоторых ситуациях on-call в традиционном понимании избыточен:
- Некритичные сервисы (например, внутренние инструменты, которые могут постоять до утра). Здесь достаточно дежурства в рабочее время.
- Система не меняется месяцами и стабильна как скала. Можно дежурить по желанию или уменьшить частоту ротации.
- Автоматизация закрыла 100% сценариев. Теоретически такое возможно, но практически — фантастика.
Итог¶
On-call — это неотъемлемая часть SRE, но она не должна разрушать жизнь инженеров. Хорошее дежурство — предсказуемое, с качественными алертами, защищённое runbook'ами и с понятными границами ответственности. И главное: оно должно быть справедливым: каждый член команды дежурит по очереди, а нагрузка компенсируется временем или деньгами.
Плохой on-call — когда систему штормит, алерты летят без умолку, а дежурный не спит по три дня. Если ваша команда в таком состоянии — это не on-call проблема. Это проблема системы, которую нужно решать до того, как выгорят люди.