CAMS 為何而生#

CAMS 模型代表四個面向:

  • 文化(Culture)
  • 自動化(Automation)
  • 量測(Measurement)
  • 分享(Sharing)

在 DevOps 與 SRE 出現前,許多組織被穀倉化、互相推卸責任。CAMS 是從 Agile、DevOps、SRE 中提煉出來的整合框架,專治這個老問題。

文化(Culture)#

文化是日常實踐的同一套標準、流程與願景:

  • 願景(Vision):由領導層由上而下定義,所有專案承襲它。例如旅遊公司的願景是「成為全球領先的線上旅行社」
  • OKR(Objectives and Key Results):依願景訂出可量測的目標與里程碑。例:目標是改善應用效能,KR 就是效能指標
  • 標準與流程:跨團隊共用的缺陷管理、事件管理、測試、部署流程;組織級訂規範,團隊內自由補小流程
  • 工具與軟體:開發、SRE、DevOps 共用同一批工具(如 Jira),增加協作機會

創新與穩定常被視為對立。CAMS 文化的關鍵在於:開發追求創新、SRE 與 DevOps 用自動化與監控帶來穩定,目標一致、手段互補。

自動化(Automation)#

自動化在 CAMS 中扮演「跨團隊協作橋樑」:

  • 透過自動化消除 toil、節省時間與成本
  • 自動化要列為企業級目標,並反映在團隊 OKR 與 KPI 上
  • 例如 DevOps 建的 CI/CD 管線同時被開發、測試、SRE 共用,自然形成共同語言

跨團隊重用自動化工具,比為每個團隊各自打造自動化更有效率,也是建立共同文化的具體實踐。

量測(Measurement)#

量測是 CAMS 的驅動引擎:

  • 沒有量測就無法評估改進
  • SRE 應在 SDLC 一開始就定義目標與里程碑
  • 每個里程碑都做評估與回顧(retrospective),找出阻礙並調整

推薦的 SRE 量測項目#

某次新功能上線一個月後,可衡量:

  • 應用程式失敗百分比
  • 各類失敗的 MTTR
  • 失敗之間的 MTBF
  • 已自動化的手動任務比例

這些指標背後的問題(自動化是否真有效?告警是否真的縮短復原?自我修復是否真的提升穩定?)才是改進的真正槓桿。

分享(Sharing)#

CAMS 中最容易被忽略、卻最重要的面向。它是人性的、難以靠技術解決:

兩個分享要素#

  • 開放(Openness):團隊願意彼此補位、共享知識

    • 定期知識轉移(knowledge transfer)會議
    • 資深成員 mentorship 機制
    • 回顧(retrospective)會議理解挑戰
    • 規律的肯定與表揚
  • 透明(Transparency):領導與團隊對專案進度、成員工作狀態彼此公開

    • 用中央工具追蹤專案績效
    • 共享每位成員的每日任務追蹤
    • 每日同步會分享卡關,讓他人協助
    • 跨團隊定期會議交換挑戰

CAMS 的獨特之處在於 Sharing——技術可以買,文化要靠人。把分享文化建立起來,SRE 才能真正落地,而非只剩工具與流程的軀殼。

Agnostic Approach:跨平台不可知#

Agnostic(不可知)方法指軟體不被綁定特定框架、平台或技術。常見做法:

  • 選擇與作業系統、伺服器無關的語言與框架
  • 設計可搭配任意資料庫、任意雲端的架構
  • 程式碼易於擴充並移到新基礎設施
  • 日誌、監控指標可被任意工具消費
  • CI/CD、前後端框架可分別替換

案例:從 AWS 遷往 GCP#

一個線上配送平台原本部署在 AWS。某天業務決定改用 GCP。Java/React 都是雲端不可知,加上開發者一開始就把組態與程式碼分離,搬遷只需替換底層配置,省下大量重寫工。

優點與代價#

優點:

  • 長期省成本(未來搬遷不必重做)
  • 工具選擇彈性高,可在不同工具間切換
  • 易於水平/垂直擴充
  • 自由度與控制力大
  • 對長期成長的企業是穩健投資

代價:

  • 前期建構成本高,可能需從零搭建
  • 需要稀有的技能組合,人才費用偏高
  • 可能放棄特定雲端的獨家功能

Agnostic 並非萬靈丹。對小型短期專案、或希望充分用某雲服務的應用,Agnostic 反而帶來不必要的成本。應依專案壽命、規模、未來預期演進審慎評估。

沒有量測就沒有改進#

最後再強調一次:「沒有量測就沒有改進」適用所有產業。SRE 的版本是定義量測指標,把改進建立在客觀資料上。

SRE 的核心量測項#

  • MTTR:恢復時間
  • MTBF:故障間隔
  • 系統上線率(uptime)
  • 系統延遲(latency)
  • 資源使用率:CPU、記憶體與閾值設定
  • 負載平衡錯誤率回應時間

每個指標背後都串接一系列追問:自動修復?人工恢復?是否有告警?根因為何?是否在測試環境出現?是否與某次變更相關?這些追問會直接指向改進的方向。

把指標的「是否達標」改成「為何達標/為何未達標」,量測才會真正驅動改進。