О чём курс
Микросервисная архитектура (МСА) сравнительно недавно завоевала славу самого популярного архитектурного подхода. Ее использование обеспечивает множество преимуществ на различных этапах жизненного цикла продукта. В частности, МСА позволяет получить меньшее время реакции на требования бизнеса, что зачастую обеспечивает ее превосходство над прочими архитектурными стилями.
Однако, в процессе разработки МСА систем архитектор сталкивается со множеством вызовов, многие из которых заставляют новичков откатываться назад:
-
Ошибки декомпозиции могу привести к серьёзному увеличению сложности разработки.
- Производительность страдает из-за непреодолимых сетевых задержек.
- Распределенное хранение данных не позволяет использовать транзакционную согласованность.
- Большое количество взаимодействующих по сети компонентов снижает надежность.
- Сложно обеспечивать безопасность.
- Кроме того, отдельного разговора требует тестирование и обслуживание распределенной системы.
На данном курсе вы: ul>
Познакомитесь с основными концепциями микросервисной архитектуры (МСА). Рассмотрите понятие микросервисной архитектуры, а также её связь с «традиционными» методиками построения системы. Получите шаблоны микросервисной архитектуры, направленные на обеспечение качества разрабатываемой системы. Подробно рассмотрите вопросы развертывания и методы обеспечения значимых качеств МСА. Узнаете преимущества и недостатки использования МСА. Курс поможет вам принимать обоснованное решение о применимости МСА в зависимости от потребностей бизнеса и возможностей команды.
В курсе рассматриваются основные проблемы, связанные с реализацией микросервисной архитектуры. Стратегии, механизмы, паттерны, решающие озвученные выше задачи. По каждой рассматриваемой проблеме будут представлены наиболее распространённые инструменты (такие, как Kubernetes, Istio, Histryx, Kibana, и многие другие).
Практические упражнения позволят вам приобрести навык самостоятельного проектирования МСА систем.
Цели
- Дать представление о МСА и о её связи с остальными архитектурами системы;
- Дать представление о проектировании МСА систем;
- Выработать практический навык проектирования МСА систем;
- Познакомить слушателей с наиболее распространёнными шаблонами МСА;
Целевая аудитория
- Архитекторы;
- DevOps специалисты;
- Ведущие разработчики;
- Руководители разработки.
Предварительная подготовка
Для кого
Разработчик
Архитектор ПО
DevOps-инженер
Улучшаемые навыки
Монолит, SOA, MSA, Паттерны декомпозиции, Событийный штурм, Синхронное и асинхронное взаимодействие сервисов, CQRS, EDA, REST, RESTful API, gRPC, Apache Thrift, GraphQL, MQTT, AMQP, RabbitMQ, Apache Kafka, Apache Avro, AsyncAPI, API Шлюз, Kong, Event Sourcing, Apache Pulsar, MDM, JWT, шаблоны MSA, DevOps,Docker, Kubernetes, Стратегии развертывания, Istio, Паттерны миграции
Темы курса
01
Архитектурные стили (2 ч.)
- Понятия монолита, SOA, MSA.
- Сравнение и обоснование выбора.
02
Паттерны декомпозиции MSA (2 ч.)
- Оптимальный размер микросервиса;
- Разбиение на сервисы по бизнес-возможностям;
- Разбиение на сервисы по проблемным областям;
- Практики определения предметных областей;
- Декомпозиция по техническим и организационным аспектам.
03
Организация разработки под MSA (1 ч.)
- Организация команд под MSA;
- Организация репозитория кода под MSA.
04
Интеграция микросервисов (3 ч.)
- Паттерны взаимодействия;
- Синхронные и асинхронные механизмы взаимодействия;
- Оркестровка и хореография;
- Основные протоколы и технологии (REST, gRPC, GraphQL, Kafka, RabbitMQ и др.);
- Взаимодействие с внешними системами (API Gateway, BFF);
- Реактивные системы;
- Архитектуры управляемые событиями;
- Разделение команды и запроса.
05
Организация работы с данными в MSA (3 ч.)
- Паттерны работы с данными;
- Порождение событий;
- Справочные данные в MSA;
- Единый источник истины (Source of Truth) в MSA.
06
Основные шаблоны МСА (9 ч.)
- Модифицируемость.
- Решение проблемы высокой связанности. Версионирование интерфейсов и событий. Типы контрактов. Изменения событийной модели. Паттерны организации запросов. Микросервисное шасси (Microservice chassis). Сетки сервисов (Service Mesh).
- Масштабируемость.
- Паттерны построения балансировщиков. Сервисы обнаружения и паттерны работы с ними.
- Производительность.
- Паттерны производительности в MSA (переборка, изящная деградация и пр.).
- Согласованность.
- Проблемы обеспечения согласованности в MSA. CAP теорема. Решения проблем согласованности. Двухфазные коммиты. Паттерн SAGA. Понижение уровня согласованности.
- Надежность.
- Механизмы отказоустойчивости. Паттерны предохранитель (Circuit Breaker), дросселировка, зависимые таймауты и пр.
- Безопасность.
- Механизмы обеспечения безопасности в MSA. Аутентификация. Авторизация. Защита периметра. Защита каналов связи. Основные протоколы и паттерны (OAUTH2, JWT, привратник, ключ камердинера и пр.).
- Тестируемость.
- Пирамида и квадрат тестирования. Особенность тестирования микросервисов.
- Модульное тестирование. Интеграционное тестирование. Компонентное тестирование. Тестирование E2E. Паттерны тестирования MSA.
- Удобство обслуживания.
- Возможность наблюдения (Observability). Паттерны наблюдения (распределенная трассировка, агрегация журналов). Мониторинг и журналирование. Конфигурирование микросервисов. Вынесение конфигурации во вне. Поддержка системы.
07
Развертывание микросервисов (2 ч.)
- Паттерн «Deployment pipeline»;
- Паттерны развертывания;
- Использование технологий Docker и Kubernetes;
- Использование сетки ISTIO;
- Бессерверное развертывание;
- Стратегии развертывания (сине-зеленые, канареечные и т.д.).
08
Стратегии миграции от монолита к MSA (2 ч.)
- Стратегии перехода с монолита на микросервисы;
- Удушение монолита (Strangler monolith);
- Паттерны удушения;
- Связь микросервиса с монолитом;
- Миграция базы данных.
Чему вы научитесь
01
Разрабатывать микросервисы, определяя их границы, функции и взаимодействие с другими сервисами
02
Управлять данными в микросервисной архитектуре, включая использование баз данных, кэширования и стратегий репликации
03
Использовать инструменты оркестрации и управления микросервисами, такие как Kubernetes и Docker
04
Обеспечивать надежности и отказоустойчивости микросервисов, включая использование паттернов
05
Применять инструменты мониторинга и логирования для отслеживания состояния микросервисов
Ведущий курса
Овчаренко Дмитрий
Специалист в области архитектуры ПО