內容介紹
這是一部系統(tǒng)講解如何基于DDD思想實現(xiàn)中臺和微服務協(xié)同設計和落地的著作。
它將DDD、中臺和微服務三者結合,一方面,它為中臺的劃分和領域建模提供指導,幫助企業(yè)更好地完成中臺建設,實現(xiàn)中臺的能力復用;一方面,它為微服務的拆分和設計提供指導,幫助團隊提升分布式微服務的架構設計能力。給出了一套體系化的基于DDD思想的企業(yè)級前、中、后臺協(xié)同設計方法。
本書注重實戰(zhàn),匯聚了大量分布式架構的*新設計方法、思想和理念,同時包含大量的案例和代碼,是理論與實踐相結合的*佳經驗分享。交互式的行文風格,文字有活力,內容不刻板,簡潔易懂。
本書共分為六個部分:
第壹部分 認識中臺(第1~4章)
主要從業(yè)務中臺、數(shù)據(jù)中臺、技術中臺以及與之匹配的組織架構等多個方面分析傳統(tǒng)企業(yè)中臺轉型應該具備的能力,帶你初步了解DDD是如何指導中臺和微服務設計,并厘清它們的協(xié)作關系。
第二部分 DDD基本原理(第5~11章)
通過淺顯易懂的案例講解DDD的核心基礎知識、設計思想、原則和方法等內容,了解它們之間的協(xié)作和依賴關系,做好中臺實踐前的準備工作。
第三部分 中臺領域建模和微服務設計(第12~19章)
首先,通過案例手把手帶你用DDD方法完成中臺和微服務的全流程設計,深刻理解DDD在中臺領域建模和微服務設計中的步驟、方法、設計思想和價值;然后,通過一個完整案例帶你了解用DDD設計方法完成領域建模與微服務設計的全流程。
第四部分 前端設計(第20~21章)
引入微前端和單元化的設計思想,通過前端微服務化和單元化設計思想,解決業(yè)務中臺建設完成后前端應用仍然為單體和前后端服務集成復雜的難點。此外,還探討了基于領域模型的單元化設計方法。
第五部分 中臺設計案例(第22章)
采用自頂向下的領域建模策略,通過案例講解中臺設計的完整流程。涵蓋業(yè)務領域分解、中臺領域建模、微服務和微前端設計、單元化設計以及業(yè)務和數(shù)據(jù)如何融合等內容。
第六部分 總結(第23~24章)
結合作者多年的設計經驗和思考,闡述單體應用向微服務架構的演進策略、如何避免陷入DDD設計的常見誤區(qū)、微服務設計原則以及分布式架構下的關鍵設計等內容。
序1
序2 為不確定而架構
前言
緒論 1
第一部分 認識中臺
第1章 數(shù)字化中臺初步認識與建設策略 13
1.1 平臺是中臺嗎 13
1.2 中臺到底是什么 14
1.3 傳統(tǒng)企業(yè)中臺的建設策略 15
1.4 如何實現(xiàn)前中后臺的協(xié)同 17
1.4.1 前臺 17
1.4.2 中臺 18
1.4.3 后臺 19
1.5 本章小結 20
第2章 企業(yè)中臺能力框架 21
2.1 中臺能力總體框架 21
2.2 業(yè)務中臺 22
2.3 數(shù)據(jù)中臺 23
2.4 技術中臺 25
2.5 研發(fā)運營 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、中臺和微服務的協(xié)作 41
4.3 如何完成中臺業(yè)務建模 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 領域事件驅動實現(xiàn)機制 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重構中臺業(yè)務模型 117
13.1 傳統(tǒng)企業(yè)應用建設分析 117
13.2 如何避免重復造輪子 119
13.3 如何構建中臺業(yè)務模型 119
13.3.1 自頂向下的策略 119
13.3.2 自底向上的策略 120
13.4 業(yè)務模型重構過程中的領域對象 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章 如何實現(xiàn)微服務的架構演進 145
16.1 演進式架構 145
16.2 我們設計的是微服務還是小單體 146
16.3 微服務邊界的作用 147
16.4 正確理解微服務的邊界 149
16.5 本章小結 149
第17章 服務和數(shù)據(jù)在微服務各層的協(xié)作 150
17.1 服務視圖 150
17.1.1 服務的類型 150
17.1.2 服務的調用 151
17.1.3 服務的封裝與組合 153
17.1.4 兩種分層架構的服務依賴關系 155
17.2 數(shù)據(jù)視圖 158
17.3 本章小結 160
第18章 基于DDD的微服務設計實例 161
18.1 項目基本信息 161
18.2 戰(zhàn)略設計 161
18.2.1 產品愿景 162
18.2.2 場景分析 163
18.2.3 領域建模 165
18.2.4 微服務拆分 166
18.3 戰(zhàn)術設計 167
18.3.1 分析微服務領域對象 167
18.3.2 設計微服務代碼結構 171
18.4 后續(xù)的工作 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 領域事件的執(zhí)行邏輯 181
19.3.4 領域事件數(shù)據(jù)持久化 182
19.4 倉儲模式 182
19.4.1 DO與PO對象的轉換 183
19.4.2 倉儲實現(xiàn)邏輯 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數(shù)據(jù)組裝 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 業(yè)務單元設計 226
21.3 微前端的集成 228
21.4 團隊職責邊界 230
21.5 本章小結 232
第五部分 中臺設計案例
第22章 中臺戰(zhàn)略下的保險訂單化設計 234
22.1 保險為什么要訂單化銷售 234
22.2 保險業(yè)務的復雜性 235
22.2.1 保險與普通商品差異分析 235
22.2.2 業(yè)務復雜性分析 237
22.2.3 技術復雜性分析 237
22.3 設計目標、思路和原則 239
22.4 業(yè)務中臺領域建模 240
22.4.1 分解業(yè)務領域 240
22.4.2 核心能力中臺 241
22.4.3 通用能力中臺 244
22.5 業(yè)務單元化設計 251
22.5.1 單元化設計的前提 252
22.5.2 如何進行單元化設計 253
22.6 業(yè)務的融合 257
22.6.1 企業(yè)級前臺應用 258
22.6.2 業(yè)務和流程的融合 259
22.6.3 單元化的價值 262
22.7 中臺與后臺的解耦 263
22.8 數(shù)據(jù)的融合 265
22.8.1 在線數(shù)據(jù)服務 265
22.8.2 視圖數(shù)據(jù)服務 265
22.9 本章小結 266
第六部分 總結
第23章 微服務拆分和設計原則 270
23.1 微服務的演進策略 270
23.2 不同場景下的微服務建設策略 271
23.2.1 新建系統(tǒng) 271
23.2.2 單體遺留系統(tǒng) 272
23.3 DDD使用誤區(qū) 273
23.4 微服務設計原則 275
23.5 微服務拆分要考慮哪些因素 276
23.6 本章小結 277
第24章 分布式架構的關鍵設計 278
24.1 選擇什么樣的分布式數(shù)據(jù)庫 278
24.2 如何設計數(shù)據(jù)庫分庫主鍵 279
24.3 數(shù)據(jù)庫的數(shù)據(jù)同步和復制 279
24.4 跨庫關聯(lián)查詢如何處理 280
24.5 如何處理高頻熱點數(shù)據(jù) 280
24.6 前后序業(yè)務數(shù)據(jù)的處理 281
24.7 數(shù)據(jù)中臺與企業(yè)級數(shù)據(jù)集成 281
24.8 BFF與企業(yè)級業(yè)務編排和協(xié)同 282
24.9 分布式事務還是事件驅動機制 282
24.10 多中心多活設計 283
24.11 本章小結 283
結束語 284