Нужно ли при такой задаче объединить микросервисы в одно приложение?
Есть два микросервиса:
- Для управления пользователями и работы с структурой Таблица
user
id parentId login
Для работы с структурой используется SQL запрос:
with recursive cte as ( select id, 1 as depth from user where parentId = ${userId} union all select p.id, cte.depth + 1 from user p inner join cte on p.parentId = cte.id )
- Для хранения данных об покупках пользователя
purchase
id userId amount
Задача:
В 1 микросервисе возвращать новый столбец turnover
т.е это сумма всех покупок дочерних пользователей у которых стоит parentId пользователя.
Проблема в том что эти 2 микросервиса друг от други изолированы и делать на каждого пользователя запросы в отдельный микросервис выглядит не очень оптимизровано.
Проще всего мне кажется это добавитьinner join purchase
в этот рекурсивный запрос.
Вопрос: При изначальном проектировании архитектуры правильно было бы объединить эти две сущности в одно приложение или разместить таблицы в 1 базе данных?
P.S Это только тестовый проект для обучения микросервисов.
Источник: Stack Overflow на русском