Фичи формируют контексты (boundary context). Контексты пересекаются но в целом весьма изолированы. Их нутро не зависит друг от друга.

Возьмем к примеру каталог товаров и прикинем какие у нас тут есть контексты:

  • пользователи — авторизация, восстановление доступа, управление профилем
  • ордеры — весь цикл жизни ордера в системе
  • каталог товаров — управление каталогом, просмотр деталей о продукте
  • поиск — весь поиск.

В этом примере наиболее интересный «модуль» — это поиск. Он может искать для нас продукты в каталоге и ордеры. Но они ничего не знает о ордерах или продуктах. Скажем когда мы ищем ордеры — мы просим модуль поиска найти для нас «ордеры» и он всего-лишь вернет нам айдишки и информацию которая важна нам для поиска. Далее для этих айдишек мы можем уже запросить детали у модуля каталога.

Синхронизация этих модулей — ивенты. Кто-то обновил продукт — кидаем ивент — синхронизируем данные в других контекстах.

Профит тут в том что мы можем отдельно посадить чувака заниматься поиском, и отдельно чувака заниматься ордерами. Можем перевести поиск на свою СУБД которая хорошо умеет полнотекстовый поиск (например эластика). И при этом если у нас добавляются фичи в каталог — это не сильно влияет на поиск.

 

https://habrahabr.ru/company/englishdom/blog/328550/

Читайте еще: