Agile DevOps ― гибкая разработка и эксплуатация ПО: Chaos Monkey

Преднамеренный вывод системы из строя для обеспечения ее устойчивости

Может ли быть хорошей идеей преднамеренный вывод из строя случайным образом отдельных частей системы программного обеспечения - включая оборудование, на котором она работает? И что, если делать это часто и с самого начала? В этом выпуске Agile DevOps эксперт по DevOps Пол Дюваль описывает подходы к созданию Chaos Monkey (как это называют в компании Netflix), чтобы гарантировать, что производственная инфраструктура сможет восстановиться в случае неизбежного отказа.

Пол Дюваль, технический директор, Stelligent Incorporated

Paul DuvallПол Дюваль (Paul Duvall) является техническим директором компании Stelligent Incorporated – консалтинговой фирмы, которая помогает командам разработчиков оптимизировать гибкие методологии разработки программного обеспечения. Он также соавтор книги Continuous Integration: Improving Software Quality and Reducing Risk (Addison-Wesley, 2007 г.). Он принимал участие в создании книг UML 2 Toolkit (Wiley, 2003 г.) и No Fluff Just Stuff Anthology (Pragmatic Programmers, 2007 г.).



04.03.2013

Об этом цикле статей

Разработчики могут многому научиться у групп эксплуатации, а те ― у разработчиков. Эта серия статей посвящена изучению практического применения образа мышления групп эксплуатации к разработке и наоборот — а также рассмотрению программных продуктов в качестве целостных объектов, которые могут поставляться быстрее и чаще, чем когда бы то ни было.

Как я упоминал во вводной статье этого цикла, технический директор Amazon.com Вернер Фогельс следует простому принципу: «Всё то и дело отказывает» (Everything fails, all the time). Я часто говорю, что когда речь идет о программном обеспечении, ничего нельзя принимать на веру. У тех, кто постоянно готов к отказу любых ресурсов, которыми он управляет — будь то оборудование или программное обеспечение, — больше шансов на успех. Этот парадокс лежит в основе различных инструментов, которые случайным образом отключают или нарушают производственные ресурсы в целях проверки и гарантии того, что механизмы автоматического восстановления являются неотъемлемой частью инфраструктуры.

Наиболее известный из таких инструментов ― Chaos Monkey (см. ссылки на этот и другие инструменты в разделе Ресурсы), разработанный технической группой компании Netflix и выпущенный в этом году как ПО с открытым исходным кодом. В этой статье я познакомлю читателя с принципами и шагами по включению Chaos Monkey в инфраструктуру для гарантии того, что она сможет справиться с неизбежным будущим отказом.

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

Найти и уничтожить

Вот общий список шагов, которые составляют процесс создания условий для непрерывного тестирования инфраструктуры.

  • Запуск экземпляров: запускаются некоторые экземпляры вычислительных систем.
  • Создание автономной инфраструктуры: настраивается инфраструктура, которая обнаруживает нездоровые экземпляры и запускает новые (основанные на одном и том же шаблоне ― см. ссылку в разделе Ресурсы на портал IBM, посвященный автономным вычислениям).
  • Применение автоматического тестирования для гарантии автоматического восстановления: выполняются тесты в то время, когда инженеры готовы отреагировать и что-то поправить.
  • Обучение и профилактика: реагирование на отказы и предотвращение их повторения.

Зачем тестировать производственную инфраструктуру?

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

Основой для инфраструктуры непрерывного тестирования и самовосстановления служит убеждение, что:

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

Во многих отношениях это идеальное техническое воплощение организации, действительно стремящейся к непрерывному совершенствованию, или kaizen (см. радел Ресурсы).

Итак, этот новый вид инструментов обеспечения эластичности и сопутствующей им инфраструктуры имеет следующие особенности:

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

Chaos Monkey

Компания Netflix интенсивно использует облачную инфраструктуру для потокового распространения видеофильмов среди пользователей и для решения других задач. В июле 2012 года сообщалось, что за июнь пользователи Netflix просмотрели более 1 миллиарда часов потокового видео. Иными словами, Netflix ― не тривиальный пользователей облака; компания эксплуатирует его в массовом масштабе.

В кратком руководстве на GitHub (см. "Краткое руководство по Chaos Monkey" в разделе Ресурсы) техническая группа Netflix описывает шаги по установке и эксплуатации Chaos Monkey. Следующий список содержит подробную информацию об инструментах, используемых Chaos Monkey. Не забудьте выполнить указанные в руководстве команды для удаления любых неиспользуемых ресурсов, иначе вам придется постоянно платить за них.

  • Автоматическое масштабирование: Auto Scaling ― это специальная функция Amazon Web Services, которая позволяет наращивать и сокращать вычислительную мощность в зависимости от спроса — по определяемым пользователем правилам. Это специальная функция AWS, но подобную масштабируемую среду можно создать с помощью любой — частной или общедоступной — облачной инфраструктуры. Auto Scaling состоит из двух ключевых компонентов: пусковой конфигурации и Auto Scaling Group. Пусковая конфигурация определяет, как запускается экземпляр в составе Auto Scaling Group. Auto Scaling Group ― это набор экземпляров, к которым применяется конкретная конфигурация запуска.
  • SimpleDB: SimpleDB — это база данных NoSQL, которую можно использовать для хранения данных. Необходимо определить домен SimpleDB. Chaos Monkey использует его для хранения состояния.
  • Gradle: Gradle ― это инструмент сборки. Он используется для сборки Chaos Monkey и запуска контейнера приложения Jetty.
  • Файл свойств: в файле simianarmy.properties нужно указать учетные данные и другие сведения о конфигурации.
  • Jetty: резидентный сервер Jetty запускает Chaos Monkey, который нарушает инфраструктуру случайным образом.

Обезьянья армия

Chaos Monkey ― это первый продукт технической группы Netflix из серии Simian Army. В таблице 1 приведен список других инструментов, которые Netflix намерена предложить в составе этой серии (см. раздел Ресурсы).

Таблица 1. Simian Army
НаименованиеОписание
Chaos GorillaМоделирует отключение всей зоны доступности
Conformity MonkeyОтключает экземпляры, которые не соответствуют практическим рекомендациям
Doctor MonkeyВыполняет проверку состояния (например, ЦП)
Janitor MonkeyИщет неиспользуемые ресурсы и ликвидирует их
Latency MonkeyСоздает искусственные задержки связи между клиентом и сервером
Security MonkeyНаходит уязвимости, например, неправильно настроенные группы безопасности

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


Спустить с цепи

Будьте в курсе

Раздел Agile transformation портала developerWorks содержит новости, обсуждения и учебные материалы, которые помогут вам и вашей организации строить фундамент на принципах гибкой разработки (EN).

В этой статье показано, как реально приступить к созданию автономной инфраструктуры, способной к самоисцелению, с помощью таких инструментов, как Chaos Monkey и облачная среда.

В следующей статье говорится об инфраструктуре, управляемой тестами. Читатель узнает, как применить к своей инфраструктуре методы разработки, управляемой тестами — обычно используемые разработчиками при программировании приложений — с помощью таких инструментов, как Cucumber.

Ресурсы

Научиться

  • Оригинал статьи: Agile DevOps: Unleash the Chaos Monkey.
  • Automation for the people: Continuous testing (Paul Duvall, developerWorks, март 2007 г.): статья о запуске автоматических тестов при каждом изменении в базе кода.
  • Failure as a Service (Haryadi S. Gunawi et al., University of California at Berkeley Technical Report, июль 2011 г.): статья о регулярном создании крупномасштабных учебных аварийных ситуаций в реальных установках.
  • Netflix streaming tops 1 billion hours in month for first time (Rachel King, CNET, июль 2012 г.): служба цифровой потоковой рассылки Netflix недавно преодолела важный рубеж: 1 миллиард часов видеопотока за месяц.
  • Краткое руководство по Chaos Monkey: руководство по эксплуатации Chaos Monkey в вашей среде (EN).
  • Kaizen: статья в Википедии с описанием этого подхода к непрерывному совершенствованию процессов, который возник в Японии.
  • Chaos Monkey Released Into The Wild (Cory Bennett and Ariel Tseitlin, Netflix, июль 2012 г.): анонс официального выпуска Chaos Monkey с открытым исходным кодом на GitHub.

Получить продукты и технологии

  • Simian Army: семейство Netflix Simian Army. Chaos Monkey входит в состав этого набора инструментов с открытым исходным кодом.
  • Bees with machine guns: утилита для снаряжения (создания) множества "пчел" (микроэкземпляров EC2) для атак (нагрузочных тестов) на цели (Web-приложения).
  • IBM Tivoli Provisioning Manager: Tivoli Provisioning Manager позволяет создавать динамическую инфраструктуру, автоматизируя управление физическими серверами, виртуальными серверами, программным обеспечением, системами хранения данных и сетью.
  • IBM Tivoli System Automation for Multiplatforms: Tivoli System Automation for Multiplatforms обеспечивает высокую готовность и автоматизацию приложений и ИТ-услуг по всей организации.

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



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

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Технология Java, Open source
ArticleID=860300
ArticleTitle=Agile DevOps ― гибкая разработка и эксплуатация ПО: Chaos Monkey
publish-date=03042013