这篇博文由 BMW Group 的 Martin Zoellner、Thomas Ehrlich 和 Veronika Bogusch 共同撰写。BMW Group 和亚马逊云科技于 2020 年宣布达成全面**战略合作**。本次合作的目标是通过将数据和分析置于决策中心,进一步加快 BMW Group 的创新步伐。本次合作的一个关键要素是进一步开发 BMW Group 的云数据中心(CDH)。这是在云端管理全公司数据和数据解决方案的中央平台。在 **re:Invent 2019上**,BMW 和亚马逊云科技展示了新的云数据中心平台,他们先是大致介绍了不同的数据平台原型,然后介绍了构建 BMW Group 云数据中心的过程。要了解有关云数据中心的更多信息,请参阅 **BMW Cloud Data Hub: A reference implementation of the modern data architecture on Amazon**(BMW 云数据中心:Amazon 上现代数据架构的参考实施)。
在本次合作中,BMW Group 正在将跨多个数据域的数百个数据来源迁移到云数据中心。其中一些来源与 **BMW Financial Services** 有关。
在这篇博文中,我们将讨论 **Amazon Data Lab** 如何使用 亚马逊云科技的云数据中心,帮助 BMW Financial Services 为欧洲 BMW 市场之一构建监管报告应用程序。
# 解决方案概览
在监管报告背景下,BMW Financial Services 处理包含**个人身份信息**(PII)的关键金融服务数据。其需要每月向欧洲国家监管机构之一提供针对我们财务数据的深入分析,而且在处理 PII 数据时,还需要遵守 **Schrems II** 和 **GDPR** 法规。这要求在将 PII 加载到云数据中心时对其进行假名化,并且必须以假名的形式对其进行进一步处理。有关假名化过程的概述,请查看 **Build a pseudonymization service on Amazon to protect sensitive data**(在 Amazon 上构建假名化服务以保护敏感数据)。
为了精确高效地满足这些要求,BMW Financial Services 决定与 Amazon Data Lab 合作。Amazon Data Lab 有两种服务:Design Lab 和 Build Lab。
# Design Lab
Design Lab 是一项1到2天的活动,适用于需要真实架构建议但尚未准备好构建的客户,这些建议基于 Amazon 专业知识。以 BMW Financial Services 为例,在开始构建阶段之前,关键是让所有利益相关方聚集在一起,记录各方(从各种数据来源的所有者到将使用该平台进行分析并获得业务见解的最终用户等)提出的可能影响数据平台的所有功能性和非功能性要求。在 Design Lab 的工作范围内,我们讨论了三个使用案例:
**▌监管报告**
BMW Financial Services 最重要的任务是监管报告使用案例,这涉及到收集与计算向国家监管机构申报的数据和报告。
**▌本地数据仓库**
对于此使用案例,我们需要计算和存储项目期间将会定义的所有关键绩效指标(KPI)和关键价值指标(KVI)。我们需要存储历史数据,但需要遵守 GDPR 指令应用假名化流程。此外,每天都必须通过 Tableau 可视化工具访问历史数据。关于结构,有必要定义两个级别(至少):一个是合同级别,用于证明所有关键绩效指标的计算是合理的,另一个是汇总级别,用于优化修复。在应用程序中限制使用个人数据,但对于获得授权的使用模式,必须可以进行重新识别。
**▌会计明细**
此使用案例基于 BMW 的会计工具 IFT,该工具在合同级别提供来自所有当地市场应用程序的会计余额。它必须每月至少进行一次。但是,如果在结算期间发现了 IFT 上的一些问题,我们必须能够重启并删除之前的结果。月末结算完成后,此使用案例必须保留当月生成的最后一个会计余额版本并进行存储。同时,所有会计余额版本都必须可供其他应用程序访问以进行查询,并且能够检索24个月内的信息。
![0c2ec5e273209dc784cd3cfde7016ade.png](https://dev-media.amazoncloud.cn/af6ae396022c43d295ddde38ceeb5fa7_0c2ec5e273209dc784cd3cfde7016ade.png "0c2ec5e273209dc784cd3cfde7016ade.png")
基于这些要求,其在 Design Lab 期间开发了以下架构。
**此解决方案包含以下组件**:
1. 为三个使用案例提供数据的主数据来源已经在云数据中心中公布。云数据中心使用 **Amazon Lake Formation** 资源链接向使用者账户授予对数据集的访问权限。
2. 对于标准的定期提取、转换和加载(ETL, Extract, Transform, and Load)作业,如果涉及到转换数据类型、根据数值数据创建标签或者根据标签创建布尔值标记等操作,使用 **Amazon Glue** ETL 作业。
3. 对于历史的 ETL 作业或更复杂的计算,例如账户详细信息使用案例(可能涉及与自定义配置和调整的大量关联),建议使用 **[Amazon EMR](https://aws.amazon.com/cn/emr/?trk=cndc-detail)**。这使您可以在精细级别上控制集群配置。
4. 要存储可以实现重新处理输入或重新运行失败作业等功能的作业元数据,建议构建数据注册表。数据注册表的目标是为提取到数据湖中的所有数据创建集中清单。您可以触发基于计划的 **Amazon Lambda** 函数,在集中式元数据存储中云数据中心的语义层上注册数据登陆。建议为数据注册表使用 **[Amazon DynamoDB](https://aws.amazon.com/cn/dynamodb/?trk=cndc-detail)**。
5. **[Amazon Simple Storage Service](https://aws.amazon.com/cn/s3/?trk=cndc-detail)([Amazon S3](https://aws.amazon.com/cn/s3/?trk=cndc-detail))** 用作存储机制,支持使用数据管理框架 Apache Hudi 的监管报告使用案例。**Apache Hudi** 对我们的使用案例很有用,因为我们需要开发数据管道,满足对记录级别的插入、更新、更新插入和删除功能的需求。[Amazon EMR](https://aws.amazon.com/cn/emr/?trk=cndc-detail) 和 Amazon Glue 作业通过 Hudi 连接器以及 **[Amazon Athena](https: //aws.amazon.com/cn/athena/?trk=cndc-detail)** 和 **[Amazon Redshift](https://aws.amazon.com/cn/redshift/?trk=cndc-detail) Spectrum** 等查询引擎支持 Hudi 表。
6. 在监管报告 S3 存储桶的数据存储过程中,您可以在 **Amazon Glue Data Catalog** 中填充所需的元数据。
7. Athena 提供了一个临时查询环境,用于使用标准 SQL 对存储在 [Amazon S3](https://aws.amazon.com/cn/s3/?trk=cndc-detail) 中的数据进行交互式分析。它与 Amazon Glue Data Catalog 进行了集成,具备开箱即用的特点。
8. 对于数据仓库使用案例,需要首先对数据进行反规范化,以创建支持优化分析查询的维度模型。为了进行这种转换,我们使用 Amazon Glue ETL 作业。
9. **[Amazon Redshift](https://aws.amazon.com/cn/redshift/?trk=cndc-detail)** 中的维度数据集市可以支持控制面板和自助报告需求。[Amazon Redshift](https://aws.amazon.com/cn/redshift/?trk=cndc-detail) 中的数据根据业务需求划分为多个主题区域,通过维度模型可以进行跨主题区域分析。
10. 作为创建 [Amazon Redshift](https://aws.amazon.com/cn/redshift/?trk=cndc-detail) 集群的副产品,可以使用 Redshift Spectrum 访问该架构的监管报告存储桶中的数据。它充当了访问更精细数据的前端,而无需将其实际加载到 [Amazon Redshift](https://aws.amazon.com/cn/redshift/?trk=cndc-detail) 集群中。
11. 提供给云数据中心的数据包含假名化的个人数据。但是,在 Tableau 上可视化数据或者在生成 CSV 报告时,需要能够对假名化的列重新进行个性化设置。**Athena** 和 [Amazon Redshift](https://aws.amazon.com/cn/redshift/?trk=cndc-detail) 均支持 **Lambda UDF**,它可用于访问云数据中心 PII API,以便在将假名化的列呈现给最终用户之前对其重新进行个性化设置。
12. Athena 和 [Amazon Redshift](https://aws.amazon.com/cn/redshift/?trk=cndc-detail) 均可通过 **JDBC(Java Database Connectivity,Java 数据库连接)** 进行访问,为数据使用者提供访问权限。
13. 您可以在 Amazon Glue 中使用 Python shell 作业,对任一分析解决方案运行查询,将结果转换为所需的 CSV 格式,然后将它们存储到 BMW 受保护的文件夹中。
14. 在本地部署的任何商业智能(BI)工具都可以连接到 Athena 和 [Amazon Redshift](https://aws.amazon.com/cn/redshift/?trk=cndc-detail),并可利用它们的查询引擎执行任何繁重的计算,然后再接收提供给控制面板的最终数据。
15. 对于数据管道编排,我们建议使用 **Amazon Step Functions**,因为它具有低代码开发体验,并且与讨论的所有其他组件全面集成。
以上述架构为长期目标状态,我们结束了 Design Lab,并决定返回 Build Lab 以加快解决方案的开发。
# 为 Build Lab 做好准备
继 Design Lab 之后的 Build Lab 的典型准备工作包括确定一些常见使用案例模式示例,通常是更复杂的示例。为了最大限度地确保 Build Lab 的成功,我们将长期目标架构缩减为一部分组件,它们能够满足这些示例的要求,并且可以通过3到5天的紧张冲刺实现。
为了 Build Lab 的成功,还需要确定和解决任何外部依赖关系,例如与数据来源和目标的网络连接。如果这不可行,那么我们需要找到有意义的方法来模拟这些情况。例如,为了使原型更接近生产环境的情况,我们决定根据 BMW 现有的团队结构,为每个使用案例使用单独的 Amazon 账户,并使用消费者级别的 S3 存储桶而不是 BMW 的网络附属存储(NAS)。
# Build Lab
BMW 团队为他们的 Build Lab 设定了4天时间。在此期间,他们的专职 Data Lab 架构师与团队携手,帮助他们构建了以下原型架构。
![1c82f9f3f7cc05c1379237b934b17bf2.jpg](https://dev-media.amazoncloud.cn/f31d5be1846a419c9e8086322baa798b_1c82f9f3f7cc05c1379237b934b17bf2.jpg "1c82f9f3f7cc05c1379237b934b17bf2.jpg")
此解决方案包括以下组成部分:
1. 第一步是将云数据中心的 Amazon Glue Data Catalog 与监管报告账户同步。
2. 在监管报告账户上运行的 Amazon Glue 作业可以访问云数据中心资源账户中的数据。在 Build Lab 期间,BMW 团队为六张表实施了 ETL 作业,使用 Hudi 解决了插入、更新和删除记录的要求。
3. ETL 作业的结果存储在数据湖层中,以 Hudi 表的形式存储在监管报告 S3 存储桶中,这些表已在 Amazon Glue Data Catalog 中编目,可供多个 Amazon 服务使用。存储桶使用 **Amazon Key Management Service**(Amazon KMS)进行加密。
4. Athena 用于在数据湖上运行探索性查询。
5. 为了演示跨账户使用模式,我们在其上创建了一个 [Amazon Redshift](https://aws.amazon.com/cn/redshift/?trk=cndc-detail) 集群,从 Data Catalog 创建了外部表,并使用 Redshift Spectrum 来查询数据。为了在监管报告账户 Data Catalog 的子网组与本地数据仓库账户上的 [Amazon Redshift](https://aws.amazon.com/cn/redshift/?trk=cndc-detail) 集群子网组之间实现跨账户连接,必须启用 **VPC 对等连接**。为了在 Build Lab 期间加速和优化这些配置的实现,我们获得了一位亚马逊云科技网络专家的支持,他主持了一次有价值的会议,BMW 团队在会上了解了架构的网络连接详情。
6. 关于数据使用,BMW 团队实施了一个 Amazon Glue Python Shell 作业(该作业使用 JDBC 连接来连接到 [Amazon Redshift](https://aws.amazon.com/cn/redshift/?trk=cndc-detail) 或 Athena),运行了查询,并将结果以 CSV 文件形式存储在报告存储桶中,以后可供最终用户访问该文件。
7. 最终用户还可以使用 JDBC 连接直接连接到 Athena 和 [Amazon Redshift](https://aws.amazon.com/cn/redshift/?trk=cndc-detail)。
8. 我们决定使用 **Amazon Glue 工作流**来编排 Amazon Glue ETL 作业。我们将最终的工作流用于实验结束时的演示。
这样,我们就完成了设定的所有目标,并结束了为期4天的 Build Lab。
# 结 论
在这篇博文中,我们向您介绍了 BMW Financial Services 团队与 Amazon Data Lab 团队合作的旅程,他们一起参与 Design Lab 来确定最适合其使用案例的架构,以及在随后的 Build Lab 中实施了用于一个欧洲 BMW 市场的监管报告原型。
要了解有关 **Amazon Data Lab** 如何帮助您将想法转化为解决方案的更多信息,请访问 Amazon Data Lab。
# 相关链接
[战略合作](https://www.press.bmwgroup.com/global/article/detail/T0322118EN/aws-and-bmw-group-team-up-to-accelerate-data-driven-innovation?language=en?trk=cndc-detail)
[re:Invent 2019](https://www.youtube.com/watch?v=9fH3y5p8ewE?trk=cndc-detail)
[BMW Cloud Data Hub: A reference implementation of the modern data architecture on Amazon](https://aws.amazon.com/blogs/industries/bmw-cloud-data-hub-a-reference-implementation-of-the-modern-data-architecture-on-aws/?trk=cndc-detail)
[BMW Financial Services](https://www.bmwgroup.com/en/brands-and-services/financial-services.html?trk=cndc-detail)
[个人身份信息](https://en.wikipedia.org/wiki/Personal_data?trk=cndc-detail)
[Schrems II](https://www.gdprsummary.com/schrems-ii/?trk=cndc-detail)
[GDPR](https://gdpr.eu/?trk=cndc-detail)
[Build a pseudonymization service on Amazon to protect sensitive data](https://aws.amazon.com/blogs/big-data/part-1-build-a-pseudonymization-service-on-aws-to-protect-sensitive-data/?trk=cndc-detail)
[Amazon Lake Formation](https://aws.amazon.com/lake-formation/?trk=cndc-detail)
[资源链接](https://docs.aws.amazon.com/lake-formation/latest/dg/creating-resource-links.html?trk=cndc-detail)
[Lambda UDF](https://docs.aws.amazon.com/redshift/latest/dg/udf-creating-a-lambda-sql-udf.html?trk=cndc-detail)
[JDBC (Java Database Connectivity, Java 数据库连接)](https://en.wikipedia.org/wiki/Java_Database_Connectivity?trk=cndc-detail)
[VPC 对等连接](https://docs.aws.amazon.com/vpc/latest/peering/create-vpc-peering-connection.html?trk=cndc-detail)
[Amazon Glue 工作流](https://docs.aws.amazon.com/glue/latest/dg/workflows_overview.html?trk=cndc-detail)
[Amazon Data Lab](https://aws.amazon.com/aws-data-lab/?trk=cndc-detail)
### 关于作者
![微信图片_20230320162416.jpg](https://dev-media.amazoncloud.cn/4cbbdd3d69d04b09af459f4d1945c117_%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20230320162416.jpg "微信图片_20230320162416.jpg")
**Martin Zoellner**
Martin Zoellner 是 BMW Group 的 IT 专家。他在该项目中担任 DevOps 和 ETL/SW 架构的主题专家。
![微信图片_20230320162423.png](https://dev-media.amazoncloud.cn/b7c6bcff3dcc47ab875f74cfd11183ec_%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20230320162423.png "微信图片_20230320162423.png")
**Thomas Ehrlich**
Thomas Ehrlich 是一个欧洲 BMW 市场的监管报告应用程序的功能维护经理。
![微信图片_20230320162428.png](https://dev-media.amazoncloud.cn/6def29c8b780426fb73b0647e44d8170_%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20230320162428.png "微信图片_20230320162428.png")
**Veronika Bogusch**
Veronika Bogusch 是 BMW 的 IT 专家。她通过云数据中心启动了 Financial Services Batch Integration Layer 的重建。提取的数据资产是本文中介绍的监管报告使用案例的基础。
![微信图片_20230320162434.jpg](https://dev-media.amazoncloud.cn/24d4ea1601c14296a24bc352dd9ce7c2_%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20230320162434.jpg "微信图片_20230320162434.jpg")
**George Komninos**
George Komninos 是 Amazon Web Services(Amazon)Data Lab 的解决方案架构师。他帮助客户将他们的想法转化为生产就绪型数据产品。在加入 Amazon 之前,他在 Alexa Information Domain 担任了三年的数据工程师。工作之余,George 是一名足球迷,他支持世界上最伟大的球队 Olympiacos Piraeus 队。
![微信图片_20230320162438.jpg](https://dev-media.amazoncloud.cn/50e3aae1e69e4b7d827c55b393eca0bf_%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20230320162438.jpg "微信图片_20230320162438.jpg")
**Rahul Shaurya**
Rahul Shaurya 是 Amazon Professional Services 高级大数据架构师。他帮助客户并与企业客户密切合作,在 Amazon 上构建数据湖和分析应用程序。工作之余,Rahul 喜欢和他的狗 Barney 一起散步。