專案檔案路徑架構

在 UDE 架構下,建議每一個專案規劃以下系統目錄用於存放檔案,這些目錄的路徑,也都是UDE內預設的環境變數。 各類目錄下的第一層 ./UDE/ 目錄,原則上保留給 UDE framework使用,在規劃設計專案時,請避免使用。

UDE 路徑 預設路徑 說明
${global.config.path} ${BASEDIR}/GLOBAL/global-config/ 掛載多個專案時,共用的設定檔案
${global.resource.path} ${BASEDIR}/GLOBAL/global-resource/ 掛載多個專案時,共用的資源檔案
${global.data.path} ${BASEDIR}/GLOBAL/global-data/ 掛載多個專案時,共用的資料檔案
${config.path} ${BASEDIR}/ap-folder/config 個別專案的設定
${resource.path} ${BASEDIR}/ap-folder/resource 個別專案的資源檔案
${data.path} ${BASEDIR}/ap-folder/data 個別專案的資料檔案
${temp.path} ${BASEDIR}/ap-folder/temp 個別專案的暫用檔案
${log.path} ${BASEDIR}/ap-folder/log 個別專案的log目錄

${global.config.path}

通常放置與系統環境相關的設定檔,這些設定可能在開發環境、SIT環境、正式環境下各有不同,例如資料庫連線方式、LOG 記錄方式。一般會把這部分的資源納入版本管理,但是在發行、佈版時,可能會做一些額外的客製參數置換處理(如機敏性設定值、伺服器IP)。

${global.resource.path} / ${resource.path}

存放共用的資源檔案。一般來說會納入版本管理,以便隨同版更發佈適當內容。

如果專案中包含多個子系統,而且包裝為不同的WAR檔掛載,比方區分為前台/後台應用系統。這種情況下,共用資源檔案,像是檔案大小較大的字型檔,可以放在 ${global. resource.path}。個別專案使用的資源檔案,就放在 ${ resource.path} 下。

部分資源檔案類型可能會同時存在共用及專案路徑下,如代碼檔、寄發電子郵件範本,端看專案規劃方式決定。

${config.path}

${config.path} 放置單一專案所使用的設定檔,而且這部分的設定資料應與環境無關。盡可能使發行、佈版時,此部分的檔案內容可以不用再異動。

必要時可以在 ${global.config.path}下的設定檔定義環境變數,於此再使用環境變數以增加使用彈性。

一般來說,這部分的資源會納入版本管理。

${global.data} / ${data.path}

系統運作過程中的產出資料檔案,原則上同一個專案下的多個子系統,可以存取同一個 ${global.data.path}目錄,可作為資料交換用。

而同一個子系統若佈署在多台不同的主機上做負載平衡,${data.path}目錄應掛載同一個NFS,或用其它抄寫機制,以做為共用資料存取。例如 USER 在 SERVER1 上傳的圖片,之後改登入到 SERVER2 時也應該要看得到。

通常這部分的檔案不會納入版本管理。而在正式環境中,應該有其它檔案同步備份的機制以確保資料不會遺失。

${temp.path} / ${log.path}

都是個別專案所使用目錄,原則上都在主機上的local檔案系統,存取速度較快。 ${temp.path} 路徑下不會放置需要保留的檔案,也會為其規劃週期較短的檔案清理機制。

UDE 風格的發行管理

  • BASEDIR: 一般下載整個專案後,第一層的 BASEDIR 目錄,即是可供開發人員使用的開發環境設定。
  • BASEDIR/[專案目錄] :
Root
│ 
├──BASEDIR
│  │ 
│  ├──GLOBAL
│  │  ├──global_config    // ${global.config.path}     共用設定檔案
│  │  ├──global_resource  // ${global.resource.path}   共用資源檔案
│  │  ├──global_data      // ${global.data.path}       共用資料檔案 (不入版控)
│  │  └──projects         // 所有專案 systemProperties 放置目錄
│  │  
│  ├──APP1 
│  │  ├── log        // ${log.path}      個別專案log目錄  (不入版控)
│  │  ├── tmp        // ${temp.path}     個別專案暫用檔案 (不入版控)
│  │  ├── resource   // ${resource.path} 個別專案資源檔案
│  │  ├── data       // ${data.path}     個別專案資料檔案
│  │  └── config     // ${config.path}   個別專案設定檔案
│  ├──APP2 
│  │  ├── ...
│  │  └── config
│  └──APP3
│     ├── ...
│     └── config
  • BASEDIR_RELEASE:針對不同環境的 DEPLOY,可以把需要覆蓋的設定檔,置於 BASEDIR_RELEASE/[SIT|UAT|PROD]/... 等路徑下,並自行撰寫相關佈署工具,在 DEPLOY 時蓋過原先 BASEDIR 下的同名檔案,也可在此時針對檔案內容進行變數內容代換。

  • 例如:SIT SERVER A 只需要佈署 APP1、APP2,則佈署工具的行為大致如下:

    • COPY BASE/GLOBAL、BASE/APP1、BASE/APP2 到 SERVER 上的目的路徑
    • 取得 BASEDIR_RELEASE/SIT/GLOBAL、BASEDIR_RELEASE/SIT/APP1、BASEDIR_RELEASE/SIT/APP2 內容,進行變數內容代換、最後複製到 SERVER 上的目的路徑。
    • 佈署相關 war 或 jars。
    • 當然,啟動SERVER時,必須指定 -DBASEDIR 到 SERVER 上的目的路徑。
│  
├──BASEDIR_RELEASE
│  │ 
│  ├──SIT
│  │  ├──GLOBAL
│  │  │  ├──global_config
│  │  │  ├──global_resource
│  │  │  └──projects
│  │  │  
│  │  ├──APP1 
│  │  │  ├── resource
│  │  │  └── config
│  │  │  
│  │  └──APP2 
│  │     └── config
│  ├──UAT
│  │  ├──GLOBAL
│  │  │  ├──global_config
│  │  │  ├──global_resource
│  │  │  └──projects
│  │  │  
│  │  ├──APP1 
│  │  │  ├── resource
│  │  │  └── config
│  │  │  
│  │  └──APP2 
│  │     └── config
│  └──PROD
│     ├──GLOBAL
│     │  ├──global_config
│     │  ├──global_resource
│     │  └──projects
│     │  
│     ├──APP1 
│     │  ├── resource
│     │  └── config
│     │  
│     └──APP2 
│        └── config
│
  • 以下是個別專案原始碼的目錄,就依專案需求自行規劃。
├──APP1-PROJECT
│  │  pom.xml
│  └──src
│
├──APP2-PROJECT
│  │  pom.xml
│  └──src
│
└──APP3-PROJECT
   │  pom.xml
   └──src

results matching ""

    No results matching ""