[microarch.ru] Микросервисная архитектура (Кирилл Ветчинкин)
О курсе
Курс состоит из 5 вебинаров по 75 минут с глубоким погружением в микросервисную архитектуру. Мы рассмотрим способы декомпозиции, изменения в командах, разбор популярных паттернов и антипаттернов, связь с бизнесом, Agile и DevOps. На курсе вы научитесь проектировать микросервисы начиная с понимания бизнес домена и заканчивая особенностями реализации.
Чему вы научитесь
Планировать архитектуру ПО
Четко понимать область применения микросервисной архитектуры, цели подхода и особенности.
Декомпозировать систему
Научитесь проводить моделирование микросервисов вокруг бизнес-концепций, применяя практики предметно-ориентированного проектирования.
Мигрировать с монолита
Строить готовую к применению стратегию перехода от монолита к микросервисной архитектуре.
Строить интеграцию между системами
Узнаете об основных подходах к интеграции систем, разберётесь с интеграционными шаблонами и научитесь их применять.
Совмещать MSA с DevOps, Agile
Сможете применять основные практики DevOps для облегчения тестирования и развертывания микросервисов.
Формировать команды разработки
Узнаете как реорганизовать команды в соотвествии с микросервисной архитектурой, выстроить процесс разработки.
Базовые понятия
- Сравнение различных архитектур
- Отличие SOA от MSA
- Какого размера должен быть микросервис
- Плюсы и минусы микросервисной архитектуры
- Цели успешного внедрения подхода
Декомпозиция на микросервисы
- Понятие Bounded Context
- Практика EventStorming
- Тактика декомпозиции системы на микросервисы
- Сигналы неправильного разбиения
- Anti-pattern 'распределенный монолит'
Практика
- Декомпозиция системы с помощью практики EventStorming
Команды и организационная трансформация
- Организация команд
- Сколько микросервисов должно быть у команды
- Структура команды и необходимые навыки
- Роль архитектора в MSA
- Роль платформенных команд
- Организация Community
Раскрытие API
- API Gateway pattern
- BFF pattern
- API composition pattern
Аутентификация, безопасность
- Access token pattern
- Стандарт OAuth2.0 и JWT
- Единая точка аутентификации(SSO)
- Популярные сервера аутентификации OAuth 2.0
- Аутентификация между микросервисами
Практика
- Формирование команд разработки
- Связь команд с сервисами
- Раскрытие API через API Gateway
Организация работы с данными
- Shared database anti-pattern
- Database per service pattern
- Внутренняя архитектура сервиса
- Адаптеры обработки публикации событий
- Повторное использование кода
- Шаблон сервиса
Взаимодействие между сервисами
- CAP теорема
- Синхронное/асинхронное взаимодействие
- Circuit Breaker(Предохранитель)
- Transactional outbox pattern
- Polling publisher pattern
- Transaction log tailing pattern
- Репликация данных как средство снижения зависимости(CQRS)
- Отложенная согласованность данных
- Saga pattern
Практика
- Хранение состояния сервиса
- Снижение зависимости между сервисами за счет асинхронных коммуникаций
Развертывание
- Понимание DevOps
- Стратегия автономности поставки
- Типовой CI/CD конвейер сервиса
- Способы развертывания
- Конфигурация и секреты
- Service discovery
- Blue-Green Deployment
- Canary Deployment
- Особенности тестирования микросервисов
- Пирамида тестирования
- Тесты контрактов(
Скрытый текст. Доступен только зарегистрированным пользователям.
) - Компонентные тесты
- Место тестов в CI/CD конвейере
- Кто пишет функциональные тесты и стоит ли их писать
Практика
- Построение CI/CD конвейера
- Обеспечение качества перед выпуском
Мониторинг и поддержка
- Мониторинг работоспособности
- Мониторинг состояния сервиса
- Распределенная трассировка
- Логи и их агрегация
- Подход 'кто разработал тот и поддерживает'
- Изолированность
- Горизонтальное масштабирование
Стратегии разбиения монолита
- Strangler application pattern('душитель')
- Стратегии разбиения
- Что выносить в первую очередь
- Выделение Bounded Context
- Разделение базы данных
- Выделение сервиса
- Взаимодействие между сервисом и монолитом
- Как реализовать отчеты в микросервисной системе
Практика
- Обеспечение мониторинга сервисов
- Сбор логов