Описание
Микросервисная архитектура (МСА) сравнительно недавно завоевала славу самого популярного архитектурного подхода. Ее использование обеспечивает множество преимуществ на различных этапах жизненного цикла продукта. В частности, МСА позволяет получить меньшее время реакции на требования бизнеса, что зачастую обеспечивает ее превосходство над прочими архитектурными стилями.Однако, в процессе разработки МСА систем архитектор сталкивается со множеством вызовов, многие из которых заставляют новичков откатываться назад.
Ошибки декомпозиции могу привести к серьёзному увеличению сложности разработки. Производительность страдает из-за непреодолимых сетевых задержек. Распределенное хранение данных не позволяет использовать транзакционную согласованность. Большое количество взаимодействующих по сети компонент снижает надежность. Сложно обеспечивать безопасность. Кроме того, отдельного разговора требует тестирование и обслуживание распределенной системы.
Данный курс покажет преимущества и недостатки использования МСА. Поможет принимать обоснованное решение о применимости МСА в зависимости от потребностей бизнеса и возможностей команды.
В курсе рассматриваются основные проблемы, связанные с реализацией микросервисной архитектуры. Стратегии, механизмы, паттерны, решающие озвученные выше задачи. По каждой рассматриваемой проблеме будут представлены наиболее распространённые инструменты (такие, как Kubernetes, Istio, Histryx, Kibana, и многие другие).
Практические упражнения позволят приобрести навык самостоятельного проектирования МСА систем.

удостоверение о повышении квалификации государственного образца
Цели
- Дать представление о МСА и о её связи с остальными архитектурами системы;
- Дать представление о проектировании МСА систем;
- Выработать практический навык проектирования МСА систем;
- Познакомить слушателей с наиболее распространёнными шаблонами МСА;
Целевая аудитория
- Архитекторы;
- DevOps специалисты;
- Ведущие разработчики;
- Руководители разработки.
Предварительная подготовка
Желательно опыт разработки архитектуры или прохождение курса ARC-001 «Основные практики архитектора ПО», знание подхода DDD или прохождение курса ARC-003 «Domain Driven Design».
Разбираемые темы
-
1. Архитектурные стили (2 ч.)
- Понятия монолита, SOA, MSA.
- Сравнение и обоснование выбора.
-
2. Паттерны декомпозиции MSA (2 ч.)
- Оптимальный размер микросервиса;
- Разбиение на сервисы по бизнес-возможностям;
- Разбиение на сервисы по проблемным областям;
- Практики определения предметных областей;
- Декомпозиция по техническим и организационным аспектам.
-
3. Организация разработки под MSA (1 ч.)
- Организация команд под MSA;
- Организация репозитория кода под MSA.
-
4. Интеграция микросервисов (3 ч.)
- Паттерны взаимодействия;
- Синхронные и асинхронные механизмы взаимодействия;
- Оркестровка и хореография;
- Основные протоколы и технологии (REST, gRPC, GraphQL, Kafka, RabbitMQ и др.);
- Взаимодействие с внешними системами (API Gateway, BFF);
- Реактивные системы;
- Архитектуры управляемые событиями;
- Разделение команды и запроса.
-
5. Организация работы с данными в MSA (3 ч.)
- Паттерны работы с данными;
- Порождение событий;
- Справочные данные в MSA;
- Единый источник истины (Source of Truth) в MSA.
-
6. Основные шаблоны МСА (9 ч.)
- Модифицируемость.
- Решение проблемы высокой связанности. Версионирование интерфейсов и событий. Типы контрактов. Изменения событийной модели. Паттерны организации запросов. Микросервисное шасси (Microservice chassis). Сетки сервисов (Service Mesh).
- Масштабируемость.
- Паттерны построения балансировщиков. Сервисы обнаружения и паттерны работы с ними.
- Производительность.
- Паттерны производительности в MSA (переборка, изящная деградация и пр.).
- Согласованность.
- Проблемы обеспечения согласованности в MSA. CAP теорема. Решения проблем согласованности. Двухфазные коммиты. Паттерн SAGA. Понижение уровня согласованности.
- Надежность.
- Механизмы отказоустойчивости. Паттерны предохранитель (Circuit Breaker), дросселировка, зависимые таймауты и пр.
- Безопасность.
- Механизмы обеспечения безопасности в MSA. Аутентификация. Авторизация. Защита периметра. Защита каналов связи. Основные протоколы и паттерны (OAUTH2, JWT, привратник, ключ камердинера и пр.).
- Тестируемость.
- Пирамида и квадрат тестирования. Особенность тестирования микросервисов.
- Модульное тестирование. Интеграционное тестирование. Компонентное тестирование. Тестирование E2E. Паттерны тестирования MSA.
- Удобство обслуживания.
- Возможность наблюдения (Observability). Паттерны наблюдения (распределенная трассировка, агрегация журналов). Мониторинг и журналирование. Конфигурирование микросервисов. Вынесение конфигурации во вне. Поддержка системы.
- Модифицируемость.
-
7. Развертывание микросервисов (2 ч.)
- Паттерн «Deployment pipeline»;
- Паттерны развертывания;
- Использование технологий Docker и Kubernetes;
- Использование сетки ISTIO;
- Бессерверное развертывание;
- Стратегии развертывания (сине-зеленые, канареечные и т.д.).
-
8. Стратегии миграции от монолита к MSA (2 ч.)
- Стратегии перехода с монолита на микросервисы;
- Удушение монолита (Strangler monolith);
- Паттерны удушения;
- Связь микросервиса с монолитом;
- Миграция базы данных.
.png)
Архитектор корпоративных приложений с большим опытом работы в химической и финансовой отраслях, государственном секторе.
Профессиональный инженер по разработки программного обеспечения с дипломом по специальности «Кибернетика» Московского инженерно-физического института (МИФИ).
Проекты:
- участвовал в ИТ-проектах для Министерства внутренних дел, Таможенного комитета, комитета по землепользованию Москвы, РАО ЕС, в качестве руководителя проекта, архитектора проекта, разработчика и преподавателя;
- руководил проектами интеграции в IBS BORLAS.

Более 9 лет создает информационные системы. Имея большой опыт в разработке на frontend и backend, столкнулся с тем, что очень много проблем на проекте возникают из-за плохой архитектуры и сейчас развивается в этом направлении.
О проектах
В рамках своей профессиональной деятельности занимался:- разработкой микросервисной архитектуры продукта;
- решением проблем с производительностью и масштабированием;
- разработкой решений по интеграции внешних систем;
- предложением заказчику оптимальных решений на основе анализа трудозатрат и эффективности;
- консультированием и управлением командой разработки;
- анализом требований заказчика и интегрированием их в продукт;
- созданием, согласованием технических решений и контролем их выполнения;
- улучшением внутренних процессов разработки и увеличением производительности выбор наиболее приоритетных задач для разработки.
Александр – эксперт с практическим опытом более 14 лет. За свою карьеру он успешно реализовал проекты в ведущих российских и мировых IT-компаниях.
О проектах:
В рамках проектов Александр занимался разработкой клиентских (Web и Desktop) и серверных приложений (SOA, MSA, Mono), разработкой архитектурных IT-систем, настройкой рабочих и IT процессов, анализом и оптимизацией проектов по сложности и стоимости.
Также Александр занимался разработка IT-стратегий для клиентов и утверждением архитектурных стандартов для приложений, участвовал в разработке бизнес-архитектуры.
Текущая сфера интересов - разработка распределенных систем с ограниченным уровнем доверия.
Курсы, сертификаты, членство в профессиональных организациях:
-
ICAgile Certified Professional
-
MongoDB M220 JavaScript
-
MongoDB M220 Java