在约束下排序
大规模迁移无法一次完成,但也不能随意排序。批次引入顺序:有些工作负载必须先迁,因为其他系统依赖它们;有些必须最后迁,因为风险最高;还有些要等前置条件就绪。批次计划回答的是「这件事开始之前,什么必须已经成立」。
批次如何划分
按依赖与耦合分组,而不是按部门。共享的身份、网络和数据平台通常构成较早的基础批次。依赖少、关键度低的应用随后跟进,用来积累经验并验证方案。高风险系统及其紧耦合的数据库放在后面,此时工具和运行手册已经过演练。
第零批
每个计划都需要第零批:后续批次所依赖的共享服务、落脚区和可观测性。跳过它会导致第一批中途卡住,因为日志、DNS 或访问控制还没准备好。应把第零批当作有独立验收标准的产品来交付。
进入与退出
批次开始前就要定义进入条件、回滚触发条件和退出条件。进入条件可能包括经过测试的运行手册和每个应用指定的负责人;退出条件包括稳定期、旧资源的下线以及文档更新。例如,一个批次切换成功却从未下线源资源,会留下永久的双份成本和一套仍需打补丁的系统。
与大爆炸迁移的对比
大爆炸迁移理论上很快完成,实践中代价高昂,因为一个坏依赖就能让整个切换作废。批次用更长的总时长换取可回退的步骤、可度量的进度,以及每批之后调整计划的能力。代价是协调开销,因此批次规模应保持较小。