在軟件開發(fā)流程中,為了盡可能快地響應(yīng)各種變化,理應(yīng)把結(jié)構(gòu)漸進(jìn)改變作為設(shè)計(jì)的首要原則!堆葸M(jìn)式架構(gòu)》詳盡闡述了演進(jìn)式架構(gòu)的必要性、構(gòu)建方法以及需要注意的問題。各章結(jié)合案例分別討論了軟件架構(gòu)、適應(yīng)度函數(shù)、開展增量變更、架構(gòu)耦合、演進(jìn)式數(shù)據(jù)、構(gòu)建可演進(jìn)的架構(gòu)、演進(jìn)式架構(gòu)的陷阱和反模式,以及實(shí)踐演進(jìn)式架構(gòu)。
《演進(jìn)式架構(gòu)》由IT行業(yè)領(lǐng)導(dǎo)企業(yè)ThoughtWorks的CTO和架構(gòu)專家聯(lián)合執(zhí)筆,詳盡介紹了演進(jìn)式架構(gòu)的必要性以及如何在具體的軟件開發(fā)流程中實(shí)現(xiàn)演進(jìn)式架構(gòu),涵蓋了適應(yīng)度函數(shù)、增量變更、架構(gòu)耦合、演進(jìn)式數(shù)據(jù)、構(gòu)架可演進(jìn)的架構(gòu)、實(shí)踐演進(jìn)式架構(gòu)等內(nèi)容。
1.敏捷之父、暢銷書《重構(gòu) 改善既有代碼的設(shè)計(jì)》作者、世界知名軟件開發(fā)大師馬丁·福勒傾情作序推薦;
2.《演進(jìn)式架構(gòu)》為O'Reilly系列叢書,“動(dòng)物書”多年來已經(jīng)成為廣大程序員解決問題的實(shí)用指南;
3.作者和譯者均為業(yè)內(nèi)資-深架構(gòu)專家,書本內(nèi)容為他們多年來的實(shí)戰(zhàn)經(jīng)驗(yàn),讓讀者在軟件開發(fā)時(shí)少走彎路;
4.《演進(jìn)式架構(gòu)》著眼于理論、立足于實(shí)踐,每一個(gè)章節(jié)都有豐富的案例研究,讓讀者在閱讀此書后可以充分了解并掌握演進(jìn)式架構(gòu);
尼爾·福特(Neal Ford)是ThoughtWorks軟件架構(gòu)師、Meme Wrangler,曾任DSW集團(tuán)CTO,是國際公認(rèn)的軟件開發(fā)與交付專家。
麗貝卡·帕森斯(Rebecca Parsons)是ThoughtWorks CTO,在大規(guī)模分布式對(duì)象應(yīng)用開發(fā)和系統(tǒng)集成方面擁有豐富經(jīng)驗(yàn)。
帕特里卡·柯(Patrick Kua)是數(shù)字銀行N26科學(xué)家,曾任ThoughtWorks主任咨詢師和技術(shù)主管,在敏捷和精益開發(fā)方面擁有豐富經(jīng)驗(yàn)。
版權(quán)聲明 ii
O'Reilly Media, Inc.介紹 iv
序 ix
前言 xi
第 1章 軟件架構(gòu) 1
1.1 演進(jìn)式架構(gòu) 2
1.1.1 一切都在變化,如何才能長期規(guī)劃 3
1.1.2 完成架構(gòu)構(gòu)建后,如何防止它逐漸退化 4
1.2 增量變更 5
1.3 引導(dǎo)性變更 6
1.4 多個(gè)架構(gòu)維度 6
1.5 康威定律 8
1.6 為何演進(jìn) 10
1.7 小結(jié) 11
第 2章 適應(yīng)度函數(shù) 13
2.1 什么是適應(yīng)度函數(shù) 15
2.2 適應(yīng)度函數(shù)分類 16
2.2.1 原子適應(yīng)度函數(shù)與整體適應(yīng)度函數(shù) 16
2.2.2 觸發(fā)式適應(yīng)度函數(shù)與持續(xù)式適應(yīng)度函數(shù) 16
2.2.3 靜態(tài)適應(yīng)度函數(shù)與動(dòng)態(tài)適應(yīng)度函數(shù) 17
2.2.4 自動(dòng)適應(yīng)度函數(shù)與手動(dòng)適應(yīng)度函數(shù) 17
2.2.5 臨時(shí)適應(yīng)度函數(shù) 18
2.2.6 預(yù)設(shè)式高于應(yīng)急式 18
2.2.7 針對(duì)特定領(lǐng)域的適應(yīng)度函數(shù) 18
2.3 盡早確定適應(yīng)度函數(shù) 18
2.4 審查適應(yīng)度函數(shù) 19
第3章 實(shí)施增量變更 21
3.1 構(gòu)件 24
3.1.1 可測(cè)試性 25
3.1.2 部署流水線 26
3.1.3 組合不同類型的適應(yīng)度函數(shù) 30
3.1.4 案例研究:在每天部署60次的情況下重建架構(gòu) 31
3.1.5 目標(biāo)沖突 33
3.1.6 案例研究:為PenultimateWidgets的發(fā)票服務(wù)添加適應(yīng)度函數(shù) 33
3.2 假設(shè)驅(qū)動(dòng)開發(fā)和數(shù)據(jù)驅(qū)動(dòng)開發(fā) 36
3.3 案例研究:移植什么 37
第4章 架構(gòu)耦合 39
4.1 模塊化 39
4.2 架構(gòu)的量子和粒度 40
4.3 不同類型架構(gòu)的演進(jìn)能力 42
4.3.1 大泥團(tuán)架構(gòu) 42
4.3.2 單體架構(gòu) 44
4.3.3 事件驅(qū)動(dòng)架構(gòu) 49
4.3.4 服務(wù)導(dǎo)向架構(gòu) 53
4.3.5 “無服務(wù)”架構(gòu) 62
4.4 控制架構(gòu)量子大小 63
4.5 案例分析:防止組件循環(huán)依賴 64
第5章 演進(jìn)式數(shù)據(jù) 67
5.1 演進(jìn)式數(shù)據(jù)庫設(shè)計(jì) 67
5.1.1 數(shù)據(jù)庫模式演進(jìn) 67
5.1.2 共享數(shù)據(jù)庫集成 69
5.2 不當(dāng)?shù)臄?shù)據(jù)耦合 73
5.2.1 二階段提交事務(wù) 74
5.2.2 數(shù)據(jù)的年齡和質(zhì)量 75
5.3 案例研究:PenultimateWidgets的路由演進(jìn) 76
第6章 構(gòu)建可演進(jìn)的架構(gòu) 79
6.1 演進(jìn)機(jī)制 79
6.1.1 識(shí)別受演進(jìn)影響的架構(gòu)維度 79
6.1.2 為每個(gè)維度定義適應(yīng)度函數(shù) 80
6.1.3 使用部署流水線自動(dòng)化適應(yīng)度函數(shù) 80
6.2 全新的項(xiàng)目 80
6.3 改良現(xiàn)有架構(gòu) 81
6.3.1 適當(dāng)?shù)鸟詈虾蛢?nèi)聚 81
6.3.2 工程實(shí)踐 81
6.3.3 適應(yīng)度函數(shù) 82
6.3.4 關(guān)于商業(yè)成品軟件 82
6.4 架構(gòu)遷移 83
6.4.1 遷移步驟 84
6.4.2 演進(jìn)模塊間的交互 86
6.5 演進(jìn)式架構(gòu)構(gòu)建指南 89
6.5.1 去除不必要的可變性 89
6.5.2 讓決策可逆 91
6.5.3 演進(jìn)優(yōu)于預(yù)測(cè) 91
6.5.4 構(gòu)建防腐層 92
6.5.5 案例分析:服務(wù)模板 93
6.5.6 構(gòu)建可犧牲架構(gòu) 94
6.5.7 應(yīng)對(duì)外部變化 95
6.5.8 更新庫與更新框架 97
6.5.9 持續(xù)交付優(yōu)于快照 97
6.5.10 服務(wù)內(nèi)部版本化 98
6.6 案例分析:PenultimateWidgets的評(píng)分服務(wù)演進(jìn) 99
第7章 演進(jìn)式架構(gòu)的陷阱和反模式 103
7.1 技術(shù)架構(gòu) 103
7.1.1 反模式:供應(yīng)商為王 103
7.1.2 陷阱:抽象泄漏 104
7.1.3 反模式:最后10%的陷阱 107
7.1.4 反模式:代碼復(fù)用和濫用 108
7.1.5 案例研究:PenultimateWidgets中的復(fù)用 109
7.1.6 陷阱:簡(jiǎn)歷驅(qū)動(dòng)開發(fā) 110
7.2 增量變更 111
7.2.1 反模式:管理不當(dāng) 111
7.2.2 案例研究:PenultimateWidgets的“金發(fā)姑娘”管理 112
7.2.3 陷阱:發(fā)布過慢 113
7.3 業(yè)務(wù)問題 114
7.3.1 陷阱:產(chǎn)品定制 114
7.3.2 反模式:報(bào)表 115
7.3.3 陷阱:規(guī)劃視野 116
第8章 實(shí)踐演進(jìn)式架構(gòu) 119
8.1 組織因素 119
8.1.1 全功能團(tuán)隊(duì) 119
8.1.2 圍繞業(yè)務(wù)能力組織團(tuán)隊(duì) 121
8.1.3 產(chǎn)品高于項(xiàng)目 121
8.1.4 應(yīng)對(duì)外部變化 122
8.1.5 團(tuán)隊(duì)成員間的連接數(shù) 123
8.2 團(tuán)隊(duì)的耦合特征 124
8.2.1 文化 124
8.2.2 試驗(yàn)文化 125
8.3 首席財(cái)務(wù)官和預(yù)算 126
8.4 構(gòu)建企業(yè)適應(yīng)度函數(shù) 128
8.5 從何開始 129
8.5.1 容易實(shí)現(xiàn)的目標(biāo) 129
8.5.2 最高價(jià)值優(yōu)先 129
8.5.3 測(cè)試 129
8.5.4 基礎(chǔ)設(shè)施 130
8.5.5 PenultimateWidgets的企業(yè)架構(gòu)師 131
8.6 演進(jìn)式架構(gòu)的未來 131
8.6.1 基于AI的適應(yīng)度函數(shù) 132
8.6.2 生成式測(cè)試 132
8.7 為什么(不)呢 132
8.7.1 公司為何決定構(gòu)建演進(jìn)式架構(gòu) 132
8.7.2 案例分析:PenultimateWidgets選擇性伸展 134
8.7.3 企業(yè)為何選擇不構(gòu)建演進(jìn)式架構(gòu) 135
8.7.4 說服他人 136
8.7.5 案例分析:“咨詢?nèi)岬馈薄?36
8.8 商業(yè)案例 136
8.8.1 未來已來…… 136
8.8.2 沒有后顧之憂地快速前行 137
8.8.3 風(fēng)險(xiǎn)更低 137
8.8.4 新能力 137
8.9 構(gòu)建演進(jìn)式架構(gòu) 137
關(guān)于作者 139
封面介紹 140