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