УДК 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 (англ.)
ISBN 978-5-97060-796-1 (рус.)
© Casey Rosenthal and Nora Jones, 2020
© Оформление, издание, перевод,
ДМК Пресс, 2021
Стр.5
Содержание
Предисловие ....................................................................................................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
Содержание 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
Стр.8
8 Содержание
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
Содержание 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
Стр.10
10 Содержание
Глава 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
Содержание 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
Стр.12