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,直接添加即可,這樣的好處是什麼呢?是爲了方便追責。

好啦,就說這麼多啦,希望對一些剛接觸生變變更的小夥伴有所幫助!

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