4、SLA制定流程:需求调研、指标定义、基线测量、目标设定、评审发布

好,咱们进入正题。SLA 制定这件事,说白了就是跟业务方签一份「数据服务军令状」。我见过太多团队一上来就拍脑袋定指标,结果上线不到两周就被投诉打脸。为什么会这样?因为跳过了最关键的几个步骤。

我个人习惯把 SLA 制定拆成五个阶段:需求调研 → 指标定义 → 基线测量 → 目标设定 → 评审发布。这五个阶段环环相扣,少一个都不行。你想想看,连业务方到底要什么都不知道,你怎么定指标?连当前水平都没摸清,你怎么设目标?

核心原则:SLA 不是运维单方面定的,是跟业务方「谈」出来的。谈之前,你得有数据、有底线、有预案。

SLA 制定五阶段流程 需求调研 摸清业务期望 指标定义 量化可测量 基线测量 摸清当前水平 目标设定 承诺合理值 评审发布 确认并公示 持续反馈与迭代 关键提醒: • 每个阶段都需要业务方和数据团队共同参与 • 基线测量至少需要 2-4 周的数据积累,不要用一天的数据拍脑袋 • 目标设定要有「保底值」和「挑战值」两个档位

4.1 需求调研:别急着定指标,先搞清楚业务到底要什么

这一步最容易被忽略。很多团队上来就问「你的 SLA 要几个 9?」——这是典型的错误姿势。业务方可能连「可用性」是什么都不清楚,你问他几个 9,他只能随口说个 99.9%。

我在项目中遇到过这样的情况:某业务方要求「数据延迟不超过 5 分钟」。我们吭哧吭哧优化了三天,结果人家说「其实我们只是希望每天早上 9 点前能看到昨天的报表」。你看,真实需求是 T+1 的时效性,不是 5 分钟延迟。

需求调研的核心产出是一份 SLA 需求清单,至少包含以下内容:

调研维度 关键问题 常见误区
业务场景 数据用在什么环节?决策/报表/实时风控? 把「想要」当「需要」
使用时段 7×24 小时还是仅工作时间? 默认全天候,实际用不上
容忍度 能接受多长时间的不可用? 说「不能断」,实际能忍 30 分钟
数据新鲜度 需要实时、小时级还是天级? 盲目追求实时,成本翻倍
数据完整性 允许丢数据吗?丢多少能接受? 要求 100% 完整,不现实

我的小技巧:调研时别只问「你要什么」,多问「如果做不到会怎样」。这能帮你判断哪些是真正的底线,哪些是「最好有」的期望。

4.2 指标定义:把模糊的期望变成可测量的数字

需求调研完了,你手里有一堆「快一点」「稳一点」「别丢数据」之类的描述。现在要做的,是把这些翻译成技术指标。

我个人习惯用 SLA 指标矩阵 来梳理。说白了,就是给每个业务需求找到对应的量化指标:

  • 可用性:服务正常运行时间 / 总时间。注意区分「系统可用」和「数据可用」。
  • 时效性:数据从产生到可被查询的时间差。常见的有「延迟不超过 X 分钟」。
  • 完整性:成功写入的数据量 / 应写入的数据量。注意去重和乱序处理。
  • 准确性:数据值与真实值的偏差。这个最难定,通常用抽样校验。
  • 吞吐量:单位时间内能处理的数据量。峰值场景要单独评估。

嗯,这里要注意:指标不是越多越好。我见过一个团队定了 15 个 SLA 指标,结果运维每天光看板子就花两小时,业务方也记不住。我的建议是:核心指标不超过 5 个,每个指标都要有明确的业务含义。

避坑指南:我曾经在一个项目中把「可用性」定义为「API 接口返回 200 的比例」。结果接口返回 200 了,但数据是空的——业务方照样投诉。后来我们改成「可用性 = 能返回有效数据的请求比例」。定义指标时,一定要跟业务方确认「什么算好,什么算坏」。

4.3 基线测量:没有数据,一切承诺都是空话

指标定义好了,别急着设目标。你得先知道当前水平在哪。基线测量的目的就是摸清家底。

我建议至少采集 2-4 周 的连续数据。为什么这么久?因为一周的数据可能覆盖不了周末的流量波动,两周才能看到一些周期性规律。如果遇到大促或活动期,最好单独标注。

基线测量要关注三个值:

  1. P50(中位数):代表日常水平。比如延迟中位数 200ms。
  2. P95/P99:代表极端情况。P99 延迟 1s 意味着 99% 的请求在 1s 内完成。
  3. 最差值:历史上最差的表现。这个值决定了你的「保底承诺」不能低于它。

举个例子,我在一个实时数仓项目中测到的基线数据:

指标 P50 P95 P99 最差值
数据延迟 30s 2min 5min 12min
可用性 99.95% 99.8% 99.5% 98.2%
完整性 99.99% 99.9% 99.5% 97.8%

看到最差值了吗?如果业务方要求可用性 99.9%,你得先问问自己:历史上最差是 98.2%,你凭什么承诺 99.9%?要么优化系统,要么调整预期。

核心观点:基线测量不是为了证明「我能做到」,而是为了告诉业务方「我现在在哪,我能承诺到什么程度」。诚实面对现状,比盲目承诺更受尊重。

4.4 目标设定:承诺要留有余地

基线数据出来了,现在可以定目标了。目标设定我建议分两档:

  • SLO(服务等级目标):日常追求的目标,比如延迟 P99 ≤ 1s。达不到要改进,但不一定触发处罚。
  • SLI(服务等级指标)阈值:触发处罚或告警的硬线,比如延迟 P99 > 3s 持续 5 分钟算一次故障。

目标怎么定?我的经验公式是:

SLO = 基线 P95 × 0.8(比当前好一点,但别太激进)
SLI 阈值 = 基线最差值 × 1.2(留 20% 的缓冲空间)

当然,这只是参考。如果业务方确实需要更高的标准,那就得配套投入资源。我在项目中遇到过业务方要求「延迟不超过 10s」,但基线 P95 是 30s。最后我们谈的结果是:第一版 SLO 定 20s,同时给一个月时间优化,优化到位后再调整到 10s。

我的建议:目标设定时,一定要跟业务方说清楚「承诺的代价」。你要 99.99% 的可用性?可以,但成本可能是 99.9% 的三倍。让业务方自己做权衡,而不是你单方面拍板。

4.5 评审发布:让 SLA 真正落地

目标定好了,别急着发邮件。评审发布这一步,是 SLA 能否真正执行的关键。

评审环节我建议至少包含三方:

  • 业务方:确认指标和阈值是否满足真实需求。
  • 数据团队:确认技术可行性,评估改造成本。
  • 运维/稳定性团队:确认监控告警是否到位,故障响应流程是否就绪。

评审通过后,发布时要包含以下内容:

  1. SLA 文档:指标定义、测量方式、目标值、处罚条款。
  2. 监控看板:实时展示 SLA 达标情况,业务方能自己看。
  3. 告警规则:接近阈值时提前告警,别等超了才通知。
  4. 故障响应流程:谁负责处理?多长时间内响应?升级路径是什么?

我曾经犯过一个错:SLA 文档写得漂漂亮亮,但监控没跟上。结果第一个月复盘时,发现有一半的指标根本没法准确测量。后来我们定了一条铁律:SLA 发布前,监控必须先上线。

避坑指南:评审时别只走形式。我见过一个团队评审会开了 10 分钟就过了,结果上线后业务方说「这个指标我不认,当时没看清楚」。后来我们改成:评审会必须有业务方签字确认,并且留 3 个工作日的「冷静期」,期间任何一方可以提出异议。

好了,这五个阶段走下来,一份靠谱的 SLA 基本就成型了。记住:SLA 不是一锤子买卖,它需要持续迭代。业务变了、系统变了、数据量变了,SLA 也得跟着变。下一阶段我们会聊怎么监控和运营 SLA,但那是后话了。