《DDD实战》读书笔记六(事件风暴)

本文介绍了一种名为事件风暴的领域驱动设计(DDD)方法,通过团队协作快速构建领域模型。文章详细解释了准备工作、参与者角色、所需材料及场地要求,并介绍了如何通过分析命令、事件来提炼领域对象,进而构建领域模型。
摘要由CSDN通过智能技术生成

概述

  • 事件风暴是一项团队活动,领域专家与项目团队通过头脑风暴的形式,罗列出领域中所有的领域事件,整合之后形成最终的领域事件集合,然后对每一个事件,标注出导致该事件的命令,再为每一个事件标注出命令发起方的角色
  • 命令可以是用户发起,也可以是第三方系统调用或定时器触发等,最后对事件进行分类,整理出实体、聚合、聚合根及限界上下文。

准备

参与者

  • 事件风暴采用工作坊的方式,将项目团队和领域专家聚集在一起,通过可视化、高互动的方式一步一步将领域模型设计出来。
  • 参与者包括领域专家,DDD专家,架构师,产品经理,项目经理,开发人员和测试人员等项目团队成员。

准备材料

  • 事件风暴参与者会将自己的想法和意见写在即时贴上,并将贴纸贴在墙上的合适位置,这个过程称为“刷墙”。所以需要即时贴、水笔、胶带或磁扣。
  • 在这个过程中,用不同的颜色贴纸区分领域行为,我们用蓝色表示命令,绿色表示实体,橙色表示领域事件,黄色表示补充信息。
  • 补充信息用来说明注意事项,比如外部依赖等。
    在这里插入图片描述

场地

  • 只需要一堵足够长的墙和足够大的控件就可以,墙是用来贴纸的,大空间可以让人四处走动,方便合作。
  • 事件风暴的发明者曾经建议准备8米长的墙,这个是非必要条件,根据实际条件即可。

分析关注点

  • 在领域建模的过程中,我们需要重点关注这类业务语言和行为。如:某些业务动作或行为(事件)是否触发下一个业务动作,这个动作(事件)的输入和输出是什么?是谁(实体)发出的什么动作(命令),触发这个动作(事件)。从这些暗藏的词汇中分析出领域模型的事件、命令或实体等领域对象。

如何构建领域模型

  • 领域建模过程主要包括产品愿景、业务场景分析、领域建模和微服务拆分与设计这几个重要阶段。

产品愿景

  • 产品愿景的主要目的是对产品顶层价值的设计,是产品目标用户、核心价值、差异化竞争点等信息达成一致,避免产品偏离方向。
  • 建模之前,项目团队需要考虑两点:
    – 用户中台到底能做什么
    – 它的业务范围、目标用户、核心价值和愿景,与其他同类产品的差异和优势在哪里。
  • 参与者对每一个发表意见,用水笔写在贴纸上,写完贴在黄色贴纸位置。
    在这里插入图片描述

业务场景分析

  • 场景分析是从用户视角出发,根据业务流程或用户旅程,采用用例和场景分析,探索领域中的典型场景,找出领域事件、实体和命令等领域对象,支撑领域建模。事件风暴参与者要尽可能遍历所有业务细节,充分发表意见,不要遗漏业务要点。
  • 场景分析时会产生很多命令和领域事件。蓝色表示命令,橙色表示领域事件,黄色表示补充信息。
    在这里插入图片描述

领域建模

  • 领域建模时,根据场景分析中产生的领域对象,如命令、事件等之间的关系,找出产生命令的实体,分析实体间的依赖关系组成聚合,为聚合划定限界上下文,建立领域模型及模型间依赖。
  • 领域模型利用限界上下文向上可以指导微服务设计,通过聚合向下可以指导聚合根、实体和值对象的设计。

具体可以分为以下三步

  • 从命令和事件中提取产生这些行为的实体。用绿色表示实体。
    在这里插入图片描述

  • 根据聚合根的管理性质从七个实体中找出聚合根

  • 划定限界上下文,根据上下文语义将聚合归类。
    在这里插入图片描述

  • 领域建模过程中产生的领域对象太多,可以借助表格记录。
    在这里插入图片描述

微服务拆分与设计

  • 原则上一个领域模型可以设计为一个微服务,但是由于领域建模只考虑业务因素,没考虑微服务落地的技术、团队及运行环境等非业务因素。因此在微服务拆分与设计时,不能简单的将领域模型作为拆分微服务的唯一标准,只能作为微服务拆分的重要依据。
  • 微服务设计还需要考虑服务的粒度、分层、边界划分、依赖关系和集成关系,除考虑业务单一职责外,还要考虑将敏度与稳态业务的分离、非功能性需求(如弹性伸缩要求、安全性等要求)、团队组织和沟通效率、软件包大小及技术异构等非业务因素。

总结

  • 事件风暴是一种不同于传统需求分析和系统设计的方法,一般一个中型规模的项目,建模时间大概两周左右,如果建模过程中,团队成员都参与,在项目开发前就建立共同语言,对后续的设计开发有帮助,时间成本可以视情况降低。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值