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

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

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

Author(s): Джон Карнелл, Иллари Уайлупо Санчес
Edition: 1
Publisher: ДМК Пресс
Year: 2022

Language: Russian
Commentary: Vector PDF
Pages: 490
City: М.
Tags: Cloud Computing; Security; Java; Microservices; Docker; Deployment; Software Architecture; Spring Framework; Resilience; Spring Cloud

Предисловие от издательства
Предисловие
Обзор мира микросервисов через призму Spring Cloud
1.1. Эволюция архитектуры микросервисов
1.1.1. N-уровневая архитектура
1.1.2. Что такое монолитная архитектура?
1.1.3. Что такое микросервис?
1.1.4. Зачем менять способ создания приложений?
1.2. Микросервисы со Spring
1.3. Что мы будем создавать?
1.4. О чем эта книга?
1.4.1. Что вы узнаете в этой книге
1.4.2. Почему эта книга актуальна для вас?
1.5. Облачные приложения и приложения на основе микросервисов
1.5.1. Создание микросервиса с помощью Spring Boot
1.5.2. Что такое облачные вычисления?
1.5.3. В чем преимущества облачных вычислений и микросервисов?
1.6. Микросервисы – это больше чем код
1.7. Базовый шаблон разработки микросервисов
1.8. Шаблоны маршрутизации
1.9. Устойчивость клиентов
1.10. Шаблоны безопасности
1.11. Шаблоны журналирования и трассировки
1.12. Шаблон сбора метрик приложения
1.13. Шаблоны сборки/развертывания микросервисов
Итоги
Создание микросервисов с использованием Spring Boot
2.1. Что такое Spring Cloud?
2.1.1. Spring Cloud Config
2.1.2. Spring Cloud Service Discovery
2.1.3. Spring Cloud LoadBalancer и Resilience4j
2.1.4. Spring Cloud API Gateway
2.1.5. Spring Cloud Stream
2.1.6. Spring Cloud Sleuth
2.1.7. Spring Cloud Security
2.2. Пример использования Spring Cloud
2.3. Приемы создания облачных микросервисов
2.3.1. База кода
2.3.2. Зависимости
2.3.3. Конфигурация
2.3.4. Вспомогательные службы
2.3.5. Сборка, выпуск, выполнение
2.3.6. Процессы
2.3.7. Привязка портов
2.3.8. Масштабируемость
2.3.9. Одноразовость
2.3.10. Сходство окружений разработки/эксплуатации
2.3.11. Журналирование
2.3.12. Задачи администрирования
2.4. Актуальность наших примеров
2.5. Создание микросервиса с использованием Spring Boot и Java
2.5.1. Подготовка окружения
2.5.2. Начало создания проекта
2.5.3. Запуск приложения Spring Boot: класс инициализации
Итоги
Добро пожаловать в Docker
3.1. Точка зрения архитектора: проектирование микросервисной архитектуры
3.1.1. Декомпозиция бизнес-задачи
3.1.2. Детализация служб
3.1.3. Определение интерфейсов служб
3.2. Когда не следует использовать микросервисы
3.2.1. Сложность распределенных систем
3.2.2. Беспорядочный рост виртуальных серверов или контейнеров
3.2.3. Тип приложения
3.2.4. Транзакции и согласованность данных
3.3. Точка зрения разработчика: создание микросервиса с использованием Spring Boot и Java
3.3.1. Встраивание дверного проема в микросервис: контроллер Spring Boot
3.3.2. Добавление интернационализации в службу лицензий
3.3.3. Реализация Spring HATEOAS для отображения связанных ссылок
3.4. Точка зрения инженера DevOps: сборка выполняемых артефактов
3.4.1. Сборка службы: упаковка и развертывание микросервисов
3.4.2. Инициализация службы: управление конфигурацией микросервисов
3.4.3. Регистрация и обнаружение службы: взаимодействие клиентов с микросервисами
3.4.4. Мониторинг состояния микросервиса
3.5. Объединение точек зрения
Итоги
4.1. Контейнеры или виртуальные машины?
4.2. Что такое Docker?
4.3. Файлы Dockerfile
4.4. Docker Compose
4.5. Интеграция Docker с микросервисами
4.5.1. Создание образа Docker
4.5.2. Создание образов Docker со Spring Boot
4.5.3. Запуск служб с помощью Docker Compose
Итоги
Обнаружение служб
Управление конфигурациями с использованием Spring Cloud Configuration Server
5.1. Об управлении конфигурациями (и сложностью)
5.1.1. Архитектура управления конфигурацией
5.1.2. Варианты реализации
5.2. Настройка Spring Cloud Configuration Server
5.2.1. Настройка класса инициализации Spring Cloud Config
5.2.2. Использование Spring Cloud Config Server с файловой системой
5.2.3. Создание конфигурационных файлов для службы
5.3. Интеграция Spring Cloud Config с клиентом Spring Boot
5.3.1. Настройка зависимостей Spring Cloud Config Service в службе лицензий
5.3.2. Настройка службы лицензий для взаимодействий с Spring Cloud Config
5.3.3. Подключение к источнику данных с использованием Spring Cloud Config Server
5.3.4. Чтение настроек с использованием @ConfigurationProperties
5.3.5. Обновление настроек с использованием Spring Cloud Config Server
5.3.6. Использование Spring Cloud Configuration Server с Git
5.3.7. Интеграция Vault со службой Spring Cloud Config
5.3.8. Пользовательский интерфейс Vault
5.4. Защита конфиденциальных настроек в конфигурации
5.4.1. Настройка симметричного шифрования
5.4.2. Шифрование и дешифрование настроек
5.5. Заключительные мысли
Итоги
Когда случаются неприятности: шаблоны устойчивости с использованием Spring Cloud и Resilience4j
6.1. Где моя служба?
6.2. Обнаружение служб в облаке
6.2.1. Архитектура механизма обнаружения служб
6.2.2. Обнаружение служб с использованием Spring и Netflix Eureka
6.3. Создание службы Spring Eureka
6.4. Регистрация служб в Spring Eureka
6.4.1. REST API Eureka
6.4.2. Панель управления Eureka
6.5. Использование механизма обнаружения служб
6.5.1. Поиск экземпляров служб с Spring Discovery Client
6.5.2. Вызов служб с использованием шаблона Spring REST с поддержкой Load Balancer
6.5.3. Вызов служб с использованием Netflix Feign
Итоги
8. Маршрутизация служб с использованием Spring Cloud Gateway
7.1. Шаблоны устойчивости на стороне клиента
7.1.1. Балансировка нагрузки на стороне клиента
7.1.2. Размыкатель цепи
7.1.3. `Резервная реализация
7.1.4. `Герметичные отсеки
7.2. Почему устойчивость клиента важна
7.3. Реализация с Resilience4j
7.4. Подготовка службы лицензий к использованию Spring Cloud и Resilience4j
7.5. Реализация размыкателя цепи
7.5.1.  Добавление размыкателя цепи для обработки вызовов службы организаций
7.5.2. Настройка размыкателя цепи
7.6. Использование резервной реализации
7.7. Реализация шаблона герметичных отсеков
7.8. Реализация шаблона повторных попыток
7.9. Реализация шаблона ограничителя частоты
7.10. ThreadLocal и Resilience4j
Итоги
8.1. Что такое сервисный шлюз?
8.2. Введение в Spring Cloud Gateway
8.2.1. Настройка проекта шлюза Spring Boot
8.2.2. Настройка Spring Cloud Gateway для взаимодействий с Eureka
8.3. Настройка маршрутов в Spring Cloud Gateway
8.3.1. Автоматическое отображение маршрутов с помощью механизма обнаружения служб
8.3.2. Отображение маршрутов вручную с помощью механизма обнаружения служб
8.3.3. Динамическая загрузка настроек маршрутизации
8.4. Настоящая мощь Spring Cloud Gateway: фабрики предикатов и фильтров
8.4.1. Встроенные фабрики предикатов
8.4.2. Встроенные фабрики фильтров
8.4.3. Добавление своих фильтров
8.5. Создание предварительного фильтра
8.6. Использование идентификатора корреляции в службах
8.6.1. UserContextFilter: перехват входящих HTTP-запросов
8.6.2. UserContext: обеспечение доступности HTTP-заголовков в службах
8.6.3. RestTemplate и UserContextInterceptor: обеспечение передачи идентификатора корреляции нижестоящим службам
8.7. Создание заключительного фильтра, добавляющего идентификатор корреляции
Итоги
Безопасность микросервисов
9.1. Что такое OAuth2?
9.2. Введение в Keycloak
9.3. Начнем с малого: использование Spring и Keycloak для защиты единственной конечной точки
9.3.1. Добавление Keycloak в Docker
9.3.2. Настройка Keycloak
9.3.3. Регистрация клиентского приложения
9.3.4. Настройка пользователей O-stock
9.3.5. Аутентификация пользователей приложения O-stock
9.4. Защита службы организаций с использованием Keycloak
9.4.1. Добавление в службы JAR-файлов Spring Security и Keycloak
9.4.2. Настройка связи службы с сервером Keycloak
9.4.3. Определение пользователей, кому разрешено обращаться к службе
9.4.4. Передача токена доступа
9.4.5. Анализ нестандартного поля в JWT
9.5. Некоторые заключительные рассуждения о безопасности микросервисов
9.5.1. Используйте HTTPS/Secure Sockets Layer (SSL) для взаимодействий между службами
9.5.2. Используйте шлюз для организации доступа к микросервисам
9.5.3. Разделите свои службы на общедоступные и закрытые
9.5.4. Ограничьте поверхность атаки на ваши микросервисы, заблокировав ненужные сетевые порты
Итоги
Распределенная трассировка с использованием Spring Cloud Sleuth и Zipkin
Событийно-ориентированная архитектура и Spring Cloud Stream
10.1. Обмен сообщениями, событийно-ориентированная архитектура и микросервисы
10.1.1. Передача событий об изменении состояния с использованием синхронного подхода запрос/ответ
10.1.2. Передача событий об изменении состояния с использованием сообщений
10.1.3. Недостатки архитектуры на основе сообщений
10.2. Введение в Spring Cloud Stream
10.3. Простые издатель и получатель сообщений
10.3.1. Настройка Apache Kafka и Redis в Docker
10.3.2. Публикация сообщений в службе организаций
10.3.3. Получение сообщений в службе лицензий
10.3.4. Тестирование передачи сообщений между службами
10.4. Пример использования Spring Cloud Stream: распределенное кеширование
10.4.1. Использование Redis в роли кеша
10.4.2. Определение собственных каналов
Итоги
11.1. Spring Cloud Sleuth и идентификатор корреляции
11.1.1. Подключение Spring Cloud Sleuth к службам лицензий и организаций
11.1.2. Особенности трассировки в Spring Cloud Sleuth
11.2. Агрегирование журналов и Spring Cloud Sleuth
11.2.1. Интеграция Spring Cloud Sleuth и стека ELK
11.2.2. Настройка Logback в службах
11.2.3. Определение и запуск приложений ELK в Docker
11.2.4. Настройка Kibana
11.2.5. Поиск идентификаторов трассировки Spring Cloud Sleuth в Kibana
11.2.6. Добавление идентификатора корреляции в HTTP-ответ с помощью Spring Cloud Gateway
11.3. Распределенная трассировка с использованием Zipkin
11.3.1. Настройка зависимостей Spring Cloud Sleuth и Zipkin
11.3.2. Настройка в службах ссылки на сервер Zipkin
11.3.3. Настройка сервера Zipkin
11.3.4. Настройка уровней трассировки
11.3.5. Использование Zipkin для трассировки транзакций
11.3.6. Визуализация более сложных транзакций
11.3.7. Трассировка операций обмена сообщениями
11.3.8. Добавление дополнительных операций
Итоги
Приложение C
C.1. Введение в мониторинг с использованием Spring Boot Actuator
C.1.1. Добавление зависимостей Spring Boot Actuator
C.1.2. Включение конечных точек Spring Boot Actuator
C.2. Настройка Micrometer и Prometheus
C.2.1. Введение в Micrometer и Prometheus
C.2.2. Интеграция с Micrometer и Prometheus
C.3. Настройка Grafana
C.4. Итоги обсуждения
Приложение B
Тип разрешения: пароль
Тип разрешения: учетные данные клиента
Тип разрешения: код авторизации
Тип разрешения: неявный
Как обновляются токены
Приложение A
Модель зрелости Ричардсона
Spring HATEOAS
Внешняя конфигурация
Непрерывная интеграция и непрерывная доставка
Мониторинг
Журналирование
API-шлюзы
Развертывание микросервисов
12.1. Архитектура конвейера сборки/развертывания
12.2. Настройка базовой инфраструктуры для O-stock в облаке
12.2.1. Создание базы данных PostgreSQL с использованием Amazon RDS
12.2.2. Создание кластера Redis в Amazon
12.3. После подготовки инфраструктуры: развертывание O-stock и ELK
12.3.1. Создание экземпляра EC2 с помощью ELK
12.3.2. Развертывание стека ELK в экземпляре EC2
12.3.3. Создание кластера EKS
12.4. Конвейер сборки/развертывания в действии
12.5. Создание конвейера сборки/развертывания
12.5.1. Настройка GitHub
12.5.2. Сборка наших служб в Jenkins
12.5.3. Создание сценария конвейера
12.5.4. Создание сценариев для конвейера развертывания Kubernetes
12.6. Заключительные рассуждения о конвейере сборки/развертывания
Итоги
Добро пожаловать в Spring Cloud
Обзор мира микросервисов через призму Spring Cloud
Создание микросервисов с использованием Spring Boot
Добро пожаловать в Docker
Обнаружение служб
Управление конфигурациями с использованием Spring Cloud Configuration Server
Когда случаются неприятности: шаблоны устойчивости с использованием Spring Cloud и Resilience4j
Маршрутизация служб с использованием Spring Cloud Gateway
Безопасность микросервисов
Распределенная трассировка с использованием Spring Cloud Sleuth и Zipkin
Событийно-ориентированная архитектура и Spring Cloud Stream
Развертывание микросервисов
Благодарности
Об этой книге
Добро пожаловать в Spring Cloud