Я занимаюсь проектированием электронной коммерции с использованием архитектуры микроуслуг.Предположим, что у меня есть два контекста: каталог товаров, инвентарь и цены.Мне кажется, что они несут ответственность.Но для обслуживания витрины (списка продуктов) мне нужно сделать запрос на каталог продуктов, получить список идентификаторов и затем использовать его для запроса микроуслуг Inventory для проверки состояния запасов (в наличии или в наличии).Помимо этого мне нужно сделать запрос в Pricing, чтобы узнать цену каждого продукта.
Таким образом, в основном для обслуживания фундаментальной функции я выполняю три запроса (например, объединение) в трех микро-сервисах.Я читал об архитектуре микросервисов, и когда вы имеете дело со многими «соединениями», возможно, что эти контексты должны быть едиными.Но, IMO, мне кажется ясным, что каждый контекст имеет свой набор обязанностей.
Другой вариант - создать «поисковый» микро-сервис, который объединит всю эту информацию (продукт + ценообразование + инвентарь).Мы можем использовать событие домена, чтобы уведомить «поисковую» микросекунду о том, что что-то изменилось.Таким образом, мы можем решить витрину с помощью одного запроса.Это похоже на CQRS.
Вопрос в том ...
Есть ли правильный подход?
Какой из них лучше?Компромиссы?