OPS06-BP02 測試部署
使用與生產環境相同的部署組態、安全控制、步驟和程序,在生產前測試發行程序。驗證所有部署的步驟均按照預期完成,例如檢查檔案、組態和服務。透過功能、整合和負載測試以及任何監控 (例如運作狀態檢查) 進一步測試所有變更。透過這些測試,您可以及早發現部署問題,有機會在生產前進行規劃和問題緩解。
您可以建立暫時的平行環境來測試每項變更。使用基礎設施即程式碼 (IaC) 來自動化測試環境的部署,協助減少涉及的工作量,並確保穩定性、一致性和更快的功能交付。
預期成果: 您的組織採用測試驅動的開發文化,其中包含測試部署。如此一來,便能確保團隊專注於交付商業價值,而非管理發行版本。團隊會及早找出部署風險,並訂定適當的緩解方案。
常見的反模式:
-
使用生產版本期間,因為未經測試的部署經常會導致問題,而需要疑難排解或升級處理。
-
您的版本包含更新現有資源的基礎設施即程式碼 (IaC)。您不確定 IaC 是否會成功執行,或對資源造成影響。
-
您為應用程式部署一個新功能。該功能無法按照您的預期運作,且在受影響的使用者回報之前無法預見問題。
-
您更新憑證。您不小心將憑證安裝到錯誤的元件,這些元件未被偵測並因為無法建立與網站的安全連線,而影響了網站訪客。
建立此最佳實務的優勢: 針對部署程序的生產前階段及其帶來的變更進行廣泛測試,將部署步驟對生產的潛在負面影響降到最低。這麼做能增加產品發行期間的信心,並盡可能減少操作支援,同時不影響交付變更的速度。
未建立此最佳實務時的曝險等級: 高
實作指引
測試部署程序與測試部署所產生的變更同樣重要。您可以在生產前環境中測試部署步驟,盡可能準確反映生產環境。諸如不完整或錯誤部署步驟,或者配置錯誤等常見問題都能在生產環境之前偵測。此外,您也可以測試回復步驟。
客戶範例
作為持續整合與持續交付 (CI/CD) 管道的一部分,AnyCompany Retail 在一個類似生產環境中,執行為客戶發行基礎設施和軟體更新所需的定義步驟。流程包含許多預先檢查程序,可以在部署之前偵測到資源偏移 (偵測 IaC 以外所執行的資源變更),以及驗證 IaC 啟動時所採取的動作。這個程序會驗證部署步驟,例如確認特定檔案和組態已準備就緒,或服務處於執行狀態,並在向負載平衡器重新註冊之前,正確回應本機上的運作狀態檢查。此外,所有變更都標記了許多自動化測試,例如功能、安全性、迴歸、整合和負載測試。
實作步驟
-
執行安裝前檢查,將生產前環境反映到生產環境。
-
這會觸發手動核准步驟 ( AWS CodePipeline ),以授權生產前環境的部署。
-
使用部署組態 (例如 AWS CodeDeploy AppSpec 檔案) 來定義部署和驗證步驟。
-
在適用情況下,會整合 AWS CodeDeploy 和其他 AWS 服務 或 會整合 AWS CodeDeploy 和合作夥伴產品與服務。
-
監控部署 時會使用 Amazon CloudWatch、AWS CloudTrail,和 Amazon SNS 事件通知。
-
執行部署後自動化測試,包括功能、安全性、迴歸、整合和負載測試。
-
故障排除 部署問題。
-
成功驗證前述步驟後,應該會起始化手動核准工作流程,以授權部署到生產環境。
實作計劃的工作量: 高
資源
相關的最佳實務:
相關文件:
相關影片:
相關範例: