OPS06-BP02 測試部署 - 卓越營運支柱

OPS06-BP02 測試部署

使用與生產環境相同的部署組態、安全控制、步驟和程序,在生產前測試發行程序。驗證所有部署的步驟均按照預期完成,例如檢查檔案、組態和服務。透過功能、整合和負載測試以及任何監控 (例如運作狀態檢查) 進一步測試所有變更。透過這些測試,您可以及早發現部署問題,有機會在生產前進行規劃和問題緩解。

您可以建立暫時的平行環境來測試每項變更。使用基礎設施即程式碼 (IaC) 來自動化測試環境的部署,協助減少涉及的工作量,並確保穩定性、一致性和更快的功能交付。

預期成果: 您的組織採用測試驅動的開發文化,其中包含測試部署。如此一來,便能確保團隊專注於交付商業價值,而非管理發行版本。團隊會及早找出部署風險,並訂定適當的緩解方案。

常見的反模式:

  • 使用生產版本期間,因為未經測試的部署經常會導致問題,而需要疑難排解或升級處理。

  • 您的版本包含更新現有資源的基礎設施即程式碼 (IaC)。您不確定 IaC 是否會成功執行,或對資源造成影響。

  • 您為應用程式部署一個新功能。該功能無法按照您的預期運作,且在受影響的使用者回報之前無法預見問題。

  • 您更新憑證。您不小心將憑證安裝到錯誤的元件,這些元件未被偵測並因為無法建立與網站的安全連線,而影響了網站訪客。

建立此最佳實務的優勢: 針對部署程序的生產前階段及其帶來的變更進行廣泛測試,將部署步驟對生產的潛在負面影響降到最低。這麼做能增加產品發行期間的信心,並盡可能減少操作支援,同時不影響交付變更的速度。

未建立此最佳實務時的曝險等級:

實作指引

測試部署程序與測試部署所產生的變更同樣重要。您可以在生產前環境中測試部署步驟,盡可能準確反映生產環境。諸如不完整或錯誤部署步驟,或者配置錯誤等常見問題都能在生產環境之前偵測。此外,您也可以測試回復步驟。

客戶範例

作為持續整合與持續交付 (CI/CD) 管道的一部分,AnyCompany Retail 在一個類似生產環境中,執行為客戶發行基礎設施和軟體更新所需的定義步驟。流程包含許多預先檢查程序,可以在部署之前偵測到資源偏移 (偵測 IaC 以外所執行的資源變更),以及驗證 IaC 啟動時所採取的動作。這個程序會驗證部署步驟,例如確認特定檔案和組態已準備就緒,或服務處於執行狀態,並在向負載平衡器重新註冊之前,正確回應本機上的運作狀態檢查。此外,所有變更都標記了許多自動化測試,例如功能、安全性、迴歸、整合和負載測試。

實作步驟

  1. 執行安裝前檢查,將生產前環境反映到生產環境。

    1. 使用 偏移偵測 來偵測 AWS CloudFormation 外部資源的變更時間。

    2. 使用 變更集 來確認堆疊變更的目的是否符合啟動變更集時 AWS CloudFormation 所採取的動作。

  2. 這會觸發手動核准步驟 ( AWS CodePipeline ),以授權生產前環境的部署。

  3. 使用部署組態 (例如 AWS CodeDeploy AppSpec 檔案) 來定義部署和驗證步驟。

  4. 在適用情況下,會整合 AWS CodeDeploy 和其他 AWS 服務會整合 AWS CodeDeploy 和合作夥伴產品與服務

  5. 監控部署 時會使用 Amazon CloudWatch、AWS CloudTrail,和 Amazon SNS 事件通知。

  6. 執行部署後自動化測試,包括功能、安全性、迴歸、整合和負載測試。

  7. 故障排除 部署問題。

  8. 成功驗證前述步驟後,應該會起始化手動核准工作流程,以授權部署到生產環境。

實作計劃的工作量:

資源

相關的最佳實務:

相關文件:

相關影片:

相關範例: