關於多項目組開發團隊的開發環境治理建議

前提

單業務線多分支開發,結構比較簡單,只須要部署好我的的本地環境便可,如統一的docker鏡像,公共的開發數據庫/存儲服務等(也能夠是各自的本地服務) 可是當業務線較多,相互之間又存在依賴關係,環境就會變得複雜多了。docker

現狀

  • 小組:m
  • 項目:n
  • 部署: 單項目各自負責部署
  • 環境:線上開發m套,線上測試m套;本地開發環境通常只有我的部署的項目,其餘依賴酌情處理

常見的狀況:

- a.項目A有n個其餘項目提供的接口,在部署A的時候必需要其餘項目可提供服務;
- b.新需求來了,主要任務在A項目上,小組Team1負責完成;
- c.開發過程當中發現需求有涉及到了,其餘項目須要作變更;這個時候須要在部署A的時候,同步部署其餘項目了.項目因爲是分開部署的,小組A須要和其餘小組協調溝通,同步進行,聯調-測試-發佈都須要線下溝通同步進行
- d.更麻煩的是,在開發A項目的時候,又來其餘需求了(其餘項目組-被依賴項目);同步開發,可是開發環境/測試環境只有m套,每一個小組各自使用一套,新的需求須要不斷溝通測試人員,協調開發環境/測試環境,經常處於等待-溝通-等待 狀態
複製代碼

開發細節:Team1在A項目上基於master建立了開發分支feature/pro1,小組成員基於feature/prod1分支建立各自的開發分支數據庫

致使的問題

1.部署繁瑣,依賴複雜
2.不統一;沒有任何一個完整的環境
3.不穩定;不管是本地開發環境仍是線上測試依賴的項目時刻都有被修改的可能
4.環境資源有限,須要反覆溝通協調;也還存在線上環境被構建其餘分支的狀況
複製代碼

解決思路

1.公共服務獨立且 明確

統一數據庫服務
- 只提供 dev,prev,prod三種
    - dev 數據來源prod,按期同步(脫敏)
    - prev = prod,線上數據庫集羣,實時雙向同步
    - prod 線上數據庫
複製代碼

2.A項目及全部依賴項目共同部署

- 整理通用的公共鏡像
- 拉取對應項目及分支
- 部署全部項目
- 使用一致的數據庫服務(開發環境就是開發庫)
複製代碼

3.K8s部署服務名-oomdev

-  分配隨機端口
-  獲取訪問地址`DEV_SERVER`:http://localhost:8001/api/v1/namespaces/docker/services/oomdev
-  Nginx轉發請求oomdev.local.dev.com到訪問地址`DEV_SERVER`
-  內部host文件修改-對應部署服務名
-  項目配置文件依賴服務名-固定
複製代碼

4.訪問路由

- 局域網訪問*.local.dev.com解析到測試環境的負載服務器
- 由負載服務器轉發到對應的服務
複製代碼

5.環境使用

- 我的申請:提交環境名
- 運維審覈(自動審覈經過?)
- 服務部署腳本建立
- 項目(部署/更新)-對應分支拉取
複製代碼
相關文章
相關標籤/搜索