DataOps,即Data和Operations组合。是在数据分析过程中,提升数据质量,减少数据分析的周期时间,提高效率的一系列实践,现在逐渐发展成了一门方法论。DataOps适用于从数据准备到报告的整个数据生命周期。
DataOps是一门快速发展的学科,用来管理不规则数据管道,这些数据管道遍布于各大公司的环境中。
曾几何时有那么一段美好的日子,只有两个数据管道:一个支持生成通用报告和分析活动的数据仓库,以及一个为投资者和董事会提供审计数字的财务报告的数据管道。如今,随着自助服务分析和机器学习的发展,公司拥有的管道数量随着数据分析师,数据科学家和需要大量数据的应用程序的增多而增多。每一个都需要专门的数据集和数据访问权限才能产生内容。这简直是管道爆炸!
如果没有DataOps,每个数据管道都将成为一个数据孤岛,与其他数据管道,数据集和数据生产者几乎没有关系。没有协作或重用,浪费大量的人工和返工,有大量的错误和数据缺陷,并且交付时间极慢。商业用户除了信任自己的数据外不信任任何数据,而且许多用户需要在没有任何数据或没有足够数据的情况下做出决策,因为他们等不及了。
DevOps的降临。在引入敏捷开发和DevOps技术之前,软件工程界一直受到类似问题的困扰。如今,DevOps的先驱例如Amazon,Google和LinkedIn等公司每天(甚至每小时或更快)部署软件版本,这是几年前无法想象的发展节奏。令人惊讶的是,即使周期时间加快了,软件错误和缺陷也有所减少。容器化和微服务的问世将进一步加速和强化软件交付周期。简而言之,DevOps可以以更低的成本更快地提供更好的代码。
对于DataOps来说
数据挑战。看到打破僵局的机会,数据世界正在紧紧抓住DevOps原则。 DevOps管理代码,工具和基础架构之间的联系,以加快应用程序功能的交付,而DataOps添加了第四个元素——数据——比其他三个元素相加更难以控制!在每个管道中,必须对数据进行标识、捕获、格式化、标记、验证、画像(profiled)、清理、转换、组合、聚合、保护、分类、治理(governance)、移动、查询、可视化、分析和操作。 呜!随着组织从数百个数据源收集大量数据,这些任务变得越来越复杂。
工具和人员。此外,每个任务还需要专门的工具管理。这些工具的范围从传统的ETL / ELT,数据质量和主数据管理工具到数据目录,数据准备和数据治理产品,再到报告,数据可视化和数据科学工具。这些工具中的每一个针对不同类型的用户——从IT部门的系统工程师和数据库管理员——到BI团队中的数据工程师,数据管理员和报表开发人员——到数据分析师,数据科学家和数据使用者业务部门。
协调所有的这些工具,技术和人员是一项巨大的工作,特别是在拥有规模庞大的开发团队,来自数百个来源的大量数据以及该领域的大量数据分析师和数据科学家的大型组织中。这就是为什么DataOps会发展起来。
DataOps框架
定义DataOps非常困难。它包含很多零件和过程。图1是试图绘制DataOps环境的关键组件的简化图。为了简化此环境,某些组织倾向于从单个供应商那里采购所有组件,例如大型软件或云提供商(例如Microsoft,Amazon,Oracle或IBM)或大数据工程专家(例如Infoworks)。其他人则喜欢使用一些最佳组合,用编排和监控工具将开源的组件和商业组件结合在一起。
图1 DataOps组件:
数据管道
图1中间的黑色箭头表示典型的数据管道,源数据通过管道逐步移动到三个阶段(数据采集,数据工程和数据分析)。这些管道代表了一个数据供应链,这个数据供应链可以处理,优化和丰富数据,以供各种业务用户和应用程序使用。一个管道可能会填充财务使用的OLAP多维数据集;另一个可能将集成的客户数据传递到实时Web应用程序;另一个可能会为建立活动响应模型的数据科学家创建一个细分的原始数据池。
数据技术
数据管道下方是用于采集,精炼和分析数据的主要技术类别。媒体最关注这四个类别:数据捕获,数据集成,数据准备和数据分析。因为这就是钱的来源——软件供应商每年通过销售数据产品产生数十亿美元的收入!不幸的是,对数据技术的过分重视,使得更为重要的数据过程变得黯然失色,而数据过程则是协调和驱动这些数据技术的。 (请参见下面的“数据处理”。)
如今,随着组织从批处理架构转向流式架构以支持大数据和物联网,数据捕获已成为热门技术类别。数据集成已成为传统数据仓库项目的基础,现在已成为主流。数据准备是一项新技术,旨在帮助数据分析人员建模自己的数据集,理想地利用IT管理的存储库(例如数据湖)中的数据。 数据分析师通过为商业用户提供查询,分析,可视化和共享见解的工具来完成该数据周期。
团队和交接。IT部门通过采集和集成数据来启动数据供应链。这个数据通常被创建成通用的,面向主题的数据文件。然后,数据工程团队将对数据进行查询和建模,以满足特定的业务需求和用例。最后,商业用户查询和分析目标数据集以创建报告,仪表板和预测模型。尽管本质上是线性的,但该循环还是有可能存在中间迭代,其中包含许多必须存储,跟踪和管理的中间步骤和文件。
数据存储是支持数据技术和团队的关键,其中包括在高性能列式数据库上运行的数据仓库,数据湖和数据沙箱。数据存储下面是计算架构,越来越多的计算架构是基于云,虚拟化,弹性的以及大规模并行的。
数据处理
那些试图仅仅依赖技术来构建和管理管道的组织注定要失败。它不仅需要技术,还需要定义明确的过程和方法来构建、更改、测试、部署、运行以及跟踪新功能和修改后的功能。它还需要管理这些过程生成的所有工件,包括代码、数据、元数据、脚本、指标、维度、层次结构等。而且,它需要协调数据技术并供给数据以及监控开发,测试和生产过程。这需要作业调度,事件触发器,错误处理和性能管理,以满足服务级别协议。
开发和部署。前两个阶段(开发和部署)通过敏捷和DevOps方法得到了很好的定义。在这里的目标是和自治的、懂得业务的团队一起开发新功能,这些团队可以在短短的时间内(通常在两周或更短的时间内)开发出经过全面测试和功能的代码。为了同步开发,团队将代码存储在应用版本控制的中央存储库中,以避免覆盖和重复工作。他们还使用技术和工具无缝地合并代码,并以最小的延迟将代码移入生产环境(即,持续集成和持续部署CI/CD)。这些工具和系统配置集中存储并维护在配置库中。
有许多工具可以支持开发和部署的流程。你可以选择从头开始构建新的应用程序或用例,或者修改现有的用例。Git是一个很好的工具,它用于存储代码和控制版本,而Jenkins是支持CI/CD流程(即合并和部署代码)的开源工具。在数据世界中,有许多针对特定类型管道的开发和部署工具,包括数据仓库开发(即数据仓库自动化工具)和创建机器学习模型。
编排。DataOps的核心和灵魂在于编排。在管道中移动,我们需要具有众多依赖关系的复杂任务工作流来处理和丰富数据。一些著名的数据编排工具如Airflow,一些开源项目如,DataKitchen,StreamSets和Microsoft Azure的DataFactory。一个好的编排工具可以很好的协调数据开发项目的所有四个组成部分:代码,数据,技术和基础架构。在DevOps环境中,业务流程工具使用容器编排框架(例如Kubernetes)来激活和协调容器以支持这些流程(如开发、测试、staging和生产环境)。
在数据世界中,业务流程工具不仅提供了新的开发/测试/生产环境。它们还负责在管道中不同阶段之间移动数据,并实例化对数据进行操作的数据工具。他们一边工作,一边监控进度,还要将错误归纳到合适的界面并发出警报。例如,在云环境中,DataOps编排工具可能会执行以下操作:
- 设置平台(例如数据库,存储容量,访问控制列表,性能管理工具,数据目录,日志服务器和监视工具)。
- 触发采集作业。监视作业(批处理或流式传输),检测故障并从中恢复,监视容量并在需要时触发自动缩放。
- 触发数据质量作业。分析和验证数据,检查血缘。
- 快速启动数据转换。一旦采集的数据集获得了通过健康检查,编排工具可能会启动转换代码来合并,格式化和聚合数据元素。
- 触发BI工具。以将数据下载到其自己的列式存储中,或发送一个通知,告知已准备好进行查询和分析的新数据集。
- 监控工作流程。成功完成工作流程后,程序会向适当的人员发出通知,并释放基础架构。
- 持续测试和监控。 DataOps环境的最后组成部分是测试环境。理想情况下,团队在开发任何代码或功能之前就写好了测试。然后,业务流程工具在管道中的每个阶段之前和之后运行测试。在启动和集成时,在上游捕获错误和问题可以节省大量时间,金钱和麻烦。诸如Great Expectations和ICEDQ之类的工具就支持持续的测试环境。还有一些产品提供对工具,应用程序和基础架构的持续监控,以确保最佳的正常运行时间和性能。 Unravel就是面向大数据处理的应用程序性能管理(APM)产品之一。
使用测试作为基本构建块的开发团队的要比那些不使用的团队开发速度更快。对于大多数想在开始之前不进行测试的情况下潜入项目的开发人员来说,这起初是违反直觉的。但是一旦测试到位,开发人员就可以在发现难以解决的代码之前迅速发现问题。通过持续的测试和监控,团队可以设定性能目标,衡量输出并不断改善其周期时间和质量。
结论
DataOps的目标是为了使数据管道和应用程序的开发变得更加严谨,可重用和自动化。 DataOps可以帮助数据团队从数据孤岛,以及被积压和无休止的质量控制问题缠身的状况转变为敏捷,自动化和加速的数据供应链,并且它能持续改善并为企业带来价值。
译者介绍 Grace,程序员,研究生毕业于SUNY at Stony Brook,目前供职于Linktime Cloud Company,对大数据技术以及数据可视化技术感兴趣。