【可靠性工程】GCP 定义您的可靠性目标

简介: 【可靠性工程】GCP 定义您的可靠性目标

Google Cloud 架构框架中的这份文档提供了最佳做法,用于定义适当的方法来衡量您的服务的客户体验,以便您可以运行可靠的服务。您将了解如何迭代您定义的服务级别目标 (SLO),并使用错误预算来了解如果发布其他更新,可靠性可能会受到影响。


选择合适的 SLI

选择适当的服务水平指标 (SLI) 以充分了解您的服务执行情况非常重要。例如,如果您的应用程序具有多租户架构,这是由多个独立客户使用的典型 SaaS 应用程序,请在每个租户级别捕获 SLI。如果您的 SLI 仅在全局聚合级别进行测量,您可能会错过应用程序中影响单个重要客户或少数客户的关键问题。相反,将您的应用程序设计为在每个用户请求中包含一个租户标识符,然后将该标识符传播到堆栈的每一层。此标识符允许您的监控系统在请求路径上的每一层或微服务的每个租户级别汇总统计信息。

您运行的服务类型还决定了要监控的 SLI,如以下示例所示。

服务系统

以下 SLI 在提供数据的系统中是典型的:

  • 可用性告诉您服务可用的时间比例。它通常根据格式良好的请求成功的比例来定义,例如 99%。
  • 延迟告诉您可以以多快的速度满足一定百分比的请求。它通常以第 50 位以外的百分位来定义,例如“300 毫秒时的第 99 个百分位”。
  • 质量告诉你某个反应有多好。质量的定义通常是特定于服务的,并表示对请求的响应内容与理想响应内容的差异程度。响应质量可以是二元的(好或坏)或以 0% 到 100% 的范围表示。

数据处理系统

以下 SLI 在处理数据的系统中是典型的:

  • 覆盖率告诉您已处理的数据比例,例如 99.9%。
  • 正确性告诉您被认为正确的输出数据的比例,例如 99.99%。
  • 新鲜度告诉您源数据或聚合输出数据的新鲜程度。通常,更新越近越好,例如 20 分钟。
  • 吞吐量告诉您正在处理多少数据,例如 500 MiB/秒甚至每秒 1000 个请求 (RPS)。

存储系统

以下 SLI 在存储数据的系统中是典型的:

  • 持久性告诉您写入系统的数据在未来被检索到的可能性有多大,例如 99.9999%。任何永久性数据丢失事件都会降低持久性指标。
  • 吞吐量和延迟也是存储系统的常见 SLI。

根据用户体验选择 SLI 并设置 SLO

本架构框架部分的核心原则之一是可靠性由用户定义。尽可能靠近用户测量可靠性指标,例如以下选项:

  • 如果可能,请检测移动或 Web 客户端。
  • 例如,使用 Firebase 性能监控来深入了解您的 iOS、Android 和 Web 应用程序的性能特征。
  • 如果这不可能,请检测负载平衡器。
  • 例如,将 Cloud Monitoring 用于外部 HTTP(S) 负载平衡器日志记录和监控。
  • 衡量服务器的可靠性应该是最后的选择。
  • 例如,使用 Stackdriver Monitoring 监控 Compute Engine 实例。

将您的 SLO 设置得足够高,以使几乎所有用户都对您的服务感到满意,而不是更高。由于网络连接或其他短暂的客户端问题,您的客户可能不会注意到应用程序中的短暂可靠性问题,从而允许您降低 SLO。

对于正常运行时间和其他重要指标,目标是低于 100% 但接近它。服务所有者应客观地评估使大多数用户满意的最低服务性能和可用性水平,而不仅仅是根据外部合同水平设定目标。

您更改的速率会影响系统的可靠性。但是,频繁进行小幅更改的能力可以帮助您更快、更优质地交付功能。根据客户体验调整的可实现的可靠性目标有助于定义客户可以容忍的最大变化速度和范围(功能速度)。

如果您无法衡量客户体验并围绕它定义目标,您可以运行竞争基准分析。如果没有可比的竞争,衡量客户体验,即使你还不能定义目标。例如,衡量系统可用性或对客户进行有意义且成功的交易的比率。您可以将此数据与业务指标或 KPI 相关联,例如零售订单量或客户支持电话和工单的数量及其严重性。在一段时间内,您可以使用此类关联练习来达到合理的客户满意度阈值。此阈值是您的 SLO。

有关如何选择正确的 SLI 和定义 SLO 的更多信息,请参阅定义 SLO。

迭代改进 SLO

SLO 不应一成不变。每季度或至少每年重新访问 SLO,并确认它们继续准确反映用户的幸福感并与服务中断密切相关。确保它们涵盖当前的业务需求和新的关键用户旅程。在这些定期审查之后,根据需要修改和增加您的 SLO。

使用严格的内部 SLO

拥有比外部 SLA 更严格的内部 SLO 是一种很好的做法。由于违反 SLA 往往需要签发财务信用或客户退款,因此您希望在问题产生财务影响之前解决问题。

我们建议您将这些更严格的内部 SLO 与无可指责的事后分析流程和事件审查一起使用。有关更多信息,请参阅架构中心可靠性类别中的构建协作事件管理流程。

使用错误预算来管理开发速度

错误预算会告诉您您的系统在某个时间窗口内是否比所需的可靠性更高或更低。错误预算按 100% 计算——一段时间内的 SLO,例如 30 天。

当您的错误预算中有剩余容量时,您可以继续快速启动改进或新功能。当错误预算接近于零时,冻结或减慢服务更改并投入工程资源以提高可靠性功能。

Google Cloud 的运营套件包括 SLO 监控,以最大程度地减少设置 SLO 和错误预算的工作量。操作套件包括一个图形用户界面,可帮助您手动配置 SLO,一个用于编程设置 SLO 的 API,以及用于跟踪错误预算消耗率的内置仪表板。有关详细信息,请参阅如何创建 SLO。

建议

要将架构框架中的指南应用到您自己的环境中,请遵循以下建议:

  • 定义和衡量以客户为中心的 SLI,例如服务的可用性或延迟。
  • 定义比外部 SLA 更严格的以客户为中心的错误预算。包括违规后果,例如生产冻结。
  • 设置延迟 SLI 以捕获异常值,例如第 90 或第 99 个百分位数,以检测最慢的响应。
  • 至少每年检查一次 SLO,并确认它们与用户满意度和服务中断密切相关。
相关文章
|
关系型数据库 MySQL 分布式数据库
PolarDB 与传统数据库的性能对比分析
【8月更文第27天】随着云计算技术的发展,越来越多的企业开始将数据管理和存储迁移到云端。阿里云的 PolarDB 作为一款兼容 MySQL 和 PostgreSQL 的关系型数据库服务,提供了高性能、高可用和弹性伸缩的能力。本文将从不同角度对比 PolarDB 与本地部署的传统数据库(如 MySQL、PostgreSQL)在性能上的差异。
958 1
|
Oracle 安全 关系型数据库
Oracle数据恢复—Oracle数据库误删除的数据恢复方法探讨
删除Oracle数据库数据一般有以下2种方式:delete、drop或truncate。下面针对这2种删除oracle数据库数据的方式探讨一下oracle数据库数据恢复方法(不考虑全库备份和利用归档日志)。
|
存储 机器学习/深度学习 分布式计算
MaxCompute产品使用问题之如何根据字段名或者字段注释查找到相关表
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
188 2
|
搜索推荐 数据挖掘 UED
分享一些利用商品详情数据挖掘潜在需求的成功案例
本文介绍了四个成功利用商品详情数据挖掘潜在需求的案例:亚马逊通过个性化推荐系统提升销售额;小米通过精准挖掘用户需求优化智能硬件生态链;星巴克推出定制化饮品服务满足用户多样化口味;美妆品牌利用数据改进产品配方和设计,制定针对性营销策略。这些案例展示了数据挖掘在提升用户体验和商业价值方面的巨大潜力。
|
机器学习/深度学习 并行计算 API
TensorRT安装
TensorRT安装
1757 0
|
机器学习/深度学习 自然语言处理 TensorFlow
【自然语言NLP】TensorFlow使用LSTM实现文本匹配任务
【自然语言NLP】TensorFlow使用LSTM实现文本匹配任务
535 0
【自然语言NLP】TensorFlow使用LSTM实现文本匹配任务
|
SQL 分布式计算 Oracle
数据库必知词汇:数据操纵语言DML
数据操纵语言(Data Manipulation Language, DML)是SQL语言的四大主要分类之一,用户通过它可以实现对数据库数据的基本操作。这种操作包括将数据插入数据库表、检索现有数据、从现有表中删除数据和更新现有数据。
1922 0
|
4天前
|
云安全 人工智能 自然语言处理
|
8天前
|
人工智能 Java API
Java 正式进入 Agentic AI 时代:Spring AI Alibaba 1.1 发布背后的技术演进
Spring AI Alibaba 1.1 正式发布,提供极简方式构建企业级AI智能体。基于ReactAgent核心,支持多智能体协作、上下文工程与生产级管控,助力开发者快速打造可靠、可扩展的智能应用。
800 17