Что такое Chaos Engineering?
Технологии везде. В зависимости от того, насколько высока ставка в вашей отрасли, отказ технического продукта или системы может оказаться в любом месте от совершенно незначительного до конца жизненного цикла, который вам известен.
Больничные мэйнфреймы? Вроде важно. Устойчивость приложения Candy Crush на вашем мобильном телефоне? Вероятно, немного ниже в общем списке приоритетов.
В распределенной системе сетей отказ неизбежен. Предотвращение катастрофы начинается с надежной водонепроницаемой системы безопасности. Но что еще можно сделать помимо этого?
Что такое Netflix Chaos Engineering?
20 сентября 2015 года.
На западном фронте все тихо, когда внезапно несколько важных корпоративных серверов Amazon Web Services выходят из строя без единого слова.
Многие крупные компании не могли обслуживать своих клиентов по несколько часов. Однако Netflix снова встал на ноги в считанные минуты. Как? Внутренняя корпоративная культура Netflix эволюционировала и включает в себя множество методик, «приводящих к сбоям», реализованных в режиме реального времени, чтобы подготовить как системы, так и инженеров к чрезвычайным ситуациям.
Руководство компании целенаправленно провело моделирование сбоев серверов в отдельных частях системы, чтобы изучить и подготовиться к таким событиям. Это помогло им выявить дыры в системе и создать избыточность, которая позволила обслуживать непрерывно, даже в случае серьезной неисправности, подобной упомянутой ранее.
Эти преднамеренные упражнения по «инженерии хаоса» дали их инженерам достаточное конкурентное преимущество, чтобы увидеть себя через фиаско, отчасти благодаря превентивной инфраструктуре, которую они построили с учетом такого рода событий судного дня.
Никто не был готов, когда ударила большая волна. Система Netflix была достаточно сильной, чтобы постоять за себя. Заключение? Эти хаотические вдохновители могут что-то здесь сказать.
Умышленное уничтожение тех, кто любит вас
«Chaos Engineering – это дисциплина экспериментов с системой с целью создания уверенности в ее способности противостоять турбулентным условиям на производстве».
Это суть хаос-инжиниринга – по сути, «пожарная тренировка», применяемая к системе в рабочее время, когда есть глаза и руки для решения поставленной задачи. Способность данной системы терпеть отказы подвергается проверке при обнаружении любых уязвимостей.
В исходном контексте 2011 года «инженерия хаоса» касалась ИТ-отдела Netflix. Их руководство хотело проверить, насколько устойчивы усилия команды, когда один или несколько их компьютеров были намеренно отключены. Эти неудачи позволили ИТ-группе выявить ключевые слабые места до того, как они переросли в общесистемные проблемы и могли быть использованы извне.
Настоящая неудача? Это может быть чертовски дорого, и это выходит за рамки денежных последствий . Даже периоды простоя без реального нарушения безопасности, скорее всего, приведут к упущению множества возможностей для получения дохода. Зачем ждать, пока чрезвычайная ситуация ослепит вас?
Обезьяны за безумием
Некоторые компании примут модель «красной команды», которая противопоставляет команды разработчиков их собратьям по подразделениям. Однако классический пример, приведенный Netflix, использует «обезьянью армию». Эти боты делают за них грязную работу справедливо и совершенно наугад.
Безумный? Для непрофессионала, возможно. По словам автора «Обезьян Хаоса» Антонио Гарсиа Мартинеса:
«Представьте обезьяну, входящую в« центр обработки данных », эти« фермы »серверов, на которых размещены все критически важные функции нашей онлайн-деятельности. Обезьяна случайным образом рвет кабели и уничтожает устройства. Задача состоит в том, чтобы спроектировать информационную систему, за которую они несут ответственность. что он может работать, несмотря на этих обезьян, о которых никто никогда не знает, когда они прибудут и что они уничтожат ».
Красочная аналогия. Однако не все обезьяны жестоки: например, Доктор Обезьяна следит за работой системы. Однако, когда Хаос Конг заходит в гости, все ставки прекращаются; этот персонаж отключит всю зону доступности AWS.
Хаос-инженерия и научный метод
Техника хаоса служит ценным источником системного понимания для тех, кто проводит эксперименты. Здесь проходят испытания не только разработчики; это система, поскольку она существует автономно.
Прежде чем бросить бочку с обезьянами на стол, инженерия хаоса требует некоторой подготовки.
- Сначала вам нужно определить, что вы считаете «устойчивым», здоровым, функциональным состоянием для вашей системы. Это будет «контроль», по которому вы будете оценивать любые ощутимые результаты.
- Начните думать о том, как это состояние будет выведено из равновесия из-за вмешательства оркестрованного отказа. Планируйте зондирование вредоносного ПО так, чтобы оно влияло только на ограниченную контролируемую область вашей системы.
- Представьте «злоумышленника» и дайте системе отреагировать.
- Наблюдайте и интерпретируйте любые различия между системой в том виде, в каком она существует сейчас, и тем, как она вела себя раньше, находясь в гомеостазе. Увеличивайте свой «радиус взрыва» до тех пор, пока вы не обнаружите уязвимость или не достигнете полной шкалы, в зависимости от того, что наступит раньше.
Идея состоит в том, что чем сложнее разрушить функциональную систему, тем больше у вас будет уверенности в ее устойчивости к изменениям и бомбардировкам. Этот подход показывает, как разные аспекты системы будут компенсировать сбои друг друга в случае сбоя.
«Поскольку ни один компонент не может гарантировать 100% работоспособность (и даже самое дорогое оборудование в конечном итоге выходит из строя), мы должны разработать облачную архитектуру, в которой отдельные компоненты могут выйти из строя, не влияя на доступность всей системы».
Блог Netflix
Иногда такая игра с системой даже близко не влияет на качество обслуживания клиентов. В других случаях будут обнаружены серьезные недостатки безопасности. Теперь, особенно в Netflix, непредвиденные обстоятельства, предназначенные для маскировки сбоя системы на уровне пользователя, заложены в основу системы.
Стоит ли Chaos Engineering?
Если хочешь разобраться в сложной системе – мешай ей
– Фархан Тавар (@fnthawar) 26 мая 2021 г.
Критики скажут, что никакая бэкэнд-игра не стоит того, чтобы влиять на клиентский опыт, даже если это кратковременно и случайно. Однако сторонники хаотической инженерии будут опровергать тот факт, что эти «запланированные простои» должны быть намного меньше, чем то, что AWS испытала в 2015 году. Если небольшая запланированная проблема дает вам возможность предотвратить гораздо более серьезную проблему Планирование первого инцидента может быть лучшим способом подготовиться. Всего пострадает меньшее количество пользователей. Математика работает.
С человеческой точки зрения, менталитет таков, что сейчас эти инженеры, которые столкнулись с отказом сервера и компетентно справились с ним, будут в будущем более бдительными, а также более интеллектуально подготовленными, чтобы справиться со всем, что приходит им на помощь. способ. Возникающая в результате более сильная система во многих случаях говорит сама за себя.
Кремниевая долина: где умирают мечты
Они говорят, что если вы хотите добиться успеха, вы должны быть готовы убить своих любимых или, в данном случае, позволить другим убивать их за вас. Когда безопасность стоит на переднем крае с самого начала разработки, ваша команда с гораздо большей вероятностью получит что-то непонятное и безопасное для свободного использования клиентами.
Игра на рабочем месте делает перспективу успеха в этой области захватывающей; когда конечным результатом является качество, каждый получает возможность повысить свой уровень. Мой Netflix работает нормально, и мы должны благодарить за это только сумасшедших, стоящих за хаосом.
Теперь, когда вы хорошо разбираетесь в хаосе, почему бы не расширить свои знания с помощью другой методологии разработки программного обеспечения? Agile – отличная система, которую вы можете включить для объединения сотрудников и создания чистого и эффективного кода.