聆听工程师和其他领导人现场讨论:在各种环境中实现SRE及其指导思想的不同方法。SRE与其他方法(例如DevOps)的关系。最前沿的专业技术很快将在SRE中十分常见。简化实现SRE的最佳实践和技术。重要但很少有人探索的SRE人性的一面。
David N. Blank-Edelman在大型多平台环境中的SRE、DevOps、系统管理领域拥有超过30年的经验。他目前就职于Microsoft,是高级云平台运维布道师,专注于站点可靠性工程。他是USENIX在全球举办的广受欢迎的SREcon会议的联合创始人之一,同时还是O’Reilly水獭书(《Automating Systems Administration with Perl》)的作者。
“这些对话发生在会议期间或午餐时间。它们也是我们之间的论辩,有时是生动的,但始终是原则性的。读这本书让你有种亲临这些对话现场的感觉。”
——Dave Rensin
Google CRE总监
“本书可以很好地说明如何在不同组织中的不同情况下采用(或改编)SRE原则,同时仍然遵守Google倡导的核心原则。”
——Cindy Sridharan
分布式系统工程师
目录绪论 1第一部分 SRE 实施第1 章 SRE 中的上下文与控制 7第2 章 面试站点可靠性工程师 17面试101 17谁参与 17行业与大学 18偏见 18漏斗 18SRE 漏斗 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服务级别指示器 116SLA 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为什么我的公司应该如何参与这项工作? 271AI 应用方面的觉醒 272什么是机器学习? 273我们所说的学习是什么意思? 274从国际象棋到围棋:我们可以潜水有多深? 276为什么是现在?我们改变了什么? 277什么是神经网络? 278神经元和神经网络 278应该如何以及何时应用神经网络? 280我们可以使用哪些类型的数据? 280实用机器学习 281神经网络的热门库 281实用机器学习示例 282成功案例 296延伸阅读 297我的GitHub 存储库 297推荐书籍 297第三部分 SRE 最佳实践和技术第19 章 使文档更好:将文档集成到工作流程中 301定义质量:好文档是什么样子的? 302SRE 文档的功能要求 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 作为一种成功文化 341SRE 是从哪里来的? 341SRE 的关键价值 343保持网站运行 343授权团队“做正确的事情” 345将运维视为工程问题 346通过承诺(服务级别)实现业务成功 347SRE 的关键启用功能 348监视、指标和 KPI 348事件管理和应急响应 349容量规划和需求预测 349性能分析和优化 349预配、更改管理和速度 349SRE 执行阶段 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实践中的服务网格 414Envoy 在 Lyft 的起源与发展 415Lyft 运维的 Envoy 416服务网格的未来 418延伸阅读 418第四部分 SRE 的人性化一面第27 章 SRE 的心理安全 421成功团队的主要指标 421延伸阅读 430第28 章 SRE 认知工作 431简介 431SRE 人员是做什么的? 432我们为什么要关心从业者认知? 433在不确定性和时间压力下做出的关键决策无法重现 434现代复杂系统中的人类表现:主题 434关于围绕事件的SRE 认知工作的观察 435每一次事件都可能更糟 435在不确定的情况下做出牺牲性决策 436正常系统的维修 437关于复杂系统的专业知识 438管理协调成本 439SRE 是联合认知系统中工作的认知主体 439知识校准问题 440心理模型 441
略