亚马逊AWS官方博客

宝马集团携手高通如何在亚马逊云科技上构建自动驾驶平台

本文由亚马逊云科技专业服务团队首席顾问 Andreas Falkenberg、首席顾问 Junjie Tang、云架构师 Alex Evans、大数据架构师 Maria Guerra,以及宝马云架构师 Joerg Krebs、高通高级工程师 Simon Schug 共同撰写,由参与中国区方案迁移的亚马逊云科技专业服务团队顾问谢丹翻译,请参考原文链接。

背景

2023 年 9 月,亚马逊云科技宣布,宝马集团已选择 AWS 作为其下一代自动驾驶平台的首选云提供商。宝马集团将利用亚马逊云科技平台开发其下一代高级驾驶员辅助系统(ADAS),以帮助 2025 年推出的下一代车型”Neue Klasse”开发新功能。宝马集团正在与高通公司合作开发下一代自动驾驶堆栈,该堆栈基于高通的 Snapdragon Ride 系统芯片(SoC)和计算机视觉堆栈。

宝马集团和高通在自动驾驶/高级驾驶员辅助系统(AD/ADAS)Realm 方面需要解决多个挑战,以使各种自动驾驶功能达到成熟。这包括使用装备最新传感器的测试车辆,和在数以千公里的路程中收集各种不同交通场景和环境条件下的测试数据,也涉及测试汽车感知其周围环境的数据质量,此外,还需要在各种真实世界的道路场景和情况下,对安全和驾驶功能进行验证和确认。

为了应对这些挑战,宝马集团、高通和亚马逊云科技专业服务团队共同在亚马逊云科技平台上开发了一种多租户自动驾驶/高级驾驶员辅助系统解决方案——即下一代 ADAS 平台。它是基于以下设计原则构建在亚马逊云科技平台之上的:

  • 云优先原则:利用亚马逊云科技灵活且可扩展的 IT 基础设施,根据需求动态调整资源,并使用亚马逊云科技灵活的按需付费计费模式。
  • 可复用的IaC(基础设施即代码)蓝图和模块原则:通过利用亚马逊云科技开源项目自动驾驶数据框架(ADDF)亚马逊云科技部署框架(ADF)来缩短开发周期和时间。
  • 自助服务原则:使用统一的门户网站,为软件工程师和其他最终用户提供简易访问和用户管理。
  • 支持协作原则:设计支持多租户和共享租户,以促进数百个团队跨多家公司和合作伙伴之间的合作。
  • 全球平台原则:代码库支持在亚马逊云科技中国区域和亚马逊云科技全球其他区域部署。

这篇文章描述了一个安全、灵活、可扩展和高度集成的下一代 ADAS 平台架构。本文首先从与该平台交互的不同角色的角度,高度概述了下一代 ADAS 平台,然后从最终用户的角度描述了基于 UI 的 ADAS 工作负载环境创建的过程。为了深入探讨,还解释了底层平台部署机制和架构细节。最后,提供了有关 ADAS 平台如何在事件驱动架构中加速 ADAS 相关工作负载的开发时间的见解。

解决方案概述 – 下一代 ADAS 平台上的 ADAS 工作负载生命周期

宝马集团使用 ADAS 平台来管理针对 Neue Klasse 的高级驾驶员辅助系统(ADAS)工作负载的验证和确认。在这篇博客中,ADAS工作负载被定义为与实际数据注入、数据质量控制、自动数据标注、注释和引用相关的任何任务。它还包括数据分析和可视化、模拟、重新处理和关键性能指标(KPI)计算。

下图概述了典型 ADAS 工作负载环境的端到端生命周期。它还显示了下一代 ADAS 平台所支持的核心角色。

图 1. ADAS 的工作负载在下一代 ADAS 平台上的生命周期 — 从工作负载的生成到终结

  1. 宝马集团 ADAS 相关应用的所有者(Owner)通过平台上的 UI 请求创建 ADAS 工作负载环境。这些 ADAS 工作负载环境被称为 Realms(领域)。一个 Realm 是包含应用逻辑、人员、成本和安全设置的逻辑分组,由四个亚马逊云科技账户(开发、集成和测试、生产和持续集成和持续部署(CI/CD)环境)组成。Realm 只有在平台管理员明确批准后才会被创建。一旦请求被批准,亚马逊云科技账户就会自动创建。然后,这些账户将被配置预定义的资源和控制,包括账号安全、身份访问管理、基础网络以及预配置的 Git 存储库。预定义的配置还包括用于 ADAS 工作负载开发的 CI/CD 管道。
  2. 在成功创建和配置 Realm 之后,所有者可以对 Realm 进行访问权限管理, 即将明确定义且细粒度的用户权限分配给应用开发团队。
  3. 宝马集团 ADAS 应用开发人员现在可以访问已配置的开发环境,此时 ADAS 验证开发工作可以开始。应用开发团队可以访问所有预部署的 Git 存储库和 CI/CD 管道。常见的 ADAS 工作负载包括数据注入、重新模拟和数据质量评估等。
  4. 在这个步骤中,ADAS应用开发人员将他们的 ADAS 验证应用程序集成到类似于宝马云数据中心(CDH)的数据网格式应用程序结构中。在这个网格中,事件驱动的方法允许 ADAS 工作负载使用良好定义的模式相互通信和交换数据。一个 ADAS 工作负载例子是重新处理即服务(RaaS)Realm,它被集成到事件驱动的数据网格 ADAS 应用程序空间中和其他工作负载进行通信和交换数据。
  5. 宝马集团 ADAS 应用开发人员可以监控他们用于 ADAS 验证和确认的工作负载的基础设施,如果出现任何问题,日志记录机制可以帮助他们快速且准确的分析问题。
  6. 宝马集团财务运营经理和 ADAS 应用所有者可以监控 Realm 的成本变化。一旦超过预定义的成本阈值告警就会被发出,这能避免无意中产生的额外成本。另外,平台还提供一个功能全面的仪表板,可以快速且轻松地识别关键成本驱动的因素和成本趋势。该仪表板提供了按自定义标签、亚马逊云科技账户和每个 Realm 汇总成本的功能。
  7. 如果需要终结某个 Realm,Realm 所有者可以触发停用流程。停用流程会执行多项检查,以确保在自动停用之前备份存储的数据和工件。

下一章节将详细描述 Realm 的结构,以及如何通过 UI 请求 Realm。

解决方案 – 在下一代 ADAS 平台上的 Realm 中创建 ADAS 工作负载

这个章节将深入探讨 Realm 的概念,以及如何通过 UI 轻松请求 Realm。

下图展示了下一代 ADAS 平台中 Realm 概念的概览,以及通过总体编排来实现 Realm 之间的通信,将每个 Realm 集成到事件驱动的数据网格的结构中:

图 2. 下一代 ADAS 平台中 Realm 的定义

每个 Realm 具有以下特征:

  1. 一个 Realm 由四个亚马逊云科技账户组成:
    • 一个开发亚马逊云科技账户,提供隔离的开发环境。
    • 一个集成和测试亚马逊云科技账户,提供隔离的集成和测试环境。
    • 一个生产亚马逊云科技账户,提供隔离的生产环境。
    • 一个工具链(CI/CD)亚马逊云科技账户,用于管理代码在其他 3 个亚马逊云科技账户(开发、集成和测试和生产)之间的传播。
  1. 一个 Realm 有一个所有者(ADAS 应用所有者),他/她可以执行以下操作:
    • 查看成本并定义预算。
    • 通过 UI 授予和撤销用户访问权限,从而管理 Realm 的访问权限。
  1. 一个 Realm 属于一个特定的 Realm 类别:
    • Realm 类别定义了在四个亚马逊云科技账户中部署的额外亚马逊云科技资源。根据选择的 Realm 类别,特定的预定义网络资源、与 ADAS 相关的 Git 存储库和 CI/CD 管道将在开发、集成和测试和生产的亚马逊云科技账户中部署。
    • Realm 所有者可以在创建 Realm 时选择 Realm 类别。”数据注入”就是一个 Realm 类别的示例。
  1. 一个 Realm 完全集成到下一代 ADAS 平台中:
    • Realm 使用亚马逊云科技的系统管理器(SSM)的参数来描述 Realm 在下一代 ADAS 平台中的上下文(租户、网络设置和其他元数据)。
    • 根据特定 Realm 的个别需求,提供定制的 VPC 配置和网络连接。
    • Realm 会自动集成到平台的集中成本和计费管理中。
    • Realm 与平台身份访问管理系统的完全集成。
    • 平台为每个 Realm 提供了亚马逊云科技的安全服务的自动设置和注册。
    • Realm 可以轻松地被集成到总体编排中来进行事件处理,以及集成到中央日志和监控系统中来进行记录日志和监控。
  1. 一个 Realm 只属于一个租户:
    • 由于下一代 ADAS 平台是一个多租户平台,因此一个 Realm 同一时间只能属于一个租户。
    • 平台允许同一租户内的 Realm 之间进行通信,但禁止跨租户交换数据。

通过 UI 创建 Realm 的工作流程包括以下步骤:

图 3. 在平台的自助服务 UI 上端到端创建 Realm 的工作流程

现在我们已经解释了 Realm 的概念和创建方式,在下一章节中,我们会展示用于自动化创建所有基础设施以使上述工作流程成为可能的部署机制。

解决方案细节 – 部署下一代高级驾驶辅助系统(ADAS)平台

为了能够创建 Realm 并运行前几节中概述的工作流程,首先平台开发运维团队需要在一个全新的亚马逊云科技组织服务中部署下一代 ADAS 平台。

在本章节中,我们将概述平台的初始部署和后续的更新过程。

设置亚马逊云科技组织服务

下一代 ADAS 平台是从三个全新的亚马逊云科技组织服务开始的:

  • 开发亚马逊云科技组织服务(Dev Org)
  • 集成和测试亚马逊云科技组织服务(Int Org)
  • 生产亚马逊云科技组织服务(Prod Org)

每个亚马逊云科技组织都包含下一代 ADAS 平台的一个完整实例。Dev 和 Int 亚马逊云科技组织服务专门由下一代 ADAS 平台开发运维团队用于平台开发和测试,而 Prod 亚马逊云科技组织服务则用于为 ADAS 应用开发人员部署 ADAS 工作负载环境。这种设置使得新的平台功能开发不会影响 Prod 组织服务实例的稳定性。下图展示了多亚马逊云科技组织服务的方案:

图 4. 下一代 ADAS 平台多亚马逊云科技组织服务的方案

部署亚马逊云科技部署框架(ADF)

下一代 ADAS 平台使用亚马逊云科技 Control Tower 创建亚马逊云科技组织服务、基线安全功能和初始化亚马逊云科技账户。为了提供平台的完全功能, 平台开发运维团队需要部署网络、IAM 访问管理、计费、成本控制、亚马逊云科技账户创建、CI/CD、安全、UI 以及日志和监控的亚马逊云科技平台账户。总的而言,下一代 ADAS 平台在多个亚马逊云科技区域的 14 个亚马逊云科技平台账户中,部署了 94 个基于 CDK 和 CloudFormation 的平台级应用程序。

为了以一种简单的方式实现上述部署,下一代 ADAS 平台使用了亚马逊云科技部署框架(ADF)。

ADF 在下一代 ADAS 平台上实现并确保以下功能:

  1. 在亚马逊云科技组织内为所有平台级应用统一部署流程。
  2. 为所有平台级应用跨区域和账户提供通用构建说明(部署映射,deployment maps)。
  3. 为所有平台级应用从一个亚马逊云科技组织到下一阶段制定明确的代码传播流程。部署顺序定义为: 开发组织 -> 集成和测试组织 -> 生产组织。
  4. 使用账户标签和标签定义动态部署资源到目标账户。
  5. 在平台级应用中使用通用的单元和集成测试方法。
  6. 提供跨区域和账户标准化参数共享流程。
  7. 提供监控和警报功能,以捕获和响应部署问题。

ADF 基于称为部署映射的 YAML 定义,自动生成亚马逊云科技 CodePipeline(一种全面管理的持续交付服务,有助于自动化发布管道)管道。这种方法减轻了平台开发运维团队在 CI/CD 管道生成方面的所有非差异化的繁重工作,平台开发运维团队可以专注于编写高质量的代码和测试。下图显示了 ADF 工作原理的概述。

图 5. ADF 工作流程 – 通过自动生成的亚马逊云科技 CodePipeline 管道,将代码库中的代码转化为完全部署的平台级应用

通过 ADF 部署平台级应用程序的示例

一个跨账户、多堆栈平台级应用的示例是下面显示的 CDK 应用”Account Vending AppSync API”。这个特定的平台级应用程序使用基于事件的无服务器方法部署 API,以促进参数化创建亚马逊云科技账户。一旦部署,这个 CDK 应用程序就提供了一个用于亚马逊云科技账户创建、更新和删除的 API。部署这个 API 的起点是下面显示的 ADF 部署映射

图 6. “Account Vending AppSync API” CDK 平台级应用程序的 ADF 部署映射图,并分解显示了不同的部分

这个部署映射包含了 ADF 自动生成亚马逊云科技 CodePipeline 所需的所有信息。在这个特定的例子中,YAML 文件定义了管道元数据、源提供程序、包含单元测试的构建步骤,以及带有额外集成测试的部署目标账户。

根据这些信息,ADF 会自动生成以下亚马逊云科技 CodePipeline:

图 7. 使用亚马逊云科技 CodePipeline 为平台级应用程序”AppSync API Management”自动生成的管道,包括构建和测试阶段

亚马逊云科技 CodePipeline 包含以下几个阶段:

  1. 源码阶段:源码阶段从亚马逊云科技 CodeCommit Git 存储库中提供代码。在这个示例中,使用了代码存储库”platform-appsync-api-management”的 dev 分支内容。
  2. 构建阶段:构建阶段根据代码存储库中的 yaml 文件运行单元测试,并创建构建工件。在我们这个示例中,构建工件包括由”cdk synth”命令生成的亚马逊云科技 CloudFormation 模板。
  3. DeployToDeploymentAccount-0 部署阶段:部署阶段在目标亚马逊云科技账户中执行平台级应用程序的部署。
  4. IntegrationTesting-0 集成阶段:集成测试阶段对新部署的账户供应 API 执行不同的调用,以验证它在所有端点上的工作是否符合预期。

通过 ADF 大规模部署平台级应用程序

一旦所有由 ADF 自动生成的管道都已创建、触发并成功执行, 所有平台级应用程序就已部署,下一代 ADAS 平台包括 UI 在内都已完全可用。

下面的屏幕截图显示了应用程序部署管道的一个子集,下一代 ADAS 平台上总共有 120 个由 ADF 自动生成的部署管道。

从这个截图可以看出,ADF 能够自动生成大量的 CI/CD 管道,用于大规模部署平台级应用程序。每个管道都经过源代码、构建、部署和集成测试等阶段,确保应用程序的一致部署。这种自动化方式大大提高了效率,减少了人工操作带来的错误,使得大规模的平台部署变得可行。

通过 ADF 的自动化能力,企业可以快速、一致、可靠地在亚马逊云科技上大规模部署新的或更新的平台应用,满足快速交付的需求,提升运维效率。

图 8. 使用亚马逊云科技 CodePipeline 自动生成的管道子集,这些是下一代 ADAS 平台的基础

此时,下一代 ADAS 平台已经全面部署,可供不同角色的人员使用。

ADAS 应用开发人员 – 利用已提供的平台和 Realm 来加快 ADAS 验证和确认工作负载的开发工作

在部署了下一代 ADAS 平台并创建了所有需要的 Realm 后,ADAS 应用开发人员可以访问所有必要的亚马逊云科技服务和工具,来支持应用功能的验证和审批。平台为每个 Realm 都提供了加速开发的方案和资源,助力宝马集团 ADAS 应用开发人员更快的开发其应用。默认情况下,每个 Realm 都有预配置的 CI/CD 服务,可以用于在 Realm 以最少的工作量、构建和部署 IaC 应用程序。另一个关键的加速应用开发的方案是一个集中的 IaC 存储库,其中包含基于开源项目自动驾驶数据框架(ADDF)行业数据框架(IDF)的可重用 IaC 代码模块。ADDF 和 IDF 提供了可直接运行的示例,实现了诸如创建 EKS 集群之类的常见服务。平台上的每个 Realm 都能够轻松集成到自定义构建的总体编排中,从而实现跨 Realm 标准化的“发布-订阅”式的通信。

总结

ADAS 平台是宝马与高通和亚马逊云科技合作打造的一个平台。这篇博客概述了下一代 ADAS 平台上 ADAS 工作负载环境的生命周期。本文通过平台定制的 UI 展示了 ADAS Realm 的创建过程,描述了通过 ADF 部署可扩展、安全、灵活和高度集成的下一代 ADAS 平台的端到端过程。总的来说,使用预先创建好的 Realm 组件可以显著加快 ADAS 应用验证和确认的开发过程。最后,介绍了平台如何通过使用 IDF 模块标准化部署和利用事件驱动跨 Realm 通信的方式实现了数据网格。

参考链接

  1. Develop and deploy a customized workflow using Autonomous Driving Data Framework (ADDF) on AWS
  2. Amazon Deployment Framework
  3. BMW Cloud Data Hub: A reference implementation of the modern data architecture on AWS
  4. Scaling Automated Driving data processing and data management with BMW Group on AWS
  5. Developing a Platform for Software-defined Vehicles with Continental Automotive Edge (CAEdge)

本篇译者

谢丹

亚马逊云科技专业服务团队云架构顾问,拥有多年丰富的云架构和客户服务经验,专注于为企业提供全方位的云上基础设施架构设计、迁移方案设计、最佳实践指导以及落地实施服务。