博客 / 詳情

返回

眾所周知,配置即代碼≠基礎設置即代碼

前段時間翻到幾條留言,問:
“配置即代碼和基礎設施即代碼一樣嗎?”
“配置即代碼是什麼?怎麼都是基礎設施即代碼?”

我們都是知道,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.

user avatar kuaishoutech 頭像
1 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.