从BMW在亚马逊云科技上的全球软件开发平台中获得的经验
关键字: [Amazon Web Services re:Invent 2024, 亚马逊云科技, Codecraft, Software Development Platform, Automotive Industry, Code Repository, Developer Productivity, Cost Efficiency, Hybrid Cloud Architecture, Compute Optimization, Containerized Services, Cluster Autoscaling, Spot Instance Utilization, Instance Selection, Spot Reclaim Mitigation, Business Impact]
导读
宝马集团在其汽车组织内建立了一个全球性的、屡获殊荣的软件开发平台,名为宝马软件工厂。在转移到亚马逊云科技后,宝马已将其扩展到每天运行超过165,000次CI/CD构建,并可动态配置多达5,500个并行实例。随着12,000多名开发人员的加入,关注系统的弹性和高效的FinOps利用变得至关重要。在本次讨论中,您将了解到支持这个弹性平台的基本架构和设计选择,并深入探讨宝马采用的FinOps策略,以推动成本优化、提高开发人员生产力,并加快其产品上市时间。
演讲精华
以下是小编为您整理的本次演讲的精华。
在汽车创新的领域中,软件开发已成为推动未来汽车发展和重塑驾驶体验的关键力量。宝马作为一家致力于卓越和不懈追求尖端技术的公司,正处于这一变革的前沿。在亚马逊云科技 re:Invent 2024活动上,亚马逊云科技的首席解决方案架构师Christian和宝马的Celine Ron Winter揭示了宝马全球软件开发平台Codecraft迁移到亚马逊云科技云端的非凡历程。
故事始于Christian的介绍,阐明了亚马逊云科技与宝马软件开发平台团队在过去18个月的密切合作。他们共同为Codecraft构建了一个混合解决方案,精心设计以满足宝马对可扩展性、可靠性和成本效率的严格要求。这种混合方法使宝马能够根据需要无缝地将专用工作负载过渡到亚马逊云科技,确保平稳高效的迁移过程。
宝马连接车辆平台副总裁Celine提供了宝贵的见解,阐述了汽车行业对软件开发的依赖。她巧妙地阐述了现代汽车的复杂性,每辆车都包含数百个电子控制单元,负责自动驾驶等各个领域的无数功能。旗舰车型宝马7系拥有惊人的5亿行代码,由内部和外部软件工程师团队开发,是市场上最复杂的产品之一。
认识到这种复杂性带来的挑战,宝马着手开发Codecraft,这是一个全方位的平台,旨在简化软件开发流程。Codecraft包括代码存储库、构件存储库、CI管道和问题跟踪器等一系列工具和服务。最初在内部托管的Codecraft由于成功而面临扩展挑战,促使宝马寻求与亚马逊云科技合作以扩展平台能力。
宝马面临的挑战是多方面的。有超过2,000名开发人员积极使用Codecraft,该平台每天处理165,000次构建和5,500次并发构建,利用了85,000个虚拟CPU。可靠性、开发人员生产力和成本效率成为关键的成功因素,推动宝马决定与亚马逊云科技合作。
Christian随后深入探讨了混合解决方案的架构细节,详细介绍了在亚马逊云科技上建立健壮的网络基础设施,并复制了GitHub、Artifactory、Bitbucket和SonarCI等核心服务。在15个月的时间里,大部分基础设施和CI作业都迁移到了亚马逊云科技,剩余的工作负载将在未来12个月内迁移,因为内部资源已达到生命周期终点。
最初实施的改进之一是迁移到最新的EC2实例系列,如M7a系列。这一战略举措降低了Git操作的延迟,提高了平台的整体性能和效率。然而,为CI作业选择合适大小的EC2实例是一个独特的挑战,因为这些作业范围从小型lint任务到大型车载信息娱乐系统构建。
为了应对这一挑战,团队调整了开源Linux实用程序sysstat,以收集全面的指标,包括CPU和内存利用率、网络使用情况和I/O性能。这些指标经过精心分析和可视化,为确定CI作业是否运行在合适大小的实例上提供了宝贵的见解。此外,团队还对各种CPU供应商和架构(包括AMD、Intel和Amazon Graviton)进行了基准测试,发现不同构建和CPU供应商之间存在显著的性能差异。
Codecraft将其核心服务和SonarCI服务容器化,利用亚马逊云科技上Amazon Elastic Container Service (ECS)的强大灵活性。最初,团队采用了传统的Kubernetes集群自动缩放器来根据不同的需求调整计算实例。然而,在2024年3月,团队做出了战略决定,迁移到由亚马逊云科技发起的开源灵活Kubernetes集群自动缩放器Carpenter。这一转变取得了显著成果,使团队能够实现高达66%的亚马逊云科技基础设施成本节省。
两个关键因素促成了这一成本优化。首先,Carpenter持续优化了EC2实例的利用率,根据需求动态在实例之间移动容器并提供合适大小的实例,同时终止利用率较低的实例。这种方法使Codecraft能够实现令人印象深刻的94%的EC2实例利用率。其次,Carpenter与EC2 Spot实例无缝集成,以高达90%的折扣获取未使用的EC2容量,相比按需实例节省了大量成本。
Christian简明扼要地概述了EC2 Spot实例,强调了它们的成本效益以及亚马逊云科技在需要额外按需容量时可能收回的潜力。为了减轻收回的影响,他强调了通过在多个可用区域和地区利用多种实例类型来分散Spot机群的重要性。
最初,Codecraft利用EC2 RunInstance API根据亚马逊云科技的建议请求单个实例。然而,为了更有效地扩展,他们转而使用EC2 Fleet,这使他们能够指定一系列可以运行工作负载的实例类型。这种方法使Codecraft能够定义分配策略、配置启动模板,并提供目标容量和容量类型,从而优化成本和性能。
迁移的结果令人瞩目。2023年1月,Codecraft仅利用了2%的Spot实例,但到2024年10月,这一数字飙升至44%,每月节省了六位数的成本。然而,团队也遇到了超出预期的较高Spot收回数量,导致开发人员获取反馈的延迟加长,生产力降低。
为了解决这一挑战,亚马逊云科技推荐了Spot Placement Score Tracker,这是一种旨在客观评估Spot请求成功可能性的工具。此外,还采用了EC2 Instance Selector来根据计算需求(如CPU、内存和CPU架构)识别其他合适的实例类型。
有了这些见解,Codecraft将他们使用的Spot池数量增加了三倍,在EC2 Fleet配置中增加了20种新的实例类型。此外,他们将分配策略改为价格容量优化,允许亚马逊云科技从Spot池中选择最具成本效益且收回可能性最小的实例类型。这些措施已经取得了积极成果,减少了遇到的Spot收回数量,未来还将通过管道中的更改进一步改善。
Celine在演讲的结尾强调了迁移到亚马逊云科技所取得的显著业务成果。使用Codecraft的开发人员的满意度评分持续上升,没有报告任何中断。Codecraft能够扩展CI作业并缩短代码推送和反馈之间的响应时间,在汽车IT大会上获得了业务影响类别的奖项。
开发人员的生产力和上市时间都显著提高,与宝马的核心目标保持一致。此外,整个平台的成本也有所降低,为公司的可持续发展做出了贡献。然而,随着平台上的工作负载继续增长,宝马仍将致力于进一步优化成本效率和扩展能力,确保Codecraft继续在汽车软件开发领域保持领先地位。
总之,宝马与Codecraft在亚马逊云科技上的历程彰显了合作、创新和对卓越的不懈追求的力量。通过精心设计的混合解决方案,利用最新的亚马逊云科技技术和最佳实践,宝马实现了前所未有的可扩展性、可靠性和成本效率,同时提高了开发人员的生产力并加快了上市时间。这一非凡成就见证了宝马坚定不移地致力于提供优质创新的连接驾驶服务,引领汽车行业的未来发展。
下面是一些演讲现场的精彩瞬间:
演讲者讨论了他们在宝马软件开发平台团队工作的经验,他们构建了一个混合解决方案,满足了宝马对规模、可靠性和成本效率的要求,重点是成本优化。
Codecraft的创新解决方案利用sysstat分析和可视化EC2实例指标,为优化CI作业资源分配提供了见解。
Carpenter与EC2 Spot无缝集成,使您能够利用未使用的EC2容量,与按需实例相比可节省高达90%的成本。
Codecraft通过利用EC2 Fleet优化了他们的EC2使用情况,EC2 Fleet允许他们指定多种能够运行工作负载的实例类型和分配策略,以选择最不可能被回收的实例类型。
EC2实例选择器是一个CLI工具,根据指定的计算要求(如CPU、内存和CPU架构)推荐合适的实例类型,简化了选择过程。
通过优化EC2 Fleet配置,增加20种额外的实例类型,将spot池增加到300个,并使用价格容量优化分配策略,该公司显著减少了spot实例回收,提高了成本效率。
总结
在不断发展的汽车行业中,软件开发已成为关键组成部分,现代汽车包含数百万行由内部和外部团队开发的代码。宝马的Codecraft平台最初是内部部署的,由于来自2,000多名开发人员、每天165,000次构建和5,500次并发构建利用85,000个虚拟CPU的不断增长的需求,面临着扩展挑战。宝马认识到需要一个健壮且经济高效的解决方案,因此与亚马逊云科技合作,将Codecraft迁移到云端。
通过混合架构,宝马建立了健壮的网络基础设施,并在亚马逊云科技上复制了GitHub、Artifactory、Bitbucket和SonarCI等核心服务。迁移过程中,他们利用了最新的EC2实例代,使用sysstat等工具优化实例大小,并对不同CPU供应商进行基准测试。Codecraft将其服务容器化,采用Amazon ECS,最初使用传统的Kubernetes集群自动缩放器,后过渡到Carpenter这个开源灵活的自动缩放器,通过高效利用实例和EC2 Spot集成,实现了高达66%的成本节省。
为进一步优化成本,Codecraft利用EC2 Fleet,允许他们指定一系列合格的实例类型和分配策略。通过将spot池数量增加三倍并调整分配策略,他们大幅减少了spot实例被回收的情况,从而在保持开发人员生产力和加快上市时间的同时,实现了可观的每月成本节省。
迁移到亚马逊云科技不仅提高了客户满意度和开发人员生产力,而且Codecraft还因其商业影响和成本效率而获得认可。随着宝马继续扩展Codecraft,他们的重点仍将放在通过经济高效的扩展和优化,为更加可持续的未来做出贡献。
亚马逊云科技(Amazon Web Services)是全球云计算的开创者和引领者。提供200多类广泛而深入的云服务,服务全球245个国家和地区的数百万客户。做为全球生成式AI前行者,亚马逊云科技正在携手广泛的客户和合作伙伴,缔造可见的商业价值 – 汇集全球40余款大模型,亚马逊云科技为10万家全球企业提供AI及机器学习服务,守护3/4中国企业出海。