[microarch.ru] Микросервисная архитектура [Кирилл Ветчинкин]

185

О курсе

Курс состоит из 5 вебинаров по 75 минут с глубоким погружением в микросервисную архитектуру. Мы рассмотрим способы декомпозиции, изменения в командах, разбор популярных паттернов и антипаттернов, связь с бизнесом, Agile и DevOps. На курсе вы научитесь проектировать микросервисы начиная с понимания бизнес домена и заканчивая особенностями реализации.

Чему вы научитесь
Планировать архитектуру ПО
Четко понимать область применения микросервисной архитектуры, цели подхода и особенности.
Декомпозировать систему
Научитесь проводить моделирование микросервисов вокруг бизнес-концепций, применяя практики предметно-ориентированного проектирования.

Мигрировать с монолита
Строить готовую к применению стратегию перехода от монолита к микросервисной архитектуре.
Строить интеграцию между системами
Узнаете об основных подходах к интеграции систем, разберётесь с интеграционными шаблонами и научитесь их применять.

Совмещать MSA с DevOps, Agile
Сможете применять основные практики DevOps для облегчения тестирования и развертывания микросервисов.
Формировать команды разработки
Узнаете как реорганизовать команды в соотвествии с микросервисной архитектурой, выстроить процесс разработки.

Курс состоит из 5 вебинаров по 75 минут
Базовые понятия

  • Сравнение различных архитектур
  • Отличие 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
  • Разделение базы данных
  • Выделение сервиса
  • Взаимодействие между сервисом и монолитом
  • Как реализовать отчеты в микросервисной системе

Практика

  • Обеспечение мониторинга сервисов
  • Сбор логов