部署前活動 - AWS 規範指南

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

部署前活動

環境設計

您在其中測試和評估應用程式的環境會影響您測試應用程式的完整程度,以及您對這些結果準確反映在生產環境中會發生的情況有多大的信心。您也許可以使用 Amazon DynamoDB 等服務,在開發人員電腦上在本機執行某些整合測試 (請參閱 DynamoDB 文件中的本機設定 DynamoDB)。但是,在某些時候,您需要在複製生產環境的環境中進行測試,以便在結果中獲得最高的信心。這個環境會產生成本,因此我們建議您採取分段或流水線化的方法來處理環境,其中生產環境稍後會出現在管線中。

集成測試

集成測試是測試一個應用程序的一個明確定義的組件,當它與外部依賴運行正確執行其功能的過程。這些外部相依性可能是其他自訂開發的元件、您用於應用程式的 AWS 服務、協力廠商相依性,以及內部部署相依性。  本指南著重於展示應用程式彈性的整合測試。它假設單元和集成測試已經存在,以證明軟件的功能準確性。

我們建議您設計整合測試,以專門測試您已實作的彈性模式,例如斷路器模式或負載脫落 (請參閱階段 2:設計與實作)。面向復原的整合測試通常涉及將特定負載套用至應用程式,或是使用 () 等功能,故意將中斷引入環境。AWS Fault Injection ServiceAWS FIS理想情況下,您應該將所有集成測試作為 CI/CD 管道的一部分運行,並確保每次提交代碼時都運行測試。這可協助您快速偵測並回應任何導致違反彈性目標的程式碼或組態變更。大規模的分散式應用程式很複雜,即使是微小的變更,也可能會大幅影響應用程式看似不相關部分的彈性。嘗試在每次提交上運行測試。 AWS 為操作 CI/CD 管道和其他 DevOps 工具提供了一套出色的工具。如需詳細資訊,請參閱 AWS 網站 DevOps AWS上的簡介

自動化部署管道

在生產前環境中進行部署和測試是一項重複且複雜的任務,最好留給自動化。此過程的自動化可以釋放人力資源並減少錯誤的機會。自動化此程序的機制通常稱為管線。建立管道時,建議您設定一系列越來越接近生產組態的測試環境。您可以使用這一系列環境來重複測試您的應用程式。第一個環境提供的功能組比生產環境更有限,但成本大幅降低。後續環境應新增服務並進行擴充,以更緊密地反映生產環境。

首先在第一個環境中進行測試。在您的部署通過第一個測試環境中的所有測試之後,請讓應用程式在一定程度的負載下執行一段時間,以查看是否有任何問題隨著時間的推移發生。確認您已正確設定可觀測性 (請參閱本指南後面的警示精確度),以便您可以偵測出現的任何問題。成功完成此觀察期後,請將應用程式部署到下一個測試環境,然後重複此程序,並根據環境支援新增其他測試或負載。以這種方式對應用程式進行充分測試之後,您就可以使用先前設定的部署方法,將應用程式部署到生產環境中 (請參閱本指南稍早的定義 CI/CD 策略)。文章自動化 Amazon Builders' Library 中的安全、免動手部署是一項很好的資源,描述 Amazon 如何自動化程式碼部署。生產部署之前的環境數量會有所不同,具體取決於應用程式的複雜性及其具有的相依性類型。

負載測試

從表面上看,負載測試類似於集成測試。您可以測試應用程式及其外部相依性的離散函式,以確認其如預期般運作。負載測試然後超越集成測試,專注於明確定義的負載下的應用程序的功能。負載測試需要驗證正確的功能,因此它必須在成功的集成測試後發生。重要的是要了解應用程序在預期負載下的響應以及當負載超出預期時它的行為是非常重要的。這可協助您驗證是否已實作必要的機制,以確保應用程式在極端負載下保持彈性。有關負載測試的綜合指南 AWS,請參閱 AWS 解決方案庫 AWS中的分佈式負載測試