《DataOps生产管道》课程内容包括《数据操作管道》《元编排工具、团队和流程》《自动化错误检测测试》《测试类型》《衡量生产流程,反思和改进》。本文汲取课程精华要点,如需完整版可观看视频讲解,关注公众号回复关键字【第二课】,获取课程完整版文字内容。
课程完整版(30分钟)
三条数据操作管道
谈论DataOps的一种方式是“你在DataOps中做了什么?”做了很多事情,但我们来谈谈三条数据操作管道。
在这三条管道中,第一条管道实际上是关于如何协调数据以实现客户价值,分析过程就像制造业。先来看看价值管道,把它们想象成制造站,可以访问、转换、建模和可视化。有数据、工具、科学、目录或管道,每个类别中都有大量的工具。
管道本身大多数是分布式的,IT团队有一部分,自助服务数据团队拥有另一部分。想象一下,一个组织有数百条管道并连接在一起,如果客户提出一些问题,你怎样知道是哪条管道造成的?是哪个团队造成的?
第二个想法是,除了正在生产的产品之外,还有另一条管道,这就是你如何将东西投入生产创新管道。这有点像软件开发,当你的团队在工作时,无论他们是用R、Python、Tableau还是Looker开发,创建的工作或配置在概念上都是代码,就像软件工程师创建代码一样。
部署过程就是将代码从开发人员转移到生产人员。因此,我们必须同时做两件事:运行这条漂亮的丰田装配线,从装配线上取东西更换它,在不损坏任何东西的情况下重新投入生产,并以低误差、快速循环时间、良好的协作和高测量来完成这项工作。因此,这是两条管道为生产中的价值管道和创新管道,即部署。
但实际上,还有第三条基础管道是环境管道。管道是在事物中运行的过程,这里的环境是指如何实际构建反映开发和生产的环境。如何将沙盒及其所有复杂性构建到它们运行的硬件、软件和数据安全环境中?它们是每一条管道的基础。
元编排工具、团队和流程
接下来看看生产或价值管道,讨论一下它们为什么会出现这么多错误,如何构建和监控这些管道,它们如何映射到组织中,我们如何加以改进?
与分析公司Eckerson进行的一项调查,大多数公司都有太多错误了。这是个问题,如果你要经营一条好的丰田生产线,就不会生产有缺陷的汽车。
这就是在DataOps中谈论的另一个比喻的由来:这实际上与数据质量无关,而是低错误率。因此,真正关注错误率,而不是数据质量,这是DataOps的另一个视角。
所以你有很多工具,数据在生产中有很多错误。但这些团队实际上创造了进入这些管道的东西,为他们的客户在一个集成的价值链中工作。也许是IT数据中心的某个人提供数据,一些数据工程师转换数据,数据科学家建模并安装算法,人们正在进行数据可视化和治理。
真正了解这些专栏的含义以及它们的来源,只要把一张简单的表格放在客户面前,你就有很多工具,也许还有很多团队参与其中,这就难怪事情进展缓慢了。
这里有一个观点,因为每个人都有自己的工具来做这件事,他们在自己的工具中独立工作,但他们依赖于别人的工作。作为一名数据工程师,依赖IT来获取数据;作为一名数据科学家,依赖于数据工程中的某个人,每个人都有自己的部分,他们有自己正在做的特定任务。
因此,生产价值管道实际上是一个元工作流或DAG的DAG,这些工具中的每一个都有其子工作流,大多数组织都有两到三种不同的方式来进行数据工程,一些不同的商业工具,几个不同的数据科学平台来实现这一点。因此,DataOps的另一个观点是,世界上没有太多数据,这是因为有太多的人和太慢的过程来利用这些数据。
自动化错误检测测试
考虑到生产线的情况,接下来谈谈自动化的好处,或者说如何改进它。第一个想法是将你的生产视为一条生产线,所有人共同处理复杂的事情。如果你专注于执行过程,提高产品质量,减少返工量,最终获得更高的员工满意度,从而在这种精益制造理念中获得更高利润。
把这些管子想象成管道,每个人都在管道中工作,还有很多工具和数据,有很多客户,公司每天都有数百条这样的管道在整个组织中运行。这里最重要的一点是,你需要顶部的灯来说明它是否有效,因为如果你只是希望它能起作用,那么你最终会陷入返工的循环中。这就像在工厂里一样——如果你生产有缺陷的汽车,修复缺陷的成本要比一开始就修复高得多。
所有这些管道,它们本身都在与你的工具和数据交互,数据库工具、科学工具、目录工具、ETL工具、数据库、数据湖,他们都在尝试使用这些工具。因为这是一个DAG的DAG,他们每个人都在做自己的工作,如果你想让“红绿灯”告诉你所有这些管道都在运行时,客户是否满意?要怎么才能做到呢?
首先,你需要在生产中添加自动化测试和监控。因此,需要测试价值管道中的每一个步骤和每一个工具。不要信任你的数据供应商,不要信任你能运行的服务器,一定要核实。
在整个流程之上,放一组任务或逻辑,看看“我得到了坏数据吗?基于这些数据,业务逻辑仍然正确吗?输出对用户来说一致吗?业务用户当前看到的与以前看到的相比有很大的差异吗?”这类任务是分析生产的一种方式。
你可以做所有的工作,但为什么不停止生产,早点了解这一点,也许你可以在问题出现之前纠正问题。
测试类型
当考虑监视正在发生的事情时,它不仅仅是服务器和CPU监视之类的事情,实际上是进入数据和根据这些数据创建的工件,然后将它们归类为错误。
一个测试示例叫做位置平衡测试,一位Azure工作的客户,他们从内部系统获取数据,数据进入Blob存储,数据进入Snowflake基础设施的三个级别。然后它被缓存在Power BI的一些视图中,所以你在四到五个地方得到了基本上相同的数据项。那么,你怎么知道每一步都没有出问题呢?这就需要一个叫位置平衡的东西,基本上可以说有一百万行,会得到相当于一百万行的数据。这意味着你需要一些东西,第一贯穿整个系统,需要可以保存计数和变量的东西,以及可以进行比较的子数据集。
一些编写工具的方法是这样的:如果最后一个表的行数不等于预期的行数,你可以在这里看到逻辑,即最终的表行数应该等于预期的最终表行数。在这种情况下,只需要确保将数据从blob存储区移动到数据库表,或从数据库中的一个级别移动到另一个级别,计数是相同的。因此,这是一种非常简单的方法,可以确保在这些转换中不会有任何损失。
另一个测试是运行一个好的生产管道的另一面,要确保生产的产品是商业客户知道的正确产品,商业人士和消费者是启发式的,他们不知道数据中的所有细节,但他们确实对某些事情非常了解。就像他们通常有80/20规则一样,80%的价值来自20%的产品或产品组,或地区或客户类型。像把数据放在客户面前,让他们在三秒钟内说这是错误的问题,这很让人泄气。有时它是错误的,不是因为源数据是错误的,有时数百行的小文件也会影响它。
如果这是一个问题,你明白会发生什么?你总是会遇到问题,与其将你做错的事情视为失败,不如让你的团队将其视为改进的机会。你可以让你和你的团队说,“我们学到了什么?我们如何实施测试或改变测试过程?”这实际上是一件非常重要的事情,因为数据世界总是会失败,数据提供商总是会提供坏掉的东西,你可以在它们引起问题之前注意到它们,或者即使你不这样做也可以有办法改进。
另一句格言:不羞耻,不责备,爱你的错误。在很多组织中,当错误发生时,人们会看到你出了问题。德明公司的一个想法是,我们都在触摸大象和这些复杂的大东西和装配线,一个大的分析生产过程,没有人能把整件事都记在脑子里。因此,当出现错误时,错误就会发生,不要责怪试图找到根本原因并试图找到解决方法的人。
衡量生产流程,反思和改进
很多分析团队对他们的生产过程没有足够的分析能力。跟踪一些事情:你在生产中的错误率是多少?它们在哪个管道上运行?哪个数据提供商正在向你提供糟糕的数据?是否满足SLA要求?测试覆盖范围是多少?这些都是非常重要的指标,现在试图帮助人们实现数据驱动。
这是一份被称之为龙卷风的报告,它显示了周数和不同的数据提供商,一方面,错误的严重程度是什么?它是从哪里来的?另一方面,修复它需要多少小时。这让你可以和数据提供商说:“看过去三周,我们因为你的数据而出现了一个严重的错误,你花了我团队三天的时间来修复数据问题。”这种定量讨论可以帮助你提醒数据提供商。
其次,在项目的基础上,甚至在管道的基础上看,应该试着随着时间的推移看。看看你在管道中有多少错误,或者你在管线中有多少测试。试着看看管道是否准时?如果你仔细观察就会发现一些模式。衡量标准的另一部分是,通过衡量提供了改变个人团队行为的证据。你说,“看报告中显示我们犯了这些错误,让我们努力减少这些错误。”这不再是你的意见,更多的是事实,这能让团队团结起来解决这些事实。
那么,好的生产管道的技术特点是什么?首先是元编排的概念,你有所有的工具,将现有工具插入管道。第二部分是需要对这些管道本身进行监测、测试和观察。DevOps中有一个术语叫做“可观察性”。你应该自动化这些测试,应该跟踪测试数据和工件,发送警报,在整个管道上做一些事情:统计过程控制、端到端和其他测试类型。然后将管道定义本身存储为代码,并将工具代码和管道代码放在一起。一旦这些管道中的每一个都运行了,就要保存一个操作度量的运行历史数据库,因为你可以使用它来改进,这就是技术特点。
实际上让这一点变得明显:有报告,有观点,是团结一致的重要方式。同样,这并不是说它们只是在运行,而是数据和在它们之上创建的工件是正确的,这样你的业务客户就知道这是正确的,这样红绿灯就更有意义了。
扫码关注云原生大数据平台KDP
践行云原生DataOps
本文汲取课程精华要点,详情可关注公众号,回复关键字【第二课】,获取课程完整版文字内容。课程的第三课我们将为大家介绍《DataOps开发管道》,大家敬请期待吧。
- FIN -
更多精彩推荐
👇点击阅读原文,了解更多详情