Prisma Migrate 放进存量团队前要先算清楚代价
· 阅读需 2 分钟
2022 年 Prisma 热度越来越高,很多团队开始认真讨论要不要把 Prisma Migrate 引进来。但对已经跑在 Sequelize 或自建 migration 体系上的项目来说,这不是“装个新工具”那么简单,它会牵涉数据库演进方式、代码生成流程和团队习惯一起变化。
2022 年 Prisma 热度越来越高,很多团队开始认真讨论要不要把 Prisma Migrate 引进来。但对已经跑在 Sequelize 或自建 migration 体系上的项目来说,这不是“装个新工具”那么简单,它会牵涉数据库演进方式、代码生成流程和团队习惯一起变化。
Sequelize 的 migration 在演示里总是很简单,真正到了团队协作阶段,问题就变成了另一种:本地能跑,测试环境半残,CI 里还会因为顺序不一致把表结构跑歪。
在 Node.js 项目里推广 TypeScript 时,我最建议优先收口的一层就是 DTO。它直接影响接口输入输出,也最容易在多人协作里变成“大家都以为自己理解一致,实际上并没有”的地方。
2021 年的 Node.js 项目里,如果还完全不谈 TypeScript,多少会开始显得有点吃力。项目一大、接口一多、团队一扩,人肉靠约定来维持字段一致性,很快就会出问题。
Docker 在 2021 年已经不再只是“服务器上部署用一下”了,越来越多团队开始把它往本地开发环境里推进。尤其是 Node.js 项目一旦依赖 Redis、MongoDB、MySQL 这些组件,大家机器上的环境差异会很快变成协作成本。
Markdown 真正进入团队使用后,通常不会只经过一种渲染方式。编辑器里要实时预览,命令行里要批量导出,线上站点还要再做一次正式渲染。只要这三条链路的规则不一致,内容就会慢慢长出很多“本地看着没问题,上线以后才发现不对”的小坑。
npm 真正开始好用之后,开发者很快就会遇到两个新问题:依赖到底应该装哪个版本,项目命令又该怎么统一。它们看起来像细节,但在 2013 年已经足够决定一个项目是“能复现”还是“只能在作者电脑上运行”。