Микросервисная архитектура обеспечивает высокую скорость изменений и хорошую масштабируемость, а также позволяет создавать чистые эволюционирующие системы. Но реализовать свою первую микросервисную архитектуру непросто. Как сделать выбор из множества вариантов и обучить свою команду всем техническим деталям, чтобы максимально увеличить шансы на успех? В этой книге авторы, Ронни Митра и Иракли Надареишвили, предоставили пошаговое руководство для построения эффективной архитектуры микросервисов. Архитекторы и инженеры пройдут путь внедрения, основанный на методах и архитектурах, доказавших свою эффективность для микросервисных систем. Вы создадите операционную модель, проект микросервиса, инфраструктурную основу и два работающих микросервиса, а затем соедините эти компоненты в одну реализацию. Для любого, перед кем стоит задача создания микросервисов, руководство станет бесценным источником знаний.
Author(s): Ронни Митра, Иракли Надареишвили
Series: Бестселлеры O’Reilly
Edition: 1
Publisher: Питер
Year: 2023
Language: Russian
Commentary: Publisher's PDF
Pages: 336
City: СПб.
Tags: DevOps; Amazon Web Services; MySQL; Microservices; Apache Cassandra; Docker; Redis; GitHub; Kubernetes; Software Architecture; Terraform; Infrastructure as Code; Teamwork; Domain-Driven Design; GitOps; CI/CD
Предисловие
Для кого эта книга
Что вам понадобится
Условные обозначения
Использование примеров кода
Благодарности
От издательства
Глава 1. Навстречу архитектуре микросервисов
Что такое микросервисы
Сокращение затрат на координацию
Проблема затрат на координацию
Трудные составляющие
Обучение на практике
Модель микросервисов «От архитектуры до релиза»
Решения, решения...
Создание упрощенной записи архитектурного решения
Резюме
Глава 2. Разработка операционной модели микросервисов
Почему команды и люди важны
Размер команды
Мастерство команды
Взаимодействие между командами
Введение в Team Topologies
Тип команды
Способы взаимодействия
Разработка топологии команды по работе с микросервисами
Создание команды разработки системы
Создание шаблона команды по работе с микросервисами
Команды разработки платформы
Команды поддержки и разработки сложных подсистем
Команды потребителей
Резюме
Глава 3. Разработка микросервисов: процесс SEED(S)
Введение в семь основных изменений в проектирование сервисов: метод SEED(S)
Выявление участников
Примеры участников в нашем образце проекта
Определение заданий, которые должны выполнять участники
Использование формата истории заданий для фиксации JTBD
Примеры JTBD в нашем образце проекта
Обнаружение шаблонов взаимодействия с помощью диаграмм последовательностей
Получение действий и запросов из JTBD
Примеры запросов и действий для нашего образца проекта
Описание каждого запроса и действия в виде спецификации с открытым стандартом
Пример OAS для действия в нашем образце проекта
Получение обратной связи по спецификации API
Внедрение микросервисов
Микросервисы в сравнении с API
Резюме
Глава 4. Приведение микросервисов к правильному размеру: нахождение границ сервисов
Почему границы имеют значение, когда они имеют значение и как их найти
Предметно-ориентированное проектирование и границы микросервиса
Составление карты контекста
Синхронные и асинхронные интеграции
Агрегаты в DDD
Введение в Event Storming
Процесс Event-Storming
Представляем универсальную формулу определения размера
Резюме
Глава 5. Работа с данными
Возможность независимого развертывания и обмена данными
Микросервисы внедряют свои данные
Внедрение данных не должно приводить к резкому увеличению количества кластеров базы данных
Внедрение данных и шаблон делегирования данных
Использование дублирования данных для решения проблемы независимости
Распределенные транзакции и защита от сбоев
Источники событий и CQRS
Источники событий
Повышение производительности с помощью скользящих снимков
Хранилище событий
Разделение ответственности запросов и команд (CQRS)
Источники событий и CQRS за пределами микросервисов
Резюме
Глава 6. Создание конвейера инфраструктуры
Принципы и практики DevOps
Неизменяемая инфраструктура
Инфраструктура как код
Непрерывная интеграция и непрерывное развертывание
Настройка среды IaC
Настройка GitHub
Установка Terraform
Настройка Amazon Web Services
Настройка учетной записи AWS Operations
Настройка AWS CLI
Настройка разрешений AWS
Создание серверной части S3 для Terraform
Создание конвейера IaC
Создание репозитория «песочницы»
Понимание Terraform
Написание кода для среды «песочницы»
Создание конвейера
Тестирование конвейера
Резюме
Глава 7. Создание инфраструктуры микросервисов
Компоненты инфраструктуры
Сеть
Сервис Kubernetes
Сервер развертывания GitOps
Создание инфраструктуры
Установка kubectl
Настройка репозиториев модулей
Модуль сети
Модуль Kubernetes
Настройка Argo CD
Тестирование среды
Очистка инфраструктуры
Резюме
Глава 8. Рабочая область разработчика
Стандарты программирования и настройки разработчика
Десять рекомендаций по рабочей области для улучшения работы разработчика
Локальная настройка контейнерной среды
Установка Multipass
Ввод в контейнере и сопоставление папок
Установка Docker
Расширенное использование локального Docker: установка Cassandra
Установка Kubernetes
Резюме
Глава 9. Разработка микросервисов
Проектирование конечных точек микросервисов
Микросервис управления рейсами
Микросервис управления бронированиями
Проектирование спецификации OpenAPI
Реализация данных для микросервиса
Redis для модели данных бронирования
Модель данных MySQL для микросервиса управления рейсами
Реализация кода для микросервиса
Код, лежащий в основе микросервиса управления рейсами
Проверки работоспособности
Ввод второго микросервиса в проект
Подключение сервисов к зонтичному проекту
Резюме
Глава 10. Выпуск микросервисов
Настройка среды стейджинга
Модуль входа
Модуль базы данных
Разветвление проекта инфраструктуры стейджинга
Настройка потока задач стейджинга
Редактирование кода инфраструктуры стейджинга
Доставка контейнера с информацией о рейсах
Введение в Docker Hub
Выбор конфигурации Docker Hub
Выбор конфигурации конвейера
Развертывание контейнера сервиса рейсов
Понимание развертки Kubernetes
Создание чарта Helm
Создание репозитория развертывания микросервисов
Argo CD для развертывания GitOps
Очистка
Резюме
Глава 11. Управление изменениями
Изменения в системе микросервисов
Ориентироваться на данные
Влияние изменений
Три шаблона развертывания
Обзор нашей архитектуры
Изменения в инфраструктуре
Изменения микросервисов
Изменения данных
Резюме
Глава 12. Конец путешествия (и новое начало)
О сложности и упрощении использования микросервисов
Квадрант микросервисов
Измерение прогресса преобразования микросервисов
Резюме
Об авторах
Иллюстрация на обложке