跳至主要內容
ESC
pca-architect-journey — 第 4/13 篇

PCA 架構之旅 04 — 定義 SLO 與 SLI

PCA

SLO 與 SLI 是 PCA 考試的大戶,也是實務上最容易被美化的數字。幾乎每份提案簡報都寫「99.99% 可用性」,但多數團隊連 SLI 是什麼都還沒定。

這一步要做的,就是把上一篇的 user story 變成可監控的指標(SLI)承諾的目標(SLO),然後老實面對它們到底要花多少錢。

這是 PCA 架構之旅 的第四步。上一篇 03 · User Stories


為什麼這一步重要

在 PCA case study 題目中怎麼出現

PCA 題目很愛出「客戶要求 99.99%,你會建議什麼架構?」這類選項。正確答案常常是「先問他們現在的 SLI 是多少」或「先協商 error budget」,而不是直接堆 multi-region active-active 上去。

另一類題目會給你一組「SLO:P99 < 300ms」,再問你要用什麼監控工具、alert policy 怎麼設。沒搞懂 SLI 跟 SLO 差在哪就會答錯。

考生常見錯誤

  • 混淆 SLA、SLO、SLI
  • 把所有 SLO 設一樣:所有故事都給 99.99% 等於都沒重點。
  • 忘記 error budget(誤差預算):SLO 不是拿來炫耀的數字,是拿來決定發佈節奏的工具。

核心概念

名詞全名意思範例
SLIService Level Indicator實際量測的指標P95 首頁響應時間
SLOService Level Objective對自己的承諾P95 < 1.5 秒、成功率 > 99.9%
SLAService Level Agreement對客戶的合約違反賠 X 元、通常寬鬆於 SLO
Error Budget誤差預算(1 - SLO) 能容許的失敗量99.9% 每月允許 43.2 分鐘不符

99.9% 的月度誤差預算 = 43.2 分鐘99.99% = 4.3 分鐘99.999% = 26 秒。每多一個 9,成本往往就是指數級往上跳。

SLI 的四大面向(官方建議)

  1. 可用性(Availability) — 成功請求佔比。
  2. 延遲(Latency) — P50 / P95 / P99 響應時間。
  3. 吞吐(Throughput) — QPS、MBps。
  4. 正確性(Correctness) — 回傳資料是否正確。

思考框架

每個 user story 至少選 2 個 SLI,依序問:

  1. 怎麼量測? 用 load balancer log?用前端 RUM(real user monitoring)?用後端 trace?
  2. 量測邊界在哪? 從使用者瀏覽器到後端 API 全程?還是只算 API 到 DB?
  3. 99.9% 真的有必要嗎? 內部報表工具 99% 可能就夠。
  4. 達不到 SLO 會怎樣? 沒有後果的 SLO 等於沒 SLO,要定義 error budget 的使用規則。
  5. 誰來擁有這個 SLO? 必須有 owner,不然沒人會為它負責。

走一遍範例 — 登雲書店

根據前一篇的 5 個 user story,定義對應 SLI / SLO:

故事 3.1 · 瀏覽暢銷榜

項目
SLI 1(延遲)Load balancer 量測的 P95 首頁回應時間
SLO 1P95 < 1.5 秒,月度達成率 ≥ 99.5%
SLI 2(可用性)2xx/3xx 回應 / 總請求
SLO 2可用性 ≥ 99.9%(月度)
Error Budget 政策若月度 budget 用超過 50%,暫停新功能發佈

故事 3.2 · 下單結帳

項目
SLI 1(可用性)/api/checkout 成功率
SLO 199.99%(月度 4.3 分鐘以內不可用)
SLI 2(延遲)P95 結帳 API 端到端延遲
SLO 2P95 < 6 秒
SLI 3(正確性)每筆訂單金流狀態一致性
SLO 3每月金流錯帳件數 = 0

故事 3.3 · 同步閱讀進度

項目
SLI 1(延遲)裝置切換後進度同步完成時間
SLO 1P95 < 10 秒
SLI 2(正確性)進度衝突解決符合 last-write-wins
SLO 2錯誤進度回報率 < 0.1%

故事 3.4 · 每日批次上傳庫存

項目
SLI(吞吐)單批 200MB 處理時間
SLO99% 的批次在 30 分鐘內完成
SLI(正確性)批次失敗 email 送達率
SLO100% 失敗案件 5 分鐘內通知

故事 3.5 · 查詢昨日銷售

項目
SLI(資料新鮮度)前一日資料於 6am 前到位比率
SLO月度達成率 ≥ 95%
SLI(查詢延遲)標準報表查詢 P90
SLOP90 < 30 秒

整體 error budget 政策:結帳相關 SLO 若燒超過 20% budget,必須停止非必要變更;其他服務燒超過 50% 才凍結。

這份表格會直接決定下一步怎麼切微服務、怎麼選服務。例如結帳要 99.99%,就會逼你選 regional 以上、甚至 multi-region;而暢銷榜只要 99.9%,你就可以用 Cloud CDN 加上快取降級來撐。


常見陷阱

  • 把 SLA 當 SLO 訂:Cloud Run 的 SLA 是 99.95%,代表只有當實際可用性低於 99.95% 時,Google 才會依 SLA 提供 service credits 補償;你的 SLO 該比它嚴一些,留安全邊際。
  • 所有服務一律 99.99%:結帳跟內部報表不需要一樣可靠。考試會偷放這種陷阱,選項寫「全部 99.99%」通常是錯的。
  • 只量後端不量前端:使用者感受到的是瀏覽器到瀏覽器的時間,你只量 API P95,就會低估實際體驗。

延伸閱讀


下一步:有了 SLO,就可以開始把系統拆成微服務(Microservices),每個服務有清楚的 SLO 目標。

🎯 換你練習

理論讀完,換自己來。到 架構師設計工作坊 · 步驟 4 填入你的 case study,邊寫邊內化。

pca-architect-journey — 4/13 完成 查看系列全覽 →

留言討論

徽章解鎖!