Итак. Вы решили сделать что-то при помощи DDD. Вот ошибки с которыми вы сталкнетесь:
1. излишний акцент на "сущности" и недостаточное понимание что такое "bounded context". С этим прям буквально все сталкиваются. Винить в этом никого не надо (кроме Эванса за то что так акценты в книге расставил). Проблема тут - поскольку фокус внимания смещен на сущности и анализ крутится вокруг них, неизбежно будут появляться сущности типа "карзина", "заказ", "покупатель" и т.д. Проблема в том что все эти сущности существуют больше чем в одном контексте и очень быстро разбиение на модули не будет соблюдать SRP. Как следствие повышается связанность, снижается cohesion и такую систему становится достаточно дорого поддерживать (потому что сложность взаимосвязей элементов бизнес логики ничем не контролируется).
Когда кто-то вам говорит "у товара есть цвета" это не значит что цвета часть товара, это может значить что есть сущность "цвет" который "ссылается" (по айдишке а не по ссылке) на товар. Иначе все будет очень быстро пухнуть и нарушать все принципы проектирования.
2. Вы попали в заблуждение "DDD это ответ на вопросы как писать код". Распространенная ошибка, вызванная проф деформацией (мы ж разработчики, нам код писать надо). DDD это впервую очередь про процесс моделирования, а код это лишь средство. Оно дает вам набор инструментов которые применимы к коду (application level сервисы, anti-corruption layer-ы всякие) но упор надо делать на strategic domain design, который про моделирование. Который про то что бы искать зоны ответственности, субдомены, контексты, как перенести это все в модули вашего проекта. Единый язык в конце концов, семантическое ядро, какой смысл термины имеют (в том числе в разных контекстах)
Есть много технический особенностей которые делают имплементацию сильно разной. Если у вас колаборативный домен, вы можете делать там всякие CQRS/Saga/Aggregates/Eventual Consistency а можете делать локи и по старинке. Все это допустимо и исходит больше от нефункциональных требований.
3. Мы идем в DDD не разобравшись с базовыми вещами при проектировании систем - coupling/cohesion - важно поскольку позволит проще понимать все ок или не ок (вот ваш вопрос как раз про это). Information hiding - очень важно понимать что бы проще было разобраться что такое под-домены/bounded context. Можно еще добавить к этому скажем распределенные системы (всякие микросервисы) и тогда пласт необходимых знаний становтся еще больше. DDD тут лишь поможет соединить технические штуки и исследование предметной области.
4. Мы хотим в DDD но у нас нет доменных экспертов, мы сами плохо понимаем домен и процессы которые происходят у бизнеса (скажем смотрим только с позиции покупателя игнорируя бэкофисы всякие и в целом плохо понимаем value chain).