当前位置: 首页 > 工具软件 > Prefect > 使用案例 >

【翻译】正向数据工程和逆向数据工程(Prefect工作流)

长孙星汉
2023-12-01

你好,世界!我们的团队很非常激动地宣布Prefect的到来,这是一个用于构建健壮的数据应用程序的开源框架。Prefect的灵感来自观察数据工程师和数据科学家之间的矛盾,并通过用定义和执行数据工作流的功能性API解决了这些问题。

数据工程师面临的最大问题是我们称之为“逆向数据工程”的永无休止的任务。

  • 正向数据工程是我们通常认为工程师所做的:编写代码以实现目标。
  • 逆向数据工程是工程师编写防御性代码以确保实际运行正向的代码。例如:如果数据到来时,格式不正确会怎样?如果数据库宕机了怎么办?如果运行代码的计算机出现故障怎么办?如果代码执行成功但计算机在报告成功之前就出现故障了怎么办?逆向工程的特点就是需要预测这种无限可能的故障。

工程师告诉我们,他们通常将90%的时间花在逆向或防御性问题上,只有10%的时间花在雇佣他们构建正向的解决方案上。这意味着专注于逆向工程具有非凡的影响力:如果我们可以将逆向的比例减少到仅80%,我们可以有效地将工程师的正向生产力翻倍,因为他们可以将20%的时间花在功能代码上。

但是,如果您纵观整个数据生态格局,您几乎不会看到对这个问题(专注于逆向工程)的任何认可。大多数人会告诉你,第三方解决这些问题实在是太难了,因为就其本质而言,它们对一家公司进行特有的商业实践是如此特殊。

Prefect 中,我们更清楚地知道。考虑大量出乎意料之外但十分重要的逆向的结果是我作为风险经理整个职业生涯都需要做的事情。
在风险中,人们不会试图预测和避免每一个可能的结果;相反,人们开发了一系列的概念和工具,这些概念和工具足够具体以供使用,同时,又足够通用以便稳健的处理未知的情况。有效地做到这一点的关键要求之一是能够尽可能快的收集大量相关的经验。

在过去的三年里,我一直是 Apache Airflow 的PMC成员,这是用于数据工程工作流使用最广泛的开源软件。除了让我深入了解各种技术挑战之外,这也意味着我收到了数以千计的数据工程师和科学家的电子邮件,他们寻求帮助来解决他们遇到的问题。通过这些对话,我对逆向工程问题有了特别的了解。事实上,孤立地看,每个问题确实看起来都是独一无二的。但总的来说,引人注目的范例出现了:同样普遍的问题一遍又一遍地出现。很长一段时间,我试图在Airflow范围内解决这些问题;当我达到Airflow的极限时,我开始设计Prefect。那是差不多两年前的事了。

今天,Prefect是我们在现代数据工程中观察到的范例所编码而成的。我们非常努力地构建了一个可以自动启用最佳实践的系统,即使对于以前从未见过的数据应用程序也是如此。要了解这是如何工作的,请考虑如何在不记住英语单词的每个组合的情况下立即识别“天空是蓝色”是对的还是“天空是蓝色的”是错误的。就像你的大脑对语言有着广泛的规则一样,即使我们无法准确指出是什么或为什么出错,Prefect也可以检测到什么时候出错。这种能力使逆向工程变得更加容易,并为我们的用户节省了大量的时间和解决了令人头痛的事情。

Prefect是一个简单的实践。负面工程问题并不总是费解、复杂或困难的。相反:它们通常是次要的、烦人的和重复的。因此,尽管它们总体的影响是惊人的,它们会从我们用来识别主要问题的筛子中过滤掉,在Prefect中,我们发现大多数数据应用程序都可以分解为一个个简单的结构,通过专注于这些基本构建块,我们可以解决逆向问题,而不会牺牲正向工程所需的任何功能或增加复杂性。我们的用户允许进行创作许可,他们可以以引人入胜且出人意料的方式组合这些块,而Prefect则充当了保护他们安全的灯塔。

在我们的核心框架中,提供了两个东西。一个是我们的开源框架,它像硬件商店一样运作:备有构建出色数据应用程序所需的所有组件。另一个是我们的平台逻辑,我们将其视为商店经理:引导用户使用正确的工具并确保他们的项目成功。通过这两个东西的共同作用,我们可以为正向和逆向的工程问题提供令人信服的解决方案。

从根本上说,我们喜欢解决用户讨厌的问题。

原文链接:Positive and Negative Engineering

 类似资料: