Предисловие Марка Берджеса........................................................................................................27
Предисловие Эндрю Клея Шейфера ............................................................................................29
Введение..................................................................................................................................................34
Условные обозначения .............................................................................................................. 37
Использование примеров кода ............................................................................................... 37
Благодарности .............................................................................................................................. 38
От издательства ............................................................................................................................ 41
Глава 1. Как связаны SRE и DevOps............................................................................................42
DevOps ............................................................................................................................................ 43
Больше никакой раздробленности ...................................................................................43
Аварии — это нормально......................................................................................................44
Перемены должны быть постепенными .........................................................................44
Инструментарий и культура взаимосвязаны................................................................45
Измерения первостепенны..................................................................................................45
SRE ................................................................................................................................................... 45
Эксплуатация — это задача уровня разработки ПО...................................................46
Управление на основании целевых уровней качества обслуживания (SLO) ......46
Работа по минимизации рутины .......................................................................................47
Раньше на эту работу тратили год — теперь мы ее автоматизировали................47
Движемся быстро, снижая издержки, связанные с отказами..................................48
Ответственность за продукт совместно с разработчиками......................................48
Использование одинакового инструментария, независимо от роли
специалиста и наименования должности.......................................................................49
Сходство и различие ................................................................................................................... 50
Организационный контекст и стимулирование успешного внедрения ................... 52
Узкие и жесткие варианты поощрения ограничивают успех..................................52
Лучше исправьте сами, а не обвиняйте кого-то другого ...........................................53
Рассматривайте работу по обеспечению надежности
как специализированную роль...........................................................................................54
«Когда» может заменить «если»........................................................................................55
Стремитесь к равному вознаграждению: карьерный и финансовый аспект......55
Итоги главы ................................................................................................................................... 55
Часть I. Основы
Глава 2. Внедрение целевых уровней качества обслуживания...........................................59
Зачем SRE нужны SLO ............................................................................................................. 59
Поехали ........................................................................................................................................... 60
Цели обеспечения надежности и бюджеты ошибок ...................................................61
Что измерять: использование SLI.....................................................................................62
Рабочий пример ........................................................................................................................... 66
Переход от спецификации SLI к реализации SLI .......................................................68
Доступность и задержка API и HTTP-сервера......................................................68
Актуальность конвейера, охват и корректность....................................................69
Измерение SLI .........................................................................................................................70
Метрики балансировщика нагрузки..........................................................................71
Расчет SLI ...........................................................................................................................71
Использование SLI для расчета стартового SLO ........................................................72
Выбор подходящего временного окна .............................................................................72
Достижение соглашения с участниками проекта ............................................................. 74
Формирование стратегии бюджета ошибок..................................................................74
Документирование SLO и стратегии бюджета ошибок.............................................76
Информационные панели и отчеты .................................................................................77
Непрерывное улучшение целей SLO ................................................................................... 78
Принятие решений на основе SLO и бюджетов ошибок ............................................... 81
Дополнительные темы ............................................................................................................... 83
Моделирование пути пользователя..................................................................................83
Градация важности взаимодействий................................................................................84
Моделирование зависимостей ...........................................................................................85
Эксперименты с ослаблением целевого уровня качества обслуживания...........86
Итоги главы ................................................................................................................................... 87
Глава 3. Инженерия SLO: изучение на примере реальных ситуаций...............................89
История SLO в компании Evernote ...................................................................................... 89
Почему в Evernote приняли на вооружение модель SRE.........................................90
Знакомство с SLO: путь продолжается...........................................................................91
Разрушение SLO-барьера между клиентом и поставщиком
облачных услуг ........................................................................................................................94
Текущее состояние .................................................................................................................96
История SLO в Home Depot .................................................................................................... 96
Проект культуры SLO...........................................................................................................97
Наш первый набор SLO........................................................................................................99
Доступность и время ожидания вызова API ..........................................................99
Уровень использования инфраструктуры...............................................................99
Объем трафика..................................................................................................................99
Задержка............................................................................................................................100
Ошибки..............................................................................................................................100
Запросы..............................................................................................................................100
VALET................................................................................................................................101
Распространение SLO .........................................................................................................101
Автоматизация сбора данных VALET...........................................................................102
Отчеты TPS ......................................................................................................................102
Сервис VALET................................................................................................................103
Панель инструментов VALET...................................................................................104
Распространение SLO .........................................................................................................105
Применение VALET к пакетным приложениям........................................................105
Использование VALET в тестировании.......................................................................106
Планы на будущее ................................................................................................................106
Резюме ........................................................................................................................................... 107
Итоги главы ................................................................................................................................. 108
Глава 4. Мониторинг........................................................................................................................109
Желательные характеристики стратегии мониторинга ............................................... 110
Скорость...................................................................................................................................110
Вычисления ............................................................................................................................110
Интерфейсы............................................................................................................................111
Оповещения............................................................................................................................112
Источники данных для мониторинга ................................................................................. 113
Примеры...................................................................................................................................114
Перемещение информации из журналов в метрики..........................................114
Усовершенствование журналов и метрик .............................................................115
Хранение журналов как источников данных .......................................................116
Управление системой мониторинга .................................................................................... 116
Рассматривайте свою конфигурацию как код ............................................................116
Поощряйте согласованность.............................................................................................117
Предпочтите слабые связи ................................................................................................118
Осмысленные метрики .......................................................................................................119
Преднамеренные изменения.............................................................................................119
Зависимости ...........................................................................................................................120
Уровень загруженности......................................................................................................121
Состояние выдаваемого трафика ....................................................................................121
Реализация целевых метрик .............................................................................................122
Тестирование логики оповещения ...................................................................................... 122
Итоги главы ................................................................................................................................. 123
Глава 5. Оповещения на основе SLO..........................................................................................125
Оповещения ................................................................................................................................ 125
Способы создания оповещений о значимых событиях ................................................ 126
1. Целевой уровень ошибок ≥ порог SLO .....................................................................126
2. Увеличение окна оповещений .....................................................................................128
3. Увеличение длительности оповещения....................................................................129
4. Оповещение на основе скорости сгорания..............................................................130
5. Оповещения на основе различных скоростей сгорания .....................................132
6. Многооконные, многоскоростные оповещения.....................................................134
Сервисы с низкой интенсивностью трафика и оповещения
о бюджете ошибок ...................................................................................................................... 136
Создание искусственного трафика.................................................................................137
Объединение сервисов........................................................................................................138
Внесение изменений в сервисы и инфраструктуру..................................................138
Снижение SLO или увеличение временного окна ....................................................139
Экстремальные цели доступности ...................................................................................... 139
Масштабируемость оповещений .......................................................................................... 140
Итоги главы ................................................................................................................................. 142
Глава 6. Избавляемся от рутины..................................................................................................143
Что такое рутина ........................................................................................................................ 144
Измерение количества рутины ............................................................................................. 146
Классификация рутинной работы ....................................................................................... 148
Бизнес-процессы...................................................................................................................148
Отвлечения на задачи в эксплуатируемых системах ...............................................149
Выпуск релизов .....................................................................................................................149
Переход на новые технологии/версии ПО..................................................................149
Управление затратами и планирование производительности..............................150
Решение проблем непрозрачных архитектур .............................................................151
Стратегии управления рутиной ........................................................................................... 151
Определите и измерьте рутину........................................................................................152
Разработайте решение по устранению рутины ..........................................................152
Откажитесь от рутинной работы.....................................................................................152
Используйте SLO для сокращения рутины ................................................................152
Уделяйте первоочередное внимание интерфейсам,
поддерживаемым человеком.............................................................................................153
Предоставьте методы самообслуживания....................................................................153
Заручитесь поддержкой руководства и коллег ..........................................................154
Продвигайте сокращение рутины как новую функцию..........................................154
Начните с малого, а затем улучшайте............................................................................154
Повысьте единообразие......................................................................................................154
Оцените риски автоматизации.........................................................................................155
Автоматизируйте реакцию на рутину............................................................................156
Используйте инструменты сторонних разработчиков
и с открытым исходным кодом ........................................................................................156
Используйте обратную связь для улучшения ............................................................156
Примеры из практики .............................................................................................................. 158
Пример 1. Сокращение рутины в дата-центре с помощью автоматизации.........158
Вводная информация....................................................................................................159
Постановка задачи .........................................................................................................162
Что мы решили сделать................................................................................................162
Первый вариант решения: ремонт линейной карты системы «Сатурн».......162
Реализация........................................................................................................................163
Второй вариант решения: ремонт линейной карты системы «Сатурн»
в сравнении с ремонтом линейной карты системы «Юпитер» ......................165
Реализация........................................................................................................................167
Усвоенные уроки............................................................................................................170
Пример 2. Вывод из эксплуатации домашних каталогов,
использующих файловые серверы..................................................................................173
Вводная информация....................................................................................................173
Постановка задачи .........................................................................................................174
Что мы решили сделать................................................................................................175
Проектирование и реализация ..................................................................................176
Ключевые компоненты.................................................................................................178
Усвоенные уроки............................................................................................................181
Итоги главы ................................................................................................................................. 184
Глава 7. Простота...............................................................................................................................185
Измерение сложности .............................................................................................................. 185
Простота от начала до конца: все в руках SRE ................................................................ 187
Пример 1. Сквозная простота API..................................................................................188
Вводная информация....................................................................................................188
Усвоенные уроки............................................................................................................188
Пример 2. Сложность жизненного цикла проекта....................................................188
Вводная информация....................................................................................................189
Что мы решили сделать................................................................................................189
Усвоенные уроки............................................................................................................189
Возвращение простоты ............................................................................................................ 190
Пример 3. Упрощение паутины Display Ads...............................................................191
Вводная информация....................................................................................................191
Что мы решили сделать................................................................................................191
Усвоенные уроки............................................................................................................193
Пример 4. Запуск сотен микросервисов на общей платформе .............................193
Вводная информация....................................................................................................193
Что мы решили сделать................................................................................................194
Проектирование..............................................................................................................194
Результаты........................................................................................................................194
Усвоенные уроки............................................................................................................195
Пример 5. pDNS больше не зависит от самого себя..................................................195
Вводная информация....................................................................................................195
Постановка задачи .........................................................................................................195
Что мы решили сделать................................................................................................195
Усвоенные уроки............................................................................................................196
Итоги главы ................................................................................................................................. 196
Часть II. Практика
Глава 8. Дежурство ...........................................................................................................................202
Краткий пересказ главы «Быть на связи» первой книги по SRE ............................. 204
Примеры организации дежурных смен в Google и за ее пределами ........................ 204
Google: формирование новой команды.........................................................................205
Начальный сценарий ....................................................................................................205
Учебный план ..................................................................................................................205
Послесловие .....................................................................................................................208
Evernote: осваиваемся в облаке........................................................................................209
Переезд нашей локальной инфраструктуры в облако ......................................209
Настройка стратегий и процессов, свзанных с дежурствами .........................209
Реструктурирование мониторинга и показателей..............................................210
Отслеживание производительности с течением времени................................211
Взаимодействие с CR-инженерами .........................................................................211
Поддержание бесконечного цикла ...........................................................................212
Практические детали реализации ....................................................................................... 212
Анализ нагрузки, вызванной экстренными уведомлениями.................................212
Сценарий: команда перегружена ..............................................................................214
Источники нагрузки экстренных вызовов ............................................................215
Гибкость дежурной смены.................................................................................................225
Сценарий: изменение личных обстоятельств.......................................................225
Динамика дежурных команд.............................................................................................229
Сценарий: культура «пережить неделю»...............................................................229
Итоги главы ................................................................................................................................. 231
Глава 9. Реагирование на инциденты.........................................................................................232
Управление инцидентами в Google ..................................................................................... 233
Система управления инцидентами.................................................................................233
Основные роли в реагировании на инциденты..........................................................234
Примеры конкретных ситуаций ........................................................................................... 235
Пример 1. Ошибка в программном обеспечении: подключение есть,
но ничего не работает (Google) ........................................................................................235
Вводная информация....................................................................................................235
Инцидент...........................................................................................................................236
Анализ ................................................................................................................................237
Пример 2. Сбой в обслуживании — закэшируй меня, если сможешь ................238
Вводная информация....................................................................................................238
Инцидент...........................................................................................................................239
Анализ ................................................................................................................................242
Пример 3. Перебои в подаче электроэнергии — молния никогда
не ударяет в одно место дважды… Пока это не случится........................................244
Вводная информация....................................................................................................244
Инцидент...........................................................................................................................245
Анализ ................................................................................................................................247
Пример 4. Реакция на инцидент в PagerDuty.............................................................247
Внедрение передового опыта ................................................................................................ 250
Подготовка к реагированию на инциденты.................................................................250
Подготовьтесь заранее ........................................................................................................251
Определитесь с каналом связи ..................................................................................252
Держите свою аудиторию в курсе ............................................................................251
Подготовьте список контактов..................................................................................252
Установите критерии для инцидента......................................................................252
Тренировки .............................................................................................................................253
Итоги главы ................................................................................................................................. 254
Глава 10. Культура постмортемов: учимся на ошибках.......................................................255
Пример конкретной ситуации .............................................................................................. 256
Плохой постмортем .................................................................................................................. 257
Чем плох этот отчет..............................................................................................................260
Отсутствие контекста ...................................................................................................260
Упущены ключевые детали ........................................................................................260
Отсутствуют ключевые моменты выполненных действий .............................261
Контрпродуктивные взаимные упреки .................................................................262
Излишне живой язык....................................................................................................262
Нехватка ответственных лиц .....................................................................................262
Ограничение аудитории...............................................................................................263
Хороший отчет ........................................................................................................................... 263
Чем хорош этот отчет ..........................................................................................................274
Сроки распространения постмортема.....................................................................275
Краткость ..........................................................................................................................275
Организационные меры по стимулированию ................................................................. 276
Модель обеспечения правильных действий................................................................276
Используйте безобвинительный язык....................................................................276
Привлеките всех участников инцидента к составлению отчета....................277
Наладьте обратную связь ............................................................................................277
Поощряйте написание постмортемов............................................................................277
Вознаграждение за предпринятые действия ........................................................277
Поощрение позитивных организационных изменений....................................277
Акцентируйте внимание на повышении надежности........................................278
Считайте авторов постмортемов экспертами.......................................................278
Таблица рекордов...........................................................................................................278
Поделитесь отчетами со всеми.........................................................................................278
Распространите отчеты по всей организации ......................................................279
Проводите межгрупповые обзоры............................................................................279
Проводите учения ..........................................................................................................280
Еженедельно сообщайте об инцидентах и сбоях.................................................280
Реагирование на ошибки, встречающиеся в постмортемах ...................................280
Избегайте ассоциаций ..................................................................................................280
Неспособность укрепить культуру ..........................................................................281
Не хватает времени, чтобы написать постмортем...............................................281
Повторение инцидентов...............................................................................................282
Инструменты и шаблоны ........................................................................................................ 282
Шаблоны для составления постмортемов ...................................................................282
Шаблоны Google.............................................................................................................283
Другие шаблоны, используемые в отрасли...........................................................283
Инструменты для составления отчетов........................................................................283
Создание отчетов............................................................................................................283
Чек-лист для отчетов ....................................................................................................284
Хранение отчетов ...........................................................................................................284
После того как отчет составлен.................................................................................284
Анализ постмортемов ...................................................................................................285
Другие инструменты, используемые в отрасли...................................................286
Итоги главы ................................................................................................................................. 286
Глава 11. Управление нагрузкой..................................................................................................287
Балансировка нагрузки Google Cloud ................................................................................ 287
Anycast......................................................................................................................................288
Maglev .......................................................................................................................................290
Глобальный программный балансировщик нагрузки..............................................291
Клиентская часть Google....................................................................................................292
GCLB: низкое время отклика ...........................................................................................293
GCLB: высокая доступность.............................................................................................294
Пример 1. Poke' mon GO на GCLB ...................................................................................294
Миграция на GCLB.......................................................................................................296
Решение проблемы ........................................................................................................298
Задел на будущее............................................................................................................299
Автомасштабирование ............................................................................................................. 299
Реагирование на машины в нерабочем состоянии....................................................299
Системы с сохранением состояния.................................................................................300
Умеренные настройки.........................................................................................................301
Задание ограничений...........................................................................................................301
Аварийные выключатели и масштабирование вручную.........................................302
Избегаем перегруженности прикладных частей........................................................302
Избегаем дисбаланса трафика..........................................................................................303
Комбинирование стратегий контроля нагрузки ............................................................. 303
Пример 2. Когда из-за отбрасывания нагрузки
начинаются проблемы.........................................................................................................304
Что происходило на самом деле................................................................................306
Что пошло не так ............................................................................................................306
Усвоенные уроки............................................................................................................306
Итоги главы ................................................................................................................................. 308
Глава 12. Введение в проектирование неабстрактных
больших систем ..................................................................................................................................309
Что такое NALSD ...................................................................................................................... 309
Почему «неабстрактных»? ..................................................................................................... 310
Пример AdWords ....................................................................................................................... 310
Процесс проектирования ...................................................................................................311
Начальные требования .......................................................................................................312
Одна машина ..........................................................................................................................312
Распределенная система.....................................................................................................315
MapReduce ........................................................................................................................315
LogJoiner............................................................................................................................316
Шардированный LogJoiner.........................................................................................319
Несколько дата-центров ..............................................................................................322
Итоги главы ................................................................................................................................. 326
Глава 13. Конвейеры обработки данных ...................................................................................327
Конвейерные приложения ..................................................................................................... 328
Обработка событий/преобразование данных для упорядочения
или структурирования данных ........................................................................................328
Аналитическая обработка данных ..................................................................................329
Машинное обучение ............................................................................................................330
Практические рекомендации по конвейерам .................................................................. 333
Задавайте и оценивайте SLO............................................................................................333
Новизна данных..............................................................................................................333
Правильность данных...................................................................................................333
Изоляция данных/балансировка нагрузки...........................................................334
Комплексное оценивание ............................................................................................334
Подготовьте план на случай отказа зависимости......................................................335
Создавайте и поддерживайте в актуальном состоянии
документацию конвейера...................................................................................................336
Системные диаграммы .................................................................................................336
Документация происходящих в системе процессов ..........................................337
Записи в инструкции ....................................................................................................337
Составьте схему своего жизненного цикла разработки ..........................................338
Создание прототипа ......................................................................................................338
Тестирование с помощью однопроцентного пробного прогона.....................338
Предэксплуатационное тестирование.....................................................................338
Канареечное тестирование..........................................................................................339
Выполните частичное развертывание.....................................................................340
Выполняйте развертывание в промышленную эксплуатацию.............................340
Уменьшите число критических точек и влияние паттернов
рабочей нагрузки...................................................................................................................341
Реализуйте автомасштабирование и планируйте ресурсы ....................................342
Придерживайтесь стратегий контроля доступа и обеспечения безопасности......343
Заранее планируйте пути передачи выполнения ......................................................343
Требования к конвейеру и его проектирование .............................................................. 344
Какие функциональные возможности вам необходимы.........................................344
Идемпотентные и двухэтапные мутации......................................................................346
Запись данных о состоянии в контрольных точках..................................................346
Паттерны кода........................................................................................................................347
Переиспользование кода..............................................................................................347
Создание конвейеров на основе микросервисного подхода............................348
Готовность конвейера к промышленной эксплуатации..........................................348
Матрица зрелости конвейера.....................................................................................348
Сбои конвейеров: предотвращение и реагирование ...................................................... 353
Возможные виды сбоев.......................................................................................................354
Задержка данных............................................................................................................354
Поврежденные данные .................................................................................................354
Возможные причины...........................................................................................................355
Зависимости конвейера ...............................................................................................355
Конвейерное приложение или конфигурация.....................................................356
Неожиданный рост требуемых ресурсов ...............................................................356
Перебои в обслуживании на уровне региона........................................................357
Пример: Spotify .......................................................................................................................... 357
Доставка событий .................................................................................................................357
Проектирование и архитектура системы доставки событий.................................359
Сбор данных.....................................................................................................................359
Извлечение, преобразование, загрузка...................................................................360
Доставка данных.............................................................................................................360
Эксплуатация системы доставки событий...................................................................361
Своевременность ............................................................................................................361
Асимметричность ...........................................................................................................363
Полнота..............................................................................................................................364
Интеграция и поддержка пользователей......................................................................364
Документация..................................................................................................................365
Система мониторинга ...................................................................................................365
Планирование мощностей...........................................................................................366
Процесс разработки.......................................................................................................367
Реагирование на инциденты.......................................................................................369
Резюме ......................................................................................................................................370
Итоги главы ................................................................................................................................. 371
Глава 14. Проектирование конфигурации и практические рекомендации...................372
Что такое конфигурация ......................................................................................................... 372
Конфигурация и надежность............................................................................................373
Разделяем методологию и техническую часть ...........................................................374
Методология конфигурации ................................................................................................. 375
Конфигурация как вопросы пользователям................................................................376
Вопросы должны отражать цели пользователей .......................................................377
Обязательные и необязательные вопросы...................................................................377
Отходим от простой конфигурации...............................................................................379
Техническая сторона конфигурации .................................................................................. 380
Разделяем конфигурацию и итоговые данные ...........................................................380
Важность инструментария ................................................................................................382
Проверка семантики......................................................................................................383
Синтаксис конфигурации ...........................................................................................383
Отслеживание изменений и смены владельца ...........................................................384
Безопасное применение изменений конфигурации.................................................385
Итоги главы ................................................................................................................................. 386
Глава 15. Нюансы конфигурации................................................................................................387
Рутинные операции, связанные с конфигурацией системы ...................................... 387
Снижение объема рутинных операций, связанных с настройками ......................... 388
Важнейшие свойства и ловушки систем конфигурации ............................................. 389
Ловушка 1. Непонимание того, что конфигурация — задача языка
программирования ...............................................................................................................390
Ловушка 2. Проектирование случайных или специализированных
возможностей языка ............................................................................................................391
Ловушка 3. Слишком предметно-ориентированная оптимизация .....................391
Ловушка 4. Чередование пересмотра настроек с побочными
эффектами...............................................................................................................................391
Ловушка 5. Использование уже существующих универсальных языков
сценариев вроде Python, Ruby или Lua.........................................................................392
Интеграция языка конфигурации ....................................................................................... 393
Генерация конфигурации в конкретных форматах ..................................................393
Настройка нескольких приложений..............................................................................394
Интеграция уже существующего приложения: Kubernetes ....................................... 395
Какие возможности предлагает Kubernetes.................................................................395
Пример конфигурации Kubernetes.................................................................................396
Интеграция языка конфигурации...................................................................................396
Интеграция пользовательских приложений
(ПО для внутреннего применения) .................................................................................... 400
Эффективная эксплуатация системы конфигурации .................................................. 403
Контроль версий ...................................................................................................................403
Система контроля исходного кода..................................................................................404
Инструментарий ...................................................................................................................404
Тестирование..........................................................................................................................404
Когда следует обрабатывать настройки ............................................................................ 405
Самый ранний вариант: внесение JSON в репозиторий.........................................405
Достоинства......................................................................................................................406
Недостатки........................................................................................................................406
Посередине пути: обработка во время сборки............................................................406
Достоинства......................................................................................................................406
Недостатки........................................................................................................................406
На поздней стадии: обработка во время выполнения..............................................407
Достоинства......................................................................................................................407
Недостатки........................................................................................................................407
Остерегайтесь злоупотреблений настройками ............................................................... 407
Итоги главы ................................................................................................................................. 409
Глава 16. Канареечный выпуск версий......................................................