Google SRE工作手册

Book description

在2016年,Google出版的第一本网站可靠性工程(SRE)书籍引起了行业的大范围讨论,当今生产环境服务运营意味这什么?为何可靠性方面的考虑是服务设计的基础?现在,编写上一本SRE畅销书的Google工程师们为我们隆重推出了本书,这是一本充满真实案例的实战参考手册,展示了如何在生产环境中运维SRE的原则和实践。

在这本全新的SRE工作手册中,提供的实践案例不但源于Google的经验,还来自那些经历过SRE旅程的Google公有云的用户。值得注意的是,本书还包括Evernote、The Home Depot、纽约时报和其他公司总结的来之不易的第一手经验。

无论你所在公司规模的大小,都可以深入研究这本工作手册,通过学习尝试完善你们自己的SRE实践。

你将会学到:

  • 如何在你无法完全掌控的云环境里运行可靠的服务。
  • 在你创建、监控和运行服务的过程中践行服务质量目标。
  • 如何将现有运维团队转型为SRE,包括发掘出运营的最大价值。
  • 从绿地或者棕地上启动SRE的方法。

Table of contents

  1. 封面
  2. 封底
  3. 对本书的赞誉
  4. 扉页
  5. 版权页
  6. O'Reilly公司介绍
  7. 推荐序I
  8. 推荐序II
  9. 推荐序III
  10. 译者序I
  11. 译者序II
  12. 目录 (1/4)
  13. 目录 (2/4)
  14. 目录 (3/4)
  15. 目录 (4/4)
  16. 序言 I
  17. 序言 II
  18. 前言
    1. 内容约定
    2. 使用代码示例
    3. O’Reilly在线学习平台(O’Reilly Online Learning)
    4. 意见和疑问
    5. 致谢
  19. 第1章 SRE与DevOps的关系
    1. SRE是DevOps的一种实现方式
    2. 关于DevOps的背景情况
      1. 不再各自为政
      2. 意外乃兵家常事
      3. 变更要小步快跑
      4. 工具与文化休戚与共
      5. 准确的度量至关重要
    3. 关于SRE的背景情况
      1. 运维痛点也是软件问题
      2. 以服务质量目标(SLO)为准绳
      3. 尽量减少琐事
      4. 生产的智慧
      5. 确定本年度要自动化的工作
      6. 故障解决得越快,进度就越快
      7. 与开发人员同舟共济(share ownership)
      8. 岗位虽不同,工具可统一
    4. 比较与对照
    5. 因地制宜才能事半功倍
      1. 片面、刻板的激励机制会阻碍成功
      2. 解铃还须系铃人,勿怨他人
      3. 维护可靠性是专业化角色
      4. 毋庸斟酌是否,只需推敲时机
      5. 尽量在职业发展和物质激励上一视同仁
    6. 小结
  20. 第一部分 基础篇
    1. 第2章 实施SLO
      1. SRE为何需要SLO
      2. 入门
        1. 可靠性目标和错误预算
        2. 面向SLI的度量
      3. 范例系统分析 (1/2)
      4. 范例系统分析 (2/2)
        1. SLI从规范到实现
        2. 度量SLI
        3. 使用SLI计算初始的SLO
      5. 选择合适的时间窗口
      6. 获取利益干系者的认同
        1. 建立错误预算策略
        2. SLO和错误预算策略的文档
        3. 仪表板和报表
      7. SLO目标持续改进
        1. 改进SLO质量
      8. 基于SLO和错误预算的决策
      9. 进阶主题
        1. 用户旅程建模
        2. 系统互动重要性分级
        3. 依赖关系建模
        4. SLO松绑实验
      10. 小结
    2. 第3章 SLO工程案例研究
      1. Evernote的SLO故事
        1. Evernote为何采用SRE模型?
        2. 导入SLO开始旅程
        3. 打穿客户与云提供商之间的SLO墙
        4. 当前状态
      2. Home Depot的SLO故事 (1/3)
      3. Home Depot的SLO故事 (2/3)
      4. Home Depot的SLO故事 (3/3)
        1. SLO文化项目
        2. 我们的第一套SLO
        3. 宣传SLO
        4. 自动化VALET数据采集
        5. SLO的发扬光大
        6. VALET应用于批处理应用
        7. VALET应用于测试
        8. 未来的愿景
        9. 结论
      5. 小结
    3. 第4章 监控
      1. 监控策略必备特性
        1. 速度
        2. 计算
        3. 接口
        4. 告警
      2. 监控数据源
        1. 范例
      3. 管理监控系统
        1. 实现配置即代码(Configuration as Code)
        2. 鼓励一致性
        3. 倡导松散耦合
      4. 度量指标的意图
        1. 预期的变更
        2. 依赖关系
        3. 饱和度
        4. 服务流量状况
        5. 实施有意图的度量指标
      5. 测试告警逻辑
      6. 小结
    4. 第5章 基于SLO的告警
      1. 告警设定考量
      2. 重大事件告警方法 (1/3)
      3. 重大事件告警方法 (2/3)
      4. 重大事件告警方法 (3/3)
        1. 1:目标错误率≥SLO阈值
        2. 2:延长告警时间窗口
        3. 3:延长告警触发前的持续时间
        4. 4:根据燃烧率发出告警
        5. 5:基于多个燃烧率的告警
        6. 6:基于多个窗口、多个燃烧率的告警
      5. 低流量服务和错误预算告警
        1. 生成人工流量
        2. 组合多个服务
        3. 改变服务和基础设施
        4. 降低SLO或延长时间窗口
      6. 极端的可用性目标
      7. 扩大告警范围
      8. 小结
    5. 第6章 消除琐事
      1. 什么是琐事?
      2. 度量琐事
      3. 琐事分类法
        1. 业务流程
        2. 生产中断
        3. 产品发布
        4. 迁移
        5. 工程成本和容量规划
        6. 不透明架构的故障排查
      4. 琐事管理策略 (1/2)
      5. 琐事管理策略 (2/2)
        1. 识别和度量琐事
        2. 工程师撤出琐事系统
        3. 拒绝琐事
        4. 使用SLO消减琐事
        5. 从半自动界面开始
        6. 提供各种自助服务方法
        7. 获得管理层和同事的支持
        8. 大力推广消减琐事
        9. 从小处着手和改善
        10. 增加一致性
        11. 评估自动化的风险
        12. 自动化响应琐事
        13. 使用开源和第三方工具
        14. 使用反馈进行改进
      6. 实例研究
      7. 案例研究1:利用自动化减少数据中心的琐事 (1/3)
      8. 案例研究1:利用自动化减少数据中心的琐事 (2/3)
      9. 案例研究1:利用自动化减少数据中心的琐事 (3/3)
        1. 背景
        2. 问题陈述
        3. 我们的决策
        4. 首个设计方案:修复Saturn线卡
        5. 实施
        6. 第二个迭代的设计:Saturn线卡修复vs Jupiter线卡修复
        7. 实施
        8. 经验教训
      10. 案例研究2:退役文件服务器后端的主目录 (1/2)
      11. 案例研究2:退役文件服务器后端的主目录 (2/2)
        1. 背景
        2. 问题陈述
        3. 我们的决策
        4. 设计与实施
        5. 重要组件
        6. 经验教训
      12. 小结
    6. 第7章 简单性
      1. 度量复杂性
      2. 简单性是端到端的,适合由SRE来负责
        1. 案例研究1:端到端API的简单性
        2. 案例研究2:项目生命周期复杂性
      3. 回归简单性 (1/2)
      4. 回归简单性 (2/2)
        1. 案例研究3:简化广告展示系统的蜘蛛网
        2. 案例研究4:在共享平台上运行数百个微服务
        3. 案例研究5:pDNS不再依赖于自身
        4. 背景
      5. 小结
  21. 第二部分 实践篇
    1. 第8章 on-call轮值
      1. 回顾第一本SRE书中的“on-call轮值”
      2. Google内外的on-call部署模式案例 (1/2)
      3. Google内外的on-call部署模式案例 (2/2)
        1. Google:组建一个新的团队
        2. Evernote:在云端寻找我们的足迹
      4. 实战的实施细节 (1/4)
      5. 实战的实施细节 (2/4)
      6. 实战的实施细节 (3/4)
      7. 实战的实施细节 (4/4)
        1. 剖析告警压力
        2. on-call灵活性
        3. on-call团队士气
      8. 小结
    2. 第9章 事故响应
      1. Google的事故管理
        1. 事故指挥系统
        2. 事故响应中的主要角色
      2. 案例分析 (1/4)
      3. 案例分析 (2/4)
      4. 案例分析 (3/4)
      5. 案例分析 (4/4)
        1. 案例1:软件bug——灯亮着,但家里没人
        2. 案例2:服务故障——尽可能多地进行缓存
        3. 案例3:停电——闪电不会两次击中同一个地方……吗?
        4. 案例4:PagerDuty的事故响应
      6. 把最佳实践付诸实施
        1. 事故响应培训
        2. 前期准备
        3. 演习
      7. 小结
    3. 第10章 事后总结:从失败中学习
      1. 案例分析
      2. 糟糕的事后总结 (1/2)
      3. 糟糕的事后总结 (2/2)
        1. 为什么这是一份差劲的事后总结?
      4. 优秀的事后总结 (1/3)
      5. 优秀的事后总结 (2/3)
      6. 优秀的事后总结 (3/3)
        1. 这份事后总结好在哪?
      7. 组织激励
        1. 树立和加强对事不对人的模式
        2. 奖励事后总结的成果
        3. 公开分享事后总结
        4. 面对事后总结文化的淡化
      8. 工具和模板
        1. 事后总结模板
        2. 事后总结的工具
      9. 结论
    4. 第11章 管理负载
      1. Google云的负载均衡
        1. Anycast
        2. Maglev
        3. 全球负载均衡系统
        4. Google前端(GFE)
        5. GCLB(Google云负载均衡系统):低延迟
        6. GCLB:高可用性
        7. 案例研究1:应用GCLB的Pokémon GO
      2. 自动缩放
        1. 处理不健康的机器
        2. 使用有状态系统
        3. 保守地配置
        4. 设置约束
        5. 准备终止开关和手动覆写功能
        6. 避免后端超载
        7. 避免流量不平衡
      3. 管理负载的多种策略
        1. 案例研究2:减载引发的攻击
      4. 小结
    5. 第12章 介绍非抽象大系统设计
      1. 什么是NALSD?
      2. 为什么“非抽象”?
      3. AdWords示例
        1. 设计过程
        2. 初始需求
        3. 单机设计
        4. 分布式系统
      4. 结论
    6. 第13章 数据处理流水线
      1. 流水线应用
        1. 从事件处理/数据转置到有序或结构化数据
        2. 数据分析
        3. 机器学习
      2. 流水线最佳实践 (1/2)
      3. 流水线最佳实践 (2/2)
        1. 定义和度量服务质量目标
        2. 为依赖性故障做好准备
        3. 创建和维护流水线文档
        4. 梳理开发生命周期
        5. 减少热点和工作负载模式
        6. 实施自动扩展和资源规划
        7. 遵循存取控制规则和安全策略
        8. 计划升级路径
      4. 流水线需求分析和设计 (1/2)
      5. 流水线需求分析和设计 (2/2)
        1. 你需要什么功能?
        2. 幂等和两阶段突变
        3. 检查点
        4. 代码模式
        5. 流水线投产准备
      6. 流水线故障的预防和响应
        1. 潜在的故障模式
        2. 可能的原因
      7. 案例研究:Spotify (1/3)
      8. 案例研究:Spotify (2/3)
      9. 案例研究:Spotify (3/3)
        1. 事件交付
        2. 事件交付系统的设计与架构
        3. 客户整合与支持
        4. 总结
      10. 小结
    7. 第14章 配置设计及最佳实践
      1. 什么是配置
        1. 配置和可靠性
        2. 分离原则和机制
      2. 配置原则 (1/2)
      3. 配置原则 (2/2)
        1. 问用户配置问题
        2. 问题应该紧贴用户目标
        3. 必答和可选问题
        4. 逃避简单
      4. 配置机制
        1. 配置和生成的数据分离
        2. 工具的重要性
        3. 所有权和变更跟踪
        4. 安全的应用配置变更
      5. 小结
    8. 第15章 配置规范
      1. 配置带来的琐事
      2. 减少配置带来的琐事
      3. 配置系统的关键属性和陷阱
        1. 陷阱1:没有把配置作为一种编程语言
        2. 陷阱2:设计特殊的语言功能
        3. 陷阱3:在特定领域做了很多优化
        4. 陷阱4:将“配置评估”与“外部干扰”交织在一起
        5. 陷阱5:使用现有的通用脚本语言(如Python、Ruby或Lua)
      4. 集成配置语言
        1. 以特定格式生成配置
        2. 驾驭多种应用
      5. 集成现有应用程序:Kubernetes
        1. Kubernetes提供了什么?
        2. Kubernetes配置示例
        3. 集成配置语言
      6. 集成定制应用程序(自开发软件)
      7. 有效地运行配置系统
        1. 版本控制
        2. 源代码控制
        3. 工具
        4. 测试
      8. 何时评估配置
        1. 早期:提交JSON时
        2. 中期:在编译时进行评估
        3. 后期:在运行时评估
      9. 防止滥用配置
      10. 小结
    9. 第16章 金丝雀发布
      1. 发布工程原则
      2. 平衡发布速率和可靠性
      3. 什么是金丝雀发布?
      4. 发布工程和金丝雀发布
        1. 金丝雀流程的需求
        2. 我们的示例配置
      5. 用前滚部署还是简单的金丝雀部署
      6. 实施金丝雀
        1. 将SLO和错误预算的风险降至最低
        2. 选择金丝雀群体和持续时间
        3. 规模和持续时间
      7. 选择和评估指标
        1. 指标应反映出问题
        2. 指标要代表性和归因性兼具
        3. 评估前后有风险
        4. 用渐进式金丝雀更好地选择指标
      8. 依赖关系和隔离
      9. 非交互式系统中的金丝雀
      10. 监控数据需求
      11. 相关概念
        1. 人工负载生成
        2. 流量准备
      12. 小结
  22. 第三部分 流程
    1. 第17章 发现运维超负荷并从中恢复
      1. 从正常负荷到超负荷
      2. 案例研究1:团队规模缩小一半后的工作超负荷
        1. 背景
        2. 问题描述
      3. 我们决定做什么
        1. 实践
        2. 经验教训
      4. 案例研究2:组织和工作负荷发生变化后的感知超负荷
        1. 背景
        2. 问题陈述
        3. 我们决定做什么
        4. 实践
        5. 成效
        6. 经验教训
      5. 缓解超负荷的策略
        1. 识别超负荷的症状
        2. 减少超负荷并恢复团队健康
      6. 小结
    2. 第18章 SRE参与模式
      1. 服务的生命周期
        1. 阶段1:架构与设计
        2. 阶段2:积极开发
        3. 阶段3:有限可用性
        4. 阶段4:一般可用性(GA)
        5. 阶段5:退出
        6. 阶段6:放弃
        7. 阶段7:终止支持
      2. 建立关系 (1/2)
      3. 建立关系 (2/2)
        1. 沟通业务和生产的优先级
        2. 识别风险
        3. 对齐目标
        4. 制定基本规则
        5. 规划与执行
      4. 维持有效的持续关系
        1. 花时间在更好的合作中
        2. 保持顺畅的沟通
        3. 进行定期服务审查
        4. 基本规则开始下滑时要追因
        5. 根据你的SLO和错误预算调整优先级
        6. 合理处置错误
      5. 在更大的环境里规模化推行SRE
        1. 通过一个SRE团队支持多个服务
        2. 构建多SRE团队的环境
        3. SRE团队结构主动顺应变化的环境
        4. 运行团结的分布式SRE团队
      6. 终止关系
      7. 案例研究1:Ares
      8. 案例研究2:数据分析流水线
      9. 小结
    3. 第19章 SRE:跨越壁垒
      1. 不言而喻的事实
        1. 可靠性是最重要的特性
        2. 可靠性以用户为准绳,以监控系统为参考
        3. 可靠性是你运行一个平台的搭档
        4. 重要的东西终将成为平台
        5. 客户不满意时必须放缓脚步
        6. 你要与客户一起实践SRE
      2. 如何与客户一起实践SRE
        1. 步骤1:SLO和SLI是你的语言
        2. 步骤2:审核监控系统、构建共享仪表板
        3. 步骤3:度量并重新协商
        4. 步骤4:设计评审流程、进行风险分析
        5. 步骤5:实践、实践、再实践
        6. 有思想、有纪律
      3. 小结
    4. 第20章 SRE团队生命周期
      1. 没有SRE的SRE实践
      2. 引入SRE角色
        1. 寻找第一位SRE
        2. 安排第一位SRE
        3. 启动第一位SRE工程师
        4. 分布式SRE
      3. 第一个SRE团队 (1/3)
      4. 第一个SRE团队 (2/3)
      5. 第一个SRE团队 (3/3)
        1. 组建期
        2. 激荡期
        3. 规范期
        4. 执行期
      6. 打造更多SRE团队 (1/2)
      7. 打造更多SRE团队 (2/2)
        1. 服务复杂度
        2. SRE 推广
        3. 地理分隔
      8. 多团队运作的建议实践
        1. 角色交换
        2. SRE交换(exchange)
        3. 培训
        4. 横向项目
        5. SRE流动性
        6. 出差
        7. 成立协调工程团队
        8. 卓越生产
        9. SRE预算和招聘
      9. 小结
    5. 第21章 管理SRE的组织变革
      1. SRE拥抱变革
      2. 变革管理概述
        1. Lewin的三阶段模型
        2. McKinsey的7-S模型
        3. Kotter的变革八步法
        4. Prosci ADKAR模型
        5. 基于情感的模型
        6. 戴明环
        7. 这些理论在SRE中的应用
      3. 案例研究1:扩展Waze——从见机行事到计划性变革
        1. 背景
        2. 消息队列:在保持可靠性的同时更换系统
        3. 下一轮变革:改善部署过程
        4. 经验教训
      4. 案例研究2:在SRE中采用通用工具 (1/2)
      5. 案例研究2:在SRE中采用通用工具 (2/2)
        1. 背景
        2. 问题描述
        3. 我们的决策
        4. 设计
        5. 实施:监控
        6. 经验教训
      6. 小结
  23. 结论
    1. 向前看
    2. 未来属于过去
    3. SRE + <其他学科>
    4. 涓涓细流、溪流和洪水
    5. SRE属于我们所有人
    6. 感激之情
  24. 附录A SLO示例文档
  25. 附录B 错误预算策略示例
  26. 附录C 事后总结分析结果
  27. 作者介绍
  28. 封面介绍

Product information

  • Title: Google SRE工作手册
  • Author(s): Betsy Beyer, Niall Richard Murphy, David K. Rensin, Kent Kawahara, Stephen Thorne
  • Release date: September 2020
  • Publisher(s): China Electric Power Press Ltd.
  • ISBN: 9787519845858

You might also like

book

Python数据分析(第2版)

by Posts & Telecom Press, Armando Fandango

学习Python编程,轻松应对大数据分析任务,掌握信号处理、时间序列、文本数据分析、机器学习等高级技能 Key Features 在本书的最后,采用3个附录的形式为读者补充了一些重要概念、常用函数以及在线资源等重要内容。 示例丰富、简单易懂 Book Description Python作为一种高级程序设计语言,凭借其简洁、易读及可扩展性日渐成为程序设计领域备受推崇的语言。同时,Python语言的数据分析功能也逐渐为大众所认可。 本书就是一本介绍如何用Python进行数据分析的学习指南。全书共12章,从Python程序库入门、NumPy数组和Pandas入门开始,陆续介绍了数据的检索、数据加工与存储、数据可视化等内容。同时,本书还介绍了信号处理与时间序列、应用数据库、分析文本数据与社交媒体、预测性分析与机器学习、Python生态系统的外部环境和云计算、性能优化及分析、并发性等内容。在本书的最后,还采用3个附录的形式为读者补充了一些重要概念、常用函数以及在线资源等重要内容。 本书延续了上一版示例丰富、简单易懂的优点,非常适合对Python语言感兴趣或者想要使用Python语言进行数据分析的读者参考阅读。 What you will learn 使用Python处理和操作数据 完成复杂的分析和建模 …

book

编写整洁的Python代码(第2版)

by Posts & Telecom Press, Mariano Anaya

Python代码整洁之道 Key Features 介绍实现Python代码整洁应遵循的基本原则 涵盖避免由不良代码导致的效率低下以及存在诸多隐患的代码的方法 作者专业背景深厚,项目经验丰富 基于Python 3.9 Book Description 这是一本介绍如何实现Python代码整洁的书,主要介绍如何使用Python 3.9引入的新特性提升编码技能。此外,本书还介绍了以下内容:通过利用自动化工具建立高效的开发环境,利用Python中的魔法方法来编写更好的代码,抽象代码复杂性并封装细节,使用Python特有的特性创建高级的面向对象设计,通过使用面向对象设计的软件工程原则创建强大的抽象来消除代码重复,使用装饰器和描述符创建特定于Python的解决方案,运用单元测试方法有效重构代码,以及通过实现整洁的代码库为构建坚实的架构打下基础等。 本书对新手程序员和有经验的程序员同样适用,也适合想通过编写Python代码来节省成本和提高效率的团队领导、软件架构师和高级软件工程师参考。当然在阅读本书前,读者应掌握一些Python基础知识。 What you will …

book

Python编程入门与实战

by Posts & Telecom Press, Fabrizio Romano

Python编程入门的精炼指南,以具体编程范例讲解高效解决真实问题的宝典 Key Features 本书内容由浅入深,从理论到实践 探索不同的编程用法,找到解决特定问题的理想方法 Book Description Python 是一种极其灵活和强大的编程语言,适用于多个领域。本书并没有对 Python 的基础知识进行过多讲解,而是对其实用性进行了透彻的介绍,从而帮助读者熟悉并使用该语言。 你将首先了解 Python 的基础知识,为接下来的学习打下坚实的基础,并学习Python 编程基础,即如何操控 Python以实现想要的效果。你还将探索不同的编程用法,找到解决特定问题的理想方法,理解如何实现程序性能优化,学习有效调试、控制程序的执行流,并使用一种交换格式对数据进行交换。此外,你还将学习 …

book

网络安全评估(第三版)

by Chris McNab

你的网络有多安全?使用与攻击者识别和利用脆弱性相同的策略,来对你的网络开展攻击,是找出答案的最好方法。通过这本实用指南,你将学习如何以结构化的方式执行基于网络的渗透测试。本书作者演示了常见的脆弱性,以及在你的环境中识别这些脆弱性的步骤。 系统的复杂性和攻击平面都在持续增长,本书提供了一个帮助你降低网络风险的过程。每章都包括一份总结攻击者技术的清单,以及你可以立即使用的有效对策。 本书可以学到如何有效测试系统组件,包括: 公共服务,如SSH、FTP、Kerberos、SNMP和LDAP。 微软公司服务,包括NetBIOS、SMB、RPC和RDP。 SMTP、POP3和IMAP电子邮件服务。 提供安全网络访问的IPsec和PPTP服务。 提供运输安全的TLS协议和功能。 网络服务器软件,包括微软公司的IIS、Apache和Nginx。 框架,包括Rails、Django、微软ASP.NET和PHP。 数据库服务器、存储协议和键值对存储。