眾所周知,配置即程式碼≠基礎設定即程式碼

陈哥聊测试發表於2024-06-24

前段時間翻到幾條留言,問:

“配置即程式碼和基礎設施即程式碼一樣嗎?”

“配置即程式碼是什麼?怎麼都是基礎設施即程式碼?”

我們都是知道,DevOp的快速發展,讓伺服器管理與配置的時間大大減少,配置即程式碼和基礎設施即程式碼作為DevOps的重要實踐,在其中起到了關鍵性作用。

不少人將二者看作是一件事,配置即大程式碼是關於管理特定的應用程式配置設定本身,而基礎設施即程式碼更關注的是部署支援應用程式環境所需的底層基礎設施。

二者雖然相互補充,經常一起使用,但為了避免混淆,我將從概念、意義以及做法三個方面介紹配置即程式碼。

一、什麼是配置即程式碼?

配置即程式碼(Configuration as Code,CaC)是不同環境之間配置的版本遷移。在配置即程式碼的實踐中,配置資訊通常以文字檔案的形式儲存,這些檔案可以用版本控制系統(如Git)進行管理。透過這種方式,每次環境配置的變更都可以被追蹤和審查,有助於團隊協作和問題的快速定位。

配置即程式碼一般用於管理軟體包和元件的設定。這適用於廣泛的行業。在應用程式開發過程中,可能會使用配置來支援多種作業系統。透過維護配置即程式碼,您可以跟蹤數百甚至數千個硬體原理圖和嵌入式開發的測試資訊。

二、為什麼使用配置作為程式碼?

團隊可以透過多種方式從實現配置為程式碼中受益。

1.可擴充套件性

像IaC一樣將配置更改作為程式碼處理,使團隊能夠從單個集中位置建立、更新和維護配置檔案,同時利用一致的部署方法。舉個例子,如果正在開發USB裝置,則需要每個儲存選項的配置檔案。我們可以將這些檔案與所需的軟體結合起來建立數千種配置。

2.標準化

當配置像原始碼一樣編寫時,開發團隊可以使用開發最佳實踐,例如linting和安全掃描。在提交之前,必須審查並測試配置檔案以保證修改符合團隊的標準。配置可以透過複雜的微服務架構保持穩定和一致。當建立起一套流程時,服務可以更有效地協同運作。

3.可追溯性

將配置設定為程式碼需要版本控制,可以方便地儲存和跟蹤配置和程式碼檔案的更改,這可以提高軟體釋出的質量水平。一旦出現錯誤,開發團隊可以透過比較版本化的配置檔案來找到其來源並快速識別、修復問題。

4.提高生產力

開發團隊可以透過將配置轉換為託管程式碼來簡化構建週期。這樣一來,IT和終端使用者的工作效率都會提高。管理員可以將所有內容合併到釋出版或從單一版本控制系統構建中。開發人員對他們所做的更改的準確性充滿信心,因為工作流程的每個元件都經過了一致的測試。

三、團隊如何將配置作為程式碼實現

我們需要決定如何在版本控制系統中儲存在程式碼中建立或重構的配置檔案,可以透過以下方式實現:

  • 將配置檔案和程式碼放在同一個儲存庫;
  • 根據需要將配置檔案和程式碼放在一起;
  • 基於元件的開發和微服務;
  • 將配置和程式碼儲存在單獨的儲存庫中。

1.單一回購策略

如果所有檔案都放在一個儲存庫中,那麼工作流程可能會變得更簡單。但如果我們將配置檔案視為原始碼,那對設定的任何更改都可能會造成新的構建,導致團隊的工作速度變慢。

其實,並不是所有配置更新都需要構建。系統管理員會對其進行配置,以啟用對配置檔案的更改合併,最終將其部署到一個預生產環境中進行測試。除此之外,我們需要建立跨團隊統一的命名約定,因為一切都是程式碼,所以在執行審計時區分配置檔案和原始碼極易出現錯誤。

2.微服務/基於元件的開發

通常情況下,開發團隊會將程式碼分成多個儲存庫,再根據此架構將配置檔案與特定微服務一起進行儲存和版本控制。在此過程中,即便遇到與觸發器構建類似的問題,但處理起來可能更簡單。另外一提,如果準備使用其微服務對配置檔案進行版本控制,我們需要提前規劃如何分發配置更改。

3.建立配置測試環境

對於簡單的配置修改來說,我們沒有必要設定完整的應用程式程式碼測試環境。團隊可以透過將測試環境的範圍限制在配置部署過程的要求範圍內來節省時間和金錢。

四、具體問題具體分析

配置即程式碼可以以多種不同的方式實施,但並非所有方式都適合每個開發團隊。開發團隊需要根據自身需要選擇適合的方式:

  • 利用獨特的配置原始碼控制儲存庫;
  • 建立自定義構建和部署過程;
  • 建立以配置為重點的測試環境;
  • 確保有批准和質量控制程式;
  • 配置內的秘密管理。

透過將配置作為程式碼納入流程,開發團隊可以獲得顯著的優勢。透過自動跨環境部署配置,可以更輕鬆地應用更新並確保一切按預期執行。由於它使用單個儲存庫,因此更改易於管理和跟蹤。

在增強程式碼開發和部署的同時,配置即程式碼也是管理和控制複雜基礎設施和管道的寶貴工具。因此,您可以獲得加快開發所需的可見性和控制力,而不會損害部署的安全性。

參考資料:

【1】Hanmid Akhtar,Configuration as code: everything to know,2024.

【2】Adam Bertram,Config as code: what is it and how is it beneficial,2021.

相關文章