领域驱动设计:DDD重构中台业务模型

2023-11-18

如何避免重复造轮子?

  • 要避免重复建设,就要理解中台的理念和思想。“中台是企业级能力复用平台”,“复用”用白话说就是重复使用,就是要避免重复造轮子的事情。
  • 中台的设计思想与“高内聚、低耦合”的设计原则是高度一致的。高内聚是把相关的业务行为聚集在一起,把不相关的行为放在其它地方,如果你要修改某个业务行为,只需要修改一处。中台就是要这样做,按照“高内聚、松耦合”的原则,实现企业级的能力复用!
  • 你需要站在企业高度,将重复的需要共享的通用能力、核心能力沉淀到中台,将分离的业务能力重组为完整的业务板块,构建可复用的中台业务模型。前端个性能力归前端,后端管理能力归后台。建立前、中、后台边界清晰,融合协作的企业级可复用的业务模型。

如何构建中台业务模型?

  • 可以用 DDD 领域建模的方法来构建中台业务模型。你可以选择两种建模策略:自顶向下和自底向上的策略。具体采用哪种策略,需要结合具体情况来分析。

自顶向下的策略

  • 第一种策略是自顶向下。这种策略是先做顶层设计,从最高领域逐级分解为中台,分别建立领域模型,根据业务属性分为通用中台或核心中台。领域建模过程主要基于业务现状,暂时不考虑系统现状。自顶向下的策略适用于全新的应用系统建设,或旧系统推倒重建的情况
  • 由于这种策略不必受限于现有系统,你可以用 DDD 领域逐级分解的领域建模方法。从下面这张图我们可以看出它的主要步骤:第一步是将领域分解为子域,子域可以分为核心域、通用域和支撑域;第二步是对子域建模,划分领域边界,建立领域模型和限界上下文;第三步则是根据限界上下文进行微服务设计。

在这里插入图片描述
自底向上的策略

  • 第二种策略是自底向上。这种策略是基于业务和系统现状完成领域建模。首先分别完成系统所在业务域的领域建模;然后对齐业务域,找出具有同类或相似业务功能的领域模型,对比分析领域模型的差异,重组领域对象,重构领域模型。这个过程会沉淀公共和复用的业务能力,会将分散的业务模型整合。自底向上策略适用于遗留系统业务模型的演进式重构

以互联网电商和传统核心应用的几个典型业务域为例,了解具体如何采用自底向上的策略来构建中台业务模型,主要分为这样三个步骤。

  • 第一步:锁定系统所在业务域,构建领域模型。
    • 锁定系统所在的业务域,采用事件风暴,找出领域对象,构建聚合,划分限界上下文,建立领域模型。看一下下面这张图,我们选取了传统核心应用的用户、客户、传统收付和承保四个业务域以及互联网电商业务域,共计五个业务域来完成领域建模。
    • 从下面这张图中,我们可以看到传统核心共构建了八个领域模型。其中用户域构建了用户认证和权限两个领域模型,客户域构建了个人和团体两个领域模型,传统收付构建了 POS 刷卡领域模型,承保域构建了定报价、投保和保单管理三个领域模型。互联网电商构建了报价、投保、订单、客户、用户认证和移动收付六个领域模型。
    • 在这些领域模型的清单里,我们可以看到二者之间有很多名称相似的领域模型。深入分析后会发现,这些名称相似的领域模型存在业务能力重复,或者业务职能分散(比如移动支付和传统支付)的问题。那在构建中台业务模型时,你就需要重点关注它们,将这些不同领域模型中重复的业务能力沉淀到中台业务模型中,将分散的领域模型整合到统一的中台业务模型中,对外提供统一的共享的中台服务。

在这里插入图片描述

  • 第二步:对齐业务域,构建中台业务模型。
    • 在下面这张图里,你可以看到右侧的传统核心领域模型明显多于左侧的互联网电商,那我们是不是就可以得出一个初步的结论:传统核心面向企业内大部分应用,大而全,领域模型相对完备,而互联网电商面向单一渠道,领域模型相对单一。
    • 这个结论也给我们指明了一个方向:首先我们可以将传统核心的领域模型作为主领域模型,将互联网电商领域模型作为辅助模型来构建中台业务模型。然后再将互联网电商中重复的能力沉淀到传统核心的领域模型中,只保留自己的个性能力,比如订单。中台业务建模时,既要关注领域模型的完备性,也要关注不同渠道敏捷响应市场的要求。

构建多业务域的中台业务模型的过程,就是找出同一业务域内所有同类业务的领域模型,对比分析域内领域模型和聚合的差异和共同点,打破原有的模型,完成新的中台业务模型重组或归并的过程。

业务域重构后的中台业务模型

  • 第三步:中台归类,根据领域模型设计微服务。
    • 完成中台业务建模后,我们就有了下面这张图。从这张图中我们可以看到总共构建了多少个中台,中台下面有哪些领域模型,哪些中台是通用中台,哪些中台是核心中台,中台的基本信息等等,都一目了然。你根据中台下的领域模型就可以设计微服务了。
      在这里插入图片描述

你知道的越多,你不知道的越多。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

领域驱动设计:DDD重构中台业务模型 的相关文章

  • C++多线程:创建线程

    C 中线程的创建一般是通过std thread类实现的 具体的实现方式有以下几种 1 使用函数名创建 void pcreat int a cout lt lt start lt lt a lt lt endl int main thread

随机推荐

  • advisor2002仿真参数界面grade options不弹出设定窗口

    针对这种问题 解决办法如下 第一步 找到advisor2002安装路径 然后找到 advisor2002 gui gradefig m文件和gradefig mat文件 把gradefig m文件名改为GradeFig m再把gradefi
  • AD账号导入--dsadd user

    Microsoft Windows AD账号全命令方式操作 导入一 AD 叫active directory 中文活动目录 其实是一个数据库 下面将介绍以数据库方式操作AD 对象二 AD对象操作有如下 1 新建一个对象 用 dsadd
  • windows如何查看最近打开的文件及文件夹?

    按住win R快捷键 输入recent 即可看到最近打开的文件
  • C语言的每日一题(一)

    前言 今天开始 我将开启我的每日一题之路 作者 一颗带有痣的毛 期待你的关注 一 三位数反转 题目 输入一个三位数 分离出它的百位 十位和个位 反转后输入 样例输入 127 样例输出 721 首先我们来分析一下这一题的思路 这一题的主要思路
  • 九鼎Study210嵌入式开发板刷机笔记

    本刷机笔记是基于S5PV210的九鼎Study210嵌入式开发板 准备 电脑通过串口线连接到开发板的UART2 靠近电源 与裸机不同 usb线连接到开发板OTG端口 开发板接入电源 串口助手打开 开机 只要连接成功 无论开发板是否启动了ub
  • Android系统控件使用的踩坑日志

    1 ListView在乐视 三星手机上出现崩溃 修复listview在部分手机上崩溃 java lang IndexOutOfBoundsException Invalid index 0 size is 0 at java util Ar
  • 【ARM 常见汇编指令学习 3 -- ARM64 无符号位域提取指令 UBFX】

    文章目录 ARM64 无符号位域提取指令 上篇文章 ARM 常见汇编指令学习 2 存储指令 STP 与 LDP 下篇文章 ARM 常见汇编指令学习 4 ARM64 比较指令 cbnz 与 b ne 区别 ARM64 无符号位域提取指令 在代
  • 图片上传提交前,图片显示在页面上

    lt div class upload box gt lt b gt 上传图片 lt input type file name file id file accept image onchange imgChange this gt lt
  • MMSegmentation笔记07:使用MMDeploy部署

    1 安装MMDeploy 首先要安装MMDeploy库 直接在对应环境下执行命令 pip install mmdeploy 1 2 0 然后在对应项目下安装MMDeploy源码 在cmd中执行 git clone https github
  • 求建议:二本计算机专业,考研还是就业做开发?

    安老师好 我是一个大连某二本院校的在读生 专业是计算机 日语强化 上大学以来一直关注着您的公众号 读了很多您的文章 学到很多东西 也受到过您的鼓舞 随您一同成长进步 目前我已是大三下 站在第二个人生岔路口 正为各种浮在空中的想法烦恼不已 身
  • C++ 读取文件和写入文件

    C 读取文件 有两种方式可以实现读文件的功能 第一种 用fread实现 这种方法适合读取各种结构化的数据包 include
  • 良心推荐:12个免费学习网站,赶紧收藏

    01 Oeasy http oeasy org Oeasy 是一个完全免费的综合视频教程网站 非常良心实用 它提供的视频教程非常丰富并且质量很高 包括 PS 教程 手机摄影教程 Ai 做图教程 Excel 教程 Word 教程 PPT 教程
  • python 安装第三方库,超时报错--Read timed out.(安装numpy时会出现)

    近期在安装numpy时 总是会出现Read timed out这个错误 经查是由于python在安装三方库时设置的时间限制 一般我们使用的命令为 pip install XXXX XXXX为你即将要安装的三方库 此时可能会出现以下错误 Re
  • 解决OpenCV重装后Python下import cv2错误问题(Ubuntu系统)

    本文是博主解决问题过程中所产生的一些想法 分享出来 希望能帮到一些朋友 不足之处 还望各位大佬不吝赐教 前提 博主在Ubuntu服务器上安装了OpenCV4 0版本 Python环境下可以运行 如图1 某天在部署YOLO3的时候 程序跳出e
  • git 错误error: failed to push some refs to

    今天使用VSCODE 学习node js 想在git上push代码 于是在git上建立了一个私有的长裤 连接后push代码时提示如下错误 error failed to push some refs to git github com Up
  • 树型权限管理插件:jQuery Tree Multiselect详细使用指南

    树型权限管理插件 jQuery Tree Multiselect详细使用指南 1 认识jQuery Tree Multiselect 这个插件允许用户以树型的形式来呈现列表复选框的选择 多用于权限管理中用于分配不同的权限 使用文档 请参考
  • unity2D横版游戏教程-1 让人物动起来

    在看完了麦扣老师的小狐狸的视频后 为了巩固练习 我另外找一个素材包来练手 顺便写成一个教程让自己更加熟练 同时当自己遗忘时可以回头查阅 另外 这个教程我写的非常详细 萌新也可以学习 有什么不对的地方或者有疑问的地方 欢迎指正和咨询 首先导入
  • python可视化——matplotlib画图颜色控制

    这里cd整理了python中matplotlib库中color可用的颜色 之前有人整理的是图片版 实际用的时候不怎么方便 因策这里整理了表格 颜色可以选择 方便使用 关于matplotlib中颜色的使用 有很多方式 1 用RGB或者RGBA
  • 给 MSYS2 添加中科大的源

    最近一段时间不知怎么的 使用默认的 MSYS2 源升级软件或是安装新软件的特别的慢 所以就翻了翻国内的几个开源软件的镜像库 发现中科大的库里就有 MSYS2 所以就研究了一下 给 MSYS2 添加了中科大的源 简单的说 msys64 etc
  • 领域驱动设计:DDD重构中台业务模型

    文章目录 如何避免重复造轮子 如何构建中台业务模型 如何避免重复造轮子 要避免重复建设 就要理解中台的理念和思想 中台是企业级能力复用平台 复用 用白话说就是重复使用 就是要避免重复造轮子的事情 中台的设计思想与 高内聚 低耦合 的设计原则