AWS Step Functions 协调我们的管道
我们的云数据仓库
報告,報告!
我们的无服务器方法加速了我们的分析,这对未来的工作意味着什么
分析在 Leadfeeder 中发挥着重要作用。
我们很自豪能够利用业务产生的大量数据来做出明智的决策。
在我们的 AWS 基础设施中,我们开发了数据仓库解决方案并采用无服务器范例来支持分析。
它可以节省基础设施成本,并使我们能够更有效地开发、维护和发展我们的管道。
为了满足报告要求,我们使用了基于云的商业智能解决方案 Tableau Online。
那么,“无服务器”是什么意思?
根据 AWS:
“无服务器是一种描述服务、实践和策略的方式,它使您能够构 购买电话号码列表 建更敏捷的应用程序,以便您能够更快地创新和响应变化。借助无服务器计算,基础设施管理任务(如容量配置和修补)由 AWS 处理,因此您可以专注于编写为客户提供服务的代码。AWS Lambda 等无服务器服务具有自动扩展、内置高可用性和按价值付费的计费模式。Lambda 是一种事件驱动的计算服务,使您能够运行代码以响应来自 150 多个本机集成的 AWS 和 SaaS 源的事件 - 所有这些都无需管理任何服务器。”
听起来不错,不是吗?
不再需要基础设施管理来专注于重要的事情——处理和分析数据来指导业务和产品开发。
但实际上,事情并没有那么简单。我们的数据量非常大,大部分来自产品数据,处理这些数据带来了一些挑战。
我们的无服务器管道
AWS 无服务器管道图
如上图所示,我们用于数据处理的主 要组件是AWS Glue和AWS Lambda。

Glue 本质上是Spark的托管服务,而 Lambda 提供无服务器计算。
它们两者都使我们能够快速开发和部署代码。
例如,使用 Glue,无需管理集群,这是一个巨大的优势。
管理 Spark 集群是一项非常繁重的工作,最终需要团队专注于监控、维护节点以及确保正确提交作业。
Glue 允许我们编写作业、指定容量+一些额外的配置参数,然后运行该作业。
当然,这一切都有几点需要注意的。
执行作业时,AWS 会自动配置集群,而该集群可能需要一些时间才能可用。对于 Glue 的初始版本来说,这是非常痛苦的,但 AWS 在最新版本(撰写本文时为 2.0)中以某种方式缓解了这个问题。
我们确实失去了传统 Spark 作业提交所提供的细粒度控制。然而,考虑到保持所有作业提交参数与集群功能和可用性保持一致的复杂性,这似乎更像是一种优势。
AWS Glue 的另一个有趣的功能是数据目录。
我们可以通过这个元数据存储库轻松建立与 Hive Metastore 的并行,它可以保存来自不同系统(包括 AWS S3)的数据源的模式和连接信息。
为了更新这个存储库,Glue 包含一个爬虫,它可以通过扫描源系统自动维护模式。
为了在工作中使用这些数据源,我们可以轻松地引用目录。
data = glueContext.create_dynamic_frame.from_catalog(
database="mydb",
table_name="mytable")
这使得我们的 Glue 作业中的代码与数据源无关。