2017年的数据工程生态系统
自从我们在2014年推出Insight Data Engineering Fellows计划以来,我们与数据行业的75多个团队建立了联系,讨论了顶级团队(如Facebook,Airbnb,Slack,纽约时报,LinkedIn,亚马逊和Tesla)工程师面临的最新挑战。此外,我们不断增长的校友网络现在有着150多名工程师和750多名数据科学家 ,经常在Insight社区分享他们的经验。感谢这个强大的社区,我们有一个探索数据领域技术新兴模式的独一无二的基地。
我们不断探索将这些知识传递给下一代数据工程师和扩散的更多数据社区的方法,开发了更为互动的数据工程生态系统图,该迭代提供了数据管道核心组件的简化视图,同时更深入地探索了分布式系统技术的复杂世界。
数据工程趋势
通过更新此地图,我们已经反映了当前数据团队可用的工具和服务的最新变化。强调了一些值得注意的趋势。
科技融合:Kafka 和 Spark
尽管有着数量巨大的工具被引入数据工程领域,似乎有两个显着的趋同点。
在众多可用的排队技术中,Kafka 是最广泛采用的。
自从LinkedIn于2011年将其基于日志的解决方案发布给开源社区以来,Kafka的流行程度一直在稳步上升,现在已成为流媒体数据的默认摄取工具。
除了流媒体数据之外,Kafka越来越多地被用作许多公司的微服务的集中式消息总线 。除了让人印象深刻的高吞吐量、高可靠性和与许多其他流行技术的集成之外,其广为流行的原因�就是易于使用。
其他广为传播的技术有Apache Spark,通用的分布式处理框架。
自从Hadoop早期垄断“大数据”以来,出现了许多有能力的框架,Spark已经巩固了其处理大规模数据的“默认”工具的地位。
Spark已经被证明是一个功能全面的工具,从传统批处理到在线机器学习模型的一切工作都能胜任。 Spark高水平的开发,像DataFrames和SQL一样结构化的APIs,以及流和图形库使得它可以使用代码库解决许多实际问题。和Kafka一样,它有着很棒的社区支持,而且很多新的和现有的项目正在与Spark集成。
虽然Kafka和Spark是受欢迎的选择,但肯定不适合每一种用例。调查每个工具的优点,缺点和替代方案很重要。我们经常在Insight强调,请务必选择正确的工具!
架构趋势:与Kappa统一
除了特定技术的趋势,我们注意到许多团队朝着理想化的Kappa架构前进。与Lambda方法相反,许多技术现在采用的批处理问题只是流处理问题的一个子集。
虽然还不是最前沿的,但像Flink , Apex和Gearpump这样的技术正在推动向统一批处理和流处理框架的愿景前进。即使是Spark,随着结构化流的发布,现在提供了一个单一的界面来操作批量和流数据。
从某种意义上说, Apache Beam项目是这些努力的结果。基于Google的数据流模型,Beam旨在创建一个统一的API,允许开发人员编写与其下的处理引擎无关的应用。
随着Apache Beam等统一处理框架和项目的出现,Kappa架构可能会快速被采用。不管架构如何,随着处理框架的不断改进和发展,我们期待看到批处理和流处理之间的界线仍然模糊。
托管服务增加
虽然稍有争议,“无服务器”的产品也是一个发展趋势。“纽约时报”等数据团队越来越希望直接架构数据管道,而不用去管理云基础设施。虽然这些服务的生产用例相对有限,但它们提供的功能正在不断改进。通过像AWS S3,Redshift,Athena,EMR,Kinesis和Lambda以及GCP的BigQuery,Pub / Sub和DataProc这样的服务,主要的云提供商正在为这些全方位服务的解决方案提供投资。
类似于从“内部”服务器到云基础设施的过渡,数据团队可能会越来越多地利用数据服务。同时,部分自助服务和部分托管的混合架构将变得越来越普遍。
云提供商的趋势:AWS与GCP
过去几年的另一个显著变化是亚马逊网络服务(AWS)面临的竞争增多。虽然像Microsoft Azure,IBM,DigitalOcean和Rackspace这样的平台已经存在了一段时间,但似乎没有人可以挑战AWS在2006年发布的先行优势。
然而,Google一直为内部用户开发自己的复杂基础架构。事实上,Google一直以内部开拓分布式系统而闻名,但选择发布白皮书而不是开源。随着对谷歌云平台(GCP)的大量投入,他们已推出Google Infrastructure For Everyone Else (GIFEE) 的托管服务。
在过去几年中,GCP取得了长足的进步,迅速成为一个有利的竞争者。虽然GCP与AWS相比并不能提供全面的服务,但越来越多的顶级团队(如Spotify)正在进行转换 。也许云提供商的领域最终会减少,但是在不久的将来我们会看到健康的竞争。
前景
虽然没有人知道数据领域的未来如何,但有一点很清楚——新技术将使我们能够进一步利用我们的数据。无论是新技术和服务的出现,还是现有的功能的增加,开发人员都将拥有更丰富的工具来构建数据管道和平台。
数据工程师仍将是令人兴奋的职业 。