内容简介
大型软件系统生命周期的绝大部分都处于“使用”阶段,而非“设计”或“实现”阶段。那么为什么我们却总是认为软件工程应该要关注设计和实现呢?在本书中,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 简介 .......
大量现货 包邮 SRE:Google运维解密 下载 mobi epub pdf txt 电子书 格式