Розробка 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