Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску
Логотип Chaos Monkey, используемый Netflix

Хаос-инжиниринг - это дисциплина проведения экспериментов над программной системой в производственной среде с целью создания уверенности в способности системы противостоять турбулентным и неожиданным условиям. [1]

Концепция [ править ]

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

Хаос-инжиниринг можно использовать для повышения устойчивости к:

  • Сбои инфраструктуры
  • Сбои сети
  • Сбои приложений

История [ править ]

В то время как контроль Netflix миграции «сек в облако в 2011 году [2] [3] Грег Orzell была идея обратиться отсутствие адекватного тестирования устойчивости установки инструмента , которые могут вызвать сбои в их производственной среде, окружающей среды , используемой Netflix клиенты. Намерение состояло в том, чтобы перейти от модели разработки, которая не предполагала сбоев, к модели, в которой сбои считались неизбежными, заставляя разработчиков рассматривать встроенную устойчивость как обязательство, а не как вариант:

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

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

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

Модели возмущений [ править ]

Логотип Simian Army от Netflix

Simian Army [6] [7] - это набор инструментов, разработанный Netflix для проверки надежности, безопасности или отказоустойчивости инфраструктуры Amazon Web Services, и включает следующие инструменты: [8]

Обезьяна Хаоса [ править ]

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

Код Chaos Monkey был выпущен Netflix в 2012 году под лицензией Apache 2.0. [9] [6]

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

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

LitmusChaos Bird курирует Chaos Engineering на системах Kubernetes

LitmusChaos [ править ]

LitmusChaos - это набор инструментов для создания облачного хаоса. Litmus предоставляет инструменты для управления хаосом в Kubernetes, чтобы помочь SRE найти слабые места в своих развертываниях. SRE используют Litmus для проведения экспериментов по хаосу сначала в промежуточной среде, а затем в производственной среде для поиска ошибок и уязвимостей. Устранение слабых мест приводит к повышению устойчивости системы.

LitmusChaos является частью проектов CNCF, лицензированных под Apache 2, и сыграл жизненно важную роль в продвижении истории Chaos Engineering следующего поколения, поскольку позволяет планировать рабочий процесс хаоса в считанные минуты с нуля, практически не требуя обучения. Первоначальное начало вашего пути к хаос-инженерии с Litmus просто:

  • Открытый исходный код: обеспечивает гибкость и гибкость, а также поддержку сообщества.
  • Декларативный характер: Litmus предоставляет CRD хаоса для управления хаосом. Используя API хаоса, оркестровка, планирование и управление сложными рабочими процессами можно выполнять декларативно.
  • Легко доступные эксперименты с хаосом: большинство общих экспериментов с хаосом легко доступны для вас, чтобы вы могли начать работу с вашими первоначальными потребностями в инженерии хаоса.
  • Вы можете внести свой собственный хаос, быстро создав базовую структуру эксперимента с помощью Litmus SDK. Разработчики Kubernetes и SRE должны добавить логику хаоса для создания нового эксперимента. [11]

Хаос Конг [ править ]

На самом верху иерархии Обезьяньей армии Chaos Kong отбрасывает полный AWS « Регион ». [12] Хотя и редко, но потеря всего региона случается, и Chaos Kong имитирует реакцию системы и восстановление на этот тип события.

Горилла Хаоса [ править ]

Chaos Gorilla удаляет полную « зону доступности » Amazon (один или несколько целых центров обработки данных, обслуживающих географический регион). [13]

Latency Monkey [ править ]

Вводит задержки связи для имитации деградации или сбоев в сети.

Доктор Обезьяна [ править ]

Выполняет проверки работоспособности, отслеживая такие показатели производительности, как загрузка ЦП, для обнаружения неработоспособных экземпляров, для анализа первопричин и возможного исправления или вывода экземпляра из эксплуатации.

Дворник Обезьяна [ править ]

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

Обезьяна соответствия [ править ]

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

Security Monkey [ править ]

Производный от Conformity Monkey, инструмента, который ищет и отключает экземпляры с известными уязвимостями или неправильными конфигурациями. [14]

10-18 Обезьяна [ править ]

Инструмент, который обнаруживает проблемы с локализацией и интернационализацией (известные под сокращениями «l10n» и «i18n») для программного обеспечения, обслуживающего клиентов в разных географических регионах.

Байт-Обезьяна [ править ]

Небольшая библиотека Java для тестирования сценариев сбоев в приложениях JVM . Он работает, инструментируя код приложения на лету, чтобы намеренно вводить ошибки, такие как исключения и задержка. [15]

Машина Хаоса [ править ]

ChaosMachine [16] - это инструмент, который занимается разработкой хаоса на уровне приложения в JVM. Он концентрируется на анализе возможности обработки ошибок каждого блока try-catch, задействованного в приложении, путем внедрения исключений.

Платформа Proofdock Chaos Engineering [ править ]

Платформа разработки хаоса, которая ориентирована на платформу Microsoft Azure и службы Azure DevOps и использует их . Пользователи могут вносить сбои на уровне инфраструктуры, платформы и приложения. [17]

Гремлин [ править ]

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

Facebook Storm [ править ]

Чтобы подготовиться к потере центра обработки данных, Facebook регулярно проверяет устойчивость своей инфраструктуры к экстремальным явлениям. Эта программа, известная как Storm Project, имитирует массовые отказы центров обработки данных. [19]

Дни Хаоса [ править ]

Вдохновленные AWS GameDays [20] для проверки устойчивости своих приложений, команды Voyages-sncf.com приняли участие в Day of Chaos. Каждые 30 минут операторы моделировали отказы на этапе подготовки производства. Команды зарабатывали баллы на основании обнаружений, диагнозов и решений. Этот тип игрового мероприятия помогает познакомить команды разработчиков с концепцией устойчивости. [21]

Представленная на конференции DevOps REX в 2017 году [22], концепция представлена ​​на сайте http://days-of-chaos.com для сбора других экспериментов.

ChaoSlingr [ править ]

ChaoSlingr - первое приложение Chaos Engineering для кибербезопасности с открытым исходным кодом. ChaoSlingr ориентирован в первую очередь на проведение экспериментов с безопасностью в инфраструктуре AWS для заблаговременного обнаружения слабых мест в системе безопасности в сложных распределенных системных средах. Опубликовано на GitHub в сентябре 2017 года.

Инструментарий Хаоса [ править ]

Chaos Toolkit родился из желания упростить доступ к дисциплине хаос-инжиниринга и продемонстрировать, что экспериментальный подход может быть реализован на разных уровнях: инфраструктура, платформа, но также и приложение. Chaos Toolkit - это инструмент с открытым исходным кодом, работающий под лицензией Apache 2 , опубликованный в октябре 2017 года. [23]

Mangle [ править ]

Mangle позволяет беспрепятственно проводить эксперименты по созданию хаоса с приложениями и компонентами инфраструктуры для оценки отказоустойчивости и отказоустойчивости. Он предназначен для выявления ошибок с минимальной предварительной настройкой и может поддерживать любую имеющуюся у вас инфраструктуру, включая K8S, Docker, vCenter или любую удаленную машину с включенным ssh. Благодаря мощной модели плагинов вы можете определить настраиваемую ошибку по вашему выбору на основе шаблона и запустить ее, не создавая код с нуля.

Сетка Хаоса [ править ]

Chaos Mesh - это облачная платформа с открытым исходным кодом Chaos Engineering, которая организует эксперименты с хаосом в средах Kubernetes. Он поддерживает комплексные типы моделирования сбоев, включая сбои модулей, сбои контейнеров, сбои сети, сбои файловой системы, сбои системного времени и сбои ядра.  

Chaos Mesh был опубликован в декабре 2019 года по лицензии Apache 2 и в июле 2020 года стал проектом песочницы Cloud Native Computing Foundation (CNCF) . [24]


DevOps [ править ]

Набор инструментов DevOps

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


См. Также [ править ]

  • Отказоустойчивость
  • Отказоустойчивая компьютерная система
  • Избыточность данных
  • Обнаружение и исправление ошибок
  • Падение назад и вперед
  • Устойчивость (сеть)
  • Надежность (информатика)

Примечания и ссылки [ править ]

  1. ^ «Принципы Хаос-Инжиниринга» . Principlesofchaos.org . Проверено 21 октября 2017 .
  2. ^ a b "Обезьянья армия Netflix" . Технический блог Netflix . Средний . 2011-07-19 . Проверено 21 октября 2017 .
  3. ^ US20120072571 A1 , Орцелл, Грегори С. и Юрий Израилевский, «Проверка устойчивости сетевых приложений» 
  4. ^ "Netflix Chaos Monkey Upgraded" . Технический блог Netflix . Средний . 2016-10-19 . Проверено 21 октября 2017 .
  5. ^ "PhoenixServer" . martinFowler.com . Мартин Фаулер (инженер-программист) . 2012-07-10 . Проверено 14 января 2021 .
  6. ^ a b «SimianArmy: инструменты для вашего облака, работающие в отличной форме. Chaos Monkey - это инструмент обеспечения отказоустойчивости, который помогает приложениям выдерживать случайные сбои экземпляров» . Netflix, Inc. 2017-10-20 . Проверено 21 октября 2017 .
  7. ^ SimianArmy: Инструменты для поддержания оптимальной работы вашего облака. Chaos Monkey - это инструмент обеспечения отказоустойчивости, который помогает приложениям выдерживать случайные сбои экземпляров , Netflix, Inc., 07.11.2017 , получено 07.11.2017.
  8. ^ SemiColonWeb (2015-12-08). «Инфраструктура: какие методы используются для адаптера новой архитектуры Cloud? - Блог D2SI» . Блог D2SI (на французском) . Проверено 7 ноября 2017 .
  9. ^ "Netflix бесплатно Chaos Monkey в джунглях с открытым исходным кодом - Le Monde Informatique" . LeMondeInformatique (на французском языке) . Проверено 7 ноября 2017 .
  10. ^ "Mais qui sont ces singes du chaos?" [Но кто эти обезьяны хаоса?]. 15маршей (на французском). 2017-07-25 . Проверено 21 октября 2017 .
  11. ^ "Cloud-Native Chaos Engineering - Повышение отказоустойчивости приложений Kubernetes" . CNCF . 2019-11-06.
  12. ^ "Chaos Engineering Upgraded" , medium.com , 19 апреля 2017 г. , получено 10 апреля 2020 г.
  13. ^ "The Netflix Simian Army" , medium.com , получено 12 декабря 2017 г.
  14. ^ «Security Monkey отслеживает организации AWS, GCP, OpenStack и GitHub на предмет активов и их изменений с течением времени .: Netflix / Security_monkey» . 2019-06-22.
  15. ^ "Репозиторий Byte-Monkey на GitHub" . GitHub . 2019-06-20.
  16. ^ Чжан, Лонг; Морин, Брайс; Галлер, Филипп; Бодри, Бенуа; Монперрус, Мартин (2019). «Система Chaos Engineering для анализа в реальном времени и фальсификации обработки исключений в JVM». IEEE Transactions по разработке программного обеспечения : 1. arXiv : 1805.05246 . DOI : 10.1109 / TSE.2019.2954871 . ISSN 0098-5589 . S2CID 46892241 .  
  17. ^ «Платформа разработки хаоса для Microsoft Azure» . medium.com . Проверено 28 июня 2020 .
  18. ^ «Гремлин собирает 18 миллионов долларов на расширение платформы тестирования« отказ как услуга »» . VentureBeat . 2018-09-28 . Проверено 24 октября 2018 .
  19. ^ Hof, Роберт (2016-09-11), "Интервью: Как Грозовые Heads Facebook, Off Project Data Center катастроф" , Forbes , извлекаться 2017-10-21
  20. ^ SemiColonWeb (4 июля 2016 г.). «GameDay AWS: проверьте устойчивость облака приложений» . Блог D2SI . Проверено 21 октября 2017 .
  21. ^ «DevOps: обратная связь от Voyages-sncf.com - Blog du Moderator» , блог модератора (на французском языке), 17 марта 2017 г. , получено 21 октября 2017 г.
  22. ^ «Дни Хаоса: развитие культуры DevOps в Voyages-Sn ...» Slideshare . 2017-10-03. DevOps REX. [ постоянная мертвая ссылка ]
  23. ^ Майлз, Расс (2017-10-06). «Введение и расширение инструментария Хаоса» . Расс Майлз (Компьютерщик на Харлее) . Проверено 23 октября 2017 .
  24. ^ Chaos Mesh Авторы (28 июля 2020). «Chaos Mesh® присоединяется к CNCF в качестве песочницы» . Сетка Хаоса® .

Внешние ссылки [ править ]

  • Принцип инженерии хаоса - манифест инженерии хаоса
  • Chaos Engineering - Адриан Хорнсби
  • Как методы Chaos Engineering помогут вам разрабатывать лучшее программное обеспечение - Мариано Каландра