本書首先介紹解決方案架構的基本原理、設計原則和屬性,這些內容將幫助你理解解決方案架構如何使跨企業的軟件項目受益。你將了解云遷移和應用程序現代化框架,并將使用微服務、事件驅動、基于緩存和無服務器模式來設計健壯的架構。然后,你將探索架構設計的主要考量,包括性能、可伸縮性、成本優化、安全性、卓越運營和DevOps。此外,你還將學習與大數據、機器學習和物聯網相關的先進概念。書末,你將掌握架構設計文檔和成為更好的解決方案架構師所必需的軟技能。
成為解決方案架構師,讓你有機會使用前沿的技術,并制定產品策略。本書將帶你了解成為一名成功的解決方案架構師所需要了解的基本概念、設計原則和模式、架構考量以及相關的新技術。
本書首先介紹了解決方案架構設計原則和屬性的基礎知識,幫助你了解解決方案架構如何使整個企業的軟件項目受益。其次,介紹了云遷移和混合云架構設計,以及如何使用微服務、事件驅動、基于緩存和無服務器等設計模式來開發現代架構。然后,探索了架構設計的主要考量,包括性能、可靠性、成本優化、安全性、卓越運維和DevOps。此外,還介紹了與大數據、機器學習和物聯網相關的高級概念。后,介紹了如何撰寫架構設計文檔,以及成為一名出色的解決方案架構師所必需的軟技能。通過閱讀本書,你將學到設計滿足業務需求的高效架構的技術。
【本書特色:】
探討解決方案架構師所扮演的各種角色,以及他們在企業中所發揮的作用。
從架構師的角度理解大數據處理、機器學習和物聯網等高級概念。
發現不同的解決方案架構模式,如事件驅動和微服務模式。
找到讓自己跟上技術更新并提高技能的方法。
借助云遷移實現遺留系統的現代化改造。
選擇合適的戰略以降低成本。
本書介紹云環境下的解決方案架構和下一代架構設計,引導讀者創建健壯、可伸縮、高可用且容錯的解決方案。本書首先闡述對解決方案架構的理解,以及它如何適應敏捷的企業環境。通過介紹關于設計理念、高級設計模式、反模式以及現代軟件設計的云原生方面的詳細知識,帶領讀者完成解決方案架構設計的歷程。
本書對安全性、基礎設施、DevOps、災難恢復的自動化以及解決方案架構的文檔等方面均提供了深刻的解釋。讀者可以深入探究解決方案設計中的性能優化、安全性、合規性、可靠性、成本優化和卓越運維。此外,讀者還將了解云平臺(如Amazon Web Services(AWS))中的各種架構設計,以及如何好地利用云平臺來滿足解決方案設計、現代化和遷移的需求。
本書還闡述了面向未來的架構設計與數據工程、機器學習和物聯網(Internet of Things,IoT)的聯系。此外,本書還將提供軟技能方面的知識,幫助你提升解決方案架構技能和持續學習技巧。讀完本書后,你將獲得成為解決方案架構師所的技能,開啟職業生涯的新篇章。
【目標讀者】
本書適合從事IT行業的軟件開發人員、系統工程師、DevOps工程師、架構師和團隊負責人,以及有志于成為解決方案架構師并熱衷于設計安全、可靠、高性能和高性價比的架構的人閱讀。
【本書涵蓋的內容 】
第1章主要定義解決方案架構并解釋其重要性。本章詮釋了采用解決方案架構的各種益處,并探討了在公有云上的架構設計。
第2章講述不同類型的解決方案架構師角色,以及他們如何融入組織結構。本章詳細探討了解決方案架構師的各種職責,并進一步說明了解決方案架構師在敏捷組織中的作用及如何與敏捷流程相適應。
第3章揭示解決方案架構的各種屬性,如可伸縮性、韌性、災難恢復、可訪問性、可用性、安全性和成本。本章解釋了這些架構屬性的共存和使用原則,以創建高效的解決方案設計。
第4章講述創建可伸縮、韌性和高性能架構的設計原則。本章通過應用安全性、克服約束、應用變更以及測試和自動化方法解釋了什么是有效的架構設計,并通過探索面向服務的架構和采取數據驅動的方法來研究架構原則,從而有效地使用設計思維。
第5章解釋云的優勢和設計云原生架構的方法。本章闡述了對于不同云遷移策略和遷移步驟的理解,討論了混合云設計,并探討了受歡迎的公有云供應商。
第6章通過實例探討各種架構設計模式,如分層、微服務、事件驅動、基于隊列、無服務器、基于緩存和面向服務等模式。本章展示了解決方案架構屬性和原則的適用性,以根據業務需求設計架構,并解釋了AWS云平臺中的各種參考架構。
第7章闡述應用程序性能提升的關鍵屬性,如延遲、吞吐量和并發性。本章解釋了在多個架構層級提高性能的各種技術選型,包括計算、存儲、數據庫和網絡,以及性能監控。
第8章討論適用于保護工作負載安全的各種設計原則。安全性需要應用于架構的每一層和每一個組件,本章有助于了解正確的技術選型,以確保架構的每一層級都是安全的。本章探討了適用于架構設計的行業合規性準則,并通過共享安全責任模型解釋了云中的安全問題。
第9章對促使架構可靠的設計原則進行討論。本章探討了各種用于確保應用程序的高可用性的災難恢復技術,以及用于業務流程連續性的數據復制方法,解釋了實踐和云在應用程序中實現可靠性的作用。
第10章論述在應用程序中實現卓越運維的各種流程和方法。本章解釋了適用于應用程序設計、實現和后期生產全流程的實踐和技術選型,以提高應用程序的可運維性,還探討了云工作負載的卓越運維。
第11章討論在不影響業務敏捷性的情況下優化成本的各種技術。本章解釋了用于監控成本和成本控制治理的多種方法,有助于讀者理解云服務使用的成本優化。
第12章解釋DevOps在應用程序部署、測試和安全方面的重要性。本章探討了DevSecOps及其在應用程序的持續部署和交付流程中的作用,講述了DevOps的實踐以及實現這些實踐的工具和技術。
第13章講述如何設計大數據和分析架構。本章概述了創建大數據流水線的步驟,包括數據攝取、存儲、處理和可視化,幫助讀者理解物聯網所涉及的概念和技術,本章還探討了有關機器學習、模型評估技術的詳細信息,并對各種機器學習算法進行了概述。
第14章講述遺留系統的各種挑戰和現代化驅動因素。本章解釋了對遺留系統進行現代化改造的策略和技術。對許多組織來說,使用公有云正在成為策略,因此本章還探討了遺留系統的云遷移。
第15章討論解決方案架構文檔及其結構以及所需的各種細節。本章研究了各種IT采購文檔(解決方案架構師需要參與其中以提供反饋)。
第16章講述勝任解決方案架構師所必需的各種軟技能,有助于讀者了解如何獲得戰略技能(如售前和高層溝通)、發展設計思維以及個人領導技能(如大局觀和主人翁意識)。本章探討了將自己打造成領導者并不斷拓展自身技能的技巧。
所羅伯·斯里瓦斯塔瓦(Saurabh Shrivastava)
Amazon Web Services(AWS)解決方案架構師團隊負責人,幫助全球咨詢合作伙伴和企業客戶展開云計算服務。是一名技術領導者、作家、發明家,擁有云平臺自動化領域的專利。
內拉賈利·斯里瓦斯塔夫(Neelanjali Srivastav)
是一名有超過14 年的經驗技術領導者、敏捷教練和云計算從業者,為大型企業實現IT 系統的現代化并開發創新的軟件解決方案。
【譯者簡介】
陳亮 資深解決方案架構師,《Kubernetes實戰》譯者。擁有10年以上軟件開發經驗,負責過眾多國內外高端定制項目的交付,曾為多家大型企業提供Cloud Native、質量內建、DDD(領域驅動設計)等相關咨詢與培訓服務,對于敏捷開發、DevOps、DDD、微服務架構有著豐富的經驗。
王磊 資深解決方案架構師,譯有《Kubernetes實戰》《如何寫出好程序》。擁有15年以上軟件開發經驗,覆蓋金融、通信、互聯網、汽車等行業。對于微服務架構、DDD、敏捷工程實踐、DevOps流程與技術、分布式開發、數據庫性能調優及開發有著豐富的經驗。
訓杰 資深解決方案架構師,譯有《演進式架構》《如何寫出好程序》。擁有10年以上軟件開發相關經驗以及豐富的企業級和互聯網應用的開發架構實戰經驗,擅長遺留系統改造及企業數字化平臺建設。
萬學凡 數字化轉型專家,資深管理顧問,InfoQ2020年中國十大IT產業推動者。譯有《EDGE:價值驅動的數字化轉型》《內容智能:打贏每一場運營戰爭》《AI重新定義企業:從微軟等真實案例中學習》《回顧活動引導:24個反模式與重構實踐》等。
第1章 解決方案架構的含義 1
1.1 什么是解決方案架構 2
1.2 解決方案架構的演進 4
1.3 解決方案架構為何如此重要 5
1.4 解決方案架構的益處 5
1.4.1 滿足業務需求和交付質量 7
1.4.2 選擇技術平臺 7
1.4.3 處理解決方案的約束和問題 7
1.4.4 協助資源和成本管理 8
1.4.5 管理解決方案交付和項目生命周期 8
1.4.6 解決非功能性需求 8
1.5 公有云中的解決方案架構 9
1.5.1 什么是公有云 9
1.5.2 公有云、私有云和混合云 10
1.5.3 公有云架構 10
1.5.4 公有云供應商和云服務產品 11
1.6 小結 12
第2章 組織中的解決方案架構師 14
2.1 解決方案架構師角色的類型 15
2.1.1 企業解決方案架構師 17
2.1.2 解決方案架構師 17
2.1.3 技術架構師 18
2.1.4 云架構師 18
2.1.5 架構師布道者 18
2.1.6 基礎設施架構師 19
2.1.7 網絡架構師 19
2.1.8 數據架構師 20
2.1.9 安全架構師 21
2.1.10 DevOps架構師 21
2.2 理解解決方案架構師的職責 22
2.2.1 分析用戶需求 22
2.2.2 定義非功能性需求 23
2.2.3 與利益相關者的接觸與合作 25
2.2.4 處理各種架構約束 25
2.2.5 技術選型 27
2.2.6 概念驗證和原型開發 27
2.2.7 設計解決方案并持續交付 28
2.2.8 確保發布后的可操作性和可維護性 29
2.2.9 擔任技術布道者 30
2.3 敏捷組織中的解決方案架構師 30
2.3.1 為什么選擇敏捷方法論 30
2.3.2 敏捷宣言 31
2.4 小結 35
第3章 解決方案架構的屬性 36
3.1 可伸縮性和彈性 37
3.1.1 容量伸縮困境 38
3.1.2 架構伸縮 38
3.1.3 靜態內容伸縮 40
3.1.4 服務器機群彈性 40
3.1.5 數據庫伸縮 40
3.2 高可用性和韌性 41
3.3 容錯和冗余 43
3.4 災難恢復與業務連續性 44
3.5 可擴展性與可重用性 45
3.6 易用性與可訪問性 46
3.7 可移植性與互操作性 47
3.8 卓越運維與可維護性 48
3.9 安全性與合規性 49
3.9.1 認證和授權 49
3.9.2 Web安全 50
3.9.3 網絡安全 50
3.9.4 基礎設施安全 50
3.9.5 數據安全 50
3.10 成本優化與預算 51
3.11 小結 52
第4章 解決方案架構的設計原則 53
4.1 工作負載的伸縮 54
4.1.1 可預測伸縮 54
4.1.2 被動伸縮 56
4.2 構建有韌性的架構 56
4.3 性能設計 58
4.4 使用可替換資源 59
4.5 考慮松耦合 60
4.6 考慮服務而非服務器 62
4.7 根據合理的需求選擇合適的存儲 63
4.8 考慮數據驅動的設計 65
4.9 克服約束 65
4.10 安全無處不在 67
4.11 自動化一切 67
4.12 小結 68
第5章 云遷移和混合云架構設計 70
5.1 云原生架構的好處 71
5.2 創建云遷移策略 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 發現工作負載 78
5.3.2 分析信息 79
5.3.3 制訂遷移計劃 80
5.3.4 設計應用程序 83
5.3.5 執行應用程序遷移上云 85
5.3.6 集成、驗證和切換 87
5.3.7 運維云應用程序 89
5.3.8 云上應用程序優化 90
5.4 創建混合云架構 91
5.5 設計云原生架構 92
5.6 主流的公有云 94
5.7 小結 95
5.8 進一步閱讀 95
第6章 解決方案架構設計模式 96
6.1 構建N層架構 97
6.1.1 Web層 97
6.1.2 應用層 99
6.1.3 數據庫層 99
6.2 創建基于SaaS的多租戶架構 99
6.3 構建無狀態和有狀態的架構 101
6.4 理解SOA 103
6.4.1 基于SOAP的Web服務架構 103
6.4.2 RESTful Web服務架構 105
6.4.3 構建基于SOA的電子商務網站架構 106
6.5 構建無服務器架構 107
6.6 創建微服務架構 109
6.7 構建基于隊列的架構 111
6.7.1 隊列鏈表模式 112
6.7.2 作業觀察者模式 113
6.8 創建事件驅動架構 114
6.8.1 發布者/訂閱者模型 114
6.8.2 事件流模型 115
6.9 構建基于緩存的架構 116
6.9.1 三層Web架構中的緩存分發模式 117
6.9.2 重命名分發模式 119
6.9.3 緩存代理模式 120
6.9.4 重寫代理模式 121
6.9.5 應用緩存模式 122
6.10 理解斷路器模式 123
6.11 實現隔板模式 124
6.12 構建浮動IP模式 125
6.13 使用容器部署應用程序 126
6.13.1 容器的好處 127
6.13.2 容器化部署 128
6.14 應用程序架構中的數據庫處理 129
6.15 避免解決方案架構中的反模式 132
6.16 小結 133
第7章 性能考量 134
7.1 架構性能的設計原則 134
7.1.1 降低延遲 135
7.1.2 提高吞吐量 136
7.1.3 處理并發問題 137
7.1.4 使用緩存 138
7.2 性能優化的技術選型 139
7.2.1 計算能力選型 139
7.2.2 選擇存儲 144
7.2.3 選擇數據庫 147
7.2.4 選擇網絡 149
7.3 管理性能監控 152
7.4 小結 153
第8章 安全考量 155
8.1 架構安全的設計原則 155
8.1.1 實現認證和授權控制 156
8.1.2 安全無處不在 156
8.1.3 縮小爆炸半徑 157
8.1.4 時刻監控和審計一切 157
8.1.5 自動化一切 157
8.1.6 數據保護 157
8.1.7 事件響應準備 158
8.2 架構安全技術選型 158
8.2.1 用戶身份和訪問管理 158
8.2.2 處理網絡安全問題 165
8.2.3 保護應用程序及其基礎設施 169
8.2.4 數據安全 173
8.3 安全和合規認證 178
8.4 云的共享安全責任模型 178
8.5 小結 180
第9章 架構可靠性考量 182
9.1 架構可靠性的設計原則 182
9.1.1 使系統自愈 183
9.1.2 實現自動化 183
9.1.3 創建分布式系統 184
9.1.4 容量監控 184
9.1.5 驗證恢復過程 184
9.2 架構可靠性的技術選型 185
9.2.1 規劃RTO和RPO 185
9.2.2 數據復制 186
9.2.3 規劃災難恢復 188
9.2.4 災難恢復的實踐 195
9.3 利用云來提高可靠性 196
9.4 小結 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 持續更新運維手冊 200
10.2 卓越運維的技術選型 201
10.2.1 卓越運維的規劃階段 201
10.2.2 卓越運維的執行階段 204
10.2.3 卓越運維的改進階段 210
10.3 在公有云中實現卓越運維 212
10.4 小結 213
第11章 成本考量 215
11.1 成本優化的設計原則 215
11.1.1 計算總擁有成本 216
11.1.2 規劃預算和預測 217
11.1.3 管理需求和服務目錄 218
11.1.4 跟蹤支出 219
11.1.5 持續成本優化 219
11.2 成本優化的技術選型 220
11.2.1 降低架構復雜度 220
11.2.2 提高IT效率 221
11.2.3 實現標準化和架構治理 222
11.2.4 成本監控和報告 224
11.3 公有云上的成本優化 227
11.4 小結 228
第12章 DevOps和解決方案架構框架 230
12.1 DevOps介紹 231
12.2 DevOps的好處 231
12.3 DevOps的組成部分 232
12.3.1 CI/CD 233
12.3.2 持續監控和改進 234
12.3.3 基礎設施即代碼 235
12.3.4 配置管理 235
12.4 什么是DevSecOps 236
12.5 結合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流水線中實施持續測試 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 小結 248
第13章 數據工程和機器學習 249
13.1 什么是大數據架構 250
13.2 大數據處理流水線設計 251
13.3 數據攝取 252
13.3.1 數據攝取的技術選型 253
13.3.2 數據攝取上云 254
13.4 數據存儲 255
13.5 數據處理和分析 262
13.6 數據可視化 265
13.7 理解物聯網 266
13.8 什么是機器學習 267
13.9 使用數據科學和機器學習 268
13.10 評估機器學習模型:過擬合與欠擬合 270
13.11 了解監督學習和無監督學習 270
13.12 小結 272
第14章 遺留系統架構設計 273
14.1 遺留系統面臨的挑戰 274
14.1.1 難以滿足用戶需求 274
14.1.2 維護和更新費用較高 275
14.1.3 缺乏技能和文檔 275
14.1.4 存在安全風險 276
14.1.5 無法兼容其他系統 276
14.2 遺留系統現代化改造策略 277
14.2.1 系統現代化改造的好處 277
14.2.2 遺留系統的評估 279
14.2.3 現代化改造方案 279
14.2.4 文檔和支持 280
14.3 遺留系統現代化改造技術 280
14.3.1 封裝、重新托管和重新平臺化 281
14.3.2 重構和重新架構 282
14.3.3 重新設計和替換 282
14.4 遺留系統的云遷移策略 283
14.5 小結 284
第15章 解決方案架構文檔 285
15.1 文檔目的 285
15.2 文檔視圖 286
15.3 文檔結構 288
15.3.1 解決方案概述 289
15.3.2 業務上下文 290
15.3.3 概念解決方案概述 291
15.3.4 解決方案架構 292
15.3.5 解決方案交付 295
15.3.6 解決方案管理 295
15.3.7 附錄 296
15.4 解決方案架構的IT采購文檔 296
15.5 小結 297
第16章 學習軟技能,成為更優秀的解決方案架構師 298
16.1 掌握售前技能 299
16.2 向企業高管匯報 300
16.3 主人翁意識和責任心 301
16.4 定義戰略執行以及目標與關鍵成果 301
16.5 著眼于大局 302
16.6 靈活性和適應性 303
16.7 設計思維 303
16.8 做一個動手寫代碼的程序員 305
16.9 持續學習,不斷進步 306
16.10 成為他人的導師 307
16.11 成為技術布道者和思想領袖 308
16.12 小結 308