12 | 领域建模:如何用事件风暴构建领域模型?
该思维导图由 AI 生成,仅供参考
- 深入了解
- 翻译
- 解释
- 总结
领域建模在微服务设计中扮演着至关重要的角色,而事件风暴作为一种团队活动方法,能够帮助团队快速分析和分解复杂的业务领域,完成领域建模。本文深入介绍了事件风暴的参与者、准备材料、场地和分析关注点,以及如何用事件风暴构建领域模型的过程。通过产品愿景和业务场景分析,事件风暴参与者可以将领域模型设计出来,为微服务的设计提供清晰的逻辑边界和物理边界。此外,文章还强调了领域建模的重要性,指出团队成员全员参与领域建模对于后续微服务设计与开发的帮助,并提出了对于初次学习DDD的开发人员可能存在的误解。文章以深入浅出的方式介绍了事件风暴的全过程,对于想要了解如何用事件风暴构建领域模型的读者来说,是一份有价值的技术指南。
《DDD 实战课》,新⼈⾸单¥59
全部留言(81)
- 最新
- 精选
- DwanDDD: 事件风暴--产品愿景--场景分析--领域建模--微服务拆分与设计。 传统: 产品需求--需求分析--详细设计--ER模型--UML设计 貌似最后都能产生模型图,一个叫领域模型,一个叫ER图,是不是关键就在这里,一个是面向业务领域建模,一个是面向底层数据层设计,也是DDD和传统的分水岭?
作者回复: 是这个意思。DDD领域建模优先,领域建模的时基本不考虑数据模型和数据库实现。在微服务具体落地的时候才考虑数据实体的设计。
2019-11-11648 - 伊来温有个问题请教下,商品的收藏功能,应该被划分在用户上下文呢还是商品上下文。感觉语意上两边都是通的
作者回复: 根据单一职责的设计原则,用户上下文应该只负责用户相关的管理职能。商品的收藏虽然跟用户关联,但应该属于商品上下文,商品上下文内可能会有商品目录聚合和商品收藏聚合等。在设计时,你可以将收藏的商品与用户ID建立关联就可以了,用户ID是值对象。用户登录时,可以根据用户ID查询到匹配的商品收藏清单。
2020-06-29615 - Harris个人理解领域建模的核心是识别出领域模型并做到“高内聚,低耦合”;最后一步微服务拆分与设计并不一定是一定要微服务,可以是一个模块、一个包等等。
作者回复: 是这样的,其实DDD刚出来的时候并不是为微服务设计的。你可以根据自己得需要,做好领域建模和划分好边界,刚开始并不一定要拆的很细,等真正需要拆分的时候再拆,用DDD设计的系统很容易解耦,很容易拆分出微服务来的。
2020-01-0510 - suke做微服务拆分为什么还要叫上产品、测试,和项目经理,他们的发言有用么 我就想问
作者回复: 领域建模的过程不光是建立一个领域模型,更关键的是建立团队通用语言的过程。所以需要团队成员尽早参与,后面开发和测试就会容易很多,也不会出现方向偏离。
2020-06-2749 - myking老师能不能用把ddd带入到rbac的实战设计里面去?我感觉这个和订单比起来设计到的聚合根的选择更复杂的多,比如是不是应该有userRole的聚合根、roleMenu的聚合根。事件有删除menu删除role等等。在这种情况下应该如何处理呢
作者回复: 这个需要根据您的业务场景来具体分析。我试着来分析一下。一般来说在用户权限体系里,会有User、Role等聚合,其中Role作为聚合根,会引用Menu实体,建立role的菜单权限体系。User和Role聚合主要用于管理用户以及角色等基础信息,比如用户的增删改查,删除Role中的菜单权限,删除Role等基本操作。 在进行用户权限配置时会有另外一个聚合UserRole,这个聚合的聚合根引用用户值对象和Role值对象,在这个聚合管理用户的角色权限配置,建立User和Role之间的关联。
2020-10-0758 - hunter看着这个划分的领域,完全不知道怎么落地。
作者回复: 有什么疑问,咱们可以谈讨哈。
2019-11-1468 - Tan欧老师好,请教个问题: 信贷风控系统,客户提交申请信息,根据客户信息查几十个第三方信息(征信报告、欺诈分、企查查...)来获取客户相关信息然后放到规则引擎跑规则,最后算出客户授信金额。感觉这个系统一时半会没发下手划分领域和子域,麻烦老师指点一下,谢谢!
作者回复: 你说的这个场景不是富领域模型,可能找不出聚合根,因此不适合用聚合的方式来做。但是你可以用DDD的分层架构来划分不同的服务,按照外层依赖内层服务的调用关系来开发。
2019-12-2336 - marker老师,能给我们说说四色建模或彩色建模?
作者回复: 这一块研究的还不太深入呢。后面我再研究一下。
2019-11-135 - 睁眼看世界老师,学习到这里还是云里雾里,感觉学了一大堆概念,有个DDD这个理念。公司一般都是需求驱动,很少会花费大量精力去领域建模。老师,请问你们具体是如何推动DDD落地的?
作者回复: 领域建模的目的是为了微服务的设计,领域模型是开始,DDD是一种不同于传统设计的方法 ,先有领域模型,然后才有微服务设计,这样设计的微服务边界很清晰,而不是靠拍脑袋设计微服务。等学完后面全部DDD的内容后,你就知道其中的奥秘了。
2019-11-1234 - Geek_75d94a学完感觉还是一脸懵逼,很多时候不知道哪些事件应该挂在哪个实体下面。像是一个团队里面,存在队长和队员,只有队长可以解散团队。那么解散团队这个操作,是放在团队实体上,还是队长实体上?
作者回复: 事件是独立的,一些操作发生后会产生事件,事件主要用于上下游业务的数据流转和领域模型和微服务解耦,不用挂到某个实体下面。团队的管理在聚合根,聚合根的有些职能会拿出来放到工厂和仓储里面,比如聚合实体的初始化,聚合数据的持久化。解散团队的操作当然在聚合根实体。
2020-07-092