У них обоих есть понятие пользователя, и они будут говорить о пользователях посредством звонков друг другу.
Я также согласен с тем, что сказал @soru. Если одному сервису нужны данные другого сервиса, его границы неверны.
Хорошее решение - то, что придумал @pnschofield - рассматривая ваши сервисы как ограниченный контекст
Говоря о предмете, коротко говоря: модели с общим доменом убивают автономность службы, превращая вашу микросервисную систему в распределенный монолит. Что, видимо, даже хуже, чем монолит.
Таким образом, все еще остается нерешенным общий вопрос - как определить границы обслуживания или контекста, чтобы они процветали с высокой связностью и безупречным качеством связи.
Я придумал решение, позволяющее рассматривать мои контексты как возможности для бизнеса. Это бизнес-ответственность более высокого уровня, бизнес-функциональность, способствующая достижению общей бизнес-цели. Вы можете думать о них как о шагах, которые должна пройти ваша организация, чтобы получить бизнес-ценность.
Моя типичная последовательность шагов, которые я предпринимаю при определении границ сервиса, следующая:
- Определите бизнес-возможности более высокого уровня. Обычно они похожи между организациями из одного домена. Вы можете почувствовать, как выглядит проверка цепочки создания стоимости Портера .
- В рамках каждой возможности углубиться и определить под-возможности.
- Обратите внимание на связь между возможностями. Посмотрите, что делает организация. Обычно общение сосредоточено в пределах возможностей, оповещая остальных о результате своей работы. Таким образом, при реализации технической архитектуры ваш сервис должен также общаться через события. Это имеет несколько положительных последствий. При таком подходе ваши услуги автономны и согласованы. Им не нужно синхронное общение и распределенные транзакции.
Вероятно, пример этой техники будет интересен для вас. Не стесняйтесь, дайте мне знать, что вы думаете, так как я нашел этот подход действительно выгодным. Конечно, это может сработать и для вас.