Разработка Runbook и Playbook для DevOps-команд

Дежурная смена тратит драгоценные минуты на поиск нужного действия, а инцидент растёт. Мы разрабатываем Runbook и Playbook под ключ: описываем шаги, роли и точки эскалации так, чтобы реакция стала предсказуемой. Время на диагностику и восстановление сервиса сокращается в разы, а нагрузка на дежурных падает.
Часто задаваемые вопросы

Runbook разработка: почему регламенты ломаются на инциденте

Регламент реагирования на инциденты обычно пишут в спокойный день — когда сервис отвечает, метрики в норме и никто не считает минуты. Получается документ «на всякий случай»: он проходит согласование, ложится в базу знаний и там тихо устаревает, потому что инфраструктура меняется быстрее, чем кто-то вспоминает про правки. Настоящая проверка наступает в момент отказа, и тогда выясняется, что инструкция по восстановлению сервиса описывает уже несуществующую схему.

Первое, что ломается — эскалация. Написано «сообщить ответственному», но не сказано, кто это на ночной смене, с какого порога деградации подключается второй уровень и что делать, если первый не ответил за четверть часа. Дежурный тратит первые минуты не на диагностику, а на выяснение, кому вообще звонить.

Второе — шаги, потерявшие связь с реальностью. Устаревшая команда или адрес узла в инструкции хуже, чем отсутствие инструкции: инженер идёт по ней, получает неожиданный результат и начинает сомневаться в остальном тексте. Документация для дежурной смены обесценивается целиком, как только один шаг перестал работать.

Третье — концентрация знания. Когда порядок действий держится в головах двух человек, любой их отпуск или переход в другую команду превращает штатный отказ в долгий простой. Формально документ есть, фактически восстановление зависит от того, доступен ли конкретный инженер.

Собственно runbook разработка и начинается с этого места: регламент собирают от реальных сценариев отказа, привязывают к коду и проверяют на учениях — разбираем, как это закрывается.

Что меняется в работе дежурной смены после внедрения

Первый измеримый сдвиг — время до локализации отказа. До внедрения сценариев дежурный тратит на вопрос «что именно сломалось» от получаса до часа: собирает симптомы по логам, метрикам и сообщениям смежников. После — первые проверки прописаны, и диагноз ставится за 5-10 минут: инженер не ищет, а подтверждает или отбрасывает гипотезы по порядку.

Второй эффект — сокращение времени восстановления сервиса. Единый порядок действий при отказе убирает вариативность между сменами: шаги, точки ветвления и критерии «дальше не идём, эскалируем» зафиксированы, поэтому ночная смена действует так же, как дневная. На типовых отказах это даёт двукратное сокращение времени до возврата сервиса в норму.

Третий — доля инцидентов, закрытых по описанному сценарию: на зрелых наборах это 70-85% обращений, остальное — эскалация, но уже с собранным контекстом, а не с нуля. Разработка Runbook идёт от практики: сначала фиксируем порядок, потом упаковываем повторяющиеся шаги в скрипты и проверки.

Снижение повторных инцидентов — следствие того, что сценарий закрывает не только симптом: рядом с шагом «поднять сервис» стоит шаг «устранить причину и поставить проверку». Поэтому класс отказов, возвращавшихся через неделю, уходит. Передача знаний дежурной смене перестаёт зависеть от того, кто на телефоне: новый инженер выходит в дежурство по чек-листу, а не по рассказам старших.

Форматы регламентов: что подойдёт вашей команде

Формат регламента определяет не аккуратность документации, а время до восстановления: дежурный читает ровно то, что успевает за первые две минуты, и по этому тексту решает, будить ли вторую линию. Поэтому форматы регламентов сравнивают по тому, как быстро они приводят к первому диагностическому шагу и что предлагают делать, когда шаг не сработал.

Подходы не конкурируют, а наслаиваются: сводный документ держит картину сервисов и границы ответственности, сценарии по типам инцидентов закрывают конкретные отказы, чек-листы дежурной смены — рутину передачи смены. Выбор в том, с чего начать и какой объём поддержки команда готова нести.

Сравнение подходов к документации

Вариант Когда подходит Ограничения
Единый сводный документ Мало сервисов, нужен общий контекст архитектуры и точек отказа Нужный раздел ищут дольше, чем читают; расходится с реальностью при частых релизах
Сценарии по типам инцидентов Несколько сервисов, разные классы отказов, дежурство по расписанию Дублирование шагов; при составном отказе — переключение между двумя документами
Чек-листы дежурной смены Круглосуточная ротация, менее опытная первая линия Работают до первого нестандартного шага, дальше нужен сценарий
Автоматизированные подсказки при отказе Частые однотипные срабатывания, есть система оповещений, например PagerDuty Живут в коде и требуют сопровождения; ложное срабатывание уводит дежурного не туда

Общее ограничение — расхождение с реальностью: устаревшая инструкция уводит с ложного пути увереннее, чем её отсутствие. Поэтому в каждый сценарий закладывают точки проверки и признак, при котором дежурный останавливается и эскалирует вместо слепого следования шагам.

Runbook разработка: этапы работы над регламентом

Регламент имеет смысл, только если он собран по фактическим отказам конкретного контура, а не по шаблону из чужого репозитория. Поэтому работа начинается не с текста документа, а с разбора того, что уже ломалось и как дежурные выходили из ситуации. Каждый этап ниже даёт артефакт, на который опирается следующий — от перечня сбоев до проверенного на учении документа.

  1. Аудит инцидентов. Разбираем историю отказов: что падало, через сколько замечали, сколько шло восстановление, какие действия предпринимал дежурный. Повторяющиеся сбои идут в регламент первыми, редкие — в раздел с эскалацией.

  2. Схема зависимостей сервисов. Строим граф связей: что вызывает что, где общий узел отказа, в каком порядке поднимать систему. Она же задаёт границу — где заканчивается зона дежурного и начинается владелец сервиса.

  3. Разграничение сценариев. Делим сбои на те, что гасятся по шагам, и те, что требуют немедленного привлечения профильного инженера; для каждого задаём признаки распознавания и порог эскалации.

  4. Написание регламента. Структура жёсткая: условие срабатывания, диагностика, шаги устранения, критерий восстановления, порядок отката. Формулировки проверяемые — «убедиться, что не растёт очередь обработки», а не «проверить состояние сервиса».

  5. Проверка на учении. Устраиваем учебный отказ в тестовом контуре, дежурный проходит сценарий строго по документу. Места, где он остановился или отклонился, переписываем: это дефект регламента, а не дежурного.

  6. Передача команды. Разбираем документ посменно, привязываем запуск к системе дежурств и рабочим чатам, назначаем владельца и период пересмотра. Дальше регламент живёт в репозитории рядом с конфигурацией, а не в переписке.

Состав комплекта: регламенты, схемы, чек-листы

Комплект документации живёт в том же репозитории, что и инфраструктурный код, и проходит ревью как обычное изменение. Тогда регламент не расходится с реальностью: правку в конфигурацию и правку в сценарий восстановления смотрят в одном запросе на слияние. Ниже — что именно остаётся у команды после сдачи.

  • Сценарии Runbook — пошаговые процедуры под конкретный класс сбоя: деградация зависимости, переполнение диска, отказ узла. Указаны точка принятия решения, команда отката и признак, по которому сбой считают закрытым.
  • Схемы сервисов и зависимостей — что от чего зависит, где проходит граница отказа, какие внешние системы участвуют в обработке запроса. Обновляются при каждом изменении топологии.
  • Матрица эскалации — уровень дежурного, уровень владельца сервиса, уровень руководства: срок реакции на каждом и критерий передачи выше.
  • Чек-листы для дежурного — приёмка и сдача смены, обход мониторинга, проверки перед выкаткой и после неё. Формулировки в виде «проверил — отметил», без двусмысленных пунктов.
  • Регламент пересмотра документов — владелец и периодичность ревизии для каждого документа, устаревшие версии помечаются, а не удаляются, чтобы решения не терялись.
  • Журнал разборов — что сломалось, какой сценарий применили, какой пункт в нём дописать по итогам.

Кейс: регламенты для команды сопровождения сервиса

Сервисная платформа из нескольких десятков компонентов, три команды на дежурстве, круглосуточный график. Знания об отказах жили в переписке: у каждого инженера свой порядок проверки, часть заметок — в личных документах. Разбор инцидента начинался с вопроса «а кто это уже видел?» — контекст собирали заново каждую смену.

До: диагностика по памяти

Медианное время локализации отказа — 47 минут, и половина уходила не на диагностику, а на поиск того, кто и что уже проверял. По заранее описанному сценарию закрывалась примерно треть инцидентов, остальное — импровизация дежурного. Ложные эскалации к разработке забирали время двух команд сразу.

После: связанный набор сценариев

Сначала прошли по журналам инцидентов за полгода и сгруппировали отказы по внешним симптомам, а не по сервисам. Для каждой группы — сценарий: шаги проверки по порядку, признаки, при которых эскалация обязательна, и точка отката на предыдущее состояние. Регламенты легли в тот же репозиторий, что и конфигурации сервисов, изменения проходят проверку; панели мониторинга в Grafana привязаны к шагам напрямую.

Медиана локализации сократилась до 14 минут, доля инцидентов, закрытых по сценарию, выросла до 82%. Ложные эскалации упали почти вдвое, а новый дежурный выходит на самостоятельные смены за дни, а не недели.

Чем регламент реагирования отличается от инструкции?

Инструкция описывает сервис: состав компонентов, зависимости, поведение номинальных режимов, точки сбора метрик. Её читают, чтобы понять, как всё устроено и куда смотреть при разборе.

Регламент отвечает на другой вопрос — что делать дежурному, когда сигнал уже сработал. Это порядок шагов, точки ветвления по результату проверки и критерий, по которому инцидент считается закрытым.

Разница между сценарием и описанием — в точке опоры. Сценарий строится от триггера и ведёт по веткам «если — то», описание фиксирует поведение системы вне зависимости от того, что случилось. Смешение вредит обоим: инструкция обрастает шагами под редкий отказ, а регламент превращается в справочник, который во время аварии не дочитывают до конца.

Регламент нужен там, где отказ повторяется, задевает несколько сервисов и время восстановления критично. Тогда шаги можно проверить на учениях, закрепить владельца и держать документ живым — он обновляется вместе с изменениями в инфраструктуре.

Где сбой единичный и разбирается по месту, пошаговый сценарий не окупается: он устаревает быстрее, чем его успевают применить. Достаточно описания сервиса и разбора по факту.

Границы применения фиксируются в шапке документа: какие сигналы он покрывает, что делать при выходе за них и на какую инструкцию ссылаться вместо дублирования. Разделение жанров унаследовано от практик ITIL, где описание сервиса и процедура восстановления — разные артефакты с разными владельцами и разным жизненным циклом.

Частые вопросы о регламентах и их поддержке

Перед согласованием регламента команды задают одни и те же вопросы: кто отвечает за документ после сдачи, что делать с уже написанными черновиками и как регламент живёт рядом с графиком дежурств. Ниже — короткие ответы на них; остальное разбираем на этапе оценки задачи.

Кто становится владельцем регламента и что это меняет?

Владельцем назначается роль, а не конкретный человек: обычно ведущий инженер направления. В шапке документа фиксируются роль, срок пересмотра и триггеры обновления — смена топологии сервиса, новый класс отказов, изменение политики доступов. Так актуализация становится обязанностью, а не доброй волей.

У нас есть черновики регламентов — их придётся переписывать?

Нет. Сначала разбираем существующие заготовки: сверяем шаги с журналами реальных инцидентов, отмечаем места, где действие не воспроизводится, и дополняем проверками результата. Большая часть текста сохраняется, но появляются точки контроля и однозначный порядок действий.

Как регламент связан с дежурствами и оповещениями?

Каждый шаг привязывается к роли на дежурстве и каналу оповещения: кто первым видит сигнал, что делает до эскалации, кому передаёт управление. Связь проверяется учебным запуском по чек-листу, а не чтением документа. После крупного инцидента регламент пересматривается, версии хранятся в репозитории с историей правок и ревью изменений.

Остальные сомнения — про доступы, откат и разделение зон ответственности между командами — разбираем предметно. Опишите задачу: вернёмся с оценкой, планом работ и порядком поддержки регламентов после внедрения.

Обсудим задачу и вернёмся с оценкой и планом

Для старта не нужен доступ ко всей инфраструктуре. Чтобы обсудить задачу предметно, достаточно четырёх вещей: репозиторий с конфигурацией и скриптами, перечень окружений с пометкой, чем они отличаются, список инцидентов за последние месяцы с уточнением, какие разбирали по памяти, и один сервис, который не жалко взять первым. По этому набору мы делаем оценку объёма и видим, где разрыв между «команда знает, что делать» и «записано так, что выполнит дежурный в три ночи».

Начало проекта строится как пилот на одном сервисе — так Runbook проверяется на реальном дежурстве, а не на согласовании формулировок:

  • Ограничиваем пилотный сервис: одна команда, один дежурный, реальные сценарии восстановления.
  • Собираем хронологию последних инцидентов и вытаскиваем шаги, которые каждый раз выполнялись заново.
  • Пишем процедуры по шагам: что проверить до действия, какой признак успеха, в какой момент эскалировать.
  • Прогоняем сценарии в окно обслуживания и сверяем фактические шаги с записанными.
  • Отдаём документ инженеру, который не участвовал в написании: если он доводит восстановление до конца без подсказок, шаги считаются проверенными.
  • Фиксируем метрики пилота — время восстановления, число эскалаций, долю сценариев, закрытых по документу.
  • Согласуем тиражирование на остальные сервисы и порядок, в котором их берём.

План работ приходит в виде последовательности этапов с зависимостями, составом команды со стороны заказчика и критериями приёмки по каждому шагу. Опишите задачу и пришлите то, что есть, — вернёмся с оценкой объёма и планом.

Наши компетенции:

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1542
  • Разработка веб-приложения для компании FEEDME
    Разработка веб-приложения для компании FEEDME
    1393
  • Разработка веб-сайта для компании БЕЛФИНГРУПП
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1081
  • Разработка интернет магазина для компании FURNORO
    Разработка интернет магазина для компании FURNORO
    1368
  • Разработка логотипа компании B2B Advance
    Разработка логотипа компании B2B Advance
    815
  • Разработка веб-приложения для компании Enviok
    Разработка веб-приложения для компании Enviok
    1139