跳转到主要内容

标签: DDD

  • 在银行客户信息系统(ECIF)里落地 DDD 聚合

    发布于 架构专栏

    架构DDD领域驱动设计ECIF聚合

    ECIF 里「客户」的概念极其庞大:个人、对公、同业,各自的属性、关系、生命周期都不同。如果用一个巨大的 Customer 实体硬扛,代码会迅速腐化。 用界限上下文切分 把客户拆成几个界限上下文: 客户主数据(Party):统一的自然人/机构标识与基础属性。 客户画像(Profile):风险偏好、营销标签,读写频率高、变化快。 客户关系(Relationship):持股、担保、集团关系。 聚合根怎么定 每个上下文内部再定聚合根。例如 Party 上下文里,Party 是聚合根 …

    ECIF 里「客户」的概念极其庞大:个人、对公、同业,各自的属性、关系、生命周期都不同。如果用一个巨大的 Customer 实体硬扛,代码会迅速腐化。 用界限上下文切分 把客户拆成几个界限上下文: 客户主数据(Party):统一的自然人/机构标识与基础属性。 客户画像(Profile):风险偏好、营销标签,读写频率高、变化快。 客户关系(Relationship):持股、担保、集团关系。 聚合根怎么定 每个上下文内部再定聚合根。例如 Party 上下文里,Party 是聚合根 …

  • 《领域驱动设计》读书笔记

    发布于 博客 66 字 1 分钟

    DDD读书笔记领域建模

    这本书我读过三遍。第一遍在工作两年时,只记住了实体、值对象、聚合这几个名词;第二遍在做核心重构时,才发现前面几章才是重点;第三遍是带团队时读的,读出来的东西又不一样。 这本书真正的价值 大部分人把它当模式手册用,翻到"聚合"那一节抄个定义就开始设计。但 Evans 花了整本书篇幅想说的其实是一件事:软件设计的瓶颈是知识,不是技术。 模型不是画出来的,是在和业务专家反复对话中"长"出来的。书里那些模式只是长出来之后用于表达的工具。工具本身不产生知识。 一个团队如果没有和业务专家持续对话的机制,那么 …

    这本书我读过三遍。第一遍在工作两年时,只记住了实体、值对象、聚合这几个名词;第二遍在做核心重构时,才发现前面几章才是重点;第三遍是带团队时读的,读出来的东西又不一样。 这本书真正的价值 大部分人把它当模式手册用,翻到"聚合"那一节抄个定义就开始设计。但 Evans 花了整本书篇幅想说的其实是一件事:软件设计的瓶颈是知识,不是技术。 模型不是画出来的,是在和业务专家反复对话中"长"出来的。书里那些模式只是长出来之后用于表达的工具。工具本身不产生知识。 一个团队如果没有和业务专家持续对话的机制,那么 …

  • 聚合根与领域事件:DDD 战术建模

    发布于 架构专栏

    DDD聚合根领域事件战术设计

    银行核心系统里最容易被低估的概念,是「聚合」。很多人把 DDD 战术设计理解成「给实体加几个注解」,结果聚合越写越大,事务越来越长,最后把数据库和团队都拖垮。本文把聚合根和领域事件放回它们本来的位置:一致性边界的设计工具,以及领域向外界发声的窗口。 为什么需要聚合 领域模型不是一张 ER 图。ER 图关心「数据怎么存」,聚合关心「哪些数据必须在同一个事务里保持一致」。这两件事经常错位,而错位的代价在金融场景里格外昂贵——账务不平、状态错乱,往往不是因为算法错,而是因为一致性边界划错了。 一致性边 …

    银行核心系统里最容易被低估的概念,是「聚合」。很多人把 DDD 战术设计理解成「给实体加几个注解」,结果聚合越写越大,事务越来越长,最后把数据库和团队都拖垮。本文把聚合根和领域事件放回它们本来的位置:一致性边界的设计工具,以及领域向外界发声的窗口。 为什么需要聚合 领域模型不是一张 ER 图。ER 图关心「数据怎么存」,聚合关心「哪些数据必须在同一个事务里保持一致」。这两件事经常错位,而错位的代价在金融场景里格外昂贵——账务不平、状态错乱,往往不是因为算法错,而是因为一致性边界划错了。 一致性边 …

  • DDD 在银行核心系统的落地实践

    发布于 博客 373 字 2 分钟

    DDD银行核心架构领域建模

    银行核心系统是一类很特殊的软件:它的业务规则几十年没怎么变,但承载它的代码每隔七八年就要重写一次。我参与过一次核心的部分重构,也旁观过一次彻底失败的重写。DDD 在这两次里都被提过,但只有一次真的起了作用。这篇把我认为有效的部分和纯属自我感动的部分分开写。 为什么银行核心需要 DDD 老核心的问题从来不是技术栈老。COBOL 写的联机交易照样能扛住每秒几千笔。真正的问题是:业务知识只存在于少数几个人的脑子里,代码里找不到对应的表达。 一段典型的老代码长这样:把交易码、账户类型、产品编号、机构号混 …

    银行核心系统是一类很特殊的软件:它的业务规则几十年没怎么变,但承载它的代码每隔七八年就要重写一次。我参与过一次核心的部分重构,也旁观过一次彻底失败的重写。DDD 在这两次里都被提过,但只有一次真的起了作用。这篇把我认为有效的部分和纯属自我感动的部分分开写。 为什么银行核心需要 DDD 老核心的问题从来不是技术栈老。COBOL 写的联机交易照样能扛住每秒几千笔。真正的问题是:业务知识只存在于少数几个人的脑子里,代码里找不到对应的表达。 一段典型的老代码长这样:把交易码、账户类型、产品编号、机构号混 …