去年,我们根据所在产品线情况,整理了一份的开发要则(部分参考12-factor的内容和方式)。要则潜移默化的影响了后续的系统设计开发,使得新系统往更优雅、更具竞争力的方向发展。现在把要则放到博客和产品线技术汇,便于查阅与交流。
注:要则虽然由根据云时代特征制定的,但同样非常适合不在云跑的系统(文末有‘神书’推荐)
不要将两个app混放放在同一个仓库(repo). 用git submodules,这样你可以单独跟踪它们的变化
不要为不同环境(如开发、测试和生产)设置不同的代码库
在很多在线系统中,会使用session(会话)来传递当前的状态。当被调用方接收到session后,会将它保存下来,后续的请求,都会被路由到这个服务中。这时请求和请求之间,会有严格的调用顺序。我们的原则是需要避免这种情况。
不应该在git上面放jar包,或者binaryartifact,而是通过maven进行声明式依赖放git库,各种版本依赖会非常容易出错
Backingservice 意味着你的代码应该对数据库或其他存储不可知(松耦合)。
PS:最近看了一本神书《Unix编程艺术》,虽然是2000前开始写的,却已涵盖了以上要则背后的理念,膜拜一下。纵观整个IT发展史,基本是往Unix设计哲学的理念方向发展(如微服务,rest,敏捷编程的流行,符合了Unix的模块原则,组合原则,简洁原则,文本化(透明原则),经济原则等等)