上市首日股价翻倍,这家公司对数据质量的把控不是盖的

上市首日股价翻倍,这家公司对数据质量的把控不是盖的

介绍

在Airbnb,我们一直都有数据驱动的文化。我们组建了一流的数据科学和工程团队,构建了行业领先的数据基础设施,并启动了许多成功的开源项目,包括Apache气流和Apache Superset。与此同时,Airbnb已经从一家以低速发展的初创企业转变为拥有数千名员工的成熟组织。在转型过程中,Airbnb经历了大多数公司都会遇到的典型挑战,包括那些影响数据仓库的挑战。

这篇文章探讨了Airbnb在高速发展期间所面临的数据挑战,以及我们为克服这些挑战所采取的措施。

背景

随着Airbnb从一家小型初创公司成长为今天这样的公司,很多事情都发生了变化。该公司开拓了新的业务领域,收购了许多公司,并显著改进了产品战略。同时,对数据的要求也发生了变化。例如,领导层对数据的及时性和质量有很高的期望,并更加注重成本和合规性。为了确保能够继续满足这些期望,显然需要对数据进行大量的投资。这些投资集中于解决与所有权、数据架构和管理办法相关的领域。

所有权

在本文描述的数据质量的现状之前,数据资产所有权主要分布在产品团队中,其中软件工程师或数据科学家是管道和数据集的主要所有者。然而,数据所有权的责任没有明确界定——这是问题出现时的一个瓶颈。

数据架构

在公司早期建立的大部分管道都是有机构建的,没有明确的质量标准和数据架构的总体策略。这导致了膨胀的数据模型,并给一小群工程师带来了巨大的操作负担。

管理办法

除了制定数据架构的总体策略外,Airbnb还需要一个集中的管理流程,使团队能够遵守这些策略和标准。

数据质量方案

2019年初,该公司对数据质量做出了前所未有的承诺,并拟定了一个全面的计划,以解决在数据方面面临的组织和技术挑战。Airbnb领导层签署了“数据质量方案”,这是一个大规模的项目,旨在使用新的流程和技术,从头开始重建数据仓库。

在制定提高数据质量的综合策略时,我们首先提出了5个主要目标:

  • 确保所有重要数据集的所有权清晰
  • 确保重要数据始终满足SLA要求
  • 确保管道建设符合高质量标准,采用最佳实践
  • 确保重要的数据是可信的和定期验证的
  • 确保数据记录良好且易于发现

以下的部分详细介绍了推进这项工作所采用的具体方法,重点介绍了我们的数据工程组织、体系结构和最佳实践,以及我们用于管理数据仓库的流程。

组织

一旦数据质量方案的势头达到一个临界点,领导层重新调整公司有限的数据工程资源,启动项目,这足以让Airbnb最关键数据的进展不受阻碍。然而很明显,我们需要团结起来,大幅发展Airbnb的数据工程社区。以下是我们为促进发展所做的改变。

数据工程的作用

多年来,Airbnb都没有正式的数据工程师职位。大多数数据工程工作是由数据科学家和软件工程师完成的,他们被以各种不同的名字招募。这种错位使得数据工程相关岗位的招聘非常具有挑战性,并在职业发展方面造成了一些混乱。为了解决这些问题,我们重新引入了“数据工程师”这个职位,作为工程组织等级中的一个专业化角色。新的职位要求数据工程师在多个领域具有很强的能力,包括数据建模、管道开发和软件工程。

组织结构

我们还致力于建立一个分散的组织结构,该结构由数据工程pod组成(而不是单一的集中式数据工程组织)。这个模型确保数据工程师与消费者的需求和产品的方向保持一致,同时确保工程师的临界质量(3个或更多)。团队规模对于提供指导/领导机会、管理数据操作和填补人员缺口非常重要。

为了补充分布式数据工程师,我们成立了一个中央数据工程团队,负责开发数据工程标准、工具和最佳实践。该团队还管理与任何产品团队都不匹配的全局数据集。

社区

我们创建了新的沟通渠道来更好地连接数据工程社区,并建立了用于在整个组织内进行决策的框架。我们创建了以下小组来解决这些差距:

数据工程论坛—每月为数据工程师举行的全体会议,目的是传达信息并收集来自更多社区的反馈。

数据架构师工作组—由全公司的高级数据工程师组成。负责制定主要的架构决策,并对Midas认证进行评审(见下文)。

数据工程工具工作组—由全公司的数据工程师组成。负责开发数据工程工具和工作流程的愿景。

数据工程领导小组—由数据工程经理和最资深的个人贡献者组成。负责组织和招聘决策。

招聘

我们改进了数据工程师的招聘流程,以扩大我们的数据工程业务。在我们作出影响组织未来几年的决定时,我们特别注意请高级领导提供指导,这是一项持续的工作。

体系结构和最佳实践

下一步是根据一组通用的架构原则和最佳实践来指导我们的工作。我们为数据建模、操作和管道实现的技术标准提供了全面的指导方案,下面将对此进行讨论。

数据模型

该公司最初的分析基础“core_data”是一个为便于使用而优化的星型模式数据模型。它由中心团队构建并拥有,它包含了许多不同主题领域的资源。这一模式在2014年非常有效;然而,随着公司的成长,越来越难管理。基于此学习,很明显,我们未来的数据模型应该经过深思熟虑的设计,并避免集中所有权的陷阱。

与此同时,该公司构建了Minerva,这是一个被广泛采纳的平台,它对度量和维度进行编目,并计算这些实体之间的连接(以及其他功能)。考虑到Minerva的广泛功能和大规模采用,Minerva显然应该继续在我们的数据架构中扮演中心角色,我们的数据模型应该发挥Minerva的优势。

基于这一背景,我们设计了新的数据模型,并遵循了两个关键原则:

  1. 表必须规范化(在合理范围内),并依赖尽可能少的依赖项。Minerva负责跨数据模型的连接。
  2. 描述类似领域的表被分组到主题领域中。每个主题领域都必须有一个与单个团队范围自然一致的所有者。所有权应该是显而易见的。

规范化数据和基于主题领域的数据模型在数据建模世界中并不是新的概念,它们最近已经有了重大的复兴(请参阅其他组织最近关于“数据网格”体系结构的博客文章)。我们发现这种哲学特别有吸引力,因为它解决了我们以前的挑战,并且与我们的数据组织结构非常吻合。

数据技术

我们还对我们关于管道执行的建议作了全面修改。这将在下面讨论。

Spark and Scala

当我们开始数据质量方案时,Airbnb的大多数关键数据都是通过SQL编写并通过Hive执行的。这种方法在工程师中并不受欢迎,因为SQL缺少函数式编程语言的优点(例如代码重用、模块化、类型安全等)。与此同时,Spark已经成熟,公司在这个领域的专业知识也在不断增长。由于这些原因,我们转向Spark,并将Scala API作为我们的主要接口。同时,我们加大了对通用Spark包装器的投资,以简化读/写模式和集成测试。

测试

我们需要改进的另一个领域是数据管道测试。这减慢了迭代的速度,并且使得外部人员很难安全地修改代码。我们需要在构建管道时进行全面的集成测试,这些测试作为持续集成过程的一部分运行。

数据质量检查

我们还构建了用于执行数据质量检查和异常检测的新工具,并要求在新的管道中使用它们。异常检测在预防新管道质量问题方面尤为成功。

操作

数据操作是另一个改进的机会,所以我们确保在这个领域设置严格的要求。所有重要的数据集都需要有一个着陆时间的SLA,管道需要配置寻呼机任务。

治理过程

当我们开始重建数据仓库时,很明显,我们需要一种机制来确保数据模型之间的内聚性,并在团队之间维护一个高质量的条。我们还需要一种更好的方式向最终用户展示我们最值得信赖的数据集。为此,我们启动了Midas认证流程(如下图所示)。

Midas认证过程,如下所述。

Midas认证过程图表,在下面详细描述。

Midas流程要求利益相关者在构建管道之前首先对设计规范进行调整,这是通过Spec文档完成的,该文档提供了对度量和维度、表模式、管道图的外行描述,并描述了不明显的业务逻辑和其他假设。一旦规范被批准,数据工程师就会根据商定的规范建立数据集和管道。然后审查产生的数据和代码,并最终授予认证。认证标志在所有面向消费者的数据工具中都是可见的,认证数据在数据可发现性工具中具有优先级。

我们将在以后的文章中提供更多关于Midas认证过程的细节。

问责制

最后,我们创建了新的机制,以确保与数据质量相关的问责制。我们更新了报告数据质量缺陷的流程,并创建了每周一次的缺陷回顾会议来讨论高优先级的缺陷,并调整纠正措施。我们还要求团队将数据管道sla纳入他们的季度OKR计划中。

结论

随着公司的成熟,数据仓库的需求会发生显著变化,为了满足Airbnb不断变化的需求,我们成功地重建了数据仓库,重振了数据工程社区。这是作为公司范围内的数据质量方案的一部分。

数据质量方案通过在每个级别处理问题的全方面方法实现了这一新生,包括恢复数据工程功能,为该角色设置较高的技术门槛,并为该工程专业建立一个社区,另外还成立了一个新的团队来开发数据工程专用工具。我们还开发了一个非常固执的体系结构和技术标准,并启动了Midas认证流程,以确保所有新数据都符合该标准。最后,通过对数据管道所有者设定更高的期望,特别是对操作和错误解决,提升了责任级别。

在这一点上,数据质量方案正全力推进,但仍然有大量的工作要做。我们正在加速对我们的数据基础的投资,设计我们的下一代数据工程工具和工作流程,并制定战略,将我们的数据仓库从日常批处理范式转变为接近实时的。我们正在积极招聘数据工程领导者,他们将开发这些架构并推动其完成。如果你想帮助我们实现这些目标,请查看Airbnb的招聘页面。

原文作者:Jonathan Parks, Vaughn Quoss, Paul Ellwood
翻译作者:过儿
美工编辑:过儿
校对审稿:Dongdong
原文链接:https://medium.com/airbnb-engineering/data-quality-at-airbnb-e582465f3ef7