Ответ
Микросервисная архитектура (MSA) — это стиль проектирования приложения как набора независимо развертываемых сервисов, каждый из которых реализует одну бизнес-возможность и взаимодействует по легковесным протоколам (чаще всего HTTP/REST, gRPC).
Ключевые характеристики:
- Организация вокруг бизнес-возможностей: Сервисы строятся вокруг доменных понятий (например, «Заказы», «Оплата», «Доставка»), а не технических слоев.
- Автономность:
- У каждого сервиса своя кодовая база и цикл разработки.
- Самостоятельное развертывание и масштабирование.
- Возможность использовать разные технологии и СУБД.
- Децентрализованное управление данными: Каждый сервис управляет своей собственной схемой БД. Согласованность данных обеспечивается через механизмы Saga, CQRS или события.
Пример структуры:
Монолит: [UI][Бизнес-логика][Данные]
Микросервисы:
[Сервис Пользователей] <---> [API Gateway] <---> [Сервис Заказов]
| | |
[СУБД 1] [Сервис Оплат] [СУБД 2]
|
[СУБД 3]
Преимущества:
- Гибкость и скорость: Команды работают независимо.
- Масштабируемость: Можно масштабировать только «узкие» места.
- Отказоустойчивость: Падение одного сервиса не обрушивает всю систему.
- Технологическая гетерогенность.
Недостатки и сложности:
- Распределенные транзакции.
- Сложность отладки и мониторинга (необходим centralized logging, tracing).
- Накладные расходы на межсервисную коммуникацию.
- Усложнение процесса развертывания и DevOps.