Хаос-инжиниринг и хаос-обезьяны как методы создания сбоев в системе для выявления её слабых мест

Лекция



Инженерия хаоса — это дисциплина экспериментирования над системой с целью повышения уверенности в способности системы выдерживать турбулентные условия в процессе производства.

Концепция

В разработке программного обеспечения способность программы выдерживать сбои , обеспечивая при этом надлежащее качество обслуживания — часто называемая отказоустойчивостью — обычно указывается в качестве требования. Однако команды разработчиков могут не выполнить это требование из-за таких факторов, как сжатые сроки или недостаток знаний в предметной области. Хаос-инженерия включает в себя методы, направленные на выполнение требований к отказоустойчивости.

Инженерия хаоса может быть использована для достижения устойчивости к сбоям инфраструктуры , сбоям сети и сбоям приложений; последнее включает в себя устойчивость к необработанным исключениям .

Основные принципы

  1. Определи нормальное поведение (steady state)
    → например: 95% запросов < 200ms
  2. Сформулируй гипотезу
    → «если упадет 1 сервер, система продолжит работать»
  3. Внеси контролируемый сбой
  4. Наблюдай метрики
  5. Минимизируй blast radius
    → начинай с маленьких экспериментов

Chaos Engineering напрямую проверяет:

  • робастность (robustness) → выдерживает ли система сбои
  • восстанавливаемость (resilience) → как быстро она приходит в норму
  • слабую связность (low coupling) → не тянет ли падение одного сервиса всю систему

Хаос-инжиниринг и хаос-обезьяны как методы создания сбоев в системе для выявления её слабых мест

Оперативная готовность с использованием хаос-инженерии

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

Оценка, призванная вызвать хаос в среде Kubernetes , привела к завершению работы случайных подов, получающих данные от периферийных устройств в центрах обработки данных во время обработки аналитики в сети больших данных. Время восстановления подов было показателем отказоустойчивости, который оценивал время отклика.

История

1983 – Apple

Пока разрабатывались MacWrite и MacPaint для первого компьютера Apple Macintosh , Стив Кэппс создал «Обезьянку» — настольный аксессуар , который случайным образом генерировал события пользовательского интерфейса на высокой скорости, имитируя обезьяну, отчаянно стучащую по клавиатуре, двигающуюся и щелкающую мышью. Его быстро стали использовать для отладки , генерируя ошибки для исправления программистами, поскольку автоматическое тестирование было невозможно; у первого Macintosh было слишком мало свободного места в памяти для чего-либо более сложного.

1992 – Пролог. Пока разрабатывались ABAL2 и SING для первых графических версий операционной системы PROLOGUE, Иэн Джеймс Маршалл создал «La Matraque» — настольное устройство , которое на высокой скорости генерировало случайные последовательности как допустимых, так и недопустимых событий графического интерфейса , проверяя таким образом поведение критически важных графических библиотек на границах разделов. Эта программа запускалась перед поставкой в производство и работала несколько дней подряд, обеспечивая необходимую степень полной отказоустойчивости. Впоследствии этот инструмент был расширен, чтобы включить инструкции доступа к базам данных и другим файлам языка ABAL для проверки и обеспечения их последующей отказоустойчивости. Вариант этого инструмента в настоящее время используется для проверки современной версии, известной как OPENABAL.

2003 – Amazon

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

2006 – Google

Работая в Google , Крипа Кришнан создал программу, аналогичную программе Amazon Game Day (см. выше), под названием "DiRT" (Disaster Recovery Testing). Джейсон Кахун, инженер по надежности сайтов в Google, написал главу о Google DiRT в книге "Chaos Engineering" и описал систему на конференции GOTOpia 2021.

2011 – Netflix

В 2011 году , курируя миграцию Netflix в облако, Нора Джонс, Кейси Розенталь и Грег Орзелл расширили эту дисциплину, работая вместе в Netflix, создав инструмент, который вызывал сбои в их производственной среде, используемой клиентами Netflix. Цель состояла в том, чтобы перейти от модели разработки, предполагающей отсутствие сбоев, к модели, где сбои считались неизбежными, побуждая разработчиков рассматривать встроенную отказоустойчивость как обязанность, а не как опцию:

«В Netflix наша культура свободы и ответственности привела к тому, что мы не заставляли инженеров проектировать свой код определенным образом. Вместо этого мы обнаружили, что можем объединить наши команды вокруг идеи отказоустойчивости инфраструктуры, изолируя проблемы, создаваемые нейтрализацией серверов, и доводя их до крайности. Мы создали Chaos Monkey — программу, которая случайным образом выбирает сервер и отключает его в обычные часы работы. Кому-то это покажется безумием, но мы не могли полагаться на случайное возникновение события для проверки нашего поведения перед лицом последствий этого события. Знание того, что это будет происходить часто, создало сильное взаимодействие среди инженеров для создания резервирования и автоматизации процессов, чтобы пережить подобные инциденты, не затрагивая миллионы пользователей Netflix. Chaos Monkey — один из наших наиболее эффективных инструментов для повышения качества наших услуг».

Регулярно "отключая" случайные экземпляры программного сервиса, можно было протестировать избыточную архитектуру и убедиться, что сбой сервера не оказывает заметного влияния на клиентов.

Концепция хаос-инженерии близка к концепции серверов Phoenix, впервые представленной Мартином Фаулером в 2012 году.

Виды хаос-инжиниринг а (по типу воздействия)

1. Инфраструктурный хаос

  • падение серверов
  • отключение сети
  • проблемы с дисками

Chaos Monkey, Gorilla

2. Сетевой хаос

  • latency
  • packet loss
  • DNS проблемы

Latency Monkey

3. Аппликативный хаос

  • ошибки API
  • некорректные ответы
  • таймауты

Exception Monkey

4. Безопасность

  • misconfiguration
  • открытые доступы

Security Monkey

5. Региональный / глобальный

  • падение датацентров
  • failover

Kong / Gorilla

Хаос-инжиниринг ≠ случайный хаос

Это ближе к:

  • научному эксперименту
  • hypothesis-driven testing

Например Chaos Kong / Chaos Gorilla в идеале проверяются на реальных продакшн-системах, но очень контролируемо и поэтапно.

Главное правило Chaos Engineering

Тест должен быть максимально приближен к реальности,
но риск должен быть управляемым

Chaos Kong (падение региона) Это уже очень высокий уровень зрелости

Реальный подход:

  1. сначала staging
  2. потом shadow-трафик
  3. потом:
    • 1% пользователей
    • или read-only операции
  4. только потом полноценный тест

Инструменты инженерии хаоса

Обезьяна Хаоса

Chaos Monkey — это инструмент, разработанный Netflix в 2011 году для проверки устойчивости своей ИТ-инфраструктуры. Он работает путем преднамеренного отключения компьютеров в производственной сети Netflix, чтобы проверить, как оставшиеся системы реагируют на сбой. Chaos Monkey теперь является частью более крупного набора инструментов под названием Simian Army, предназначенного для моделирования и тестирования реакции на различные системные сбои и крайние случаи.

Код, лежащий в основе Chaos Monkey, был выпущен компанией Netflix в 2012 году под лицензией Apache 2.0.

Название «Обезьяна Хаоса» объясняется в книге Антонио Гарсиа Мартинеса «Обезьяны Хаоса »:

Представьте себе обезьяну, проникающую в «центр обработки данных» — эти «фермы» серверов, на которых размещаются все критически важные функции нашей онлайн-деятельности. Обезьяна беспорядочно рвет кабели, ломает устройства и возвращает все, что попадает ей в руки [то есть разбрасывает экскременты]. Задача ИТ-менеджеров — спроектировать информационную систему, за которую они отвечают, таким образом, чтобы она могла работать, несмотря на этих обезьян, ведь никто никогда не знает, когда они появятся и что они разрушат.

Что делает:
Случайно выключает инстансы (серверы)

Цель:
Проверить, что система:

  • масштабируется
  • умеет self-healing
  • не падает от одного узла

Обезьянья армия

«Армия обезьян» — это набор инструментов, разработанных Netflix для проверки надежности, безопасности или отказоустойчивости своей инфраструктуры Amazon Web Services , и включает в себя следующие инструменты:

  • На самом верху иерархии армии обезьян Хаос Конг сбрасывает целый регион AWS . Хотя это и редкость, потеря целого региона все же происходит, и Хаос Конг имитирует реакцию системы и восстановление после такого события.
  • Chaos Gorilla разворачивает целую « зону доступности » Amazon (один или несколько целых центров обработки данных, обслуживающих географический регион).

Latency Monkey

Что делает:
Добавляет задержки (latency)

Цель:
Проверить:

  • таймауты
  • retry-логику
  • деградацию UX

Exception Monkey

Что делает:
Генерирует ошибки (exceptions)

Цель:

  • обработка ошибок
  • fallback-логика
  • circuit breakers

Chaos Gorilla

Что делает:
Отключает целый дата-центр / availability zone

Chaos Kong

Цель:
Проверка:

  • multi-region архитектуры
  • disaster recovery

Что делает:
Вырубает целый регион

Цель:

  • глобальная отказоустойчивость
  • failover между регионами

Security Monkey

Что делает:
Ищет уязвимости (например, открытые порты)

Цель:

  • безопасность инфраструктуры
  • корректность IAM/ACL

Conformity Monkey

Что делает:
Удаляет неиспользуемые ресурсы

Цель:

  • уменьшение мусора
  • контроль конфигурации

Другие свзанные понятия

«День хаоса» Voyages-sncf.com в 2017 году превратил моделирование сбоев на этапе подготовки к производству в игру , что было представлено на конференции DevOps REX 2017 года. Компания Steadybit, основанная в 2019 году, популяризировала хаос на этапе подготовки к производству и инженерию надежности. Ее открытый Reliability Hub расширяет возможности Steadybit.

Proofdock может внедрять сбои инфраструктуры, платформы и приложений в Microsoft Azure DevOps . Gremlin — это платформа «сбой как услуга». Проект Storm от Facebook имитирует сбои центров обработки данных для повышения устойчивости к стихийным бедствиям.

Вау!! 😲 Ты еще не читал? Это зря!

  • избыточность данных
  • Обнаружение и исправление ошибок
  • Система быстрого реагирования на отказы
  • Принцип «быстрого провала» (в бизнесе) — смежная тема в управлении бизнесом.
  • Перемещайтесь вперед и назад
  • Внедрение ошибок
  • Отказоустойчивость
  • Отказоустойчивая компьютерная система
  • Смазка (сетевое взаимодействие)
  • Устойчивость (сеть)
  • Надежность ( информатика )
  • Фаззинг
создано: 2026-05-01
обновлено: 2026-05-11
1



Помог ли вам этот ответ?
Нажмите оценку и напишите коротко почему. Так мы сможем сделать следующие ответы точнее и полезнее.
Насколько вы довольны ответом?
Ваш отзыв напрямую влияет на качество следующих подсказок и ответов.


Поделиться:
Пожаловаться

Найди готовое или заработай

С нашими удобными сервисами без комиссии*

Как это работает? | Узнать цену?

Найти исполнителя
$0 / весь год.
  • У вас есть задание, но нет времени его делать
  • Вы хотите найти профессионала для выполнения задания
  • Возможно применение функции гаранта на сделку
  • Приоритетная поддержка
  • идеально подходит для студентов, у которых нет времени для решения заданий
Готовое решение
$0 / весь год.
  • Вы можете продать (как исполнитель) или купить (как заказчик) готовое решение
  • Вам предоставят готовое решение
  • Будет предоставлено в минимальные сроки т.к. задание уже готовое
  • Вы получите базовую гарантию 8 дней
  • Вы можете заработать на материалах
  • подходит как для студентов так и для преподавателей
Я исполнитель
$0 / весь год.
  • Вы профессионал своего дела
  • У вас есть опыт и желание зарабатывать
  • Вы хотите помочь в решении задач или написании работ
  • Возможно применение функции гаранта на сделку
  • подходит для опытных студентов так и для преподавателей

Комментарии

Оставить комментарий

Если у вас есть какое-либо предложение, идея, благодарность или комментарий, не стесняйтесь писать. Мы очень ценим отзывы и рады услышать ваше мнение.
To reply

Лекции и учебник по "Качество и тестирование программного обеспечения. Quality Assurance."

Термины: Качество и тестирование программного обеспечения. Quality Assurance.