1. 程式人生 > >模塊化工程構建系列(一)

模塊化工程構建系列(一)

應用 AC pan 數據庫 方式 權限 升級 jquery 解決

  本系列主要解決的問題:針對一個功能龐大的企業應用 + 應用面對不同區域的眾多客戶,如何做好應用的多版本管理、各區域線上模塊的快速更新及系統的穩定性保障,可以采取對應用進行核心模塊按模塊化方式進行管理。

  產生背景:

  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構建方式組織應用需要的模塊,構建發布應用。

模塊化工程構建系列(一)