系統與環境變遷 SRE 維護高可用平衡 從資源管理到 SLI/SLO 指標確保系統穩定性

me
林彥成
2023-10-03 | 3 min.
文章目錄
  1. 1. 如何管理照三餐改變的系統與環境?
  2. 2. 資源管理
  3. 3. 監控:預防 Entropy 的蔓延
  4. 4. 服務水準指標與目標 (SRE)
    1. 4.1. Service Level Indicator (SLI)
    2. 4.2. Service Level Objective (SLO)
    3. 4.3. Service Level Agreement (SLA)
  5. 5. FAQ:系統監控與 SRE 常見問題
    1. 5.1. Q1:SLO 為什麼不建議設定為 100%?
    2. 5.2. Q2:前端開發者也需要關心 SLI/SLO 嗎?
    3. 5.3. Q3:如果系統的 Entropy (熵) 持續增長該怎麼辦?

如何管理照三餐改變的系統與環境?

管理不斷變遷的系統,核心在於掌握 Entropy (熵)SRE (Site Reliability Engineering) 的平衡準則。軟體系統並非靜止存在,而是持續趨向無序與最大亂度;因此,維持穩定運行的關鍵在於透過 監控 (Monitoring) 識別「時間、流程與容錯空間」的變化。實務上,團隊應定義量化數據 SLI (服務水準指標),並設定具備容錯餘地的 SLO (服務水準目標)。這套機制能幫助開發者在資源有限(電力、算力、流程成本)的情況下,預測並應對如家人、室友、鄰居般的外部環境干擾,確保服務在 99.9% 以上的時間內維持高可用性與商業價值。


如何管理和維護各種系統,以確保正常運行並適應不斷變化的環境?

沒有系統可以獨立存在,每個系統都存在於更大的生態系統中,並受到周圍環境和其他系統的影響。就好比居住的空間總會受到家人、室友、鄰居的好壞而影響生活品質,該怎麼衡量與取捨?

資源管理

道生一,一生二,二生三,三生萬物。

事物都相互關聯並依賴於彼此,系統間互動是不可避免的,因此必須適應和應對這些變化。舉例來說許多我們日常生活中依賴的系統,例如冰箱和冷氣,都需要穩定的電力供應才能正常運作。

如果缺乏必要的資源,系統將無法達到它們的預期功能,這就強調了資源管理的重要性。

軟體開發常見會消耗資源的成本包含:

  • 流程成本: 目標是減少流程,每多一道流程就增加出錯的機率。
  • 理解成本: 目標是可讀性高的程式碼。
  • 修改成本: 目標是可維護性高的程式碼。
  • 執行成本: 目標是降低時間與空間複雜度。
  • 測試成本: 目標是增加自動化的比例,降低人工。
  • 技術成本: 目標是減少專案的入門門檻。

監控:預防 Entropy 的蔓延

環境會隨著時間改變,也因此會影響系統的運作流程和產出,靜止的系統並不存在,存在的是平衡。

在技術和工程領域 Entropy (熵) 的概念也非常重要,Entropy 表示系統的無序度並且會趨向於最大亂度,因此系統管理需要防止過度的混亂,以確保穩定性和效能。

系統通常處於不斷變化的狀態,因此需要不斷監控和管理系統應對這種變化以保持系統平衡。監控上需要關注時間順序、流程順序和容錯空間,以確保系統的可靠性和穩定性:

  • 時間順序: 事件發生的順序。
  • 流程順序: 涉及流程的步驟和執行順序。
  • 容錯空間: 是指系統中的容錯機制,用於處理錯誤和故障。

透過商業模型理解變化去定義正常值的上下界範圍,可以更好地識別系統問題並採取相應的措施。


服務水準指標與目標 (SRE)

在 Site Reliability Engineering (SRE) 領域通常透過 SLI 和 SLO 兩個指標來評估我們的系統,並透過指標管理系統和維護系統以確保其正常運行和適應變化。

Service Level Indicator (SLI)

SLI 是用來測量實際性能的數據。

SLI 通常是基於數據和指標的量化測量,例如服務的響應時間、錯誤率、可用性等,提供了關於服務表現的客觀數據。常見範例:

  • 每個請求都在 500ms 內可以回應。
  • 發生 HTTP Response Code 500 的次數。

Service Level Objective (SLO)

SLO 是設定的性能目標。

SLO 通常基於 SLI 設定可量化的目標,用來衡量服務的期望性能水準。定義了一個服務在特定條件下應該達到的效能。在系統中重要的是容錯和高可用性,例如系統應該在 99.999% 的時間內可用,以確保最小的中斷時間。

Service Level Agreement (SLA)

SLA 是一種正式的合約或協議。

在企業方面透過服務水準協議 (SLA),用於確定服務提供者應遵守的服務水平標準,通常基於 SLO 規定性能與支援方面的承諾,但更具有法律約束力。


FAQ:系統監控與 SRE 常見問題

Q1:SLO 為什麼不建議設定為 100%?

A:在 SRE 哲學中,「100% 是錯誤的目標」。因為追求 100% 的成本極高且會扼殺創新速度(不敢進行任何變動)。設定如 99.9% 的 SLO 產生的 0.1% 空間稱為 「錯誤預算 (Error Budget)」,團隊可以利用這預算來進行實驗或部署新功能,只要預算沒扣完,系統都是健康的。

Q2:前端開發者也需要關心 SLI/SLO 嗎?

A:絕對需要。 前端的 SLI 可能包含:首屏載入時間 (FCP)、核心網頁指標 (LCP)、或是 API 調用的失敗率。透過監控用戶端的實際表現(RUM, Real User Monitoring),前端開發者能確保使用者體驗符合商業預期。

Q3:如果系統的 Entropy (熵) 持續增長該怎麼辦?

A:這就是需要「技術重構」與「自動化」介入的時刻。當系統維護變得極其痛苦(無序度過高),應投入資源清理技術債並強化監控告警。記住,不介入管理的系統,其混亂度只會隨著功能增加而呈指數成長。



喜歡這篇文章,請幫忙拍拍手喔 🤣