拥抱风险
-
极端的可靠性带来成本的大幅提升,过分追求稳定性限制了新功能的开发速度和交付速度;
-
SRE旨在寻求快速创新和高效的服务运营业务之间的风险平衡,而不是简单的将服务在线时间最大化;
-
管理服务的可靠性很大程度是通过管理风险来进行的,明确的将运维风险与业务风险对应,同时把可用性目标看作风险的上限和下限,促使团队进行风险讨论,管理风险需要从两方面入手:
资源成本:因降低风险所付出的资源投入; 机会成本:因降低风险带来的效率低下;
-
度量服务的风险
-
基于时间的可用性:
可用性 = 系统正常运行时间/(系统正常运行时间+停机时间)
-
合计可用性
可用性 = 成功请求数/总的请求数
使用请求成功率指标量化计划外停机时间使得这种指标更适合在不直接服务终端用户的系统中使用。
-
-
一个生产或关键系统中,服务的风险容忍度通常是直接根据基本产品或服务的定义建立的;
-
辨别消费者服务的风险容忍度:
- 需要的可用性水平是什么? - 不同类型的失败对服务有不同影响吗? - 我们如何使用服务成本来帮助在风险曲线上定位这个服务? - 有哪些其他重要的指标需要考虑?
服务的可用性目标通常取决于它提供的功能:
- 用户期望的服务水平是什么? - 这项服务师范直接关系到收入? - 这是一项有偿服务还是免费服务? - 竞争对手服务水平如何? - 这项服务的对象是哪些?
决定一项服务的合理可用性目标时,成本是很重要的考虑因素;
-
基础设施的风险容忍度:
因基础设施服务对象不同,因此针对风险容忍度有不同定义与划分。基础设施服务运维的关键战略时明确划分服务水平,从而使客户在构建系统是能够进行正确的风险和成本权衡,通过明确划定服务水平,基础设施提供者其实就是将服务的成本一部分转移给用户。
我们可以使用相同的硬件和软件运行多个级别的服务,可以通过调整服务的各种特性提供不同的服务水平,如:资源数量、冗余程度、资源的地理配置及基础设施软件的配置等等。
-
因研发与SRE工作目标不同,导致在风险管理中投入不同,因此需要双方定义一个双方都同意的错误预算指标(最好的方式是产品或项目经理给定一个SLO,通过监控系统监测可用性指标,在指标充足时双方均可承受风险,指标不足时降低发布速度并提高测试严谨性)。
-
关键点:
- 管理服务的可靠性主要在于管理风险,而且管理风险的成本可能很高;
- 100%可能永远都不是一个正确的可靠性目标,不仅是不可能实现的,而且它通常比一项服务的用户期望的可靠性大得多,我们要将服务的风险和愿意承担的业务风险相匹配;
- 错误预算在SRE和产品研发团队之间调整激励,同时强调共同责任,错误预算使得讨论发布速度更容易,同时可有效减少任何关于事故的讨论,这样多个团队可以毫无怨言的对生产环境风险达成一致。