2. SLI/SLO/SLA 基础:服务等级指标、目标与协议的定义及关系
在构建 CI/CD 流水线的可观测性与质量保障体系时,SLI、SLO 与 SLA 是三个最核心的概念。它们共同构成了服务质量的度量、承诺与契约体系。理解三者的定义与层级关系,是后续定义流水线“部署成功率”“权限合规率”等口径的前提。
2.1 核心定义
| 术语 | 英文全称 | 定义 | 典型示例(CI/CD 场景) |
|---|---|---|---|
| SLI | Service Level Indicator | 服务等级指标:对服务质量某个维度的量化测量值,通常是比率、时长或计数。 | “流水线部署成功率”“构建平均耗时 P95”“权限审批通过率” |
| SLO | Service Level Objective | 服务等级目标:为 SLI 设定的目标阈值或范围,是团队内部承诺的质量边界。 | “部署成功率 ≥ 99.5%”“构建耗时 P95 ≤ 10 分钟” |
| SLA | Service Level Agreement | 服务等级协议:与外部客户或上下游系统签订的正式契约,包含 SLO 及未达标时的惩罚/补偿条款。 | “对外承诺部署成功率 ≥ 99.0%,否则减免 5% 服务费” |
关键区分:SLI 是“测了什么”,SLO 是“目标是多少”,SLA 是“承诺了什么以及违约后果”。在内部 CI/CD 流水线中,通常只定义 SLI 和 SLO,SLA 仅在涉及跨团队交付承诺或外部客户时引入。
2.2 三者的层级关系
SLI、SLO、SLA 构成一个从测量到目标再到契约的递进结构。下图展示了这一关系:
2.3 三者的核心区别
- SLI 是客观事实:它回答“服务现在怎么样?”,不包含价值判断。例如“过去 7 天部署成功率为 98.7%”。
- SLO 是主观目标:它回答“我们希望服务达到什么水平?”,由团队根据业务影响、成本、风险共同制定。例如“部署成功率应 ≥ 99.5%”。
- SLA 是商业契约:它回答“我们向客户承诺什么?”,通常附带财务或信誉惩罚。SLA 的阈值一般比 SLO 更宽松,以预留安全缓冲。
2.4 在 CI/CD 流水线中的典型映射
以“项目部署”与“安全权限”两个维度为例,展示 SLI/SLO/SLA 的具体落地:
| 维度 | SLI(测量指标) | SLO(内部目标) | SLA(对外承诺) |
|---|---|---|---|
| 部署成功率 | 成功部署次数 / 总部署次数 | ≥ 99.5%(按月统计) | ≥ 99.0%(含补偿条款) |
| 部署耗时 | 从触发到完成的全流程时长 P95 | ≤ 15 分钟 | ≤ 20 分钟 |
| 权限合规率 | 合规审批的部署次数 / 总部署次数 | ≥ 99.9% | ≥ 99.5% |
| 安全扫描通过率 | 通过安全扫描的构建数 / 总构建数 | ≥ 98% | ≥ 95% |
实践要点:在定义流水线 SLI 时,应优先选择与用户体验或业务结果强相关的指标。SLO 的设定不宜过于激进(导致频繁告警疲劳),也不宜过于宽松(失去改进驱动力)。建议参考“错误预算”理论,为 SLO 留出 0.5%~1% 的容错空间。
2.5 错误预算:连接 SLO 与行动决策
错误预算(Error Budget)是 SLO 的衍生概念,定义为 100% - SLO。它量化了服务在给定时间窗口内允许“不达标”的总量。当错误预算耗尽时,团队应暂停新功能发布,优先投入稳定性改进。
错误预算 = 1 - SLO(以小数表示)
示例:SLO = 99.5% → 错误预算 = 0.5%
时间窗口:通常为 28 天或 30 天
允许的失败时间 = 时间窗口总时长 × 错误预算
= 30天 × 24小时 × 60分钟 × 0.5%
= 216 分钟(约 3.6 小时)
在 CI/CD 场景中,错误预算可用于决策:当本月部署失败次数已接近错误预算上限时,应触发“部署冻结”或“仅允许修复性部署”,直到错误预算恢复。
2.6 本章小结
- SLI 是量化测量值,是 SLO 和 SLA 的数据基础。
- SLO 是内部目标,驱动团队持续改进。
- SLA 是外部契约,包含商业承诺与违约后果。
- 错误预算 将 SLO 转化为可操作的决策机制,是 CI/CD 流水线稳定性治理的核心工具。
- 在后续章节中,我们将基于这些概念,定义具体的“项目部署 SLI”与“安全权限 SLI”口径。