Улучшаемые навыки
Монолит
SOA
MSA
Паттерны декомпозиции
Событийный штурм
Синхронное и асинхронное взаимодействие сервисов
CQRS
EDA
REST
RESTful API
gRPC
Apache Thrift
GraphQL
MQTT
RabbitMQ
Apache Kafka
Инструменты
Kubernetes
Kafka
Istio
RabbitMQ
Histryx
Kibana
Чему вы научитесь
01
Проектировать микросервисные архитектуры с учетом бизнес-требований.
02
Декомпозировать монолитные приложения на микросервисы.
03
Интегрировать микросервисы с использованием различных протоколов и технологий.
04
Обеспечивать отказоустойчивость и безопасность микросервисных систем.
05
Выбирать подходящие инструменты для развертывания и управления микросервисами.
06
Решать проблемы согласованности данных в распределенной среде.
Программа курса
Понятия монолита, SOA, MSA.
Сравнение и обоснование выбора.
02
Паттерны декомпозиции MSA
Оптимальный размер микросервиса;
Разбиение на сервисы по бизнес-возможностям;
Разбиение на сервисы по проблемным областям;
Практики определения предметных областей;
Декомпозиция по техническим и организационным аспектам.
03
Организация разработки под MSA
Организация команд под MSA;
Организация репозитория кода под MSA.
04
Интеграция микросервисов
Паттерны взаимодействия;
Синхронные и асинхронные механизмы взаимодействия;
Оркестровка и хореография;
Основные протоколы и технологии (REST, gRPC, GraphQL, Kafka, RabbitMQ и др.);
Взаимодействие с внешними системами (API Gateway, BFF);
Реактивные системы;
Архитектуры управляемые событиями;
Разделение команды и запроса.
05
Организация работы с данными в MSA
Паттерны работы с данными;
Порождение событий;
Справочные данные в MSA;
Единый источник истины (Source of Truth) в MSA.
Модифицируемость.
Решение проблемы высокой связанности. Версионирование интерфейсов и событий. Типы контрактов.
Изменения событийной модели. Паттерны организации запросов. Микросервисное шасси (Microservice chassis). Сетки сервисов (Service Mesh).
Масштабируемость.
Паттерны построения балансировщиков. Сервисы обнаружения и паттерны работы с ними.
Производительность.
Паттерны производительности в MSA (переборка, изящная деградация и пр.).
Согласованность.
Проблемы обеспечения согласованности в MSA. CAP теорема. Решения проблем согласованности. Двухфазные коммиты. Паттерн SAGA. Понижение уровня согласованности.
Надежность.
Механизмы отказоустойчивости. Паттерны предохранитель (Circuit Breaker), дросселировка, зависимые таймауты и пр.
Безопасность.
Механизмы обеспечения безопасности в MSA. Аутентификация. Авторизация. Защита периметра. Защита каналов связи. Основные протоколы и паттерны (OAUTH2, JWT, привратник, ключ камердинера и пр.).
Тестируемость.
Пирамида и квадрат тестирования. Особенность тестирования микросервисов.
Модульное тестирование. Интеграционное тестирование. Компонентное тестирование. Тестирование E2E. Паттерны тестирования MSA.
Удобство обслуживания.
Возможность наблюдения (Observability). Паттерны наблюдения (распределенная трассировка, агрегация журналов). Мониторинг и журналирование. Конфигурирование микросервисов. Вынесение конфигурации во вне. Поддержка системы.
07
Развертывание микросервисов
Паттерн «Deployment pipeline»;
Паттерны развертывания;
Использование технологий Docker и Kubernetes;
Использование сетки ISTIO;
Бессерверное развертывание;
Стратегии развертывания (сине-зеленые, канареечные и т.д.).
08
Стратегии миграции от монолита к MSA
Стратегии перехода с монолита на микросервисы;
Удушение монолита (Strangler monolith);
Паттерны удушения;
Связь микросервиса с монолитом;
Миграция базы данных.
09
Итого на курс часов: теория – 16,5 ч ( 69 %), практика – 7,5 ч (31 %)
Видео
Для кого
Архитектор ПО
DevOps-инженер
Разработчик
Руководитель группы\Тимлид
Предварительная подготовка
Расписание курсов
Курс проводят
Гордиенко Владимир
Эксперт в области разработки и Архитектуры ПО.
О тренере
Владимир с 2012 года занимается разработкой информационных систем. За это время прошел путь от разработчика на бэкенде и фронтенде до проектировщика информационных систем. Участвовал в разработке промышленных систем для автомобильной промышленности и коммерческих продуктов в области телекоммуникаций и интернета вещей. Специализируется на проектировании и разработке распределенных систем на основе облачных решений. Имеет огромный опыт в использовании Agile подходов в разработке и проектировании.
В рамках своей профессиональной деятельности занимался:
- разработкой микросервисной архитектуры продукта;
- решением проблем с производительностью и масштабированием;
- разработкой решений по интеграции внешних систем;
- предложением заказчику оптимальных решений на основе анализа трудозатрат и эффективности;
- консультированием и управлением командой разработки;
- анализом требований заказчика и интегрированием их в продукт;
- созданием, согласованием технических решений и контролем их выполнения;
- улучшением внутренних процессов разработки и увеличением производительности выбор наиболее приоритетных задач для разработки.
Курсы и сертификаты