最近,eBay 分享了他们在采用管道驱动的自动化解决方案方面的进展。该解决方案让他们能够实现对其框架和基础设施的持续更新。该解决方案的架构有可能变得更加通用,因为它采用了可插拔和松散耦合的方式,提供了良好的可扩展性。
eBay 的平台包括两个关键组件:作为应用程序代码基础的框架和负责托管应用程序的云基础设施。通过利用自动化解决方案,eBay 简化了作业的准备、执行和验证过程,从而显著提高了生产率。
在这个庞大而复杂的市场中,存在各种类型的升级,例如框架升级、框架迁移和云迁移。由于平台的规模和复杂性,这些升级在持续地发生,这也说明了 eBay 系统在不断演化和增强。
我们以一个特定的云迁移案例为例。在这个案例中,我们需要将云基础设施从依赖虚拟机的 Openstratus 迁移到基于容器技术的 Kubernetes。这个迁移对应用程序开发生命周期有所影响,因为它涉及从基于库的清单方法到基于镜像的清单方法的转换。要完成这种类型的迁移,通常需要完成定义好的一系列任务,包括元数据收集、配置工作负载、迁移网络拓扑和流量、创建新实例、实现监控,以及停用以前基于虚拟机的资源池。
只依赖单独的脚本或自动化工具可能不足以确保平台级变更的质量。因此,eBay 团队为他们的自动化解决方案设想了一些特定的功能,包括要求每个工作流包含多个任务,每个任务与生态系统进行无缝交互以执行必要的操作。此外,还需要对工作流任务进行有效的管理和编排,确保自动化框架里的操作能够顺利执行。
该解决方案的架构如下图所示。
图片来源:https://tech.ebayinc.com/engineering/ebays-common-automation-solution-for-platform-evolution/
架构包含了两个主要组件:编排器和可插拔管道。编排器负责根据输入来确定流,并相应地执行预定义任务。在执行流时,编排器确保任务上下文的持久化,可以在下一个任务执行之前对其进行恢复。然后,编排器利用Quartz作为任务调度引擎对任务进行顺序处理。
在编排器启动期间,会有一个流管理器来预加载流定义并激活负责编排任务执行的任务监听器。此外,流管理器还支持任务重试或在必要时跳过特定任务等功能。编排器的内部功能如下所示。
图片来源:https://tech.ebayinc.com/engineering/ebays-common-automation-solution-for-platform-evolution/
之前已经报道了 eBay 开始使用契约测试来安全地演化内部API和满足客户端团队的需求。
eBay 的平台演进涉及可重用任务和组件,包括可以跨不同流共享的强化通用任务。平台团队认为,他们基于管道的自动化解决方案将是支持未来基础设施和框架升级的关键能力。
原文链接:
https://www.infoq.com/news/2023/06/ebay-platform-upgrade-automation/
评论