不幸的是,这会导致了同样的错误反复发生,因为开发人员缺乏对应用程序性能的洞察力,不知道在发生故障时从哪里开始调试他们的代码。
所以现在广泛采用DevOps概念,要求在软件部署和开发过程中,开发人员(Dev)和运营(Ops)团队之间进行协作和持续迭代来解决上述问题。
到2010年中期,大型的数据优先公司,如Netflix、Uber和Airbnb已经采用了持续集成/持续部署(CI/CD)原则,甚至建立了开源工具来促进其数据团队的发展,DataOps也就诞生了。
事实上,如果你是一个数据工程师,你可能已经在你的堆栈中应用了DataOps流程和技术,无论你是否意识到这一点。
在过去的几年里,DataOps在各种规模的数据团队中越来越受欢迎,它是一个能够快速部署数据管道的框架,同时还能提供可靠和值得信赖的数据,并且随时可用。
什么是数据运维?
DataOps 是一门融合数据工程和数据科学团队以支持组织的数据需求的学科,其方式类似于 DevOps 帮助扩展软件工程的方式。
与 DevOps 如何将 CI/CD 应用于软件开发和运营类似,DataOps 需要一种类似于 CI/CD、自动化优先的方法来构建和扩展数据产品。同时,DataOps 使数据工程团队更容易为分析师和其他下游利益相关者提供可靠的数据来推动决策。
DataOps 与 DevOps
虽然 DataOps 与 DevOps 有许多相似之处,但两者之间存在重要区别。
关键区别在于 DevOps 是一种将开发和运营团队聚集在一起以提高软件开发和交付效率的方法,而 DataOps 专注于打破数据生产者和数据消费者之间的孤岛,使数据更加可靠和有价值。
多年来,DevOps 团队已成为大多数工程组织不可或缺的一部分,消除了软件开发人员和 IT 之间的孤岛,因为他们促进了软件无缝且可靠地发布到生产中。随着 DevOps 的发展以及为它们提供动力的技术堆栈的复杂性开始增加,DevOps 在组织中越来越受欢迎。
为了保持系统整体健康状况的持续变化,DevOps 工程师利用可观察性来监控、跟踪和分类事件,以防止应用程序停机。
软件可观察性包括三个支柱:
- 日志:在给定时间戳发生的事件的记录。日志还为发生的特定事件提供上下文。
- 指标:在一段时间内测量的数据的数字表示。
- Traces:表示分布式环境中相互关联的事件。
总之,可观察性的三个支柱使 DevOps 团队能够预测未来的行为并信任他们的应用程序。
同样,DataOps 的纪律可帮助团队消除孤岛并更有效地工作以在整个组织内交付高质量的数据产品。
随着公司开始从各种来源摄取大量数据,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。
数据可观察性工具使用自动监控、警报和分类来识别和评估数据质量和可发现性问题。这会带来更健康的管道、更高效的团队和更快乐的客户。
原文https://dzone.com/articles/is-dataops-the-future-of-the-modern-data-stack