Хаос-инжиниринг — это дисциплина экспериментирования с системой с целью создания уверенности в ее способности выдерживать нестабильные условия производства. [1]
В разработке программного обеспечения способность данного программного обеспечения выдерживать сбои , при этом обеспечивая адекватное качество обслуживания — часто называемое устойчивостью — обычно указывается как требование. Однако команды разработчиков могут не выполнить это требование из-за таких факторов, как короткие сроки или отсутствие знаний в предметной области. Хаос-инжиниринг охватывает методы, направленные на выполнение требований устойчивости.
Хаос-инжиниринг можно использовать для достижения устойчивости к сбоям инфраструктуры, сбоям сети и сбоям приложений.
Расчет того, насколько мы уверены во взаимосвязанных сложных системах, которые внедряются в производственные среды, требует показателей эксплуатационной готовности. Эксплуатационную готовность можно оценить с помощью моделирования хаос-инжиниринга. Решения по повышению устойчивости и эксплуатационной готовности платформы включают укрепление резервного копирования, восстановления, сетевой передачи файлов, возможностей отказоустойчивости и общей безопасности среды.
Оценка для создания хаоса в среде Kubernetes завершила случайные pod, получающие данные от периферийных устройств в центрах обработки данных во время обработки аналитики в сети больших данных. Время восстановления pod было показателем устойчивости, который оценивал время отклика. [2] [3]
1983 – Яблоко
В то время как MacWrite и MacPaint разрабатывались для первого компьютера Apple Macintosh , Стив Каппс создал «Monkey», настольный аксессуар , который случайным образом генерировал события пользовательского интерфейса на высокой скорости, имитируя обезьяну, которая неистово колотила по клавиатуре, двигалась и щелкала мышью. Его сразу же начали использовать для отладки , генерируя ошибки, которые программисты должны были исправить, поскольку автоматическое тестирование было невозможно; у первого Macintosh было слишком мало свободного места в памяти для чего-то более сложного. [4]
1992 – Пролог Пока ABAL2 и SING разрабатывались для первых графических версий операционной системы PROLOGUE, Иэн Джеймс Маршалл создал «La Matraque», настольный аксессуар , который случайным образом генерировал случайные последовательности как легальных, так и нелегальных событий графического интерфейса на высокой скорости, таким образом проверяя критическое поведение краев базовых графических библиотек. Эта программа запускалась до поставки продукции в течение нескольких дней подряд, тем самым обеспечивая требуемую степень общей устойчивости. Этот инструмент впоследствии был расширен, чтобы включить в себя инструкции Database и другие инструкции File Access языка ABAL для проверки и обеспечения их последующей устойчивости. Разновидность этого инструмента в настоящее время используется для квалификации современной версии, известной как OPENABAL.
2003 – Амазонка
Работая над повышением надежности веб-сайта Amazon , Джесси Роббинс создал «Game day» [5], инициативу, которая повышает надежность путем целенаправленного создания крупных сбоев на регулярной основе. Роббинс сказал, что она была вдохновлена обучением пожарных и исследованиями в других областях — уроками сложных систем, инженерией надежности. [6]
2006 – Гугл
Работая в Google , Крипа Кришнан создал программу, похожую на Game day от Amazon (см. выше), под названием «DiRT». [6] [7] [8] Джейсон Кахун, инженер по надежности сайтов [9] в Google, написал главу о Google DiRT [10] в книге «Chaos Engineering» [11] и описал систему на конференции GOTOpia 2021. [12]
2011 – Нетфликс
Наблюдая за миграцией Netflix в облако в 2011 году, Нора Джонс, Кейси Розенталь и Грег Орзелл [11] [13] [14] расширили дисциплину, работая вместе в Netflix, создав инструмент, который вызывал сбои в их производственной среде, среде, используемой клиентами Netflix. Цель состояла в том, чтобы перейти от модели разработки, которая не предполагала никаких сбоев, к модели, в которой сбои считались неизбежными, заставляя разработчиков рассматривать встроенную устойчивость как обязанность, а не как вариант:
«В Netflix наша культура свободы и ответственности привела нас к тому, что мы не заставляли инженеров разрабатывать свой код определенным образом. Вместо этого мы обнаружили, что можем объединить наши команды вокруг понятия устойчивости инфраструктуры, изолируя проблемы, создаваемые нейтрализацией сервера, и доводя их до крайности. Мы создали Chaos Monkey, программу, которая случайным образом выбирает сервер и отключает его в обычные часы его активности. Некоторые сочтут это безумием, но мы не могли полагаться на случайное возникновение события, чтобы проверить наше поведение перед лицом последствий этого события. Знание того, что это будет происходить часто, создало прочную согласованность среди инженеров для создания избыточности и автоматизации процессов, чтобы пережить такие инциденты, не влияя на миллионы пользователей Netflix. Chaos Monkey — один из наших самых эффективных инструментов для улучшения качества наших услуг». [15]
Регулярно «убивая» случайные экземпляры программного сервиса, можно было протестировать избыточную архитектуру, чтобы убедиться, что сбой сервера не окажет заметного влияния на клиентов.
Концепция хаос-инжиниринга близка к концепции Phoenix Servers, впервые представленной Мартином Фаулером в 2012 году. [16]
Chaos Monkey — это инструмент, изобретенный Netflix в 2011 году для проверки устойчивости своей ИТ-инфраструктуры. [13] Он работает путем намеренного отключения компьютеров в производственной сети Netflix, чтобы проверить, как оставшиеся системы реагируют на сбой. Chaos Monkey теперь является частью более крупного набора инструментов под названием Simian Army, разработанного для моделирования и тестирования ответов на различные системные сбои и пограничные случаи.
Код Chaos Monkey был выпущен Netflix в 2012 году под лицензией Apache 2.0. [17] [18]
Название «Обезьяна Хаоса» объясняется в книге « Обезьяны Хаоса» Антонио Гарсиа Мартинеса: [19]
Представьте себе обезьяну, которая заходит в «центр обработки данных», эти «фермы» серверов, на которых размещены все критически важные функции нашей онлайн-активности. Обезьяна наугад рвет кабели, уничтожает устройства и возвращает все, что попадает под руку [т. е. швыряет экскременты]. Задача ИТ-менеджеров — спроектировать информационную систему, за которую они отвечают, так, чтобы она могла работать, несмотря на этих обезьян, о которых никто никогда не знает, когда они прибудут и что они уничтожат.
Simian Army [18] — это набор инструментов, разработанный Netflix для проверки надежности, безопасности и устойчивости своей инфраструктуры Amazon Web Services , включающий следующие инструменты: [20]
«День хаоса» Voyages-sncf.com 2017 года [23] игрофицировал симуляцию сбоев на этапе подготовки к производству [24] для представления на конференции DevOps REX 2017 года. [25] Основанная в 2019 году компания Steadybit популяризировала хаос на этапе подготовки к производству и проектирование надежности. [26] Ее открытый исходный код Reliability Hub расширяет Steadybit. [27] [28]
Proofdock может вводить сбои инфраструктуры, платформы и приложений в Microsoft Azure DevOps . [26] Gremlin — это платформа «сбой как услуга». [29] Project Storm от Facebook имитирует сбои в центрах обработки данных для обеспечения устойчивости к стихийным бедствиям. [30]