Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Хаос-инжиниринг. Революция в разработке устойчивых систем

Покупка
Артикул: 817209.01.99
Доступ онлайн
999 ₽
В корзину
Хаос-инжиниринг — относительно новое, однако уже широко востребованное направление в разработке ПО. Тысячи компаний разных размеров и разного уровня развития используют этот метод в качестве основного инструмента тестирования и контроля, чтобы сделать свои продукты и услуги более безопасными и надежными. Эта книга охватывает историю рождения хаос-инжиниринга, фундаментальные теории, лежащие в его основе, определения и принципы, примеры реализации в масштабных вычислительных системах, примеры за пределами традиционного программного обеспечения, а также возможные перспективы развития подобных практик. Реальные истории от отраслевых экспертов из Google, Microsoft, Slack, LinkedIn и других компаний помогут читателю оценить преимущества хаос-инжиниринга во всей полноте. Издание предназначено для разработчиков и инженеров по эксплуатации, стремящихся повысить устойчивость сложных корпоративных систем для достижения бизнес-целей.
Розенталь, К. Хаос-инжиниринг. Революция в разработке устойчивых систем : практическое руководство / К. Розенталь, Н. Джонс ; пер. с англ. В. С. Яценкова. - Москва : ДМК Пресс, 2021. - 284 с. - ISBN 978-5-97060-796-1. - Текст : электронный. - URL: https://znanium.com/catalog/product/2109480 (дата обращения: 15.05.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
Кейси Розенталь, Нора Джонс

Хаос-инжиниринг
Chaos Engineering

System Resiliency in Practice

Casey Rosenthal
Nora Jones
Хаос-инжиниринг

Революция в разработке  
устойчивых систем

Кейси Розенталь
Нора Джонс

Москва, 2021
УДК 62
ББК 32.972

Р64

Розенталь К., Джонс Н.

Р64 
Хаос-инжиниринг / пер. с англ. В. С. Яценкова. – М.: ДМК Пресс, 2021. – 
284 с.: ил. 

ISBN 978-5-97060-796-1

Хаос-инжиниринг – относительно новое, однако уже широко востребованное 

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

Эта книга охватывает историю рождения хаос-инжиниринга, фундаментальные 

теории, лежащие в его основе, определения и принципы, примеры реализации 
в масштабных вычислительных системах, примеры за пределами традиционного 
программного обеспечения, а также возможные перспективы развития подобных 
практик. Реальные истории от отраслевых экспертов из Google, Microsoft, Slack, 
LinkedIn и других компаний помогут читателю оценить преимущества хаос-инжиниринга 
во всей полноте.

Издание предназначено для разработчиков и инженеров по эксплуатации, 

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

УДК 62
ББК 32.972

Authorized Russian translation of the English edition of Chaos Engineering © 2021 by DMK 

Press. This translation is published and sold by permission of O’Reilly Media, Inc., which owns 
or controls all rights to publish and sell the same. 

Все права защищены. Любая часть этой книги не может быть воспроизведена в ка-

кой бы то ни было форме и какими бы то ни было средствами без письменного разрешения 
владельцев авторских прав.

ISBN 978-1-492-04386-7 (англ.) 
©  Casey Rosenthal and Nora Jones, 2020

ISBN 978-5-97060-796-1 (рус.) 
©  Оформление, издание, перевод,  

ДМК Пресс, 2021
Мы посвящаем эту книгу Дэвиду Хассману.  

Дейв был той искрой, которая превратила команду  

Chaos Engineering Team в сообщество
Содержание

Предисловие ....................................................................................................12

Введение. Рождение хаос-инжиниринга .............................................15

Часть I. ОБЗОР ПОЛЯ ДЕЯТЕЛЬНОСТИ ...........................................23

Глава 1. Знакомьтесь: сложные системы ..............................................24
1.1. Размышления о сложности ...........................................................................24
1.2. Столкновение со сложностью ........................................................................26

1.2.1. Несоответствие между бизнес-логикой и логикой приложения .........26
1.2.2. Лавина повторных запросов пользователей .........................................29
1.2.3. Замораживание кода на праздники.......................................................33

1.3. Противодействие сложности .........................................................................36

1.3.1. Случайная сложность ..............................................................................36
1.3.2. Намеренная сложность ...........................................................................37

1.4. Принятие сложности ......................................................................................39

Глава 2. Навигация по сложным системам ..........................................41
2.1. Динамическая модель безопасности ............................................................41

2.1.1. Экономика ...............................................................................................42
2.1.2. Нагрузка ...................................................................................................42
2.1.3. Безопасность ...........................................................................................42

2.2. Экономические факторы сложности ............................................................44

2.2.1. Состояния ................................................................................................45
2.2.2. Отношения ..............................................................................................45
2.2.3. Окружение ...............................................................................................45
2.2.4. Обратимость ............................................................................................46
2.2.5. Экономические факторы сложности и программное обеспечение ....46

2.3. Системный подход .........................................................................................47

Глава 3. Обзор принципов хаос-инжиниринга ...................................49
3.1. Что такое хаос-инжиниринг ..........................................................................49

3.1.1. Эксперименты или тестирование? ........................................................50
3.1.2. Функциональный контроль или аттестация? .......................................51

3.2. Чем не является хаос ......................................................................................52

3.2.1. Разрушающее тестирование производства ...........................................52
3.2.2. Антихрупкость .........................................................................................53

3.3. Ключевые принципы хаос-инжиниринга ....................................................54

3.3.1. Построение гипотезы о стабильном поведении ...................................54
3.3.2. Моделирование различных событий реального мира .........................55
3.3.3. Выполнение экспериментов на производстве .....................................56
Содержание  7

3.3.4. Автоматизация непрерывного запуска экспериментов ......................56
3.3.5. Минимизация радиуса поражения ........................................................57

3.4. Будущее «Принципов» ...................................................................................59

Часть II. ПРИНЦИПЫ ХАОСА В ДЕЙСТВИИ ...................................61

Глава 4. Slack и островок спокойствия среди хаоса ........................63
4.1. Настройка методов хаоса под свои нужды...................................................64

4.1.1. Подходы к проектированию старых систем .........................................64
4.1.2. Подходы к проектированию современных систем ..............................65
4.1.3. Предварительная подготовка отказоустойчивости ..............................65

4.2. Disasterpiece Theater ......................................................................................66

4.2.1. Цели экспериментов ...............................................................................67
4.2.2. Антицели .................................................................................................67

4.3. Процесс проверки по шагам..........................................................................68

4.3.1. Подготовка эксперимента ......................................................................68
4.3.2. Эксперимент ............................................................................................71
4.3.3. Подведение итогов ..................................................................................74

4.4. Как развивался Disasterpiece Theater ............................................................74
4.5. Как получить одобрение руководства ..........................................................75
4.6. Результаты ......................................................................................................76

4.6.1. Избегайте несогласованности кеша .......................................................76
4.6.2. Пробуйте и еще раз пробуйте ................................................................77
4.6.3. Невозможность как результат ................................................................77

4.7. Вывод ...............................................................................................................78

Глава 5. Google DiRT: тестирование аварийного  
восстановления ...............................................................................................79
5.1. Жизненный цикл теста DiRT .........................................................................81

5.1.1. Правила взаимодействия .......................................................................82
5.1.2. Что следует проверить ............................................................................86
5.1.3. Как выполнить тестирование .................................................................93
5.1.4. Сбор результатов .....................................................................................95

5.2. Объем тестов в Google ....................................................................................96
5.3. Вывод ..............................................................................................................99

Глава 6. Вариативность и приоритеты экспериментов 
в Microsoft  ......................................................................................................101
6.1. Почему все так сложно? ...............................................................................101

6.1.1. Пример неожиданных осложнений .....................................................102
6.1.2. Простая система – лишь вершина айсберга ........................................103

6.2. Категории результатов эксперимента ........................................................104

6.2.1. Известные события / непредвиденные последствия .........................105
6.2.2. Неизвестные события / неожиданные последствия ...........................106

6.3. Расстановка приоритетов отказов ..............................................................107

6.3.1. Исследуйте зависимости ......................................................................108
 Содержание

6.4. Глубина варьирования .................................................................................109

6.4.1. Вариативность отказов .........................................................................109
6.4.2. Объединение вариативности и расстановки приоритетов ................111
6.4.3. Расширение вариативности до зависимостей ....................................111

6.5. Развертывание масштабных экспериментов ............................................112
6.6. Вывод ............................................................................................................113

Глава 7. Как LinkedIn заботится о пользователях ...........................115
7.1. Учитесь на примерах катастроф ..................................................................116
7.2. Детализованные эксперименты ..................................................................117
7.3. Масштабные, но безопасные эксперименты..............................................119
7.4. На практике: LinkedOut ................................................................................120

7.4.1. Режимы отказа .......................................................................................121
7.4.2. Использование LiX для нацеливания экспериментов ........................123
7.4.3. Браузерное расширение для быстрых экспериментов .......................126
7.4.4. Автоматизированные эксперименты ..................................................128

7.5. Вывод .............................................................................................................130

Глава 8. Развитие хаос-инжиниринга в Capital One .......................131
8.1. Практический опыт Capital One ..................................................................132

8.1.1. Слепое тестирование устойчивости ....................................................132
8.1.2. Переход к хаос-инжинирингу ..............................................................133
8.1.3. Хаос-эксперименты в CI/CD .................................................................134

8.2. Чего нужно остерегаться при разработке эксперимента ..........................135
8.3. Инструментарий ..........................................................................................136
8.4. Структура команды ......................................................................................137
8.5. Продвижение хаос-инжиниринга ...............................................................139
8.6. Вывод ............................................................................................................139

Часть III. ЧЕЛОВЕЧЕСКИЕ ФАКТОРЫ .............................................141

Глава 9. Формирование предвидения .................................................143
9.1. Хаос-инжиниринг и отказоустойчивость ...................................................144
9.2. Этапы рабочего цикла хаос-инжиниринга ................................................144

9.2.1. Разработка эксперимента.....................................................................145

9.3. Инструменты для разработки хаос-экспериментов ..................................146
9.4. Эффективное внутреннее партнерство ......................................................148

9.4.1. Организация рабочих процедур ..........................................................149
9.4.2. Обсуждение предмета эксперимента ..................................................151
9.4.3. Построение гипотезы ...........................................................................152

9.5. Вывод ............................................................................................................154

Глава 10. Гуманистический хаос .............................................................156
10.1. Люди в cистеме ...........................................................................................156

10.1.1. Значение человека в социотехнических системах ...........................157
10.1.2. Организация – это система систем ....................................................158
Содержание  9

10.2. Инженерно-адаптивный потенциал ........................................................158

10.2.1. Обнаружение слабых сигналов ..........................................................159
10.2.2. Неудача и успех, две стороны одной монеты....................................160

10.3. Применение принципов хаос-инжиниринга на практике .....................160

10.3.1. Построение гипотезы .........................................................................161
10.3.2. Варьирование событий реального мира ...........................................161
10.3.3. Минимизация радиуса поражения ....................................................162
10.3.4. Пример 1: игровые дни .......................................................................163
10.3.5. Коммуникации и сетевая задержка в организациях ........................165
10.3.6. Пример 2: связь между точками ........................................................166
10.3.7. Лидерство как новое свойство системы ............................................169
10.3.8. Пример 3: изменение базового предположения ..............................170
10.3.9. Безопасная организация хаоса ..........................................................172
10.3.10. Все, что вам нужно, – это высота и направление ............................173
10.3.11. Замыкайте петли обратной связи ....................................................173
10.3.12. Если вы не ошибаетесь, вы не учитесь ............................................174

Глава 11. Роль человека в системе ........................................................175

11.1. Эксперименты: почему, как и когда .........................................................176

11.1.1. Почему .................................................................................................176
11.1.2. Как ........................................................................................................177
11.1.3. Когда .....................................................................................................178
11.1.4. Распределение функций, или Каждый хорош по-своему ................179
11.1.5. Миф замещения ..................................................................................181

11.2. Вывод ..........................................................................................................183

Глава 12. Проблема выбора эксперимента и ее решение ..........184

12.1. Выбор экспериментов ................................................................................184

12.1.1. Случайный поиск ................................................................................186
12.1.2. Настало время экспертов ....................................................................186

12.2. Наблюдаемость системы ...........................................................................191

12.2.1. Наблюдаемость и интуиция ...............................................................192

12.3. Вывод ..........................................................................................................194

Часть IV. ФАКТОРЫ БИЗНЕСА .............................................................195

Глава 13. Рентабельность хаос-инжиниринга ..................................196

13.1. Краткосрочный эффект хаос-инжиниринга ............................................196
13.2. Модель Киркпатрика .................................................................................197

13.2.1. Уровень 1: реакция ..............................................................................197
13.2.2. Уровень 2: обучение ............................................................................198
13.2.3. Уровень 3: перенос ..............................................................................198
13.2.4. Уровень 4: результаты .........................................................................199

13.3. Альтернативный вариант оценки рентабельности .................................199
13.4. Побочная отдача от инвестиций ...............................................................201
13.5. Вывод ..........................................................................................................202
 Содержание

Глава 14. Открытые умы, открытая наука и открытый хаос ......203
14.1. Совместное мышление ..............................................................................203
14.2. Открытая наука, открытый исходный код ...............................................205

14.2.1. Открытые хаос-эксперименты...........................................................206
14.2.2. Обмен результатами и выводами ......................................................208

14.3. Вывод ..........................................................................................................208

Глава 15. Модель зрелости хаоса ..........................................................209
15.1. Внедрение ...................................................................................................209

15.1.1. От кого исходит идея внедрения........................................................210
15.1.2. Какая часть организации участвует в хаос-инжиниринге ...............211
15.1.3. Обязательные условия ........................................................................212
15.1.4. Препятствия для внедрения ...............................................................213
15.1.5. Освоение ..............................................................................................214

15.2. Карта состояния хаос-инжиниринга ........................................................219

Часть V. ЭВОЛЮЦИЯ .................................................................................221

Глава 16. Непрерывная проверка..........................................................223
16.1. Происхождение непрерывной проверки..................................................223
16.2. Разновидности систем непрерывной проверки ......................................225
16.3. CV в реальной жизни: ChAP ......................................................................227

16.3.1. Выбор экспериментов в ChAP ............................................................227
16.3.2. Запуск экспериментов в ChAP ...........................................................228
16.3.3. ChAP и принципы хаос-инжиниринга ..............................................228
16.3.4. ChAP как непрерывная проверка .......................................................229

16.4. Непрерывная проверка в системах рядом с вами ...................................229

16.4.1. Проверка производительности ..........................................................230
16.4.2. Артефакты данных ..............................................................................230
16.4.3. Корректность .......................................................................................230

Глава 17. Поговорим о киберфизических системах .......................232
17.1. Происхождение и развитие киберфизических систем ............................233
17.2. Слияние функциональной безопасности с хаос-инжинирингом ...........234

17.2.1. FMEA и хаос-инжиниринг ...................................................................236

17.3. Программное обеспечение в киберфизических системах ......................236
17.4. Хаос-инжиниринг как следующий шаг после FMEA ................................238
17.5. Эффект щупа ...............................................................................................241

17.5.1. Решение проблемы щупа ....................................................................242

17.6. Вывод ...........................................................................................................244

Глава 18. HOP с точки зрения хаос-инжиниринга ...........................246
18.1. Что такое HOP? ...........................................................................................246
18.2. Ключевые принципы HOP .........................................................................247

18.2.1. Принцип 1: ошибка – это норма ........................................................247
18.2.2. Принцип 2: вина ничего не исправляет ............................................247
Содержание  11

18.2.3. Принцип 3: контекст определяет поведение ....................................248
18.2.4. Принцип 4: обучение и улучшение имеют жизненно важное  
значение ..........................................................................................................249
18.2.5. Принцип 5: важны осмысленные ответы  .........................................249

18.3. Хаос-инжиниринг в мире HOP ..................................................................249

18.3.1. Практический пример хаос-инжиниринга в мире HOP ...................251

18.4. Вывод ..........................................................................................................253

Глава 19. Хаос-инжиниринг и базы данных ......................................254
19.1. Зачем нам нужен хаос-инжиниринг? .......................................................254

19.1.1. Надежность и стабильность ................................................................254
19.1.2. Пример из реального мира .................................................................255

19.2. Применение хаос-инжиниринга ...............................................................257

19.2.1. Наш особый подход к хаос-инжинирингу .........................................257
19.2.2. Внедрение отказов ..............................................................................258
19.2.3. Отказы приложений ...........................................................................258
19.2.4. Ошибки процессора и памяти ............................................................259
19.2.5. Отказы сети .........................................................................................259
19.2.6. Внедрение ошибок в файловую систему ...........................................260

19.3. Обнаружение сбоев ....................................................................................261
19.4. Автоматизация хаоса .................................................................................262

19.4.1. Автоматизированная платформа для экспериментов  
Schrodinger ......................................................................................................262
19.4.2. Рабочий процесс на платформе Schrodinger .....................................264

19.5. Вывод ..........................................................................................................264

Глава 20. Хаос-инжиниринг в информационной  
безопасности ..................................................................................................266
20.1. Современный подход к безопасности ......................................................267

20.1.1. Человеческий фактор и отказы ..........................................................267
20.1.2. Устраните легкодоступные цели ........................................................269
20.1.3. Петли обратной связи .........................................................................270

20.2. Хаос-инжиниринг и новая методология безопасности ..........................271

20.2.1. Проблемы с Red Teaming.....................................................................272
20.2.2. Проблемы с Purple Teaming ................................................................272
20.2.3. Преимущества хаос-инжиниринга в кибербезопасности ................273

20.3. Игровые дни в кибербезопасности ...........................................................274
20.4. Пример инструмента безопасности: ChaoSlingr ......................................274

20.4.1. История ChaoSlingr .............................................................................275

20.5. Вывод ..........................................................................................................277

Заключение ....................................................................................................279

Предметный указатель ..............................................................................282
Предисловие

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

Нора и Кейси задумали написать самую полную книгу о хаос-инжини-

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

Соглашение о терминах 

в руССком переводе книги

В этой книге мы используем уже устоявшееся в среде специалистов кириллическое 
написание термина хаос-инжиниринг для обозначения стратегического 
подхода к тестированию и идеологии хаоса в целом, а термины Chaos, 
Chaos Engineering Team, Chaos Monkey и другие слова в исходном английском 
написании с заглавной буквы обозначают названия рабочих групп, инструментов 
и технологий, а также зарегистрированные марки компаний и их 
продуктов.

уСловные обозначения и Соглашения, 

принятые в книге

В книге используются следующие типографские соглашения:

 
 курсив – для смыслового выделения важных положений, новых тер-

минов, имен команд и утилит, а также имен и расширений файлов 
и каталогов;

 
 моноширинный шрифт – для листингов программ, а также в обычном текс-

те для обозначения имен переменных, функций, типов, объектов, баз 
данных, переменных среды, операторов, ключевых слов и других программных 
конструкций и элементов исходного кода.
Предисловие  13

отзывы и пожелания

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

Вы можете написать отзыв прямо на нашем сайте www.dmkpress.com, зайдя 

на страницу книги, и оставить комментарий в разделе «Отзывы и рецензии». 
Также можно послать письмо главному редактору по адресу dmkpress@gmail.
com, при этом напишите название книги в теме письма.

Если есть тема, в которой вы квалифицированы, и вы заинтересованы 

в написании новой книги, заполните форму на нашем сайте по адресу http://
dmkpress.com/authors/publish_book/ или напишите в издательство по адресу 
dmkpress@gmail.com.

СпиСок опечаток

Хотя мы приняли все возможные меры, для того чтобы удостовериться в качестве 
наших текстов, ошибки все равно случаются. Если вы найдете ошибку 
в одной из наших книг, мы будем очень благодарны, если вы сообщите нам 
о ней главному редактору по адресу dmkpress@gmail.com, и мы исправим 
это в следующих тиражах. Сделав это, вы избавите других читателей от расстройств 
и поможете нам улучшить последующие версии этой книги.

нарушение авторСких прав

Пиратство в интернете по-прежнему остается насущной проблемой. Издательства «
ДМК Пресс» и O’Reilly очень серьезно относятся к вопросам защиты 
авторских прав и лицензирования. Если вы столкнетесь в интернете с незаконно 
выполненной копией любой нашей книги, пожалуйста, сообщите нам 
адрес копии или веб-сайта, чтобы мы могли применить санкции.

благодарноСти

Мы можем назвать бесчисленное множество людей, которые вложили в подготовку 
этой книги время и силы, а также оказали эмоциональную поддержку 
авторам, редакторам и соавторам. Трудно переоценить объем помощи, полученной 
нами при создании сборника, включающего целых шестнадцать авторов (
основные авторы Нора и Кейси, а также четырнадцать соавторов). Мы 
ценим все усилия соавторов, их терпение по отношению к нам, когда мы дорабатывали 
идеи и объем глав, а также помощь в процессе редактирования.
 Предисловие

Нам повезло работать с замечательными редакторами и персоналом 

в O’Reilly. Амелия Блевинс (Amelia Blevins), Вирджиния Уилсон (Virginia 
Wilson), Джон Девинс (John Devins) и Никки Макдональд (Nikki McDonald) 
сыграли важную роль в создании этой книги. Во многих отношениях эта книга – 
произведение, созданное Амелией и Вирджинией так же, как и авторами. 
Спасибо за ваше терпение с нами и за многие, многие переносы сроков.

Мы ценим энтузиазм наших рецензентов: Уилла Гальего (Will Gallego), 

Райана Франца (Ryan Frantz), Эрика Доббса (Eric Dobbs), Лейна Десборо (Lane 
Desborough), Рэндала Хансена (Randal Hansen), Майкла Кехо (Michael Kehoe), 
Матиаса Лафельдта (Mathias Lafeldt), Барри О’Рейли (Barry O’Reilly), Синди 
Сридхарана (Cindy Sridharan) и Бенджамина Уилмса (Benjamin Wilms). Ваши 
комментарии, предложения и исправления значительно улучшили качество 
этой работы. Кроме того, ваши советы привели нас к дополнительным исследованиям, 
которые мы включили в книгу. По сути, эта книга стала результатом 
нашей совместной работы с вами.

Мы многим обязаны нашим соавторам, это: Джон Алспоу (John Allspaw), 

Питер Альваро (Peter Alvaro), Натан Ашбахер (Natan Aschbacher), Джейсон Кахун (
Jason Cahoon), Раджи Чокайян (Raji Chockaiyan), Ричард Кроули (Richard 
Crowley), Боб Эдвардс (Bob Edwards), Энди Флинер (Andy Fleener), Расс Майлз 
(Russ Miles), Аарон Ринхарт (Aaron Rinhart), Логан Розен (Logan Rosen), Олег 
Сурмачев, Лю Тан (Lu Tang) и Хао Вэн (Hao Weng). Очевидно, что данной книги 
не было бы без вас. Каждый из вас внес необходимый и принципиально 
важный вклад в содержание. Мы ценим вас как единомышленников и друзей.

Мы хотим поблагодарить Дэвида Хассмана (David Hassman), Кента Бека 

(Kent Beck) и Джона Алспоу. Дэвид, которому посвящена эта книга, призвал 
нас пропагандировать идеологию хаос-инжиниринга за пределами нашего 
ограниченного профессионального сообщества в Кремниевой долине. Во 
многом благодаря его вовлеченности и поддержке хаос-инжиниринг стал 
осязаемой «вещью» – самостоятельной дисциплиной в широком мировом 
сообществе разработчиков программного обеспечения. В свою очередь, Кент 
Бек призвал нас воспринимать хаос-инжиниринг как инструмент, намного 
более серьезный, чем мы думали, способный изменить взгляды людей 
на создание, развертывание и эксплуатацию программного обеспечения. 
Джон Алспоу дал нам фундаментальные основы хаос-инжиниринга, подтолкнув 
нас заняться изучением человеческого фактора и систем безопасности 
в Лундском университете в Швеции. Он познакомил нас с областью 
Resilience Engineering (технологии отказоустойчивости), которая послужила 
фундаментом для хаос-инжиниринга и является тем объективом, через 
который мы рассматриваем проблемы надежности (включая доступность 
и безопасность), когда изучаем социально-технические системы, такие как 
широкомасштабное программное обеспечение. Все руководители и коллеги 
по программе в Лунде глубоко повлияли на наше мышление, особенно Йохан 
Бергстрем (Johan Bergstrom) и Энтони Смоукер (Antony Smoker).

Мы благодарим всех вас за влияние, которое вы оказали на нас, за то, что 

вдохнули в нас смелость продвигать идею хаос-инжиниринга в общество, 
и за то неизгладимое влияние, которое оказали на наше мировоззрение.
Введение. Рождение 
хаос-инжиниринга

Хаос-инжиниринг все еще остается относительно новым направлением 
в разработке программного обеспечения. В этом введении мы расскажем 
историю метода, начиная со скромного первого использования и заканчивая 
нынешней эпохой, когда все основные представители информационной 
отрасли переняли идеологию хаос-инжиниринга в той или иной форме. За 
последние три года вопрос «Должны ли мы заниматься хаос-инжинирингом?» 
превратился в вопрос «Каким образом лучше всего внедрить хаос-
инжиниринг?».

История нашей зарождающейся дисциплины объясняет, как мы перешли 

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

История начинается в Netflix, где работали авторы этой книги Кейси Ро-

зенталь и Нора Джонс, когда команда Chaos Team создавала и внедряла технологию 
Chaos Engineering1. Netflix получил от этой технологии ощутимую 
выгоду, и как только другие компании увидели это, вокруг новой дисциплины 
возникло сообщество, которое распространило ее по всему миру.

менеджмент в виде кода

Начиная с 2008 года Netflix приступил к масштабному переходу2 с собственного 
центра обработки данных на внешний облачный сервис. В августе того 
же года из-за крупного сбоя базы данных в центре обработки данных Netflix 
не мог отправлять DVD-диски в течение трех дней. Это было до того, как потоковое 
видео стало вездесущим; рассылка DVD по почте составляла основу 
бизнеса компании.

В то время считалось, что центр обработки данных в силу своей архи-

тектуры содержит несколько глобальных точек отказа, таких как большие 

1 Кейси Розенталь в течение трех лет создавал технологию и руководил командой 

разработчиков Chaos в Netflix. Нора Джонс присоединилась к команде разработчиков 
Chaos на раннем этапе в качестве инженера и технического лидера. Она 
отвечала за важные архитектурные решения в создаваемых инструментах, а также 
занималась внедрением.

2 Yury Izrailevsky, Stevan Vlaovic, Ruslan Meshenberg. Completing the Netflix Cloud Migra-

tion // Netflix Media Center, Feb. 11, 2016, https://oreil.ly/c4YTI.
 Введение. Рождение хаос-инжиниринга

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

Увы, все пошло не по плану. Прежде всего потребовалось целых восемь лет, 

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

Чтобы понять причину, мы должны вспомнить, что в 2008 году облачный 

сервис Amazon Web Services (AWS) был значительно менее зрелым, чем сейчас. 
Облачные вычисления еще не были товаром, а вариантов развертывания 
по умолчанию, которые мы имеем сегодня, просто не существовало. В то время 
облачный сервис действительно имел много особенностей, и одна из этих 
особенностей заключалась в том, что экземпляры2 иногда прекращали свою 
работу без предупреждения. Такая форма сбоя считалась редкостью в центре 
обработки данных, где большие мощные машины тщательно обслуживались, 
а специфические особенности конкретных машин были хорошо известны. 
В облачной среде, где такую же вычислительную мощность обеспечивали 
за счет большого количества относительно слабых машин, работающих на 
обычном «железе», это, к сожалению, было обычным явлением.

Методы построения систем, устойчивых к такой форме отказа, были хоро-

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

Однако Netflix отличался от других разработчиков масштабного про-

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

 
 Netflix нанимал только старших разработчиков, которые имели опыт 

работы в той роли, для которой их наняли;

 
 Netflix предоставил всем разработчикам полную свободу действий, не-

обходимых для решения проблемы, вкупе с ответственностью за любые 
последствия, связанные с этими действиями;

1 В этой книге мы будем считать критерием доступности системы «время безотказ-

ной работы», или «аптайм» (uptime).

2 В облачной технологии термин «экземпляр» соответствует виртуальной машине 

или серверу в предшествующем отраслевом языке.
Доступ онлайн
999 ₽
В корзину