可靠性與風險管理#
可靠性(Reliability)不是越高越好,而是一個需要刻意取捨的工程決策。本章談的是「該追求多少可靠性」這個策略問題——如何在成本、開發速度與使用者體驗之間,找到一個經得起檢驗的平衡點。具體的 SLI/SLO 量化方法見 13 SLI/SLO/Error Budget,監控訊號的採集與展示見 09 可觀測性。
為何不追求 100% 可靠性#
把「永不當機」當成目標,是最常見也最昂貴的誤區。原因有三:
- 邊際成本陡增:從 99% 提升到 99.9% 也許只需多加一台備援;但從 99.99% 提升到 99.999%,往往需要跨區多活、全鏈路冗餘、專職團隊全年無休待命,成本呈指數級上升。
- 使用者感知不到差異:使用者的端到端體驗,受限於鏈路上最不可靠的一環——家用 Wi-Fi、手機訊號、ISP、瀏覽器。當這些環節的可靠性只有 99% 時,把後端服務從 99.99% 提升到 99.999% 對使用者而言毫無分別。
- 背景錯誤率(background error rate):網際網路本身就有一定比例的封包遺失與連線失敗。當服務的可靠性已經高於使用者所處網路環境的背景錯誤率時,再投入資源已無實質意義。
可靠性的目標應該由「使用者實際能感知並在意的體驗」反推,而不是由工程師的完美主義決定。超出使用者感知門檻的可靠性,是純粹的浪費。
成本與可靠性的權衡曲線#
可靠性的投入與回報並非線性。下圖示意「每多一個 9」所需的成本與其帶來的使用者價值:
成本 / 價值
▲
│ 成本 ┄┄┄┄┄┄►╱
│ ╱
│ ╱
│ ╱
│ ╱
│ ╱
│ ╱╱
│ ╱╱
│ ╱╱ 使用者感知價值 ┄┄┄┄┄┄┄┄┄┄┄┄
│ ╱╱ ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
│ ╱╱ ┄┄┄┄┄┄┄
└────┬──────┬──────┬──────┬──────┬───────────►
90% 99% 99.9% 99.99% 99.999% 可用率
│←─甜蜜點─→│ │←──浪費區──→│- 甜蜜點:在曲線交叉前的區段,每多一個 9 帶來的使用者價值遠大於成本,值得投資。
- 浪費區:當成本曲線陡然上揚、而價值曲線早已趨於平緩時,繼續加碼就是把工程資源燒在使用者察覺不到的地方。
多出來的可靠性不是免費的「保險」——它直接擠壓了開發新功能的工程時間。過度可靠的服務,等於用「沒人在意的穩定」換掉了「使用者真正想要的功能」。
不同服務的風險容忍度#
不是所有服務都該套用同一條可用率目標。風險容忍度(risk tolerance)取決於服務的性質、使用者群與失效的後果。一個粗略的二分法:
| 維度 | 消費者服務(Consumer) | 基礎設施服務(Infrastructure) |
|---|---|---|
| 典型例子 | 網站、App、推薦系統 | 儲存、佇列、共用資料庫、認證 |
| 失效影響範圍 | 單一功能 / 部分使用者 | 大量上游服務同時受害 |
| 可用率目標 | 中高(如 99.9%) | 高(如 99.99% 以上) |
| 延遲敏感度 | 視功能而定 | 通常極高(拖慢全體下游) |
| 一致性要求 | 常可接受最終一致 | 常需強一致 |
| 取捨傾向 | 偏向開發速度與功能迭代 | 偏向穩定與可預測性 |
基礎設施服務的可靠性會「乘載」在所有依賴它的服務上:一個被一百個服務依賴的資料庫,其抖動會被放大一百倍。因此基礎設施的可靠性門檻天然要比末端的消費者服務更高。
可靠性決策表#
面對「該設多高的目標」時,可用以下維度逐項評估,再彙整成一個可被質疑、可被討論的決策:
| 決策維度 | 關鍵提問 | 偏向「更高可靠性」 | 偏向「更快迭代」 |
|---|---|---|---|
| 失效後果 | 失效會造成什麼損失? | 金流、安全、資料遺失 | 體驗略降、可重試 |
| 使用者期待 | 使用者預期它總是可用嗎? | 是(如登入、支付) | 否(如非核心推薦) |
| 可恢復性 | 失效後多快能恢復、能否重試? | 難恢復、不可重試 | 易恢復、可重試 |
| 競品標準 | 同類服務的市場期待是多少? | 競品都很穩 | 市場容忍度高 |
| 收入關聯 | 不可用是否直接損失營收? | 直接掛鉤營收 | 關聯薄弱 |
| 背景錯誤率 | 目標是否已高於使用者網路環境的背景錯誤率? | 尚未達到 | 早已超過(再加無意義) |
決策的產出應該是一個明確的數字(如「99.9%」)與其依據,而不是一句「越穩越好」。這個數字接著就成為 SLO 的輸入。
小結#
- 可靠性是要花錢買的工程決策,目標應由使用者可感知的價值反推,而非工程完美主義。
- 「每多一個 9」的成本指數級上升,務必認清甜蜜點與浪費區的分界。
- 消費者服務與基礎設施服務的風險容忍度天差地遠,不可一概而論。
- 用結構化的決策表把「該多可靠」變成一個可討論、可質疑的明確數字,再交給 SLO 落地。