Skip to content

Commit d5c2a66

Browse files
committed
docs:新增 DDD 专栏规划篇
1 parent d9b5bbd commit d5c2a66

2 files changed

Lines changed: 91 additions & 0 deletions

File tree

docs/.vuepress/config.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,7 @@ module.exports = {
116116
{
117117
text: 'DDD',
118118
items: [
119+
{text: '00-DDD专栏规划', link: '/md/DDD/00-DDD专栏规划.md'},
119120
{text: '基于电商履约场景的DDD实战', link: '/md/DDD/基于电商履约场景的DDD实战.md'},
120121
]
121122
},
@@ -306,7 +307,9 @@ module.exports = {
306307
collapsable: false,
307308
sidebarDepth: 0,
308309
children: [
310+
"00-DDD专栏规划.md",
309311
"基于电商履约场景的DDD实战.md",
312+
310313
]
311314
}
312315
],

docs/md/DDD/00-DDD专栏规划.md

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
# 00-DDD专栏规划
2+
3+
## 1 DDD、微服务、中台和平台
4+
5+
平台目标:解决公共能力复用问题,防止公司重复造轮子。
6+
7+
平台只是将部分通用的公共能力独立为共享平台。虽可通过API或数据对外提供公共共享服务,解决系统重复建设的问题,但这类平台并未和企业内其它平台或应用,实现页面、业务流程和数据从前端到后端的全面融合,且未将核心业务服务链路作为一个整体方案考虑,各平台仍分离独立。
8+
9+
中台是**企业级能力复用**平台。中台来源于平台,但中台和平台相比,更多体现理念转变,主要体现在如下关键能力:
10+
11+
- 对前台业务的快速响应能力
12+
- 企业级复用能力
13+
- 从前台、中台到后台的设计、研发、页面操作、流程服务和数据的无缝联通、融合能力
14+
15+
中台首先体现一种企业级能力,它提供一套企业级整体解决方案,解决小到企业、集团,大到生态圈的能力共享、联通和融合问题,支持业务和商业模式创新。通过平台联通和数据融合为用户提供一致的体验,更敏捷地支撑前台一线业务。
16+
17+
中台概念是将各能力串联成一个平台产品,为前端提供一个业务需求方案。“中台是企业级能力复用平台”。如交易平台,它提供售前、售中、售后能力,而业务线去串联各域能力,去完成他们的业务流程,这是交易平台要做的,而交易中台是依赖交易平台的基础能力,在如下方面改进:
18+
19+
- 流程编排,为前台提供一个从售前到售中到售后能力的一个串联,它是跨服务
20+
- 接入便利,提供从前端到后端可配置、可扩展的一个便利的交易解决方案
21+
22+
### 关联关系
23+
24+
![](https://codeselect.oss-cn-shanghai.aliyuncs.com/undefinedimage-20240301093857058.png)
25+
26+
平台和中台在业务架构更多偏向于业务模型,形成平台和中台的过程,也是业务领域不断细分的过程。在这阶段要将通用能力不断聚合、建立领域模型,这过程和DDD战略设计就很匹配。
27+
28+
当平台和中台完成领域建模后,就要通过微服务去完成系统架构,而此时DDD架构设计和微服务设计完美契合,可以说平台、中台及微服务是DDD落地最佳场景,因此DDD近年火爆。
29+
30+
“微服务咋拆分和设计才合理,拆多小叫微服务?”微服务边界历来最易产生争议。作为中台,需将通用的可复用业务能力沉淀到中台业务模型,实现企业级能力复用。因此中台首要问题就是中台领域模型的重构。而中台落地时,依然面临微服务设计和拆分问题。
31+
32+
## 2 领域驱动的本质
33+
34+
DDD和微服务都是从业务领域出发,将大的业务领域分解为小的子域,完成领域建模,用领域模型指导微服务设计和落地。二者都是分而治之来降低业务领域认识和软件产品建设的复杂度。
35+
36+
DDD在领域建模过程中最关键就是完成业务边界划分,这边界包括领域模型之间的边界,也包含领域模型内部聚合之间的边界,有了这边界就可设计出高内聚低耦合微服务。这是战略设计阶段的关键。
37+
而战术设计阶段,用DDD分层架构实现微服务内各层解耦。在发生变化时,降低各层相互影响,保证各层模型稳定。
38+
39+
DDD和微服务是天作之合,DDD知识点多,也抽象,体系庞大,又缺少实践经验和案例指导,很多人对 DDD 应用都有这样那样困惑,哪怕知道 DDD 好处,但也无从下手。早在 2003 年就诞生的 DDD,怎么来指导“迟到”近 20 年才大热的微服务设计呢?
40+
41+
### 实践DDD
42+
43+
1. 理解 DDD 的核心设计思想,搞清楚 DDD、微服务和中台之间的关系。中台本质是业务模型,微服务是业务模型的系统落地,DDD 是一种设计思想,它可同时指导中台业务建模和微服务设计,它们之间就是铁三角关系。DDD 强调领域模型和微服务设计的一体性,先有领域模型然后才有微服务,而不是脱离领域模型来谈微服务设计
44+
2. 就是通过战略设计,建立领域模型,划分微服务边界。这步是关键,可借助专栏的经验
45+
3. 通过战术设计,从领域模型转向微服务设计和落地。此时,边界清晰、可持续演进的微服务架构雏形就在面前
46+
47+
## 3 DDD 的现实意义
48+
49+
DDD:
50+
51+
- 战略设计用来建立业务模型,适于企业级中台,也适用于项目级的领域建模
52+
- 战术设计适用于微服务设计
53+
54+
## 4 规划
55+
56+
DDD 核心知识体系包括:领域、子域、核心域、通用域、支撑域、限界上下文、实体、值对象、聚合和聚合根等:
57+
58+
![](https://codeselect.oss-cn-shanghai.aliyuncs.com/undefinedddd.png)
59+
60+
- 用 DDD 分层架构带你弄懂微服务架构各层之间的关系,并完成微服务分层和代码模型设计
61+
- 用 DDD 战略设计和事件风暴带你完成领域建模和企业级中台业务建模
62+
63+
用案例带你完整走一遍 DDD 战略设计和战术设计的全流程,学习 DDD 在领域模型和微服务设计过程中的技术要点。带你深化微服务架构设计原则和注意事项,建立适应你公司技术能力和文化的微服务,建立演进式的微服务架构。
64+
65+
### 进阶篇
66+
67+
领域事件、DDD 分层架构、常见微服务架构模型及中台设计思想:
68+
69+
- 咋通过领域事件实现微服务解耦?
70+
- 微服务分层咋设计?
71+
- 咋实现层与层的服务协作?
72+
- 微服务架构模型对比分析,了解领域模型和微服务分层意义
73+
- 中台设计的核心思想,探讨咋实现前中后台的协同和融合?咋利用 DDD 进行中台设计?
74+
75+
### 实战
76+
77+
- 中台和领域建模的实战:带你了解如何用 DDD 设计思想构建企业级可复用的中台业务模型,了解事件风暴以及用事件风暴构建领域模型的过程。
78+
- 微服务设计实战:带你了解如何用 DDD 设计微服务代码模型,如何从领域模型完成微服务设计,建立领域模型与微服务代码模型的映射关系,如何完成微服务的架构演进等。
79+
80+
用典型案例将 DDD 所有的知识点串联在一起,带你深入了解如何用 DDD 的设计思想来完成领域建模和微服务设计的全流程。
81+
82+
最后总结微服务设计原则及分布式架构设计的关键注意事项。
83+
84+
## FAQ
85+
86+
> DDD适合做游戏开发的服务架构吗?感觉微服务化影响RT,而且分布式事务也不好做。
87+
88+
DDD本身和微服务只是有指导关系。DDD是可指导微服务的落地的,但并不代表只有通过微服务才能做DDD的设计,它们是没有反向的推导关系。DDD的落地其实不一定是要通过微服务的方式去做落地,而且DDD本身是一个设计的概念,我们可以不用纠结DDD和代码的最终落地。影响RT、分布式事务,这些实际上都是微服务问题。

0 commit comments

Comments
 (0)