Table of Contents

Design Goals for SLO Measurement

SLO衡量的设计目标

在设计SLO[1]衡量时,要考虑灵活性(flexibility)、可测试性(testability)、新鲜性(freshness)、成本(cost)、可靠性(reliability)和组织约束(organizational constraints)等目标。让我解释一下如何使用它们。你要有灵活的目标。也就是说,SLO必须能够随着时间的推移而变化。有时,这只是为了调整错误预算,以允许更多的发布和更快的产品迭代。

操作员应该能够调整SLIs中嵌入的启发式方法(例如,25ms[毫秒]到30毫秒)、成功阈值(95%的时间到97%的时间)、聚合窗口(过去30秒到过去7天)等,所有这些都不需要进行代码更改、重新部署软件或推送新的生产配置。目标修改前后的SLO性能历史记录也应该保留,并通过某种方式查看每个目标随着时间的变化。

接下来,考虑可测试的目标。当添加一个新的SLO时,我们既需要一个SLI,也需要一个目标(objective),或者说目标(target)[2]。拟定适当的目标(targets)往往是微妙而具有挑战性的。考虑到我们的可靠性历史,什么是正确的错误预算?衡量延迟的百分位数?实际的延迟阈值?而且,考虑到我们的目标是灵活的SLO目标,任何时候SLO需要更新,这些都应该重新考虑。为了对我们的 SLO 有信心,请根据历史数据对可能的目标进行回测,特别是当 SLO 涉及到告警时–并且在设置阈值时估计告警频率。

新鲜度(Freshness)是衡量一个SLO反映生产中实时数据所需的时间。就新鲜度而言,时间延迟越低越好,但实际的新鲜度要求取决于特定的SLO。

某些SLO可能只用于每月的管理报告,在这种情况下,SLO是否包含最近30秒内的数据并不重要。在其他情况下,SLO是关键业务生产消防的第一道防线;那么,新鲜度应以秒为单位,数据处理延迟应保持在最低限度。

成本也必须是一个设计考虑因素。如果有无限的预算,实施灵活的、可测试的、新鲜的SLO要容易得多,但有效的组织范围内的SLO的数据工程要求可能是巨大的,特别是对于高吞吐量或广泛分布的应用。估计成本到小数点后多位既无必要也不现实,但通过沿着三条轴线提前考虑,应该有可能在10倍以内:时间序列数据、结构化日志数据和机会成本。

正如单个服务有 SLO 一样,SLO 基础设施也必须有自己的 SLO! 在现有的高可用性观察性组件之上或之内实施SLO。但有时,SLO是通过不可靠的脚本或监控不力的cron作业来实现的,从而引入了风险和不可靠性。如果你需要建立新的基础设施来实现某些高优先级的 SLO,那么就这样做吧——但要提前计划并分配时间来使新的基础设施高度可用。SLO基础设施必须是你的组织在生产中运行的最可靠的软件之一。

最后,组织往往带来超越任何技术或预算考虑的限制。例如,在某些高度管制的行业中,企业仍然普遍要求所有的运营数据留在企业内部,在物理数据中心,或在企业的VPC(虚拟私有云)中。在其他情况下,一个组织将通过要求所有持久的时间序列数据或所有结构化的日志数据驻留在一个特定的数据库或一个特定的供应商来对抗数据孤岛。

这里概述的目标并不详尽,但你的SLO实施会因为考虑到了这些目标而变得更好!记住这只是一个模型;你必须做最适合你、你的系统和你的用户的事情。

Adapted from the book Implementing Service Level Objectives: A Practical Guide to SLIs, SLOs, and Error Budgets (O’Reilly).

我们如何构建本书的结构

SRE虽然涉及复杂的技术系统,但归根结底是一种文化实践。文化是人的产物,这启发我们根据你在组织中的SRE数量来组织本书的各个部分–你具体处理什么,你的一天是怎样的,取决于有多少个SRE工程师。我们将本书的文章分为 “SRE新手” 、0-1个SRE、1-10个SRE、10-100个SRE和 “SRE的未来 ”。

读者如果想找寻先从哪里开始的指导,可以直接跳到最适用于自己的部分;但是,你仍然会发现阅读那些目前并不适用于你日常的部分的文章的价值。

在0到1个SRE时,还没有人被指定为SRE,或者你已经找到了你的第一个SRE,这个角色看起来几乎是孤独的。

在1到10名SRE时,你正在组建一个团队,有知识共享和分工的能力。

在10到100个SRE时,你已经成为一个组织,你需要思考的不仅仅是你所从事的系统,还需要思考如何组织这么多SRE。

“SRE新手” 涵盖了基础性的话题(尽管并不详尽!),对于那些刚刚开始SRE之旅的人来说是很有帮助的,即使是最有经验的SRE,也是一种复习。 “SRE的未来” 包含了一些文章,这些文章探讨了SRE潜在的发展方向,或者是(目前)坐拥时代潮流。

没有必要按照任何特定的顺序阅读本书。你可以从头到尾读一遍。或者,如果你对某个特定的主题感到好奇,可以翻到索引,在那里你可以找到关于该主题的所有文章。把它作为参考指南,或者是灵感的来源–可以在需要的时候提供一个震撼。或者,也许可以建立一个阅读俱乐部,每周一次挑选一篇文章与同事讨论。这就是散文集的魅力所在。我们希望你和我们一样喜欢阅读它们。

结语

SRE系列的文章,有时间我就会翻译一些,希望大家能学到对自己有用的东西。谢谢

延伸阅读

1.Service-Level

2.Difference between Objectives and Targets
Objectives are the aims / purposes or the vision of a person or an organisation. Targets are the goals or the mission of a person or an organisation.
目标(Objectives)是一个人或一个组织的目的(aims)/目的(purposes)或愿景。目标(Targets)是一个人或一个组织的目标或使命。