Онлайн-курс "Микросервисная архитектура"
О курсе
Освоите декомпозицию систем на микросервисы, разберете ключевые паттерны и антипаттерны и получите дорожную карту по поэтапному разделению монолита.
Курс ведёт действующий архитектор
Кирилл Ветчинкин — практический опыт работы с MSA с 2016 года.
- Отвечает за архитектуру, проводит экспертизу сервисов и управляет процессами разработки в крупном Маркетплейсе.
- Успешно внедрил ряд высоконагруженных систем на микросервисной архитектуре для Мегафон, Теле2, ВСS Brокer, СберМаркет
- Постоянный спикер крупных ИТ конференций по разработке и архитектуре ПО: ArchDays, Highload++, Podlodka, РИТ, DevOpsDays, DotNext, DevOps Pro, MskDotNet Meetup и другие
- Обладает степенью MBA в ИТ (ВШЭ)
Формат
- 11 видеозанятий продолжительностью 40–60 минут
- 6 практических заданий по проектированию (без написания кода)
- Отработка навыков на примере проекта
- Поддержка в чате непосредственно от эксперта
- 3 сессии вопросов и ответов (Q&A) в Zoom для разбора ДЗ и уточнения вопросов
Кому подойдет
Аналитикам и разработчикам, ориентированным на освоение проектирования систем на базе микросервисного подхода.
Кому не подойдет
Если цель — изучение конкретных технологий (gRPC, Kafka, платформа Docker) и аналогичных инструментов. На курсе акцент на проектировании и разборе паттернов и антипаттернов микросервисной архитектуры. Код не пишется, формируется архитектурная схема.
Программа
Базовые понятия
- Сопоставление архитектурных подходов
- Монолит и микросервисы: сравнение
- Области целесообразного применения микросервисов
- Цели внедрения микросервисной архитектуры
Основы Domain Driven Design
- Доменные события (Domain Event)
- Критерии корректной декомпозиции
- Что такое Domain Driven Design (DDD)
- Стратегические паттерны DDD
- Тактические паттерны DDD
(Aggregate, Value Object, Entity, Domain Event)
Декомпозиция на микросервисы и Event Storming
- Подход к выделению микросервисов
(Decompose by subdomain pattern) - Допустимые границы размера микросервиса
- Соотношение размера микросервиса и состава команды
- Практика Event Storming
Команды и организационная трансформация
- Модели организации команд
- Ответственность команды за сервис (Service per team pattern)
- Управление продуктом в MSA
- Роль архитектора в MSA
- Платформенные команды
- Команды разработки общих сервисов
- Как распределять разработчиков по сервисам
Раскрытие программного интерфейса (API) и Аутентификация
- API Gateway pattern
- BFF (бэкэнд для фронт-енда) pattern
- API Composition pattern
- Access token pattern
- Распространенные серверы аутентификации
Структура микросервиса
- Организация работы с данными (Database per service pattern)
- Внутренняя архитектура сервиса
- Повторное использование библиотек (Shared library anti-pattern)
- Шаблон сервиса (Service Template pattern)
Межсервисное взаимодействие
- Синхронное взаимодействие (Remote Procedure Call (RPC) pattern)
- Защита от сбоев (Fallback, Retry, Circuit Breaker)
- Асинхронное взаимодействие (Messaging pattern)
- Отложенная согласованность (Eventual consistency)
- Обеспечение отложенной согласованности
(Outbox pattern, Transaction log tailing pattern) - Защита от дубликатов (Idempotent Consumer (inbox) pattern)
- Command Query Responsibility Segregation (CQRS) pattern
- Управление сквозными процессами (Saga pattern)
Развертывание
- Подходы к развертыванию микросервиса
(Service instance per Container pattern и другие) - Стратегия независимой поставки
- Типовой конвейер CI/CD для сервиса
- Способы получения конфигурации
(Externalized configuration pattern)
Тестирование
- Типичные ошибки при тестировании распределенных систем
- Пирамида тестирования
- Unit тесты
- Integration тесты
- Contract тесты (Consumer-side contract test pattern)
- Component тесты (Service Component Test pattern)
- End-to-end тесты
Мониторинг и поддержка
- Health Check API pattern
- Мониторинг состояния сервиса (Application metrics pattern)
- Сбор логов (Log aggregation pattern)
- Распределенная трассировка (Distributed tracing pattern)
- Поддержка ("You build it, you run it")
- Изолированность
- Масштабирование
Стратегии разбиения монолита
- Планирование миграции на микросервисы
- Базовые стратегии декомпозиции
- Прикладные подходы
(Strangler application pattern, Branch by abstraction pattern и другие) - Отчеты и аналитика
Есть вопросы, нужна консультация?
Telegram: @kirill_vet