迁移
更换 API 主机的零停机检查清单
· 阅读约 3 分钟 · My Geocode · #零停机#迁移清单#地理编码#部署#DevOps
在生产环境中更换 API 主机而不造成中断是可以做到的,但前提是要把这次变更当作一次有自身风险特征的部署,而不是直接推送到生产环境的一行配置修改。平稳切换与事故之间的差别,几乎总是在于准备工作,而不在于实际切换的那一刻。
切换之前:
- 提前准备好新主机的凭据,并在预发布或测试环境中用真实的请求模式确认其可用,而不只是手动测试一次调用
- 在应用中加入记录,标明每个请求由哪个主机提供服务,哪怕只是临时的,以便验证上线进度,并在事后按主机诊断问题
- 确认您的配置系统支持在不完整重新部署应用的情况下更改主机值,无论是环境变量、功能开关还是远程配置服务,因为如果切换中途出现问题,每次变更都需重新部署的流程反应会更慢
切换期间:
- 如果您的基础设施支持,请逐步推出变更,而不是一次性全部切换:按流量百分比、每次一台服务器或一个区域,或先切换一个非关键端点再切换其他端点
- 在上线窗口期间实时监控错误率和响应时间,并直接与切换前的基线对比,而不是与假定的可接受范围对比
- 在此期间保持旧主机的凭据有效并随时可用,这样回退只需修改配置,而不需要新的部署
切换之后:
- 在认定迁移完成之前,让新主机在全部流量下运行一段明确的观察期,因为有些问题只会在持续负载下或一天中的特定时段出现
- 如果两边都有日志,请抽取一批相同的请求,对比新旧主机实际返回的数据,以发现仅凭错误率无法暴露的细微数据差异
- 只有在观察期顺利结束后,才在一个确定的具体日期停用旧主机的凭据,而不是“以后再说”
由于 My Geocode 的兼容主机完全复现服务商的请求和响应结构,基于兼容主机的迁移在代码层面的实际改动通常仅限于主机名和身份验证凭据,从而减少了在切换窗口中风险最高的阶段引入的新代码量。身份验证本身支持四种方式:X-API-Key 请求头、Authorization: Bearer、HTTP Basic 认证或查询参数,因此根据您现有客户端库的结构,这部分变更往往只是纯粹的配置更新,根本不需要改代码。
零停机迁移与其说靠巧妙的基础设施,不如说靠纪律:充分准备、逐步推出、密切监控,并在您有足够把握不再需要之前,始终保留一条退路。