本系列主要解決的問題:針對一個功能龐大的企業應用 + 應用面對不同區域的眾多客戶,如何做好應用的多版本管理、各區域線上模塊的快速更新及系統的穩定性保障,可以採取對應用進行核心模塊按模塊化方式進行管理。 產生背景: 2017年接手一個已經維護了7年多的老項目,項目經歷了幾波人的維護,混雜了各種開發技術 ...
本系列主要解決的問題:針對一個功能龐大的企業應用 + 應用面對不同區域的眾多客戶,如何做好應用的多版本管理、各區域線上模塊的快速更新及系統的穩定性保障,可以採取對應用進行核心模塊按模塊化方式進行管理。
產生背景:
2017年接手一個已經維護了7年多的老項目,項目經歷了幾波人的維護,混雜了各種開發技術(JSP、Hibernate2.x、jdbc、spring、springmvc、Jquery1.x、Jquery2.x、bootstrap等),項目的結構也很混亂,依賴Jar的版本也很老(大部分是7年度的版本)。入駐項目的時候,主要待解決的問題:系統資料庫經常死鎖,客戶端響應十分慢,各地版本發佈混亂差異化功能多是硬編碼。
雖然項目已經舉步維艱了,市場前景卻很好,已經為公司攻城拔寨全國好多區域了。為了快速響應客戶的需求,勢必每周要有線上版本更新,項目通過GIT進行版本控制,接手時GIT已經有50多個分支版本。看著頭就痛!
初步解決方案:
1、資料庫卡頓問題(項目使用sqlserver)
優化關鍵業務的SQL(對查詢增加 WITH (NOLOCK)),優化資料庫關聯欄位的類型(保持類型一致、長度一致),升級hibernate4.x版本
2、GIT版本合併成一個開放版本(開放一個版本 + 各地發佈前生成測試版本)
對各版本的差異化功能,通過配置文件進行控制,配置文件採用 一主文件配置 + 多文件各地差異配置,發佈的時候通過修改主配置文件的差異配置文件進行控制。
3、統一開發技術
前端採用:Vue + Elment-UI,後端採用:Spring4.3.x + SpringMVC + Mybatis
4、制定開發規範
團隊開發要高效,大家必須遵循一定游戲規則,才能解決不必要的溝通成本。
5、通過敏捷的開發方式重構關鍵業務模塊。
存在問題:
1、因為整個項目依舊在一個工程里,版本發佈無法做到基於模塊版本更新,發佈前的測試也無法針對更新模塊獨立測試(無法保證更新模塊與其他模塊的邊界問題)
2、團隊的組員日常工作沒有重點,各個模塊穿插著開發。無法保障系統的穩定性。
為瞭解決這些問題,嘗試採用模塊化拆分項目,建立模塊領域模型,將整個項目劃分成多個模塊,各模塊完成本模塊的所有業務功能,同時提供對其他模塊的服務,發佈時通過組裝子模塊的方式對外發佈;測試人員只需針對更新的模塊進行測試。對團隊按模塊進行人員劃分,保證核心模塊開發人員的穩定性。
模塊化主要實現方式:
1、架構圖:
2、模塊化主要分層 4層 構建:
1)基礎技術框架層:提供前後端開發資源及其版本的控制,提供能力:緩存服務、系統配置服務、工具類(字元、日期、文件等);
2)系統管理模塊層:基於基礎框架,實現各項目的基礎管理模塊,提供能力:字典、圖標、菜單、用戶、角色、許可權管理、機構管理等;
3)業務領域模塊層:基於基礎框架,實現本業務模塊的所有業務功能及對外的服務;
4)應用發佈層:通過Maven構建方式組織應用需要的模塊,構建發佈應用。