SRE計畫書

網站可靠性工程(SRE)

增加系統可靠度

目的

使用網站可靠性工程 (SRE) 工具,來自動執行多項操作工作,並提高團隊效率。

SRE關鍵原則

建立制度與文化

./resource/維運制度全貌.jpg|800

  1. 個人角度:累積與重複使用,每次跌倒都有成長
  2. 團隊
    1. 有限資源下,滿足On Call需求大家才能安心放假,避免公車效應(某個關線人物出意外導致整個專案無法進行)
    2. 有章法、組織性、有陣型的執行任務,才可以規模話、系統化。
    3. 傳承、知識共享
  3. 企業:減少成本、提升可靠度、擴展業務

事件處理

期望結果

整個組織面對計畫中、非計劃性的任務,都能夠有一致的協作處理辦法,尤其針對非計畫性的危機處理更是著重地方。

./resource/事件管理矩陣.jpg

todo

定義出P1~3的等級與事件後才有辦法定義出處理時間。

團隊一起列出過去曾經發生的具體異常事件,判斷優先次序、事件種類、事件來源,每季重新整理一次。

  1. 優先序
  2. 嚴重性
  3. 事件來源
  4. 事件種類

危機處理-管理溝通流程

./resource/事件管理溝通流程.jpg

  1. P0 客訴處理(10分鐘更新進度):由業務維運第一線處理。如重大活動、客訴需要搭配【公關與危機管理】,擬定內外應變計畫。
  2. P1 工程問題(20分鐘更新進度):由SRE監控發現與處理,像是異常流量、DDOS攻擊、網路熱點事件
  3. P2 內部工程問題(45分鐘更新進度):開發過程常規性異動,如交付流程與部署沒有處理好、k8s出現異常。
  4. P3 內部維運問題(45分鐘更新進度):維運工程團隊的工作項目,自發性的驅動、非預期的驅動。

計畫性任務

預計建立 Redmin作為ISMS以期望達到符合ISO27001 第9項【績效評估】

200-Areas/OB嚴選/專案/resource/SRE計畫書-2.png

訓練與事件報告

建立文件管理系統, 透過進行事故後審查,來改善軟體開發生命週期。將所有軟體問題和相應的解決方案記錄在共用知識庫中。幫助軟體團隊在未來高效地應對類似問題。

具體報告內容

  1. 事件當下的紀錄
  2. 事後處理與修復
  3. 統計與分析
欄位 說明 範例
事件摘要 句話描述事件的關鍵字、影響 WebAPI的商品頁資回應很慢,使用者無法瀏覽商品資訊。
詳細描述 詳細描述狀況。 WebAPI商品頁資訊透過瀏覽器與APP
突然回應很慢,很多圖檔無法顯示,
導致客戶的使用者無法瀏覽商品資
訊°其他客戶並沒有這樣狀況°
發現時間 發現的時間點。 2023/3/1 21:00
發現方式 描述是內部還是外部發現。如果是內
部,要記錄哪個團隊、透過什麼方式'
像是自動化、人工。
範例1 :客戶(編號:A00001)回報
給業務。
範例2 :內部Ninja團隊的監控機
制發現。
影響範圍 描述影響的範圍。 範例1 : WebAPI的所有使用者。
範例2 :全部的客戶
嚴重性 當下判斷的嚴重性等級'分成S0〜S3。 S0
優先序 當下判斷處理的優先序‘分成POP3。 P0

事後處理與修復格式

欄位 說明 範例
問題原因(Root Cause) 針對問題做深度的分析。 使用AWS EFS存放圖檔‘ Read IOPS Credit耗盡,造成無法正常回覆圖檔資料給WebSite。
處理方式 詳細描述處理的過程與方式。 •提高 EFSIOPS Credit 從 500— 2000。
•增加CDN快取,減少圖檔存取的次數
後續行動 描述後續的處理工作項目,包含任務內容與負責團隊。 •調整U RL Path •讓CDN更容易設定圖檔-SRE+Ninja。
•使用預熱方式,讓CDN能夠先針對圖檔路徑預熱-SRE。
•增加EFS IOPS檢查機制,提早發現-SRE。
未來如何提早發現 類似問題-有沒有什麼方法可以提早避免或者發現的? 後續行動(3 )
人力與成本 描述這次共有多少人參與?花費多少時間? 3個人參與,過程耗費]小時:Total= 3X 1=3小時/人力

摘要報告

  1. 標題:[P0] 2023/03/01 (三) 13:30~15:30 商品業回應很慢,客戶無法下單
  2. 異常時間:2023/03/01 13:30。
  3. 如何發現:Ninja團隊的監控機器人發現
  4. 異常原因:AWS儲存服務EFS的Credit耗盡,造成無法存取讀檔。
  5. 處理方式:調整 EFS Credit 500 — 2000。
  6. 後續行動
    • 調整URL Path讓CDN更容易設定圖檔-SRE + Ninja。
    • 使用預熱方式,讓CDN能夠先針對圖檔路徑預熱- SRE。
    • 增加EFS IOPS檢查機制,提早發現-SRE (Done )。
  7. 人力成本:3X1 =3小時/人力
  8. 未來如何提早發現:增加EFS IOPS檢查機制'提早發現-SRE ( Done )。

SRE關鍵指標

架設監控系統ELK建立 系統關鍵成效、服務水平協定(SLA)、服務目標(SLO)、服務指標(SLI)

  1. SLA
    • 服務:電子商務網站 API 串接服務
    • 服務級別:24/7
    • 可用性:95%
    • 回應時間:1 小時內
    • 解決時間:4 小時內
  2. SLO目標
    • WEB 一小時以內 ,Status = 200 > 95%、timetake < 500ms
  3. SLI目標
    • 500ms的請求延遲
    • HTTP status = 200 次數與回應次數的比率

SLO 95%視覺化圖表
200-Areas/OB嚴選/專案/resource/SRE計畫書.png

系統關鍵指標(SKM)

  1. I/O Blocking造成資料庫查詢效能不好存取盪按時磁碟反應慢Deadlock資源競爭
  2. 資源使用率:CPU、Memory、Disk Size
  3. I/O狀態:Network I/O Throughput、Disk的IOPS
  4. 網路層:Load Balancer 的 HTTP 5xx、4xx、3xx、2xx數量
  5. 內部服務的通訊:API對DB的QPS(Query Per Secend)、對Queue的操作請求
  6. 服務對外的通訊:RPS(Request Per Second)、HTTP 5xx、4xx、3xx、2xx數量

業務關鍵指標 (DKM)

  1. 訂單總數(已結、未結、在途)
  2. 包裹損壞數量
  3. 客訴總數,客訴類型分析
  4. 網站進入總數...等等

日常監控計畫(規範、制度、原則)

|400 |400

|400 |400

  1. 每天:資料庫完整備份、Log備份、虛擬機備份、刪除舊的備份
  2. 每週:了解系統狀況,各指標是否異常,不符合SLO定義的,備份狀況檢查
  3. 每月:系統監控趨勢複查、成本複查、軟體更新、網路流量複查
  4. 每季:作業系統資安更新、軟體套件更新資安更新、Public IP管制列表、資料還原演練,系統異常演練、架構複查、權限複查等
  5. 每年:防災演練、網路防火牆複查、資源使用政策調整、防火牆政策、網路拓樸架構負複盤、SSL購買

系統架構可靠度設計

網站可靠性工程師與開發團隊密切合作,以創造新功能並穩定生產系統。為整個軟體團隊建立 SRE 程序,並隨時支援升級問題。為產品團隊支援提供文件化程序,以協助他們高效地處理客訴。

系統設計:包含API設計、Configuration/Ioc、架構設計、部屬策略、可靠度設計監控指標設計

系統開發作業標準化

應用程式監測與優化

200-Areas/OB嚴選/專案/resource/SRE計畫書-1.png
200-Areas/OB嚴選/專案/resource/SRE計畫書-4.png

測試策略與自動化

  1. 導入使用k6進行整合測試、壓力測試
    200-Areas/OB嚴選/專案/resource/SRE計畫書-5.png 200-Areas/OB嚴選/專案/resource/SRE計畫書-6.png

自動化部署機制(CI/CD、Docker、K8S)

200-Areas/210-工程師修煉/SonarQube/resource/SonarQube.png 200-Areas/210-工程師修煉/SonarQube/resource/SonarQube_Getting_Started_Project-6.png

外部資源

  1. 每年弱點掃描、 定期滲透
  2. 資訊安全顧問(導入)
  3. 個資小組成立

整體預期目標