DevOps 实践:数据迁移、持续部署与系统架构优化
1. 数据迁移
数据库变更通常无法回滚,否则可能会有数据丢失的风险,因此数据迁移需要特别小心。数据迁移类似于增量发布,分为三个步骤:
1. 部署兼容新旧模式的代码 :同时部署数据迁移代码。
2. 运行数据迁移代码 :在部署成功后,可以手动启动或作为部署脚本的一部分自动启动。
3. 移除旧模式代码并重新部署 :迁移完成后,手动移除理解旧模式的代码,然后再次部署。
这种将数据迁移与部署分离的方法,能让每次部署失败后都可回滚,且不会丢失数据。迁移仅在新代码在生产环境中被证明稳定后进行。虽然比在部署期间迁移数据稍复杂,但更安全,还能实现零停机部署。
对于涉及大量数据的迁移,由于迁移期间生产系统需要保持可用,因此需要特别注意。编写迁移代码时应采用增量方式,可能还需要使用速率限制器来优化性能,并同时使用新旧两种模式。例如,从一个表向另一个表移动数据时,读取和更新数据时可以同时查看两个表,但只向新表插入数据。
迁移完成后,要及时清理过时的代码。如果迁移需要较长时间,可在团队任务计划中添加提醒;对于非常长时间的迁移,可在团队日历中添加提醒或在可视化计划中安排“完成数据迁移”的任务。
这种三步迁移过程适用于任何外部状态的更改,除数据库外,还包括配置设置、基础设施变更和第三方服务变更。涉及外部状态时要格外小心,因为错误很难撤销,通常小而频繁的更改比大而不频繁的更改更好。
2. 持续部署
要实现持续部署,团队需要采用严格的持