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

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

Покупка
Артикул: 739799.01.99
Доступ онлайн
999 ₽
В корзину
Эта книга посвящена облачным платформам, которые обеспечивают многие преимущества - практически нулевое время простоя, бесконечную масштабируемость, короткие циклы обратной связи, отказоустойчивость и контроль затрат. Применяя конструкции для облачной среды, разработчики могут создавать гибкие, легко адаптируемые, веб-масштабируемые распределенные приложения, которые обрабатывают огромный пользовательский трафик и объем данных. Автор рассматривает методы и шаблоны, ориентированные на приложения для облачной среды - с учетом их жизненного цикла, управления конфигурацией в масштабах облака, обновления без простоев. Для работы с книгой читателю необходимы базовые навыки в области проектирования программного обеспечения и умение понимать код, написанный на lava или похожем языке. Издание будет полезно всем, кого интересует развертывание систем на различных облачных платформах.
Дэвис, К. Шаблоны проектирования для облачной среды : монография / К. Дэвис ; пер. с анг. Д. А. Беликова. - Москва : ДМК Пресс, 2020. - 388 с. - ISBN 978-5-97060-807-4. - Текст : электронный. - URL: https://znanium.com/catalog/product/1094958 (дата обращения: 22.11.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

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