亚马逊云科技与EC2 Mac实现Apple开发现代化
关键字: [Amazon Web Services re:Invent 2024, 亚马逊云科技, EC2 Mac, Apple Platform Development, Ec2 Mac Instances, Modernized Build Infrastructure, Cloud Migration, Performance Optimization]
导读
EC2 Mac实例允许您在云中运行按需macOS工作负载,并将亚马逊云科技的灵活性、可扩展性和成本优势扩展到所有Apple开发者。本次会议分享了EC2 Mac的最新功能和进展,以及客户如何从中受益。了解使用EC2 Mac实例在云中进行Apple应用程序开发,并直接听取一位亚马逊云科技客户如何优化其Apple开发工作流程,以及从云中的Apple应用程序开发中获益的经验。
演讲精华
以下是小编为您整理的本次演讲的精华。
Moni Strato的引人入胜的演讲阐明了EC2 Mac实例的非凡历程,这是一项开创性的产品,彻底改变了云端Apple平台开发。她的见解进一步得到了Tim Sutton亲身经历Block公司从自托管Mac持续集成(CI)基础设施迁移到亚马逊云科技 EC2 Mac的讲述。
Sutton的团队在Block公司发挥了关键作用,支持iOS开发的CI基础设施,管理着包含750万行Swift和Objective-C代码的庞大代码库,有数百名iOS开发人员贡献代码。他们的工作量规模令人震惊,代码库中有28小时的测试,大量iOS模拟器并行运行。对于Square销售点系统,有超过200万行代码,数百个测试套件,大量使用Block的CI基础设施。同样,Cash App这个点对点支付和投资平台,也严重依赖Block的CI基础设施进行iOS开发。
回顾Block的iOS CI基础设施的演进历程,Sutton回忆起2014年最初的设置,由8台苹果Mac Pro组成的小型vSphere集群,存在可靠性问题。这促使他们过渡到裸机Mac,放置在公司数据中心的机架上,通过Arduino驱动的键盘模拟器和电源分配单元实现远程管理。
到2018年,Block在生产数据中心拥有500台Mac mini,代表了他们内部基础设施的顶峰。然而,这种设置也存在挑战。Sutton坦率地承认了痛点,包括高度手动维护、由于长时间安装而导致的蜘蛛网般的构建失败、缺乏灾难恢复和冗余能力,以及与公司更广泛的基础设施隔离(因为公司正在迁移到亚马逊云科技)。他们面临的一个问题是无法在没有物理干预的情况下回滚操作系统升级,因为macOS只能通过远程操作机器来回滚。
EC2 Mac实例最具吸引力的优势之一是裸机快照功能,可以从同一快照近乎瞬间启动数百台机器,消除了耗时的操作系统升级和库存管理需求。Sutton强调了回滚操作系统升级、采用新硬件以及使用IAM角色和实例配置文件无缝集成其他亚马逊云科技服务的灵活性。与亚马逊云科技服务(如Auto Scaling、虚拟私有云等)的集成,使整个iOS CI/CD体验更加高效,无需手动保护和优化基础设施。
Sutton深入探讨了EC2 Mac实现的技术细节,解释了亚马逊云科技 Nitro System及其在卸载网络、存储和实例管理到定制硅方面的作用。他提供了启动过程的见解,实例从连接到由快照AMI支持的EBS卷的外部Thunderbolt设备启动,利用EC2控制平面的自动化功能。
在他们的实现中,Block利用Auto Scaling组作为配置基元,允许他们轻松地为测试、升级和不同实例类型启动隔离环境。Terraform在基础设施管理中发挥了关键作用,而Packer则实现了自动AMI创建,促进了频繁部署和一致的环境。Sutton分享了一个使用这种设置在夏季推出每个Xcode 16测试版的示例,在CI中以小规模提供,允许代码所有者在Apple更新Swift编译器规则时进行必要的更改。
Sutton分享了Block处理实例终止而不中断正在运行的作业的解决方案,采用了开源的Lifecycle D项目与Amazon Auto Scaling生命周期挂钩。这确保了实例在终止前可以优雅地完成工作负载,这是他们CI环境中的一个关键要求。
认识到优化构建基础设施的重要性,Block实施了一个利用Bazel、gRPC、Private Link、网络负载均衡器、应用程序负载均衡器和一个名为Build Farm的开源项目的远程构建基础设施。这种设置允许在单独的Mac实例上高效执行iOS模拟器测试,利用存储优化的Linux实例和ECS进行存储组件,以及ElastiCache Redis进行协调。
在整个迁移过程中,Block遇到了各种挑战,每一个都是一个学习机会。Sutton坦率地分享了他们在EBS卷预热和性能问题方面的经验,他们观察到实例完成本应只需几秒钟的任务却需要几分钟。他强调了通过读取整个原始设备来获取所有块并为设备注水的重要性,从而确保后续I/O操作的额定速度。Sutton还建议不要单独进行基准测试,而是使用真实工作负载进行测试,以考虑网络中断等因素。
Sutton还讨论了他们在AMI捕获过程中遇到的网络接口枚举问题,其中Thunderbolt设备可能会在不同实例上被分配不同的标识符(en4、en7)。这个问题通过删除macOS用于记录网络接口的缓存文件并确保在拍摄快照前正确关闭来解决。Sutton强调在拍摄快照之前在操作系统内关闭实例的重要性,因为stop instance命令本质上是切断电源,可能导致不一致的快照。
Block面临的另一个挑战是某些区域的主机容量有限,最初阻碍了他们的扩展努力。Sutton强调与亚马逊云科技代表密切合作,规划容量需求,并探索一个区域内多个Availability Zones的实例可用性的重要性。
在回顾促成他们成功迁移的关键因素时,Sutton强调了保持现有CI结构、遵循开发到暂存再到生产的工作流程,以及利用自动AMI创建的重要性。监控指标在识别和解决性能瓶颈方面发挥了关键作用,而专注于他们的核心竞争力并利用亚马逊云科技进行基础设施管理,使他们能够进一步优化CI基础设施。
Sutton分享了一些有见地的性能指标,突出了他们面临的挑战和实施的优化。他展示了一张图表,显示了两周内CPU温度和节流事件,其中一个小的iOS模拟器版本更改导致节流事件大幅增加,影响了构建时间和作业队列。
另一张图表显示了四天内磁盘I/O读取事件,两个明显的峰值对应于在集群上安装和卸载Xcode 16。最初认为无关紧要的这一变化,导致通常需要30分钟的构建延长到90分钟或更长时间。
Sutton还分享了一张时间图,显示了Block的远程测试系统启动三个iPad模拟器并并行准备它们进行测试工作负载所需的时间。y轴范围为3分钟,突出了他们实施的优化,每个拐点代表着减少CPU、磁盘、内存和网络带宽使用的调查,最终提高了模拟器启动时间和整体测试环境效率。
Sutton强调,他们的目标是深入了解Mac平台和硬件性能方面,同时将物理主机管理外包给亚马逊云科技。这种方法使他们能够无缝地与云基础设施模式集成,开启创新和增长的新可能性。
利用EC2 Mac实例现代化Apple平台开发的历程,对亚马逊云科技及其客户来说是一个巨大的成功。通过Moni Strato和Tim Sutton分享的见解,很明显亚马逊云科技不仅解决了一个长期存在的痛点,而且还为未来铺平了道路,在那里内部和云基础设施的界限变得模糊,使开发人员能够专注于真正重要的事情——创建创新和有影响力的软件解决方案。
下面是一些演讲现场的精彩瞬间:
亚马逊云科技宣布推出EC2 Mac实例,首次让客户能够在亚马逊云科技上运行macOS工作负载,满足了iOS和macOS开发人员长期以来在云端构建和测试应用程序的需求。
苹果的基础设施从一个小型vSphere集群发展到裸机Mac放置在公司数据中心,采用了创新的管理技术,如远程电源循环和Arduino驱动的键盘模拟器。
拥抱自动化使得频繁、低风险的部署成为可能,并防止了配置漂移,从而实现了更可靠和更新的系统。
监控指标展示了EC2实例启动的过程,显示了EBS活动的初始峰值以及macOS内核追赶时的后续恢复。
亚马逊云科技专家分享了优化内存使用和存储性能的技巧,包括使用非快照EBS卷、内部SSD以及实际测试以找到IOPS和带宽之间的最佳平衡。
亚马逊云科技工程师精心策划并执行了众多项目向Apple Silicon的迁移,与项目所有者密切合作,并利用早期采用者的反馈来完善流程,确保生产就绪。
演讲者强调了理解硬件和平台的技术方面的重要性,同时利用自动化和云基础设施来构建和集成更多功能。
总结
在这个引人入胜的叙事中,我们踏上了一段探索亚马逊云科技上苹果平台开发现代化的旅程。故事从亚马逊云科技亚马逊EC2高级产品经理Moni Strato介绍了突破性的EC2 Mac实例开始展开,这使客户能够在云中无缝运行他们的iOS和macOS构建管道。
故事深入探讨了导致这一创新的一系列巧合事件,包括2018年英特尔Mac迷你的推出以及亚马逊云科技推出Nitro系统,这是一套构建模块,使亚马逊云科技能够将苹果硬件集成到其云基础架构中。在过去四年里,亚马逊云科技扩展了对苹果芯片Mac的支持,在云中提供了最广泛的选择,包括M1、M2、M2 Pro和Mac Studio实例,并将在不久的将来支持M4和M4 Pro。
Moni强调了客户将其本地macOS构建基础架构迁移到EC2 Mac实例后所获得的显著性能提升和成本节约,报告显示构建性能提高了4倍,并行构建提高了3倍,构建失败率降低了80%。
叙述接着转向Block(前身为Square)的高级Mac迷你重启员Tim Sutton,他分享了团队从自托管的Mac持续集成基础架构迁移到亚马逊云科技 EC2 Mac的经历。Tim提供了他们在本地设置中面临的挑战,包括可靠性问题、配置管理的复杂性以及缺乏灾难恢复和冗余计划。
Tim深入探讨了EC2 Mac实例的吸引力,例如裸机快照功能、灵活采用新硬件以及与其他亚马逊云科技服务的无缝集成。他还展示了硬件实现的幕后情况,包括构成亚马逊云科技 Nitro系统的定制硅以及从由亚马逊弹性块存储(EBS)供电的外部Thunderbolt设备启动Mac实例的复杂过程。
叙述接着探讨了Tim团队开发的创新解决方案,包括基于Terraform的基础设施管理、自动化AMI创建管道以及实施自动伸缩组和生命周期钩子,以确保无缝实例管理和工作负载排空。
在整个旅程中,Tim分享了宝贵的经验教训,例如监控指标的重要性、了解基于EBS快照的卷对性能的影响,以及在裸机Mac实例上进行网络和电源管理的挑战。
在结束语中,Tim反思了这个迁移项目的关键经验,强调专注于他们的核心竞争力,同时利用亚马逊云科技的云基础设施能力。叙述以Tim意识到他们团队的力量在于对Mac平台的深入技术理解以及优化和集成云基础架构模式的能力,而不是物理管理主机本身而告终。
亚马逊云科技(Amazon Web Services)是全球云计算的开创者和引领者。提供200多类广泛而深入的云服务,服务全球245个国家和地区的数百万客户。做为全球生成式AI前行者,亚马逊云科技正在携手广泛的客户和合作伙伴,缔造可见的商业价值 – 汇集全球40余款大模型,亚马逊云科技为10万家全球企业提供AI及机器学习服务,守护3/4中国企业出海。