「译文」常见的 SLO 陷阱以及如何避免它们

简介: 「译文」常见的 SLO 陷阱以及如何避免它们

👉️URL: https://www.dynatrace.com/news/blog/common-slo-pitfalls-and-how-to-avoid-them/

✍️Author: Emory Zhao

📝Description:

服务等级目标(SLO)帮助 DevOps 团队实现业务目标。学习 5 个最佳实践以避免常见的 SLO 陷阱。

如今,在线服务需要接近 100% 的正常运行时间。这种需求使 DevOps 团队越来越需要维护关键业务应用程序的性能和可靠性。构建服务等级目标 (SLO)以及服务等级协议和服务等级指标,是团队评估和衡量错误预算范围内的软件性能的好方法。但是存在 SLO 陷阱。因此,在创建 SLO 时,避免这些常见错误非常重要,这些错误可能会给您的 DevOps 团队带来更多麻烦。

陷阱 1:SLO 与您的业务目标不一致

一个常见的陷阱是创建与您的业务目标或服务等级协议 (SLA) 不一致的 SLO。这可能会造成不必要的干扰,并偷走关键任务的时间。例如,一家银行的 IT 团队希望确保在过去 30 天内,对于没有收入影响的应用程序,具有 99.9% 的服务可用性和 <50 毫秒的延迟。为非业务关键型应用程序设置严格的 SLO 可能会导致在修复问题或执行任务以确保正常运行时间时浪费时间和资源。

如果 SLO 与关键业务目标或外部 SLA 无关,则最好重新考虑或重新校准该目标。最好的投资是为 面向客户、创收、高可见性 的应用程序管理 SLO。例如,支票存款应用程序的服务可用性不断违反 SLO,会造成客户的不满,导致潜在的收入影响。

陷阱 2:没有所有权或问责制的 SLO

当 SLO 被违反时,你会打电话给谁?谁拥有它?由高层管理人员创建的 SLO 在没有相关开发、运营和 SRE 利益相关者支持的情况下创建,当违规行为发生时,可能会导致相互指责、甩锅和混乱的作战室。没有所有者的损坏的 SLO 可能需要更长的时间来修复,并且与具有所有者和明确定义的修复过程的 SLO 相比,它更有可能再次发生。

为避免孤立的 SLO,请确保在创建 SLO 期间,关键利益干系人之间有高水平的协作,并且 SLO 经过审查、可行和达成一致。建立需要监视的相关服务级别指标 (SLI)、修复任何问题的过程、所需的相关工具以及解决的时间范围。在团队采用 SLO 之前,您应该讨论并同意所有这些问题。

陷阱 3:被动使用 SLO 与主动使用 SLO

通常,团队创建 SLO 是因为他们只是遵循行业中其他人正在做的事情,或者因为它们是常见的最佳实践。但许多人无法理解它与业务目标相关的目标。在这些组织中,IT 团队可能不会关注 SLO,直到违规行为发生,之后个人所有者争先恐后地解决这些问题。这本质上是被动的,并且侵蚀了 SLO 在维护应用程序的运行状况,可靠性和弹性方面为组织带来的价值。被动也不能防止类似的违规行为在将来再次发生,而是占用开发人员的关键时间。

为避免这种情况,请在设计过程的早期开始 SLO 讨论。推动将 SLO 评估整合到 CI/CD 管道中,而不仅仅是在生产中。通过告警和根本原因分析确保设置和跟踪错误预算,以便开发团队可以在问题成为问题并导致违规之前了解和分类问题。

陷阱 4:SLO 阈值过高或过低

最常见的 SLO 陷阱之一是通过将 SLO 目标设置得太高而过度承诺,或者通过将 SLO 目标设置得太低来实现不足。SLO 对于评估您的团队在交付已商定的内容(无论是面向客户的 SLA 还是内部商定的业务目标)方面的成功程度非常重要。如果你设置的 SLOs 使它们不断地被违反,那么它们就变得毫无意义,不能帮助你了解你的应用程序的健康状况。

让我们以服务可用性为例。根据 Google G-Suite 研究人员 的说法,一个好的可用性指标应该是 有意义 的(捕获用户体验)、成比例 的(指标的变化应该与用户感知的可用性的变化成正比)和 可操作 的(洞察指标为什么低或高)。

一个好的经验法则是:你在 SLO 中的成功应该与客户和用户体验相关,而违规行为应该代表服务恶化。例如,将服务可用性设置为 89% 的 SLO 可能会有问题,因为 11% 的停机时间可能会影响大量用户, 但与此同时,DevOps 团队不会收到任何告警或担心客户影响,因为他们的 SLO 在阈值内。

若要设置有意义的阈值,请与相关利益干系人合作,建立可实现且对明确用户体验有影响的 SLO。与所有者一起审查,以校准最能捕获特定用例的 SLI。以这种方式定制 SLO 可确保您花费资源来确保满足 SLO 的要求、高效使用、提升客户价值,并帮助开发人员改进其 QA 和解决方案流程。

陷阱 5:通过仪表板和电子表格手动评估 SLO

开发仪表板和电子表格来跟踪 SLO 性能对于组织和可视化 SLO 和 SLI 非常有用。然而,另一个常见的 SLO 陷阱是,许多组织使用不同的工具手动组装这些指标,这可能需要时间进行创新。需要通过查看多个仪表板来执行眼球分析,就会减慢质量评估过程,并引入更高的故障风险。

持续和自动化的发布验证就是答案。能够自动评估测试结果,利用监控工具中的关键 SLI,并计算质量分数,以便在生命周期的每个阶段自动执行通过 / 不通过决策,这对于减少人为错误和扩展 QA 流程至关重要。通过智能的数据驱动方法自动阻止不良代码的能力对于不断受到手动流程限制但又被要求快速交付更高质量软件的开发团队来说非常重要。

创建和监控 SLO 的自动智能方法

避免 SLO 陷阱并应对创建 SLO 的挑战可能会令人沮丧,尤其是在当今复杂的 IT 流程中。但是,通过 Biz、Dev、Ops 和安全团队之间的充分规划和高度协作,利益相关者可以更好地准备建立 SLO,以确保您交付的软件可靠、有弹性并满足客户期望。

相关文章
|
8月前
|
SQL 安全 程序员
PHP编程中的关键性错误及解决方法
在PHP编程过程中,程序员常常会遇到一些关键性错误,这些错误可能会导致程序运行异常甚至崩溃。本文将重点探讨PHP编程中常见的关键性错误,并提供解决方法,帮助程序员更好地应对这些问题,提高编程效率和代码质量。
44 1
|
5月前
|
安全 程序员 开发者
【程序员必看】汇编语言中的致命陷阱:如何避免那些让人夜不能寐的安全隐患?
【8月更文挑战第31天】编写安全的代码是每个程序员的目标,尤其在使用汇编语言时更为重要。本文探讨了汇编语言编程中常见的错误类型及预防措施。首先介绍了汇编语言的特点,然后详细分析了四种常见错误:越界内存访问、不当的数据类型转换、不正确的堆栈操作以及不安全的输入处理。每种错误均附有示例代码和具体预防措施,帮助开发者避免这些陷阱,提高代码安全性。通过遵循这些指导原则,可以显著降低错误发生率,确保程序的安全性和可靠性。
84 0
|
2月前
|
缓存 Java 开发者
Java多线程编程的陷阱与最佳实践####
本文深入探讨了Java多线程编程中常见的陷阱,如竞态条件、死锁和内存一致性错误,并提供了实用的避免策略。通过分析典型错误案例,本文旨在帮助开发者更好地理解和掌握多线程环境下的编程技巧,从而提升并发程序的稳定性和性能。 ####
|
1月前
|
安全 算法 Java
Java多线程编程中的陷阱与最佳实践####
本文探讨了Java多线程编程中常见的陷阱,并介绍了如何通过最佳实践来避免这些问题。我们将从基础概念入手,逐步深入到具体的代码示例,帮助开发者更好地理解和应用多线程技术。无论是初学者还是有经验的开发者,都能从中获得有价值的见解和建议。 ####
|
Rust 安全 算法
Rust 基础入门 ——所有权 引言 :垃圾自动回收机制的缺陷。
能有这些问题的部分发生场景: 游戏开发:在游戏开发中,需要保持稳定的帧率和低延迟,以提供流畅的游戏体验。如果GC频繁触发或停顿时间过长,会导致游戏卡顿或掉帧,影响游戏的流畅度和响应性能。
169 0
|
Java 编译器 Go
终于弄懂Go语言变量逃逸分析 新手不能错过这篇指南
终于弄懂Go语言变量逃逸分析 新手不能错过这篇指南
238 0
|
监控 安全 数据安全/隐私保护
在开源代码的时候该如何避免安全风险的发生?
作为开发者来讲,不管是在实际开发中使用开源项目,还是直接投身于开源的贡献中,关于开源相关的内容想必都有自己独到的见解。开源与开发者息息相关,可能有的开发者会觉得不使用开源项目,自己就与开源无关了?这种想法是片面的,因为就算没有在实际开发中使用开源项目,但是在实际开发中肯定会用到一些第三方的插件,那么能保证这些插件没有用到开源的内容么?所以,开源与每一位开发者都有联系。
297 2
在开源代码的时候该如何避免安全风险的发生?
关于《生成器运行时机导致的难以察觉的 bug》勘误
关于《生成器运行时机导致的难以察觉的 bug》勘误
84 0
|
Java
JVM学习笔记:逃逸分析的优化手段(猜想随笔)
逃逸分析:优化的内容只是针对那些未发生逃逸的对象,将对象通过标量替换的手段进行优化了,也就是说将未发生逃逸的对象拆分成了基础数据类型和方法,在栈帧使用栈帧即可管理。
130 0
|
编译器 C语言
源于《C陷阱与缺陷》----研究程序死循环问题
所以最后答案应该就是打印了12次xiao tao,然后越界访问出现错误,使arr[10]=0,arr[11]=0了 但最后答案却不是这样。
127 0