4. 平台服务等级目标(SLO)定义与错误预算策略

平台服务等级目标(SLO)定义与错误预算策略 学习卡片

为什么平台服务需要 SLO 与错误预算

平台工程把 CI/CD、制品库、环境供给当作“内部产品”来运营,就必须回答两个问题:用户能感知到的可靠性到底是多少,以及可靠性投入与交付速度如何平衡。SLO(服务等级目标)给出可量化的可靠性承诺,错误预算则是这个承诺允许的“失败额度”。当预算被快速消耗时,平台团队应主动降级非关键功能或冻结高风险变更,而不是等到用户大面积投诉才被动响应。

SLI 选择:从用户旅程中提取可观测信号

SLI(服务等级指标)必须来自用户真实感知的路径,而不是服务器内部指标。对平台核心服务,建议按“请求—处理—结果”三段式选取:

平台服务关键用户旅程推荐 SLI数据来源
CI/CD 流水线提交代码 → 获得构建结果流水线成功完成率、端到端时延 P95流水线执行记录、事件时间戳
制品库拉取依赖 / 推送制品请求成功率、下载吞吐达标率仓库访问日志、网关指标
环境供给申请环境 → 环境可用供给成功率、供给时延 P90供给控制器事件、资源就绪探针

每个 SLI 都要明确分子、分母、统计窗口和排除条件。例如“流水线成功完成率 = 成功完成的流水线运行数 / 总运行数”,排除用户主动取消的运行,窗口取 28 天滚动。

SLO 与错误预算的量化关系

SLO 用百分比表达,错误预算就是 1 - SLO。以 28 天滚动窗口为例:

  • SLO = 99.9% → 错误预算 = 0.1% → 28 天约允许 40 分钟不可用(按时间型)或 0.1% 请求失败(按请求型)。
  • SLO = 99.5% → 错误预算 = 0.5% → 28 天约允许 3.4 小时不可用。

错误预算消耗速率(burn rate)比剩余额度更早暴露风险:若 1 小时内消耗了 28 天预算的 10%,说明按此速率 10 小时就会耗尽,必须立即介入。

平台核心服务 SLO 与错误预算策略 用户旅程 → SLI CI/CD 流水线 制品库拉取/推送 环境供给申请 成功率 · 时延 P95/P90 SLO 定义 CI/CD 99.9% 制品库 99.95% 环境供给 99.5% 28 天滚动窗口 错误预算 = 1 − SLO CI/CD:0.1% ≈ 40 min/28d 制品库:0.05% ≈ 20 min/28d 环境供给:0.5% ≈ 3.4 h/28d 按请求型 / 时间型分别核算 错误预算消耗速率 → 分级响应策略 正常:burn rate < 1 预算消耗慢于时间流逝 保持正常发布节奏 持续观察趋势 预警:1 ≤ burn rate < 2 预算消耗加速 暂停非关键变更 启动根因排查 冻结:burn rate ≥ 2 预算即将耗尽 冻结高风险发布 降级非核心功能

错误预算耗尽时的降级与冻结策略

策略必须提前定义、自动触发,避免临时争论。以下是一份可直接落地的策略表:

状态触发条件平台团队动作对用户的影响
正常burn rate < 1正常发布,持续观察无
预警1 ≤ burn rate < 2暂停非关键变更,启动根因排查无直接降级
冻结burn rate ≥ 2 或预算剩余 < 20%冻结高风险发布,降级非核心功能非核心功能可能延迟或降级
熔断预算耗尽仅允许修复类变更,强制复盘核心功能保持,非核心暂停
注意:错误预算不是惩罚工具,而是决策工具。冻结期间应优先修复可靠性问题,而不是继续堆叠新功能。预算恢复后需复盘消耗原因,并评估是否调整 SLO 或架构。

可执行检查清单

  • 每个平台核心服务是否至少有一个用户旅程对应的 SLI?
  • SLI 的分子、分母、窗口、排除条件是否书面化?
  • SLO 是否与用户期望对齐,而非拍脑袋定 99.99%?
  • 错误预算是否按 28 天滚动窗口自动计算并可视化?
  • burn rate 阈值是否配置了自动告警和分级响应?
  • 冻结/降级策略是否经过平台团队与业务方共同评审?