observability-strategy
Android 可觀測性的「設計層」— SLI/SLO 建模、告警門檻矩陣、結構化事件 schema、feedback loop 與 Play Console App Quality Insights 整合,產出指標策略而非工具實作
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Android 可觀測性的「設計層」— SLI/SLO 建模、告警門檻矩陣、結構化事件 schema、feedback loop 與 Play Console App Quality Insights 整合,產出指標策略而非工具實作
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Android 17 個技能的導航中樞 — 依場景路由到 2-3 個技能組合,含 Skill Dependency Graph、易混淆 skill 邊界對照表、2026-04 重構說明
Kotlin 程式碼規範 — 命名、Detekt 1.25+ / Ktlint 1.4+ 配置、Compose Stability/Compiler Metrics、SuppressLint 多模組策略、KDoc 與 Code Review Checklist,產出可在 CI 強制的風格基線
Android Crash/ANR/結構化日誌的「實作層」 — Firebase Crashlytics 33.x、Custom Signals/OnFatalException、Android 14 ANR Watchdog(含 foreground threshold)、Memory Warning、Timber、Play Console + Firebase 警報聯動,產出可定位的事件流
Android 資料層 — Room 2.7+ Migration / Paging 3 / FTS、Retrofit + OkHttp 統一錯誤處理、Offline-First SSOT、Sync Manager + WorkManager、Protobuf DataStore、Room vs SQLDelight 決策矩陣,產出可離線可同步的資料層
Android 效能定位與優化(數據驅動) — Macrobenchmark / Baseline Profiles / Startup Profiles、Perfetto trace、JankStats 量化門檻、Memory Profiler / Native Profiler / Flame Graph、R8 優化、Play Console App Quality Insights,產出可進 CI gate 的效能基線
Hilt 2.52+ 進階用法 — Assisted Injection、Custom Components/Scopes、Multi-binding、EntryPoint 跨模組安全、KSP2 取代 kapt、@UninstallModules 測試策略,產出可測試的多模組 DI 架構
| id | observability_strategy |
| name | Observability Strategy |
| description | Android 可觀測性的「設計層」— SLI/SLO 建模、告警門檻矩陣、結構化事件 schema、feedback loop 與 Play Console App Quality Insights 整合,產出指標策略而非工具實作 |
| type | skill |
本 skill 處理「該觀測什麼、定多嚴、警報接給誰、回饋怎麼閉環」的策略決策;不處理「Crashlytics SDK 怎麼裝」「Timber 怎麼接 Logcat」等實作(那是 @crash_monitoring)。當使用者問題涉及指標選擇、SLO 建模、告警閾值、事件 schema、儀表板規劃時載入。
@crash_monitoring@deep_performance_tuning@release_automation@supply_chain_security| 訊號來源 | 角色定位 | 即時性 |
|---|---|---|
| Firebase Crashlytics | Crash/ANR/Custom Signals 的事件流 | 秒-分鐘 |
| Play Console (App Quality Insights, Vitals) | 真實用戶分母、ANR/Crash 行業基準 | 1-3 天延遲 |
| Firebase Performance / Macrobenchmark | 啟動、Trace、自訂 metric | 分鐘 |
| 自家事件平台(GA4/BigQuery/Datadog/NewRelic) | 商業 KPI 與技術指標融合 | 分鐘-小時 |
| JankStats / FrameMetrics | UI 卡頓細節 | 即時 |
原則:Play Console 是「真相之源」(unbiased denominator),Firebase 是「即時告警源」,兩者互校。
Journey: <名稱,例:Cold Start to First Screen>
SLI: <量化定義,例:P95 time-to-first-frame, ms>
SLO: <目標,例:P95 < 1500 ms, 30-day rolling>
Error Budget: <容忍度,例:5% of users above SLO>
Event Schema:
- event_name: <snake_case>
- required_attrs: [build, locale, network, ...]
Alerts:
- P0: <條件>, <通知對象>, <SLA>
- P1: ...
- P2: ...
Owner: <團隊/人員>
Review cadence: <weekly/monthly>
| 構面 | SLI | SLO | Error Budget(30 天) |
|---|---|---|---|
| 可用性 | checkout_success / checkout_attempt | ≥ 99.5% | 0.5% × MAU 次失敗 |
| 延遲 | P95(checkout_complete_ms) | ≤ 3000 ms | P95 超標時數 ≤ 5% |
| 穩定性 | crash_free_users on Checkout screen | ≥ 99.9% | 0.1% × DAU |
90%:停止 release、所有人優先 burn-down
採用 multi-window, multi-burn-rate 警報,避免過敏與遲鈍:
P0 (Page on-call immediately):
- 1h burn rate > 14.4x AND 5m burn rate > 14.4x
→ 1h 燒完 30 天預算的 2%
P1 (Slack within working hours):
- 6h burn rate > 6x AND 30m burn rate > 6x
→ 6h 燒完 5%
P2 (Daily digest):
- 3d burn rate > 1x
→ 持續性退化
具體門檻(Crashlytics 範例):
| 等級 | Crash-Free Users | ANR Rate | Velocity Alert |
|---|---|---|---|
| 健康 | ≥ 99.5% | ≤ 0.47% (Vitals 良好門檻) | < 0.1% |
| 警告 (P1) | 99.0-99.5% | 0.47-1.0% | 0.1-0.5% |
| 緊急 (P0) | < 99.0% | > 1.0% | > 0.5%(單版本) |
{
"event_name": "checkout_complete", // snake_case
"event_id": "uuid", // 去重用
"session_id": "uuid",
"user_id_hash": "sha256(...)", // PII 去識別
"timestamp_ms": 1714200000000,
"build": "1.42.0 (3201)",
"build_type": "release",
"device": { "model": "Pixel 8", "os": 35, "locale": "zh-TW" },
"network": "wifi|cellular|none",
"ab_buckets": { "checkout_v3": "treatment" }
}
{
"journey": "checkout",
"step": "payment_confirmed",
"result": "success|user_cancel|system_error",
"error_code": "PAYMENT_DECLINED", // 失敗時必填
"duration_ms": 1850,
"trace_id": "..." // 串接後端
}
event_name + schema_version ┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ Production │───►│ Crashlytics │───►│ PagerDuty/ │
│ Devices │ │ Firebase Perf│ │ Slack │
│ (App) │ │ Play Console │ │ (Alert) │
└──────────────┘ └──────┬───────┘ └──────┬───────┘
▲ │ │
│ ▼ ▼
│ ┌──────────────┐ ┌──────────────┐
│ │ BigQuery / │◄───│ On-call │
│ │ Datadog │ │ Triage │
│ └──────┬───────┘ └──────┬───────┘
│ │ │
│ ▼ ▼
│ ┌──────────────┐ ┌──────────────┐
│ │ SLO/Burndown │ │ Hotfix / │
│ │ Dashboard │ │ Rollback │
│ └──────┬───────┘ └──────┬───────┘
│ │ │
└───────────────────┴───────────────────┘
Verify & Close Loop
每個事故必有事後檢討(postmortem)回填:是否新增 SLI、是否調整告警、是否補測試。
三層儀表板:
每個 dashboard 都有 Owner 與 Last reviewed 標籤;超過 90 天沒人看的儀表板砍掉。
@crash_monitoring:Crashlytics SDK、ANR Watchdog、結構化日誌的「實作層」。@deep_performance_tuning:根因分析(Macrobenchmark、Perfetto、Memory Profiler)的「定位層」。@release_automation:把 SLO 違反掛成 CI Gate 與 Play Console staged rollout 自動停推。@supply_chain_security:依賴/簽章相關事件(如 Sigstore 驗證失敗)的觀測。@legacy_rapid_expansion:Hybrid 過渡期的 island-level SLO 設計。