Паттерны реализации микросервисной архитектуры
Один из популярных вопросов на собеседовании уровня Senior. Паттернов много, и чем больше кандидат сможет назвать и объяснить, тем больше очков в копилку получит. Сегодня разбираем некоторые из них.
Паттерн декомпозиции на микросервисы:
- Декомпозиция по бизнес возможностям - паттерн предполагает определение бизнес-возможностей приложения и создание по одному микросервису на каждую из них
- Декомпозиция по поддоменам (DDD) - паттерн основан на концепции DDD
Паттерн рефакторинга для перехода на микросервисы
- Душитель (Strangler) - паттерн предполагает миграцию монолитного приложения на микросервисную архитектуру путем постепенного переноса существующих функций в микросервисы.
- Слой защиты от повреждений (Anti-corruption layer) - паттерн предназначен для изолирования различных подсистем путем размещения между ними дополнительного уровня, который может быть реализован как компонент приложения или независимая служба.
Паттерн управления данными в микросервисах
- Saga - паттерн предназначен для управления распределенными транзакциями
- CQRS - паттерн предлагает отделить изменение данных (Command) от чтения данных (Query)
- API композиция – паттерн предлагает создать отдельное API, которое будет вызывать необходимые сервисы, владеющие данными, и выполнять соединение полученных от них результатов в памяти
- Event Sourcing - паттерн, предполагает сохранение не объектов, а их состояний
- База данных на микросервис
Паттерн взаимодействия между сервисами
- Обмен сообщениями
- Удаленный вызов процедур
Паттерн коммуникации с внешними сервисами
- API Gateway - паттерн основан на применении шлюза, который находится между клиентским приложением и микросервисами, обеспечивая единую точку входа для клиента
- BFF - аналогичен Gateway, разница в том, что вместо одной точки входа вводит несколько шлюзов для каждого типа клиента
Паттерн мониторинга состояния микросервисов
- Логи
- Метрики
- Журналирование
- Трассировка
- Отслеживание исключений
- Проверка работоспособности API
Паттерн построения пользовательского интерфейса
- На сервере
- На клиенте
Паттерн развертывания микросервисов
- Один сервис на хост
- Множество сервисов на хост
А с какими паттернами вам приходилось сталкиваться в работе?
P.S. В комментариях найдете графическую схему описанных паттернов
Post #48
1.87K
- ❤ 18
- 👍 3
- ⚡ 2