工程團隊說「我們需要花時間做 infra」,對參與資源決策的人來說,這句話的翻譯常常是「花時間做一件看不到產出的事」。產品畫面不會變、使用者不會感覺到差異、營收報表上找不到對應的數字。這篇文章從管理角度說明 infra 在處理什麼營運問題、不處理的代價怎麼累積、以及出事後的補救成本為什麼比事前高。

工程團隊說的 infra 在處理什麼

infra(infrastructure,基礎設施)是讓應用程式能運作的底層資源與管理機制。工程團隊說「做 infra」時,處理的是五個營運層面的問題,每個問題都對應一種管理風險:

問題工程術語管理風險
系統壞了能不能重建IaC / state核心服務中斷後的恢復時間是分鐘級還是天級
誰能存取什麼資源IAM / 權限一次憑證外洩是否等於所有資料暴露
測試操作會不會影響正式客戶環境分離工程師在測試環境犯的錯是否可能直接波及生產
出事後能不能查到誰改了什麼變更紀錄事故排查是靠系統紀錄還是靠口頭回憶
雲端帳單花在哪裡、能不能歸屬tagging成本是一筆公共支出還是可拆解到產品線

這五件事的共同特徵是平時完全不被感知。感知到的時刻通常是出事的時刻 — 一次無法重建的當機、一次稽核要求交不出的存取紀錄、一筆無法解釋的雲端帳單。

不做的代價怎麼累積

infra 的投入是可見的(工程師時間),不做的代價是隱藏的。隱藏代價分散在不同科目、由不同人在不同時間點承擔,所以在任何一次預算會議上都不會以完整形態出現。把它拆開:

恢復能力的缺口。系統的建置方式如果只存在某個工程師的記憶裡,這個人不在座位的期間就是系統的恢復能力空窗。一個有環境描述檔的系統,重建是一條指令的事(分鐘級);一個純手動建出來的系統,重建要靠逐一比對設定來還原(天級)。兩者在正常運作時看起來完全一樣,差別只在出事那一刻的恢復速度。

人員依賴的脆弱性。「只有某個人知道怎麼改」這句話翻譯成管理語言是「這個人是營運連續性的單點故障」。他離職、請長假、或單純忙不過來的時候,團隊就失去安全改動系統底層的能力。把建置方式寫成程式碼後,新人讀程式碼就能理解系統結構,交接從口頭傳承變成文件閱讀。

不可見的持續支出。沒有資源盤點與標籤的雲端帳號,會累積「沒有人記得還開著」的資源 — 測試完沒關的機器、下線服務遺留的資料庫、實驗用的儲存空間。個別金額不大,但持續計費、沒人負責、也沒人會主動去清(因為不知道關了會不會影響什麼)。多數團隊第一次盤點時會發現 10-30% 的月費花在沒有人認領的資源上。

合規準備的反覆成本。外部稽核(SOC 2、ISO 27001、客戶安全問卷)要求「列出所有對外暴露的服務」「提供權限變更紀錄」「證明生產環境的變更有經過審查」。手動環境每次回應這些要求都是一次人工考古(一到兩週的工程師時間)。有環境描述檔和變更紀錄的系統,回應同樣的問題是跑幾條查詢(幾小時)。稽核是週期性的,準備成本的差距每年都會兌現。

出事的處理與補救

事前做和事後補的成本差距是非線性的。幾個具體場景:

憑證外洩。一把長期有效的存取金鑰如果外流,攻擊者能用它存取金鑰對應的所有資源。補救需要:撤銷外洩的金鑰、找出所有使用它的系統同步更換(而「所有使用的地方」在手動環境裡通常沒有完整清單)、評估外洩期間有沒有被異常存取、通知可能受影響的客戶。事前用短期自動過期的憑證取代長期金鑰,外洩的衝擊從「不定期限的完整存取權」縮到「幾分鐘後自動失效的短暫存取」。

生產環境誤操作。測試環境和生產環境沒有隔離的系統,一次操作失誤可能直接影響正式客戶。補救需要:判斷受影響範圍、修復資料、對外溝通。事前做好環境分離,測試環境的操作從物理上接觸不到生產資料。

無法重建的系統中斷。核心服務掛了,但它是手動建出來的、沒有環境描述檔。補救是逐一比對雲端管理介面上的設定,試圖還原出跟原來一樣的環境 — 但沒有人能確定「跟原來一模一樣」,因為沒有紀錄記載原來長什麼樣。恢復時間以天計,期間服務不可用。

這些場景的共同結構是:事前投入的成本是固定的(幾週工程師時間),事後補救的成本隨影響範圍和持續時間膨脹。

哪些該現在做、哪些可以排後面

工程團隊提出的 infra 工作可以按「事後補救成本的陡峭程度」分級:

分級特徵對應的工作延後的代價
地基級出事不可逆或補救代價極高憑證管理、權限管控、刪除保護一次事故就可能超過全年投入
營運級出事可恢復但反覆消耗環境分離、變更紀錄、環境描述檔每次事故和每次稽核都多花時間
優化級不做也不出事,做了提高效率自動化護欄、成本標籤、進階治理持續的小額浪費與人工重複

地基級的工作延後風險最高,營運級的工作每次事故都在付利息,優化級的工作可以等到地基穩了再做。跟工程團隊確認「這次提案裡哪些是地基級」,是判斷優先級的起點。

常問的問題

已經在雲端了,為什麼還需要額外做?

在雲端代表公司已經租用了運算資源,但租用資源跟管理資源是兩件事。資源的存取控制、環境隔離、變更紀錄、備份策略 — 這些都需要主動設定。很多公司「上雲」之後,資源是工程師在管理介面上一個一個手動建出來的,沒有描述檔、沒有盤點、沒有分區設計。infra 要補的正是管理層。

投入多少工程師時間?

分階段做。第一階段(1-2 週)處理地基級的三件事:憑證安全、權限收斂、有狀態資源的保護。第二階段(2-3 週)建立環境描述檔和環境分離。第三階段(持續但零星)加上自動化護欄和成本標籤。每個階段獨立交付價值,不需要一次投入全部時間。具體的階段拆法對應成熟度階梯(從全手動到全程式碼治理的五階分級)。

出事了能不能事後補?

地基級的工作事後補的代價遠高於事前。一把憑證進了版本控制歷史就永久留存,撤銷金鑰只是第一步,清除歷史和輪替所有受影響的存取是更大的工程。環境描述檔和變更紀錄的事後補救代價相對線性 — 越晚開始、需要回頭整理的資源越多,但不至於跳崖式暴漲。判斷依據是:這件事出了問題,補救成本是隨時間固定的、還是隨時間加速的?後者該現在做。

怎麼判斷工程團隊做得怎樣?

幾個可以追蹤的指標:目前有多少比例的資源被環境描述檔管理(覆蓋率)?測試環境跟生產環境是否完全隔離?變更是否走審查流程?主要維護者如果不在,其他人能不能靠描述檔安全地做小幅修改?這些指標從「否」翻成「是」,就是 infra 投入的階段性交付。

延伸閱讀