译者按:本文为© 2021 DataKitchen公司白皮书《DataOps is NOT Just DevOps for Data》的翻译,比较好的介绍了DataOps的概念和理念。翻译不准确之处,请各位同仁指正!
图1:DevOps通常被描述为一个无限循环,而DataOps则被描述为价值和创新的交叉管道
关于DataOps的一个常见误解是,它只是应用于数据分析的DevOps。虽然在语义上有点误导,但“DataOps”这个名称还是有积极的意义。它传达了数据分析可以通过软件开发实现类似DevOps的功能。也就是说,当数据团队使用新的工具和方法时,DataOps可以在质量和时间周期上产生数量级的改进。DataOps实现这些收益的具体方式反映了数据团队(与使用DevOps的软件开发团队相比)在人员、流程和工具方面的独特特征。下面是我们对DataOps和DevOps之间明显和细微差异的深入理解。
DataOps的知识遗产
DevOps是一种使用自动化加速生命周期构建(以前称为发布工程)的软件开发方法。DevOps通过利用随需应变的IT资源(作为代码的基础设施)和自动化的代码集成、测试和部署,专注于软件的持续集成和持续交付。软件开发和IT运营的这种融合(“开发”和“运营”)减少了部署时间,缩短了上市时间,最大限度地减少了缺陷,缩短了解决问题所需的时间。
使用DevOps,领先的公司已经能够将软件发布周期从几个月缩短到几秒。这使它们能够在快节奏的新兴市场中成长并处于领先地位。像谷歌、亚马逊及其他许多公司现在每天都发布很多次软件。通过提高代码发布的质量和周期,DevOps为这些公司的成功赢得很多荣誉。
优化代码的构建和交付只是数据分析这个更大难题的一部分。DataOps旨在减少数据分析的端到端周期时间,从创意的起源到创造价值的图、表和模型。数据生命周期不仅依赖于工具,还依赖于人。为了使DataOps有效,它必须管理协作和创新。为此,DataOps将敏捷开发引入到数据分析过程中,使数据团队和用户可以更高效地协同工作。
在敏捷开发中,数据团队以“冲刺”为单位增量发布或更新分析应用。随着创新要求以更短的间隔出现,团队可以不断地重新评估其待办任务优先级,并更容易地适应不断变化的需求。如果使用瀑布式项目管理方法,这种类型的响应是不可能的,因为瀑布式项目管理方法将团队锁定在一个漫长的开发周期中,最后只有一个“大爆炸”式的可交付成果。
研究表明,当敏捷开发取代传统的瀑布顺序方法时,敏捷软件开发项目完成得更快,缺陷更少。敏捷方法在需求快速变化的环境中尤其有效——数据分析专业人员都知道这种情况。在DataOps中,通过敏捷方法使组织能够做出快速响应满足客户要求,加快价值实现。
图2:DataOps的知识遗产
敏捷开发和DevOps为数据分析增加了巨大的价值,但DataOps还包括其他一些主要组成部分。Agile和DevOps只是与分析的开发和部署相关,而数据分析还需要管理和协调数据管道。数据以报告、模型和视图的形式不断地从管道的一侧进入,经过一系列步骤后交付。数据管道是数据分析的“操作”端。可以将数据管道形象化理解为满足一定质量、效率、约束下正常运转的工业生产线。为了完整的借鉴这种制造业思维,我们将此管道称为“数据工厂”。
在DataOps中,操作过程中的数据流是一个重要的关注领域。DataOps协调、监控和管理数据工厂。统计过程控制(SPC)是一个特别强大的精益制造工具。SPC测量和监控数据管道中的数据和操作特征,确保统计数据保持在可接受的范围内。将SPC应用于数据分析时,可显著提高效率、质量和透明度。SPC就位后,通过操作系统验证的数据被为工作正常。如果出现异常情况,数据分析团队会通过自动警报了解到状况。
虽然名称“DataOps”意味着它从DevOps中借用的最多,但构成DataOps知识遗产的却是敏捷、DevOps和统计过程控制这三种方法。敏捷管理分析开发过程,DevOps优化代码验证,构建和交付新的分析,统计过程控制协调和监控数据工厂。图2说明了敏捷、DevOps和统计过程控制如何融合在DataOps中。
您可以在长达一个世纪的理念背景下了解数据操作的演变过程,这些理念改进了人们管理复杂系统的方式。它始于像戴明和统计过程控制这样的先驱者,这些想法逐渐以敏捷、DevOps和现在的DataOps的形式进入技术领域。
DevOps与DataOps——人为因素
如上所述,DataOps与人员和工具管理一样重要。DataOps和DevOps之间的细微差别与利益相关者的需求和偏好有关。
图3:DataOps和DevOps用户有不同的心态
DevOps的创建是为了满足软件开发人员的需求。开发工程师热爱编码并接受技术。学习新语言或部署新工具是一个探索世界的机会,而不是麻烦。他们对代码创建、集成和部署的所有细节都非常感兴趣。DevOps的理念是拥抱复杂性。
DataOps用户通常与此相反。他们是专注于构建和部署模型和可视化的数据科学家或分析师。科学家和分析员通常不像工程师那样精通技术。他们专注于领域专业知识。他们感兴趣的是使模型更具预测性,或者决定如何以最佳的视觉效果呈现数据。用于创建这些模型和可视化的技术只是达到目的的一种手段。数据专业人士通常只是乐于使用一两种工具,除此之外,任何增加复杂性的工具都是不受欢迎的。另外,复杂性的增长超出了他们的管理能力。DataOps承认数据专业人员生活在一个多工具、异构的世界中,并试图让这个世界对数据专业人员来说更友好。
DevOps与DataOps-流程差异
通过查看数据分析开发和生命周期过程,我们可以开始了解数据专业人员面临的独特复杂性。我们发现,数据分析专业人员面临着与软件开发人员即相似又独特的挑战。
DevOps生命周期通常使用一个无限符号形状的图来说明,参见图4。每个周期的结束(“计划”)反馈到下一个周期的开始(“创建”),过程无限期地迭代。
图4:DevOps生命周期通常被描述为一个无限循环
DataOps生命周期共享这些迭代属性,但一个重要的区别是DataOps由两个活动的和相交的管道组成(图5)。如上所述,数据工厂是一条管道。另一条管道控制数据工厂在数据管道中创建和部署新分析时的更新方式。
数据工厂将原始数据源作为输入,并通过一系列协调的步骤生成分析洞察,为组织创造“价值”。我们称之为“价值管道”。数据操作自动化编排,并使用SPC监控流经价值管道的数据质量。
“创新管道”是将新的分析理念引入价值管道的过程。创新管道在概念上类似于DevOps开发过程,但仔细检查后,有几个因素使DataOps开发过程比DevOps更具挑战性。图5显示了价值和创新管道的简化视图。
图5:DataOps生命周期价值和创新管道
DevOps vs.DataOps-开发和部署流程
DataOps以DevOps开发模型为基础。如图6所示,DevOps流程包括一系列软件开发项目通用的步骤:
l 开发–创建/修改应用程序
l 构建–组装应用程序组件
l 测试–在测试环境中验证应用程序
l 部署–将代码转换到生产中
l 运行–执行应用程序
DevOps引入了两个基本概念:持续集成(CI)和持续部署(CD)。CI在开发环境中不断构建、集成和测试新代码。构建和测试是自动化的,因此它们可以快速重复地进行。这样可以快速识别和解决问题。图6说明了CI如何包含DevOps的构建和测试过程阶段。
图6:比较DataOps和DevOps流程
CD是部署或交付软件的自动化方法。一旦应用程序通过所有鉴定测试,DevOps就会将其部署到生产中。CI和CD一起解决了阻碍敏捷开发的主要约束。在DevOps之前,敏捷创建了一系列快速更新和创新,这些更新和创新如果是在手动集成和部署过程则会停滞。借助自动化CI和CD,DevOps使公司能够每天多次更新其软件。
DataOps中的两个编排
需要注意的是,“编排(Orchestrate)”在图6所示的DataOps过程中发生了两次。如上所述,数据工厂(价值管道)由一个包含许多步骤的管道过程组成,DataOps协调数据工厂。想象一个复杂的有向无环图(DAG)。编排工具可以是控制步骤执行、遍历DAG和处理异常的软件实体。例如,编排工具可以创建容器、使用上下文相关参数调用运行时流程、在不同阶段之间传输数据以及“监视”管道执行。数据工厂的编排是图7中DataOps流程的第二个“编排”。
图7:DataOps协调数据工厂
如上所述,创新管道具有数据管道的代表性副本,用于在部署到生产中之前测试和验证新分析。如图8所示,这是在“测试”和“部署”新分析之前发生的编排。
编排在价值和创新两个管道中进行。类似情况,测试在DataOps中也扮演着双重角色。
图8:DataOps的编排控制着访问、转换、建模、可视化和报告数据的众多工具
DataOps中测试的对偶性
DataOps中的测试在价值和创新两个管道中都有用。在价值管道中,测试监控流经数据工厂的数据值,以捕获异常或标记统计规范之外的数据值。在创新管道中,测试在部署新分析之前对其进行验证。
在DataOps中,测试以数据或代码为目标。在最近的博客中,我们使用图9讨论了这个概念。流经价值管道的数据是可变的,受统计过程控制和监控。测试的目标是不断变化的数据。另一方面,价值管道中的分析是固定的,只有使用正式的发布流程才能更改。在价值管道中,对分析进行修订控制,以最大限度地减少可能导致的数据工厂服务中断。
在创新管道中,代码是可变的,数据是固定的。对分析进行修订和更新,直至完成。一旦沙箱被设置好,数据通常不会改变。在创新管道中,测试的目标是代码(分析),而不是数据。
在将新代码升级(合并)到产品中之前,必须通过所有测试。一个好的测试套件可以自动化的影响分析,在部署之前对代码的任何更改都执行测试过程。
有些测试同时针对数据和代码。例如,确保数据库具有正确行数的测试有助于数据和代码协同工作。最终,数据测试和代码测试都需要整合到一个集成的管道中,如图5所示。DataOps使代码和数据测试能够协同工作,确保全面的高质量。
图9:在DataOps中,数据和代码测试功能一起保障分析质量
DataOps复杂性-沙箱管理
当工程师加入软件开发团队时,他们第一步工作是创建“沙箱”。沙箱是一个独立的开发环境,工程师可以在其中编写和测试应用程序新功能,而不会影响并行开发其他功能的团队成员。软件开发中的沙箱创建通常很简单,工程师通常会从队友那里收到一堆脚本,并且可以在一两天内配置一个沙箱。这是使用DevOps的团队的典型心态。
从工具和数据的角度来看,数据分析中的沙箱通常更具挑战性。首先,数据团队总体上使用的工具比典型软件开发团队多得多。数据工程、数据科学、BI、数据可视化和治理有成千上万的工具、语言和供应商。如果没有软件开发团队集中,数据团队会因分散在企业中的不同工具和数据孤岛而产生自然而然的分歧。
图10:“沙箱”是一个独立的开发环境,数据专业人员可以在其中编写和测试新的分析,而不会影响团队其他成员。
DataOps复杂性-测试数据管理
为了创建用于分析的开发环境,必须创建数据工厂的副本。这要求数据专业人员复制哪些可能有安全、治理或许可限制的数据。复制整个数据集可能不切实际或成本高昂,因此需要一些思考谨慎的来构建一个具有代表性的数据集。对TB级数据集进行采样或筛选后,可能需要对其进行清理或编辑(删除敏感信息)。由于技术障碍或许可证限制,数据还需要一个确保安全不易复制的基础设施。
图11:测试数据管理是DataOps中的一个首要问题。
测试数据管理是DataOps中的一个首要问题,而在大多数DevOps环境中,它是事后考虑的问题。为了加速分析开发,DataOps必须自动创建具有所需数据、软件、硬件和库的开发环境,以便创新与敏捷迭代保持同步。
DataOps以两种方式连接组织
DevOps致力于帮助开发和运营团队以集成的方式协同工作。在DataOps中,此概念如图12所示。开发团队包括分析师、科学家、工程师、架构师和其他创建数据仓库和分析的人员。
在数据分析中,运营团队支持并监控数据管道。这可以是IT,但也包括创建和使用分析的客户。DataOps将这些小组聚集在一起,以便他们能够更紧密地合作。
图12:DataOps结合了数据分析开发和数据操作。
自由与集权
DataOps还跨组织将另一个维度整合在一起。大量数据分析开发发生在企业中靠近业务部门的偏远角落,使用Tableau、Alteryx或Excel等自助服务工具。这些参与分布式分析的本地团队在向用户提供创新方面发挥着重要作用。要赋予这些团队创造力以维持企业的竞争力,但坦率地说,缺乏自上而下的控制可能会导致混乱。
在一个小组(如IT)的控制下集中分析开发,使组织能够标准化度量、控制数据质量、加强安全性和治理,并消除数据孤岛。但这样的问题在于过于集中会扼杀创造力。
图13:DataOps将集中式和分布式开发结合在一起
DataOps的一个重要优点是它能够协调分散和集中数据分析开发之间的关系,以及集中和自由之间的紧张关系。
在DataOps企业中,新的分析在当地创新环境产生并经过改进。当一个想法被证明是有用的或值得更广泛地传播时,它将被提升到一个集中的开发小组,该小组可以更高效、更稳健地大规模实施它。
DataOps将本地化和集中化开发结合在一起,使组织能够获得集中化的效率,同时保留本地化开发的创新机制。DataOps跨两个维度将企业整合在一起,如图14所示。
图14:DataOps将两个维度的开发/运营以及分布式/集中式开发团队聚集在一起。
DataOps为组织中的核心团队带来了三个创新周期:集中化生产团队、集中化数据工程/分析/科学/治理开发团队,以及使用自助服务工具的团队,这些工具分布在离客户最近的业务线中。图15显示了创新的连锁循环。
图15:DataOps在生产、中心数据和自助服务团队之间带来了三个创新周期。
企业案例-数据分析生命周期复杂性
在高层次上介绍了DataOps开发过程之后,让我们看看企业环境中的开发生命周期。图15说明了从开始到生产分析过程的复杂性。分析工作首先由个人创建和开发,然后合并到团队项目中。完成单元验收测试(UAT)后,分析部署进入生产。DataOps的目标是在单个开发环境中创建分析,推进生产,接收用户反馈,然后通过进一步迭代不断改进。由于人员、工具、代码、版本、手动过程/自动化、硬件、操作系统/库和目标数据的差异,每个方面都可能具有挑战性。图16中的列显示了这四种环境中每种环境的不同特征。
如果没有DataOps,跨这四个完全不同的环境将分析推向生产环境的过程挑战是令人望而生畏的。它需要大量手工和脚本操作,过程很难管理。人工过程容易出错,因此数据专业人员要通过长时间工作来弥补错误,寄希望于英雄精神来获得成功。所有这些都会导致不必要的复杂性、混乱以及大量时间和精力的浪费。图16所示的生命周期进展缓慢,再加上在生产过程中发现的严重错误,数据分析团队几乎没有时间进行创新。
图16:实施DataOps的数据分析开发生命周期复杂性
DataOps简化了数据分析创建和操作的复杂性。它使数据分析开发与用户优先级保持一致。它简化并自动化了从创建沙盒到部署的分析开发生命周期。DataOps控制和监控数据工厂,使数据质量保持较高水平,使数据团队专注于增值。
通过实现这七个步骤,您可以开始使用DataOps。您还可以采用DataOps平台,该平台将在现有工具和基础架构的上下文中支持DataOps方法。
DataOps平台自动化了组成DataOps的步骤和过程:沙箱管理、编排、监视、测试、部署、数据工厂、仪表盘、敏捷等等。DataOps平台是为数据专业人士构建的,旨在将他们需要的所有工具、步骤和流程简化为易于使用、可配置的端到端系统。这种高度自动化消除了大量的手工工作,使团队能够自由地创建新的创新分析,从而最大限度地实现组织数据的价值。
关于DataKitchen
DataKitchen,Inc.通过提供世界上第一个DataOps平台,帮助企业将数据转化为价值。有了DataKitchen,数据和分析团队可以协调数据,以便在自动化质量的同时为生产提供价值和部署功能。这些团队受益于使用他们喜爱的工具快速、高质量地交付价值。DataKitchen正在领导DataOps运动,将敏捷软件开发、DevOps和基于制造的统计过程控制纳入分析和数据管理。DataKitchen总部位于马萨诸塞州剑桥市。
翻译整理:马欢:DAMA 会员,《DMBOK数据管理知识体系(第1&2版)》中文版主译者,项目管理师,系统分析师,架构师,PMP,CDMP Master