在探讨DDD的兴起原因及其与微服务的关系时,我们曾以研究桃树为例进行说明。若要深入研究桃树,我们可以将其根据器官细分为根、茎、叶、花、果实、种子等部分,每一部分均可视为一个研究领域,而这些领域还有更具体的细分,如子域、核心域、通用域和支撑域等。下面我们将回顾这个桃树研究的例子。
请看上述图示,若将研究桃树视作我们的业务任务,那么如何能更高效地开展这项研究呢?让我们回忆一下初中课本中的研究方法:
第一步:明确我们的研究对象,即我们要研究的领域。在此例中,研究对象即为桃树。
第二步:依据研究对象的某些特性进行进一步的拆分。例如,我们可以按照桃树的器官进行拆分,其中器官又可细分为营养器官与器官。营养器官包括根、茎、叶,而器官则包含花、果实、种子,这些细分的部分构成了我们需要研究的子域。
第三步:对子域进行更深入的划分。我们可以找出其中的核心域、通用域和支撑域。虽然暂时不详细解释为何要如此划分,但当我们找到核心域后,我们会在各个子域中进一步细分,例如划分为不同的,如保护、营养、疏导等。这也可以理解为将领域进一步细分为子域的过程。
第四步:对进行更细致的划分,直至细胞级别,如细胞、导管细胞等。
关于是否需要继续拆分至细胞级别,这取决于我们研究的业务需求。在过去的显微镜时代,研究到细胞级别便告一段落。对于其他业务,研究到某一阶段后也不再需要继续拆分。而这个最小层次的领域,我们通常称之为实体、聚合根、实体等概念。这些内容我们将在后续的讨论中深入理解。
接下来,让我们简要解释一下前面提到的几个关键概念:
领域:通常指的是业务的某个特定部分。以电商为例,其销售部分、物流部分和供应链部分等均可视为不同的领域。领域的主要作用是界定问题范围。在DDD中,我们会将问题范围限定在特定的边界内,建立领域模型,并通过代码实现该模型以解决相应的业务问题。简而言之,DDD中的领域即是在此边界内要解决的业务问题域。
子域:是一个相对的概念。当我们对领域进行更深入的划分时,便形成了子域。甚至可以对子域继续划分,形成更细的子域。以研究植物为例,若研究对象是桃树,那么其器官如根、茎、叶等可视为领域。但如果我们希望深入研究果实的内部结构或细胞层面,那么我们就进入了果实的子域、的子域。
核心域:是所有领域中最关键的部分。对于业务而言,核心域是企业竞争力的核心和创造利润的关键因素。例如在电商领域中,无论面向B2B还是B2C或PDD等模式,销售系统始终是其中的核心模块。
其他如通用域和支撑域的概念也各有其特定的含义和作用。虽然这些名词在实际的微服务设计和开发过程中可能不直接使用,但它们有助于我们理解DDD的核心设计理念和理念。这些思想和理念在实际的IT战略设计、业务建模和微服务设计上均有其借鉴价值。
须知,对于桃树这一例子中的各个领域或子域的划分并非唯一或固定不变的。不同的人从不同的角度和理解可能会有不同的划分结果。例如,果农、景区管理员和林场工作人员对同一棵桃树的关注点会有所不同。在实际业务开发中,我们需要通过讨论确定核心域,确保团队成员的理解一致。这样做的好处在于可以确保资源和精力更多地投入到关键的业务领域中。
对于企业而言,识别核心域并对其进行重点投入是至关重要的。理解和区分通用域和支撑域也有助于我们更有效地分配资源和制定建设策略。通过领域划分来区分不同子域的功能属性和重要性是企业成功的重要因素之一。
希望以上解释能帮助您更深入地理解DDD及其与微服务的关系。