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

Микросервисы Spring в действии

Покупка
Новинка
Артикул: 833979.01.99
Доступ онлайн
1 699 ₽
В корзину
В книге рассказывается о том, как создавать приложения на основе микросервисов с использованием Java и Spring. Описываются особенности управления конфигурацией микросервисов и передовые практики их разработки. Уделено внимание защите потребителей, когда один или несколько экземпляров микросервисов выходят из строя. Начав с создания простых служб, читатель постепенно перейдет к знакомству с приемами эффективного журналирования и мониторинга, научится реструктурировать приложения на Java с помощью инструментов Spring, освоит управление API с помощью Spring Cloud Gateway. Издание предназначено для разработчиков на Java, имеющим опыт создания распределенных приложений и использования Spring, а также всем, кому интересно узнать, что необходимо для развертывания приложения на основе микросервисов в облаке.
Карнелл, Д. Микросервисы Spring в действии : практическое руководство / Д. Карнелл, И. Уайлупо Санчес ; пер. с англ. А. Н. Киселева. - Москва : ДМК Пресс, 2022. - 490 с. - ISBN 978-5-97060-971-2. - Текст : электронный. - URL: https://znanium.ru/catalog/product/2155906 (дата обращения: 18.05.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
Джон Карнелл, Иллари Уайлупо Санчес

Микросервисы Spring 
в действии
Spring Microservices  
in Action

JOHN CARNELL and ILLARY HUAYLUPO SÁNCHEZ
Микросервисы Spring  
в действии

Джон Карнелл, Иллари Уайлупо Санчес

Москва, 2022
УДК 004.432
ББК  32.972.1
К21

Джон Карнелл, Иллари Уайлупо Санчес
К21  Микросервисы Spring в действии / пер. с англ. А. Н. Киселева. – М.: 
ДМК Пресс, 2022. – 490 с.: ил.

ISBN 978-5-97060-971-2

В книге рассказывается о том, как создавать приложения на основе 
микросервисов с использованием Java и Spring. Описываются особенности 
управления конфигурацией микросервисов и передовые практики 
их разработки. Уделено внимание защите потребителей, когда один или 
несколько экземпляров микросервисов выходят из строя.
Начав с создания простых служб, читатель постепенно перейдет к знакомству 
с приемами эффективного журналирования и мониторинга, научится 
реструктурировать приложения на Java с помощью инструментов 
Spring, освоит управление API с помощью Spring Cloud Gateway.
Издание предназначено для разработчиков на Java, имеющим опыт 
создания распределенных приложений и использования Spring, а также 
всем, кому интересно узнать, что необходимо для развертывания приложения 
на основе микросервисов в облаке.

УДК 004.432
ББК 32.972.1

Copyright Original English language edition published by Manning Publications 
USA, USA. Copyright (c) 2021 by Manning Publications. Russian-language edition 
copyright (c) 2021 by DMK Press. All rights reserved.

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

© 2021 by Manning Publications Co.
©  Оформление, издание, перевод, 
ДМК Пресс, 2022
ISBN  (анг.) 978-1-617-29695-6
ISBN  (рус.) 978-5-97060-971-2
Я посвящаю эту книгу всем женщинам,  
которые делают карьеру в естественно-научных,  
инженерно-технических и математических дисциплинах.

Нет ничего невозможного, если упорно трудиться.
Краткое оглавление

1 Добро пожаловать в Spring Cloud ........................................ 27

2 Обзор мира микросервисов через призму Spring Cloud .. 63

3 
Создание микросервисов с использованием Spring Boot ... 91

4 Добро пожаловать в Docker ................................................. 129

5 Управление конфигурациями с использованием 
Spring Cloud Configuration Server ....................................... 150

6 Обнаружение служб .............................................................. 191

7 Когда случаются неприятности: шаблоны устойчивости 
с использованием Spring Cloud и Resilience4j .................. 223

8 Маршрутизация служб с использованием Spring Cloud 
Gateway .................................................................................... 259

9 Безопасность микросервисов ............................................. 294

10 Событийно-ориентированная архитектура  
и Spring Cloud Stream ........................................................... 332

11 Распределенная трассировка с использованием  
Spring Cloud Sleuth и Zipkin ................................................ 367

12 Развертывание микросервисов .......................................... 404
Содержание

Предисловие от издательства ............................................................... 16
Предисловие .................................................................................................. 17
Благодарности ............................................................................................. 19
Об этой книге ............................................................................................... 21
1  
Добро пожаловать в Spring Cloud ............................................. 27
1.1. Эволюция архитектуры микросервисов ................................. 28
1.1.1. N-уровневая архитектура .................................................... 28
1.1.2. Что такое монолитная архитектура? ............................... 29
1.1.3. Что такое микросервис? ...................................................... 30
1.1.4. Зачем менять способ создания приложений? ....................... 32
1.2. Микросервисы со Spring ............................................................ 34
1.3. Что мы будем создавать? ............................................................ 36
1.4. О чем эта книга? .......................................................................... 37
1.4.1. Что вы узнаете в этой книге ............................................... 37
1.4.2. Почему эта книга актуальна для вас? ................................ 38
1.5. Облачные приложения и приложения на основе  
микросервисов ................................................................................... 39
1.5.1. Создание микросервиса с помощью Spring Boot .................... 39
1.5.2. Что такое облачные вычисления? ....................................... 44
1.5.3. В чем преимущества облачных вычислений  
и микросервисов? ............................................................................ 46
1.6. Микросервисы – это больше чем код ...................................... 49
1.7. Базовый шаблон разработки микросервисов ........................ 50
1.8. Шаблоны маршрутизации ......................................................... 52
1.9. Устойчивость клиентов .............................................................. 54
1.10. Шаблоны безопасности ........................................................... 55
1.11. Шаблоны журналирования и трассировки .......................... 56
1.12. Шаблон сбора метрик приложения ....................................... 58
1.13. Шаблоны сборки/развертывания микросервисов ............ 59
Итоги ................................................................................................... 61

2  
Обзор мира микросервисов через призму Spring Cloud ........ 63
2.1. Что такое Spring Cloud? ............................................................. 64
2.1.1. Spring Cloud Config ............................................................... 65
2.1.2. Spring Cloud Service Discovery ................................................ 66
2.1.3. Spring Cloud LoadBalancer и Resilience4j .............................. 66
2.1.4. Spring Cloud API Gateway ..................................................... 67
2.1.5. Spring Cloud Stream ............................................................... 67
2.1.6. Spring Cloud Sleuth ................................................................ 67
2.1.7. Spring Cloud Security ............................................................. 68
2.2. Пример использования Spring Cloud ...................................... 68
2.3. Приемы создания облачных микросервисов ......................... 71
2.3.1. База кода .............................................................................. 74
2.3.2. Зависимости ........................................................................ 75
2.3.3. Конфигурация ...................................................................... 76
2.3.4. Вспомогательные службы ..................................................... 76
2.3.5. Сборка, выпуск, выполнение ................................................. 77
2.3.6. Процессы .............................................................................. 78
2.3.7. Привязка портов ................................................................. 78
2.3.8. Масштабируемость ............................................................. 79
2.3.9. Одноразовость ...................................................................... 79
2.3.10. Сходство окружений разработки/эксплуатации ............. 80
2.3.11. Журналирование ................................................................ 80
2.3.12. Задачи администрирования ............................................. 81
2.4. Актуальность наших примеров ................................................. 81
2.5. Создание микросервиса с использованием  
Spring Boot и Java ..................................................................................82
2.5.1. Подготовка окружения ........................................................ 83
2.5.2. Начало создания проекта .................................................... 83
2.5.3. Запуск приложения Spring Boot: класс инициализации ...... 88
Итоги ................................................................................................... 90

3  
Создание микросервисов с использованием Spring Boot ....... 91
3.1. Точка зрения архитектора: проектирование  
микросервисной архитектуры ......................................................... 92
3.1.1. Декомпозиция бизнес-задачи ............................................ 92

Содержание
8
3.1.2. Детализация служб ............................................................. 95
3.1.3. Определение интерфейсов служб .......................................... 98
3.2. Когда не следует использовать микросервисы ...................... 99
3.2.1. Сложность распределенных систем ..................................... 99
3.2.2. Беспорядочный рост виртуальных серверов  
или контейнеров ............................................................................. 99
3.2.3. Тип приложения................................................................. 100
3.2.4. Транзакции и согласованность данных .............................. 100
3.3. Точка зрения разработчика: создание микросервиса  
с использованием Spring Boot и Java ............................................. 100
3.3.1. Встраивание дверного проема в микросервис:  
контроллер Spring Boot ................................................................. 101
3.3.2. Добавление интернационализации в службу лицензий ..... 112
3.3.3. Реализация Spring HATEOAS для отображения  
связанных ссылок .......................................................................... 115
3.4. Точка зрения инженера DevOps: сборка выполняемых  
артефактов ........................................................................................ 118
3.4.1. Сборка службы: упаковка и развертывание микросервисов .....120
3.4.2. Инициализация службы: управление  
конфигурацией микросервисов ...................................................... 122
3.4.3. Регистрация и обнаружение службы:  
взаимодействие клиентов с микросервисами ............................... 123
3.4.4. Мониторинг состояния микросервиса ............................... 124
3.5. Объединение точек зрения ..................................................... 127
Итоги ................................................................................................. 128

4  
Добро пожаловать в Docker ...................................................... 129
4.1. Контейнеры или виртуальные машины? .............................. 130
4.2. Что такое Docker? ..................................................................... 132
4.3. Файлы Dockerfile ....................................................................... 135
4.4. Docker Compose......................................................................... 136
4.5. Интеграция Docker с микросервисами ................................. 138
4.5.1. Создание образа Docker  ...................................................... 138
4.5.2. Создание образов Docker со Spring Boot ............................... 144
4.5.3. Запуск служб с помощью Docker Compose ............................ 147
Итоги ................................................................................................. 148

5  
 Управление конфигурациями с использованием  
Spring Cloud Configuration Server .............................................. 150
5.1. Об управлении конфигурациями (и сложностью) .............. 151
5.1.1. Архитектура управления конфигурацией ......................... 152

Содержание
9
5.1.2. Варианты реализации....................................................... 154
5.2. Настройка Spring Cloud Configuration Server ...................... 156
5.2.1. Настройка класса инициализации Spring Cloud Config ... 161
5.2.2. Использование Spring Cloud Config Server  
с файловой системой .................................................................... 161
5.2.3. Создание конфигурационных файлов для службы ............. 163
5.3. Интеграция Spring Cloud Config с клиентом Spring Boot ..... 168
5.3.1. Настройка зависимостей Spring Cloud Config Service  
в службе лицензий ......................................................................... 170
5.3.2. Настройка службы лицензий для взаимодействий  
с Spring Cloud Config ..................................................................... 170
5.3.3. Подключение к источнику данных с использованием  
Spring Cloud Config Server ............................................................. 175
5.3.4. Чтение настроек с использованием  
@ConfigurationProperties ............................................................... 179
5.3.5. Обновление настроек с использованием  
Spring Cloud Config Server ............................................................. 180
5.3.6. Использование Spring Cloud Configuration Server с Git ....... 182
5.3.7. Интеграция Vault со службой Spring Cloud Config ............. 183
5.3.8. Пользовательский интерфейс Vault ................................... 184
5.4. Защита конфиденциальных настроек в конфигурации ..... 187
5.4.1. Настройка симметричного шифрования .......................... 187
5.4.2. Шифрование и дешифрование настроек ............................ 188
5.5. Заключительные мысли ........................................................... 190
Итоги ................................................................................................. 190

6  
Обнаружение служб ..................................................................... 191
6.1. Где моя служба? .......................................................................... 193
6.2. Обнаружение служб в облаке .................................................. 195
6.2.1. Архитектура механизма обнаружения служб ................... 196
6.2.2. Обнаружение служб с использованием Spring  
и Netflix Eureka ....................................................................................200
6.3. Создание службы Spring Eureka .............................................. 202
6.4. Регистрация служб в Spring Eureka ........................................ 207
6.4.1. REST API Eureka ................................................................ 211
6.4.2. Панель управления Eureka ................................................. 212
6.5. Использование механизма обнаружения служб .................. 214
6.5.1. Поиск экземпляров служб с Spring Discovery Client ............. 216
6.5.2. Вызов служб с использованием шаблона Spring REST 
с поддержкой Load Balancer ......................................................... 218
6.5.3. Вызов служб с использованием Netflix Feign ........................ 220
Итоги ................................................................................................. 222

Содержание
10
Когда случаются неприятности: шаблоны устойчивости 
с использованием Spring Cloud и Resilience4j ........................ 223
7.1. Шаблоны устойчивости на стороне клиента ....................... 225
7.1.1. Балансировка нагрузки на стороне клиента ..................... 226
7.1.2. Размыкатель цепи ............................................................. 226
7.1.3. Резервная реализация ......................................................... 227
7.1.4. Герметичные отсеки .......................................................... 227
7.2. Почему устойчивость клиента важна .................................... 228
7.3. Реализация с Resilience4j ......................................................... 232
7.4. Подготовка службы лицензий к использованию  
Spring Cloud и Resilience4j .............................................................. 233
7.5. Реализация размыкателя цепи ................................................ 234
7.5.1. Добавление размыкателя цепи для обработки  
вызовов службы организаций ....................................................... 240
7.5.2. Настройка размыкателя цепи .......................................... 240
7.6. Использование резервной реализации ................................. 241
7.7. Реализация шаблона герметичных отсеков ......................... 244
7.8. Реализация шаблона повторных попыток ............................ 248
7.9. Реализация шаблона ограничителя частоты........................ 249
7.10. ThreadLocal и Resilience4j ..................................................... 252
Итоги ................................................................................................. 257

8 
 Маршрутизация служб с использованием  
Spring Cloud Gateway .................................................................... 259
8.1. Что такое сервисный шлюз? ................................................... 260
8.2. Введение в Spring Cloud Gateway ............................................ 263
8.2.1. Настройка проекта шлюза Spring Boot ............................. 264
8.2.2. Настройка Spring Cloud Gateway для взаимодействий  
с Eureka ......................................................................................... 266
8.3. Настройка маршрутов в Spring Cloud Gateway ..................... 268
8.3.1. Автоматическое отображение маршрутов с помощью 
механизма обнаружения служб .................................................... 268
8.3.2. Отображение маршрутов вручную с помощью  
механизма обнаружения служб .................................................... 270
8.3.3. Динамическая загрузка настроек маршрутизации .......... 273
8.4. Настоящая мощь Spring Cloud Gateway:  
фабрики предикатов и фильтров .................................................. 274
8.4.1. Встроенные фабрики предикатов ...................................... 275
8.4.2. Встроенные фабрики фильтров ......................................... 276
8.4.3. Добавление своих фильтров ............................................... 278

Содержание
11
8.5. Создание предварительного фильтра ................................... 281
8.6. Использование идентификатора корреляции в службах ... 284
8.6.1. UserContextFilter: перехват входящих HTTP-запросов ....... 286
8.6.2. UserContext: обеспечение доступности  
HTTP-заголовков в службах .......................................................... 287
8.6.3. RestTemplate и UserContextInterceptor: обеспечение передачи 
идентификатора корреляции нижестоящим службам ............... 289
8.7. Создание заключительного фильтра, добавляющего  
идентификатор корреляции .......................................................... 290
Итоги ................................................................................................. 293

9 
Безопасность микросервисов ..................................................... 294
9.1. Что такое OAuth2? .................................................................... 295
9.2. Введение в Keycloak .................................................................. 297
9.3. Начнем с малого: использование Spring и Keycloak  
для защиты единственной конечной точки ................................ 299
9.3.1. Добавление Keycloak в Docker .............................................. 299
9.3.2. Настройка Keycloak ........................................................... 300
9.3.3. Регистрация клиентского приложения ............................. 303
9.3.4. Настройка пользователей O-stock ...................................... 308
9.3.5. Аутентификация пользователей приложения O-stock ...... 310
9.4. Защита службы организаций с использованием Keycloak .... 314
9.4.1. Добавление в службы JAR-файлов Spring Security  
и Keycloak ...................................................................................... 314
9.4.2. Настройка связи службы с сервером Keycloak ..................... 315
9.4.3. Определение пользователей, кому разрешено  
обращаться к службе .................................................................... 315
9.4.4. Передача токена доступа .................................................. 320
9.4.5. Анализ нестандартного поля в JWT .................................. 326
9.5. Некоторые заключительные рассуждения  
о безопасности микросервисов ..................................................... 328
9.5.1. Используйте HTTPS/Secure Sockets Layer (SSL) 
для взаимодействий между службами .......................................... 329
9.5.2. Используйте шлюз для организации доступа  
к микросервисам ........................................................................... 329
9.5.3. Разделите свои службы на общедоступные и закрытые .... 330
9.5.4. Ограничьте поверхность атаки на ваши микросервисы, 
заблокировав ненужные сетевые порты ....................................... 330
Итоги ................................................................................................. 331

Содержание
12
Событийно-ориентированная архитектура  
и Spring Cloud Stream.................................................................... 332
10.1. Обмен сообщениями, событийно-ориентированная  
архитектура и микросервисы ........................................................ 333
10.1.1. Передача событий об изменении состояния 
с использованием синхронного подхода запрос/ответ ................. 334
10.1.2. Передача событий об изменении состояния 
с использованием сообщений ......................................................... 337
10.1.3. Недостатки архитектуры на основе сообщений ............. 339
10.2. Введение в Spring Cloud Stream ............................................ 340
10.3. Простые издатель и получатель сообщений ...................... 342
10.3.1. Настройка Apache Kafka и Redis в Docker ...................... 343
10.3.2. Публикация сообщений в службе организаций ............... 344
10.3.3. Получение сообщений в службе лицензий ........................ 351
10.3.4. Тестирование передачи сообщений между службами ....... 355
10.4. Пример использования Spring Cloud Stream:  
распределенное кеширование ....................................................... 356
10.4.1. Использование Redis в роли кеша ..................................... 357
10.4.2. Определение собственных каналов ................................... 363
Итоги ................................................................................................. 366

11   Распределенная трассировка с использованием  
Spring Cloud Sleuth и Zipkin ........................................................ 367
11.1. Spring Cloud Sleuth и идентификатор корреляции ........... 369
11.1.1. Подключение Spring Cloud Sleuth к службам лицензий 
и организаций .............................................................................. 370
11.1.2. Особенности трассировки в Spring Cloud Sleuth .............. 370
11.2. Агрегирование журналов и Spring Cloud Sleuth ................ 372
11.2.1. Интеграция Spring Cloud Sleuth и стека ELK ................. 374
11.2.2. Настройка Logback в службах ......................................... 376
11.2.3. Определение и запуск приложений ELK в Docker ............. 380
11.2.4. Настройка Kibana ........................................................... 383
11.2.5. Поиск идентификаторов трассировки  
Spring Cloud Sleuth в Kibana ......................................................... 386
11.2.6. Добавление идентификатора корреляции  
в HTTP-ответ с помощью Spring Cloud Gateway .......................... 388
11.3. Распределенная трассировка с использованием Zipkin ....... 390
11.3.1. Настройка зависимостей Spring Cloud Sleuth и Zipkin .....391

Содержание
13
11.3.2. Настройка в службах ссылки на сервер Zipkin ................ 391
11.3.3. Настройка сервера Zipkin ................................................ 392
11.3.4. Настройка уровней трассировки ..................................... 393
11.3.5. Использование Zipkin для трассировки транзакций ...... 394
11.3.6. Визуализация более сложных транзакций ...................... 397
11.3.7. Трассировка операций обмена сообщениями .................... 398
11.3.8. Добавление дополнительных операций ............................ 400
Итоги ................................................................................................. 403

12  Развертывание микросервисов ................................................. 404

12.1. Архитектура конвейера сборки/развертывания .............. 406
12.2. Настройка базовой инфраструктуры  
для O-stock в облаке ......................................................................... 410
12.2.1. Создание базы данных PostgreSQL  
с использованием Amazon RDS ..................................................... 413
12.2.2. Создание кластера Redis в Amazon .................................. 416
12.3. После подготовки инфраструктуры:  
развертывание O-stock и ELK ........................................................ 418
12.3.1. Создание экземпляра EC2 с помощью ELK ...................... 418
12.3.2. Развертывание стека ELK в экземпляре EC2 .................. 422
12.3.3. Создание кластера EKS .................................................... 423
12.4. Конвейер сборки/развертывания в действии .................. 430
12.5. Создание конвейера сборки/развертывания .................... 432
12.5.1. Настройка GitHub ........................................................... 433
12.5.2. Сборка наших служб в Jenkins .......................................... 434
12.5.3. Создание сценария конвейера ........................................... 439
12.5.4. Создание сценариев для конвейера  
развертывания Kubernetes ............................................................ 441
12.6. Заключительные рассуждения о конвейере  
сборки/развертывания .................................................................. 442
Итоги ................................................................................................. 444

Приложение A ............................................................................................ 445

 Модель зрелости Ричардсона ....................................................... 446
 Spring HATEOAS .............................................................................. 448
 Внешняя конфигурация ................................................................. 448
 Непрерывная интеграция и непрерывная доставка ................. 449
 Мониторинг ..................................................................................... 450
 Журналирование ............................................................................. 451
 API-шлюзы ........................................................................................ 451

Содержание
14
Приложение B ........................................................................................... 453

 Тип разрешения: пароль ................................................................ 454
 Тип разрешения: учетные данные клиента ................................ 455
 Тип разрешения: код авторизации............................................... 456
 Тип разрешения: неявный ............................................................. 459
 Как обновляются токены ............................................................... 461

Приложение C ........................................................................................... 463

C.1. Введение в мониторинг с использованием  
Spring Boot Actuator ......................................................................... 464
C.1.1. Добавление зависимостей Spring Boot Actuator .................. 464
C.1.2. Включение конечных точек Spring Boot Actuator ............... 464
C.2. Настройка Micrometer и Prometheus .................................... 465
C.2.1. Введение в Micrometer и Prometheus ..................................... 466
C.2.2. Интеграция с Micrometer и Prometheus .............................. 467
C.3. Настройка Grafana ................................................................... 469
C.4. Итоги обсуждения .................................................................... 474

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

Содержание
15
Предисловие 
от издательства

Отзывы и пожелания

Мы всегда рады отзывам наших читателей. Расскажите нам, что вы 
думаете об этой книге, – что понравилось или, может быть, не понравилось. 
Отзывы важны для нас, чтобы выпускать книги, которые 
будут для вас максимально полезны.
Вы можете написать отзыв на нашем сайте www.dmkpress.com, зайдя 
на страницу книги и оставив комментарий в разделе «Отзывы и рецензии». 
Также можно послать письмо главному редактору по адресу 
dmkpress@gmail.com; при этом укажите название книги в теме письма.
Если вы являетесь экспертом в какой-либо области и заинтересованы 
в написании новой книги, заполните форму на нашем сайте 
по адресу http://dmkpress.com/authors/publish_book/ или напишите 
в издательство по адресу dmkpress@gmail.com.

Список опечаток

Хотя мы приняли все возможные меры для того, чтобы обеспечить 
высокое качество наших текстов, ошибки все равно случаются. 
Если вы найдете ошибку в одной из наших книг – возможно, ошибку 
в основном тексте или программном коде, – мы будем очень 
благодарны, если вы сообщите нам о ней. Сделав это, вы избавите 
других читателей от недопонимания и поможете нам улучшить последующие 
издания этой книги.
Если вы найдете какие-либо ошибки в коде, пожалуйста, сообщите 
о них главному редактору по адресу dmkpress@gmail.com, и мы 
исправим это в следующих тиражах.

Нарушение авторских прав

Пиратство в интернете по-прежнему остается насущной проблемой. 
Издательство «ДМК Пресс» очень серьезно относится к вопросам 
защиты авторских прав и лицензирования. Если вы столкнетесь 
в интернете с незаконной публикацией какой-либо из наших 
книг, пожалуйста, пришлите нам ссылку на интернет-ресурс, 
чтобы мы могли применить санкции.
Ссылку на подозрительные материалы можно прислать по адресу 
dmkpress@gmail.com.
Мы высоко ценим любую помощь по защите наших авторов, благодаря 
которой мы можем предоставлять вам качественные материалы.
Предисловие

Эта книга – часть моей мечты внести свой вклад в развитие той области, 
которой я больше всего увлекаюсь, – информатики и, в частности, 
разработки программного обеспечения. Эти дисциплины 
демонстрируют свою исключительную важность во взаимосвязанном 
и глобальном настоящем. Мы ежедневно наблюдаем невероятные 
преобразования, которые они вызывают во всех сферах человеческой 
деятельности. Но зачем писать об архитектуре микро-
сервисов, если есть много других достойных тем?
Слово «микросервисы» имеет множество толкований. В этой 
книге я подразумеваю под микросервисами распределенные, слабо 
связанные программные службы, которые выполняют ограниченное 
количество четко определенных задач. Микросервисы 
стали появляться как альтернатива монолитным приложениям, 
помогающая бороться с традиционными проблемами сложности 
в большой кодовой базе, разбивая ее на мелкие, четко ограниченные 
части.
В течение своей 13-летней карьеры я занималась разработкой 
программного обеспечения на разных языках и в разных программных 
архитектурах. Архитектуры, с которых я начинала, 
в настоящее время практически устарели. Современный мир заставляет 
нас постоянно двигаться вперед, и инновации в области 
разработки программного обеспечения развиваются ускоренными 
темпами. По этой причине, находясь в состоянии постоянного 
поиска новейших знаний и практик, несколько лет тому назад я решила 
окунуться в мир микросервисов. С тех пор я использовала 
эту архитектуру чаще других из-за ее преимуществ (таких как мас-
штабируемость, скорость и удобство сопровождения). Успешный 
опыт работы в области микросервисов побудил меня взять на себя 
задачу написать эту книгу, чтобы систематизировать свои знания 
и поделиться ими с вами.
Как разработчик программного обеспечения, я понимаю, насколько 
важно постоянно приобретать и применять новые знания. 
Прежде чем взяться за эту книгу, я решила поделиться своими 
выводами и начала публиковать статьи о микросервисах в блоге 
коста-риканской компании (на моей родине), занимающейся разработкой 
программного обеспечения. Когда я писала эти статьи, 
я поняла, что нашла новую страсть и цель в своей профессиональной 
карьере. Через несколько месяцев после публикации одной 
из моих статей я получила электронное письмо от издательства 
Manning Publications с предложением написать второе издание 
этой, которым и делюсь с вами сегодня.
Первое издание этой книги было написано Джоном Карнеллом 
(John Carnell), непревзойденным профессионалом с многолетним 
опытом разработки программного обеспечения. Я написала это 
второе издание на основе той книги, добавив мои собственные 
видение и понимание. Второе издание «Микросервисов Spring» покажет 
вам, как реализовать разнообразные шаблоны проектирования, 
чтобы получить успешную архитектуру микросервисов с помощью 
Spring – фреймворка, предлагающего готовые решения 
для многих распространенных задач разработки, с которыми вы 
неизбежно столкнетесь как разработчик микросервисов. А теперь 
давайте начнем захватывающее путешествие в мир микросервисов 
со Spring.

Предисловие
18
Благодарности

Я глубоко благодарна за возможность поработать над этой книгой, 
которая позволила мне поделиться с вами моими знаниями и одновременно 
поучиться самой. Я благодарна издательству Manning 
Publications за доверие и за то, что позволили мне поделиться своим 
опытом со многими людьми. Особое спасибо Майклу Стивенсу 
(Michael Stephens) за то, что дал мне эту фантастическую возможность; 
Джону Карнеллу (John Carnell) за его поддержку, опыт и знания; 
Роберту Веннеру (Robert Wenner), моему научному редактору, 
за его ценный вклад; и Лесли Трайтс (Lesley Trites), моему редактору, 
за то, что она помогала и поддерживала меня на протяжении 
всего процесса.
Я хочу сказать спасибо Стефану Пирнбауму (Stephan Pirnbaum) 
и Джону Гатри (John Guthrie), моим техническим рецензентам, 
которые проверяли мои рукописи и помогли поднять качество 
этой книги. Спасибо также моему редактору проекта Дейрдре 
Хиам (Deirdre Hiam); литературному редактору Френсису Бурану 
(Frances Buran); корректору Кэти Теннант (Katie Tennant); рецензирующему 
редактору Алексу Драгосавлевичу (Aleks Dragosavljevic) 
и всем-всем  рецензентам (это: Адитья Кумар (Aditya Kumar), Аль 
Пезевски (Al Pezewski), Алекс Лукас (Alex Lucas), Арпит Хандел-
вал (Arpit Khandelwal), Бонни Малек (Bonnie Malec), Кристофер 
Карделл (Christopher Kardell), Дэвид Морган (David Morgan), Гил-
берто Таккари (Gilberto Taccari), Харинат Кунтамуккала (Harinath 
Kuntamukkala), Айан Кэмпбелл (Iain Campbell), Капил Дев С. 
(Kapil Dev S), Константин Еремин (Konstantin Eremin), Кшиштоф 
Камичек (Krzysztof Kamyczek), Марко Умек (Marko Umek), Мэтью 
Грин (Matthew Greene), Филипп Виалатт (Philippe Vialatte), Пьер-
Мишель Ансель (Pierre-Michel Ansel), Рональд Борман (Ronald 
Borman), Сатей Кумар Саху (Satej Kumar Sahu), Стефан Пирнбаум 
(Stephan Pirnbaum), Тан Ви (Tan Wee), Тодд Кук (Todd Cook) и Виктор 
Дуран (Víctor Durán)) – ваши предложения помогли улучшить 
эту книгу.
Хочу также поблагодарить моих маму, папу и всю мою семью, 
которые поддерживали и вдохновляли меня и которые, показывая 
пример преданности своей работе, помогли мне стать настоящим 
профессионалом. Я благодарна Илаю (Eli), который всегда был рядом 
со мной в те долгие дни работы, и моим друзьям, постоянно 
поддерживавшим меня на протяжении всего этого процесса.
И последнее, но не в последнюю очередь: я благодарю каждого 
из вас за приобретение этой книги и за то, что позволили мне поделиться 
с вами своими знаниями. Надеюсь, вам понравится читать 
так же, как мне понравилось писать. Я надеюсь, что эта книга 
станет ценным вкладом в вашу профессиональную карьеру.

Благодарности
20
Доступ онлайн
1 699 ₽
В корзину