先決定你現在是要學,還是要在專案裡做
網站負責解釋與分發工作包;真正的 Repository 掃描、缺口判斷與文件產出交給 Coding Agent。
SDLC 實作課 · 交付物練習
先理解這份文件替你消除什麼不確定
讓『誰接電話』有制度,不靠英雄主義
On-call 撐住的是可用性,但也撐垮人。輪值制度的目標是:覆蓋風險、平均負擔、明確升級路徑、可被工程師接受地長期執行。
誰負責、交給誰
主責: DevOps Manager / SRE Lead
協作: HR/合規(加班規範)、Dev Lead(人員池)
下游收件: Runbook、Incident Report、補休制度
何時值得做
必要時機: 對外服務、SLA ≥ 99.9%
不需要時: 內部工具、無 paging 告警
常見誤用: Primary 同時是 Secondary;無升級階梯;無補休
- 01讀大綱
- 02比範本
- 03填素材
- 04貼提示詞
- 05對照驗收
Anatomy · 文件解剖
輕量版先回答 6 個核心章節
章節名稱可以因團隊調整,但每一段要求的判斷不能被省略。先讀問題,再看格式。
- 01
Rotation Structure
範本必要章節
1-2 行說明選擇的結構與為何
- 02
Primary / Secondary
範本必要章節
Primary 不可同時是 Secondary;ack SLA 必須對應 SLO 的 MTTA 目標
- 03
Paging Routing
範本必要章節
按 SEV 分流;SEV1 必須多人同時 page;SEV3 可降為 slack 非工時
- 06
Fatigue & Fairness
範本必要章節
必含 alert density per shift + fairness metric + 補休政策三件
- 10
Decision Log(key 1-2 條)
範本必要章節
每條必含 chosen + 至少 1 個 rejected + 拒絕原因
- 12
Confidence & Sources & TODO
範本必要章節
把已確認的內容、判斷依據與仍待補充的資訊清楚分開。
Study · 對照學習
同一份交付物,先練核心,再看完整深度
輕量範本適合第一次練習與 MVP;完整範本保留跨職能交棒需要的細節。兩者都要求未知事項保持可見。
這張卡目前提供已審定的輕量與完整範本;不以 AI 臨時生成的內容冒充實際案例。
30 分鐘內先完成核心章節。
---
doc_type: "on-call-rotation"
variant: "light"
status: "draft"
owner: "<sre-lead-or-devops-manager>"
last_updated: "YYYY-MM-DD"
upstream:
required: ["alert-history-90d", "team-roster"]
optional: ["slo", "hr-policy"]
---
# On-Call Rotation: <team-or-service-name>
**Status:** Draft v0.X · **Owner:** <SRE Lead> · **Last updated:** YYYY-MM-DD
> [!IMPORTANT]
> **AI 填寫規則:** 本範本 6 段(編號 1, 2, 3, 6, 10, 12),全部必填——刻意沿用完整版的章節編號讓兩版可對照。每結論行內加 `(依據:alert-history §XXX / roster §YYY)`;每量化欄位 `[H]/[M]/[L]` confidence badge;缺資料寫 `_TODO: 需要 XXX_` 不編造;**Primary 不可同時是 Secondary**;**每月 on-call 工時 ≤ 法規上限**;**每週至少 1 天 paging-free**。
---
## 1. Rotation Structure
<!-- ai-fill: 1-2 行說明選擇的結構與為何 -->
| Field | Value |
|---|---|
| **Structure** | weekly / daily / follow-the-sun / business-hours-only |
| **Shift length** | <e.g. 168 hours (1 week)> |
| **Pool size** | <人數> |
| **Coverage** | 24x7 / business-hours-only |
| **Rationale** | <為何這個結構適合本團隊> |
| **Confidence** | **[H]** |
---
## 2. Primary / Secondary
<!-- ai-rule: Primary 不可同時是 Secondary;ack SLA 必須對應 SLO 的 MTTA 目標 -->
| Role | Source pool | Ack SLA | Note |
|---|---|---|---|
| **Primary** | <rotation pool A> | <e.g. 5 min> | 第一線接 page |
| **Secondary** | <rotation pool B, 與 Primary 互斥> | <e.g. 15 min> | Primary 無回應後接手 |
| **Tertiary(升級)** | <manager> | <e.g. 30 min> | Primary + Secondary 都無回應後 |
---
## 3. Paging Routing
<!-- ai-rule: 按 SEV 分流;SEV1 必須多人同時 page;SEV3 可降為 slack 非工時 -->
| Severity | Page targets | Note |
|---|---|---|
| **SEV1** | Primary + Secondary + Manager(10 min 後同時) | 業務影響大、需多人協作 |
| **SEV2** | Primary, 15 min 後 Secondary | <說明> |
| **SEV3** | Primary(業務時段)/ Slack notify(非工時) | <說明> |
---
## 6. Fatigue & Fairness
<!-- ai-rule: 必含 alert density per shift + fairness metric + 補休政策三件 -->
| Aspect | Value | Threshold | Source |
|---|---|---|---|
| **Alert density p50 / p95** | <events/week> | target p95 ≤ 2 paging / shift | alert-history §X |
| **Alerts per engineer (30d)** | <e.g. avg 3, max 7> | rebalance trigger ≥ 1.5σ | roster §Y |
| **Off-hours share** | <e.g. avg 30%, max 55%> | rebalance trigger > 40% | alert-history §Z |
| **Comp time per off-hours page** | <e.g. 1.5h> | per HR policy | hr-policy §A |
---
## 10. Decision Log(key 1-2 條)
<!-- ai-rule: 每條必含 chosen + 至少 1 個 rejected + 拒絕原因 -->
| Date | Decision | Options | Chosen | Rejected why | Confidence |
|---|---|---|---|---|---|
| YYYY-MM-DD | Rotation 結構 | weekly / daily / follow-the-sun | weekly | daily (handoff 太頻繁、MTTA 變慢)、follow-the-sun (人池不足跨 3 時區) | **[H]** |
---
## 12. Confidence & Sources & TODO
- **整份文件最低 confidence 欄位:** <列出所有 [L] 與 [M]>
- **Fabricated assumptions(推測但 input 未明說):**
- <假設 1>
- **Highest-value next input:** <下一份最該補的:90d alert noise 報表 / 團隊意願調查>
### TODO(缺資料)
- _TODO: 需要 90d alert log 校準 alert density target_
---
> [!CAUTION]
> **輸出前 AI 自檢:**
> - [ ] 6 段 H2 章節齊全(編號 1, 2, 3, 6, 10, 12,刻意不連號)
> - [ ] **Primary ≠ Secondary**(不能同一人)
> - [ ] Paging routing 按 SEV1/2/3 分流
> - [ ] Fairness 含 alert density + per-engineer + off-hours share 三指標
> - [ ] 補休政策已寫(comp_time 或 paid_overtime)
> - [ ] Decision Log ≥ 1 條,每條有 rejected reason
> - [ ] 無 YAML / JSON schema 輸出(rotation 是給人讀的 markdown)Practice · 換你試做
先用自己的話交代素材,不需要先學會工程術語
確定的就寫,不確定的留白。下一步要做的是請 Agent 找缺口,不是讓它替你猜一套合理答案。
可以先留白;複製提示詞後再到 Coding Agent 裡補充。
AI Practice · 手動三步
先問、再寫、最後審,不把整條流程鎖死
每一步都是獨立工作包。你可以停下補資料、修改限制或重做某一步,不需要服從固定的 Agent 接力流程。
只找阻擋文件成立的未知
先補會改變範圍、判斷或驗收結果的資訊,不急著寫文件。
我要製作「On-Call Rotation · 值班輪值」。先不要產出文件。
請根據我的素材,找出會影響這份文件正確性或可執行性的未知事項,一次最多問 5 題。
每題請包含:
1. 問題
2. 為什麼現在必須知道
3. 它會影響哪個章節或決定
已經回答的事不要重問;可以延後的事標成「待決策」;不要替我猜答案。
本文件的核心章節:Rotation Structure、Primary / Secondary、Paging Routing、Fatigue & Fairness、Decision Log(key 1-2 條)、Confidence & Sources & TODO複製後,請在標示位置貼上自己的素材。
Review · 自己驗收
文件存在,不代表下一個角色真的能使用
逐條檢查 Agent 的輸出。人類負責需求、限制與驗收,也必須能說明重要結論從哪裡來。
帶著這份文件,繼續到「Capacity Planning · 容量規劃」
下一張卡會接住新的決策問題;不用一次把整條 SDLC 全做完。
