聊聊單體應用的 4 點不良影響,總有 1 點擊中你

點擊上方「Java基基」,選擇「設爲星標」

做積極的人,而不是積極廢人!

源碼精品專欄

 

來源:blog.csdn.net/linsongbin1/

article/details/99179649

  • 0. 概述

  • 1. 系統穩定性很不可控

  • 2. 發佈時間真的好長

  • 3. 分支問題

  • 4. 會嚇跑新人的


0. 概述

單體應用有優點也有缺點,而所有缺點基本上都是一個原因導致的。

功能模塊都耦合在一起了。

不同功能堆在一起了,會引發各種各樣的問題,下面說一下自己體驗過的單體應用的痛。

1. 系統穩定性很不可控

目前公司有一箇舊的後端應用,裏面保羅萬物,有訂單、商品、支付、庫存、定時任務、MQ,還有各種管理功能,在今年九月份的時候,其中一個模塊出現了內存泄漏,最後導致了操作系統級別的oom killer,整個系統不可用了,而恰巧當時正在跑一個重要的且不支持冪等的批量指派任務,由於被強制停掉了,直接影響數據在前端的展現,且又不支持重新跑數據,運營人員直接就發飆了:怎麼回事。後面研發只能邊捱罵邊修複數據,苦b的很。

單體應用耦合的模塊多了,容易造成功能相互影響,真是躺着也中槍

2. 發佈時間真的好長

單體應用耦合的模塊多了,也會導致應用啓動時間變長,像之前的一個內部應用,啓動時間是2分多鐘,且有10臺機器,使用原始的滾動發佈方式,線上發佈完後要20分鐘,非常漫長;而對於測試人員來說,在測試環境裏,經常要驗證bug是否修復好了,經常性的要發佈應用,每次都要等很久,真是苦不堪言,極大的降低了測試效率。

另外,發佈時間長,對於CI來說,也是災難。

3. 分支問題

當一個週期裏,有多個功能要上線的時候,研發這邊會基於主幹分支拉出各個功能分支,這裏會出現幾個問題:

  • 各個功能分支合併到主幹分支的時候,容易出衝突,除了處理衝突需要時間外,還容易處理出錯,導致代碼被覆蓋,很容易造成線上故障;

  • 如果公司摳門,出於成本考慮,只有一臺dev機器用於開發聯調,這個時候只能使用另外一個叫dev_all分支,所有功能分支的代碼都統一合併到dev_all分支,開發人員一多,又是各種合併問題,導致開發環境不穩定,前端開發每次都因爲這個,屌後臺研發。

4. 會嚇跑新人的

對於新手來說,看到了一坨龐大的代碼,真心是無從下手,你讓他接手或者乾點活啥的,成本都賊高的,且容易犯錯。對於有代碼情操的人,是會立刻走人的。對於暫時忍受的了人,心理陰影也會逐漸加大,外面有啥風吹草動的,也會走人的。



歡迎加入我的知識星球,一起探討架構,交流源碼。加入方式,長按下方二維碼噢

已在知識星球更新源碼解析如下:

最近更新《芋道 SpringBoot 2.X 入門》系列,已經 20 餘篇,覆蓋了 MyBatis、Redis、MongoDB、ES、分庫分表、讀寫分離、SpringMVC、Webflux、權限、WebSocket、Dubbo、RabbitMQ、RocketMQ、Kafka、性能測試等等內容。

提供近 3W 行代碼的 SpringBoot 示例,以及超 4W 行代碼的電商微服務項目。

獲取方式:點「在看」,關注公衆號並回復 666 領取,更多內容陸續奉上。