

# PERF 1  您如何選擇效能最佳的架構？
<a name="w2aac19c11b5b5"></a>

 欲讓工作負載達到最佳效能通常需要採用多種方法。Well-Architected 系統會使用多重解決方案和功能以提升效能。 

**Topics**
+ [PERF01-BP01 了解可用的服務和資源](perf_performing_architecture_evaluate_resources.md)
+ [PERF01-BP02 定義架構選擇程序](perf_performing_architecture_process.md)
+ [PERF01-BP03 將成本需求因素納入決策](perf_performing_architecture_cost.md)
+ [PERF01-BP04 使用政策或參考架構](perf_performing_architecture_use_policies.md)
+ [PERF01-BP05 使用雲端供應商或適當的合作夥伴提供的指導](perf_performing_architecture_external_guidance.md)
+ [PERF01-BP06 對現有工作負載進行基準化分析](perf_performing_architecture_benchmark.md)
+ [PERF01-BP07 對工作負載執行負載測試](perf_performing_architecture_load_test.md)

# PERF01-BP01 了解可用的服務和資源
<a name="perf_performing_architecture_evaluate_resources"></a>

 了解並熟悉雲端中可用的廣泛服務和資源。確定與工作負載相關的服務和組態選項，並了解如何獲得最佳效能。 

 如果您要評估現有的工作負載，則必須針對其使用的各種服務資源產生監視清單。您的監視清單可協助您評估哪些元件可以被受管服務和較新的技術取代。 

 **常用的反模式：** 
+  您可以使用雲端做為並置資料中心。 
+  您可以使用共用儲存來處理所有需要持久性儲存的物件。 
+  您不使用自動調整規模功能。 
+  您使用的執行個體類型與目前標準最相符，但大於需求。 
+  您會部署和管理可做為受管服務的技術。 

 **建立此最佳實務的優勢：** 考量採用可能不熟悉的服務，可以大幅降低基礎設施成本，以及維護服務所需的工作量。您可以透過部署新的服務和功能來加速交期。 

 **若未建立此最佳實務，暴露的風險等級為：** 高 

## 實作指引
<a name="perf01-bp01-implementation-guidance"></a>

 清查工作負載軟體和架構以存放相關服務：收集工作負載的庫存，並決定要進一步了解哪些產品類別。識別可被受管服務替換的工作負載元件，以提高效能並降低操作複雜性。 

## 資源
<a name="resources"></a>

 **相關文件：** 
+  [AWS 架構中心](https://aws.amazon.com/architecture/) 
+  [AWS Partner Network](https://aws.amazon.com/partners/) 
+  [AWS 解決方案程式庫](https://aws.amazon.com/solutions/) 
+  [AWS 知識中心](https://aws.amazon.com/premiumsupport/knowledge-center/) 

 **相關影片：** 
+  [Amazon Builders' Library 簡介 (DOP328)](https://www.youtube.com/watch?v=sKRdemSirDM) 
+  [This is my Architecture](https://aws.amazon.com/architecture/this-is-my-architecture/) 

 **相關範例：** 
+  [AWS 範例](https://github.com/aws-samples) 
+  [AWS SDK 範例](https://github.com/awsdocs/aws-doc-sdk-examples) 

# PERF01-BP02 定義架構選擇程序
<a name="perf_performing_architecture_process"></a>

 使用內部經驗和雲端知識，或外部資源 (例如已發佈的使用案例、相關文件或白皮書)，定義選擇資源和服務的程序。您定義的程序應該鼓勵對可在工作負載中使用的服務進行實驗和基準化分析。 

 在為架構編寫關鍵使用者案例時，應包括效能要求，例如指定每個關鍵案例應執行的速度。對於這些關鍵案例，您應實作額外執行指令碼的使用者旅程，以確保您可以直觀地了解這些案例會如何根據您的要求予以執行。 

 **常用的反模式：** 
+  您假設您目前的架構將變成靜態，且一段時間不會更新。 
+  您會隨時間導入架構變更，而且無需理由佐證。 

 **建立此最佳實務的優勢：** 建立進行架構變更的定義程序後，即可啟用收集的資料，以隨著時間影響工作負載。 

 **若未建立此最佳實務，暴露的風險等級為：** 高 

## 實作指引
<a name="implementation-guidance"></a>

 選擇一種架構方法：確定可以滿足效能需求的架構類型。識別限制，例如交付媒體 (桌面、Web、移動、IoT)、遺留需求和整合。識別重複使用的機會，包括重構。諮詢其他團隊、架構圖解和資源，例如 AWS 解決方案架構師、AWS 參考架構和 AWS 合作夥伴，以幫助您選擇架構。 

 定義效能需求：使用客戶體驗來確定最重要的指標。對於每個指標，確定目標、測量方法和優先級。定義客戶體驗。記錄客戶所需的效能體驗，包括客戶如何評價工作負載的效能。優先考慮關鍵使用者案例的體驗問題。納入效能需求並實作執行指令碼的使用者之旅，以確保您了解這些案例會如何根據您的要求予以執行。 

## 資源
<a name="resources"></a>

 **相關文件：** 
+  [AWS 架構中心](https://aws.amazon.com/architecture/) 
+  [AWS Partner Network](https://aws.amazon.com/partners/) 
+  [AWS 解決方案程式庫](https://aws.amazon.com/solutions/) 
+  [AWS 知識中心](https://aws.amazon.com/premiumsupport/knowledge-center/) 

 **相關影片：** 
+  [Amazon Builders' Library 簡介 (DOP328)](https://www.youtube.com/watch?v=sKRdemSirDM) 
+  [This is my Architecture](https://aws.amazon.com/architecture/this-is-my-architecture/) 

 **相關範例：** 
+  [AWS 範例](https://github.com/aws-samples) 
+  [AWS SDK 範例](https://github.com/awsdocs/aws-doc-sdk-examples) 

# PERF01-BP03 將成本需求因素納入決策
<a name="perf_performing_architecture_cost"></a>

 工作負載通常具有營運的成本需求。使用內部成本控制，根據預測的資源需求選取資源類型和大小。 

 判斷哪些工作負載元件可以被全受管服務 (例如受管資料庫、記憶體內快取和 ETL 服務) 取代。降低營運工作負載可讓您將資源投注在業務成果上。 

 如需成本需求最佳實務，請參閱 *成本優化支柱白皮書中* 經濟實惠的 [資源章節](https://docs.aws.amazon.com/wellarchitected/latest/cost-optimization-pillar/welcome.html)。 

 **常用的反模式：** 
+  您只能使用一個執行個體系列。 
+  您不會評估授權解決方案與開放原始碼解決方案 
+  您只能使用區塊儲存。 
+  您可以在 EC2 執行個體和可做為受管服務使用的 Amazon EBS 或暫時性磁碟區上部署常見的軟體。 

 **建立此最佳實務的優勢：** 做出選擇時考慮成本，可讓您促成其他投資。 

 **若未建立此最佳實務，暴露的風險等級：** 中 

## 實作指引
<a name="implementation-guidance"></a>

 將工作負載元件最佳化以降低成本：調整工作負載元件的大小並啟用彈性功能，以降低成本並最大化元件效率。判斷哪些工作負載元件可在適當時由受管服務 (例如受管資料庫、記憶體內快取和反向代理) 取代。 

## 資源
<a name="resources"></a>

 **相關文件：** 
+  [AWS 架構中心](https://aws.amazon.com/architecture/) 
+  [AWS Partner Network](https://aws.amazon.com/partners/) 
+  [AWS 解決方案程式庫](https://aws.amazon.com/solutions/) 
+  [AWS 知識中心](https://aws.amazon.com/premiumsupport/knowledge-center/) 
+  [AWS Compute Optimizer](https://aws.amazon.com/compute-optimizer/) 

 **相關影片：** 
+  [Amazon Builders' Library 簡介 (DOP328)](https://www.youtube.com/watch?v=sKRdemSirDM) 
+  [This is my Architecture](https://aws.amazon.com/architecture/this-is-my-architecture/) 
+  [優化 AWS 運算的效能和成本 (CMP323-R1) ](https://www.youtube.com/watch?v=zt6jYJLK8sg&ref=wellarchitected) 

 **相關範例：** 
+  [AWS 範例](https://github.com/aws-samples) 
+  [AWS SDK 範例](https://github.com/awsdocs/aws-doc-sdk-examples) 
+  [在 Compute Optimizer 和記憶體使用率已啟用的情況下適當調整大小](https://www.wellarchitectedlabs.com/cost/200_labs/200_aws_resource_optimization/5_ec2_computer_opt/) 
+  [AWS Compute Optimizer 示範程式碼](https://github.com/awslabs/ec2-spot-labs/tree/master/aws-compute-optimizer) 

# PERF01-BP04 使用政策或參考架構
<a name="perf_performing_architecture_use_policies"></a>

 透過評估內部政策和現有參考架構，並使用分析來選取工作負載的服務和組態，來將效能和效率提升至最大。 

 **常用的反模式：** 
+  您可以廣泛使用可能影響公司管理開銷的技術選擇。 

 **建立此最佳實務的優勢：** 建立架構、技術和供應商選擇的政策可讓您快速做出決策。 

 **若未建立此最佳實務，暴露的風險等級：** 中 

## 實作指引
<a name="implementation-guidance"></a>

 使用現有的政策或參考架構來部署工作負載：將服務整合到您的雲端部署，然後使用效能測試以確保您可以繼續滿足效能需求。 

## 資源
<a name="resources"></a>

 **相關文件：** 
+  [AWS 架構中心](https://aws.amazon.com/architecture/) 
+  [AWS Partner Network](https://aws.amazon.com/partners/) 
+  [AWS 解決方案程式庫](https://aws.amazon.com/solutions/) 
+  [AWS 知識中心](https://aws.amazon.com/premiumsupport/knowledge-center/) 

 **相關影片：** 
+  [Amazon Builders' Library 簡介 (DOP328)](https://www.youtube.com/watch?v=sKRdemSirDM) 
+  [This is my Architecture](https://aws.amazon.com/architecture/this-is-my-architecture/) 

 **相關範例：** 
+  [AWS 範例](https://github.com/aws-samples) 
+  [AWS SDK 範例](https://github.com/awsdocs/aws-doc-sdk-examples) 

# PERF01-BP05 使用雲端供應商或適當的合作夥伴提供的指導
<a name="perf_performing_architecture_external_guidance"></a>

 使用解決方案架構師、專業服務或適當的合作夥伴等雲端公司資源，來引導您做出決策。這些資源可協助檢閱和改善架構，以實現最佳效能。 

 當您需要其他指導或產品資訊時，請聯絡 AWS 尋求協助。AWS 解決方案架構師和 [AWS 專業服務](https://aws.amazon.com/professional-services/) 會為實作解決方案提供指導 [AWS 合作夥伴](https://aws.amazon.com/partners/) 會提供 AWS 專業知識，協助您提升業務的靈活性和創新性。 

 **常用的反模式：** 
+  您使用 AWS 做為通用資料中心供應商。 
+  您以非設計宗旨的方式使用 AWS 服務。 

 **建立此最佳實務的優勢：** 與您的供應商或合作夥伴協商，可讓您對自己的決策更有信心。 

 **若未建立此最佳實務，暴露的風險等級為：** 中 

## 實作指引
<a name="implementation-guidance"></a>

 聯絡 AWS 資源以獲得協助：AWS 解決方案架構師和專業服務會為實作解決方案提供指導。APN 合作夥伴提供 AWS 專業知識，協助您提升業務的靈活性和創新性。 

## 資源
<a name="resources"></a>

 **相關文件：** 
+  [AWS 架構中心](https://aws.amazon.com/architecture/) 
+  [AWS Partner Network](https://aws.amazon.com/partners/) 
+  [AWS 解決方案程式庫](https://aws.amazon.com/solutions/) 
+  [AWS 知識中心](https://aws.amazon.com/premiumsupport/knowledge-center/) 

 **相關影片：** 
+  [Amazon Builders' Library 簡介 (DOP328)](https://www.youtube.com/watch?v=sKRdemSirDM) 
+  [This is my Architecture](https://aws.amazon.com/architecture/this-is-my-architecture/) 

 **相關範例：** 
+  [AWS 範例](https://github.com/aws-samples) 
+  [AWS SDK 範例](https://github.com/awsdocs/aws-doc-sdk-examples) 

# PERF01-BP06 對現有工作負載進行基準化分析
<a name="perf_performing_architecture_benchmark"></a>

 對現有工作負載的效能進行基準化分析，以了解工作負載在雲端的效能。使用從基準化分析中收集的資料，來推動架構決策。 

 使用基準化分析搭配綜合測試和實際使用者監控，以產生與工作負載元件效能相關的資料。與負載測試相比，基準化分析通常速度更快；要評估特定元件的技術時，會使用基準化分析。當您缺少執行負載測試的完整解決方案時，通常可在新專案開始時使用基準化分析。 

 您可以建置自己的自訂基準化分析測試，也可以使用產業標準測試，例如 [TPC-DS](http://www.tpc.org/tpcds/) ，來對資料倉儲工作負載進行基準化分析。比較環境時，產業基準化分析很有幫助。對於確定您希望在架構中進行的特定營運類型，自訂基準化分析非常實用。 

 基準化分析時，務必要預熱測試環境，以確保獲得有效的結果。多次執行相同的基準化分析，以確保您已擷取到隨時間推移出現的任何變化。 

 由於基準化分析的速度通常比負載測試要快，因此可以在部署管道中盡早使用基準化分析，以便能更快提供有關效能偏差的回饋。當您評估元件或服務中的重大變更時，藉助基準化分析，您可以更快速地查看所做的變更是否合理。請務必使用基準化分析搭配負載測試，因為負載測試將告訴您工作負載在生產中的效能。 

 **常用的反模式：** 
+  您倚賴不表現工作負載特性的常見基準測試。 
+  您依賴客戶意見回饋和感受做為唯一的基準測試。 

 **建立此最佳實務的優勢：** 對目前的實作進行基準化分析，可讓您測量效能改善。 

 **若未建立此最佳實務，暴露的風險等級：** 中 

## 實作指引
<a name="implementation-guidance"></a>

 在開發過程中監控效能：實作可隨著工作負載的演進而提供效能可見度的程序。 

 整合到交付管道：在您的交付管道中自動執行負載測試。將測試結果與預先定義的關鍵績效指標 (KPI) 和閾值進行比較，以確保您能持續符合效能需求。 

 測試使用者之旅：使用生產資料的綜合或處理過的版本 (移除敏感或身份資訊) 進行負載測試。透過在整個應用程式中使用重新執行或預先程式化的使用者之旅來測試整個架構。 

 實際使用者監控：使用 CloudWatch RUM 來協助您收集和檢視有關應用程式效能的用戶端資料。使用此資料可協助建立您的實際使用者效能基準測試。 

## 資源
<a name="resources"></a>

 **相關文件：** 
+  [AWS 架構中心](https://aws.amazon.com/architecture/) 
+  [AWS Partner Network](https://aws.amazon.com/partners/) 
+  [AWS 解決方案程式庫](https://aws.amazon.com/solutions/) 
+  [AWS 知識中心](https://aws.amazon.com/premiumsupport/knowledge-center/) 
+  [Amazon CloudWatch RUM](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-RUM.html) 
+  [Amazon CloudWatch Synthetics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Canaries.html) 

 **相關影片：** 
+  [Amazon Builders' Library 簡介 (DOP328)](https://www.youtube.com/watch?v=sKRdemSirDM) 
+  [This is my Architecture](https://aws.amazon.com/architecture/this-is-my-architecture/) 
+  [透過 Amazon CloudWatch RUM 優化應用程式](https://www.youtube.com/watch?v=NMaeujY9A9Y) 
+  [Amazon CloudWatch Synthetics 的示範](https://www.youtube.com/watch?v=hF3NM9j-u7I) 

 **相關範例：** 
+  [AWS 範例](https://github.com/aws-samples) 
+  [AWS SDK 範例](https://github.com/awsdocs/aws-doc-sdk-examples) 
+  [分散式負載測試](https://aws.amazon.com/solutions/implementations/distributed-load-testing-on-aws/) 
+  [使用 Amazon CloudWatch Synthetics 測量頁面載入時間](https://github.com/aws-samples/amazon-cloudwatch-synthetics-page-performance) 
+  [Amazon CloudWatch RUM Web 用戶端](https://github.com/aws-observability/aws-rum-web) 

# PERF01-BP07 對工作負載執行負載測試
<a name="perf_performing_architecture_load_test"></a>

 使用不同類型和大小的資源，在雲端部署最新的工作負載架構。監控部署，以擷取可識別瓶頸或過多容量的效能指標。使用此效能資訊，來設計或改善您的架構和資源選擇。 

 負載測試會使用 *實際* 工作負載，以便您查看解決方案在生產環境中的效能。必須使用生產資料的綜合或處理過的版本 (刪除敏感或可識別身分的資訊) 執行負載測試。在工作負載中大規模使用重播或預先程式化的使用者旅程，以遍歷整個架構。在交付管道中自動執行負載測試，並將結果與預先定義的 KPI 和閾值進行比較。這可確保您持續達到所需的效能。 

 **常用的反模式：** 
+  您載入測試工作負載的個別部分，而非整個工作負載。 
+  您在與生產環境不同的基礎設施上載入測試。 
+  您只對預期的 (而非超標) 負載進行負載測試，以協助預測未來可能發生問題的位置。 
+  在不通知 AWS 支援 的情況下執行負載測試，並以類似拒絕服務事件的形式來擊敗測試。 

 **建立此最佳實務的優勢：** 在負載測試下測量效能時，會顯示負載增加時會受到影響的位置。這可在變更影響工作負載之前，讓您先預測所需的變更。 

 **若未建立此最佳實務，暴露的風險等級為：** 低 

## 實作指引
<a name="implementation-guidance"></a>

 透過負載測試驗證方法：載入測試概念驗證，以確認是否符合效能需求。您可以使用 AWS 服務執行生產規模的環境，進而測試您的架構。由於僅在需要時才為測試環境付費，因此您只需花費使用內部部署環境的一小部分成本，就可以執行全面測試。 

 監控指標：Amazon CloudWatch 可以收集架構中各種資源的指標。您還可以收集和發佈自訂指標以顯示業務或衍生指標。使用 CloudWatch 或第三方解決方案來設定可指出何時超過閾值的警示。 

 大規模測試：負載測試會使用實際工作負載，因此您可以查看解決方案在生產環境中的效能。您可以使用 AWS 服務執行生產規模的環境，進而測試您的架構。由於僅在需要時為測試環境付費，因此與使用內部部署環境相比，可以更低的成本執行全面測試。利用 AWS 雲端測試您的工作負載，以發現無法擴展的地方或是否以非線性方式擴展。例如，使用 Spot 執行個體以低成本產生負載，並在生產中遇到瓶頸之前發現瓶頸。 

## 資源
<a name="resources"></a>

 **相關文件：** 
+  [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) 
+  [使用 CloudFormer 建置 AWS CloudFormation 範本](https://aws.amazon.com/blogs/devops/building-aws-cloudformation-templates-using-cloudformer/) 
+  [Amazon CloudWatch RUM](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-RUM.html) 
+  [Amazon CloudWatch Synthetics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Canaries.html) 
+  [AWS 上的分散式負載測試](https://docs.aws.amazon.com/solutions/latest/distributed-load-testing-on-aws/welcome.html) 

 **相關影片：** 
+  [Amazon Builders' Library 簡介 (DOP328)](https://www.youtube.com/watch?v=sKRdemSirDM) 
+  [透過 Amazon CloudWatch RUM 優化應用程式](https://www.youtube.com/watch?v=NMaeujY9A9Y) 
+  [Amazon CloudWatch Synthetics 的示範](https://www.youtube.com/watch?v=hF3NM9j-u7I) 

 **相關範例：** 
+  [AWS 上的分散式負載測試](https://aws.amazon.com/solutions/implementations/distributed-load-testing-on-aws/) 