likes
comments
collection
share

Google:你的SRE实践可能是错的

作者站长头像
站长
· 阅读数 3
Google:你的SRE实践可能是错的 作者 | Manuel Pais 作者 | 盖磊 也许你对 SRE 还云里雾里,可能你的公司 SRE 实践是错误的

在 6 月份的 DevOps Enterprise Summit 伦敦大会上,Google 客户可靠性工程师 Stephen Thorne 做演讲澄清了 SRE(站点可靠性工程,Site Reliability Engineering)的概念,并指出了为什么很多企业并不了解 SRE 的基本前提和优点。

Thorne 看到,一些企业对 SRE 的主要误解,在于将 SLO(服务级别目标,service level objectives)和 SLA(服务级别协议,service level agreements)混为一谈。SLO 侧重于早期的故障检测,而 SLA 通常用做已发生故障的经济补偿,它不强制错误预算(error budgets),也不会让 SRE 团队花费至少一半的精力去改进系统和工具,而是让人们继续疲于奔命,因此也称为在生产环境中“灭火”。

Thorne 补充说,SLO 是先期发现问题的基础,理想情况是先于客户感受到问题的影响。好的 SLO 应符合客户的输出(例如服务可用性、响应时间等),从而反映出一个系统(行为)是否满足用户的需求。系统监视资源的使用情况(例如 CPU 利用率、网络吞吐量等)会被提及,但这些度量本身不应做为 SLO。Thorne 认为,“如果客户满意,那么就满足 SLO”。Google 的一些典型 SLO 包括:

  • 每月运行时长 99.9%(即每月只有 43 分钟宕机时间)。

  • 每月 99.99% 的 HTTP 请求成功返回“200 OK”。

  • 50% 的 HTTP 在 300 毫秒内返回。

SLA 通常在客户已对服务产生不满意时才发挥作用,因此 SLA 并不会主动提高系统的可靠性。此外,SLA 可能会引发错误的行为。例如,如果此时有一个两小时修复电子邮件问题的 SLA,和一个一天内修复生产系统严重问题的 SLA,按规程会导致首先处理一个(或多个)电子邮件问题。但是很显然,生产系统出现的问题应该得到优先处理。

Thorne 警告说,仅定义 SLO 是不够的。错误预算策略设置了明晰的操作规则(而非货币补偿),在系统接近于 SLO 的阈值之前达成 SLO。一旦系统无法满足用户的需求,SLO 也可以最大限度减少运维和开发之间的矛盾。Thorne 指出,“完美可靠性与 SLO 之间的差距就是错误预算”。Google 的典型错误预算政策是,一旦应用用尽其错误预算(例如,本月已超出 43 分钟的宕机时间预算),就禁止启动新功能;或者根据前期事故后分析(post-mortem analysis)所给出的更正操作,专门建立一个 Sprint。

然而 Thorne 强调指出,一些适用于 Google 的做法并非适用于每个组织

SRE 需要的 SLO,应当能在可接受的故障、必要的成本、交付速度之间取得平衡。

准确的 SLO 和政策必须适用于特定的公司 (而不是复制和粘贴 Google 的做法),并且应该是聚焦于不断改善客户体验,而不是设定一些可能适得其反的崇高目标或严厉惩罚。

Thorne 在演讲中给出了一个例子,一个公司在努力降低推荐系统的处理时间。平均来看,用户在 6 小时后回访网站才会看到这些推荐。一个适当的 SLO 应当在 6 小时内处理完所有推荐,这意味着可以省去三位解决响应时间慢“问题”的非全职工程师。

Thorne 提出 SRE 的第三个关键问题,即 SRE 团队应能够平衡日常(通常是无计划的)运维和规划工作间的工作量,以降低人员的操劳(也称为“灭火”)。在 Google,这意味着至少有 50%的 SRE 是用于项目工作,包括尽早研判新系统的架构,发现其中的弹性反面模式(resiliency anti-pattern),并避免此后更多的操劳;改进监控,自动执行重复的任务,或协调实施故障后的纠正措施。

Thorne 进一步明确给出了一些 SRE 的反面模式。例如,在并未率先让 SRE 原则和机制(SLO、错误预算政策和平衡工作负载)落地的情况下,仅是将运营团队重新命名为 SRE 团队,或仅是雇佣一些 SRE 工程师

Thorne 认为 SRE 的成功实施之路具有 5 个关键步骤:

  • 根据场景定义聚焦于客户的 SLO;

  • 定义合理的错误预算策略;

  • 雇佣(内部或外部)SRE 人员,并在领导层支持的情况下对他们授权;

  • 支持 SRE 优化调整 SLO,并强制执行错误预算策略;

  • 将任务关键系统的可靠性责任指定给 SRE 团队,其它系统的责任指定给相应的开发团队。

Thorne 的演讲PPT 下载链接:https://github.com/devopsenterprise/2018-London/blob/master/Tuesday/Breakout%20Sessions/Throne%2C%20Stephen%2C%20Getting%20Started%20with%20Site%20Reliability%20Engineering.pdf

转载自:https://juejin.cn/post/6844903657876488200
评论
请登录