」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 生產準備清單

生產準備清單

發佈於2024-08-05
瀏覽:783

Production Readiness Checklist

我一直在研究多個項目,我已將應用程式從 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 文件是否完整且最新?
  • [ ] 操作程序是否記錄在案?
  • [ ] 是否有全面的故障排除指南?
版本聲明 本文轉載於:https://dev.to/soumendrak/production-readiness-checklist-1io5?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • 為什麼使用Firefox後退按鈕時JavaScript執行停止?
    為什麼使用Firefox後退按鈕時JavaScript執行停止?
    導航歷史記錄問題:JavaScript使用Firefox Back Back 此行為是由瀏覽器緩存JavaScript資源引起的。要解決此問題並確保在後續頁面訪問中執行腳本,Firefox用戶應設置一個空功能。 警報'); }; alert('inline Alert')...
    程式設計 發佈於2025-05-18
  • 您如何在Laravel Blade模板中定義變量?
    您如何在Laravel Blade模板中定義變量?
    在Laravel Blade模板中使用Elegance 在blade模板中如何分配變量對於存儲以後使用的數據至關重要。在使用“ {{}}”分配變量的同時,它可能並不總是最優雅的解決方案。 幸運的是,Blade通過@php Directive提供了更優雅的方法: $ old_section =...
    程式設計 發佈於2025-05-18
  • 查找當前執行JavaScript的腳本元素方法
    查找當前執行JavaScript的腳本元素方法
    如何引用當前執行腳本的腳本元素在某些方案中理解問題在某些方案中,開發人員可能需要將其他腳本動態加載其他腳本。但是,如果Head Element尚未完全渲染,則使用document.getElementsbytagname('head')[0] .appendChild(v)的常規方...
    程式設計 發佈於2025-05-18
  • Spark DataFrame添加常量列的妙招
    Spark DataFrame添加常量列的妙招
    在Spark Dataframe ,將常數列添加到Spark DataFrame,該列具有適用於所有行的任意值的Spark DataFrame,可以通過多種方式實現。使用文字值(SPARK 1.3)在嘗試提供直接值時,用於此問題時,旨在為此目的的使用column方法可能會導致錯誤。 df.with...
    程式設計 發佈於2025-05-18
  • 圖片在Chrome中為何仍有邊框? `border: none;`無效解決方案
    圖片在Chrome中為何仍有邊框? `border: none;`無效解決方案
    在chrome 中刪除一個頻繁的問題時,在與Chrome and IE9中的圖像一起工作時,遇到了一個頻繁的問題。和“邊境:無;”在CSS中。要解決此問題,請考慮以下方法: Chrome具有忽略“ border:none; none;”的已知錯誤,風格。要解決此問題,請使用以下CSS ID塊創建帶...
    程式設計 發佈於2025-05-18
  • CSS可以根據任何屬性值來定位HTML元素嗎?
    CSS可以根據任何屬性值來定位HTML元素嗎?
    靶向html元素,在CSS 中使用任何屬性值,在CSS中,可以基於特定屬性(如下所示)基於特定屬性的基於特定屬性的emants目標元素: 字體家庭:康斯拉斯(Consolas); } 但是,出現一個常見的問題:元素可以根據任何屬性值而定位嗎?本文探討了此主題。 的目標元素有任何任何屬性值,...
    程式設計 發佈於2025-05-18
  • 如何干淨地刪除匿名JavaScript事件處理程序?
    如何干淨地刪除匿名JavaScript事件處理程序?
    刪除匿名事件偵聽器將匿名事件偵聽器添加到元素中會提供靈活性和簡單性,但是當要刪除它們時,可以構成挑戰,而無需替換元素本身就可以替換一個問題。 element? element.addeventlistener(event,function(){/在這里工作/},false); 要解決此問題,請考...
    程式設計 發佈於2025-05-18
  • 在Python中如何創建動態變量?
    在Python中如何創建動態變量?
    在Python 中,動態創建變量的功能可以是一種強大的工具,尤其是在使用複雜的數據結構或算法時,Dynamic Variable Creation的動態變量創建。 Python提供了幾種創造性的方法來實現這一目標。 利用dictionaries 一種有效的方法是利用字典。字典允許您動態創建密鑰並...
    程式設計 發佈於2025-05-18
  • 如何使用“ JSON”軟件包解析JSON陣列?
    如何使用“ JSON”軟件包解析JSON陣列?
    parsing JSON與JSON軟件包 QUALDALS:考慮以下go代碼:字符串 } func main(){ datajson:=`[“ 1”,“ 2”,“ 3”]`` arr:= jsontype {} 摘要:= = json.unmarshal([] byte(...
    程式設計 發佈於2025-05-18
  • Java開發者如何保護數據庫憑證免受反編譯?
    Java開發者如何保護數據庫憑證免受反編譯?
    在java 在單獨的配置文件保護數據庫憑證的最有效方法中存儲憑據是將它們存儲在單獨的配置文件中。該文件可以在運行時加載,從而使登錄數據從編譯的二進製文件中遠離。 使用prevereness class import java.util.prefs.preferences; 公共類示例{ 首選...
    程式設計 發佈於2025-05-18
  • 如何有效地轉換PHP中的時區?
    如何有效地轉換PHP中的時區?
    在PHP 利用dateTime對象和functions DateTime對象及其相應的功能別名為時區轉換提供方便的方法。例如: //定義用戶的時區 date_default_timezone_set('歐洲/倫敦'); //創建DateTime對象 $ dateTime = ne...
    程式設計 發佈於2025-05-18
  • 如何將多種用戶類型(學生,老師和管理員)重定向到Firebase應用中的各自活動?
    如何將多種用戶類型(學生,老師和管理員)重定向到Firebase應用中的各自活動?
    Red: How to Redirect Multiple User Types to Respective ActivitiesUnderstanding the ProblemIn a Firebase-based voting app with three distinct user type...
    程式設計 發佈於2025-05-18
  • 如何使用node-mysql在單個查詢中執行多個SQL語句?
    如何使用node-mysql在單個查詢中執行多個SQL語句?
    Multi-Statement Query Support in Node-MySQLIn Node.js, the question arises when executing multiple SQL statements in a single query using the node-mys...
    程式設計 發佈於2025-05-18
  • 如何在鼠標單擊時編程選擇DIV中的所有文本?
    如何在鼠標單擊時編程選擇DIV中的所有文本?
    在鼠標上選擇div文本單擊帶有文本內容,用戶如何使用單個鼠標單擊單擊div中的整個文本?這允許用戶輕鬆拖放所選的文本或直接複製它。 在單個鼠標上單擊的div元素中選擇文本,您可以使用以下Javascript函數: function selecttext(canduterid){ if(d...
    程式設計 發佈於2025-05-18
  • PHP SimpleXML解析帶命名空間冒號的XML方法
    PHP SimpleXML解析帶命名空間冒號的XML方法
    在php 很少,請使用該限制很大,很少有很高。例如:這種技術可確保可以通過遍歷XML樹和使用兒童()方法()方法的XML樹和切換名稱空間來訪問名稱空間內的元素。
    程式設計 發佈於2025-05-18

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3