

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

# 部署前活動
<a name="pre-deployment"></a>

## 環境設計
<a name="environment-design"></a>

您測試和評估應用程式的環境會影響您測試應用程式的完整程度，以及您對這些結果準確反映生產中會發生什麼的可信度。您可能可以使用 Amazon DynamoDB 等服務，在開發人員電腦上於本機執行一些整合測試 （請參閱 [ DynamoDB 文件中的設定 DynamoDB 本機](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBLocal.html))。 DynamoDB 不過，在某個時間點，您需要在複寫生產環境的環境中進行測試，才能對結果達到最高的可信度。此環境會產生成本，因此我們建議您對環境採取暫存或管道化的方法，其中類似生產的環境稍後會出現在管道中。

## 整合測試
<a name="integration-testing"></a>

整合測試是測試應用程式定義良好的元件在使用外部相依性操作時正確執行其函數的程序。這些外部相依性可能是其他自訂開發的元件、您用於應用程式 AWS 的服務、第三方相依性和內部部署相依性。  本指南著重於展示應用程式彈性的整合測試。它假設單元和整合測試已存在，可證明軟體的功能準確性。

我們建議您設計整合測試，專門測試您已實作的彈性模式，例如斷路器模式或負載脫離 （請參閱[階段 2：設計和實作](stage-2.md))。彈性導向整合測試通常涉及將特定負載套用至應用程式，或使用 [AWS Fault Injection Service (AWS FIS)](https://aws.amazon.com/fis/) 等功能刻意將中斷引入環境。理想情況下，您應該在 CI/CD 管道中執行所有整合測試，並確保每次遞交程式碼時都執行測試。這可協助您快速偵測並回應任何程式碼或組態的變更，這些變更會導致違反您的彈性目標。大規模分散式應用程式非常複雜，即使微小的變更也會大幅影響應用程式似乎不相關部分的彈性。嘗試在每個遞交上執行您的測試。 AWS 提供一組絕佳的工具，用於操作您的 CI/CD 管道和其他 DevOps 工具。如需詳細資訊，請參閱 [網站上的 DevOps 簡介 AWS](https://docs.aws.amazon.com/whitepapers/latest/introduction-devops-aws/introduction-to-devops.html) AWS 。

## 自動化部署管道
<a name="automated-deployment-pipelines"></a>

部署至生產前環境並在其中進行測試，是最適合自動化的重複且複雜的任務。此程序的自動化會釋放人力資源並減少發生錯誤的機會。自動化此程序的機制通常稱為*管道*。當您建立管道時，建議您設定一系列的測試環境，這些環境會越來越接近您的生產組態。您可以使用此系列環境重複測試您的應用程式。第一個環境提供的一組功能比生產環境更有限，但成本明顯較低。後續環境應新增 服務並擴展，以更緊密地反映生產環境。

首先在第一個環境中進行測試。部署在第一個測試環境中通過所有測試後，讓應用程式在一定的負載下執行一段時間，以查看是否隨著時間發生任何問題。確認您已正確設定可觀測性 （請參閱本指南稍後的*警示精確度*)，以便您可以偵測出現的任何問題。當此觀察期間成功完成時，請將您的應用程式部署到下一個測試環境，並重複此程序，新增環境支援的其他測試或負載。以這種方式充分測試應用程式後，您可以使用先前設定的部署方法，將應用程式部署到生產環境 （請參閱本指南稍早*的定義 CI/CD 策略*)。Amazon Builders' Library中的[自動化安全、移出部署](https://aws.amazon.com/builders-library/automating-safe-hands-off-deployments/)一篇文章是絕佳的資源，說明 Amazon 如何自動化程式碼部署。生產部署之前的環境數量會有所不同，取決於應用程式的複雜性及其相依性類型。

## 負載測試
<a name="load-testing"></a>

在表面上，負載測試類似於整合測試。您可以測試應用程式及其外部相依性的離散函數，以確認其可如預期般運作。然後，負載測試會超越整合測試，以專注於應用程式在定義良好的負載下的運作方式。負載測試需要驗證正確的功能，因此必須在成功整合測試之後進行。請務必了解應用程式在預期負載下的回應能力，以及負載超過預期時的行為。這可協助您 驗證已實作必要的機制，以確保您的應用程式在極端負載下保持彈性。如需在 上載入測試的完整指南 AWS，請參閱《 AWS 解決方案程式庫》中的在 [上進行分散式負載測試 AWS](https://aws.amazon.com/solutions/implementations/distributed-load-testing-on-aws/)。