← Назад к базе знаний

Инженерия хаоса

Инженерия хаоса

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

Порядок эксперимента

  1. Описать нормальное состояние измеримо: доля успешных запросов, время ответа, ключевое действие
  2. Сформулировать гипотезу: «при отказе одного узла показатели не изменятся»
  3. Ограничить радиус: один сервис, малая доля трафика, рабочее время
  4. Вызвать отказ и наблюдать
  5. Остановить по заранее заданному условию
  6. Записать вывод и починить найденное

Когда это уместно

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

Что это на самом деле

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

Порядок эксперимента

  1. Описать нормальное поведение в цифрах: доля успешных запросов, время ответа.
  2. Сформулировать гипотезу: что должно остаться в норме при таком-то отказе.
  3. Ограничить радиус: одна зона, один процент трафика, рабочее время, дежурный на месте.
  4. Ввести отказ и наблюдать.
  5. Остановить по заранее заданному условию, не по ощущению.
  6. Записать вывод и превратить его в задачу, иначе смысла нет.

С чего начинать

Уровень Что проверяем Готовность нужна
Начальный Восстановление из резервной копии с секундомером Никакой особой
Базовый Отказ одного экземпляра сервиса в тестовой среде Мониторинг и оповещения
Средний Задержки и потери в сети между сервисами Наблюдаемость и дежурство
Продвинутый Отказ зоны размещения в продуктиве Отработанные сценарии, бюджет ошибок

Первая строка доступна всем и почти всегда даёт находку: реальное время восстановления оказывается в разы больше заявленного.

Где ломается

Начинают с рабочей среды. Первые эксперименты проводят в тестовой, чтобы отладить сам процесс.

Нет условия остановки. Эксперимент должен прекращаться автоматически при выходе показателей за границу.

Не чинят найденное. Тогда это развлечение инженеров, а не дисциплина: каждая найденная слабость должна превращаться в задачу с владельцем.

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

Частые вопросы

Не опасно ли это
Опасен неуправляемый отказ, который случится сам. Эксперимент отличается тем, что происходит в рабочее время, с дежурным и с заранее заданным условием остановки.
С какого размера компании имеет смысл
С того момента, когда простой стоит заметных денег. До этого достаточно регулярной проверки восстановления из копий.
Как продать это руководству
Через один замер: сколько на самом деле занимает восстановление ключевого сервиса. Разрыв между ответом «часа полтора» и фактом обычно и есть обоснование.

Связанное

Материал оказался полезным?