用點手、改 console 養出來的伺服器,是沒人敢碰的「雪花機器」。IaC 把基礎設施寫成版本控管的程式碼——環境可重現、可審查、可回滾,重建一台跟跑一次 pipeline 一樣。
🧠 Intuition
TIP
把伺服器當「牲口,不是寵物」。寵物會取名、生病要救;牲口壞了就換一隻一模一樣的。IaC 讓「換一隻一樣的」變成 apply 一個檔案。
- 宣告式(declarative):描述「想要的最終狀態」(Terraform、K8s manifest),工具算出差異去收斂。主流。
- 命令式(imperative):描述「要執行的步驟」。直觀但難重現、難算漂移。
- 不可變(immutable):不改線上機器,改了就重建新映像替換 → 杜絕設定漂移(configuration drift)。
⚖️ Tradeoffs
手動 / 半自動腳本 — 起步快、債留後面
- console 點一點、SSH 改一改:上手最快,小規模能動。
- 問題:環境間漂移、沒人說得清現狀、重建要靠記憶與運氣;災難復原時最痛。
宣告式 IaC + 版本控制 + CI 套用 — 標準做法
- 基礎設施進 Git,走 code review 與 pipeline 套用(GitOps);環境可重現、可審查、可回滾。
- 用狀態檔/收斂偵測漂移;rollback 等於 revert commit 再 apply。
- 代價:前期學習與建置成本高;狀態檔(如 Terraform state)本身要妥善保管與鎖定,否則並行 apply 會打架。
🔑 Takeaways
- IaC 把環境變成可重現、可審查、可回滾的程式碼——把「雪花機器」換成「牲口」。
- 優先宣告式 + 不可變,杜絕設定漂移;rollback 就是 revert 再 apply。
- 代價在前期建置與狀態檔治理;state 要鎖定與備份,否則並行套用會出事。
No notes yet — jot your takeaways or Q&A here.