Я могу привести еще один пример. Предположим, у вас есть система электронной коммерции. У вас будут продукты, но продукты будут входить как минимум в два разных домена:
- Каталог товаров, где вы храните описание товара и все атрибуты
- Инвентаризация, где у вас есть запас товара
Если у вас есть один ограниченный контекст для обоих доменов, ваше решение может быстро превратиться в большой шарик грязи, потому что вы начнете ссылаться на него. В конце у вас больше не будет двух доменов. Ваш товарный инвентарь будет испорчен ссылками на каталог товаров и наоборот. В результате вы не сможете изменить один домен, не касаясь другого, даже полностью осознавая, что это не требуется. Ваши модели становятся зависимыми друг от друга, тесно связанными и плохо зависимыми - зависящими от реализации.
Однако, если у вас два ограниченных контекста, все изменения, которые вы делаете в одном домене, не повлияют на другой, как только вы оставите каналы связи свободными. Это будет означать, что вам нужно дублировать данные, но это будет наименьшей стоимостью, чтобы заплатить за плохо основанное на компонентах приложение. Ваши домены могут общаться друг с другом, используя события домена. Даже если вы вначале не планируете использовать приложение на основе SOA, вы сможете масштабироваться до этого уровня, когда вам нужно с относительно небольшими усилиями, так как вы просто измените транспорт для событий вашего домена, оставив идею без изменений.
Обновление: на SkillsMatter есть хорошая квалификация от Эрика Эванса. Он приводит аналогию со старой историей, когда несколько слепых описывают слона с их точки зрения. Поскольку каждый человек может коснуться только части слона, они описывают его как «дерево», «стена», «змея», «веревка». И каждый из этих людей прав в своем контексте. Ограниченный контекст - это место, где живет вездесущий язык. Вне контекста эти термины могут иметь совершенно другое значение, но внутри контекста язык одинаков для разных доменов. Грег Янг настоятельно рекомендует начать чтение синей книги из главы 11, поскольку там объясняются наиболее важные фундаментальные понятия. Сосредоточение внимания на тактических схемах в начале книги делает этот подход «DDD-light» очень распространенным,