Chaos Engineering — это практика намеренного создания сбоев в системе для выявления её слабых мест. С её помощью можно обнаружить скрытые проблемы в проектировании, масштабируемости и отказоустойчивости.

Сегодня мы собрали статьи и научные работы, посвящённые фреймворкам и инструментам для хаос-инжиниринга. Рассказываем о решениях ChaosETH, ChaosEater, CHESS и паре других, предложенных специалистами ведущих исследовательских институтов и корпораций.

Нагрузить serverless-приложения

Коби Аарон занимает должность главного архитектора программного обеспечения в ИБ-компании CyberArk. И он написал статью-руководство, посвященную нагрузочному тестированию в бессерверных архитектурах с использованием методов хаос-инжиниринга.

Автор описывает фреймворк, включающий четыре этапа хаос-тестирования:

а) формулировка гипотезы;

б) вызов сбоя;

в) наблюдение за системой;

г) доработка конфигурации.

Чтобы продемонстрировать его на практике, автор провел эксперимент на архитектуре с API-шлюзом и перераспределением трафика между регионами.

Аарон сформулировал гипотезу: если один регион выходит из строя, трафик должен автоматически перенаправляться на другой, «здоровый». Затем он использовал специальное расширение с открытым исходным кодом, которое искусственно добавляло случайную задержку при выполнении бессерверных функций. Эта задержка должна была говорить о «неисправности» региона и вызывать переключение трафика. Материал содержит пояснения от автора, а также сниппеты кода и конфигураций.

LLM для хаос-инжиниринга

Сотрудники NTT разработали систему ChaosEater, которая автоматизирует хаос-инжиниринг для повышения отказоустойчивости распределённых систем на базе Kubernetes. Авторы отмечают, что многие инструменты позволяют проводить эксперименты в автоматическом режиме. Однако определение параметров тестов и восстановление системы после сбоев чаще всего выполняются вручную. Чтобы сократить трудозатраты, инженеры предложили свою систему, автоматизирующую пайплайн с помощью LLM.

Процесс следует стандартному циклу Chaos Engineering: определение гипотезы, проведение эксперимента, анализ результатов и внедрение улучшений. Система сначала определяет нормальное поведение тестируемой системы (steady state), затем с помощью Chaos Mesh — облачной open source платформы для хаос-инжиниринга в Kubernetes — выбирает сценарии сбоев и генерирует скрипты для их реализации.

Эффективность ChaosEater проверили на тестовом интернет-магазине Sock Shop (его код выложен на GitHub, хотя репозиторий на сегодняшний день уже заархивирован). В ходе тестирования система выявила, что фронтенд с одной репликой не справляется с нагрузкой при отказе пода, и предложила увеличить количество реплик до двух. После изменения конфигурации сервис успешно прошел повторный тест.

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

Протестировать Ethereum-клиент

Блокчейн-клиенты должны сохранять работоспособность даже при наличии сбоев в системных вызовах — то есть обладать определённым запасом прочности. Чтобы разработчики могли проектировать надежные Ethereum-клиенты и выявлять потенциальные уязвимости, исследователи из Королевского технологического института Швеции (KTH) разработали инструмент ChaosETH. Он оценивает «устойчивость» клиентов Ethereum с использованием методов хаос-инжиниринга.

Методологией они поделились в своей статье. Принцип работы ChaosETH можно описать следующим образом. Сначала инструмент мониторит поведение Ethereum-клиентов, чтобы установить базис. Затем он вызывает сбои в системных вызовах к операционной системе и наблюдает за реакцией, сравнивая её поведение с исходными показателями для оценки последствий.

Для демонстрации возможностей инструмента инженеры провели серию тестов с различными клиентами, оценив влияние 22 различных сбоев на их работу. В частности, исследователи имитировали ошибки в критически важных вызовах, таких как futex() и epoll_pwait(). Код и описание экспериментов доступны в репозитории.

Проверить систему на «самоисцеление»

Сотрудники Simula Research Laboratory разработали фреймворк CHESS. Это — инструмент для хаос-тестирования самовосстанавливающихся и самонастраивающихся систем. Он проверяет способность приложения вернуться в нормальное состояние после сбоя и анализирует поведение его компонентов под нагрузкой.

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

Авторы подчёркивают, что до появления CHESS не существовало инструментов, которые могли бы систематически воспроизводить сбои и анализировать поведение самовосстанавливающихся систем в условиях, приближенных к реальным.

В опубликованной работе исследователи приводят результаты нескольких экспериментов. В одном из них — под названием «умный офис» — тестировали систему, объединяющую модули освещения, климат-контроля, погоды и датчиков движения, связанные через брокера MQTT. CHESS искусственно искажал данные (например, изменял показания температуры), вводил задержки и отключал сенсоры.

Исследователи отмечают, что даже одинаковые сбои могут по-разному влиять на систему. CHESS не просто фиксирует факт восстановления, но и помогает понять причины и последствия каждого сбоя, что особенно ценно для разработчиков.

Найти «просадки» в распределённых СУБД

Исследователи из Гонконгского университета науки и технологий разработали PerfCE — фреймворк для выявления проблем производительности в распределённых СУБД. PerfCE позволяет идентифицировать источник сбоя. Кроме того, он позволяет получить ответы на вопросы вида: что будет, если снизить нагрузку на CPU до 45%?

Работа реализуется в два этапа: офлайн и онлайн. Сперва происходит сбор данных о системе и обучение интеллектуального алгоритма. PerfCE использует методы двойного машинного обучения (DML) и обучается с помощью уже упомянутого Chaos Mesh. Далее — выполняется анализ целевой СУБД на наличие аномалий, а профильные метрики сравниваются с исходными данными на графе.

Код фреймворка, документация и примеры есть на GitHub, а подробности исследования — на arxiv.org.


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

Комментарии (0)