內容簡介
大型軟件係統生命周期的絕大部分都處於“使用”階段,而非“設計”或“實現”階段。那麼為什麼我們卻總是認為軟件工程應該首要關注設計和實現呢?在本書中,Google SRE的關鍵成員解釋瞭他們是如何對軟件進行生命周期的整體性關注的,以及為什麼這樣做能夠幫助Google成功地構建、部署、監控和運維世界上現存大的軟件係統。通過閱讀本書,讀者可以學習到Google工程師在提高係統部署規模、改進可靠性和資源利用效率方麵的指導思想與具體實踐——這些都是可以立即直接應用的寶貴經驗。任何一個想要創建、擴展大規模集成係統的人都應該閱讀本書。本書針對如何構建一個可長期維護的係統提供瞭非常寶貴的實踐經驗。
圖書目錄
目錄
前言 ................ xxxi
序言 ............... xxxv
第Ⅰ部分 概覽
第1 章 介紹..... 2
係統管理員模式 ... 2
Google 的解決之道:SRE ...................... 4
SRE 方法論 .......... 6
確保長期關注研發工作 ................... 6
在保障服務SLO 的前提下大化迭代速度 ....................... 7
監控係統 ......................................... 8
應急事件處理 .................................. 8
變更管理 ...... 9
需求預測和容量規劃 ....................... 9
資源部署 .... 10
效率與性能. 10
小結 ................... 10
第2 章 Google 生産環境:SRE 視角...... 11
硬件 ................... 11
管理物理服務器的係統管理軟件 .......... 13
管理物理服務器 ............................ 13
存儲 ............ 14
網絡 ............ 15
其他係統軟件 .... 16
分布式鎖服務 ................................ 16
監控與警報係統 ............................ 16
軟件基礎設施 .... 17
研發環境 ............ 17
莎士比亞搜索:一個示範服務 ............. 18
用戶請求的處理過程 ..................... 18
任務和數據的組織方式 ................. 19
第Ⅱ部分 指導思想
第3 章 擁抱風險................................ 23
管理風險 ............ 23
度量服務的風險 . 24
服務的風險容忍度 ................................ 25
辨彆消費者服務的風險容忍度 ...... 26
基礎設施服務的風險容忍度 ......... 28
使用錯誤預算的目的 ............................ 30
錯誤預算的構建過程 ..................... 31
好處 ............ 32
第4 章 服務質量目標........................... 34
服務質量術語 .... 34
指標 ............ 34
目標 ............ 35
協議 ............ 36
指標在實踐中的應用 ............................ 37
運維人員和終用戶各關心什麼 .. 37
指標的收集. 37
匯總 ............ 38
指標的標準化 ................................ 39
目標在實踐中的應用 ............................ 39
目標的定義. 40
目標的選擇. 40
控製手段 .... 42
SLO 可以建立用戶預期 ................ 42
協議在實踐中的應用 ............................ 43
第5 章 減少瑣事................................ 44
瑣事的定義 ........ 44
為什麼瑣事越少越好 ............................ 45
什麼算作工程工作 ................................ 46
瑣事繁多是不是一定不好 ..................... 47
小結 ................... 48
第6 章 分布式係統的監控..................... 49
術語定義 ............ 49
為什麼要監控 .... 50
對監控係統設置閤理預期 ..................... 51
現象與原因 ........ 52
黑盒監控與白盒監控 ............................ 53
4 個黃金指標 ..... 53
關於長尾問題 .... 54
度量指標時采用閤適的精度 ................. 55
簡化,直到不能再簡化......................... 55
將上述理念整閤起來 ............................ 56
監控係統的長期維護 ............................ 57
Bigtable SRE :警報過多的案例 ... 57
Gmail :可預知的、可腳本化的人工乾預 ........................ 58
長跑 ............ 59
小結 ................... 59
第7 章 Google 的自動化係統的演進...... 60
自動化的價值 .... 60
一緻性 ........ 60
平颱性 ........ 61
修復速度更快 ................................ 61
行動速度更快 ................................ 62
節省時間 .... 62
自動化對Google SRE 的價值 .............. 62
自動化的應用案例 ................................ 63
Google SRE 的自動化使用案例 .... 63
自動化分類的層次結構 ................. 64
讓自己脫離工作:自動化所有的東西 .. 66
舒緩疼痛:將自動化應用到集群上綫中 ................................. 67
使用Prodtest 檢測不一緻情況 ...... 68
冪等地解決不一緻情況 ................. 69
專業化傾嚮. 71
以服務為導嚮的集群上綫流程 ...... 72
Borg :倉庫規模計算機的誕生 ............. 73
可靠性是基本的功能......................... 74
建議 ................... 75
第8 章 發布工程................................ 76
發布工程師的角色 ................................ 76
發布工程哲學 .... 77
自服務模型. 77
追求速度 .... 77
密閉性 ........ 77
強調策略和流程 ............................ 78
持續構建與部署 . 78
構建 ............ 78
分支 ............ 79
測試 ............ 79
打包 ............ 79
Rapid 係統 .. 80
部署 ............ 81
配置管理 ............ 81
小結 ................... 82
不僅僅隻對Google 有用 ............... 83
一開始就進行發布工程 ................. 83
第9 章 簡單化 85
係統的穩定性與靈活性......................... 85
乏味是一種美德 . 86
我不放棄我的代碼......................... 86
“負代碼行”作為一個指標 ................... 87
小 API ............ 87
模塊化 ................ 87
發布的簡單化 .... 88
小結 ................... 88
第Ⅲ部分 佳實踐
第10 章 基於時間序列數據進行有效報警.. 93
Borgmon 的起源 94
應用軟件的監控埋點 ............................ 95
監控指標的收集 . 96
時間序列數據的存儲 ............................ 97
標簽與嚮量. 98
Borg 規則計算 ... 99
報警 ................. 104
監控係統的分片機製 .......................... 105
黑盒監控 .......... 106
配置文件的維護 .................................. 106
十年之後 .......... 108
第11 章 on-call 輪值....................... 109
介紹 ................. 109
on-call 工程師的一天 .......................... 110
on-call 工作平衡 ..................................111
數量上保持平衡 ...........................111
質量上保持平衡 ...........................111
補貼措施 .. 112
安全感 .............. 112
避免運維壓力過大 .............................. 114
運維壓力過大 .............................. 114
奸詐的敵人—運維壓力不夠 .... 115
小結 ................. 115
第12 章 有效的故障排查手段................ 116
理論 ................. 117
實踐 ................. 119
故障報告 .. 119
定位 .......... 119
檢查 .......... 120
診斷 .......... 122
測試和修復.................................. 124
神奇的負麵結果 .................................. 125
治愈 .......... 126
案例分析 .......... 127
使故障排查更簡單 .............................. 130
小結 ................. 130
第13 章 緊急事件響應........................ 131
當係統齣現問題時怎麼辦 ................... 131
測試導緻的緊急事故 .......................... 132
細節 .......... 132
響應 .......... 132
事後總結 .. 132
變更部署帶來的緊急事故 ................... 133
細節 .......... 133
事故響應 .. 134
事後總結 .. 134
流程導緻的嚴重事故 .......................... 135
細節 .......... 135
災難響應 .. 136
事後總結 .. 136
所有的問題都有解決方案 ................... 137
嚮過去學習,而不是重復它 ............... 138
為事故保留記錄 .......................... 138
提齣那些大的,甚至不可能的問題:假如…… ............. 138
鼓勵主動測試 .............................. 138
小結 ................. 138
第14 章 緊急事故管理....................... 140
無流程管理的緊急事故....................... 140
對這次無流程管理的事故的剖析 ........ 141
過於關注技術問題 ...................... 141
溝通不暢 .. 141
不請自來 .. 142
緊急事故的流程管理要素 ................... 142
嵌套式職責分離 .......................... 142
控製中心 .. 143
實時事故狀態文檔 ...................... 143
明確公開的職責交接 ................... 143
一次流程管理良好的事故 ................... 144
什麼時候對外宣布事故....................... 144
小結 ................. 145
第15 章 事後總結:從失敗中學習......... 146
Google 的事後總結哲學 ...................... 146
協作和知識共享 .................................. 148
建立事後總結文化 .............................. 149
小結以及不斷優化 .............................. 151
第16 章 跟蹤故障..............................152
Escalator .......... 152
Outalator .......... 153
聚閤 .......... 154
加標簽 ...... 155
分析 .......... 155
未預料到的好處 .......................... 156
第17 章 測試可靠性...........................157
軟件測試的類型 .................................. 158
傳統測試 .. 159
生産測試 .. 160
創造一個構建和測試環境 ................... 163
大規模測試 ...... 165
測試大規模使用的工具 ............... 166
針對災難的測試 .......................... 167
對速度的渴求 .............................. 168
發布到生産環境 .......................... 170
允許測試失敗 .............................. 170
集成 .......... 172
生産環境探針 .............................. 173
小結 ................. 175
第18 章 SRE 部門中的軟件工程實踐.....176
為什麼軟件工程項目對SRE 很重要 ... 176
Auxon 案例分析:項目背景和要解決的問題 ........................ 177
傳統的容量規劃方法 ................... 177
解決方案:基於意圖的容量規劃 179
基於意圖的容量規劃 .......................... 180
錶達産品意圖的先導條件 ........... 181
Auxon 簡介 ................................. 182
需求和實現:成功和不足 ........... 183
提升瞭解程度,推進采用率 ....... 185
團隊內部組成 .............................. 187
在SRE 團隊中培養軟件工程風氣 ...... 187
在SRE 團隊中建立起軟件工程氛圍:招聘與開發時間 188
做到這一點..
包郵現貨 SRE:Google運維解密 下載 mobi epub pdf txt 電子書