演進式架構 Building Evolutionary Architectures: Support Constant Change

Neal Ford, Rebecca Parsons, Patrick Kua

  • 演進式架構-preview-1
  • 演進式架構-preview-2
演進式架構-preview-1

買這商品的人也買了...

商品描述

在軟件開發流程中,為了盡可能快地響應各種變化,理應把結構漸進改變作為設計的首要原則。《演進式架構》詳盡闡述了演進式架構的必要性、構建方法以及需要註意的問題。各章結合案例分別討論了軟件架構、適應度函數、開展增量變更、架構耦合、演進式數據、構建可演進的架構、演進式架構的陷阱和反模式,以及實踐演進式架構。

作者簡介

尼爾·福特(Neal Ford)是ThoughtWorks軟件架構師、Meme Wrangler,曾任DSW集團CTO,是國際公認的軟件開發與交付專家。


麗貝卡·帕森斯(Rebecca Parsons)是ThoughtWorks CTO,在大規模分佈式對象應用開發和系統集成方面擁有豐富經驗。


帕特里卡·柯(Patrick Kua)是數字銀行N26科學家,曾任ThoughtWorks主任諮詢師和技術主管,在敏捷和精益開發方面擁有豐富經驗。

目錄大綱

版權聲明ii
O'Reilly Media, Inc.介紹iv
序ix
前言xi

第1章軟件架構1
1.1演進式架構2
1.1.1一切都在變化,如何才能長期規劃3
1.1.2完成架構構建後,如何防止它逐漸退化4
1.2增量變更5
1.3引導性變更6
1.4多個架構維度6
1.5康威定律8
1.6為何演進10
1.7小結11

第2章適應度函數13
2.1什麼是適應度函數15
2.2適應度函數分類16
2.2.1原子適應度函數與整體適應度函數16
2.2.2觸發式適應度函數與持續式適應度函數16
2.2. 3靜態適應度函數與動態適應度函數17
2.2.4自動適應度函數與手動適應度函數17
2.2.5臨時適應度函數18
2.2.6預設式高於應急式18
2 .2.7針對特定領域的適應度函數18
2.3儘早確定適應度函數18
2.4審查適應度函數19

第3章實施增量變更21
3.1構件24
3.1.1可測試性25
3.1.2部署流水線26
3.1.3組合不同類型的適應度函數30
3.1.4案例研究:在每天部署60次的情況下重建架構31
3.1.5目標衝突33
3. 1.6案例研究:為PenultimateWidgets的發票服務添加適應度函數33
3.2假設驅動開發和數據驅動開發36
3.3案例研究:移植什麼37

第4章架構耦合39
4.1模塊化39
4. 2架構的量子和粒度40
4.3不同類型架構的演進能力42
4.3.1大泥團架構42
4.3.2單體架構44
4.3.3事件驅動架構49
4.3.4服務導向架構53
4.3.5 “無服務”架構62
4.4控制架構量子大小63
4.5案例分析:防止組件循環依賴64

第5章演進式數據67
5.1演進式數據庫設計67
5 .1.1數據庫模式演進67
5.1.2共享數據庫集成69
5.2不當的數據耦合73
5.2.1二階段提交事務74
5.2.2數據的年齡和質量75
5.3案例研究:PenultimateWidgets的路由演進76

第6章構建可演進的架構79
6.1演進機制79
6.1.1識別受演進影響的架構維度79
6.1.2為每個維度定義適應度函數80
6.1.3使用部署流水線自動化適應度函數80
6.2全新的項目80
6.3改良現有架構81
6.3.1適當的耦合和內聚81
6.3.2工程實踐81
6.3.3適應度函數82
6.3.4關於商業成品軟件82
6.4架構遷移83
6.4.1遷移步驟84
6.4.2演進模塊間的交互86
6.5演進式架構構建指南89
6.5.1去除不必要的可變性89
6.5. 2讓決策可逆91
6.5.3演進優於預測91
6.5.4構建防腐層92
6.5.5案例分析:服務模板93
6.5.6構建可犧牲架構94
6.5.7應對外部變化95
6.5.8更新庫與更新框架97
6.5.9持續交付優於快照97
6.5.10服務內部版本化98
6.6案例分析:PenultimateWidgets的評分服務演進99

第7章演進式架構的陷阱和反模式103
7.1技術架構103
7.1.1反模式:供應商為王103
7.1.2陷阱:抽象洩漏104
7.1.3反模式:最後10%的陷阱107
7.1.4反模式:代碼復用和濫用108
7.1.5案例研究:PenultimateWidgets中的複用109
7.1.6陷阱:簡歷驅動開發110
7.2增量變更111
7.2.1反模式:管理不當111
7.2.2案例研究:PenultimateWidgets的“金發姑娘”管理112
7.2.3陷阱:發布過慢113
7.3業務問題114
7.3.1陷阱:產品定制114
7.3.2反模式:報表115
7.3 .3陷阱:規劃視野116

第8章實踐演進式架構119
8.1組織因素119
8.1.1全功能團隊119
8.1.2圍繞業務能力組織團隊121
8.1.3產品高於項目121
8.1.4應對外部變化122
8.1.5團隊成員間的連接數123
8.2團隊的耦合特徵124
8.2.1文化124
8.2.2試驗文化125
8.3首席財務官和預算126
8.4構建企業適應度函數128
8.5從何開始129
8.5.1容易實現的目標129
8.5.2最高價值優先129
8.5.3測試129
8.5.4基礎設施130
8.5.5 PenultimateWidgets的企業架構師131
8.6演進式架構的未來131
8.6.1基於AI的適應度函數132
8.6.2生成式測試132
8.7為什麼(不)呢132
8.7.1公司為何決定構建演進式架構132
8.7.2案例分析:PenultimateWidgets選擇性伸展134
8.7.3企業為何選擇不構建演進式架構135
8.7.4說服他人136
8.7.5案例分析:“諮詢柔道” 136
8.8商業案例136
8.8.1未來已來…… 136
8.8.2沒有後顧之憂地快速前行137
8.8.3風險更低137
8.8.4新能力137
8. 9構建演進式架構137

關於作者139
封面介紹140