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

Шаблоны проектирования для облачной среды

Покупка
Артикул: 739799.01.99
Доступ онлайн
999 ₽
В корзину
Эта книга посвящена облачным платформам, которые обеспечивают многие преимущества - практически нулевое время простоя, бесконечную масштабируемость, короткие циклы обратной связи, отказоустойчивость и контроль затрат. Применяя конструкции для облачной среды, разработчики могут создавать гибкие, легко адаптируемые, веб-масштабируемые распределенные приложения, которые обрабатывают огромный пользовательский трафик и объем данных. Автор рассматривает методы и шаблоны, ориентированные на приложения для облачной среды - с учетом их жизненного цикла, управления конфигурацией в масштабах облака, обновления без простоев. Для работы с книгой читателю необходимы базовые навыки в области проектирования программного обеспечения и умение понимать код, написанный на lava или похожем языке. Издание будет полезно всем, кого интересует развертывание систем на различных облачных платформах.
Дэвис, К. Шаблоны проектирования для облачной среды : монография / К. Дэвис ; пер. с анг. Д. А. Беликова. - Москва : ДМК Пресс, 2020. - 388 с. - ISBN 978-5-97060-807-4. - Текст : электронный. - URL: https://znanium.com/catalog/product/1094958 (дата обращения: 24.04.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
Облачные платформы призваны исполнить 
ваши заветные желания: их использование обещает вам практически нулевое время простоя, 
бесконечную масштабируемость, короткие циклы обратной связи, отказоустойчивость, контроль затрат… Но как этого добиться? Применяя 
конструкции для облачной среды, разработчики 
могут создавать гибкие, легко адаптируемые, 
веб-масштабируемые распределенные приложения, которые обрабатывают огромный пользовательский трафик и загрузку данных. Изучите 
фундаментальные шаблоны и методы, описываемые в книге, – и вы сможете успешно ориентироваться в динамичном, распределенном виртуальном мире облачных вычислений.
Используя реалистичные примеры и проверенные на опыте методы работы с облачными приложениями, данными, службами, маршрутизацией, автор – разработчик с 25-летним стажем 
– покажет вам, как проектировать и создавать 
программное обеспечение, которое прекрасно 
подходит для современных облачных платформ.

«Эта книга восполняет разрыв 
между теорией и практикой. Занимательно и познавательно».
— из предисловия Джина Кима, 
одного из авторов книги 
«Проект Феникс»

«Книга фокусируется на решении конкретных непростых задач и может использоваться как 
важное руководство при разработке современных проектов.» 
— Дэвид Шмитц, 
Senacor Technologies

«Книга проливает свет на процесс создания самовосстанавливающихся распределенных отказоустойчивых веб-приложений, 
требующих минимального технического обслуживания..»
— Равиш Шарма, 
Stellapps Technologies

Интернет-магазин: www.dmkpress.com

Оптовая продажа: КТК «Галактика»
 books@alians-kniga.ru

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

www.дмк.рф

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

Корнелия Дэвис (Cornelia Davis) – вице-президент по развитию технологий в компании Pivotal Software. Последние 25 лет своей карьеры она 
посвятила созданию качественного программного обеспечения и, имея 
тягу к преподаванию, лично подготовила прекрасных разработчиков.

Шаблоны проектирования для облачной среды

9 785970 608074

ISBN 978-5-97060-807-4

Корнелия Дэвис 

Шаблоны 
проектирования 
для облачной 
                 среды

Шаблоны проектирования для облачной среды

Корнелия Дэвис

Шаблоны проектирования  
для облачной среды

Cloud Native Patterns

Designing change-tolerant software

CORNELIA DAVIS
Foreword by GENE KIM

Шаблоны проектирования 
для облачной среды

Проектирование Программного обесПечения, 

устойчивого к изменениям

КОРНЕЛИЯ ДЭВИС
Предисловие ДЖИНА КИМА

Москва, 2020

УДК 004.42
ББК 32.972
Д94

Дэвис К.
Д94 
Шаблоны проектирования для облачной среды / пер. с анг. Д. А. Беликова. – 
М.: ДМК Пресс, 2020. – 388 с.: ил. 

ISBN 978-5-97060-807-4

Эта книга посвящена облачным платформам, которые обеспечивают многие преимущества – практически нулевое время простоя, бесконечную масштабируемость, 
короткие циклы обратной связи, отказоустойчивость и контроль затрат. Применяя 
конструкции для облачной среды, разработчики могут создавать гибкие, легко адаптируемые, веб-масштабируемые распределенные приложения, которые обрабатывают 
огромный пользовательский трафик и объем данных.
Автор рассматривает методы и шаблоны, ориентированные на приложения для 
облачной среды – с учетом их жизненного цикла, управления конфигурацией в масштабах облака, обновления без простоев.
Для работы с книгой читателю необходимы базовые навыки в области проектирования программного обеспечения и умение понимать код, написанный на Java 
или похожем языке.
Издание будет полезно всем, кого интересует развертывание систем на различных 
облачных платформах.

УДК 004.42
ББК 32.972

Original English language edition published by Manning Publications USA, USA. Copyright © 
2019 by Manning Publications Co. Russian-language edition copyright © 2020 by DMK Press. All 
rights reserved.

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

ISBN 978-1-617-29532-4 (анг.) 
 Copyright © 2019 by Manning Publications Co
ISBN 978-5-97060-807-4 (рус.) 
© Оформление, издание, перевод, ДМК Пресс, 2020

Моему мужу, Глену.
В тот день, когда я встретила тебя, вся моя жизнь изменилась

Моему сыну, Максу.
В тот день, когда ты родился, вся моя жизнь изменилась

Содержание

Предисловие ...........................................................................................................11
От автора ..................................................................................................................12
Благодарности ........................................................................................................14
Об этой книге ..........................................................................................................16
Об авторе .................................................................................................................20
Об иллюстрации на обложке ..............................................................................21

Часть I. Контекст облачной среды .....................................................................22

Глава 1. Вы продолжаете использовать это слово: определение  
понятия «cloud-native» .........................................................................................23
1.1. Современные требования к приложениям .......................................................27
1.1.1. Нулевое время простоя ................................................................................27
1.1.2. Сокращенные контуры обратной связи .....................................................28
1.1.3. Мобильная и мультидевайсная поддержка ................................................28
1.1.4. Устройства, подключенные к сети, также известные как интернет  
вещей ......................................................................................................................29
1.1.5. Управление с помощью данных ..................................................................29
1.2. Знакомство с программным обеспечением для облачной среды ...................30
1.2.1. Определение понятия «cloud-native» .........................................................31
1.2.2. Ментальная модель программного обеспечения для облачной среды ...33
1.2.3. Программное обеспечение для облачной среды в действии ....................38
1.3. Cloud-native и мир во всем мире .......................................................................43
1.3.1. Cloud и cloud-native .....................................................................................43
1.3.2. Что не относится к понятию «cloud-native»? .............................................44
1.3.3. Облачная среда нам подходит.....................................................................45
Резюме ........................................................................................................................48

Глава 2. Запуск облачных приложений в рабочем окружении .................49
2.1. Препятствия ........................................................................................................50
2.1.1. Снежинки ......................................................................................................51
2.1.2. Рискованное развертывание .......................................................................53
2.1.3. Изменение – это исключение......................................................................57
2.1.4. Нестабильность рабочего окружения .........................................................57
2.2. Стимулирующие факторы ..................................................................................58
2.2.1. Непрерывная доставка ................................................................................59
2.2.2. Повторяемость .............................................................................................63
2.2.3. Безопасное развертывание .........................................................................68
2.2.4. Изменение – это правило ............................................................................72
Резюме ........................................................................................................................75

Содержание  7

Глава 3. Платформа для облачного ПО ............................................................76

3.1. Эволюция облачных платформ ..........................................................................77
3.1.1. Все началось с облака ...................................................................................77
3.1.2. Тональный вызов .........................................................................................79
3.2. Основные принципы платформы для облачной среды ...................................82
3.2.1. Вначале поговорим о контейнерах .............................................................82
3.2.2. Поддержка «постоянно меняющихся» .......................................................84
3.2.3. Поддержка «сильно распределенных» .......................................................87
3.3. Кто что делает? ....................................................................................................91
3.4. Дополнительные возможности платформы для облачной среды ...................94
3.4.1. Платформа поддерживает весь жизненный цикл разработки  
программного обеспечения ..................................................................................94
3.4.2. Безопасность, контроль над изменениями, соответствие  
требованиям (функции управления) ...................................................................97
3.4.3. Контроль за тем, что идет в контейнер ....................................................100
3.4.4. Обновление и исправление уязвимостей ................................................102
3.4.5. Контроль над изменениями ......................................................................104
Резюме ......................................................................................................................106

Часть II. Шаблоны для облачной среды .........................................................107

Глава 4. Событийно-ориентированные микросервисы:  
не только запрос/ответ ......................................................................................109

4.1. (Обычно) нас учат императивному программированию...............................110
4.2. Повторное знакомство с событийно-ориентированными  
вычислениями .........................................................................................................112
4.3. Моя глобальная поваренная книга ..................................................................113
4.3.1. Запрос/ответ ...............................................................................................113
4.2.2. Событийно-ориентированный подход ....................................................119
4.4 Знакомство с шаблоном Command Query Responsibility Segregation .............129
4.5. Разные стили, схожие проблемы .....................................................................131
Резюме ......................................................................................................................133

Глава 5. Избыточность приложения: горизонтальное  
масштабирование и отсутствие  фиксации состояния ................................134

5.1. У приложений для облачной среды есть много развернутых  
экземпляров .............................................................................................................136
5.2. Приложения с фиксацией текущего состояния в облаке ...............................137
5.2.1. Разложение монолита на части и привязка к базе данных ....................139
5.2.2. Плохая обработка состояния сеанса .........................................................142
5.3. HTTP-сессии и «липкие» сессии .......................................................................155
5.4. Службы с фиксацией текущего состояния и приложения без фиксации 
 состояния .................................................................................................................158
5.4.1. Службы с фиксацией состояния – это специальные службы ..................158
5.4.2. Создание приложений без сохранения состояния ..................................160
Резюме ......................................................................................................................165

 Содержание

Глава 6. Конфигурация приложения: не только переменные среды .....166

6.1. Почему мы вообще говорим о конфигурации? ..............................................167
6.1.1. Динамическое масштабирование – увеличение и уменьшение  
количества экземпляров приложения ...............................................................168
6.1.2. Изменения инфраструктуры, вызывающие изменения  
в конфигурации ...................................................................................................168
6.1.3. Обновление конфигурации приложения с нулевым временем  
простоя .................................................................................................................169
6.2. Уровень конфигурации приложения ...............................................................171
6.3. Инъекция значений системы/среды ...............................................................176
6.3.1. Давайте посмотрим, как это работает: использование  
переменных среды для конфигурации ..............................................................176
6.4. Внедрение конфигурации приложения ..........................................................184
6.4.1. Знакомство с сервером конфигурации .....................................................185
6.4.2. Безопасность добавляет больше требований ...........................................193
6.4.3. Давайте посмотрим, как это работает: конфигурация приложения  
с использованием сервера конфигурации .........................................................193
Резюме ......................................................................................................................195

Глава 7. Жизненный цикл приложения: учет постоянных изменений ....197

7.1. Сочувствие к операциям ...................................................................................199
7.2. Жизненный цикл одного приложения и жизненные циклы  
нескольких  приложений .........................................................................................200
7.2.1. Сине-зеленые обновления .........................................................................203
7.2.2. Последовательные обновления .................................................................205
7.2.3. Параллельное развертывание ...................................................................205
7.3. Координация между различными жизненными циклами приложения .......209
7.4. Давайте посмотрим, как это работает: периодическая смена  
реквизитов  доступа и жизненный цикл приложения ..........................................212
7.5. Работа с эфемерной средой выполнения ........................................................221
7.6. Видимость состояния жизненного цикла приложения ..................................223
7.6.1. Давайте посмотрим, как это работает: конечные точки  
работоспособности и проверки ..........................................................................228
7.7. Внесерверная обработка данных ......................................................................231
Резюме ......................................................................................................................234

Глава 8. Доступ к приложениям: сервисы, маршрутизация  
и обнаружение сервисов ....................................................................................235

8.1. Сервисная абстракция ......................................................................................238
8.1.1. Пример сервиса: поиск в Google ...............................................................239
8.1.2. Пример сервиса: наш агрегатор блогов ....................................................240
8.2. Динамическая маршрутизация .......................................................................242
8.2.1. Балансировка нагрузки на стороне сервера .............................................242
8.2.2. Балансировка нагрузки на стороне клиента ............................................243
8.2.3. Свежесть маршрутов ..................................................................................244
8.3. Обнаружение служб ..........................................................................................247

Содержание  9

8.3.1. Обнаружение служб в сети ........................................................................250
8.3.2. Обнаружение сервисов с балансировкой нагрузки на стороне  
клиента .................................................................................................................251
8.3.3. Обнаружение сервисов в Kubernetes ........................................................253
8.3.4. Давайте посмотрим, как это работает: использование  
обнаружения сервисов ........................................................................................255
Резюме ......................................................................................................................258

Глава 9. Избыточность взаимодействия: повторная отправка  
запроса и другие циклы  управления ..............................................................259

9.1. Повторная отправка запроса ............................................................................261
9.1.1. Основной шаблон .......................................................................................261
9.1.2. Давайте посмотрим, как это работает: простая повторная  
отправка запроса .................................................................................................262
9.1.3. Повторная отправка запроса: что может пойти не так? .........................266
9.1.4. Создание шквала повторных отправок запроса ......................................267
9.1.5. Давайте посмотрим, как это работает: создание шквала п 
овторных отправок запроса ................................................................................268
9.1.6. Как избежать шквала повторных отправок запросов: добрые  
клиенты ................................................................................................................278
9.1.7. Давайте посмотрим, как это работает: стать более  
доброжелательным клиентом ............................................................................279
9.1.8. Когда не нужно использовать повторную отправку запроса ..................284
9.2. Альтернативная логика ....................................................................................285
9.2.1. Давайте посмотрим, как это работает: реализация  
альтернативной логики .......................................................................................286
9.3. Циклы управления ............................................................................................291
9.3.1. Типы циклов управления ..........................................................................292
9.3.2. Контроль над циклом управления ............................................................293
Резюме ......................................................................................................................295

Глава 10. Лицом к лицу с сервисами: предохранители и API-шлюзы....296

10.1. Предохранители ..............................................................................................297
10.1.1. Предохранитель для программного обеспечения .................................298
10.1.2. Реализация предохранителя ...................................................................299
10.2. API-шлюзы .......................................................................................................312
10.2.1. API-шлюзы в программном обеспечении для облачной среды ...........314
10.2.2. Топология шлюза API ...............................................................................316
10.3. Сервисная сеть .................................................................................................318
10.3.1. Сайдкар .....................................................................................................318
10.3.2. Уровень управления .................................................................................320
Резюме ......................................................................................................................323

Глава 11. Поиск и устранение неполадок: найти иголку в стоге сена ....324

11.1. Ведение журналов приложений .....................................................................325
11.2. Метрики приложений .....................................................................................329

 Содержание

11.2.1. Извлечение метрик ..................................................................................330
11.2.2. Размещение метрик .................................................................................333
11.3. Распределенная трассировка .........................................................................336
11.3.1. Вывод трассировщика ..............................................................................339
11.3.2. Компоновка трассировок с помощью Zipkin ..........................................342
11.3.3. Детали реализации ..................................................................................346
Резюме ......................................................................................................................347

Глава 12. Данные в облачной среде: разбиение  
монолитных данных ...........................................................................................349
12.1. Каждому микросервису нужен кеш ...............................................................352
12.2. Переход от протокола «запрос/ответ» к событийно-ориентированному  
подходу .....................................................................................................................355
12.3. Журнал событий ..............................................................................................357
12.3.1. Давайте посмотрим, как это работает: реализация  
событийно-ориентированных микросервисов .................................................359
12.3.2. Что нового в темах и очередях? ..............................................................372
12.3.3. Полезные данные события ......................................................................375
12.3.4. Идемпотентность .....................................................................................377
12.4. Порождение событий ......................................................................................378
12.4.1. Путешествие еще не окончено ................................................................378
12.4.2. Источник истины .....................................................................................380
12.4.3. Давайте посмотрим, как это работает: реализация порождения  
событий ................................................................................................................382
12.5. Это лишь поверхностное знакомство ............................................................385
Резюме ......................................................................................................................385

Предметный указатель .......................................................................................387

Предисловие

На протяжении шести лет я имел честь работать с Николь Форсгрен и Джезом 
Хамблом над отчетом о состоянии DevOps (State of DevOps Report), в котором собраны данные более чем 30 000 респондентов. Одним из величайших откровений 
для меня стала важность архитектуры программного обеспечения: у высокопроизводительных команд были архитектуры, позволяющие разработчикам быстро 
и независимо разрабатывать, тестировать и развертывать программное обеспечение для клиентов, делая это безопасно и надежно.
Несколько десятилетий назад мы бы пошутили, сказав, что разработчики программного обеспечения были экспертами только в использовании Visio, создании диаграмм UML и генерации слайдов PowerPoint, на которые никто никогда 
не смотрел. Если когда-то так и было, то сейчас это точно не так. В наши дни компании одерживают победы и проигрывают на рынке благодаря программному 
обеспечению, которое они создают. И ничто не влияет на повседневную работу 
разработчиков больше, чем архитектура, в которой они должны работать.
Эта книга заполняет пробел, охватывая теорию и практику. В сущности, я думаю, 
что только очень небольшое число людей могло бы написать ее. Корнелия Дэвис 
обладает уникальной квалификацией. На протяжении нескольких лет, будучи аспирантом, она изучала языки программирования, развивая любовь к функциональному программированию и неизменяемости. В течение нескольких десятков лет 
она работала с крупными программными системами и помогала крупным компаниям, занимающимся разработкой программного обеспечения, достигать величия.
За последние пять лет я много раз обращался к ней за помощью и советами, часто по таким темам, как CQRS и Event Sourcing, LISP и Clojure (мой любимый язык 
программирования), опасности императивного программирования и состоя ния, 
и даже таким простым вещам, как рекурсия.
Корнелия не просто так начинает с шаблонов, что и  делает эту книгу настолько 
полезной для чтения. Она начинает с основных принципов, а затем доказывает их 
обоснованность с помощью аргументации, иногда с помощью логики, а иногда с помощью блок-схем. Ее не устраивает одна лишь теория, поэтому затем она реализует 
эти шаблоны в Java Spring, итерация за итерацией, включая туда то, что вы узнали.
Я нашел эту книгу интересной и познавательной и узнал невероятное количество тем, о которых раньше у меня было лишь поверхностное представление. 
Теперь я полон решимости реализовать ее примеры в Clojure, желая доказать, что 
я могу применить эти знания на практике.
Я подозреваю, что вы объедините концепции, которые приведут вас в восторг 
и, возможно, даже поразят вас. Для меня одной из этих концепций была необходимость централизовать межсекторальные задачи либо с помощью аспектноориентированного программирования, либо sidecar-контейнеров Kubernetes или 
инъекций Spring Retry.
Я надеюсь, что вы найдете эту книгу полезной для чтения, как и я!

Джин Ким, 
исследователь и один из авторов книг  
The Phoenix Project, The DevOps Handbook  
и Accelerate

От автора

Я начинала свою карьеру в области обработки изображений. Я работала с инфракрасными изображениями в отделе ракетных систем компании Hughes Aircraft, 
занимаясь такими вещами, как выделение границ и межкадровая корреляция 
(часть из этого можно найти в приложениях вашего мобильного телефона сегодня – все это было аж в 80-х!).
Одним из вычислений, которые мы часто выполняем при обработке изображений, является среднеквадратическое отклонение. Я никогда не стеснялась задавать вопросы, и один из вопросов, которые я часто задавала в то время, касался 
этого среднеквадратического отклонения. Коллега неизменно писал следующее:

Но я знала формулу среднеквадратического отклонения. Черт возьми, за три 
месяца я писала ее уже, наверное, полдюжины раз. Я спрашивала: «Что дает нам 
знание среднеквадратического отклонения в этом контексте?» Среднеквадратическое отклонение используется для определения того, что является «нормальным», чтобы мы могли искать выбросы. Если я рассчитываю стандартное отклонение, а затем нахожу нечто, выходящее за рамки нормы, это признак того, что 
мой датчик неисправен и мне нужно выбросить кадр с изображением, или это 
показывает действия потенциального противника?
Какое все это имеет отношение к облачной среде? Никакого. Но это имеет отношение к шаблонам. Дело в том, что я знала схему – расчет среднеквадратического отклонения, – но из-за недостатка опыта в то время я боролась с тем, когда 
и зачем ее применять.
В этой книге я научу вас шаблонам для облачных приложений – и да, я покажу 
вам множество «формул», но гораздо больше времени я трачу на контекст – когда 
и для чего применять эти шаблоны. На самом деле шаблоны, как правило, не так 
уж и сложны (например, повтор запроса, описанный в главе 9, является простой 
концепцией, которую легко реализовать). Но выбрать, когда применять шаблон 
и как именно это сделать, может быть непросто. Существует так много понимания 
контекста, в котором вы будете применять эти шаблоны, и, честно говоря, этот 
контекст может быть сложным.
Так что же это за контекст? По сути, это одна из распределенных систем. Когда 
я начинала свою карьеру более 30 лет назад, я знала мало людей, которые работали над распределенными системами, и я не посещала занятия по распределенным системам в колледже. Да, были люди, которые работали в этой области, но, 
честно говоря, она была довольно нишевой.
Сегодня подавляющее большинство программного обеспечения является распределенной системой. Некоторые части вашего программного обеспечения работают в браузере, а другие – на сервере или, осмелюсь сказать, целой куче серверов. Эти серверы могут работать в вашем корпоративном центре обработки 

От автора  13

данных, или они могут находиться в центре обработки темных данных в Прайневилле, штат Орегон, или же и там, и там. И все эти фрагменты взаимодействуют друг с другом по сети, возможно, через интернет, и, вероятно, данные вашего 
программного обеспечения также являются широко распределенными. Говоря 
проще, ПО для облачной среды – это распределенная система. Кроме того, все постоянно меняется – могут случаться проблемы с серверами, в сетях часто бывают 
простои, пусть даже кратковременные, а устройства хранения могут выходить из 
строя без предупреждения – однако ожидается, что ваше программное обеспечение будет работать. Это довольно сложный контекст.
Но его можно полностью подчинить себе! Цель этой книги – помочь вам понять 
этот контекст и предоставить вам инструменты для того, чтобы стать опытным 
архитектором и разработчиком программного обеспечения для облачных сред.
Никогда прежде я не была более интеллектуально стимулирована, чем сейчас. 
Во многом это связано с тем, что технологический ландшафт существенно меняется, и в центре внимания находятся облачные технологии. Мне очень нравится 
то, чем я зарабатываю на жизнь, и я хочу, чтобы все, особенно вы, получали удовольствие от написания программного обеспечения так же, как и я. Вот почему 
я и написала эту книгу: я хочу поделиться с вами сумасшедшими классными проблемами, над которыми мы работаем, и помочь вам на пути к решению этих проблем. Для меня большая честь иметь возможность сыграть даже небольшую роль 
в вашем пути к облачным технологиям.

Благодарности

Мое путешествие по облачным технологиям началось всерьез в 2012 году, когда 
мой начальник Том Магуайр попросил меня заняться моделью PaaS (Platform as 
a Service – Платформа как услуга). Будучи членами группы по архитектуре в офисе 
технического директора EMC, изучение новых технологий не было для нас чем-то 
новым, но, боже, у нас получилось! Я всегда буду благодарна Тому за этот импульс 
и за предоставленную мне возможность.
К началу 2013 года я уже знала достаточно, чтобы понять, что этим я буду заниматься в обозримом будущем, и с созданием компании Pivotal Software у меня 
было место для этой работы. В первую очередь я хочу поблагодарить Элизабет 
Хендриксон за то, что она пригласила меня на вечеринку Cloud Foundry, – даже 
когда я еще работала в EMC, – и за то, что познакомила меня с Джеймсом Уоттерсом. Я часто говорю, что лучший шаг в моей карьере – работа на Джеймса. Я благодарю его за те многочисленные возможности, которые он предоставил мне, за то, 
что он доверился мне и позволил мне максимально реализовать себя, за бесчисленные разговоры с высокой пропускной способностью, в ходе которых мы все 
вместе познавали облачную среду, и за то, что мы так подружились за последние 
шесть лет.
Я благодарна за то, что являюсь частью Pivotal с момента ее создания, где я проходила обучение наряду со многими яркими, преданными и отзывчивыми коллегами. Я хотела бы поблагодарить Элизабет Хендриксон, Джошуа МакКенти, Эндрю Клэй-Шафера, Скотта Яру, Феррана Роденаса, Мэтта Стайна, Рагвендера Арни 
и многих других (пожалуйста, простите меня, если я кого не упомянула) за то, что 
помогли мне учиться и за то, что разделили со мной шесть лучших лет моей жизни! Я также хотела бы поблагодарить Pivotal, в частности Иана Эндрюса и Келли 
Холл, за спонсирование мини-книги Cloud-Native Foundations.
Я столькому научилась у своих коллег, больше, чем могу себе представить. Спасибо каждому из вас. Но я бы хотела выделить Джина Кима. Я вспоминаю тот вечер, когда мы встретились (и еще раз благодарю Элизабет Хендриксон за ту роль, 
которую она сыграла, чтобы эта встреча стала возможной), и сразу же поняла, что 
мы будем сотрудничать на протяжении долгого времени. Я благодарю Джина за 
возможность поработать с ним на саммите DevOps Enterprise Summit, благодаря 
которому я познакомилась с большим количеством новаторов, работающих в самых разных компаниях. Я благодарю его за ободряющие и расширяющие сознание беседы и за то, что он написал предисловие к этой книге.
Конечно, я благодарю издательство Manning Publications за возможность написать эту книгу, и прежде всего Майка Стивенса, который помог мне перейти от 
праздного любопытства к тому, чтобы сделать реальный шаг в написании книги. 
Я очень благодарна своему редактору по развитию Кристине Тейлор. Она взяла 
начинающего автора, у которого на старте была мешанина идей из 20 глав, и раннюю главу длиной около 70 страниц, и помогла мне создать книгу, которая имеет 
структуру и реальную сюжетную линию. Она работала со мной более двух с половиной лет, подбадривая меня, когда я была в отчаянии, и поздравляла меня, когда 

Доступ онлайн
999 ₽
В корзину