SRE Google运维解密 第三章
第二部分 指导思想
本部分将描述 SRE 日常工作背后的指导思想——工作模式、行为方式,以及平时运维工作中关注的重点等。
第三章 拥抱风险
管理风险
在构建系统的过程中,可靠性的进一步提升成本并不是线性增加的。高昂的成本主要存在于以下两个维度:
- 冗余物理服务器 / 计算资源的成本
- 机会成本(如何理解机会成本? - 知乎 (zhihu.com))
在 SRE 团队中,我们管理服务的可靠性很大程度上是通过管理风险来进行的。我们是将风险作为一个连续体来认知的。对于提高 Google 系统的可靠性和对服务故障的耐受水平,我们要给予同等关注。这样我们可以进行成本 / 收益分析。我们的目标是:明确地将运维风险与业务风险对应起来。我们会努力提高一项服务的可靠性,但不会超过该服务需要的可靠性。
度量服务的风险
谷歌标准做法是通过一个客观的指标来体现一个待优化的系统属性,通过设立这样一个目标,我们可客观地评价目前的系统表现以及追踪一段时间内的改进和退步。为了使这个服务风险在运行得各种类型的系统中易于处理,并且保持一致,我们选择主要关注计划外停机这个指标。
- 99.9%(三个9)
- 99.99%(四个9 系统最多在一年中停机 52.56分钟)
- 99.999%(五个9)
计算公式:可用性 = 系统正常运行时间 / (系统正常运行时间 + 停机时间)
然而, 在谷歌内部,基于时间的可用性通常是无意义的。我们需要在着眼全球范围内的分布式服务。因此,通过 请求成功率 来定义服务可用性。
可用性 = 成功请求数 / 总的请求数
例如:一个每天可用性目标为 99.99% 的系统,一天要接受 2.5M 个请求。它每天出现少于250个错误可达到预计的可用性目标。
服务的风险容忍度
辨别消费者服务的风险容忍度
评价服务风险容忍度时,有许多需要考虑的因素。如下所示:
- 需要的可用性水平是什么?
- 不同类型的失败对服务有不同的影响吗?
- 我们如何使用服务成本来帮助在风险曲线上定位这个服务?
- 有哪些其他重要的服务指标需要考虑?
可用性目标
对于某个谷歌服务而言,服务的可用性目标通常取决于它提供的功能,以及这项服务在市场上是如何定位的。下面列出了要考虑的一些问题:
- 用户期望的服务水平是什么?
- 这项服务是否直接关系到收入(我们的或客户的)?
- 这是一个有偿服务,还是免费服务?
- 如果市场上有竞争对手,那些竞争对手的服务水平如何?
- 这项服务是针对消费者还是企业的?
故障的类型
偶然的/正常的/可以接受的
成本
在为每一项服务确定可用性目标时,可以考虑如下的问题:
- 构建和运维可用性再多一个 "9" 的系统时,收益会增加多少?
- 额外的收入是否能够抵消为了达到这一可靠性水平所付出的成本?
可用性目标:99.9% -> 99.99%
增加的可用性:0.09%
服务收入:100万美元
改进可用性后的价值:100万没有 * 0.0009 = 900 美元
在这种情况下,如果可用性提高一个 "9" 的成本不到900美元,这就是合理的投资。但是,如果成本超过 900 美元,那么成本将超过预计增加的收入。
基础设施
基础设施服务的运维关键是明确划分服务水平,从而使客户在构建系统时能够进行正确的风险和成本权衡。通过明确划定的服务水平,基础设施提供者其实就是将服务的成本的一部分转移给用户。以这种方式暴露成本可以促使客户选择既能够满足他们的需求又能够压缩成本的服务水平。