我一直在研究多個項目,我已將應用程式從 PoC 轉移到生產環境。
這些是我為自己和我的團隊準備的清單,以確保我們做好生產準備。
這裡檢查表是重點,因為應用程式採用 Python 程式語言並透過 Kubernetes 部署到 AWS。
並非所有這些都是強制性的,但它們是我發現最有用的。
1. 警報和指標
- [ ] 是否針對基礎設施問題設定了警報(例如記憶體或 CPU 使用率增加、服務不可用)?
- [ ] 是否為關鍵的應用程式特定邏輯故障設定警報?
- [ ] 我們可以查看基礎設施和資源使用情況的歷史資料(過去幾個小時/幾天)嗎?
- [ ] 是否有即時監控儀表板?
2. 儀表板和SOP
- [ ] 是否有處理警報和已知問題的 SOP 文件?
- [ ] 是否有適用於常見場景的操作手冊?
- [ ] 是否有適當的事件回應計畫?
3. 待命映射和節奏
- [ ] 是否有針對應用程式層級問題的待命人員映射?
- [ ] 是否有針對基礎設施相關問題的待命人員映射?
- [ ] 是否有明確的輪調時間表和升級政策?
4. 部署
- [ ] 是否已確定適當的實例類型(GPU 或 CPU)?
- [ ] 是否已指定所需的伺服器類型?
- [ ] 是否支援故障轉移的多可用區?
- [ ] 是否支援多區域?
- [ ] 是否針對流量高峰設定了自動縮放(例如 HPA、Keda)?
- [ ] 是否為伺服器配置了健康檢查?
- [ ] 資源限制是否已定義並記錄?
- [ ] 是否有藍綠或金絲雀部署策略?
- [ ] 是否有明確的回溯計畫和程序?
5. 可觀察性和追蹤性
- [ ] 是否有顯示相關指標的儀表板(例如請求計數、HTTP 狀態代碼、使用情況)?
- [ ] 我們可以端到端追蹤單一請求以進行調試嗎?
- [ ] 是否有日誌聚合與分析系統?
- [ ] 是否實現了分散式追蹤?
6.負載測試
- [ ] 是否已執行容量規劃來確定伺服器的負載處理能力?
- [ ] 是否有明確的性能基準?
- [ ] 是否進行了壓力測試?
7. 質量
- [ ] 是否有自動化單元測試?
- [ ] 是否有自動化整合測試?
- [ ] 是否執行靜態程式碼分析(例如複雜度檢查)?
- [ ] 代碼覆蓋率是否經過測量並處於可接受的水平?
- [ ] 是否有生產健全性測試案例?
- [ ] 是否有 CI/CD 管路?
- [ ] 是否定期進行安全掃描與漏洞評估?
8. 發布
- [ ] Swagger/OpenAPI 文件是否可用且是最新的?
- [ ] 是否有 API 和版本的版本控制系統?
- [ ] 是否有已建立的溝通管道用於定期維護?
- [ ] 是否有變更管理流程?
- [ ] 功能標誌是否用於逐步推出新功能?
9. 災難復原和業務連續性
- [ ] 備份和復原程序是否已到位並經過測試?
- [ ] 有資料複製策略嗎?
- [ ] 是否已定義復原時間目標 (RTO) 與復原點目標 (RPO)?
- [ ] 是否定期進行災難復原演習?
10. 合規性和安全性
- [ ] 資料在靜態和傳輸過程中是否加密?
- [ ] 存取控制和身分驗證機制是否到位?
- [ ] 是否定期進行安全審核?
- [ ] 應用是否符合相關行業標準(例如 GDPR、HIPAA)?
11. 文件
- [ ] 系統架構文件是否可用且是最新的?
- [ ] API 文件是否完整且最新?
- [ ] 操作程序是否記錄在案?
- [ ] 是否有全面的故障排除指南?