Хаос инженерия - Chaos engineering

Логотип Chaos Monkey, используемый Netflix

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

Концепция

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

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

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

История

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

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

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

Модели возмущений

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

Обезьянья армия[5][6] это набор инструментов, разработанный Netflix для проверки надежности, безопасности или отказоустойчивости своего Веб-сервисы Amazon инфраструктура и включает следующие инструменты:[7]

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

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

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

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

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

Хаос Конг

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

Горилла Хаоса

Горилла Хаоса роняет полную амазонку "Зона доступности "(один или несколько целых центров обработки данных, обслуживающих географический регион).[11]

Обезьяна с задержкой

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

Доктор Обезьяна

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

Дворник Обезьяна

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

Обезьяна соответствия

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

Обезьяна безопасности

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

10-18 Обезьяна

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

Байт-Обезьяна

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

Машина Хаоса

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

Платформа Proofdock Chaos Engineering

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

Гремлин

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

Facebook Storm

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

Дни хаоса

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

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

ChaoSlingr

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

Инструментарий Хаоса

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

Mangle

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

Сетка Хаоса®

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

Chaos Mesh была опубликована в декабре 2019 года под Apache 2 лицензию и стал Фонд облачных вычислений (CNCF) песочница в июле 2020 года.[22]

Лакмус Хаос

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

Также Litmus Chaos является частью Проекты CNCF, под лицензией Apache 2

DevOps

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

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


Смотрите также

Примечания и ссылки

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