重磅推荐
【产品特色】


【编辑推荐】

适读人群:

企业信息技术管理者,业务分析和建模人员,架构和设计人员,微服务开发人员,计划从事信息系统架构设计相关工作的人员;本书适合有2年以上的设计或开发经验的中级以上人员。

(1)作者是某大型保险公司架构师,有10余年软件架构经验,擅长DDD、中台和分布式微服务架构设计。
(2)本书为基于DDD思想的中台建设和微服务拆分与设计提供指导,给出了体系化的前、中、后台协同设计方法。
(3)注重实战,汇聚大量分布式架构的*新设计方法、思想和理念,同时包含大量的案例和代码。
(4)交互式的行文风格,文字有活力,内容不刻板,简洁易懂。

(5)本书荣获51CTO 2020年度“*受读者喜爱的IT图书”奖。


【内容简介】

这是一部系统讲解如何基于DDD思想实现中台和微服务协同设计和落地的著作。
它将DDD、中台和微服务三者结合,一方面,它为中台的划分和领域建模提供指导,帮助企业更好地完成中台建设,实现中台的能力复用;一方面,它为微服务的拆分和设计提供指导,帮助团队提升分布式微服务的架构设计能力。给出了一套体系化的基于DDD思想的企业级前、中、后台协同设计方法。
本书注重实战,汇聚了大量分布式架构的*新设计方法、思想和理念,同时包含大量的案例和代码,是理论与实践相结合的*佳经验分享。交互式的行文风格,文字有活力,内容不刻板,简洁易懂。


本书共分为六个部分:
第壹部分 认识中台(第1~4章)
主要从业务中台、数据中台、技术中台以及与之匹配的组织架构等多个方面分析传统企业中台转型应该具备的能力,带你初步了解DDD是如何指导中台和微服务设计,并厘清它们的协作关系。
第二部分 DDD基本原理(第5~11章)
通过浅显易懂的案例讲解DDD的核心基础知识、设计思想、原则和方法等内容,了解它们之间的协作和依赖关系,做好中台实践前的准备工作。
第三部分 中台领域建模和微服务设计(第12~19章)
首先,通过案例手把手带你用DDD方法完成中台和微服务的全流程设计,深刻理解DDD在中台领域建模和微服务设计中的步骤、方法、设计思想和价值;然后,通过一个完整案例带你了解用DDD设计方法完成领域建模与微服务设计的全流程。
第四部分 前端设计(第20~21章)
引入微前端和单元化的设计思想,通过前端微服务化和单元化设计思想,解决业务中台建设完成后前端应用仍然为单体和前后端服务集成复杂的难点。此外,还探讨了基于领域模型的单元化设计方法。
第五部分 中台设计案例(第22章)
采用自顶向下的领域建模策略,通过案例讲解中台设计的完整流程。涵盖业务领域分解、中台领域建模、微服务和微前端设计、单元化设计以及业务和数据如何融合等内容。
第六部分 总结(第23~24章)
结合作者多年的设计经验和思考,阐述单体应用向微服务架构的演进策略、如何避免陷入DDD设计的常见误区、微服务设计原则以及分布式架构下的关键设计等内容。


【作者简介】

欧创新
某大型保险公司架构师,拥有十多年的软件架构设计经验。热衷于DDD、中台和分布式微服务架构设计。在DDD、中台和分布式微服务架构设计方面有深厚的积累,擅长分布式微服务架构设计。
极客时间《DDD实战课》专栏作者,在InfoQ发表多篇关于DDD、中台、微服务和微前端技术实践的有深度和影响力文章。


邓頔
某大型保险公司高级工程师,全国青年岗位能手。致力于基于DDD的企业级中台微服务架构改造实践,精通前端开发相关技术栈,拥有丰富的企业级微前端实战经验。


【媒体评论】

欧创新是极客时间《DDD实战课》专栏的优秀作者,他对中台和DDD有着自己独到的见解。这本书给我们提供了理解中台、DDD和微服务相关概念和实践的望远镜(宏观视角)和显微镜(微观视角),推荐阅读。

——郭蕾 极客时间总编辑

中台在经历了各种争论后,开始进入理性实践阶段,本书在澄清概念的同时,详细介绍了保险领域的DDD与微服务实践,相信读者在充分理解了这些宝贵的经验之后,也能够走出一条知行合一的中台自主之道。方法论的研究意义深远,我们永远在路上。

——付晓岩 建信金融科技有限责任公司团队副总经理/《企业级业务架构》《银行数字化转型》作者

本书从中台规划开始的DDD理念,到后台架构上基于微服务的解耦和聚合方式,再到微前端的架构和实现,以理论结合实际的方式系统地阐述了中台从规划到实现的全流程,为希望了解中台的设计和实现方式的读者提供了很好的指导。

——彭锋 智领云联合创始人兼CEO

本书将DDD和中台建设结合起来,详细阐述了基于DDD进行服务设计的过程,以及微前端的建设方法,*后还结合具体例子说明了整个过程,为中台的建设提供了具体的指导。

——李元佳 云徙科技联合创始人

中台架构是一个复杂的架构理念,不是现成的可以即插即用的产品或工具。中台的理想如何实现?业务架构、应用架构、数据架构、技术架构如何四位一体?且看保险领域先行者如何躬身向前用DDD和微服务把理想实现。

——史海峰 微信公众号“IT民工闲话”作者

企业纷纷开始建设中台的过程,就是企业的业务和架构从粗放式产品型管理到精细化平台型管理的演进过程。在这个过程中,如何从我们熟悉的纵向产品视角切换到相对抽象的横向平台视角,是其中的难点和重点,DDD和微服务正好在设计和技术层面给我们提供了方法论,是中台规划与建设必须掌握的基本能力。本书正是专注于此,系统而专业,强烈推荐。

——王健 ThoughtWorks 首席咨询师/《白话中台》系列文章作者

本书从DDD实际落地出发,通过大量案例分析和介绍,读者可以非常容易地了解其核心设计思想和流程,掌握DDD整套理论体系。可以说是一本难得的从理论到实践的书。

——贺阮 腾讯专家工程师


【目录】

序1

序2 为不确定而架构

前言

绪论 1

*部分 认识中台

第1章 数字化中台初步认识与建设策略 13

1.1 平台是中台吗 13

1.2 中台到底是什么 14

1.3 传统企业中台的建设策略 15

1.4 如何实现前中后台的协同 17

1.4.1 前台 17

1.4.2 中台 18

1.4.3 后台 19

1.5 本章小结 20

第2章 企业中台能力框架 21

2.1 中台能力总体框架 21

2.2 业务中台 22

2.3 数据中台 23

2.4 技术中台 25

2.5 研发运营 28

2.6 云平台 29

2.7 能力聚合 29

2.8 组织架构及中台建设方法 30

2.9 本章小结 31

第3章 微服务设计为什么要选择DDD 32

3.1 软件架构的演进史 32

3.2 微服务拆分和设计的困境 34

3.3 为什么DDD适合微服务 35

3.4 本章小结 37

第4章 DDD、中台和微服务的关系 39

4.1 DDD和中台的本质 40

4.2 DDD、中台和微服务的协作 41

4.3 如何完成中台业务建模 43

4.4 本章小结 46

第二部分 DDD基本原理

第5章 领域和子域:有效分解问题域 49

5.1 领域的基本概念 49

5.2 领域的分解过程 50

5.3 子域的分类和属性 52

5.4 本章小结 53

第6章 限界上下文:定义领域边界的利器 54

6.1 什么是通用语言 54

6.2 什么是限界上下文 57

6.3 进一步理解限界上下文 58

6.4 限界上下文和微服务的关系 59

6.5 限界上下文与子域的关系 60

6.6 本章小结 61

第7章 实体和值对象:领域模型的基础单元 62

7.1 实体 62

7.2 值对象 64

7.3 实体和值对象的关系 68

7.4 本章小结 69

第8章 聚合和聚合根:怎样设计聚合 70

8.1 聚合 70

8.2 聚合根 71

8.3 聚合的设计步骤 73

8.4 聚合的设计原则 74

8.5 聚合的设计模式 75

8.5.1 仓储模式 76

8.5.2 工厂模式 80

8.6 本章小结 81

第9章 领域事件:解耦微服务的关键 83

9.1 领域事件 83

9.1.1 微服务内的领域事件 84

9.1.2 微服务之间的领域事件 85

9.2 领域事件案例 85

9.3 领域事件驱动实现机制 86

9.4 领域事件运行机制 89

9.5 本章小结 90

第10章 DDD分层架构 91

10.1 什么是DDD分层架构 91

10.1.1 用户接口层 92

10.1.2 应用层 93

10.1.3 领域层 94

10.1.4 基础层 94

10.1.5 DDD分层架构的重要原则 95

10.2 DDD分层架构如何推动架构演进 95

10.2.1 微服务架构的演进 95

10.2.2 微服务内服务的演进 96

10.3 三层架构如何演进到DDD分层架构 97

10.4 本章小结 98

第11章 几种微服务架构模型对比分析 99

11.1 洋葱架构 99

11.2 六边形架构 100

11.3 三种微服务架构模型的对比和分析 101

11.4 从三种架构模型看中台和微服务设计 103

11.4.1 中台建设要聚焦领域模型 103

11.4.2 微服务要有合理的架构分层 104

11.4.3 应用逻辑与基础资源的解耦 105

11.5 本章小结 106

第三部分 中台领域建模与微服务设计

第12章 如何用事件风暴构建领域模型 109

12.1 事件风暴概述 110

12.2 基于事件风暴的领域建模 111

12.2.1 产品愿景分析 111

12.2.2 场景分析 112

12.2.3 领域建模 113

12.2.4 微服务拆分与设计 115

12.3 本章小结 116

第13章 如何用DDD重构中台业务模型 117

13.1 传统企业应用建设分析 117

13.2 如何避免重复造轮子 119

13.3 如何构建中台业务模型 119

13.3.1 自顶向下的策略 119

13.3.2 自底向上的策略 120

13.4 业务模型重构过程中的领域对象 126

13.5 本章小结 128

第14章 如何用DDD设计微服务代码模型 129

14.1 DDD分层架构与微服务代码模型 129

14.2 微服务代码模型 130

14.2.1 一级代码目录 130

14.2.2 各层代码目录 131

14.2.3 微服务总目录结构 134

14.3 本章小结 135

第15章 如何保证领域模型与代码模型一致 136

15.1 领域对象的整理 136

15.2 从领域模型到微服务落地 137

15.2.1 领域层的领域对象 138

15.2.2 应用层的领域对象 140

15.2.3 领域对象与代码对象的映射 142

15.3 本章小结 144

第16章 如何实现微服务的架构演进 145

16.1 演进式架构 145

16.2 我们设计的是微服务还是小单体 146

16.3 微服务边界的作用 147

16.4 正确理解微服务的边界 149

16.5 本章小结 149

第17章 服务和数据在微服务各层的协作 150

17.1 服务视图 150

17.1.1 服务的类型 150

17.1.2 服务的调用 151

17.1.3 服务的封装与组合 153

17.1.4 两种分层架构的服务依赖关系 155

17.2 数据视图 158

17.3 本章小结 160

第18章 基于DDD的微服务设计实例 161

18.1 项目基本信息 161

18.2 战略设计 161

18.2.1 产品愿景 162

18.2.2 场景分析 163

18.2.3 领域建模 165

18.2.4 微服务拆分 166

18.3 战术设计 167

18.3.1 分析微服务领域对象 167

18.3.2 设计微服务代码结构 171

18.4 后续的工作 173

18.5 本章小结 173

第19章 基于DDD的微服务代码详解 174

19.1 项目背景 174

19.2 聚合中的对象 175

19.2.1 聚合根 175

19.2.2 实体 176

19.2.3 值对象 177

19.2.4 领域服务 177

19.3 领域事件 180

19.3.1 领域事件基类 181

19.3.2 领域事件实体 181

19.3.3 领域事件的执行逻辑 181

19.3.4 领域事件数据持久化 182

19.4 仓储模式 182

19.4.1 DO与PO对象的转换 183

19.4.2 仓储实现逻辑 184

19.5 工厂模式 186

19.6 服务的组合与编排 188

19.7 微服务拆分时的代码调整 190

19.7.1 微服务拆分前的代码 190

19.7.2 微服务拆分后的代码 191

19.8 服务接口的提供 192

19.8.1  facade接口 192

19.8.2 DTO数据组装 193

19.9 微服务解耦策略小结 195

19.10 本章小结 196

第四部分 前端设计

第20章 微前端架构理念与技术实践 198

20.1 前端项目的困局 198

20.2 如何理解微前端 200

20.3 微前端会带来哪些好处 201

20.4 微前端适合你的项目吗 202

20.5 微前端的实施方案与实践 203

20.5.1 Tailor实践 204

20.5.2 Single-SPA实践 216

20.6 本章小结 224

第21章 微前端:微服务的*搭档 225

21.1 前端应用新趋势 225

21.2 业务单元设计 226

21.3 微前端的集成 228

21.4 团队职责边界 230

21.5 本章小结 232

第五部分 中台设计案例

第22章 中台战略下的保险订单化设计 234

22.1 保险为什么要订单化销售 234

22.2 保险业务的复杂性 235

22.2.1 保险与普通商品差异分析 235

22.2.2 业务复杂性分析 237

22.2.3 技术复杂性分析 237

22.3 设计目标、思路和原则 239

22.4 业务中台领域建模 240

22.4.1 分解业务领域 240

22.4.2 核心能力中台 241

22.4.3 通用能力中台 244

22.5 业务单元化设计 251

22.5.1 单元化设计的前提 252

22.5.2 如何进行单元化设计 253

22.6 业务的融合 257

22.6.1 企业级前台应用 258

22.6.2 业务和流程的融合 259

22.6.3 单元化的价值 262

22.7 中台与后台的解耦 263

22.8 数据的融合 265

22.8.1 在线数据服务 265

22.8.2 视图数据服务 265

22.9 本章小结 266

第六部分 总结

第23章 微服务拆分和设计原则 270

23.1 微服务的演进策略 270

23.2 不同场景下的微服务建设策略 271

23.2.1 新建系统 271

23.2.2 单体遗留系统 272

23.3 DDD使用误区 273

23.4 微服务设计原则 275

23.5 微服务拆分要考虑哪些因素 276

23.6 本章小结 277

第24章 分布式架构的关键设计 278

24.1 选择什么样的分布式数据库 278

24.2 如何设计数据库分库主键 279

24.3 数据库的数据同步和复制 279

24.4 跨库关联查询如何处理 280

24.5 如何处理高频热点数据 280

24.6 前后序业务数据的处理 281

24.7 数据中台与企业级数据集成 281

24.8 BFF与企业级业务编排和协同 282

24.9 分布式事务还是事件驱动机制 282

24.10 多中心多活设计 283

24.11 本章小结 283

结束语 284


【前言】

为何写作本书

当前基于微服务架构来构建企业级应用已成为业界趋势。微服务架构很好地实现了应用解耦,可以更好地实现应用上云,解决单体应用扩展和弹性伸缩能力不足的问题。鉴于众多互联网企业微服务架构转型后带来的成功和收益,越来越多的传统企业也开始从单体架构向微服务架构转型。但在演进的过程中,微服务到底应该怎样拆分和设计,拆多小才算合理?这已经成为业内重点关注的话题。

继阿里巴巴成功完成中台战略转型后,很多大型企业也紧随其后开启了中台数字化转型。作为中台,需要将通用的业务能力沉淀到中台业务模型,实现企业级业务能力复用。中台建设面临的首要问题是如何按照可复用原则完成企业级业务模型重构。而在中台落地时,又会面临微服务拆分和设计的问题。这两个问题一前一后,对任何企业来说都是不小的挑战。

现在市面上关于微服务开发和技术的学习资料非常多。但在中台数字化转型过程中,关于如何进行业务领域边界划分,如何完成中台领域建模实现能力复用,如何完成单体应用拆分和微服务设计,如何实现前中后台的协同设计等,可参考和借鉴的资料并不是很多,即便有一些,真正理解和实施起来也是困难重重。

中台越来越火,微服务越来越热,参与的人也越来越多,但是市面上一直没有一套体系化的理论与方法来指导中台和微服务建设。那是否有成熟的理论或方法来指导中台领域建模以及微服务拆分和设计呢?答案是肯定的,那就是DDD(Domain Driven Design,领域驱动设计)。

2003年埃里克·埃文斯(Eric Evans)出版了《领域驱动设计》,从此DDD诞生。在沉寂了十多年后,随着微服务架构的流行,DDD强势崛起,成为很多企业微服务的主流设计方法。DDD首先从业务领域入手,划分业务领域边界,采用事件风暴工作坊方法,分析并提取业务场景中的实体、值对象、聚合根、聚合、领域事件等领域对象,根据限界上下文边界构建领域模型,将领域模型作为微服务设计的输入,进而完成微服务详细设计。用DDD方法设计出来的微服务,业务和应用边界非常清晰,符合“高内聚,低耦合”的设计原则,可以轻松适应业务模型变化和微服务架构演进。

微服务与DDD的共生关系主要从两方面来体现。一方面是微服务提倡将应用进行服务化拆分,通过业务领域边界实现应用服务边界的划分。另一方面,DDD恰好提供了一种基于业务限界上下文边界来实现微服务“高内聚,低耦合”的服务构建方法。将两者合理搭配使用,研发组织可以轻松实现面向服务的设计,享受持续交付与架构演进。

DDD与微服务,乃至中台设计的结合,目前仍是一个非常新的领域。很多人可能并不清楚它们的关系,不知道该如何利用DDD来完成中台和微服务的协同设计。

基于上述背景,本书聚焦业务中台设计和建设,系统地阐述了基于DDD的中台和微服务建设的方法体系,主要包括中台业务边界划分和领域模型构建,微服务、微前端设计理念与实践,以及如何进行前中后台的协同设计和单元化设计等内容。

本书主要特点

纵观全书,本书具有以下6个显著特点。

1)深入浅出,浅显易懂。本书打破了常规采用大量理论知识堆砌来讲解DDD知识的方式,用大量场景化的案例类比和分析,带你深入理解DDD基础知识和核心设计思想,解决了DDD知识体系过于庞大而难以理解和微服务落地困难的问题。

2)结构合理,从DDD理论到微服务实践完美结合。本书从理解DDD基础理论知识和核心设计思想出发,结合多个企业级业务场景,完成了DDD全流程的领域建模和微服务设计,对服务设计与技术落地等实现细节进行了大量的示例说明。结合案例设计,完成了微服务代码的开发,并对代码实现进行了详细的代码分析和讲解,帮助你避免开发过程常见问题的发生。可以说,本书从理论中来,到实践中去,能够有效指导中台和微服务的设计和开发。

3)化繁为简,从宏观业务分析到微观技术实现面面俱到。DDD、微服务与中台三者中的任何一项,放在任何一家企业,都是一项非常庞杂且复杂度非常高的工作。本书分别从DDD设计视角和中台建设视角进行对比分析,梳理了DDD、微服务与中台三者之间的协作关系。特别强调从业务领域出发,利用DDD战略设计和战术设计方法同时指导中台领域建模和微服务设计。可以说,DDD是中台和微服务设计的*指导方法,而微服务则是中台的*技术实现,它们就是这样的铁三角协作关系。我们将三者结合,从企业领域到子域的战略设计、宏观业务领域边界划分到微服务内底层领域对象的逐级细化设计,降低软件产品建设的复杂度,实现从宏观战略到技术实现细节的无缝衔接。

4)案例翔实,建立了企业级的中台建设方法体系。本书涵盖了前台、中台和后台建设及设计的完整方法,建立了一套标准的中台领域建模和微服务设计方法及流程,可以很好地指导企业完成中台设计和微服务落地。通过大量复杂业务场景的详细案例设计和分析,将DDD、中台和微服务三者结合,以近乎手把手的方式详细介绍了中台和微服务的设计方法和步骤。在中台业务建模时,你可以利用DDD战略设计,分解业务领域,从事件风暴入手,根据限界上下文边界构建可复用的中台领域模型。在中台落地时,你可以利用DDD战术设计,根据领域模型指导完成微服务和微前端设计和落地。

5)问题导向,一切都是为了解决实际问题。本书引入了大量成熟的中台与前台相关技术和设计方法,体系化地解决了企业中台建设过程中前台、中台和后台的协同设计,以及共享、联通与融合的问题。引入微前端设计思想,解决中台微服务化后,前端仍存在因单体而产生的前端集成和开发复杂的问题。为此,书中首次提出了基于领域模型的、单元化的设计思想,以领域模型为基准,向上构建微前端以实现领域模型的前端页面逻辑,向下构建微服务以实现领域模型的核心领域逻辑。将微服务和微前端集成组合为组件级业务单元,实现微前端页面逻辑和微服务接口能力的企业级复用。设计时,我始终强调应结合企业实际情况,选择*合适的方法和工具解决企业的实际问题,具体情况具体分析,灵活、体系化地运用技术和方法,通过常见问题分析和经验总结,避免陷入常见设计误区。

6)文字简洁,易于阅读。本书部分内容来源于我在极客时间的专栏《DDD实战课》,整体采用与读者交互的行文风格,经过多重打磨,文字有活力,内容不刻板,更加简洁易懂。

本书阅读对象

本书是一本关于中台、微服务和微前端设计与建设的书,采用了DDD设计思想和方法,适合的阅读对象主要分为下面几类:

从事企业数字化转型的企业管理者;

从事企业技术架构和微服务设计的架构师;

从事企业业务架构设计和业务建模的业务人员;

从事微服务设计和开发的高级技术人员;

希望从事中台和微服务架构设计的人员;

对DDD、微服务和中台设计感兴趣的学习者。

如何阅读本书

本书主要包含24章,共分为6部分。

*部分 认识中台(第1~4章)

本部分包括4章,主要介绍中台相关背景知识,认识并理解中台的真正含义,从业务中台、数据中台、技术中台以及与之匹配的组织架构等多个方面分析传统企业中台转型应该具备的能力,带你初步了解DDD是如何指导中台和微服务设计,并厘清它们的协作关系的。

第二部分 DDD基本原理(第5~11章)

为了让你能够更加深刻地理解DDD,本部分通过一些浅显易懂的案例,帮助你学习并深刻理解DDD的核心基础知识、设计思想、原则和方法等内容,了解它们之间的协作和依赖关系,解决DDD概念理解困难的问题,做好中台实践前的准备工作。本部分包括7章,主要讲解DDD的关键核心知识体系,包括领域、子域、核心子域、通用子域、支撑子域、限界上下文、实体、值对象、聚合、聚合根、领域事件和DDD分层架构等知识。

第三部分 中台领域建模与微服务设计(第12~19章)

本部分包括8章,主要介绍DDD是如何通过战略设计构建中台业务模型,以及如何通过战术设计指导微服务拆分和设计的。在这一部分,我会用多个实际案例,带你用DDD方法完成中台和微服务的全流程设计,深刻理解DDD在中台领域建模与微服务设计中的步骤、方法、设计思想和价值。

1)了解如何用事件风暴方法构建领域模型。

2)了解如何用DDD设计思想构建企业级可复用的中台业务模型。

3)了解如何用DDD设计微服务代码模型,如何将领域模型映射到微服务以建立领域模型与微服务代码模型的映射关系,如何完成微服务架构演进等。

*后用一个案例将DDD所有知识点串联在一起,带你深入了解如何用DDD的设计方法完成领域建模与微服务设计的全流程,并对代码示例进行了详细分析和讲解。

第四部分 前端设计(第20章和第21章)

本部分包括两章,主要介绍微前端的设计思想,通过前端微服务化和单元化的设计思想,解决业务中台建设完成后前端应用解耦和前后端服务集成复杂的难点。书中阐述了如何借鉴微服务的设计思想来解构前端应用,实现前端应用的拆分解耦,并结合实践介绍前端架构的转型策略与技术落地。

另外,本部分还探讨了基于领域模型的单元化设计方法。通过微服务与微前端组合后的单元化设计,既可以降低企业级前台应用集成的复杂度,又可以让企业具有更强的产品快速发布和业务响应能力。这种能力能给我们的团队组建、研发模式、业务能力发布等带来非常大的价值。

第五部分 中台设计案例(第22章)

本部分包括一章,通过保险订单化设计案例,采用自顶向下的领域建模策略,带你走一遍中台设计的完整流程。案例中涵盖业务领域分解、中台领域建模、微服务和微前端设计、单元化设计以及如何实现业务和数据融合等内容,希望能够帮助你加深对DDD、中台、微服务和微前端等知识体系、设计思想和技术体系的全面理解,更好地投入DDD、中台和微服务建设实践中。

第六部分 总结(第23章和第24章)

本部分是全书的总结,包括两章。书中结合我多年的设计经验和思考,带你了解单体应用向微服务架构的演进策略,如何避免陷入DDD设计的常见误区,微服务设计原则以及分布式架构下的关键设计等内容。

勘误

由于时间仓促,加之水平有限,错误和疏漏之处在所难免。在此,诚恳地期待你的批评指正。如果你有任何疑问、技术交流需求或建议,可以直接发送至邮箱(chuangxinou@163.com),或关注微信公众号“中台架构与实现”,我们会及时反馈。

致谢

感谢ThoughtWorks强大的技术团队和丰富的文档资料。ThoughtWorks对DDD的大力宣传和推广,给我们提供了大量的学习和参考资料。技术雷达可以让我们了解*的技术趋势和研究方向。总之,受益匪浅。

感谢机械工业出版社华章公司副总编辑杨福川老师和编辑李艺老师,他们在我们写作过程中提供了大量的帮助和支持,付出了辛勤劳动,指导我们顺利完成本书。

感谢极客时间总编辑郭蕾老师和专栏主编李佳、王冬青老师指导我顺利完成了《DDD实战课》专栏,有了专栏的技术和文字积累,我才有足够的信心完成本书。

感谢本书合著者邓頔提供的微前端实施经验。他负责编写本书微前端部分章节内容,并为本书的策划、内容、实践和校对提供了宝贵建议和意见。

特别感谢PICC各位领导和同事在本书编写过程中提供的帮助和支持!

在本书编写过程中,ThoughtWorks中国区技术战略咨询服务负责人、首席架构师王威(David)老师给予了大量指导并为本书写序。在此表示感谢!

欧创新


【免费在线读】

序  1

个人对DDD一直比较有兴趣,也包括企业架构设计、在DDD之前的领域分析如分析模式、彩色建模等。如果把软件按照相对的“稳定性”来排序,领域层>应用层>界面层。以营销为例,撬动用户的还是老三样:卡、券、积分,本质就是营销资产 资金流,而从产品包装上可以策划满减、满返、2件折扣、限时优惠、限定电商全场消费、限定活动线下商超、限定品类等活动,不一而足。领域层是相对稳定的,应用层(业务逻辑层和具体规则)可以有多种变化,而广义界面层的实质包括产品包装、交互等可以有更多的互动玩法。窃以为,领域分析的价值所在就是寻求“千变万化”中相对的“稳定性、*性”,然后通过合理的架构分层及抽象隔离的业务复杂度和技术复杂度,隔离业务领域的稳定性和易变性,从架构上精巧、快速地支持业务的变化。 技术为业务服务,但绝不是业务到IT的简单翻译。

欧老师精于保险业务,对于DDD也有自己的理解和看法。从经典的DDD战略设计到基于微服务的战术设计/实现的案例,本书给出了全面的参考案例。知行合一,则“限界上下文”“实体”“值对象”“聚合”“事件”“事务一致性”等都不再神秘。本书也有一些可喜的创见,如对于“微前端”和“业务单元化”的提炼。本书以保险订单化销售业务领域为例,采用自顶向下策略,完成保险部分业务领域的中台设计,带领读者了解中台设计全流程,理解DDD、业务中台、微服务、微前端与单元化设计的关系以及它们的核心设计思想。

本书价值不菲,强烈推荐。无论对于DDD的初学者,还是DDD的资深人士,都有相应的启发。写作者的*安慰莫过于读者觉得有价值,有收获。祝大家阅读愉快!

右军,《深入分布式缓存》《程序员的三门课》联合作者  

序  2

为不确定而架构

在过去的几年中,因为工作的关系,我同很多科技类企业和组织合作过。这些企业和组织分布在不同的行业和地区,从电信、金融到物流供应链,从国内到全球各地。几乎所有技术行业的同人在谈到未来的时候,都流露出了很强的改变意愿和紧迫感。例如今年出现的新冠肺炎疫情,以及围绕疫情在全球范围出现的一系列连锁反应,都导致大家逐渐形成了一个共识:世界已经从根本上改变,未来20年将要发生的事情,可能是我们今天根本无法想象的。在这样的背景下,每一个组织都希望能够通过加大科技的投入,赋能自己的客户和业务,从而做好应对未知挑战的准备。

另一方面,软件“侵蚀”世界已经是不争的事实,在国内的很多城市中,恐怕已经很难想象完全脱离软件的生活会是什么样子。即使我们不谈“不可见”的嵌入式软件和网络控制类软件,仅仅脱离了智能手机以及建于其上的各种App,我们熟悉的生活似乎将无法运转下去。新兴的科技公司,在利用软件技术打造新的场景,培养用户的使用习惯,创造新的业务价值的同时,也在倒逼前辈们对传统的业务进行数字化改造,以适应新时代下技术的变化速度。同时,科技公司又将自己的*实践标准化、产品化,希望通过与传统企业的合作,加速整个行业变革的进程。20年前的SOA架构、6年前的微服务架构和3年前阿里的“中台”都是这种模式的很好代表。

客户习惯的改变,技术的发展和快速演进,以及在一些行业出现的外力作用,都带来了价值、场景、技术、政策的不确定性。所有不确定性的综合,使得软件的构建过程一定会面对这样的窘境:软件永远跟不上业务变化。为了解决这样的问题,业界的前辈们一直在通过管理、技术、工具平台等多种维度来解决同一个问题:如何使软件的构建具备更高的响应力。敏捷、精益、DevOps、效能平台都是为解决这个问题而出现的解决方案。在这个过程中,“如何在复杂业务场景下设计软件”逐渐成为架构师们关注的焦点。领域驱动设计(以下简称DDD)的提出,恰恰解决了这一问题。但是在2010年之前,因为单体应用仍然占据主流地位,DDD“曲高和寡”。直到“微服务”的出现,才消除了原来单体应用的桎梏,使得DDD成为架构师们都在讨论的软件架构设计标准实践。

近年来,DDD在国内的影响力逐年增大。我仍然记得在2015年前后和企业交流的时候,当时大家对于什么是DDD完全摸不着头脑,很多组织直接把源自“产品线工程”的“领域工程”和DDD作为相同的概念加以实践。2017年我们举办了*届DDD中国峰会,那时有很多参与的同行对于DDD如何在自己的组织、场景中落地还存有这样或那样的疑虑。而到2019年的第三届峰会时,大家更多是带着问题和经验来和业界的同行们一起交流心得,探索在新场景下如何利用DDD带来更多的价值。

我和欧创新老师正是在这样的背景下认识的。欧老师在过去几年中将DDD的思想、微服务以及中台的理念同自己企业的实际相结合,积累了丰富的实践经验。每一次和欧老师交流,我都能学到很多东西。当欧老师找到我为这本书作序的时候,我既受宠若惊,又诚惶诚恐。在拜读完本书后,我惊讶于在这么短的时间内,欧老师不仅将自己获得的经验提炼总结,还用通俗易懂的语言和丰富的案例,将DDD、微服务、中台的概念和围绕在它们周围的实践讲述得如此详细。本书确实是业界难得的一个针对架构设计和中台转型的技术层面的总结,我个人从中获益匪浅,相信本书的读者朋友会和我有同样的体会。

王威

ThoughtWorks中国区技术战略咨询服务负责人


返回顶部