Why You Need to Set SLAs for Your Data Pipelines

For today’s data engineering teams, the demand for real-time, accurate data has never been higher, yet data downtime is an all-too-common reality. 那么,推荐一个正规滚球网站如何打破这个恶性循环,获得可靠的数据呢? 

就像推荐一个正规滚球网站20年前的软件工程师一样, 21世纪20年代初的数据团队面临着一个重大挑战: reliability

与以往相比,企业正在吸收越来越多的运营和第三方数据. 来自整个企业的员工都在与其生命周期的所有阶段的数据进行交互, including those on non-data teams. 与此同时,数据源、管道和工作流正变得越来越复杂.

虽然软件工程师已经用专门的领域(如DevOps和站点可靠性工程)解决了应用程序停机问题, frameworks (like Service Level Agreements, Indicators, and Objectives), and plenty of acronyms (SRE, SLAs, SLIs, and SLOs, respectively), data teams have not treated data downtime with the diligence it deserves. 

是时候让数据团队做同样的事情了:优先级、标准化和度量 data reliability. I envision that over the next decade, 数据质量或可靠性工程将发展成为自己的专业, responsible for this critical business function. 

在此之前,推荐一个正规滚球网站将探讨什么是数据可靠性sla、它们为什么重要以及如何创建它们.

What is an SLA?

Slack’s SLA guarantees 99.999 service uptime. If breached, they apply a service credit. Image courtesy of Slack.

Simply put, 服务水平协议(sla)是许多公司用来定义和度量给定供应商的服务水平的方法, product, 或者内部团队会交付——如果他们未能交付,也会提供潜在的补救措施. 

For example, Slack’s customer-facing SLA promises 99.99% uptime every fiscal quarter, and no more than 10 hours of scheduled downtime, for customers on Plus plans and above. 如果金额不足,受影响的客户将获得其账户上的服务信用,以备将来使用. 

客户使用sla来确保他们从供应商那里得到了他们所支付的:一个健壮的, reliable product. And for many software teams, SLAs are developed for internal projects or users, not just end customers. 

Why do SLAs matter?  

推荐一个正规滚球网站以内部软件工程sla为例. 为什么要经过编纂sla的过程呢, 如果没有客户向你施压,要求你遵守合同中的某些门槛? 为什么不指望每个人都尽最大努力,争取尽可能接近100%的正常运行时间呢? Isn’t this just introducing unnecessary red tape?

Not at all. The very practice of defining, agreeing upon, 度量构成可靠软件的关键属性不仅非常有用,而且为内部涉众设定了明确的期望. 

SLAs can help engineering, product, 并且业务团队在他们的应用程序中真正最重要的事情上保持一致,并对传入的请求进行优先级排序. With SLAs, 不同的软件工程团队及其涉众可以确信他们说的是同一种语言, caring about the same metrics, 分享对明确记录的期望的承诺. 

设定非100%正常运行时间的预期也为增长留下了空间. 如果可以容忍零停机风险,那么创新的空间也就为零. Plus, it’s just not feasible. 即使拥有世界上所有的最佳实践,系统偶尔也会出现故障. But with good SLAs, when something does go wrong, 工程师将知道何时以及如何进行干预. 

Why data reliability SLAs matter

Image courtesy of imgflip.com. 

Similarly, 数据团队和他们的数据消费者定义数据已经成为一个关键的需求, measure, 并在整个生命周期中跟踪数据的可靠性. 

设置数据可靠性sla有助于建立信任并加强数据之间的关系, your data team, and downstream consumers, 无论是你的客户还是公司的跨职能团队. Without these clearly defined metrics, 对于您的数据平台的可靠性和可信赖性,消费者可能会做出有缺陷的假设或依赖于坊间证据. 换句话说,数据sla帮助您的组织在数据方面更加“数据驱动”. 

SLAs also formalize and streamline communication, 确保您的团队和涉众使用相同的语言并引用相同的指标. 因为定义sla的过程可以帮助数据团队更好地理解业务的优先级, 当事件发生时,他们将能够迅速确定优先次序,并加快反应时间.

How to create data reliability SLAs

创建数据可靠性sla并遵守它们是协作和专一性方面的练习. 

Let’s get some vocabulary straight first. Per Google’s  service level agreements (SLAs) require clearly defined service level indicators (SLIs),服务质量的量化措施,和商定的服务水平 objectives (SLOs),每个指标应满足的目标值或值范围. For example, 许多工程团队将可用性作为站点可靠性的指标来衡量, 并设定一个目标,以保持至少99%的可用性. 

Usually, for data teams, 创建可靠性sla的过程遵循三个关键步骤:定义, measuring, and tracking. 

Step 1: Defining data reliability with SLAs

第一步是就可靠数据对您的组织意味着什么达成一致并明确定义. 

I recommend beginning by setting a baseline. 首先对你的数据做一个清单,它是如何被使用的,被谁使用的. 评估数据的历史性能,以获得可靠性的基线度量.

您还需要从数据消费者那里获得关于“可靠性”的反馈. Even with a good understanding of data lineage, 数据工程师通常可以从他们的同事的日常工作流程和用例中移除. 当与内部团队达成可靠性协议时, 理解消费者实际上是如何与数据交互的至关重要, what data matters most, 哪些潜在的问题需要最严格的要求, immediate attention.

此外,你要确保相关的利益相关者——所有人 data leaders 或者在可靠性方面有既得利益的商业消费者也加入了进来, and bought in, 关于可靠性的定义. 

一旦理解了(1)要处理的数据, (2) how it’s used, and (3) who uses it, you’ll be able to set clear, actionable SLAs. 

(如果您仍然不清楚这些sla是什么样子的,我强烈建议您阅读这篇文章 Locally Optimistic series on setting data warehouse SLAs. Brooklyn Data Co.该公司的Scott Breitenother提供了一个非常可靠的入门模板, 以及就与持份人沟通服务标准提供实用建议).

Step 2: Measuring data reliability with SLIs

一旦你有了一个彻底的了解和基线, 您可以开始专注于将成为您的服务水平可靠性指示器的关键指标. 

As a rule of thumb, 数据sli应该表示您在步骤1中定义的数据的相互同意的状态, 提供如何使用和不使用数据的边界, 并具体描述数据停机的情况. 这可能包括丢失、重复或过时的数据等情况. 

您的sli将取决于您的特定用例,但这里有一些常用的度量标准 quantify data health:

  • 特定数据资产的数据事件数(N). Although this may be beyond your control, 假设您可能依赖于外部数据源, 它仍然是数据停机的重要驱动因素,通常值得衡量. 
  • Time-to-detection (TTD): 当出现问题时,这个指标将量化您的团队收到警报的速度. 如果您没有适当的检测和警报方法, this could be measured in weeks or even months. 由错误数据造成的“无声错误”可能导致昂贵的决策, 对你的公司和你的客户都有影响.
  • Time-to-resolution (TTR): 当您的团队收到问题的警报时,这将度量您能够多快地解决该问题.

Step 3: Tracking data reliability with SLOs

在设置可靠性仪表板时,数据团队应该更加明确. Image courtesy of Monte Carlo. 

在您确定数据可靠性的关键指标(SLIs)之后, you can set objectives—that is, acceptable ranges of data downtime. 

这些SLOs应该是现实的,并基于您的现实环境. For example, if you decide to include TTD as a metric, but you don’t use any automated monitoring tools, 你的SLO应该低于拥有全面数据可观察性工具的成熟组织.

在这些范围上达成一致,可以使您创建一个统一的框架,根据严重程度对事件进行评级, 当问题出现时,沟通和反应都很简单.

一旦您设置了这些目标并将其纳入您的sla, 您可以创建一个仪表板来跟踪和报告进度. 一些数据团队创建他们自己的特别指示板, 而其他人则使用专用的数据可观察性工具. 

Data reliability in practice

为数据设置sla、SLOs和sli只是这个难题的第一部分. When data incidents occur, 推荐一个正规滚球网站还需要一种方法来分类和管理事件,以免它们成为下游消费者的巨大头痛.

为此,推荐一个正规滚球网站可以再次向DevOps的朋友们寻求灵感. 大多数工程组织分配整个站点可靠性团队进行识别, resolving, and preventing downtime. In today’s modern data organization, 当管道破裂或仪表盘不稳时,数据工程师往往首当其冲.

使事件解决过程更容易、更无缝, 推荐一个正规滚球网站可以借鉴SRE手册,在数据问题出现时进行有效沟通和分类. 

例如,假设你的一位主管的批评报告中提到了陈旧的数据. From the outset, you’re not sure how this pipeline broke, 但你需要告诉他们,它已经坏了,你的团队正在处理这件事. And as you’re resolving this issue, 您不仅需要不断更新其他数据停机侦探,还需要更新事件解决过程中的关键涉众. 

以下是一些从一些最好的数据工程团队收集的有用的表情符号及其对应的含义,它们便于沟通: 

Image courtesy of Monte Carlo.

还有一些图标表示事件的严重程度: 

Image courtesy of Monte Carlo.

而获取可靠数据的方法最终取决于您的业务需求, 有一个良好的沟通策略将使您的sla更容易执行. (Blinkist分享了他们处理数据停机的路线图, here).

Getting started

推荐一个正规滚球网站很高兴看到这个专业领域 data reliability engineering develops. SLAs, SLIs, 和SLOs是一个很好的起点:它们为度量数据停机时间提供了一个有用的框架, and can help build a trusting, collaborative, 贯穿整个组织的数据驱动文化.

就像SREs一样,通过自动支持系统确保应用程序正常运行, data teams deserve their own specialized tooling. 最好的数据平台不只是测量数据停机时间, 但最终将有助于预防它首先通过 end-to-end data observability-为您的团队提供最高标准的数据可靠性.

有兴趣了解更多关于设置sla和实现可靠数据管道的信息? Reach out to Barr and the rest of the Monte Carlo team!