Москва: проверенные б/у ноутбуки с гарантией и проверкой перед оплатой
+7 906 722-94-45

Главная → Статьи → Toil: автоматизация рутины в SRE

Toil на практике: как находить и устранять рутинную работу в эксплуатации

Что такое toil в SRE: критерии рутинной работы, измерение доли toil, приоритизация автоматизации и практические паттерны устранения ручных операций.

Прямой ответ

Toil — рутинная, повторяющаяся, автоматизируемая работа по эксплуатации без долгосрочной ценности (toil — «рутина, которую надо убивать» — toil — incident — «ручная работа, которую можно автоматизировать» — toil), зачем устранять: toil съедает время (toil — «рутина вместо инженерии» — toil — техдолг — «команда тонет в рутине» — toil — incident — «рутина → выгорание» — toil); критерии toil (toil — «если работа — toil, если» — toil): (1) Ручная (toil — «человек делает руками» — toil — incident — «ручная операция» — toil — «можно автоматизировать» — toil); (2) Повторяющаяся (toil — «делаем снова и снова» — toil — incident — «повторяющаяся операция» — toil — «не разовая» — toil); (3) Автоматизируемая (toil — «машина может сделать» — toil — incident — «можно автоматизировать» — toil — «скрипт/инструмент» — toil); (4) Без долгосрочной ценности (toil — «сервис работает — но не улучшается» — toil — техдолг — «рутина не двигает вперёд» — toil); (5) Тактическая (toil — «реакция на события» — toil — incident — «тушение пожаров» — toil — «не стратегическая» — toil); (6) Растёт с масштабом (toil — «больше сервисов — больше рутины» — toil — incident — «масштаб → рутина растёт» — toil — «линейный рост» — toil); примеры toil (toil): перезапуск упавших сервисов вручную (toil — «сервис упал — перезапустил» — toil — incident — «ручной перезапуск» — toil — k8s — «автоматизировать» — toil), ручное масштабирование (toil — «нагрузка выросла — добавил поды» — toil — incident — «ручное масштабирование» — toil — k8s — «HPA» — k8s), ручные деплои (toil — «деплой руками» — toil — incident — «ручной деплой» — toil — deploy — «CI/CD» — deploy), ручная обработка алертов (toil — «алерт — ручные шаги» — toil — incident — «ручная обработка» — toil — runbook — «автоматизировать» — runbook); измерение toil (toil — «сколько времени на рутину» — toil — метрики — «доля toil» — toil — incident — «Google SRE — < 50% toil» — toil — «измерять, чтобы устранять» — toil); приоритизация (toil — «что автоматизировать первым» — toil — техдолг — «частое × болезненное» — toil — «матрица: частота × боль» — toil — «автоматизировать частое и болезненное» — toil); когда устранять toil: рутина > 50% времени (toil — «больше половины — рутина» — toil — incident — «Google SRE — < 50%» — toil), повторяющиеся инциденты (toil — «один и тот же инцидент» — toil — incident — «повторяется» — toil — runbook — «автоматизировать» — runbook), рост с масштабом (toil — «масштаб → рутина растёт» — toil — incident — «линейный рост» — toil); антипаттерны: игнорировать toil (toil — «рутина — это нормально» — toil — техдолг — «рутина съедает команду» — toil — incident), автоматизировать всё (toil — «автоматизировать редкое» — toil — техдолг — «оверхед» — toil — «автоматизировать частое» — toil), автоматизация без runbook (toil — «автоматизировали — не задокументировали» — toil — runbook — «runbook обязателен» — runbook).

Практика: устранение toil

Измерение (toil — доля toil (toil — «сколько времени на рутину» — toil — метрики — «тайм-трекинг/опросы» — toil — incident — «Google SRE — < 50%» — toil); Приоритизация (toil — матрица (toil — «частота × боль» — toil — техдолг — «частое и болезненное — первым» — toil — «ручной перезапуск ×10/день» — toil); Автоматизация (toil — скрипты/инструменты (toil — «Ansible/скрипты» — toil — incident — «рутина → код» — toil — runbook — «автоматизированный runbook» — runbook); Runbook (runbook — документация (runbook — «как работать с автоматизацией» — runbook — incident — «runbook обязателен» — runbook — toil — «автоматизация + runbook» — runbook); Мониторинг (метрики — доля toil (метрики — «toil снижается» — метрики — incident — «рутина уменьшается» — метрики — toil).

Практический сценарий: устранение ручных перезапусков

Контекст: сервис (incident), боль: падает — oncall перезапускает вручную (toil — «сервис упал — перезапустил» — toil — incident — «ручной перезапуск ×10/день» — toil — «toil» — toil); решение — устранение toil: (1) измерение (toil — доля toil (toil — «ручной перезапуск — 30% времени oncall» — toil — метрики — «много времени» — toil); (2) приоритизация (toil — матрица (toil — «частое (×10/день) × болезненное» — toil — техдолг — «первым» — toil); (3) автоматизация (toil — k8s (k8s — liveness probe (health checks — «сервис упал — k8s перезапустил» — health checks — k8s — «автоматический перезапуск» — k8s — toil); (4) runbook (runbook — «как работать с автоматикой» — runbook — incident — «если автоматика не помогла» — runbook — toil); (5) мониторинг (метрики — доля toil (метрики — «ручной перезапуск — 0» — метрики — incident — «toil устранён» — toil); результат: ручной перезапуск устранён (toil — «k8s перезапускает» — k8s — «30% времени oncall → 0» — toil — метрики — oncall свободен (incident — «oncall не тонет в рутине» — incident — toil); вывод: toil решили задачу (рутина автоматизирована — toil — ADR — «автоматизация без runbook» — антипаттерн — runbook — runbook обязателен — runbook — техдолг).

FAQ

Что такое toil и по каким критериям его опознать? Toil (toil — рутинная, повторяющаяся, автоматизируемая работа без долгосрочной ценности (toil — «рутина, которую надо убивать» — toil — incident — «ручная работа» — toil); критерии (toil — «если работа — toil, если» — toil): ручная (toil — «человек делает руками» — toil), повторяющаяся (toil — «снова и снова» — toil), автоматизируемая (toil — «машина может» — toil), без долгосрочной ценности (toil — «не улучшает» — toil — техдолг), тактическая (toil — «реакция» — toil — incident), растёт с масштабом (toil — «масштаб → рутина» — toil); «рутина — это нормально» — антипаттерн (toil съедает команду — toil — устранять — toil — ADR — техдолг).

Как измерить долю toil и какой она должна быть? Измерение (toil — «сколько времени на рутину» — toil — метрики — тайм-трекинг (toil — «логировать время» — toil — метрики — опросы (toil — «команда оценивает» — toil — incident — «доля toil» — toil); какой должна быть: Google SRE — < 50% (toil — «меньше половины времени» — toil — incident — «остальное — инженерия» — toil — «toil < 50%» — toil); зачем: измерять, чтобы устранять (toil — «не измерять — не устранить» — toil — метрики — «доля toil — метрика» — toil — incident); «не измерять toil» — антипаттерн (не устранить — toil — измерять — метрики — ADR — техдолг).

Как приоритизировать автоматизацию toil и что автоматизировать первым? Приоритизация (toil — матрица (toil — «частота × боль» — toil — техдолг — «частое и болезненное — первым» — toil — «матрица приоритетов» — toil); что первым: частое (toil — «×10/день» — toil — incident — «много времени» — toil), болезненное (toil — «oncall ненавидит» — toil — incident — «боль» — toil), растущее с масштабом (toil — «масштаб → рутина» — toil — incident — «линейный рост» — toil); что не автоматизировать: редкое (toil — «раз в год» — toil — техдолг — «оверхед» — toil — «автоматизация дороже рутины» — toil); «автоматизировать всё» — антипаттерн (оверхед — техдолг — автоматизировать частое/болезненное — toil — ADR — техдолг).

Как связаны toil, runbook и автоматизация? Toil (toil — рутина (toil — «ручная работа» — toil — incident — «toil» — toil); Runbook (runbook — документация шагов (runbook — «как делать вручную» — runbook — incident — «runbook» — runbook — «первый шаг — задокументировать» — runbook); Автоматизация (toil — скрипты/инструменты (toil — «рутина → код» — toil — runbook — «runbook → автоматизация» — runbook — toil); связь: toil → runbook → автоматизация (toil — «рутина → документировать → автоматизировать» — toil — runbook — «runbook — основа автоматизации» — runbook — toil); «автоматизация без runbook» — антипаттерн (не задокументировано — runbook — runbook обязателен — runbook — ADR — техдолг).

Источники: Google SRE book (eliminating toil), SRE workbook, Ansible — ссылки в шапке.