知识卡片
代码库与部署的一对多
内容
一个应用对应一份代码库,但可以有多个部署实例(开发、测试、生产环境各一份),所有部署共享同一份构建产物,不需要为不同环境重新构建代码。凡是会在部署之间变化的东西(比如配置)都不应该留在代码库里,否则就意味着”同一份代码”其实在不同环境里已经悄悄变成了不同的东西。共享代码如果被多个应用复用,应该拆成独立的库或可独立运行的服务,而不是复制粘贴或者塞进同一个代码库。发散:这条原则本质是在划一条边界——”构建时固定的东西”和”部署时可变的东西”必须分开存放,混在一起就意味着每次换环境都要重新构建,直接违反了[[15-Factor方法论的定位]]追求的可移植性。
参考来源
《Cloud Native Spring in Action》第2章《Cloud native patterns and technologies》