美文网首页
DDD笔记3:战术设计(运营域)

DDD笔记3:战术设计(运营域)

作者: 王侦 | 来源:发表于2023-03-19 19:20 被阅读0次

1.环境和周边系统说明

上下文交互:


内部鉴权:


建模工具

  • 便利贴
  • Miro
  • draw.io / processon

云:

  • 云主机
  • 消息队列
  • 大数据处理和可视化

2.领域事件

2.1 领域事件为什么重要

领域事件为什么重要

  • 领域事件能够驱动建模
  • 领域事件和很多重要思想相关
    CQRS
    Event Sourcing:事件溯源
  • 领域事件和大数据处理和分析相关

CQRS:

  • 就是把读模型和写模型分开
  • 读写模型之间的数据同步通过领域事件
CQRS

2.2 什么是领域事件

领域中发生的任何领域专家感兴趣的事情。

领域事件一般由聚合产生(不是绝对的)。

领域事件不是技术概念。

2.3 领域事件的基本属性

事件命名和基本属性

  • 命名方法:名称 + 动词的过去完成时 OrderCreatedEvent
  • 事件ID
  • 产生时间

2.4 领域事件的发布和订阅方式

发布和订阅方式

  • 外部系统
    API定向通知;
    API定时拉取;
    消息队列;
  • 内部系统
    观察者模式;
    数据库流水;
    消息队列;

2.5 领域事件的存储

事件存储

  • 直接使用消息中间件存储
    冗余机制
    做好备份
  • 基于数据库
    分布式
    按时间分区

2.6 事件处理的要求

事件处理的要求

  • 顺序性
    聚合ID
    存储分片
    消费分组
  • 幂等性(代替分布式事务)
    状态判断或去重

2.7 领域事件和大数据分析

3.事件风暴建模法

3.1 什么是事件风暴建模法

一种协作式的对复杂业务领域进行探索的讨论形式。

一种灵活易调整的轻量级的适用于DDD的建模方法。

3.2 事件风暴的应用场景

应用场景

  • 评估已有业务线的健康度并发现优化点
  • 探索一个新业务模型的可行性
  • 设想为各个参与方能带来最大利益的新服务
  • 设计整洁的可维护的软件以支持快速推进的业务

3.3 事件风暴的开展形式

核心词汇

  • 领域事件
  • 聚合
  • 决策命令
  • 角色
  • 读模型
  • 策略
  • 外部系统
  • 问题/热点

组织会议

  • 产品经理
  • 领域专家
  • 研发人员

准备工具

  • 便利贴
  • 白板/纸
  • 胶水/磁力贴

3.4 事件风暴的流程和构成元素

流程:

  • 列出主要领域事件
  • 收集关注点和问题
  • 通过命令深入领域
  • 找到聚合
  • 找出读模型
  • 策略
  • 外部系统

事件风暴的几个任务

  • Big Picture
  • 业务处理流程
  • 软件设计

高效事件风暴的注意事项

  • 首先关注学习和倾听
  • 谈话和例子很关键
  • 锚定到具体的业务用例
  • 澄清模糊概念

4.使用事件风暴建模法对运营域建模

领域事件

  • 售卖机信息已录入(运营人员,录入售卖机信息)
  • 点位已创建(运营人员,创建点位)
  • 投放订单已创建(运营人员,创建投放订单)
  • 投放订单已完成(外部系统:ERP)
  • 库存计划已创建(运营人员,创建库存计划)
  • 配送订单已创建(定时调度,创建配送订单)
  • 配送订单已完成(外部系统,配送中台)

聚合

  • 售卖机信息
  • 点位
  • 投放订单
  • 库存计划
  • 配送订单

读模型:

  • (配送订单)库存计划、售卖机信息、售卖机商品库存信息
  • (库存计划)点位信息、商品信息、销售报表
  • (投放订单)点位信息、售卖机信息

5.防腐层的构建

防腐层的作用:

  • 防止上游上下文的复杂和混乱扩展到下游上下文

VendingMachineInstallOrder
DevicePurchaseService售卖机投放(采购)服务
DevicePurchaseServiceImpl适配层

6.事件框架的实现和云上测试环境部署

事件框架

  • DomainEvent
  • DomainEventBus
  • DomainEventHandler

两个待解决问题

  • 事件存储
    Kafka
    一致性问题,Kafka也支持回滚,也可以放到最后
  • 事件顺序
    分组排序,提高并发性

7.使用阿里云大数据服务实现经营数据分析

7.1 大数据处理分析和DDD的关系

读模型大部分是由大数据处理系统生成的,比如销售报表。

7.2 整体流程和架构

7.3 数据生成

locust

7.4 数据集成和计算

7.5 数据可视化

Quick BI

参考

相关文章

  • 领域驱动设计: 构建你的代码蓝图

    战术设计 在DDD中,分两部分,战略设计和战术设计,战略设计很好的帮助我们理清问题域,划分服务,具体可参见: ht...

  • DDD落地过程中关于限界上下文的思考

    前言 DDD分为战略设计和战术设计,战略设计就是划分子域和限界上下文的过程。领域划分为子域的通用划分形式是把领域划...

  • 架构思维学习总结(十八)

    5-3 DDD之战略设计 一、战略和战术的区别 战略是目标和方向,战术是具体方法论同时战略和战术又是相对的,战略...

  • DDD 设计之服务端落地实践

    本篇内容来源于本人部门的开发经验总结--注者:廖同学 什么是 DDD DDD 全称领域驱动设计,分为战略设计和战术...

  • 架构思维学习总结(十九)

    5-3 DDD之战术设计 一、值对象和实体 Value object :从字面理解就是系统中对象的值,描述领域中...

  • DDD战术3 领域设计模型 I

    GitChat课程《领域驱动设计--战术篇》笔记,课程作者张逸 一.表达领域设计模型 1.企业应用架构中表达领域逻...

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

    DDD同时提供了战略和战术工具,来帮助你设计和实现高价值的软件。P1DDD的战略设计工具可以帮助你和团队做出最有竞...

  • 领域驱动设计读书笔记-术语介绍

    本文为极客时间《DDD实战》的读书笔记 DDD-基础 DDD基础介绍 微服务设计和拆分的困境 对于微服务的拆分粒度...

  • DDD战略2 领域知识

    GitChat课程《领域驱动设计--战略篇》笔记,课程作者张逸 一.DDD开发中团队的沟通与协作 DDD先要识别问...

  • DDD快速上手

    DDD,中文名为领域驱动设计,为业务开发中必不可少的指导方法论,本文以业务开发中战略设计和战术设计为例,将普通开发...

网友评论

      本文标题:DDD笔记3:战术设计(运营域)

      本文链接:https://www.haomeiwen.com/subject/vttyrdtx.html