领域 子域 核心域 通用域 支撑域
领域 用来确定范围(模糊的范围),范围即是边界,DDD 的领域就是这个边界内要解决的业务问题域。
领域在拆分就是子域 子域对应更小的问题域或更小的业务范围
子域可以根据自身重要性和功能属性划分为三类子域,它们分别是:核心域、通用域和支撑域
核心域:决定产品和公司核心竞争力的子域,它是业务成功的主要因素和公司的核心竞争力。结合商业模式+战略而定。
通用域:没有太多个性化的诉求,同时被多个子域使用的通用功能子域。
支撑域:必需但既不包含决定产品和公司核心竞争力的功能,也不包含通用功能的子域。
核心域 对应价值流中的基本活动 , 通用域和支撑域对应支持流程
1:确定研究对象,也就是研究领域,如一颗桃树
2:对研究对象进行细分 将桃树细分为器官
3:对器官进行细分 将器官细分为组织
4:对组织进行细分 组织细分为细胞
拿保险行业举例:
根据业务关联度以及流程边界将保险领域细分为:承保、收付、再保以及理赔等子域,而承保子域还可以继续细分为投保、保全(寿险)、批改(财险)等子子域。
在投保这个限界上下文内可以建立投保的领域模型,投保的领域模型最后映射到系统就是投保微服务。这就是一个保险领域的细分和微服务的建设过程。
领域建模和微服务建设的过程和方法基本类似,其核心思想就是将问题域逐步分解,降低业务理解和系统实现的复杂度。
域可以拆分为多个子领域。一个领域相当于一个问题域,领域拆分为子域的过程就是大问题拆分为小问题的过程。在这个图里面保险领域被拆分为:投保、支付、保单管理和理赔四个子域。
子域还可根据需要进一步拆分为子子域,比如,支付子域可继续拆分为收款和付款子子域。拆到一定程度后,有些子子域的领域边界就可能变成限界上下文的边界了。
理论上限界上下文就是微服务的边界。我们将限界上下文内的领域模型映射到微服务,就完成了从问题域到软件的解决方案。