什麼是複合 SLA?
現代系統是由許多環環相扣的元件組成——負載平衡器、資料庫、第三方 API、CDN 等等,每一個都有自己的服務等級協議(SLA),通常以類似 99.9% 的可用度百分比來表示。所謂的複合(整體)SLA,就是把這些元件串接在一起之後,整套系統實際能達到的可用性。本計算器會將各元件的可用度合併為單一的端對端可用性數字,並換算成具體的每日、每月與每年停機時間。
串聯 vs. 並聯架構
元件如何連接,會大幅左右最終結果。在串聯(相依鏈)架構下,每一個元件都必須正常運作,請求才能成功,因此各可用度相乘——整體一定會低於最脆弱的那一環。在並聯(備援)架構下,只要還有一條路徑可用,系統就能維持運作,因此這時是把各元件的「故障機率」相乘;備援能讓整體可用性高於任何單一元件。串聯架構的複合可用性為:
$$A_{\text{total}} = \text{A}_1 \times \text{A}_2 \times \text{A}_3 \times \text{A}_4$$
並聯(備援)架構的複合可用性為:
$$A_{\text{total}} = 1 - \left(1-\text{A}_1\right)\left(1-\text{A}_2\right)\left(1-\text{A}_3\right)\left(1-\text{A}_4\right)$$
使用方式
先選擇你的架構,接著輸入每個元件的可用度百分比(例如 99.95)。最多可支援四個元件;若元件較少,將選填欄位留空即可。計算結果會顯示複合可用性,以及在常見時間區間內的預期停機時間。
實例試算
假設你的應用程式相依於三個串聯元件,每個都是 99.9%。換算成小數:\(0.999 \times 0.999 \times 0.999 = 0.997002999\),也就是 99.7003%。這代表約 0.2997% 的停機,換算下來每年約 26.26 小時。把三個「三個 9」的服務串在一起,整體卻只剩「兩個 9」——這正是備援之所以重要的原因。
常見問題
為什麼串聯結果比每個輸入值都低?因為每多一個相依元件,就多一份故障的可能;把多個小於 1 的數字相乘,結果一定會越乘越小。
並聯真的能把可用性拉高那麼多嗎?是的——兩條各為 99% 的獨立路徑可得到 \(1 - (0.01 \times 0.01) = 99.99\%\),前提是兩者的故障彼此真正獨立。
99.9% 換算成時間是多少?每年約 8.77 小時的停機,或大約每月 43.8 分鐘。