DDD ограниченный контекстный сервис против интеграции с базой данных

2 ограниченных контекста, первый - "Каталог продукции", второй - "Маркетинг".

Маркетинговый контекст зависит от каталога товаров.

Маркетинг нуждается в конкретных данных из каталога продукции. Я колеблюсь между 2 подходами:

1. Сохраните данные в каталоге продуктов, создайте сервисный интерфейс в каталоге продуктов, который предназначен для уникальной цели запроса данных для конкретного сценария использования.

2- Иметь процесс, который будет запрашивать данные из базы данных каталога продуктов и передавать только необходимую информацию (плюс делать любой необходимый перевод модели) в маркетинговую базу данных.

Обратите внимание, что маркетинговому контексту на самом деле не нужно получать свежие данные из каталога в реальном времени, и я пока не хочу решать проблемы с производительностью.

Мне нравится первый вариант, потому что он кажется более простым, но мне он не нравится, потому что я не уверен, действительно ли это хорошая практика - разрабатывать сервисы специально для использования другого варианта использования контекста? Мне кажется, что это утечка контекстной логики маркетинга в логику каталога продуктов, и я боюсь умножать услуги для многих других зависимых контекстов и вариантов использования.

1 ответ

Каталог продукции (ПК) является восходящим (США), а Маркетинг (М) - нижестоящим (DS).

Если я не пойму вас неправильно, в основном вы спрашиваете, стоит ли вам идти на интеграцию синхронизации (вариант 1) или async (2).

Поскольку вы говорите, что M не нужны данные в реальном времени с ПК, возможно, мне стоит пойти на асинхронную интеграцию. Но я бы сделал это не через интеграцию БД, а с событиями:

Американский контекст (ПК) публикует события (например, ProductWasCreated) каждый раз, когда происходит изменение данных, и контекст DS (M) подписывается на них и реагирует (вставляет продукт в его базу данных).

Что касается подхода (1), я думаю, что в ПК нет проблем, предлагающих услуги, в которых нуждается М. Служба должна обслуживать то, что нужно клиентам, не имело бы смысла, что ограниченный контекст предлагал бы то, что никто не хочет. В любом случае все зависит от отношений между командами (клиент / поставщик, партнерство,...)

Вы должны взглянуть на различные типы контекстного отображения (например, в красной книге Vauhgn Vernon).

Другие вопросы по тегам