一千萬個為什麽

搜索

各種VCS和CI/CD工具的優缺點是什麽來存儲,更改和部署VCS中1000多個客戶的配置片段?



此問題的後續行動。

我們正在向Configuration as Code(CaC)過渡。目前,許多站點都是手動配置的。這樣做的一個副作用是,所以現在配置被破壞,沒人知道發生了什麽。通過應用CaC,可以在環境被破壞時查閱版本控制系統(VCS),然後更容易找出問題的原因。另一個優點是人們無法直接在生產系統上更改配置。

One of the comments to this Q&A was whether the configuration is shared between customers. At the moment this is not the case and this is something we would like to prevent as sharing too much could also be a disadvantage as this could cause tangled configuration, i.e. spaghetti.

總之,每個客戶站點有多個配置文件。

<�強>過程</強>

更改配置並將其合並到主服務器或主服務器後,必須部署配置。

必須遷移1000多個客戶環境。一種方法是創建1000個VCS存儲庫。這樣做的一個優點是配置改變將導致部署到特定環境,例如,推送到VC​​S customer0001的代碼會將配置部署到customer0001。

討論</強>

由於有超過1000個客戶,我想知道1000個存儲庫在成本,維護等方面是否是一個好主意。如何為配置創建單獨的VCS並為每個客戶創建一個文件夾,即monorepo。例如。:

VCS存儲庫

  • customer0001
    • configFileA
    • configFileB
    • configFileC
  • customer0002
    • configFileA
    • configFileB
    • configFileC
  • customer0004
    • configFileA
    • configFileB
    • configFileC
  • customer0005
    • configFileA
    • configFileB
    • configFileC
  • customer0998
    • configFileA
    • configFileB
    • configFileC
  • customer0999
    • configFileA
    • configFileB
    • configFileC
  • customer1000
    • configFileA
    • configFileB
    • configFileC

一個優點是很明顯,所有配置都駐留在一個存儲庫中,但如果某個客戶文件夾更改並將其部署到客戶的環境中,如何觸發某個構建?

可以在Jenkins中創建一個自定義groovy腳本,在某些VCS存儲庫(如bitbucket)中進行一些過濾或使用分支,但我想知道是否有更有效的解決方案。

首選答案

一張表格,概述了利弊:

| VCS | Monorepo | CICD     | Pros               | Cons                  | 
|-----|----------|----------|====================|=======================|
|     |          | Circleci |                    |                       |
|-----|----------|----------|--------------------|-----------------------|
|     | true     | Jenkins  |                    | groovy script required|
                                                 | to filter customer    |
                                                 | folders               |
                            |--------------------|-----------------------|
|     | false    | Jenkins  | code change results|more than 1000 jenkins |
                            | in deploy to       |jobs required          |
                            | associated customer|                       | 
                            | environment        |                       |
|                           |--------------------|-----------------------|
| git |          |          |                    |                       |

轉載註明原文: 各種VCS和CI/CD工具的優缺點是什麽來存儲,更改和部署VCS中1000多個客戶的配置片段?

一共有 1 個回答:

我個人將它們保存在單獨的存儲庫中,以便明確客戶隔離:

  • 最小/沒有客戶之間不必要幹擾的風險
  • 可以為不同的客戶提供不同的訪問控制
  • 可以為不同的客戶提供不同的CI/CD管道和/或配置
  • 更簡單/標準的CI/CD配置
  • 清理每個客戶的存儲庫歷史記錄
  • 更容易計算每個客戶的資源使用情況
  • 降低維護風險 - 最好只讓少數客戶同時降低所有客戶

我也看到了一些缺點,但恕我直言還不足以提供平衡:

  • 需要更多資源(每個客戶一個CI/CD管道),但這些成本可以反映在服務定價中。由於自動化,他們應該變得更小。
  • 在客戶之間共享配置/程序變得困難

如果需要統一的VCS願景/演示文稿,我仍然會保留單獨的每個客戶存儲庫(從而保留上面的部分/全部專業人員),在一個傘形存儲庫下集中管理:

  • 傘形存儲庫只包含一個清單文件,列出了每個客戶的存儲庫,它們的版本以及其他一些相關信息
  • 一個或多個單個存儲庫中的更改需要伴隨存儲庫中的相應清單更改以推進整個項目
  • 一小組包裝工具將用於在存儲庫級別操作,但控制各個存儲庫