邁向零人工介入運維:這是一種架構,不是一套產品
這個願景引人入勝:系統自主運行,故障在用戶察覺之前便已偵測並修復,部署出現問題時自動回滾,on-call 輪班只保留給任何人都沒有預見過的邊緣案例。
這不是科幻小說,而是最成熟的工程組織正在積極建構的架構目標。但通往零人工介入運維的路徑,不是你能購買的產品、採用的平台,或配置的工具。它是一連串架構決策——每一層都是下一層的先決條件——而大多數組織嘗試以錯誤的順序建構它們。
自主運維的分層架構
零人工介入運維不是單一能力,而是五個相互依存的層次所構成的堆疊。幾乎每個嘗試它的組織都有相同的失敗模式:在底層還不穩固之前,就試圖建構上層。
Layer 0:可觀測性——看不到的,就無法自動化
在系統能夠自我治理之前,它必須能夠感知自己。這意味著跨所有服務的完整、結構化、關聯化遙測資料:分散式 trace 追蹤請求從用戶瀏覽器到資料庫再返回的完整路徑;metrics 捕捉不只是系統健康狀態,還有業務訊號;logs 具有結構化格式、可查詢,並有完善的保留策略。
大多數組織認為自己有可觀測性,因為他們有監控。但這是兩回事。監控告訴你有問題。可觀測性告訴你為什麼——因為系統對外釋放了足夠的內部狀態資訊,讓你無需登入查看就能重建發生了什麼。
這個區別不是文字遊戲。一個只能偵測故障、無法理解故障的自動化系統,只能對已知故障模式執行預定義的回應。一旦出現新型故障,它就是盲目的。能夠支撐自主運維的真正可觀測性,需要從第一行程式碼開始,把 instrumentation 當成工程需求來刻意實踐。
Layer 1:Runbook 自動化——已知故障不應再需要人工介入
當你能清晰感知系統之後,下一層是消除所有已知模式事件的人工介入。你的團隊以前見過的每一種故障模式、每一份 runbook 記錄的恢復程序、每一個「重啟服務就好」的事件——這些都應該被自動化。
這聽起來理所當然,但實際上很少發生。大多數組織把 runbook 當成文件資產積累,然後在事件發生時依賴工程師手動閱讀並執行。這是運維的反模式——相當於有食譜,但每一餐都從頭手工烹調。
Runbook 自動化不是為了取代工程師,而是確保工程師的認知資源永遠不會被他們已經解決過的問題消耗。如果一種故障模式以前見過、應對方式已知,就不應該再需要人工處理。
Layer 2:SLO 作為控制迴路,而非指標
大多數團隊把 SLO(服務等級目標)當成報告工具:儀表板告訴他們是否達成可靠性承諾。這有用,但不夠。在成熟的自主運維架構中,SLO 是控制訊號——系統據以治理自身行為的機制。
實際上這是什麼樣子?當 error budget 消耗速度超過預期,系統自動減緩部署流水線的節奏——不是因為有人注意到並做出決定,而是 SLO 違約率直接作為輸入饋入發布治理系統。當 canary 部署開始降低某個 SLO,它自動回滾。當容量壓力把延遲推向 SLO 閾值,自動擴容在閾值被突破之前觸發。
從「SLO 作為指標」到「SLO 作為控制迴路」,需要 SLO 是機器可讀的、即時的,並直接整合到控制部署、擴容和流量調度的系統中。它還要求 SLO 本身是經過審慎設定的——而非出於樂觀的願望——因為一個以錯誤目標治理自身的系統,會把自己優化進故障。
Layer 3:不可變基礎設施——只有能安全重建的,才能自癒
系統要能自我修復,前提是它能被安全地銷毀並重建。可變基礎設施——那些隨時間被就地修補、配置、修改的伺服器——積累了無法可靠重建的狀態。出問題時,你無法簡單地替換它,你必須理解它的當前狀態、找出什麼改變了,並推理如何恢復。
不可變基礎設施反轉了這個邏輯。每台伺服器、每個容器、每份配置文件都以程式碼定義、進行版本控制,並從零部署。出問題時,修復方式不是「找出發生了什麼並修復它」,而是「用已知正確的版本替換故障的那個」。這讓自動修復既安全又可靠。
GitOps 更進一步:整個系統的期望狀態宣告在版本控制中,一個自動化的協調迴路持續驅動實際狀態向期望狀態靠攏。狀態漂移不是需要調查的配置管理問題,而是需要自動糾正的訊號。
Layer 4:人的監督層——治理治理者
在完全自主的運維架構中,人的角色不會消失,而是移到了堆疊的頂端:設計系統、設定邊界、處理系統無法應對的案例。
這一層的工程判斷力最不可取代。不是因為人類在事件響應上更擅長——對於系統已訓練過的事件,人類並不如此——而是因為抵達這一層的案例,從定義上就是超出系統模型範圍的那些:新型故障模式、嵌入可靠性閾值中的商業決策、技術上正確但脈絡上不適當的情境。
人的監督層也是系統本身被治理的地方:決定自動化在未獲批准的情況下被允許做什麼、調整異常偵測閾值、驗證 SLO 驅動的控制迴路是否產生了預期行為。這不是傳統意義上的運維工作,而是系統工程應用於運維層本身。
最常見的錯誤
我們最常見的失敗模式,是組織試圖在 Layer 0 和 Layer 1 尚未建立的情況下部署 Layer 2 或 Layer 3 的能力——AIOps 平台、GitOps 工具、自癒基礎設施。
基於不完整遙測資料訓練的 AIOps,學會了關聯雜訊。GitOps 應用於充滿狀態的可變基礎設施,在宣告狀態與實際狀態之間製造需要人工解決的衝突。建立在未文件化故障模式之上的自癒自動化,會修復錯誤的東西。
這些層次是先決條件,不是可選項,無法跳過。試圖跳過的組織花費大量資源在一個無法承載它的基礎上部署複雜工具——然後得出工具無效的結論,而真正的問題是操作順序。
邁向零人工介入的路徑
邁向零人工介入運維的路徑不是一個專案,而是一個方向。沒有任何組織能在其整個技術堆疊的所有層次達到 Layer 4——所需的複雜度與投資隨規模呈指數增長。但方向本身至關重要:每一個 instrumentation 決策、每一份建立並自動化的 runbook、每一個有意義而非樂觀地設定的 SLO,都讓系統沿著這條路走得更遠。
那些在運維上達到有意義自主性的組織,不是購買了最複雜工具的那些。他們是把可觀測性當成一等工程需求、系統性而非英雄式地自動化重複勞動、並把可靠性目標設定為治理訊號而非報告指標的那些。
在 AIDARIS,我們與處於這條路徑不同位置的工程團隊合作。我們始終從同一個問題開始:不是「你需要什麼工具?」而是「哪一層是你當前的天花板?」——因為這決定了工作真正需要發生的位置。如果你正在思考自己的組織在這條路上的位置,我們希望參與這個對話。