在网站可靠性工程, 也就是 SRE 的这个领域当中, 要在创新的速率跟系统的稳定性之间寻觅到那种堪称完美的平衡, 这可是一项始终不间断的挑战。尽管开发团队一心专注于迅速地发布新的功能, 然而运维团队以及 SRE 的目标却是要维持系统能够平稳地运行, 并且不会出现中断的情况。
常在这种利益冲突致使团队彼此间产生摩擦, 而此处恰系错误预算发挥其作用之所在。
在速度跟可靠性之间, 错误预算构建起了一个量化的、共有的责任。于本文里, 我们会去探究为何错误预算对 SRE 这般重要, 以及它们怎样助力组织在不损害稳定性的情形下达成更快的创新。
理解核心术语
在对错误预算展开深入探究之前, 知晓作为它基础的核心SRE术语, 这是极为关键重要的:
服务质量指标, 也就是 SLI - 服务水平指标(其英文称为 Service Level Indicator), 它属于对服务性能的量化方面的评估状态, 其中常见的 SLI 里包含有响应时间, 此即为延迟, 还包括每秒请求数这就是吞吐量, 另外还有成功请求的百分比, 也就是可用性。
服务质量目标, 也就是 SLO - Service Level Objective, 它乃是由 SLI 指定的服务核心目标, 呈现为在特定时间里目标理应达成的期望可靠性水平, 比如说, “在过去 30 天当中, 百分之九十九点九的请求响应时间必定要低于 200 毫秒。”。
那服务水平协议, 也就是 SLA - Service Level Agreement , 它可是给客户做出的正式承诺, 它规定了如果, 服务没能达到 SLO 的话, 将会面临的后果, 一般而言就是退款或者处罚。通常情况下, SLA 的严格程度是会比 SLO 低一些的, 这样就能给团队提供一个安全缓冲。

什么是错误预算?

指的是这样一种概念, 即错误预算, 是在特定情形下, 也就是你的系统, 在不违背服务质量目标, 也就是 (SLO) 的状况下, 所允许出现的一种情况, 什么情况呢, 就是不可用或者性能下降的,最大时间总量。
简述之, 若汝之可用性 SLO 乃 99.9%, 则汝之错误预算是余留之 0.1%。此即表明于特定之时间架构内(诸如一月), 汝之系统准许有 0.1% 的时间呈现不可用、报错抑或性能减缓之情状。
计算公式:
错误预算等于百分之一百减去服务水平指标, 这是一种计算方式。
为何错误预算对于 SRE 来讲是至关重要的呢, 其能将开发与运维之间所存在的摩擦予以消除。
于传统的 IT 架构里面, 开发团队期望在即便存在引入 Bug 风险的状况下, 尽可能迅速地去部署代码, 然而运维团队却期望把控变更用以维持稳定性。错误预算给这两个团队予以了一个共同的利益根基。它把可靠性转变成为一种能够被消耗的资源。
2. 驱动数据驱动的决策
预算的错误消除了, 在解释可靠性之际的核心主观性。团队不会再因恐惧或者过度谨慎去推迟发布了, 而是能够凭借观察剩余着多少预算, 来作出决策。要是预算足够, 开发团队便能够持续推进高风险的新功能发布。
3. 充当创新的安全网
要是不存在错误预算, 团队有可能在追逐“100%完美正常运行时间”之际陷入停滞状态。可是呢, 追求100%的可靠性不但成本高昂, 并且鉴于网络波动与客户端问题, 在技术层面一般也是不现实的。错误预算接纳了“允许偶尔失败”的观念, 进而激励了安全的创新。
4. 自动实施控制机制(发布熔断)

当错误预算被耗尽, 也就是达到0%的时候, 它会触发预先设定好了的协议。在通常状况下, 这意味着除了安全补丁以及和稳定性有关的修复之外, 所有新功能的发布都会自行暂停。整个团队的重点会转向对底层稳定性问题的修复, 一直到系统恢复到安全水平为止。

如何有效管理错误预算
不只是定义一个错误预算就行的, 存在着其他要求;SRE团队得有恰当适配的策略以及工具, 以此来就其展开监控。
进行实时的监控运作以及告警操作, 借助全栈监控工具去追踪您的SLI, 设定动态告警机制, 不但在预算用光之际发出通知, 并且在错误预算的“消耗率”, 也就是预算被消耗的速率异常之高的时候提前发出警示。
去践行那种不进行指责的事后分析活动(Blameless Post-mortems): 便是当随便某一次事件使得极为大量的错误预算被消耗掉的时候, 就理应去着手举行一回不带有指责意味的事后分析会议。其关键的点并非是要去寻觅那个犯错误的人, 反而是要去找出存在于系统以及流程里面的那些缺陷, 进而用来预防在未来再度出现类似于这种的预算的消耗。
合乎情理地去设置 SLO, 要防止把 SLO 设置得过度高了的情况出现。要是您的客户仅仅需要 99%的可用性, 那么把目标给设定成 99.99%, 只会引发出没有必要的安全焦虑, 还会无缘无故地去限制住您的开发速度。

结论
并非只是一项技术指标的错误预算, 更是那样一种文化工具, 它能够赋予组织能力, 使其能够在维持卓越运营之际开展快速创新, 通过接纳完美的反向面, 组织反倒能够构建起更具韧性的现代化系统。






