分布式数据网格(2019)

2021-03-20 09:01:20

许多企业正在投资他们的下一代数据湖,希望在规模中民主化数据,以提供商业洞察力,兼而有之进行自动化智能决策。基于Data Lake架构的数据平台具有常见的故障模式,导致尺度不足的填充。要解决这些故障模式,我们需要从湖泊的第12个划分的范式转移,或其前任数据仓库。我们需要转移到从现代分布式架构中汲取的范例:考虑域作为第一类关注的域,应用平台创建自助数据基础架构,并将数据视为产品。

成为数据驱动的组织仍然是我与众不同的许多公司的最重要战略目标之一。我的客户非常了解成为智能授权的好处:根据数据和超个性化提供最佳客户体验;通过数据驱动的优化降低运营成本和时间;并为趋势分析和商业智能提供员工超级力量。他们一直在大量投资建立数据和智能平台等推动者。尽管在建立此类启用平台上增加了努力和投资时,但组织仍然发现结果中间。

我同意,组织在转型方面面临多方面的复杂性,以成为数据驱动;从几十年的遗产系统中迁移,遗产文化抵抗依赖数据,竞争业务优先事项。然而,我想与您分享的是一种建筑视角,支持许多数据平台举措的失败。我展示了如何在数据域中建立分布式架构的过去十年的学习,到数据领域;我将介绍我称之为数据网格的新企业数据架构。

在阅读之前我的询问是暂时暂停深度假设和偏见,即传统数据平台架构的当前范式建立;将超越单片和集中数据湖泊的可能性转移到有意分布的数据网架构;拥抱曾经存在的现实,无处不在和分布式的数据性质。

几乎每个我合作的客户都是规划或建立第三代数据和智能平台,同时承认过去几代的故障:

第一代:专有企业数据仓库和商业智能平台;具有大型价格标签的解决方案,使公司具有同样大量的技术债务;技术债务成千上万的明文ETL工作,表格和报告,只有一小组专业人员理解,导致对业务的欠现积极影响。

第二代:大数据生态系统,带有数据湖的银弹;复杂的大数据生态系统和长期专业数据工程师的中央团队运营的长期运行批次作业已经创建了最有利于R&amp的Pocket的数据湖怪物;承诺和实现的。

第三个和当前生成数据平台或多或少类似于上一代,具有现代扭曲朝向(a)流,用于使用诸如kappa,(b)统一数据变换的批处理和流处理的架构进行实时数据可用性对于Apache Beam等框架,以及(c)完全拥抱基于云的托管服务,用于存储,数据流水线执行引擎和机器学习平台。很明显,第三代数据平台正在寻址前几代的一些间隙,例如实时数据分析,以及降低管理大数据基础架构的成本。然而,它受到了许多导致前几代失败的潜在特征。

解压缩所有几代数据平台携带的潜在限制,让&#39看看它们的架构及其特征。在此写作中,我使用Internet媒体流媒体业务域,例如Spotify,SoundCloud,Apple iTunes等。作为阐明一些概念的示例。

在30,000英尺,数据平台架构看起来如下图1;一个集中的架构,其目标是:

从企业的所有角落进行摄取数据,从运营业务的运营和交易系统和域名,或增加企业知识的外部数据提供商。例如,在媒体流业务中,数据平台负责摄取大量数据:'媒体播放器性能',他们的'用户与玩家互动'他们扮演的歌曲''艺术家他们关注'以及标签和艺术家'这项业务已经在板上,'金融交易'与艺术家,外部市场研究数据如'客户人口统计学'信息。

Cleanse,Emich,并将源数据转换为可靠的数据,可以解决各种消费者的需求。在我们的示例中,其中一个转换将单击用户交互的点击次数与丰富的会话丰富,与用户的详细信息一起。这次尝试将用户的旅程和行为重建为聚合视图。

为各种需求提供各种消费者的数据集。这种范围从分析消耗探索了寻找洞察力的数据,基于机器学习的决策,到总结业务表现的商业智能报告。在我们的媒体流式媒体示例中,该平台可以通过诸如Kafka等分布日志接口(如Kafka)的分布式日志接口附近的关于地球媒体播放器的高质量信息,或者服务于特定艺术家的静态总视台。向艺术家和标签推动金融付款计算。

IT'是一份公认的惯例,即单片数据平台主机和拥有逻辑上属于不同域的数据,例如, '播放活动''销售kpis&#39 ;,'艺术家&#39 ;,'相册&#39 ;,'标签&#39 ;,&#39 ;音频''播客&#39 ;,'音乐活动'等;来自大量不同域的数据。

虽然在过去十年中我们已成功应用域驱动的设计和界限上下文,但我们在很大程度上忽略了数据平台中的域概念。我们已将域导向的数据所有权从域导向数据所有权转移到集中域无关域数据所有权。我们为自己创建最大的全部纪念碑,我们为自己的大数据平台创建了最大的雄心单形。

虽然这个集中式模型可以适用于具有更简单域的组织,而具有较少数量的多样化型案例,但它因富裕域名的企业而失败,大量来源和多种消费者。

架构上有两个压力点和集中式数据平台的组织结构,通常导致其失败:

无处不在的数据和源极化:随着更多数据变得普遍可用,能够在一个平台控制下在一个平台下的一个地方将其消耗并在一个地方协调它。想象一下,只是在&#39的领域;客户信息',越来越多的源源内外,组织的界限内外,提供有关现有和潜在客户的信息。假设我们需要在一个地方进行摄取和存储数据以从各种来源获得价值,这将限制我们响应数据源扩散的能力。我认识到数据用户,如数据科学家和分析师,以处理具有低开销的多样化数据集,以及需要将操作系统数据使用与用于分析目的的数据分开。但我建议现有的集中解决方案不是丰富域名的大型企业的最佳答案,并不断增加新来源。

组织'创新议程和消费者扩散:组织'需要快速实验引入了从平台中消耗数据的更多使用情况。这意味着可以满足测试和学习创新循环的数据 - 聚合,投影和切片上越来越多的转换。满足数据消费者需求的长期响应时间已经历来是组织摩擦点,并且在现代数据平台架构中仍然如此。

虽然我不想让我的解决方案刚刚离开,但我需要澄清我' m不是倡导经常隐藏在操作系统的肠道中的碎片化的沉积域的围绕的数据;困难的域数据很难发现,弄清楚和消费。我不倡导多个碎片数据仓库,这些数据仓库是多年累计技术债务的结果。这是一个担心行业领导者的魅力。但我认为对这些意外孤独的无法访问数据的响应不是创建集中式数据平台,其中具有拥有和策划来自所有域的数据的集中团队。由于我们学习和上面展示,它并非组织规模。

传统数据平台架构的第二个故障模式与我们如何分解架构有关。 10,000英尺放大到集中式数据平台,我们发现的是围绕摄取,清洁,聚合,服务等机械功能的建筑分解。组织中的建筑师和技术领导者在响应平台的增长时分解了架构。如前一节所述,需要登机新来源,或响应新的消费者需要平台增长。建筑师需要找到一种方法来扩展系统,将系统缩小到其建筑Quanta。建筑物进化架构中所述的建筑量子是独立可展开的部件,具有高功能内聚力,其包括系统所需的所有结构元件。将系统破解到其建筑量子的动机是创建独立的团队,每个都可以构建和操作建筑量子。并行化这些团队的工作,以达到更高的操作可扩展性和速度。

鉴于前几代数据平台的影响'架构,架构师将数据平台分解为数据处理阶段的管道。在非常高水平的管道实现处理数据的技术实现周围的功能凝聚力;即摄取,准备,聚合,服务等能力。

虽然该模型提供了一些规模,但通过将团队分配给流水线的不同阶段,虽然将团队分配给流水线的不同阶段,但它具有速度的固有限制,可以减慢功能传递。它在管道的阶段之间具有高耦合,以提供独立的特征或值。它' s正交地分解到变化轴。

让'查看我们的媒体流媒体示例。 Internet媒体流平台围绕其提供的媒体类型具有强大的域构造。他们经常与&#39开始他们的服务;歌曲'和#39;专辑'然后延伸到'音乐事件&#39 ;,'播客&#39 ;,'无线电显示'电影&#39 ;等。启用单个新功能,例如对&#39的可见性;播客播放速率'需要改变管道的所有组件。团队必须引入新的摄取服务,新的清洁和准备以及聚集体,以便观看播客播放费率。这需要在团队中执行不同组件的实施和发布管理。许多数据平台提供基于通用和基于配置的摄取服务,可以应对扩展,例如添加新来源,或者修改现有源以最小化引入新源的开销。但是,这不会删除从消费者角度引入新数据集的结束到最终依赖管理。虽然在纸张上,管道架构可能看起来好像我们已经实现了一个管道阶段的架构量子,但在实践整个管道中,即单片平台,是最小的单元,必须改变为满足新功能的迎合:解锁新数据集并使其可用于新的或现有的消费。这限制了我们响应新的消费者或数据来源来实现更高速度和规模的能力。

今天的第三个故障模式' S数据平台与我们如何构建构建和拥有平台的团队有关。当我们缩放足够接近以观察构建和运营数据平台的人的生命时,我们发现的是一组超级专业数据工程师均来自组织的运营单位;其中数据源或其使用的地方并投入行动和决策。数据平台工程师不仅是宿舍的,而且还根据他们的大数据工具的技术专长分开并分组成一个团队,通常缺乏业务和域名知识。

我个人不要羡慕数据平台工程师的生活。他们需要消耗没有激励的团队的数据,提供有意义,真实和正确的数据。它们对生成数据的源域几乎没有了解,并缺乏团队中的域名专业知识。他们需要为多元化的需求,运营或分析提供数据,而无需清楚地了解数据的应用和访问消费领域和专家的专家。

在媒体流域中,例如,在源端,我们有跨函数'媒体播放器'为用户如何与他们提供的特定功能进行交互,提供信号的团队。 '播放歌曲事件&#39 ;,'购买活动&#39 ;,'播放音频质量'等;另一端位于消费者交叉功能团队,如'歌曲推荐'团队,'销售团队'报告销售销售KPI,'艺术家支付团队'谁根据播放事件计算和支付艺术家,等等。可悲的是,在中间坐在数据平台团队中,通过纯粹的努力为所有来源和消费提供合适的数据。

实际上,我们发现的是断开连接的来源团队,令人沮丧的消费者在数据平台团队积压的顶部和一个过度拉伸的数据平台团队中战斗。

我们创建了一个不扩展的架构和组织结构,并且不会提供创建数据驱动组织的承诺值。

那么上面讨论的失败模式和特征的答案是什么?在我看来,范式转变是必要的。在尺度建立现代分布式架构的工具交叉口的范式转变;技术产业的技术以加速率采用,并创造了成功的成果。

我建议下一个企业数据平台架构是分布式域驱动架构的融合,自助式平台设计和数据的产品思维。

虽然这可能听起来像一个句子中的许多流行语,但是这些技术中的每一个都对现代化操作系统的技术基础进行了特定和令人难度的积极影响。让我们深深潜入我们如何将这些学科应用于数据世界,以逃避目前的范式,从多年的传统数据仓库架构中进行。

埃里克·埃文斯' S Book Domain驱动的设计深受现代建筑思维的深刻影响,因此是组织建模。它通过将系统分解成在业务域功能围绕的分布式服务中来影响微服务架构。它从根本上改变了球队的形式,使团队能够独立和自主地拥有域功能。

虽然我们在实施运营能力时,我们已经采用了域导向的分解和所有权,但奇怪的是,我们在数据方面忽略了商业领域的概念。 DDD在数据平台架构中最接近的应用是用于源操作系统,以发出其业务域事件和单一的数据平台来摄取它们。然而,超出了摄取的点域的概念和不同团队的域数据的所有权丢失了。

域界上下文是一个奇妙的强大的工具来设计数据集的所有权。 Ben Stopford' s数据二分术文章通过流解压缩域数据集的共享概念。

为了分散单片数据平台,我们需要扭转我们如何考虑数据,它的位置和所有权。而不是将数据从域流入中央数据湖泊或平台,域需要以易于消耗的方式主持并提供域数据集。

在我们的示例中,而不是想象从媒体播放器中流入的数据,以为集中团队接收的某种集中位置,为什么不想出一个播放器域拥有并为其数据集提供任何团队的访问,以便在下游的任何目的访问任何团队。数据集实际居住的物理位置以及流程如何,是&#39的技术实现;球员域名'物理存储肯定是一个集中式基础架构,如亚马逊S3存储桶,但播放器数据集内容和所有权都与域生成它们。同样在我们的示例中,'建议书和#39;域以适合其应用程序的格式创建数据集,例如图表数据库,同时消耗播放器数据集。如果还有其他域,如'新艺术家发现域'找到'推荐域名'图数据集有用,他们可以选择拉出和访问。

这意味着我们可以在将它们转换为适合于该特定域的形状中的不同域中重复数据,例如,与相关艺术家图形的时间序列比赛活动。

这需要将我们的思想从推动和摄取,传统上通过ETL和最近通过事件流,在所有域中的服务和拉动模型中转移到。

域导向数据平台中的架构量子,是域而不是管道阶段。

有些域自然对齐数据源自源。源域数据集代表业务的事实和现实。源域数据集捕获与原始操作系统,现实系统的操作系统映射的数据捕获。在我们的业务的示例事实中,如'用户如何与服务互动'或' onboard标签的过程'导致创建域数据集,如'用户点击流''音频播放质量流'和' onboared标签'这些事实是最着名的,由坐在原产地的操作系统产生。例如,媒体播放器系统最为了解'用户点击流'

在成熟和理想的情况下,运营系统和IT' S团队或组织单位不仅负责提供业务能力,还负责为其业务域的真相作为源域数据集。在企业缩放中,域概念和源系统之间从来没有一个映射。

......