О курсе
Научитесь декомпозировать систему на микросервисы, узнаете все паттерны и антипаттерны, получите роадмэп распила монолита.
Курс ведёт действующий архитектор
Кирилл Ветчинкин — опыт применения MSA с 2016 года.
- Отвечает за архитектуру, ревью сервисов и руководит процессами разработки в крупном Маркетплейсе.
- Успешно реализовал ряд высоконагруженных систем на микросервисной архитектуре для Мегафон, Теле2, ВСS Brокer, СберМаркет
- Постоянный спикер крупных IT конференций по разработке и Архитектуре ПО: ArchDays, Highload++, Podlodka, РИТ, DevOpsDays, DotNext, DevOps Pro, MskDotNet Meetup и другие
- Обладает степенью MBA в IT (ВШЭ)
Формат
- 11 видеоуроков по 40-60 минут
- 6 практических заданий на проектирование (код писать не надо)
- Отработка навыков через кейс
- Поддержка в чате от самого эксперта
- 3 Q&A сессии в Zoom, для разбора ДЗ и вопросов
Кому подойдет
Аналитикам и разработчикам, которые хотят освоить проектирование систем, основанных на микросервисах.
Кому не подойдет
Если вы хотите разобраться с технологиями (grpc, kafka, docker) и т.п. На курсе мы именно проектируем и изучаем паттерны и антипаттерны микросервисной архитектуры. Код мы не пишем, но строим архитектурную схему.
Программа
Базовые понятия
- Сравнение архитектур
- Монолит vs Микросервисы
- Область применения микросервисов
- Цели внедрения микросервисов
Основы 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 (Backend for front-end) 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