知识卡片
产品聚类分析:借生物分类学思路化解"千种产品"的建模难题
内容
当一个业务领域里存在成百上千个业务对象、彼此之间”流程相似但属性和逻辑有差异”时(如保险集团旗下上千种保险产品,承保流程都是投保→报价→核保→缴费→出单,但不同险种的保障标的、录入要素、保费计算规则各不相同),常见的两个极端做法都行不通:把所有对象塞进一个共享领域模型,会造出一个充满if-else分支判断、表关联盘根错节的高耦合大单体;给每个对象都建一个独立领域模型,又会导致领域模型和微服务数量爆炸式增长,出现过度拆分。折中方案借用了生物分类学的思路:桃树、李树、苹果树的知识体系骨架都是根、茎、叶、花、果实、种子,但具体到某一物种,这些部位的属性和特征却互不相同——这与”投保单、保单、录单、报价、核保”这套骨架适用于所有保险产品,但每个产品的具体属性和业务规则各不相同是同一个结构。分两步落地:第一步做产品聚类分析,按产品类别、适用场景、保障标的、产品属性、业务逻辑等维度的相似性,把差异极小、几乎可以直接共用同一套属性和逻辑的产品聚成若干产品集合,而不是按产品本身的数量一一对应;第二步以产品集合(而非单个产品)为单位构建领域模型,综合集合内所有产品的业务场景,提炼公共实体、聚合和限界上下文,做抽象和标准化处理。这样每个领域模型职责单一、内部业务逻辑一致,同时领域模型和微服务的总数被控制在可控范围内,是任何”存在大量结构相似但细节有差异的业务对象”场景都可以复用的通用建模策略,不局限于保险行业。
参考来源
- 位置:第22章《中台战略下的保险订单化设计》"22.4.2 核心能力中台"(源文件:_epub-src/OEBPS/Text/chapter6-1-4-2.xhtml)
- 结论依据:原文说明"我们可以对不同的保险产品进行聚类分析,分两步来构建保险产品的承保业务中台领域模型……第一步,对产品进行聚类分析,找出领域模型相似的产品集……第二步,以产品集合为单位构建领域模型",并用桃树、李树、苹果树"知识体系的内部结构基本是一致的,但具体到桃树或李树,它们同一个子域的内部知识体系却是不同的"作为类比支撑,直接对应本卡片结论。
- 原始内容:我们仍然可以参考生物分类学的方法,为纷繁复杂的保险产品完成领域建模……第一步,对产品进行聚类分析,找出领域模型相似的产品集……第二步,以产品集合为单位构建领域模型……这样,领域模型和微服务也会相对稳定,不太容易受其他产品变化的影响。在兼顾不同产品领域模型差异的同时,又可以根据业务领域的相似性而控制领域模型的数量,不至于出现微服务过度拆分的问题。