Перейти к содержанию

Bounded Context

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

Отличие от поддомена

Часто границы поддоменов совпадают с В отличие от поддомена границы связанного контекста формируются разработчиками. Связанный контекст может содержать в себе несколько поддоменов, поддомен может содержать несколько связанных контекстов.

Пример

Например, объект физического мира книга означает в разных связанных контекстах разные вещи:

  • Catalog: обложка, название, автор, объем, формат
  • Shipping: вес, размеры, запрет на доставку в страны
  • Prices: цена, скидки
  • Recommendation: книги, которые часто покупают вместе с этой
  • Reviews: оценки и отзывы
    В разных контекстах нам важны разные свойства книги. Для работника склада абсолютно все равно как называется книга или кто ее автор, ему важен вес и размеры.

Зачем нужно выделять связанные контексты?

Позволяют моделировать различные аспекты проблемы не контактируя с другими частями бизнеса. В примере выше, выделив модуль Shipping в отдельный связанный контекст мы можем моделировать в нем объект книга игнорируя все ее свойства, кроме тех, что интересны в рамках нашего контекста. Если мы этого не сделаем, то можем прийти к антипаттерну God Object, при котором объект книга превратится в свалку сотен никак не связанных друг с другом свойств.

Способы определения

  • Следить за словами и выражениями, которые используют доменные эксперты. Разные контексты имеют разные словари. В разных связанных контекстах часто одно и то же слово означает разные вещи или одна вещь имеет два разных названия.
    Например, клиента депозитария аналитик, отвечающий за онбординг клиентов, будет называть “физическим лицом”. А аналитик депозитарной системы будет называть его же словом “депонент”.
  • Если одни и те же данные нужны в разных контекстах - это тревожный звонок, что границы были выбраны неправильно.
  • Разные доменные эксперты. В сложных областях есть несколько экспертов, которые знают каждый про свою область. Эти “области” могут и оказаться связанными контекстами.
  • Иногда каждый большой шаг бизнес процесса и есть связанный контекст.