Шаблоны проектирования для облачной среды
Покупка
Тематика:
Другие операционные системы
Издательство:
ДМК Пресс
Автор:
Дэвис Корнелия
Перевод:
Беликов Дмитрий Анатольевич
Год издания: 2020
Кол-во страниц: 388
Дополнительно
Вид издания:
Монография
Уровень образования:
ВО - Магистратура
ISBN: 978-5-97060-807-4
Артикул: 739799.01.99
Эта книга посвящена облачным платформам, которые обеспечивают многие преимущества - практически нулевое время простоя, бесконечную масштабируемость, короткие циклы обратной связи, отказоустойчивость и контроль затрат. Применяя конструкции для облачной среды, разработчики могут создавать гибкие, легко адаптируемые, веб-масштабируемые распределенные приложения, которые обрабатывают огромный пользовательский трафик и объем данных. Автор рассматривает методы и шаблоны, ориентированные на приложения для облачной среды - с учетом их жизненного цикла, управления конфигурацией в масштабах облака, обновления без простоев. Для работы с книгой читателю необходимы базовые навыки в области проектирования программного обеспечения и умение понимать код, написанный на lava или похожем языке. Издание будет полезно всем, кого интересует развертывание систем на различных облачных платформах.
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Магистратура
- 09.04.02: Информационные системы и технологии
- 09.04.04: Программная инженерия
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Облачные платформы призваны исполнить ваши заветные желания: их использование обещает вам практически нулевое время простоя, бесконечную масштабируемость, короткие циклы обратной связи, отказоустойчивость, контроль затрат… Но как этого добиться? Применяя конструкции для облачной среды, разработчики могут создавать гибкие, легко адаптируемые, веб-масштабируемые распределенные приложения, которые обрабатывают огромный пользовательский трафик и загрузку данных. Изучите фундаментальные шаблоны и методы, описываемые в книге, – и вы сможете успешно ориентироваться в динамичном, распределенном виртуальном мире облачных вычислений. Используя реалистичные примеры и проверенные на опыте методы работы с облачными приложениями, данными, службами, маршрутизацией, автор – разработчик с 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