聆听工程师和其他领导人现场讨论:在各种环境中实现SRE及其指导思想的不同方法。SRE与其他方法(例如DevOps)的关系。最前沿的专业技术很快将在SRE中十分常见。简化实现SRE的最佳实践和技术。重要但很少有人探索的SRE人性的一面。
David N. Blank-Edelman在大型多平台环境中的SRE、DevOps、系统管理领域拥有超过30年的经验。他目前就职于Microsoft,是高级云平台运维布道师,专注于站点可靠性工程。他是USENIX在全球举办的广受欢迎的SREcon会议的联合创始人之一,同时还是O’Reilly水獭书(《Automating Systems Administration with Perl》)的作者。
目录
绪论 1
第一部分 SRE 实施
第1 章 SRE 中的上下文与控制 7
第2 章 面试站点可靠性工程师 17
面试101 17
谁参与 17
行业与大学 18
偏见 18
漏斗 18
SRE 漏斗 19
电话筛查 20
现场面试 20
带回家的问题 22
面试SRE 的最终思考 24
延伸阅读 24
第3 章 你想建立一个SRE 团队吗? 25
出于正确的原因选择SRE 26
面向数据驱动方法 28
对SRE 的承诺 29
做出关于SRE 的决定 30
第4 章 使用事件指标在规模上
提高SRE 31
救援到良性循环:你需要测量…… 31
指标回顾:如果指标无法找到…… 33
代理指标 34
修复债务 35
虚拟修复债务:在机器中驱除幽灵 36
实时仪表板:SRE 的面包和黄油 37
学习:终身学习 38
延伸阅读 38
第5 章 与第三方合作的艺术 39
自建、购买或采用? 39
建立重要性 40
确定利益相关者 40
做出决策 41
承认现实 42
第三方作为“一等公民” 45
当他们倒下时,你也倒下 46
像服务一样运行黑匣子 48
服务级别指标、服务级别目标和SLA 49
行动手册:从预发布到生产 51
总结想法 58
第6 章 如何在没有专用SRE 团队的情况下应用SRE
原则 60
向SRE 求救(以及他们如何失败) 60
按员工人数计算的规模问题 61
嵌入式SRE 61
你建造它,你就得运行它 62
部署平台 62
完成循环:自行运维 63
介绍生产工程团队 64
一些实施详细信息 66
开发人员的工作效率和健康与监控 66
使用事后分析解决跨团队可靠性问题 68
统一的基础设施和工具与自主和创新 69
获得支持者 70
小结 72
延伸阅读 73
第7 章 无SRE 的SRE 模式:Spotify 案例研究 74
蹒跚学步:2006 – 2007 75
前奏 75
关键收获 76
测试版和正式发布:2008 – 2009 76
前奏 77
将可扩展性和可靠性带到前沿 78
关键收获 79
成功的诅咒:2010 80
前奏 80
新的所有权模型 81
核心服务正规化 82
部署时间的抉择 83
轮值和警报 83
生成内部办公室支持 84
解决剩余首要问题 84
创建侦探 85
关键收获 86
宠物和动物,以及敏捷:2011 87
前奏 87
形成不良习惯 88
打破那些坏习惯 88
关键收获 89
无法扩展的系统:2012 89
前奏 89
手工运维碰壁 90
关键收获 91
介绍小组内嵌运维:2013 – 2015 91
前奏 91
以信任为基础 94
推动模式转变 95
关键收获 96
自主性与一致性的权衡:2015 – 2017 96
前奏 97
受益之处 98
权衡 98
关键收获 99
未来:规模化的速度和安全 99
第8 章 大型企业SRE 的介绍 103
背景 103
介绍SRE 104
定义当前状态 104
识别和教育利益相关者 106
展示业务案例 108
实施SRE 团队 109
经验和教训 111
实施路线图示例 112
总结反思 114
延伸阅读 114
第9 章 从系统管理员到SRE 115
澄清术语 116
服务级别指示器 116
SLA 117
服务级别目标 117
为内部组件建立SLA 119
了解外部依赖关系 125
非技术解决方案 127
跟踪可用性级别 128
处理罕见情况 133
小结 135
第10 章 为企业中的SRE 扫清道路 137
琐事,SRE 的敌人 138
企业中的琐事 141
孤岛、队列和工单 141
路上的孤岛 142
工单驱动的请求队列成本高昂 144
立即行动 146
从精益开始 146
尽可能多地摆脱交接 150
将剩余的移交替换为自助服务 153
自助服务不仅仅是一个按钮 154
自助服务以多种方式帮助SRE 155
运维作为服务 156
错误预算、限制琐事和其他增强人类能力的工具 159
错误预算 159
琐事上限 160
利用DevOps 的现有热情 161
统一任务列表并保护容量 161
心理安全与人为因素 162
加入运动 163
第11 章 SRE 模式深受DevOps 的热爱 164
模式1:Google 诞生的自动测试 165
模式2:在谷歌启动和移交准备审查 167
模式3:创建共享源代码存储库 170
小结 172
进一步阅读和源材料 172
第12 章 DevOps 和SRE:来自社区的声音 174
背景 174
方法 174
结果 175
回复 175
第13 章 Facebook 的生产工程师 191
第二部分 SRE 前沿领域
第14 章 起初,有混沌 215
系统问题 216
复杂性的经济支柱 218
开始混沌 219
安全和复杂性的权衡 220
混沌变大 221
形式化 221
高级原则 222
常见问题 223
小结 225
第15 章 可靠性与隐私的交集 226
可靠性与隐私的交集概述 227
隐私工程的一般景观 228
隐私和SRE:常见方法 230
减少辛劳 230
高效、慎重地解决问题 232
关系管理 233
早期干预与价值观传播 233
细微差别、差异和权衡 235
小结 236
延伸阅读 236
第16 章 数据库可靠性工程 237
数据库可靠性工程师的指导原则 237
保护数据 238
自助缩放服务 238
数据库不特殊 239
数据库可靠性工程文化 240
可恢复性 241
恢复注意事项 241
恢复策略的剖析 242
构建基块1:检测 242
构建基块2:多样化的存储 244
构建基块3:各种工具箱 245
构建基块4:测试 246
倡导恢复可靠性 247
持续交付:从开发到生产 247
协作 249
部署 249
迁移和版本控制 249
影响分析 250
迁移模式 250
倡导CD 251
为DBRE 提供支持 252
延伸阅读 252
第17 章 数据耐久性工程 253
复制是基础 253
备份 253
复制 254
真实世界的耐久性 257
保护 261
测试 261
保障 262
恢复 262
验证 263
零的力量 264
验证范围 264
监视器的观察者 266
自动化 266
漏洞之窗 266
运维人员疲劳 267
可靠性 267
小结 268
第18 章 SRE 机器学习概述 270
为什么要使用机器学习辅助SRE 工作? 270
为什么我的公司应该如何参与这项工作? 271
AI 应用方面的觉醒 272
什么是机器学习? 273
我们所说的学习是什么意思? 274
从国际象棋到围棋:我们可以潜水有多深? 276
为什么是现在?我们改变了什么? 277
什么是神经网络? 278
神经元和神经网络 278
应该如何以及何时应用神经网络? 280
我们可以使用哪些类型的数据? 280
实用机器学习 281
神经网络的热门库 281
实用机器学习示例 282
成功案例 296
延伸阅读 297
我的GitHub 存储库 297
推荐书籍 297
第三部分 SRE 最佳实践和技术
第19 章 使文档更好:将文档集成到工作流程中 301
定义质量:好文档是什么样子的? 302
SRE 文档的功能要求 304
将文档集成到工程的工作流中 306
谷歌的经验:g3doc 和EngPlay 307
我们学到的知识 310
更好的文档:最佳实践 311
为每个文档类型创建模板 311
更好 > 最佳:为质量设定现实标准 313
要求将文档作为代码评审的一部分 313
大胆地修剪你的文档 314
对文档进行表彰和奖励 314
传达文档的价值 315
延伸阅读 317
第20 章 主动教学和自学 319
主动学习 320
主动学习示例:不幸之轮 321
活动学习示例:事件管理(纸牌游戏) 322
活动学习示例:SRE 教室 326
不能学习的代价 327
有效 SRE 团队的学习氛围 328
生产会议 328
故障报告 329
行动号召:放弃无聊的幻灯片 330
第21 章 服务级别目标的艺术与科学 331
为什么要设定目标? 331
可用性 332
时间计量 333
事务 334
时间跨度的事务统计 334
关于评估 SLO 335
直方图 338
百分位数的不足之处(和直方图的优点) 339
思路的不同:自底向上的分析 SLO 339
延伸阅读 340
第22 章 SRE 作为一种成功文化 341
SRE 是从哪里来的? 341
SRE 的关键价值 343
保持网站运行 343
授权团队“做正确的事情” 345
将运维视为工程问题 346
通过承诺(服务级别)实现业务成功 347
SRE 的关键启用功能 348
监视、指标和 KPI 348
事件管理和应急响应 349
容量规划和需求预测 349
性能分析和优化 349
预配、更改管理和速度 349
SRE 执行阶段 350
第 1 阶段:灭火/ 应急 350
第 2 阶段:守门员 350
第3 阶段:倡导者/ 合作伙伴 351
第4 阶段:催化 351
不同阶段的并发症 352
关注成功的细节 352
延伸阅读 353
第23 章 SRE 反模式 354
反模式 1:站点可靠性运维 355
反模式2:人类盯着屏幕 356
反模式3:事件响应时一窝蜂 357
反模式 4:根本原因 = 人为错误 358
反模式5:丢包袱 360
反模式 6:马戏团表演模式! 361
反模式7:警报可靠性工程 362
反模式8:雇用他人来遛狗 363
反模式 9:减速带工程 364
反模式10:设计阻塞点 365
反模式11:批评太多,鼓励不够 366
反模式12:推迟生产环境发布 368
反模式 13:优先避免故障而不追求快速恢复(MTTF > MTTR) 369
反模式14:依赖性地狱 371
反模式15:笨拙的治理 372
反模式 16: 考虑不周的 SLO 373
反模式 17:让人恼火的 API 接口 374
反模式 18:修复运维团队 376
那么,这就足够了吗? 377
第24 章 不变的基础架构和SRE 379
可扩展性、可靠性和性能 379
故障恢复 380
更简单的运维 380
更快的启动时间 381
已知状态 381
自信地完成持续集成/ 持续部署 382
安全性 382
多区域操作 383
发布的工程学 383
构建基本镜像 384
部署应用程序 385
缺点 385
小结 386
第25 章 可编写脚本的负载均衡器 387
可编写脚本的负载均衡器:新新人类 387
使困难变得简单 389
分片感知路由 390
利用潜力 394
案例研究:休息时间 394
服务级别中间件 395
作为救援的中间件 397
服务级别中间件的 API 397
案例研究:WAF/Bot 缓解 397
避免灾难 398
获得状态的技巧 398
案例研究:结账队列 400
展望未来,进一步阅读 401
第26 章 服务网格化:微服务的牧人? 403
准备好摆脱全家桶了吗? 404
微服务网络的当前状态 405
服务网格来救援 407
边三轮代理的好处 408
最终一致的服务发现 409
可观察性和报警机制 410
边三轮性能影响 411
精简库和上下文传播 412
配置管理(控制平面与数据平面) 413
实践中的服务网格 414
Envoy 在 Lyft 的起源与发展 415
Lyft 运维的 Envoy 416
服务网格的未来 418
延伸阅读 418
第四部分 SRE 的人性化一面
第27 章 SRE 的心理安全 421
成功团队的主要指标 421
延伸阅读 430
第28 章 SRE 认知工作 431
简介 431
SRE 人员是做什么的? 432
我们为什么要关心从业者认知? 433
在不确定性和时间压力下做出的关键决策无法重现 434
现代复杂系统中的人类表现:主题 434
关于围绕事件的SRE 认知工作的观察 435
每一次事件都可能更糟 435
在不确定的情况下做出牺牲性决策 436
正常系统的维修 437
关于复杂系统的专业知识 438
管理协调成本 439
SRE 是联合认知系统中工作的认知主体 439
知识校准问题 440
心理模型 441
略