SRE Google运维解密 阅读与摘录 第一部分概览
序言
SRE Site Reliability Engineering 站点可靠性工程师
SRE是工程师。SRE使用计算机科学和软件工程手段来设计和研发大型、分布式计算机软件系统。
SRE的关注焦点在于可靠性。
因为可靠性是如此重要,因此SRE专注于对其复杂的软件系统架构设计、运维流程的不断优化。
SRE的主要工作是运维在分布式集群管理系统上运行的具体业务服务。
第一章 介绍
DevOps 这个名词的核心思想是近早将IT相关技术与产品设计和开发过程结合起来,着重强调自动化而不是人工操作,以及利用软件工程手段执行运维任务等。
SRE团队职责:可用性改进 延迟优化 性能优化 效率优化 变更管理 监控 紧急事务处理以及容量规划与管理
Google SRE 核心方法论:
确保长期关注研发工作
Google 将SRE团队的运维工作现在在50%内。
在保障服务SLO的前提下最大化迭代速度
产品研发部门和SRE之间可以通过消除组织架构冲突来构建良好的合作关系。在企业中,最重要的矛盾就是迭代创新的速度与产品稳定程度之间的矛盾。正如上文所说,其表现形式可能是间接的。在SRE模型中,我们选择正面面对这种矛盾,使用的工具是错误预算。
通过引进 “错误预算”的概念,我们解决了研发团队和SRE团队之间的组织架构冲突。SRE团队的目标不再是 “零事故运行” ,SRE团队和产品研发团队目标一致,都是在保障业务服务可靠性需求的同时尽可能加快功能上线速度。
监控系统
监控系统是SRE团队监控服务质量和可用性的一个重要手段。
应急事件处理
可靠性是 MTTF(平均失败时间)和 MTTR(平均恢复时间)的函数。
变更管理
SRE的经验告诉我们,大概70%的生产事故由某种部署的变更而触发。
需求预测和容量规划
需求预测和容量规划简单来说就是保障一个业务有足够的容量和冗余度去服务预测中的未来需求。
资源部署
资源的部署(provisinging)是变更管理与容量规划的结合物。
效率与性能
高效利用各种资源是任何赢利性服务都要关心的。
第二章 Google生产环境:SRE视角
硬件
管理物理服务器的系统管理软件
管理物理服务器
Borg 是一个分布式集群操作系统。其与 Apache Mesos 类似,Borg 负责在集群层面管理任务的编排工作。
存储
1 D 是一个文件服务器,几乎运行在整个集群的所有物理服务器上。
2 D服务的上一层被称之为 Colossus,Colossus建立了一个覆盖了整个集群的文件系统。
3 构建与 Colossus 之上,有几个类似数据库的服务可供选择:
a Bigtable 是一个NoSSQL数据库。
b Spanner 是可以提供SQL接口以及满足一致性要求的全球数据库。
c 另外几种数据库系统,例如 Blobstore也可用。
网络
GSLB 全球负载均衡系统
其他系统软件
分布式锁服务
Chubby 集群锁服务提供一个与文件系统类似的API用来操作锁。
监控与警报系统
监控系统是服务运维中不可或缺的部分
软件基础设施
Stubby 所有的 Google 服务之前都使用远程调用(RPC)通信。
Protocol Buffer 是 Google RPC 的传输格式,通常简写为 Protobuf,与 Apache Thrift 类似。
研发环境
SRE Google运维解密 阅读与摘录 第二部分指导思想
第3章 拥抱风险
SRE 旨在寻求快速创新和高效的服务运营业务之间的风险的平衡。
管理服务的可靠性主要在于管理风险,而且管理风险的成本可能很高
第4章 服务质量目标
SLI是指服务质量指标(indicator)——该服务的某项服务质量的一个具体量化指标。大部分服务都将请求延迟——处理请求所消耗的实践——作为一个关键的SLI。
可用性(availability)是另外一个SRE重视的SLI,代表服务可用时间的百分比。
第5章 减少琐事
第6章 分布式系统的监控
监控系统中最重要的一点就是整个“生产故障,人工处理紧急警报,简单定位和深入调试”过程必须要保持非常简单,必须能被团队中任何一个人所理解。
4个黄金指标 延迟 流量 错误 饱和度
第7章 Google的自动化系统的演进
自动化的演进遵循以下路径
1 没有自动化
2 外部维护的系统特定的自动化系统
3 外部维护的通用的自动化系统
4 内部维护的系统特定的自动化
5 不需要任何自动化的系统
第8章 发布工程
发布工程是Google内部的一项具体工作。发布工程与产品研发部门的软件工程师(SWE),以及SRE一起定义发布软件过程中的全部步骤——包括软件是如何存储于源代码仓库中的,构建时是如何执行编译的,如何测试、打包,最终进行部署的。
第9章 简单化
一个对SRE管理系统的方法不错的总结是:“我们的工作最终是在系统的灵活性和稳定性上维持平衡。”
SRE Google运维解密 阅读与摘录 第三部分具体实践
第10章 基于实践序列数据进行有效报警
第11章 on-call 轮值
第12章 有效的故障排查手段
第13章 紧急事件响应
第14章 紧急事故管理
第15章 事后总结:从失败中学习
第16章 跟踪故障
第17章 测试可靠性
第18章 SRE 部门中的软件工程实践
第19章 前端服务器的负载均衡
第20章 数据中心内部的负载均衡系统
第21章 应对过载
第22章 处理连锁故障
第23章 管理关键状态:利用分布式共识来提高可靠性
第24章 分布式周期性任务系统
第25章 数据处理流水线
第26章 数据完整性:读写一致
第27章 可靠地进行产品的大规模发布
SRE Google运维解密 阅读与摘录 第四部分管理
第28章 迅速培养 SRE 加入on-call
第29章 处理中断性任务
第30章 通过嵌入 SRE 的方式帮助团队从运维过载中恢复
第31章 SRE 与其他团队的沟通与协作
第32章 SRE 参与模式的演进历程
典型服务的生命周期:设计 构建和实现 发布 运维 退役
SRE会考量该服务的几个方面:
系统的体系结构和跨服务依赖
指标的选择、度量和监控
紧急事件处理
容量规划
变更管理
性能:可用性、延迟和资源效率
SRE Google运维解密 阅读与摘录 第五部分结束语
第33章 其他行业的实践经验
内容来自 SRE Google运维解密,Betsy Beyer,孙宇聪,2016-11
网友评论