衡量 SLO 及错误预算策略是否有效,其实就是看实际运行后,是否真的能达到我们的期望。我们可以从下面三个关键维度来看。
- SLO 达成情况。我们用达成(Met),或未达成(Missed)来表示。
- “人肉”投入程度。英文表示为 Toil,这里用形象一点的“人肉”投入作为它的译意,泛指需要大量人工投入、重复、繁琐且没有太多价值的事情。我们用投入程度高(High)和低(Low)来表示。
- 用户满意度。英文就是 Customer Satisfaction,可以理解为用户感受和体验如何。这个信息可以通过真实和虚拟渠道获得。真实渠道如客服投诉、客户访谈和舆情监控获取;虚拟渠道如真机模拟拨测。我们用满意度高(High)和低(Low)来表示。
总共 3 个维度,每个维度有 2 种情况,组合起来就是 8 种情况,我们直接引用 Google 给出的图表和建议。
针对这 8 种情况,我们分别给出对应策略。总结一下,应对方式可以分为 3 类。
第一类,收紧 SLO。
这个时候就是目标定得太低了,比如 SLO 达成(Met),但是用户不满意(Low)。会有什么后果呢?要么投诉多,要么到处吐槽。这就表示我们的 SLO 设定得太容易达成,没有反馈真实的运行状况。
第二类,放宽 SLO。
与第一类相反,目标定太高,总是达不成(Missed),但用户反馈却很不错(High),这种就会造成错误预算提前消耗完,导致很多变更暂停,产品延期,甚至会做一些无谓的优化,这时就可以适当松松绑。
第三类,保持现状,对有问题的维度采取有针对性的优化措施。
比如表格第一行,是我们期望的最理想状态,SLO 能达成,人肉投入又低,客户满意度又很高,也没有特别的优化空间,这时我们就可以增加发布和变更次数,更大程度地释放生产力。
可以参考这个样例,从 SLO 达成情况、“人肉”投入情况以及用户实际满意度三个维度来衡量自己业务和系统的 SLO 有效性,该收紧 SLO 就要提高稳定性要求,但是也不能设定太过超出能力范围的目标,始终达不成,SLO 也就没有意义了。当然,在 SLO 可以达成的情况下,我们还是希望提升我们的用户价值交付效率,围绕着这个终极目标,不断优化自己的 SLO 和错误预算策略。
此文章为4月Day24 学习笔记,内容来源于极客时间《SRE 实战手册》,推荐该课程。