如何对数据小组进行事故管理

随着数据系统越来越分散,公司吸收越来越多的数据, 出现错误(和事件)的机会只会增加. 几十年来,软件工程团队一直依赖于 多步骤的过程 识别、分类、解决和防止问题导致应用程序崩溃.

随着数据操作的成熟,是时候处理了 数据停机时间, 换句话说, 数据丢失的一段时间, 不准确的, 或其他错误, 以同样的勤奋, 特别是当涉及到构建更可靠和更有弹性的数据管道时.

然而,关于数据团队如何处理其数据的事件管理的文献并不多, 推荐一个正规滚球网站已经可以利用大量的资源 推荐一个正规滚球网站在软件开发方面的朋友. 经过一些调整, 这些技巧已经成为一些最好的数据工程团队的宝贵工具.

当涉及到为管道构建数据事件管理工作流时, 四个关键步骤包括: 事件检测响应根本原因分析(RCA) & 决议和一个 无辜的死后.

在这篇文章中, 推荐一个正规滚球网站将逐一介绍这些步骤,并共享数据团队在设置自己的事件管理策略时可以使用的相关资源.

事件检测

将自动数据质量监控集成到关键工作流中是事件管理流程成功的基础, 并且允许您的团队指定谁正在调查问题及其状态(i.e.,待定,调查,解决). 图片由蒙特卡罗提供.

不用说,首先,你应该, 测试你的数据 在进入生产之前. 仍然, 即使有最健壮的测试和检查, 在你说“坏数据管道”之前,坏数据就会从裂缝中掉出来,被推到你的电脑里.”

当数据停机时,第一步是事件检测. 事件可以通过检测 数据监控和警报, 哪些可以在数据管道上手动实现,哪些可以根据特定的阈值触发, 或者分层作为一部分 数据可观测性解决方案,并根据历史数据模式和自定义规则定期自动触发.

数据监控的一个关键组成部分是 异常检测,或识别数据支柱何时健康的能力(i.e.、体积、新鲜度、图式和分布)偏离常态. 当实现端到端(跨仓库)异常检测时,异常检测最有价值, 湖泊, ETL, 和BI工具),而不是只在你的数据生态系统的特定竖井中. 良好的异常检测也将调整算法 减少白噪声 和假阳性.

事件检测可以集成到数据工程和分析工作流中, 确保当问题通过适当的沟通渠道出现时,所有数据涉众和最终用户都被告知(松弛, 电子邮件, 短信, 信鸽…)

建议的资源: 

响应

作为一名事件指挥官, 能够专注于数据质量问题可以更容易地理解数据管道中的错误. 图片由蒙特卡罗提供.

良好的事件响应始于有效的沟通, 幸运的是, 其中很多内容都可以提前准备好,并在时机成熟时通过PagerDuty和松弛的适当工作流自动输出. 

数据团队应该花时间编写运行手册和剧本,通过标准的事件响应. 而运行手册则会告诉您如何使用不同的服务以及它们遇到的常见问题, 剧本提供了处理事件的逐步过程. 两者都将提供代码链接, 文档, 以及其他材料,可以帮助团队了解当关键管道破裂时该做什么. 

这是一本好的运行手册的重要组成部分? 在发生中断或中断时委派角色.

在传统的可靠性工程项目中, 一种随叫随到的流程,它根据服务委派特定的角色, 经常按小时分割, 一天, 或每周. 除了“事件响应器”,通常还有一个“事故指挥官负责分配任务和综合信息,作为响应者和其他利益相关者解决问题.

事故指挥员还负责与可能受到影响的上游和下游消费者进行沟通, i.e.在美国,这些公司使用的是由破裂的管道提供动力的数据产品.

当数据管道中断时,端到端沿条是一种很有价值的工具,可以用来理解上下游的依赖关系,以便在坏数据影响业务之前通知相关方. 图片由蒙特卡罗提供.

与业务上下文, 元数据是一个强大的工具 for underst和ing which teams are affected by a given 数据停机时间 incident; coupled with automated, 端到端血统, 在这些受影响的资产之间沟通上游和下游关系可以是一个轻松而快速的过程, 节省团队的手工绘图时间. 

一旦发生数据停机, 向上游和下游的消费者传达它的影响是很重要的, 处理数据的人和使用数据的人都有. 用正确的方法, 使用PagerDuty可以将其中的大部分内容整合到自动化的工作流中, 松弛, 和其他通信工具. 

建议的资源: 

根本原因分析 & 决议

了解哪些数据源导致了破损的数据管道,这对于根本原因分析至关重要. 图片由蒙特卡罗提供.

在理论上, root cause听起来就像运行一些SQL查询来分割数据一样简单, 但在实践中, 这个过程可能相当具有挑战性. 事件可以以不明显的方式在整个管道中显示,并影响多个, 有时数百, 的表.

例如,数据质量差的一个常见原因是新鲜度- i.e.当数据异常过时时. 这样的事件可能是由许多原因造成的, 包括一份排着队的工作, 一段时间了, 没有及时交付数据集的合作伙伴, 一个错误, 或者意外的日程安排改变,从你的DAG中删除了作业.

在推荐一个正规滚球网站的经验, 推荐一个正规滚球网站发现,大多数数据问题都可以归因于以下一个或多个事件: 

  • 输入作业、管道或系统的数据的意外更改
  • 逻辑的改变(ETL、SQL、Spark作业等).)转换数据
  • 一个操作的问题, 例如运行时错误, 权限的问题, 基础设施故障, 时间表的变化, 等.

快速找出手头的问题不仅需要适当的工具, 但是,一个全面的方法,考虑到这三个来源中的每一个是如何和为什么会破裂的.

与数据发布相关的信息可以自动收集并根据相关性进行分类. 图片由蒙特卡罗提供.

随着软件(和数据)系统变得越来越复杂, 查明停机或事件的确切原因(或根本原因)变得越来越困难. 亚马逊的5个为什么 方法提供了一个有用的框架,通过它可以将RCA置于上下文中: 

  • 识别问题
  • 询问问题发生的原因,并记录原因
  • 确定原因是否是根本原因
    • 这个原因是可以避免的吗? 
    • 原因会不会在它发生之前就被发现了? 
    • 如果原因是人为的错误,为什么会有这种可能呢? 
  • 把原因当作问题来重复这个过程. 当你确信你已经找到了问题的根本原因时,停下来. 

系统崩溃的原因很少是单一的. 数据工程师们正努力通过智能流程来减少人工劳动, 测试, 新鲜的数据检查, 其他的解决方案应该能够在问题出现之前识别出问题. 如果没有,这是一个强烈的信号,表明这些故障保护措施是不够的. 就像在软件工程领域一样, 自动化解决方案, 比如数据可观察性和端到端监控, 在对抗数据停机的战斗中,您的最佳选择是什么.

开始, 推荐一个正规滚球网站已经确定了数据团队在他们的数据管道上进行RCA时必须采取的四个步骤: 

  1. 看看你的血统: 去了解什么被破坏了, 您需要找到系统中显示问题的大多数上游节点——这是问题开始的地方,也是问题的答案所在. 如果你够幸运, 所有问题的根源都发生在有问题的仪表板中,您将很快确定问题所在.
  2. 看看代码: 查看创建表的逻辑, 甚至是影响事件的特定领域, 会帮助你提出关于问题的合理假设吗.
  3. 看看你的数据: 在步骤1和2之后, 现在应该更仔细地查看表中的数据,以找到错误的提示. 这里的一种很有前途的方法是,研究具有异常记录的表中的其他字段如何提供关于数据异常发生在何处的线索.
  4. 查看您的操作环境: 许多数据问题是运行ETL/ELT作业的操作环境的直接结果. 查看ETL引擎的日志和错误跟踪可以提供一些答案. 

(如果你还没有读过这本书,可以去看看弗朗西斯科·阿尔伯里尼的书 article 关于数据工程师如何进行根本原因分析——非常值得一读).

一旦你发现有些地方出了问题, 了解它的影响, 确定根本原因, 并与适当的涉众沟通下一步的工作, 是时候解决这个问题了. 这可以像暂停数据管道或模型并重新运行它们一样简单, 但因为数据可能会因为数百万个原因而被破坏, 这通常涉及大量的故障排除. 

建议的资源: 

无辜的死后 

一个无可指责的事后分析通常会对问题进行深入分析,并明确下一步措施,以防止类似事件影响未来的管道. 图片由Unsplash上的Kaleidico提供.

我的一个朋友, 他是一位在Box消防故障方面有十多年经验的网站可靠性工程师, 松弛, 和其他硅谷公司, 他告诉我,如果我写一篇关于事件管理的文章时不把这一点说得非常清楚: 

“对于每一次事故,都是系统的问题,而不是编写代码的人的问题. 好的系统是建立在错误和人类宽容的基础上的. 系统的工作就是允许你犯错误.” 

当涉及到数据可靠性和数据处理时,同样的理念是正确的. 管道应该是容错的,有合适的流程和框架来兼顾这两者 已知的未知和未知的未知 在数据管道中. 

不管发生了什么类型的事件或者是什么引起的, 数据工程团队应该进行彻底的调查, 在他们已经解决了问题并进行了根本原因分析之后,跨职能的事后分析. 

以下是一些最佳实践: 

  • 把每件事都当成学习的经历:要有建设性,尸检必须是无可指责的(如果不是, 责任意识). 尝试对事件进行“责备”是很自然的, 但在培养对同事的信任或培养合作文化方面,它很少有帮助. 通过围绕“学习和改进”这一目标重新构建这种体验,“主动采取必要的组织(创建更好的工作流程和流程)和技术步骤(为投资新工具提供理由)来消除数据停机更容易. 
  • 利用这个机会评估你对未来事件的准备情况: 更新运行簿并调整您的监视、警报和工作流管理工具. 随着数据生态系统的发展(添加新的, 第三方数据源, api, 甚至消费者), 当涉及到事故预防时,这一步将变得至关重要. 
  • 记录每一个事后分析,并与更广泛的数据团队分享: 在软件工程中, 记录出错的地方, 系统如何受到影响, 而根本原因往往是事后才想到的. 但是,文档与事故管理过程中的其他步骤一样重要,因为如果拥有部落知识的工程师离开团队或无法提供帮助,文档可以防止知识缺口的积累.
  • 重新审视sla: In 一篇文章,我解释了为什么数据团队需要设置 sla 对于他们的数据管道. 简而言之, 服务水平协议(sla)是许多公司用来定义和度量给定供应商的服务水平的方法, 产品, 或者内部团队将会交付——如果他们失败了,也会提供潜在的补救措施. 随着数据系统的成熟或变化, 不断地重新审视sla是很重要的, 服务水平指标(学校图书馆)和服务水平目标(SLOs). sla that made sense six months ago probably don’t any more; your team should be the first to know 和 communicate these changes with downstream consumers.

在一天结束时, 事后分析对于数据团队和软件工程师来说同样重要. 随着推荐一个正规滚球网站这个领域的不断发展(推荐一个正规滚球网站正处于数据时代, 毕竟), 理解数据停机的方式和原因是推荐一个正规滚球网站持续改进系统和流程弹性的唯一途径. 

提出资源 

++++

引用推荐一个正规滚球网站行为前辈的话: 希望不是策略

但是有了这些最佳实践, 你可以把事件管理从一种“四处打听,希望得到最好的结果”的练习,转变成一种良好的工作模式, 高度可靠的机器.

想了解更多关于Vimeo数据团队的信息, 指南针, 哪些, 而其他领先的公司则在利用数据可观察性大规模地防止管道破裂? 接触 巴尔摩西剩下的卡尔山o团队.