我们在做 Flask 项目的时候用了 alembic 做 migration。现在我和另外一位工程师对于 migration 的时机,两个人的意见不太一致:
观点 1:在环境部署的时候就跑 alembic,把 schema upgrade 运行完毕,如果有数据迁移的脚本则运行脚本。结束后认为部署完毕,然后开始启动各种应用层服务。综合来说也就是应用层和 schema / data migration 解耦。
观点 2:alembic schema migration 和数据 migration 不由部署来控制,而是在应用层运行前触发。如果有多个独立应用服务对 migration 有依赖,每个应用服务都在启动前触发 migration。综合来说也就是部署逻辑和 schema / data igration 解耦。
想虚心请教下大家的意见。谢谢。