DDD聚合的再一次定义 - Mathias Verraes

19-10-18 banq

聚合这个词语由于非常广泛且通用,有可能导致很多人无法抓住其中心要旨,著名领域设计专家Mathias Verraes对聚合重新进行了一次定义:

通过定义事务边界,并发边界和分发边界来强制一组相互关联的约束的一致性的架构模式。

         

2
fateson
2019-10-25 19:22

重新定义了还是不懂 。

banq
2019-10-28 10:28

聚合设计和发现的重点关键是以什么标准定义边界?

以事务或交易为边界设计,事务或交易英文都是transaction,交易是业务用词,事务是技术用词,如果业务上不重视交易设计,只能靠技术上事务机制完成,如ACID或2PC等,业务上重视交易边界就是重视一词交易过流程,在整个交易流程中有哪些环节点或能力片?例如,挑选商品,下单,支付,发货,收货这是电商系统的四个环节,整个是一个流程,每个环节其实是一个交易环节,也就是交易边界,也就是事务边界,也就是聚合点了。

事务边界注重的是单线流程、串行过程,还要注重并发并行过程,发现并发点在哪里,那里就是聚合点,本来大家是各走各的路,业务本来是各有各的流程,但是慢慢地一些流程汇聚到一起,如同在地铁站排队一样,地铁站成了汇聚点,汇聚的那个点就成了并发点,如果没有汇聚点,就没有并发点,也就没有并发,只有纯粹的并行了,大家还是各走各的路。

分发边界意味着一次构建 测试 发布的范围大小,如果整个系统几百兆的Jar包,肯定是单体糨糊了,这里有微服务概念在里面,按照团队经常需要修复 构建 发布而不影响其他功能的边界为划分依据,这样说明聚合自然在其中,否则你无法只发布这几个功能而不影响其他功能啊。

以上只是个人理解。