GitHub 這篇文章介紹「基礎架構即程式碼」(Infrastructure as Code,簡稱 IaC),這是一種管理運算基礎架構的方式,用機器可讀的設定檔取代手動操作。文章形容做法是「寫一段程式碼描述你的基礎架構應該長什麼樣子,執行這段程式碼之後,它就會自動建立、更新或刪除對應的基礎架構資源」。也就是說,伺服器、網路這類設施不再靠人工一步步點設定,而是像寫程式一樣被定義下來。
文章指出 IaC 把基礎架構的開發方式,套用了一般軟體工程慣用的做法,包括版本控制、程式碼審查與測試,讓基礎架構的設定變得可被記錄、可重複執行,也方便除錯。技術上分成兩種做法:「宣告式」是描述最終想要的狀態,交給工具自己判斷該怎麼做,工具會比對現況與設定檔的差異,自動調整資源;「命令式」則是明確寫出建立基礎架構的每一個步驟與指令,比較適合需要處理複雜舊系統整合、或是需要細緻錯誤處理的多階段部署。
文章列出 IaC 的好處:開發、測試、正式環境可以用同一份設定檔建出來,避免「環境不一致」造成的問題;要開新環境時,也只要沿用同一份設定改參數即可。所有基礎架構的變更都能走 pull request 與審核流程,留下完整紀錄;還有工具能偵測「漂移」,也就是有人手動改了設定,並自動修正回來。文章也提到不少挑戰,例如專屬語法學習門檻高、不同雲端廠商的工具彼此不相容、有人為了應急直接手動改設定而繞過程式碼、測試複雜,以及機密資訊(例如密碼)如果直接寫進程式碼倉庫會有安全風險。GitHub 提到自家的 GitHub Actions(用 YAML 定義的 CI/CD 自動化)與 GitHub Codespaces(用容器設定檔定義開發環境)都是 IaC 概念的實際應用。
這篇文章比較偏企業維運與雲端架構的內容,對剛開始學程式的孩子來說不是直接會用到的技能,但背後的想法很容易懂:與其每次都用滑鼠一步步點設定、很容易漏掉步驟或記錯順序,不如把這些步驟寫成一份清楚的程式碼或清單,之後只要重新執行一次,就能得到一模一樣的結果,這種「把重複的操作寫成程式」的習慣,日後在自動化任何工作時都很實用。
雲端軟體工程開發工具