飞行中更换引擎:在实时负载下迁移 60,000 个应用
Azure Logic Apps Consumption 集成服务账户由约 60,000 个运行在旧版运行时上的 Azure Functions 应用提供支持。团队成功将这些应用全部迁移至更新的 Functions v4 运行时,且无需客户采取任何操作。这一成果是通过精心设计的多阶段方法实现的,旨在确保兼容性并最大限度减少中断。核心策略采用“影子运行”(shadowing),将真实的生产流量同时路由至旧版和新版运行时。这使得能够直接对比每一个结果,而无需让未经验证的路径影响客户。关键举措是建立强健的等价性基准(parity bar),确保对 100% 符合条件的流量进行分析,以区分真实缺陷与本质上非确定性负载。检测到的任何实际差异均在切换流量前被仔细修复。发布过程渐进且可回滚,即根据流量哈希逐区域逐步转移流量。一个关键特性是能够通过简单的配置变更回滚整个迁移,该变更可在数分钟内生效。旧应用的退役处理极为谨慎:首先停止旧应用,随后进入显著的观察期,之后才永久删除。这种分阶段方法确保任何意外问题均可解决,且不影响客户。此次复杂迁移之所以可行,是因为微软拥有并运营底层计算基础设施。客户持久数据(如协议和模式)保持原样,所执行的操作均为纯转换。这种控制平面实现了对两个运行时的并行执行与对比。主要挑战并非新运行时本身,而是证明其与现有客户负载的兼容性。旧版运行时即将达到生命周期结束(end-of-life),风险日益增加。转向采用隔离工作器模型的 Azure Functions v4,代表了重大的架构转变。由于主机模型变更以及涉及 60,000 个应用的大规模操作,标准的轻量级迁移选项(如原地升级或简单的部署槽)被认为不足。此次迁移确保了无客户可见的中断,尽管在极少数情况下,少量客户在高负载下曾遇到短暂的边缘案例,随后触发了回滚。团队吸收了复杂性,为客户提供了无缝体验。