Это немного основано на мнении, так как не существует «правильного» и «неправильного» способа решения этой проблемы.Но это часто случается с архитектурными вопросами, поэтому я попробую.
Для вашего сценария я бы рассмотрел три пути:
- Если
App A
Единый репозиторий, который содержит данные для всех или большинства ваших сервисов, вероятно, его необходимо разбить, чтобы перенести постоянство в пределах домена каждой границы сервиса. - Если
App B
- это особый случай с оченьсвязанных данных с App A
, и обе службы предоставляют необходимые функции (которые не перекрываются), рассмотрите возможность подключения App B
непосредственно к базе данных и размещения обеих служб за фасадом, представляющим этот конкретный домен. - Есливсе, что делает
App B
, на самом деле предоставляет интерфейс к данным в App A
, возможно, что границы ваших служб нарисованы неправильно, и эти два можно / нужно объединить.
Добавление дополнительного HTTP APIвызов в цепочке между клиентом и сохранением данных (использование App B
в качестве «интерфейса» к данным в App A
) станет большой проблемой для kEEP исполнитель и это то, что я бы избежать.Если после тщательной оценки текущие границы будут определены как наилучшие, вы можете использовать более быстрый или более синхронный способ связи с большим хранилищем данных в App A
- например, gRPC или чем-то подобным.
Имеянесколько сервисов совместно используют постоянный уровень, как правило, также нежелательно, но если на самом деле существует несколько разных бизнес-доменов, работающих по существу с одним и тем же набором данных, это не случайно.Примером того, где это может иметь смысл, является служба, которая хранит / управляет адресами, и отдельная служба, использующая то же хранилище данных, которое проверяет адреса с помощью внешнего API.
Границы службы должны представлять границы бизнес-домена, а те редко (нони разу!) включают одно большое хранилище данных.Поэтому убедитесь, что App A
и App B
соответственно независимы в соответствии с их бизнес-функциями, и ваш ответ может стать более ясным.