SRE Google运维解密

Contents hide

SRE Google运维解密


概览

介绍

Google生产环境:SRE视角

指导思想

拥抱风险

服务质量目标

减少琐事

分布式系统的监控

Google的自动化系统的演进

发布工程

简单化

具体实践

基于时间序列数据进行有效报警

on-call轮值

有效的故障排查手段

紧急事件响应

紧急事故管理

事后总结:从失败中学习

跟踪故障

测试可靠性

SRE部门中的软件工程实践

前端服务器的负载均衡

数据中心内部的负载均衡系统

应对过载

处理连锁故障

管理关键状态:利用分布式共识来提高可靠性

分布式周期性任务系统

数据处理流水线

数据完整性:读写一致

🚩 可靠的进行产品的大规模发布

发布协调工程师

Launch Coordination Engineering, LCE

  • 审核新产品和内部服务,确保他们和Google的可靠性标准以及最佳实践一致,同时提供一些具体的建议来提升可靠性。
  • 在发布过程中作为多个团队之间的联系人。
  • 跟进发布所需任务的进度,负责发布过程中所有技术相关的问题
  • 针对Google的最佳实践和各项服务的集成来培训开发者,充分利用内部的文档和培训资源来加速开发

优势

  1. 广泛的经验
  2. 跨职能的视角
  3. 可观性

建立发布流程

好的发布流程具有一些特征:

  • 轻量级
    占用很少的开发时间
  • 鲁棒性
    能够最大限度的避免简单的错误
  • 完整性
    完整的、一致的在各个环节内跟踪重要的细节问题
  • 可扩展性
    可以应用在很多简单的发不上,也可以用在复杂的发布过程中
  • 适应性
    可以适用于大多数常见的发布(例如在产品界面上增加新的UI组件),以及可以适应全新的发布类型(例如Chrome浏览器和Google Fiber的第一次上线)

取舍和平衡这些需求的手段:

  • 简化
    确保基本信息正确。不需要为所有的可能性做准备。
  • 高度定制
    有经验的工程师会针对每次发布定制流程
  • 保证通用路径快速完成
    识别出几类发布流程所具有的共同模式(例如在新的国家发布产品),针对这类发布提供一个快速简化通道。

发布检查列表

推动融合和简化

发布未知的产品

起草一个发布检查列表

架构与依赖

集成

容量规划

故障模式

客户端行为

流程与自动化

开发流程

外部依赖

发布计划

可靠发布所需要的方法论

灰度和阶段发布

功能开关框架

应用客户端滥用行为

过载行为和压力测试

LCE的发展

LCE检查列表的变迁

LCE没有解决的问题

扩展性的改变
不停增加的运维压力
基础设施的改变

管理

迅速培养SRE加入on-call

处理中断性任务

通过嵌入SRE的方式帮助团队从运维过载中恢复

SRE与其他团队的沟通与协作

SRE参与模式的演进历程

结束语

其他行业的实践经验

发表回复

您的电子邮箱地址不会被公开。