当前位置: > 其它学习 > devops >

DataOps 不仅仅是数据的 DevOps!

时间:2023-02-27 15:50来源:uml.org.cn 作者:DataKitchen

DevOps 通常被描述为无限循环,而 DataOps 被描述为交叉的价值和创新管道

关于 DataOps 的一个常见误解是它只是将 DevOps 应用于数据分析。虽然在语义上有点误导,但 “DataOps” 这个名字有一个积极的属性。它表明数据分析可以实现软件开发通过 DevOps 实现的目标。也就是说,当数据团队使用新工具和方法时,DataOps 可以在质量和周期时间上产生一个数量级的改进。DataOps 实现这些收益的具体方式反映了数据团队(相对于使用 DevOps 的软件开发团队)的独特人员、流程和工具特征。这是我们对 DataOps 和 DevOps 之间显着和细微差异的深入探讨。

01 DataOps 的知识遗产

DevOps 是一种使用自动化加速构建生命周期(以前称为发布工程)的软件开发方法。DevOps 通过利用按需 IT 资源(基础设施即代码)以及代码的自动化集成、测试和部署,专注于软件的持续集成和持续交付。软件开发和 IT 运营(“开发” 和 “运营”)的这种合并缩短了部署时间,缩短了上市时间,最大限度地减少了缺陷,并缩短了解决问题所需的时间。

使用 DevOps,领先的公司已经能够将他们的软件发布周期从几个月缩短到(字面上)几秒钟。这使他们能够在快节奏的新兴市场中成长并处于领先地位。谷歌、亚马逊和许多其他公司现在每天多次发布软件。通过提高代码发布的质量和周期时间,DevOps 应该为这些公司的成功赢得很多赞誉。

优化代码构建和交付只是数据分析更大难题的一部分。DataOps 旨在减少数据分析的端到端周期时间,从想法的起源到创造价值的图表、图形和模型的文字创建。除了工具之外,数据生命周期还依赖于人。要使 DataOps 有效,它必须管理协作和创新。为此,DataOps 将敏捷开发引入数据分析中,以便数据团队和用户更高效地协同工作。

在敏捷开发中,数据团队以称为 “冲刺” 的短增量发布新的或更新的分析。随着创新的快速发生,团队可以不断地重新评估其优先事项并更轻松地适应不断变化的需求。使用瀑布式项目管理方法,这种类型的响应是不可能的,这种方法将团队锁定在一个漫长的开发周期中,最后只有一个 “大爆炸” 交付。

 

研究表明,当敏捷开发取代传统的瀑布顺序方法时,敏捷软件开发项目完成得更快且缺陷更少。敏捷方法在需求快速变化的环境中特别有效 —— 这是数据分析专业人员所熟知的情况。在 DataOps 环境中,敏捷方法使组织能够快速响应客户需求并加快实现价值的时间。

敏捷开发和 DevOps 为数据分析增加了重要价值,但 DataOps 还有一个主要组成部分。敏捷和 DevOps 与分析开发和部署相关,而数据分析还管理和编排数据管道。数据不断地从管道的一侧进入,通过一系列步骤并以报告、模型和视图的形式退出。数据管道是数据分析的 “操作” 端。将数据管道概念化为必须管理质量、效率、约束和正常运行时间的生产线是有帮助的。为了完全接受这种制造思维,我们将此管道称为 “数据工厂”。”

在 DataOps 中,通过操作的数据流是一个重要的关注领域。DataOps 编排、监控和管理数据工厂。一种特别强大的精益制造工具是统计过程控制 (SPC)。SPC 测量和监控数据管道的数据和操作特征,确保统计数据保持在可接受的范围内。当 SPC 应用于数据分析时,它会显着提高效率、质量和透明度。SPC 到位后,流经操作系统的数据被验证为正常工作。如果发生异常情况,数据分析团队将通过自动警报第一个知道。

虽然 “DataOps” 这个名称暗示它从 DevOps 中借用最多,但这三种方法 —— 敏捷、DevOps 和统计过程控制 —— 构成了 DataOps 的知识遗产。敏捷管理分析开发,DevOps 优化代码验证,构建和交付新的分析,SPC 协调和监控数据工厂。图 1 说明了敏捷、DevOps 和统计流程控制如何流入 DataOps。

您可以在长达一个世纪的思想演变的背景下查看 DataOps,这些思想改进了人们管理复杂系统的方式。它始于像 Demming 和统计过程控制这样的先驱 —— 这些想法逐渐以敏捷、DevOps 和现在的 DataOps 的形式进入技术领域。

02 DevOps 与 DataOps — 人为因素

如上所述,DataOps 与管理人员和工具一样重要。DataOps 和 DevOps 之间的一个细微差别与利益相关者的需求和偏好有关。

DevOps 的创建是为了满足软件开发人员的需求。开发工程师喜欢编码并拥抱技术。学习新语言或部署新工具的要求是机会,而不是麻烦。他们对代码创建、集成和部署的所有细节都非常感兴趣。DevOps 包含复杂性。

DataOps 用户通常与此相反。他们是专注于构建和部署模型和可视化的数据科学家或分析师。科学家和分析师通常不像工程师那样精通技术。他们专注于领域专业知识。他们感兴趣的是让模型更具预测性或决定如何最好地视觉呈现数据。用于创建这些模型和可视化的技术只是达到目的的一种手段。数据专业人员最乐于使用一两个工具 —— 除此之外的任何工具都会增加不受欢迎的复杂性。在极端情况下,复杂性会超出他们的管理能力。DataOps 承认数据专业人员生活在一个多工具、异构的世界中,它试图让这个世界对他们来说更易于管理。

03 DevOps 与 DataOps — 流程差异

通过查看数据分析开发和生命周期流程,我们可以开始了解数据专业人员面临的独特复杂性。我们发现,与软件开发人员相比,数据分析专业人员面临着既相似又独特的挑战。

DevOps 生命周期通常使用无限符号形状的图表来说明 - 参见图 3。周期的结束(“计划”)反馈到开始(“创建”),并且过程无限迭代。

DataOps 生命周期共享这些迭代属性,但重要的区别是 DataOps 由两个活动的相交管道组成(图 4)。上面描述的数据工厂是一个管道。另一个管道控制数据工厂的更新方式 —— 创建新分析并将其部署到数据管道中。

数据工厂将原始数据源作为输入,并通过一系列精心安排的步骤产生分析见解,为组织创造 “价值”。我们称之为 “价值管道”。DataOps 自动化编排,并使用 SPC 监控流经价值管道的数据质量。

“创新管道” 是将新的分析思想引入价值管道的过程。创新管道在概念上类似于 DevOps 开发过程,但经过仔细研究,有几个因素使 DataOps 开发过程比 DevOps 更具挑战性。图 4 显示了价值和创新管道的简化视图。

04 DevOps 与 DataOps — 开发和部署流程

DataOps 建立在 DevOps 开发模型之上。如图 5 所示,DevOps 流程包括软件开发项目常见的一系列步骤:

开发 —— 创建 / 修改应用程序

构建 —— 组装应用程序组件

测试 —— 在测试环境中验证应用程序

部署 —— 将代码转换为生产

运行 —— 执行应用程序

DevOps 引入了两个基本概念:持续集成 (CI) 和持续部署 (CD)。CI 在开发环境中不断构建、集成和测试新代码。构建和测试是自动化的,因此它们可以快速重复地进行。这样可以快速识别和解决问题。图 5 说明了 CI 如何包含 DevOps 的构建和测试过程阶段。

CD 是一种部署或交付软件的自动化方法。一旦应用程序通过了所有资格测试,DevOps 就会将其部署到生产环境中。CI 和 CD 一起解决了阻碍敏捷开发的主要约束。在 DevOps 之前,敏捷创造了一系列快速的更新和创新,这些更新和创新会在手动集成和部署过程中停滞不前。借助自动化 CI 和 CD,DevOps 使公司能够每天多次更新他们的软件。

05 DataOps 中编排的二元性

需要注意的是,“编排” 在图 5 所示的 DataOps 流程中发生了两次。正如我们上面解释的,DataOps 编排数据工厂(价值管道)。数据工厂由一个包含许多步骤的管道过程组成。想象一个复杂的有向无环图(DAG)。“协调器” 可以是一个软件实体,它控制步骤的执行、遍历 DAG 并处理异常。例如,编排器可能会创建容器、使用上下文相关参数调用运行时进程、在阶段之间传输数据以及 “监控” 管道执行。数据工厂的编排是图 6 中 DataOps 流程中的第二个 “编排”。

如上所述,创新管道具有数据管道的代表性副本,用于在部署到生产之前测试和验证新分析。这是与 “测试” 结合并在 “部署” 新分析之前发生的编排 —— 如图 7 所示。

编排发生在价值和创新管道中。同样,测试在 DataOps 中扮演着双重角色。

06 DataOps 中测试的二元性

DataOps 中的测试在价值和创新管道中都有作用。在价值管道中,测试监控流经数据工厂的数据值,以捕捉异常或标记统计规范之外的数据值。在创新管道中,测试会在部署新分析之前对其进行验证。

在 DataOps 中,测试以数据或代码为目标。我们使用图 8 讨论了这个概念。流经价值管道的数据是可变的,并且受统计过程控制和监控。测试针对的是不断变化的数据。另一方面,价值管道中的分析是固定的,只能使用正式的发布流程进行更改。在价值管道中,分析受到修订控制,以最大限度地减少可能影响数据工厂的任何服务中断。

在创新管道中,代码是可变的,数据是固定的。分析被修改和更新直到完成。沙盒设置完成后,数据通常不会更改。在创新管道中,测试针对的是代码(分析),而不是数据。在将新代码推广(合并)到生产环境之前,所有测试都必须通过。一个好的测试套件可以作为一种自动化的影响分析形式,在部署之前运行在任何代码更改上。

一些测试同时针对数据和代码。例如,确保数据库具有正确行数的测试有助于您的数据和代码协同工作。最终,数据测试和代码测试都需要整合到一个集成的管道中,如图 4 所示。DataOps 使代码和数据测试能够协同工作,因此始终保持高质量。

当工程师加入软件开发团队时,他们的第一步就是创建一个 “沙箱”。沙盒是一个隔离的开发环境,工程师可以在其中编写和测试新的应用程序功能,而不会影响正在并行开发其他功能的队友。软件开发中的沙盒创建通常很简单 —— 工程师通常会从队友那里收到一堆脚本,并且可以在一两天内配置一个沙盒。这是使用 DevOps 的团队的典型思维方式。

从工具和数据的角度来看,数据分析中的沙箱通常更具挑战性。首先,与典型的软件开发团队相比,数据团队总体上倾向于使用更多的工具。有数以千计的工具、语言和供应商用于数据工程、数据科学、商业智能、数据可视化和治理。如果没有大多数软件开发团队所特有的集中化,数据团队往往会因分散在企业中的不同工具和数据孤岛而自然而然地产生分歧。

07 DataOps 复杂性 —— 测试数据管理

为了创建用于分析的开发环境,您必须创建数据工厂的副本。这需要数据专业人员复制可能具有安全性、治理或许可限制的数据。复制整个数据集可能不切实际或成本高昂,因此需要一些思考和谨慎来构建具有代表性的数据集。对多 TB 数据集进行采样或过滤后,可能必须对其进行清理或编辑(删除敏感信息)。数据还需要基础设施,由于技术障碍或许可证限制,这些基础设施可能不容易复制。

测试数据管理的概念是 DataOps 中的首要问题,而在大多数 DevOps 环境中,这是事后才想到的。为了加速分析开发,DataOps 必须使用所需的数据、软件、硬件和库自动创建开发环境,以便创新与敏捷迭代保持同步。

08 DataOps 以两种方式连接组织

DevOps 致力于帮助开发和运营(信息技术)团队以集成的方式协同工作。在 DataOps 中,这个概念如图 11 所示。开发团队是分析师、科学家、工程师、架构师和其他创建数据仓库和分析的人。

在数据分析中,运营团队支持和监控数据管道。这可以是 IT,但也包括客户 —— 创建和使用分析的用户。DataOps 将这些团队聚集在一起,以便他们可以更紧密地合作。

自由与中心化

DataOps 还将组织在另一个维度上结合在一起。大量数据分析开发发生在企业的偏远角落,靠近业务部门,使用 Tableau、Alteryx 或 Excel 等自助服务工具。这些从事去中心化、分布式分析创建的本地团队在向用户提供创新方面发挥着至关重要的作用。赋予这些创造力口袋以保持企业的竞争力,但坦率地说,缺乏自上而下的控制会导致无法管理的混乱。

在一组(例如 IT)的控制下集中分析开发,使组织能够标准化指标、控制数据质量、实施安全和治理,并消除数据孤岛。问题是过多的中心化会扼杀创造力。

DataOps 的一个重要优势是它能够协调数据分析的分散式和集中式开发之间的来回 —— 两者之间的紧张关系集权与自由。在 DataOps 企业中,新的分析在本地创新领域产生并经过改进。当一个想法被证明有用或值得更广泛地分发时,它会被提升为一个集中的开发团队,他们可以更有效、更稳健地大规模实施它。

DataOps 将本地化和集中式开发结合在一起,使组织能够在保持本地化开发的同时获得集中化的效率 —— 创新矛的尖端。DataOps 将企业跨两个维度整合在一起,如图 13 所示 —— 开发 / 运营以及分布式 / 集中式开发。

DataOps 在组织中的核心团队之间带来了三个创新周期:集中的生产团队、集中的数据工程 / 分析 / 科学 / 治理开发团队,以及使用自助服务工具的团队,这些团队分布在离客户最近的业务线中。图 14 显示了创新的连锁循环。

09 企业示例:数据分析生命周期复杂性

在高层次研究了 DataOps 开发过程之后,让我们来看看企业环境中的开发生命周期。图 14 说明了从开始到生产的分析过程的复杂性。分析首先由个人创建和开发,然后合并到团队项目中。完成单元验收测试后 (UAT),分析进入生产。DataOps 的目标是在个人开发环境中创建分析,进入生产环境,接收用户的反馈,然后通过进一步的迭代不断改进。由于人员、工具、代码、版本、手动程序 / 自动化、硬件、操作系统 / 库和目标数据的差异,这可能具有挑战性。图 14 中的列显示了这四种环境中每一种环境的不同特征。

如果没有 DataOps,在这四个完全不同的环境中将分析推向生产环境的挑战是艰巨的。它需要拼凑起来的手动操作和脚本,这些脚本本身管理起来很复杂。人工流程容易出错,因此数据专业人员通过长时间工作来弥补,错误地依赖希望和英雄主义来取得成功。所有这些都会导致不必要的复杂性、混乱和大量时间和精力的浪费。图 15 所示的生命周期进展缓慢,再加上高严重性错误进入生产环境,可能会使数据分析团队几乎没有时间进行创新。

写在最后的话

DataOps 简化了数据分析创建和操作的复杂性。它将数据分析开发与用户优先级保持一致。它简化并自动化了分析开发生命周期 —— 从沙箱的创建到部署。DataOps 控制和监控数据工厂,因此数据质量保持高水平,使数据团队专注于增加价值。

您可以通过执行这七个步骤来开始使用 DataOps 。您还可以采用 DataOps 平台,该平台将在现有工具和基础架构的上下文中支持 DataOps 方法。

DataOps 平台可自动执行构成 DataOps 的步骤和流程:沙盒管理、编排、监控、测试、部署、数据工厂、仪表板、敏捷等。DataOps 平台专为数据专业人员而构建,旨在将他们所需的所有工具、步骤和流程简化为易于使用、可配置的端到端系统。这种高度自动化消除了大量的手动工作,使团队腾出时间来创建新的创新分析,从而最大限度地提高组织数据的价值。

 



(责任编辑:IT)
------分隔线----------------------------