Давайте розглянемо, яким чином можна підвищити надійність виробничих процесів, використовуючи інструменти Інженерії Хаосу.
Інженерія Хаосу – це підхід, що передбачає проведення експериментів з вашою системою або додатком для виявлення слабких місць та потенційних збоїв. Це стосується ситуацій, які ви не передбачили під час розробки. Шляхом навмисного створення збоїв у системі можна виявити її вразливості, щоб потім їх виправити і зробити систему більш стійкою та надійною.
Багато відомих організацій, такі як Netflix, LinkedIn та Facebook, використовують Інженерію Хаосу для глибшого розуміння архітектури своїх мікросервісів і розподілених систем. Це допомагає їм оперативно виявляти нові проблеми, перш ніж на них поскаржаться користувачі, та вживати необхідних заходів для їх усунення. Завдяки цьому ці компанії можуть ефективно обслуговувати мільйони користувачів, підвищувати їх продуктивність та заощаджувати значні кошти 🤑.
Переваги Інженерії Хаосу:
- Мінімізація фінансових втрат шляхом виявлення критичних проблем.
- Зниження ймовірності системних або програмних збоїв.
- Покращення взаємодії з користувачами завдяки зменшенню збоїв і високій доступності послуг.
- Збільшення розуміння роботи системи та впевненості в її надійності.
Наскільки ви впевнені в надійності своїх виробничих процесів? Чи є ваша система дійсно стійкою до катастроф?
Давайте ознайомимося з популярними інструментами для тестування хаосу, які допоможуть вам це з’ясувати.
Chaos Mesh
Chaos Mesh – це рішення для управління хаосом, яке вводить помилки на кожному рівні системи Kubernetes. Це включає в себе модулі, мережу, систему вводу-виводу та ядро. Chaos Mesh може автоматично завершувати роботу модулів Kubernetes та імітувати затримки. Він може порушувати зв’язок між модулями та моделювати помилки читання/запису. Також, він дозволяє планувати експерименти та визначати їх обсяг. Експерименти налаштовуються за допомогою файлів YAML.
Chaos Mesh має інформаційну панель для аналізу результатів експериментів. Він працює на базі Kubernetes і підтримує більшість хмарних платформ. Це проєкт з відкритим вихідним кодом, який нещодавно був прийнятий як проєкт-пісочниця CNCF. Застосовуючи принципи Інженерії Хаосу, ви можете інтегрувати Chaos Mesh у свій DevOps-процес для створення стійких додатків.
Особливості Chaos Engineering:
- Легка інтеграція в кластери Kubernetes без змін у логіці розгортання.
- Не потребує унікальних залежностей для розгортання.
- Визначає об’єкти хаосу за допомогою CustomResourceDefinitions (CRD).
- Забезпечує інформаційну панель для моніторингу всіх експериментів.
Chaos ToolKit – це простий інструмент з відкритим вихідним кодом для автоматизації експериментів з Інженерії Хаосу.
Ви можете інтегрувати Chaos ToolKit зі своєю системою за допомогою набору драйверів або плагінів, які підтримують AWS, Google Cloud, Slack, Prometheus та інші.
Особливості Chaos ToolKit:
- Надає декларативний відкритий API для створення експериментів хаосу, незалежно від постачальника чи технології.
- Легка інтеграція в CI/CD конвеєри для автоматизації.
- Комерційна та корпоративна підтримка через ChaosIQ.
ChaosKube
Як можна здогадатися з назви, цей інструмент призначений для Kubernetes.
Chaoskube – це інструмент хаосу з відкритим вихідним кодом, який періодично завершує роботу випадкових модулів в кластері Kubernetes. Це дозволяє зрозуміти, як ваша система буде реагувати, коли модуль виходить з ладу. За замовчуванням, він знищує модуль у будь-якому просторі імен кожні 10 хвилин. Ви можете фільтрувати цільові модулі в Chaoskube за допомогою просторів імен, міток, анотацій тощо. Інструмент легко встановити.
Chaos Monkey
Chaos Monkey – це інструмент, який використовується для перевірки стійкості хмарних систем шляхом навмисного створення збоїв, щоб зрозуміти, як вони на них реагують. Netflix створив його для перевірки стійкості та можливості відновлення інфраструктури AWS. Його назвали Chaos Monkey (Мавпа Хаосу), оскільки він створює руйнування, як дика та озброєна мавпа, щоб перевірити систему на відмовостійкість.
Власне, саме Chaos Monkey започаткувала нову інженерну практику – Інженерію Хаосу. Він був створений на основі принципу, що краще зазнавати невеликих збоїв кілька разів, щоб уникнути раптових великих збоїв.
Особливості Chaos Monkey:
- Допомагає підготуватися до випадкових збоїв екземплярів.
- Сприяє резервуванню для несподіваних збоїв.
- Використовує Spinnaker для забезпечення сумісності між хмарами.
- Надає налаштовуваний розклад для імітації збоїв.
- Інтегрований з govendor для додавання нових залежностей.
Simmy
Simmy — це інструмент хаосу для введення помилок, що інтегрується з проектом стійкості Polly для .NET. Він дозволяє створювати політики впровадження хаосу через Polly, де ви виконуєте свій код. Simmy пропонує різні політики, такі як політика винятків для впровадження винятків в систему, політика поведінки для впровадження нової поведінки тощо. Ці політики призначені для випадкового впровадження поведінки.
Особливості Simmy:
- Надає політику Мавпи або політику Хаосу для внесення хаосу.
- Легко перевірити будь-які помилки залежностей.
- Допомагає швидко повернутися до робочої моделі та контролює радіус вибуху.
- Готовий до використання у виробництві.
- Може визначати збої на основі зовнішніх факторів (наприклад, збої через глобальну конфігурацію).
Pystol
Pystol – це інструмент, який використовується для введення помилок у хмарні середовища. Він спостерігає за подіями в ETCD через операторів Kubernetes. Коли виконується дія ін’єкції помилки, оператори створюють модулі та запускають певні колекції Ansible. Це означає, що розробникам не потрібно писати власні дії для виконання.
Pystol пропонує готові дії для перевірки системи. Однак, якщо розробник хоче створити нову дію, це можна зробити за допомогою GoLang і Python.
Інструмент надає інформаційну панель безперервної інтеграції, яка дозволяє отримати загальний огляд усіх операцій. Pystol можна запустити локально або розгорнути в контейнері за допомогою образу докера. Pystol пропонує два інтерфейси: веб-інтерфейс та CLI. Веб-інтерфейс є більш зручним варіантом.
Muxy
Muxy — це проксі-сервер для перевірки шаблонів стійкості та відмовостійкості розподілених систем у реальних умовах. Він може втручатися на транспортному рівні (рівень 4), рівні сеансу TCP (рівень 5) та на рівні протоколу HTTP (рівень 7).
Особливості Muxy:
- Модульна архітектура, яка легко розширюється.
- Має офіційний докер-контейнер.
- Легка установка без залежностей.
- Ідеально підходить для постійного тестування на стійкість.
- Імітує проблеми з мережевим підключенням для розподілених систем і мобільних пристроїв.
Pumba
Pumba – це інструмент командного рядка, який виконує тестування хаосу для контейнерів докер. За допомогою Pumba ви можете навмисно руйнувати докер-контейнери програми, щоб побачити реакцію системи. Ви також можете проводити стрес-тестування ресурсів контейнера, таких як ЦП, пам’ять, файлова система, введення/виведення тощо.
Pumba також можна запустити на кластері Kubernetes. Для цього потрібно використовувати DaemonSets, щоб розгорнути Pumba на вузлах Kubernetes. Можна використовувати кілька контейнерів Pumba для запуску різних команд Pumba в одному DaemonSet.
ChaosBlade
ChaosBlade – це інструмент з відкритим вихідним кодом для введення експериментів у системи від компанії Alibaba. Він враховує всі збої, з якими стикалася Alibaba протягом останніх десяти років, і застосовує кращі практики для їх уникнення. Інструмент дотримується принципів Інженерії Хаосу для перевірки відмовостійкості розподілених систем.
Особливості ChaosBlade:
- Надає експериментальні сценарії для різних ресурсів, таких як ЦП, мережа, пам’ять, диск тощо.
- Надає експериментальні сценарії для вузлів, мереж та модулів на платформі Kubernetes.
- Забезпечує прості у використанні команди CLI для виконання експериментів.
Litmus
Litmus дотримується принципів Інженерії Хаосу в хмарі. Місія цього інструменту полягає в наданні структури для виявлення слабких місць у ваших системах Kubernetes і додатках, що працюють на Kubernetes.
Він використовує оператор хаосу та CRD (CustomResourceDefinitions), що забезпечує можливість підключення та ефективної роботи. Все зводиться до того, щоб розмістити вашу логіку хаосу в образі докер, кинути його в структуру Litmus і організувати за допомогою CRD.
Особливості Litmus:
- Допомагає інженерам та розробникам Site Reliability виявляти слабкі місця в системі Kubernetes.
- Надає готові до використання загальні експерименти.
- Забезпечує Chaos API для керування робочим процесом хаосу.
- Litmus SDK підтримує Go, Python і Ansible для створення власних експериментів.
Gremlin
Gremlin допомагає інженерам створювати більш стійке програмне забезпечення. Він надає платформу для безпечного, захищеного та легкого проведення експериментів з Інженерії Хаосу.
За допомогою Gremlin ви можете продумано впроваджувати помилки в хости або контейнери, незалежно від того, де вони розміщені: у публічній хмарі чи у власному центрі обробки даних.
Особливості Gremlin:
- Встановлює легкий агент на хости або контейнери для введення помилок.
- Забезпечує 10+ різних режимів атаки на інфраструктуру.
- Гремліни стану дозволяють маніпулювати системним часом, вимикати чи перезапускати хости та завершувати процеси.
- Мережеві гремліни можуть створювати затримки, спричиняти втрату пакетів або втрату трафіку.
- Атаки на бібліотеку Alfi від Gremlin можна налаштовувати, запускати та зупиняти через веб-програму, API або CLI.
- Дозволяє точно націлювати радіус вибуху, який ви хочете атакувати.
- Дозволяє зупинити всі атаки та повернути систему до стабільного стану.
Steadybit
Steadybit спрямований на завчасне скорочення часу простою та забезпечення видимості системних проблем. Ви можете запустити цей інструмент локально у своїй інфраструктурі або у хмарі як послугу (SaaS).
Щоб використовувати Steadybit, потрібно визначити ситуацію, імітувати експерименти, виконати змодельовані експерименти на виробництві та автоматизувати всі експерименти. Інструмент запускає інтелектуальні агенти у вашій системі для виявлення потенційних проблем та слабких місць. Він легко інтегрується з різними системами.
Висновок
Не бійтеся застосувати принципи Інженерії Хаосу та протестуйте свої виробничі процеси за допомогою зазначених інструментів. Вони допоможуть вам знайти численні невизначені слабкі місця у вашій системі та зробити її більш стійкою.