DevOps 席卷软件工程世界之前,一旦应用程序启动并运行,开发人员就会一头雾水。
工程师不是第一个知道何时发生中断,而是只会发现客户或利益相关者何时抱怨“网站滞后”或 503 页面过多。
不幸的是,这导致了同样的错误反复出现,因为开发人员缺乏对应用程序性能的洞察力,并且不知道在出现故障时从哪里开始调试他们的代码。
解决方案?现在广泛采用的 DevOps 概念是一种新方法,它要求开发人员 (Dev) 和运营 (Ops) 团队在软件部署和开发过程中进行协作和持续迭代。
到 2010 年代中期,Netflix、Uber 和 Airbnb 等以数据为先的大型公司采用了持续集成/持续部署 (CI/CD) 原则,甚至构建开源工具来促进数据团队的成长,DataOps诞生了.
事实上,如果您是一名数据工程师,您可能已经将 DataOps 流程和技术应用于您的堆栈,无论您是否意识到这一点。
在过去的几年里,DataOps 作为一个框架在各种规模的数据团队中越来越受欢迎,它可以快速部署数据管道,同时仍然提供随时可用的可靠和值得信赖的数据。
DataOps 可以使任何组织受益,这就是为什么我们整理了一份指南来帮助澄清您对这个主题可能存在的任何误解。
在本指南中,我们将解释如何:
什么是数据运营?
DataOps 是一门融合数据工程和数据科学团队以支持组织数据需求的学科,其方式类似于 DevOps 帮助扩展软件工程的方式。
与 DevOps 如何将 CI/CD 应用于软件开发和运营类似,DataOps 需要一种类似 CI/CD 的自动化优先方法来构建和扩展数据产品。同时,DataOps 使数据工程团队更容易为分析师和其他下游利益相关者提供可靠的数据来推动决策制定。
DataOps 与 DevOps
虽然 DataOps 与 DevOps 有很多相似之处,但两者之间存在重要区别。
关键区别在于 DevOps 是一种将开发和运营团队聚集在一起以提高软件开发和交付效率的方法,而 DataOps 则侧重于打破数据生产者和数据消费者之间的孤岛,使数据更可靠、更有价值。
多年来,DevOps 团队已成为大多数工程组织不可或缺的一部分,消除了软件开发人员和 IT 之间的孤岛,因为它们促进了软件无缝、可靠地发布到生产环境。DevOps 在组织中越来越受欢迎,因为它们开始成长,并且为它们提供支持的技术堆栈开始变得越来越复杂。
为了持续了解系统的整体健康状况,DevOps 工程师利用可观察性来监视、跟踪和分类事件,以防止应用程序停机。
软件可观察性包括三个支柱:
- 日志:在给定时间戳发生的事件的记录。日志还为发生的特定事件提供上下文。
- 指标:一段时间内测量的数据的数字表示。
- Traces:表示在分布式环境中相互关联的事件。
可观察性的三大支柱共同赋予 DevOps 团队预测未来行为并信任其应用程序的能力。
同样,DataOps 的纪律可帮助团队消除孤岛并更有效地工作,以在整个组织内交付高质量的数据产品。
DataOps 专业人员还利用可观察性来减少停机时间,因为公司开始从各种来源摄取大量数据。
数据可观察性是组织充分了解其系统中数据健康状况的能力。它通过监控和提醒团队注意可能在数天、数周甚至数月内未被发现的事件来减少数据停机(数据不完整、错误、丢失或其他不准确的时间段)的频率和影响。
与软件可观察性一样,数据可观察性包括其自身的一组支柱:
- 新鲜度:数据是最新的吗?最后一次更新是什么时候?
- 分布:数据是否在可接受的范围内?它是预期的格式吗?
- Volume:数据都到齐了吗?是否有任何数据从表中复制或删除?
- 模式:什么是模式,它有变化吗?是否有意更改架构?
- 沿袭:哪些上游和下游依赖关系连接到给定的数据资产?谁依赖该数据进行决策,该数据位于哪些表中?
通过深入了解这些支柱中的数据状态,DataOps 团队可以了解并主动解决数据在其生命周期每个阶段的质量和可靠性问题。
DataOps 框架
为了促进从数据中更快、更可靠地洞察,DataOps 团队应用了一个连续的反馈循环,也称为 DataOps 生命周期。DataOps 生命周期从 DevOps 生命周期中汲取灵感,但考虑到数据不断变化的性质,它结合了不同的技术和流程。DataOps 生命周期允许数据团队和业务利益相关者协同工作,为组织提供更可靠的数据和分析。
以下是 DataOps 生命周期在实践中的样子:
- 规划:与产品、工程和业务团队合作,为数据的质量和可用性设置 KPI、SLA 和 SLI(下一节将详细介绍)。
- 开发:构建将为您的数据应用程序提供支持的数据产品和机器学习模型。
- 集成:将代码和/或数据产品集成到您现有的技术和/或数据堆栈中。(例如,您可以将 DBT 模型与 Airflow 集成,以便 DBT 模块可以自动运行。)
- 测试:测试您的数据以确保它符合业务逻辑并满足基本操作阈值(例如数据的唯一性或无空值)。
- 发布:将您的数据发布到测试环境中。
- 部署:将您的数据合并到生产中。
- 操作:将数据运行到应用程序中,例如 Looker 或 Tableau 仪表板和数据加载器,为机器学习模型提供数据。
- 监控:持续监控数据中的任何异常并发出警报。
这个循环会一遍又一遍地重复。然而,通过将 DevOps 的类似原则应用于数据管道,数据团队可以更好地协作来识别、解决甚至预防数据质量问题的发生。
DataOps 的五个最佳实践
与我们在软件开发领域的朋友类似,数据团队也开始效仿,将数据视为一种产品。
数据是组织决策过程的重要组成部分,将产品管理思维应用于构建、监控和衡量数据产品的方式有助于确保这些决策基于准确、可靠的洞察力。
在过去几年与数百个数据团队交谈后,我们总结了五个关键的 DataOps 最佳实践,可以帮助您更好地适应这种“数据如产品”的方法。
1. 尽早让利益相关者对 KPI 保持一致,并定期重新审视它们。
由于您将数据视为产品,因此内部利益相关者就是您的客户。因此,尽早与关键数据利益相关者保持一致并就谁使用数据、他们如何使用数据以及出于什么目的达成一致至关重要。为关键数据集制定服务水平协议 (SLA) 也很重要。与利益相关者就良好的数据质量达成一致有助于您避免在 KPI 或无关紧要的测量上出现循环。
在你和你的利益相关者达成一致后,你应该定期与他们核实以确保优先级仍然相同。Red Ventures 的高级数据科学家 Brandon Beidel 每周都会与公司的每个业务团队会面,讨论他的团队在 SLA 方面的进展。
“我总是会用简单的商业术语来组织对话,并专注于'谁、什么、何时、何地以及为什么,”布兰登告诉我们。“我会特别提出一些问题来探究数据新鲜度的限制,我发现这对业务利益相关者来说特别重要。”
2. 自动化尽可能多的任务
DataOps 的主要关注点之一是数据工程自动化。数据团队可以自动执行通常需要数小时才能完成的死记硬背任务,例如单元测试、硬编码摄取管道和工作流程编排。
通过使用自动化解决方案,您的团队可以降低人为错误进入数据管道的可能性并提高可靠性,同时帮助组织做出更好更快的数据驱动决策。
3. 拥抱“发布和迭代”文化
对于大多数数据驱动型组织而言,速度至关重要。而且,很有可能,您的数据产品不需要 100% 完美就可以增加价值。我的建议?构建一个基本的 MVP,对其进行测试,评估你的学习,并根据需要进行修改。
我的第一手经验表明,通过使用实时数据在生产中进行测试和迭代,可以更快地构建成功的数据产品。团队可以与相关的利益相关者协作来监控、测试和分析模式,以解决任何问题并改善结果。如果您定期执行此操作,就会减少错误并降低错误进入数据管道的可能性。
4.投资自助服务工具
DataOps 的一个主要好处是消除了数据在业务利益相关者和数据工程师之间的孤岛。为了做到这一点,企业用户需要能够自助满足自己的数据需求。
业务利益相关者可以在需要时访问他们需要的数据,而不是数据团队满足业务用户的临时请求(这最终会减慢决策制定速度)。Intuit 前工程副总裁 Mammad Zadeh 认为,自助服务工具在实现整个组织的 DataOps 方面发挥着至关重要的作用。
“中央数据团队应确保数据生产者和消费者都可以使用正确的自助服务基础设施和工具,以便他们可以轻松完成工作,”Mammad 告诉我们。“为他们配备合适的工具,让他们直接互动,然后让开。”
5.优先考虑数据质量,然后扩展
在扩展的同时保持高质量的数据并不是一件容易的事。因此,从最重要的数据资产开始——利益相关者做出重要决策所依赖的信息。
如果给定资产中的不准确数据可能意味着时间、资源和收入的损失,请注意该数据以及通过测试、监控和警报等数据质量功能推动这些决策的管道。然后,继续构建您的能力以涵盖更多的数据生命周期。(回到最佳实践#2,请记住,大规模数据监控通常会涉及自动化。)
组织可以从 DataOps 中获益的四种方式
虽然 DataOps 的存在是为了消除数据孤岛并帮助数据团队协作,但团队在实施 DataOps 时可以实现其他四个主要优势。
1. 更好的数据质量
公司可以在其管道中应用 DataOps 以提高数据质量。这包括自动化例行任务,例如测试和引入端到端的可观察性,并在数据堆栈的每一层进行监控和警报,从摄取到存储再到转换到 BI 工具。
这种自动化和可观察性的结合减少了人为错误的机会,并使数据团队能够主动快速响应数据停机事件——通常在利益相关者意识到任何问题之前。
有了这些DataOps 实践,业务利益相关者可以获得更好的数据质量,遇到更少的数据问题,并在整个组织内建立对数据驱动决策的信任。
2. 更快乐、更高效的数据团队
平均而言,数据工程师和科学家花费至少 30% 的时间来解决数据质量问题,而 DataOps 的一个关键部分是创建一个自动化和可重复的流程,这反过来又节省了工程时间。
自动执行繁琐的工程任务,例如持续的代码质量检查和异常检测,可以改进工程流程,同时减少组织内部的技术债务。
DataOps 让团队成员更快乐,他们可以将宝贵的时间集中在改进数据产品、构建新功能和优化数据管道上,以加快实现组织数据价值的时间。
3. 更快地获得分析见解
DataOps 可自动执行通常需要无数小时才能完成的工程任务,例如测试和异常检测。因此,DataOps 为数据团队带来了速度,促进了数据工程和数据科学团队之间更快的协作。
缩短数据产品的开发周期可以降低成本(在工程时间方面),并允许数据驱动的组织更快地实现其目标。这是可能的,因为多个团队可以在同一个项目上并肩工作以同时交付结果。
根据我的经验,DataOps 在不同团队之间促进的协作可以带来更快的洞察力、更准确的分析、改进的决策制定和更高的盈利能力。如果 DataOps 得到充分实施,团队可以实时访问数据并调整他们的决策制定,而不是等待数据可用或请求临时支持。
4. 降低运营和法律风险
随着组织努力通过民主化访问来增加数据的价值,道德、技术和法律方面的挑战也将不可避免地增加。通用数据保护条例 (GDPR)和加州消费者隐私法案 (CCPA) 等政府法规已经改变了公司处理数据的方式,并在公司努力将数据直接交到更多团队手中时引入了复杂性。
DataOps——特别是数据可观察性——可以通过提供更多的可见性和透明度来帮助解决这些问题,包括用户对数据的操作、数据输入到哪些表以及谁有权访问上游或下游的数据。
在您的公司实施 DataOps
关于数据操作的好消息?采用现代数据堆栈和其他最佳实践的公司可能已经将 DataOps 原则应用于他们的管道。
例如,越来越多的公司正在招聘 DataOps 工程师来推动采用数据进行决策——但这些职位描述包括贵公司的数据工程师可能已经处理的职责。DataOps 工程师通常负责:开发和维护可部署、测试和记录的自动化设计脚本、流程和过程的库。与其他部门协作,将源系统与数据湖和数据仓库集成。创建和实施用于测试数据管道的自动化。
在影响下游利益相关者之前主动识别和修复数据质量问题。
提高整个组织的数据意识,无论是通过投资自助服务工具还是为业务利益相关者运行培训计划。
熟悉数据转换、测试和数据可观察性平台,以提高数据可靠性。
即使其他团队成员目前正在监督这些职能,拥有一个专门负责设计 DataOps 框架如何实现的专门角色将增加问责制并简化采用这些最佳实践的过程。
而且无论您的团队成员拥有什么职位,就像没有应用程序可观察性就无法拥有 DevOps 一样,没有数据可观察性就无法拥有 DataOps。
数据可观察性工具使用自动监控、警报和分类来识别和评估数据质量和可发现性问题。这会带来更健康的管道、更高效的团队和更快乐的客户。