tgoop.com/emacsway_log/1152
Last Update:
Классическая ошибка при моделировании Bounded Context (BC), Microservice, Aggregate заключается в том, что при неправильном понимании модели возникает желание запихнуть модель объекта моделирования в какой-то один BC.
Два самых неправильных вопроса - в какой BC поместить сущность и как мне получить из другого BC нужную сущность.
Моделирование BC - это не кройка. Плод, груз, ингредиент, блюдо - это все модели одного и того же объекта моделирования - огурца, только в разных BC. Думайте о BC как о плоскости додекаэдра (когда один и тот же элемент виден под разными углами с разных плоскостей додекаэдра), а не как о фрагменте пазла (когда один элемент может принадлежать только одному фрагменту полотна). Задача не в том, в какой BC запихнуть, и не в том, как разрезать, а в том, какие именно аспекты поведения объекта моделирования релевантны в контексте решаемой проблемы текущего BC. Посетитель, пользователь, клиент, покупатель, плательщик, получатель, адресат - это все тоже модели одного и того же объекта моделирования.
Как сказал Alberto Brandolini:
💬 Different wording may refer to different perspectives on the same event, hinting that this might be relevant in more than one Bounded Context, or that the two or more events aren’t the same thing.
-- Introducing EventStorming
То же касается и агрегатов. Самый неправильный вопрос - "у меня один агрегат зависит от другого, можно ли их объединить в один агрегат..."
Вот агрегат ProductBacklogItem:
https://github.com/VaughnVernon/IDDD_Samples/blob/master/iddd_agilepm/src/main/java/com/saasovation/agilepm/domain/model/product/ProductBacklogItem.java
А вот сущность CommittedBacklogItem агрегата Sprint:
https://github.com/VaughnVernon/IDDD_Samples/blob/master/iddd_agilepm/src/main/java/com/saasovation/agilepm/domain/model/product/sprint/CommittedBacklogItem.java
И первый, и второй моделируют один и тот же объект. Только в первом случае - агрегат, во втором - сущность иного агрегата.
#DDD
BY emacsway-log: Software Design, Clean Architecture, DDD, Microservice Architecture, Distributed Systems, XP, Agile, etc.
Share with your friend now:
tgoop.com/emacsway_log/1152