Короткий ответ
Chaos engineering — это практика намеренного внесения контролируемых сбоев (отказ узла, задержка сети, недоступность зависимости) в систему, чтобы проверить гипотезы об её устойчивости до того, как аналогичный сбой случится сам по себе и застанет команду врасплох.
Как это работает подробнее
эксперимент начинают с гипотезы ("если упадёт одна реплика сервиса X, остальные должны выдержать нагрузку без роста ошибок"), затем вносят контролируемое воздействие с ограниченным радиусом (blast radius), наблюдают метрики и либо подтверждают гипотезу, либо находят слабое место.
Пример / кейс
Ожидаемое поведение: при здоровой архитектуре оставшиеся поды сервиса checkout принимают на себя нагрузку, доля ошибок и latency остаются в пределах SLO; рост ошибок выше нормы означает, что система не готова к потере даже одного инстанса.
Пример кода
# Пример команды chaos-инструмента (псевдо-синтаксис): убить один под сервиса checkout
chaos-tool attack pod --selector app=checkout --count 1 --duration 5mЧто использовать на практике
- Практический подход. Эксперименты начинают в тестовой среде, затем постепенно переносят в прод с минимальным blast radius (например, 1% трафика) и готовым способом немедленно остановить эксперимент ("kill switch"). Это отличается от случайного сбоя тем, что команда заранее готова, мониторит ситуацию и может прервать эксперимент.
Подводные камни
- Частые ошибки. Запускать хаос-эксперименты в проде без заранее согласованного окна и плана отката; тестировать сразу весь трафик вместо постепенного увеличения blast radius; не формулировать гипотезу заранее, из-за чего результат эксперимента невозможно однозначно интерпретировать.