Хаос-инжиниринг. Революция в разработке устойчивых систем
Покупка
Тематика:
Прикладное программное обеспечение
Издательство:
ДМК Пресс
Перевод:
Яценков Валерий Станиславович
Год издания: 2021
Кол-во страниц: 284
Дополнительно
Вид издания:
Практическое пособие
Уровень образования:
Дополнительное образование
ISBN: 978-5-97060-796-1
Артикул: 817209.01.99
Хаос-инжиниринг — относительно новое, однако уже широко востребованное направление в разработке ПО. Тысячи компаний разных размеров и разного уровня развития используют этот метод в качестве основного инструмента тестирования и контроля, чтобы сделать свои продукты и услуги более безопасными и надежными. Эта книга охватывает историю рождения хаос-инжиниринга, фундаментальные теории, лежащие в его основе, определения и принципы, примеры реализации в масштабных вычислительных системах, примеры за пределами традиционного программного обеспечения, а также возможные перспективы развития подобных практик. Реальные истории от отраслевых экспертов из Google, Microsoft, Slack, LinkedIn и других компаний помогут читателю оценить преимущества хаос-инжиниринга во всей полноте.
Издание предназначено для разработчиков и инженеров по эксплуатации, стремящихся повысить устойчивость сложных корпоративных систем для достижения бизнес-целей.
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 09.03.01: Информатика и вычислительная техника
- 09.03.02: Информационные системы и технологии
- 09.03.04: Программная инженерия
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Кейси Розенталь, Нора Джонс Хаос-инжиниринг
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