第1章 解決方案架構(gòu)的含義 1
1.1 什么是解決方案架構(gòu) 2
1.2 解決方案架構(gòu)的演進 4
1.3 解決方案架構(gòu)為何如此重要 5
1.4 解決方案架構(gòu)的益處 5
1.4.1 滿足業(yè)務需求和交付質(zhì)量 7
1.4.2 選擇技術(shù)平臺 7
1.4.3 處理解決方案的約束和問題 7
1.4.4 協(xié)助資源和成本管理 8
1.4.5 管理解決方案交付和項目生命周期 8
1.4.6 解決非功能性需求 8
1.5 公有云中的解決方案架構(gòu) 9
1.5.1 什么是公有云 9
1.5.2 公有云、私有云和混合云 10
1.5.3 公有云架構(gòu) 10
1.5.4 公有云供應商和云服務產(chǎn)品 11
1.6 小結(jié) 12
第2章 組織中的解決方案架構(gòu)師 14
2.1 解決方案架構(gòu)師角色的類型 15
2.1.1 企業(yè)解決方案架構(gòu)師 17
2.1.2 解決方案架構(gòu)師 17
2.1.3 技術(shù)架構(gòu)師 18
2.1.4 云架構(gòu)師 18
2.1.5 架構(gòu)師布道者 18
2.1.6 基礎設施架構(gòu)師 19
2.1.7 網(wǎng)絡架構(gòu)師 19
2.1.8 數(shù)據(jù)架構(gòu)師 20
2.1.9 安全架構(gòu)師 21
2.1.10 DevOps架構(gòu)師 21
2.2 理解解決方案架構(gòu)師的職責 22
2.2.1 分析用戶需求 22
2.2.2 定義非功能性需求 23
2.2.3 與利益相關(guān)者的接觸與合作 25
2.2.4 處理各種架構(gòu)約束 25
2.2.5 技術(shù)選型 27
2.2.6 概念驗證和原型開發(fā) 27
2.2.7 設計解決方案并持續(xù)交付 28
2.2.8 確保發(fā)布后的可操作性和可維護性 29
2.2.9 擔任技術(shù)布道者 30
2.3 敏捷組織中的解決方案架構(gòu)師 30
2.3.1 為什么選擇敏捷方法論 30
2.3.2 敏捷宣言 31
2.4 小結(jié) 35
第3章 解決方案架構(gòu)的屬性 36
3.1 可伸縮性和彈性 37
3.1.1 容量伸縮困境 38
3.1.2 架構(gòu)伸縮 38
3.1.3 靜態(tài)內(nèi)容伸縮 40
3.1.4 服務器機群彈性 40
3.1.5 數(shù)據(jù)庫伸縮 40
3.2 高可用性和韌性 41
3.3 容錯和冗余 43
3.4 災難恢復與業(yè)務連續(xù)性 44
3.5 可擴展性與可重用性 45
3.6 易用性與可訪問性 46
3.7 可移植性與互操作性 47
3.8 卓越運維與可維護性 48
3.9 安全性與合規(guī)性 49
3.9.1 認證和授權(quán) 49
3.9.2 Web安全 50
3.9.3 網(wǎng)絡安全 50
3.9.4 基礎設施安全 50
3.9.5 數(shù)據(jù)安全 50
3.10 成本優(yōu)化與預算 51
3.11 小結(jié) 52
第4章 解決方案架構(gòu)的設計原則 53
4.1 工作負載的伸縮 54
4.1.1 可預測伸縮 54
4.1.2 被動伸縮 56
4.2 構(gòu)建有韌性的架構(gòu) 56
4.3 性能設計 58
4.4 使用可替換資源 59
4.5 考慮松耦合 60
4.6 考慮服務而非服務器 62
4.7 根據(jù)合理的需求選擇合適的存儲 63
4.8 考慮數(shù)據(jù)驅(qū)動的設計 65
4.9 克服約束 65
4.10 安全無處不在 67
4.11 自動化一切 67
4.12 小結(jié) 68
第5章 云遷移和混合云架構(gòu)設計 70
5.1 云原生架構(gòu)的好處 71
5.2 創(chuàng)建云遷移策略 72
5.2.1 Lift and Shift方法 73
5.2.2 云原生方法 75
5.2.3 Retain or Retire方法 76
5.3 云遷移的步驟 77
5.3.1 發(fā)現(xiàn)工作負載 78
5.3.2 分析信息 79
5.3.3 制訂遷移計劃 80
5.3.4 設計應用程序 83
5.3.5 執(zhí)行應用程序遷移上云 85
5.3.6 集成、驗證和切換 87
5.3.7 運維云應用程序 89
5.3.8 云上應用程序優(yōu)化 90
5.4 創(chuàng)建混合云架構(gòu) 91
5.5 設計云原生架構(gòu) 92
5.6 主流的公有云 94
5.7 小結(jié) 95
5.8 進一步閱讀 95
第6章 解決方案架構(gòu)設計模式 96
6.1 構(gòu)建N層架構(gòu) 97
6.1.1 Web層 97
6.1.2 應用層 99
6.1.3 數(shù)據(jù)庫層 99
6.2 創(chuàng)建基于SaaS的多租戶架構(gòu) 99
6.3 構(gòu)建無狀態(tài)和有狀態(tài)的架構(gòu) 101
6.4 理解SOA 103
6.4.1 基于SOAP的Web服務架構(gòu) 103
6.4.2 RESTful Web服務架構(gòu) 105
6.4.3 構(gòu)建基于SOA的電子商務網(wǎng)站架構(gòu) 106
6.5 構(gòu)建無服務器架構(gòu) 107
6.6 創(chuàng)建微服務架構(gòu) 109
6.7 構(gòu)建基于隊列的架構(gòu) 111
6.7.1 隊列鏈表模式 112
6.7.2 作業(yè)觀察者模式 113
6.8 創(chuàng)建事件驅(qū)動架構(gòu) 114
6.8.1 發(fā)布者/訂閱者模型 114
6.8.2 事件流模型 115
6.9 構(gòu)建基于緩存的架構(gòu) 116
6.9.1 三層Web架構(gòu)中的緩存分發(fā)模式 117
6.9.2 重命名分發(fā)模式 119
6.9.3 緩存代理模式 120
6.9.4 重寫代理模式 121
6.9.5 應用緩存模式 122
6.10 理解斷路器模式 123
6.11 實現(xiàn)隔板模式 124
6.12 構(gòu)建浮動IP模式 125
6.13 使用容器部署應用程序 126
6.13.1 容器的好處 127
6.13.2 容器化部署 128
6.14 應用程序架構(gòu)中的數(shù)據(jù)庫處理 129
6.15 避免解決方案架構(gòu)中的反模式 132
6.16 小結(jié) 133
第7章 性能考量 134
7.1 架構(gòu)性能的設計原則 134
7.1.1 降低延遲 135
7.1.2 提高吞吐量 136
7.1.3 處理并發(fā)問題 137
7.1.4 使用緩存 138
7.2 性能優(yōu)化的技術(shù)選型 139
7.2.1 計算能力選型 139
7.2.2 選擇存儲 144
7.2.3 選擇數(shù)據(jù)庫 147
7.2.4 選擇網(wǎng)絡 149
7.3 管理性能監(jiān)控 152
7.4 小結(jié) 153
第8章 安全考量 155
8.1 架構(gòu)安全的設計原則 155
8.1.1 實現(xiàn)認證和授權(quán)控制 156
8.1.2 安全無處不在 156
8.1.3 縮小爆炸半徑 157
8.1.4 時刻監(jiān)控和審計一切 157
8.1.5 自動化一切 157
8.1.6 數(shù)據(jù)保護 157
8.1.7 事件響應準備 158
8.2 架構(gòu)安全技術(shù)選型 158
8.2.1 用戶身份和訪問管理 158
8.2.2 處理網(wǎng)絡安全問題 165
8.2.3 保護應用程序及其基礎設施 169
8.2.4 數(shù)據(jù)安全 173
8.3 安全和合規(guī)認證 178
8.4 云的共享安全責任模型 178
8.5 小結(jié) 180
第9章 架構(gòu)可靠性考量 182
9.1 架構(gòu)可靠性的設計原則 182
9.1.1 使系統(tǒng)自愈 183
9.1.2 實現(xiàn)自動化 183
9.1.3 創(chuàng)建分布式系統(tǒng) 184
9.1.4 容量監(jiān)控 184
9.1.5 驗證恢復過程 184
9.2 架構(gòu)可靠性的技術(shù)選型 185
9.2.1 規(guī)劃RTO和RPO 185
9.2.2 數(shù)據(jù)復制 186
9.2.3 規(guī)劃災難恢復 188
9.2.4 災難恢復的實踐 195
9.3 利用云來提高可靠性 196
9.4 小結(jié) 197
第10章 卓越運維考量 198
10.1 卓越運維的設計原則 199
10.1.1 自動化運維 199
10.1.2 進行增量和可逆的變更 199
10.1.3 預測并響應故障 200
10.1.4 從錯誤中學習并改進 200
10.1.5 持續(xù)更新運維手冊 200
10.2 卓越運維的技術(shù)選型 201
10.2.1 卓越運維的規(guī)劃階段 201
10.2.2 卓越運維的執(zhí)行階段 204
10.2.3 卓越運維的改進階段 210
10.3 在公有云中實現(xiàn)卓越運維 212
10.4 小結(jié) 213
第11章 成本考量 215
11.1 成本優(yōu)化的設計原則 215
11.1.1 計算總擁有成本 216
11.1.2 規(guī)劃預算和預測 217
11.1.3 管理需求和服務目錄 218
11.1.4 跟蹤支出 219
11.1.5 持續(xù)成本優(yōu)化 219
11.2 成本優(yōu)化的技術(shù)選型 220
11.2.1 降低架構(gòu)復雜度 220
11.2.2 提高IT效率 221
11.2.3 實現(xiàn)標準化和架構(gòu)治理 222
11.2.4 成本監(jiān)控和報告 224
11.3 公有云上的成本優(yōu)化 227
11.4 小結(jié) 228
第12章 DevOps和解決方案架構(gòu)框架 230
12.1 DevOps介紹 231
12.2 DevOps的好處 231
12.3 DevOps的組成部分 232
12.3.1 CI/CD 233
12.3.2 持續(xù)監(jiān)控和改進 234
12.3.3 基礎設施即代碼 235
12.3.4 配置管理 235
12.4 什么是DevSecOps 236
12.5 結(jié)合DevSecOps和CI/CD 237
12.6 實施CD策略 238
12.6.1 就地部署 238
12.6.2 滾動部署 238
12.6.3 藍綠部署 238
12.6.4 紅黑部署 239
12.6.5 不可變部署 240
12.7 在CI/CD流水線中實施持續(xù)測試 240
12.8 CI/CD的DevOps工具 242
12.8.1 代碼編輯器 243
12.8.2 源代碼管理 243
12.8.3 CI服務器 243
12.8.4 代碼部署 245
12.8.5 代碼流水線 246
12.9 實施DevOps實踐 247
12.10 小結(jié) 248
第13章 數(shù)據(jù)工程和機器學習 249
13.1 什么是大數(shù)據(jù)架構(gòu) 250
13.2 大數(shù)據(jù)處理流水線設計 251
13.3 數(shù)據(jù)攝取 252
13.3.1 數(shù)據(jù)攝取的技術(shù)選型 253
13.3.2 數(shù)據(jù)攝取上云 254
13.4 數(shù)據(jù)存儲 255
13.5 數(shù)據(jù)處理和分析 262
13.6 數(shù)據(jù)可視化 265
13.7 理解物聯(lián)網(wǎng) 266
13.8 什么是機器學習 267
13.9 使用數(shù)據(jù)科學和機器學習 268
13.10 評估機器學習模型:過擬合與欠擬合 270
13.11 了解監(jiān)督學習和無監(jiān)督學習 270
13.12 小結(jié) 272
第14章 遺留系統(tǒng)架構(gòu)設計 273
14.1 遺留系統(tǒng)面臨的挑戰(zhàn) 274
14.1.1 難以滿足用戶需求 274
14.1.2 維護和更新費用較高 275
14.1.3 缺乏技能和文檔 275
14.1.4 存在安全風險 276
14.1.5 無法兼容其他系統(tǒng) 276
14.2 遺留系統(tǒng)現(xiàn)代化改造策略 277
14.2.1 系統(tǒng)現(xiàn)代化改造的好處 277
14.2.2 遺留系統(tǒng)的評估 279
14.2.3 現(xiàn)代化改造方案 279
14.2.4 文檔和支持 280
14.3 遺留系統(tǒng)現(xiàn)代化改造技術(shù) 280
14.3.1 封裝、重新托管和重新平臺化 281
14.3.2 重構(gòu)和重新架構(gòu) 282
14.3.3 重新設計和替換 282
14.4 遺留系統(tǒng)的云遷移策略 283
14.5 小結(jié) 284
第15章 解決方案架構(gòu)文檔 285
15.1 文檔目的 285
15.2 文檔視圖 286
15.3 文檔結(jié)構(gòu) 288
15.3.1 解決方案概述 289
15.3.2 業(yè)務上下文 290
15.3.3 概念解決方案概述 291
15.3.4 解決方案架構(gòu) 292
15.3.5 解決方案交付 295
15.3.6 解決方案管理 295
15.3.7 附錄 296
15.4 解決方案架構(gòu)的IT采購文檔 296
15.5 小結(jié) 297
第16章 學習軟技能,成為更優(yōu)秀的解決方案架構(gòu)師 298
16.1 掌握售前技能 299
16.2 向企業(yè)高管匯報 300
16.3 主人翁意識和責任心 301
16.4 定義戰(zhàn)略執(zhí)行以及目標與關(guān)鍵成果 301
16.5 著眼于大局 302
16.6 靈活性和適應性 303
16.7 設計思維 303
16.8 做一個動手寫代碼的程序員 305
16.9 持續(xù)學習,不斷進步 306
16.10 成為他人的導師 307
16.11 成為技術(shù)布道者和思想領袖 308
16.12 小結(jié) 308