个人对领域驱动设计(DDD)的一点小思考

2021-6-7 / 0评 / 心路历程

领域驱动设计概念的提出者和布道者Eric在《领域驱动设计》一书中告诉我们:
正真强大的领域模型是随着时间演进的,即便是最有经验的建模人员,往往也是在他们系统的初始版本完成之后才有了最好的想法(即领域模型)。

领域驱动设计的目标是通过关注领域模型(而不是技术)来创建更好的软件,领域模型是Big Business System的一系列概念的集合。
大部分系统或应用程序最主要的复杂性并不在技术上,而是来自领域本身,即用户的活动或业务逻辑。
当这种复杂性在设计中没有得到很好的解决时,基础技术的构思再完美,再天花乱坠也无济于事,技术本质是支撑和服务系统核心业务逻辑的。
没有业务及场景支撑的技术再强大也是空中楼阁。
成功设计的系统必须考虑软件的“领域设计”这个核心方面:
(1)大多数软件项目中,焦点主要应该聚齐在领域和领域逻辑上。
(2)复杂的领域设计应该基于模型。
领域驱动设计是一种思维方式,是一组系统开发前需要优先完成的任务,它旨在加速那些必须处理复杂领域软件项目的开发。

一个对象从创建到存储再到删除,是这个领域对象的整个生命周期。
领域对象在自己的整个生命周期中要维护自己的完整性,防止模型陷入管理生命周期复杂性造成的困境中。
一个系统设计的关键是:找到该系统领域的深层次含义模型,把那些隐藏的、隐式的、抽象的概念转变为显性的、可理解的显式的概念。
领域建模和领域设计是在随着系统不断的向前演进的,以使的刚刚开始设计的系统不要被过渡的设计导致系统过早的退化,系统要不断的使用新知识来改进系统的模型和设计。
使得系统的建模和设计将不会停滞不前。

我之前以为自己对电商系统有自己的理解了,知道了啥是 用户系统,订单系统,库存系统,仓储系统,物流系统。。。等等简单的理解。直到2刷Eric的《领域驱动设计》,发现我很早以前就没有真正的理解电子商务系统的核心领域是什么
在我再次读Eric的领域设计,重新在看的过程中,才无意间理解了:
电子商务应用系统的核心领域就是帮助客户如何快速的提高货物的销售量,利用大数据技术提前预测大促前或平时产品的销售趋势,供客户和商家能够很好的做好产品的生产。
所有我们开发的电商 客户系统,订单系统,库存系统,仓储系统等等的都不过是为了支持怎样才能够提高货物销售量过程中的支撑工具(即工具人角色)。

领域驱动设计思想的设计思路就是:
从领域出发,先划分子领域,然后再从子领域中抽象出界定的上下文以及上下文中的模型。
每个领域边界界定的上下文都对应着一个微服务。

核心领域是软件系统存在的价值所在,也是设计软件系统的起点。

比如我们平时常用的滴滴打车。
滴滴打车的核心领域就是:
如何在需要叫车的乘客和提供出行服务的司机之间,进行快速的匹配。

用户创建行程,派发给司机,司机接单后,系统选中一个司机派发行程。
因此滴滴打车的核心领域就是 派发行程。那么打车软件的核心领域就是 行程派发

所以在划分微服务时对领域的深层理解是至关重要的。

本文共计 3609 字,感谢您的耐心浏览与评论。

声明:土豆丝不辣|版权所有,违者必究|如未注明,均为原创|转载请注明原文链接说明出处

0条回应:“个人对领域驱动设计(DDD)的一点小思考”