Java中war包项目生产中应该如何变更?

因为一个新来的小伙伴参与的一个项目,在我不知情的情况下上线了,他的上线方式非常粗暴,开发调试好以后,直接打了一个war包丢上去,结果导致项目不可用了,前面两天,我都在调试这个项目,所以我觉得有必要说一下,针对这种Web项目的变更,应该采取什么方式为妥。

一般而言,使用springBoot进行项目开发,都会考虑使用多环境配置,一个程序的正常配置,应该是有3份,分别是dev、test和pro,配置格式需要满足application-{profile}.properties的格式,其中{profile}对应你的环境标识,比如:

application-dev.properties:开发环境

application-test.properties:测试环境
application-pro.properties:生产环境

至于哪个具体的配置文件会被加载,需要在application.properties文件中通过spring.profiles.active属性来设置,其值对应{profile}值(dev、test、pro).

这样的好处是什么呢?变更非常方便,配置也非常清晰,环境不会混乱。可是在很多实际项目中,尤其是像外包之类的,很多项目根本不会考虑这么周到,而且项目框架也比较老,参与人员比较乱,很多人开发,根本不会考虑配置文件扫描机制,比如配置文件应该至少分3类,开发环境、测试环境和生产环境,而不是不管啥环境,统统都是一个配置文件,比如像这种:

我们可以很清晰地看到,这个项目有多混乱,并没有设置多环境扫描机制,导致全部的配置文件都需要扫描,而采取的机制是在配置文件中,通过配置2份式的配置方式,比如同一个配置文件中,写生产配置和测试环境配置,测试的时候通过注释生产的配置,实际上线就注释测试的配置,这种方式本来也无可厚非,但是一旦参与人员过多,就有人不按照规则来,开始乱配置。

这个项目我印象中前后大概有7-8个人参与,因为项目比较特殊,该项目是和特色某一个业务通讯的,一旦需要开发一些新功能,都会基于这个项目进行二次开发,比如增加一些交易之类的等等,所以为什么会有这么多人参与过这个项目,也就可以理解。

针对这种项目,生产变更是千万千万不能一个war包丢上去的,想当然的以为SVN的备份和生产一致,是大错特错的,这种想当然的想法,会给我们带来灾难,就跟前面这位小伙伴一样。因为很多时候,这些项目的网络关系都会用到映射,本来第三方提供的ip是128.1.136.102,但是行里面配置映射关系以后,就会变成70.0.4.11之类的,所以很多人可能生产变更的时候,就会直接更改生产中的配置文件,但是又不同步到SVN中,因为这个项目是他一个人负责,其他人都不知道,所以根本无法督促,就会导致,有时候生产的项目跟SVN不同步的问题。

所以,如果我们进行变更,最好的方式是什么?就是改哪变哪,同时做好备份,如果要替换别人的class文件,先做好备份,再进行变更,如果新增的class,直接添加即可,这样的好处是什么呢?是为了方便追责。

好啦,就说这么多啦,希望对一些刚接触生变变更的小伙伴有所帮助!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章