可伸縮架構(第2版):雲環境下的高可用與風險管理

張若飛

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

商品描述

本書是一本關於現代化軟件架構的書。書中介紹瞭如何構建和更新你的關鍵應用程序來滿足日益苛刻的數字化客戶的需求。書中還介紹瞭如何實現高可用性,如何使用現代化的開發和運維技術來架構應用程序,如何組織開發團隊幫助應用程序和業務獲得成功,如何將系統擴展到最大規模,以及如何利用雲計算的可用資源來迎接上述挑戰。本書的目標讀者包括構建和管理大規模應用程序和系統的軟件工程師、架構師、技術經理及總監。如果你管理著軟件開發人員、系統可靠性工程師、DevOps 工程師,或者經營著一個擁有大規模應用程序和系統的機構,本書中所提供的建議和指導都能夠幫助你,讓你的系統運行得更加平穩和可靠。

目錄大綱

序.................................................................................. xvii
前言................................................................................ xx
第Ⅰ部分 原則 1. 可用性 :維護現代化應用程序的可用性
第 1 章 理解、測量和提高可用性............................................... 2
可用性與可靠性 ............................................................................................................3
什麽導致了低可用性 ....................................................................................................4
測量可用性 ...................................................................................................................5
N 個 9 ....................................................................................................................6
計劃中的故障也依然是故障 .................................................................................6
通過數字來體現可用性 .........................................................................................7
提高下降的可用性 ........................................................................................................7
測試並跟蹤當前的可用性 .....................................................................................8
將手動流程自動化 ................................................................................................9
改進你的系統 ...................................................................................................... 12
時刻關註不斷變化和發展中的應用程序的可用性 .............................................. 12
提高應用程序可用性的 5 個要點 ................................................................................ 12
要點 1 :時刻考慮應對故障 ................................................................................ 13
要點 2 :時刻考慮如何伸縮 ................................................................................ 14
要點 3 :緩和風險 ............................................................................................... 15
要點 4 :監控可用性............................................................................................ 17
要點 5 :以可預期及明確的方式來處理可用性問題 ........................................... 18
做好準備 ..................................................................................................................... 19
第 2 章 兩次失誤的高度——預留從錯誤中恢復的空間. .................... 20
兩次失誤的高度 .......................................................................................................... 21
場景 1 :丟失一個節點 ........................................................................................ 21
場景 2 :升級過程中出現的問題 ......................................................................... 24
場景 3 :數據中心恢復 ........................................................................................ 25
場景 4 :隱蔽的共享故障類型 ............................................................................. 27
場景 5 :故障循環 ............................................................................................... 28
管理你的應用程序 ...................................................................................................... 28
航天飛機 ..................................................................................................................... 29
第Ⅱ部分 原則 2. 現代化應用程序架構 :使用服務
第 3 章 使用服務. ............................................................... 32
單體應用程序與面向服務的應用程序 ........................................................................ 32
所有權收益.......................................................................................................... 34
規模收益 ............................................................................................................. 36
拆分服務 ..................................................................................................................... 37
如何定義服務 ...................................................................................................... 37
深入瞭解服務 ............................................................................................................. 38
指導原則 1 :特定的業務需求 ............................................................................. 38
指導原則 2 :清晰和獨立的團隊所有權 .............................................................. 39
指導原則 3 :天然隔離的數據 ............................................................................. 40
指導原則 4 :共享的能力 / 數據 .......................................................................... 41
多種原因 ............................................................................................................. 42
過猶不及 ..................................................................................................................... 43
找到適當的平衡 .......................................................................................................... 44
第 4 章 服務和數據............................................................. 45
無狀態服務 — 沒有數據的服務 ................................................................................ 45
有狀態服務 — 有數據的服務 ................................................................................... 45
數據分區 ..................................................................................................................... 46
及時處理增長的煩惱 .................................................................................................. 49
第 5 章 處理服務故障.......................................................... 50
級聯式的服務故障 ...................................................................................................... 50
如何響應服務故障 ...................................................................................................... 51
可預測的響應 ...................................................................................................... 52
可理解的響應 ...................................................................................................... 53
合理的響應.......................................................................................................... 53
如何確定故障 ............................................................................................................. 54
適當的行為 ................................................................................................................. 56
優雅降級 ............................................................................................................. 56
優雅補償 ............................................................................................................. 57
盡早失敗 ............................................................................................................. 57
用戶導致的問題 .................................................................................................. 58
小結 ............................................................................................................................ 59
第Ⅲ部分 原則 3. 組織 :為現代化
應用程序建立可伸縮性的組織
第 6 章 服務所有權——STOSA............................................. 62
由獨立團隊負責的服務架構 ....................................................................................... 62
STOSA 應用程序和組織的好處 .................................................................................. 64
“所有”一個服務意味著什麽 ..................................................................................... 64
使用核心團隊和服務 .................................................................................................. 67
小結 ............................................................................................................................ 68
第 7 章 服務分級. ............................................................... 69
應用程序的復雜性 ...................................................................................................... 69
什麽是服務分級 .......................................................................................................... 70
為服務分配服務級別標簽 ................................................................................... 71
示例 :在線商店 .......................................................................................................... 73
使用服務分級 ............................................................................................................. 75
期望 ..................................................................................................................... 76
響應性 ................................................................................................................. 76
依賴 ..................................................................................................................... 77
小結 ............................................................................................................................ 78
第 8 章 服務等級協議.......................................................... 79
什麽是服務等級協議 .................................................................................................. 80
外部 SLA 與內部 SLA 的對比 .................................................................................... 82
內部 SLA 很重要 ................................................................................................. 82
SLA 可以用於問題診斷 .............................................................................................. 83
SLA 的性能檢測方法 .................................................................................................. 84
限定 SLA ............................................................................................................. 85
排名 SLA ............................................................................................................. 85
SLA 的條件 ......................................................................................................... 88
究竟應當定義多少內部 SLA,以及定義哪些內部 SLA ............................................. 88
為什麽內部 SLA 很重要 ............................................................................................. 89
第Ⅳ部分 原則 4. 風險 :現代化應用程序的風險管理
第 9 章 如何在設計可伸縮架構時使用風險管理............................ 93
識別風險 ..................................................................................................................... 93
消除最嚴重的風險 .............................................................................................. 94
風險緩和 ............................................................................................................. 94
定期檢查 ............................................................................................................. 95
對風險管理的總結 .............................................................................................. 95
可能性與嚴重性 .......................................................................................................... 95
十佳列表 :低可能性,低嚴重性 ........................................................................ 96
訂單數據庫 :低可能性,高嚴重性 .................................................................... 97
自定義字體 :高可能性,低嚴重性 .................................................................... 98
T 恤圖片 :高可能性,高嚴重性 ........................................................................ 98
風險模型 ..................................................................................................................... 99
風險模型的作用域 ............................................................................................ 101
創建風險模型 .................................................................................................... 102
使用風險模型來制訂計劃 ................................................................................. 104
維護風險模型 .................................................................................................... 105
風險緩和 ................................................................................................................... 106
恢復計劃 ................................................................................................................... 108
容災計劃 ................................................................................................................... 109
改進我們的風險狀況 ................................................................................................ 109
第 10 章 比賽日. ...............................................................110
預發布環境和生產環境............................................................................................. 110
預發布 / 測試環境 ............................................................................................. 110
生產環境 ............................................................................................................111
在生產環境中舉行比賽日的擔心 .............................................................................. 112
小結 .......................................................................................................................... 113
第 11 章 構建低風險系統.....................................................114
技巧 1 :介紹冗餘 ..................................................................................................... 115
冪等接口 ........................................................................................................... 115
增加了復雜性的冗餘改進 ................................................................................. 116
技巧 2 :理解獨立性 ................................................................................................. 117
技巧 3 :管理安全性 ................................................................................................. 118
技巧 4 :鼓勵簡單性 ................................................................................................. 118
技巧 5 :自我修復 ..................................................................................................... 119
技巧 6 :標準化運維流程 .......................................................................................... 120
小結 .......................................................................................................................... 121
第Ⅴ部分 原則 5. 雲計算 :利用雲計算
第 12 章 使用雲計算來設計可伸縮架構.....................................125
雲計算成熟度的 6 個級別 ......................................................................................... 126
級別 1 :體驗雲計算.......................................................................................... 126
級別 2 :確認雲計算.......................................................................................... 127
級別 3 :使用雲計算中的服務器和應用程序 .................................................... 127
級別 4 :使用增值的托管服務 ........................................................................... 127
級別 5 :使用雲特有的服務 .............................................................................. 128
級別 6 :全面擁抱雲計算 .................................................................................. 128
組織與應用程序的成熟度級別對比 .................................................................. 128
使用雲計算時可能犯的錯誤 ..................................................................................... 129
陷阱 1 :不相信雲安全 ...................................................................................... 129
陷阱 2 :直接遷移到雲計算 .............................................................................. 129
陷阱 3 :無服務器的誘惑 — 太過於依賴炒作................................................. 130
何時以及如何使用多個雲計算平臺 .......................................................................... 131
如何定義我們所說的多個雲平臺 ...................................................................... 131
選擇哪個模型?哪種雲? ................................................................................. 134
雲計算小結 ............................................................................................................... 135
第 13 章 雲計算改變的 5 個行業趨勢.......................................136
雲計算有哪些變化 .................................................................................................... 136
變化 1 :對基於微服務架構的認可 ................................................................... 136
變化 2 :更小、更專業的服務 ........................................................................... 137
變化 3 :更專註於應用程序 .............................................................................. 137
變化 4 :微型初創公司 ...................................................................................... 137
變化 5 :安全和合規已經成熟 ........................................................................... 137
變化還在繼續 ........................................................................................................... 138
第 14 章 SaaS 和租賃類型..................................................139
比較托管主機和不同類型的 SaaS............................................................................. 139
托管主機 ........................................................................................................... 140
多租戶 SaaS ...................................................................................................... 140
單租戶 SaaS ...................................................................................................... 141
混合不同類型的 SaaS ............................................................................................... 142
常見的 SaaS 的特點 .................................................................................................. 142
SaaS 與托管主機 ....................................................................................................... 142
小結 .......................................................................................................................... 143
第 15 章 在 AWS 雲上分發你的應用程序.................................144
AWS 的架構 .............................................................................................................. 144
AWS 區域 .......................................................................................................... 145
AWS 可用區 ...................................................................................................... 145
數據中心 ........................................................................................................... 146
總體架構概述 ........................................................................................................... 146
可用區不是數據中心 ................................................................................................ 149
如何通過地理多樣性真正做到高可用 ...................................................................... 151
映射多個賬戶中的可用區 ................................................................................. 151
分發應用程序 ........................................................................................................... 152
第 16 章 托管的基礎設施.....................................................153
基於雲的服務架構 .................................................................................................... 153
原生資源 ........................................................................................................... 154
基於服務器的托管資源 ..................................................................................... 156
無服務器托管資源 ............................................................................................ 157
使用托管資源和非托管資源的影響 .......................................................................... 158
小結 .......................................................................................................................... 159
第 17 章 雲資源分配..........................................................160
基於使用量的資源分配............................................................................................. 161
固定額度的資源分配 ................................................................................................ 162
調整分配 ........................................................................................................... 164
資源容量的自動分配 ......................................................................................... 164
自動分配的問題 ................................................................................................ 164
動態分配,動態成本 ......................................................................................... 165
資源分配技術的利與弊............................................................................................. 166
第 18 章 無服務器計算和函數即服務.......................................167
示例 1 :事件處理 ..................................................................................................... 168
示例 2 :手機應用後端 ............................................................................................. 168
示例 3 :物聯網數據採集 .......................................................................................... 169
FaaS 的優缺點 .......................................................................................................... 170
無服務器炒作和 FaaS 的未來 ................................................................................... 171
第 19 章 邊緣計算.............................................................172
如今的邊緣計算 ........................................................................................................ 173
為什麽我們要關心邊緣計算 ..................................................................................... 173
與雲計算相比,邊緣計算應該是什麽 ...................................................................... 174
如何決定把什麽放在邊緣?以無人駕駛汽車為例 ............................................ 174
邊緣計算的可伸縮與雲計算的可伸縮不同 ............................................................... 176
使用邊緣計算和雲計算的標準 .......................................................................... 178
邊緣計算成功的 8 個關鍵點 ..................................................................................... 178
#1 :知道什麽時候應該使用邊緣計算 .............................................................. 179
#2 :不要忽略邊緣計算中的 DevOps 原則 ........................................................ 179
#3 :制定一個高度分佈式的部署策略 .............................................................. 179
#4 :盡可能減少版本控制 ................................................................................. 179
#5 :減少每個節點的配置項 ............................................................................. 180
#6 :伸縮也是邊緣計算要面對的一個問題,不僅僅是雲計算 ......................... 180
#7 :重視監測和分析......................................................................................... 181
#8 :邊緣計算不是魔法 ..................................................................................... 181
邊緣計算小結 ........................................................................................................... 181
第 20 章 地理位置對雲計算的影響..........................................182
雲無處不在,只不過影響的層次不同 ...................................................................... 182
替換心態影響你如何接受雲計算 .............................................................................. 183
哪個雲服務商最重要 ................................................................................................ 184
重要的技術區別 ........................................................................................................ 184
數據主權是普遍的 .................................................................................................... 185
我的看法 ................................................................................................................... 185
第Ⅵ部分 總結
第 21 章 綜述..................................................................188
原則 #1 — 可用性 ................................................................................................... 188
原則 #2 — 架構 ....................................................................................................... 189
原則 #3 — 組織 ....................................................................................................... 189
原則 #4 — 風險 ....................................................................................................... 189
原則 #5 — 雲計算 ................................................................................................... 190
面向可伸縮架構 ........................................................................................................ 190