SRE方法论

参考SRE:Google运维解密

贝特西 拜尔著 孙宇聪译

SRE职责
一般来说,SRE团队要承担以下几类职责:可用性改进,延迟优化,性能优化,效率优化,变更管理,监控,紧急事务处理以及容量规划与管理。

运维工作50%内
SRE团队的运维工作限制在50%以内,SRE团队应该将剩余时间花在研发项目上。

On-call 准则
SRE在每8~12小时的on-call 轮值期间最多只处理两个紧急事件。这个准则保证了on-call工程师有足够的时间跟进紧急事件,这样SRE可以正确地处理故障、恢复服务,并且要撰写一份事后报告。

事后总结
事后总结应该包括以下内容:事故发生、发现、解决的全过程,事故的根本原因,预防或者优化的解决方案。

监控系统

  • 紧急警报(alert)

  • 工单(ticket)

  • 日志(logging)

应急事件处理
可靠性是MTTF(平均失败时间)和MTTR(平均恢复时间)的函数。评价一个团队将系统恢复到正常情况的最有效指标,就是MTTR。
任何需要人工操作的事情都只会延长恢复时间。一个可以自动恢复的系统即使有更多的故障发生,也要比事事都需要人工干预的系统可用性更高。

变更管理
SRE的经验告诉我们,大概 70% 的生产事故由某种部署的变更而触发。变更管理的最佳实践是使用自动化来完成以下几个项目:

  • 采用渐进式发布机制。

  • 迅速而准确地检测到问题的发生。

  • 当出现问题时,安全迅速地回退改动。

这三点可以有效地降低变更给SRE和最终用户带来的时间成本和服务质量的下降。

容量规划
容量规划有几个步骤是必需的:

  • 必须有一个准确的自然增长需求预测模型,需求预测的时间应该超过资源获取的时间。

  • 规划中必须有准确的非自然增长的需求来源的统计。

  • 必须有周期性压力测试,以便准确地将系统原始资源信息与业务容量对应起来。

资源部署
资源的部署(provisinging)是变更管理与容量规划的结合物。在我们的经验里,资源的部署和配置必须能够非常迅速地完成,而且仅仅是在必要的时候才执行,因为资源通常是非常昂贵的。而且这个部署和配置的过程必须要确保能够正确地执行完毕,否则资源就仍然处于不可用状态。

效率与性能
高效地利用各种资源是任何赢利性服务都要关心的。因为SRE最终负责容量的部署和配置,因此SRE也必须承担起任何有关利用率的讨论及改进。因为一个服务的利用率指标通常依赖于这个服务的工作方式以及对容量的配置与部署上。如果能够通过密切关注一个服务的容量配置策略,进而改进其资源利用率,这可以非常有效地降低系统的总成本。
一个业务总体资源的使用情况是由以下几个因素驱动的:用户需求(流量)、可用容量和软件的资源使用效率。SRE 可以通过模型预测用户需求,合理部署和配置可用容量,同时可以改进软件以提升资源使用效率。通过这三个因素能够大幅度推动一个服务的效率提升(但是并非全部)。