

# 權衡
<a name="a-tradeoffs"></a>

**Topics**
+ [PERF 8  您如何採用權衡來增進效能？](w2aac19c11c11b5.md)

# PERF 8  您如何採用權衡來增進效能？
<a name="w2aac19c11c11b5"></a>

 架構解決方案時，判斷權衡項目可讓您選擇最佳方法。您通常可以透過權衡一致性、耐用性和時間與延遲的空間來提升效能。 

**Topics**
+ [PERF08-BP01 了解效能至關重要的領域](perf_tradeoffs_performance_critical_areas.md)
+ [PERF08-BP02 了解設計模式和服務](perf_tradeoffs_performance_design_patterns.md)
+ [PERF08-BP03 確定權衡如何影響客戶和效率：](perf_tradeoffs_performance_understand_impact.md)
+ [PERF08-BP04 衡量效能改進的影響](perf_tradeoffs_performance_measure.md)
+ [PERF08-BP05 使用各種與效能相關的策略](perf_tradeoffs_performance_implement_strategy.md)

# PERF08-BP01 了解效能至關重要的領域
<a name="perf_tradeoffs_performance_critical_areas"></a>

 了解並找出提高工作負載效能將對效率或客戶體驗產生正面影響的地方。例如，具有大量客戶互動的網站可受益於邊緣服務的使用，因為這樣可以將內容交付移至更接近客戶的地方。 

**預期成果：** 透過了解架構、流量模式和資料存取模式，來提高效能效率，並確定延遲和處理時間。找出隨著工作負載的成長，可能會影響客戶體驗的潛在瓶頸。當您已確定這些面向時，請審視自己可以部署哪個解決方案，來消除這些效能疑慮。

 **常見的反模式：** 
+  您假設標準運算指標 (例如， `CPUUtilization` 或記憶體壓力) 足以揪出效能問題。 
+  您只會使用所選監控軟體記錄的預設指標。 
+  您只會在有問題時審查指標。 

 **建立此最佳實務的優勢：** 了解效能的關鍵領域，有助於工作負載擁有者監控 KPI 和優先處理具有高影響力的待改善之處。 

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

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

設置端到端追蹤，以找出流量模式、延遲和關鍵的效能區域。監控資料存取模式是否有緩慢查詢或分段和分區不佳的資料。使用負載測試或監控來找出工作負載受限面向。

## 實作步驟
<a name="w2aac19c11c11b5b6c17"></a>

1.  設置端到端監控，來擷取所有工作負載組成部分和指標。 
   +  使用 [Amazon CloudWatch 實際使用者監控 (RUM)](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-RUM.html) 來擷取來自實際使用者用戶端和前端工作階段的應用程式效能指標。
   +  設置 [AWS X-Ray](https://aws.amazon.com/xray/) 來透過應用程式層追蹤流量，並找出組成部分和相依性之間的延遲。使用 X-Ray 服務地圖，來查看工作負載組成部分之間的關係和延遲。
   +  使用 [Amazon Relational Database Service 績效詳情](https://aws.amazon.com/rds/performance-insights/) 來檢視資料庫效能指標並找出效能待改善之處。
   +  使用 [Amazon RDS 增強型監控](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Monitoring.OS.html) 來檢視資料庫 OS 效能指標。
   +  收集 [每個工作負載組成部分和服務的 CloudWatch 指標，](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) 並找出哪些指標會影響效能效率。
   +  設置 [Amazon DevOps Guru](https://aws.amazon.com/devops-guru/) 以取得其他績效詳情和建議 

1.  執行測試，來產生指標、確定流量模式、瓶頸和關鍵效能區域。 
   +  設置 [CloudWatch Synthetic Canaries](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Canaries.html) 使用 cron 任務或速率表達式，以程式設計的方式 `模仿以瀏覽器為基礎的使用者活動，` 以產生長期一致的指標。
   +  使用 [AWS 分散式負載測試](https://aws.amazon.com/solutions/implementations/distributed-load-testing-on-aws/) 解決方案，來產生尖峰流量或以預期成長速率測試工作負載。

1.  評估指標和遙測，來找出關鍵的效能領域。與團隊檢視這些領域，討論監控和解決方案，來避免瓶頸。 

1.  進行效能改善的實驗，並透過資料來衡量這些變更。 
   +  使用 [CloudWatch Evidently](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Evidently.html) 來測試新的改善之處以及對工作負載的效能影響。

 **實作計劃的工作量：** 若要建立此最佳實務，您必須檢視端到端指標，並了解目前工作負載的效能。您需要投入適當的心力，來設置端到端監控並找出關鍵的效能領域。 

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

 **相關文件：** 
+  [Amazon 建置者資料中心](https://aws.amazon.com/builders-library) 
+  [X-Ray 文件](https://docs.aws.amazon.com/xray/latest/devguide/aws-xray.html) 
+  [Amazon CloudWatch RUM](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-RUM.html) 
+  [Amazon DevOps Guru](https://aws.amazon.com/devops-guru/) 
+  [CloudWatch RUM 和 X-Ray](https://docs.aws.amazon.com/xray/latest/devguide/xray-services-RUM.html) 

 **相關影片：** 
+  [Amazon 建置者資料中心簡介 (DOP328)](https://www.youtube.com/watch?v=sKRdemSirDM) 
+  [Amazon CloudWatch Synthetics 的示範](https://www.youtube.com/watch?v=hF3NM9j-u7I) 

 **相關範例：** 
+  [使用 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) 
+  [X-Ray SDK for Node.js](https://github.com/aws/aws-xray-sdk-node) 
+  [X-Ray SDK for Python](https://github.com/aws/aws-xray-sdk-python) 
+  [X-Ray SDK for Java](https://github.com/aws/aws-xray-sdk-java) 
+  [X-Ray SDK for .Net](https://github.com/aws/aws-xray-sdk-dotnet) 
+  [X-Ray SDK for Ruby](https://github.com/aws/aws-xray-sdk-ruby) 
+  [X-Ray 常駐程式](https://github.com/aws/aws-xray-daemon) 
+  [AWS 上的分散式負載測試](https://aws.amazon.com/solutions/implementations/distributed-load-testing-on-aws/) 

# PERF08-BP02 了解設計模式和服務
<a name="perf_tradeoffs_performance_design_patterns"></a>

 研究並了解有助於提高工作負載效能的各種設計模式和服務。作為分析的一部分，確定您為了實現更高效能而可能付出的代價。例如，使用快取服務可以協助減少資料庫系統所承擔的負載。但快取可能帶來最終一致性，這必須投入工程方面的努力，以期在業務要求與客戶期望內實現。

 **預期成果：** 研究設計模式有助於您選擇可支援最佳效能系統的架構設計。了解您可以使用哪些效能組態選項，以及它們如何影響工作負載。優化工作負載的效能取決於了解這些選項如何與您的架構互動，以及這些選項對衡量效能與使用者感知效能的影響。

 **常見的反模式：** 
+  您假設所有傳統 IT 工作負載效能策略皆最適合雲端工作負載。
+  您會建置並管理快取解決方案，而非使用受管服務。
+  您對所有的工作負載使用相同的設計模式，而未評估何種模式可改善工作負載效能。

 **建立此最佳實務的優勢：** 為您的工作負載選取正確的設計模式和服務，將可優化效能，進而帶動卓越營運並提升可靠性。正確的設計模式將符合您目前的工作負載特性，並協助您就未來的成長或變化進行擴展。

 **未建立此最佳實務時的曝險等級：** 高 

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

 了解您可以使用哪些效能組態選項，以及它們如何影響工作負載。最佳化工作負載的效能取決於了解這些選項如何與您的架構互動，以及這些選項對衡量效能與使用者感知效能的影響。

 **實作步驟：** 

1. 評估及檢閱將可改善工作負載效能的設計模式。

   1. AWS Well-Architected [Amazon Builders' Library](https://aws.amazon.com/builders-library/) 為您提供 Amazon 如何建置和操作技術的詳細說明。這些文章由 Amazon 的資深工程師撰寫，涵蓋了架構、軟體交付和操作等主題。

   1. [AWS 解決方案程式庫](https://aws.amazon.com/solutions/) 是可供部署的解決方案集合，其中結合了服務、程式碼和組態。這些解決方案由 AWS 和 AWS 合作夥伴所建立，其基礎為常見的使用案例，以及按產業或工作負載類型分組的設計模式。例如，您可以為工作負載設定 [分散式負載測試解決方案](https://aws.amazon.com/solutions/implementations/distributed-load-testing-on-aws/) 。

   1. [AWS 架構中心](https://aws.amazon.com/architecture/) 提供按設計模式、內容類型與技術分組的參考架構圖。

   1. [AWS 範例](https://github.com/aws-samples) 是包含各種實際操作範例的 GitHub 儲存庫，可協助您瀏覽常見的架構模式、解決方案和服務。此項目會以最新的服務和範例經常更新。

1. 改善您的工作負載，為選取的設計模式建立模型，並使用服務和服務組態選項改善您的工作負載效能。

   1. 使用下列位置的資源訓練您的內部團隊： [AWS Skills Guild](https://aws.amazon.com/training/teams/aws-skills-guild/)。

   1. 使用 [AWS Partner Network](https://aws.amazon.com/partners/) 快速提供專業知識，並擴展您的改進能力。

**實作計劃的工作量：** 若要建立此最佳實務，您必須了解有哪些設計模式和服務可協助您改善工作負載效能。評估設計模式後，實作設計模式將是 *高* 工作量。

## 資源
<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](https://aws.amazon.com/builders-library/) 
+  [利用卸載避免超載](https://aws.amazon.com/builders-library/using-load-shedding-to-avoid-overload/?did=ba_card&trk=ba_card) 
+ [快取挑戰和策略](https://aws.amazon.com/builders-library/caching-challenges-and-strategies/?did=ba_card&trk=ba_card)

 **相關影片：** 
+  [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) 

# PERF08-BP03 確定權衡如何影響客戶和效率：
<a name="perf_tradeoffs_performance_understand_impact"></a>

 在評估與效能相關的改進時，判斷哪些選擇將如何影響客戶和工作負載效率。例如，如果使用鍵值資料存放區提高系統效能，請務必評估其最終一致性本質對客戶的影響。 

 透過指標和監控來確定系統中效能不佳的部分。確定如何進行改進、這些改進帶來的權衡，以及它們如何影響系統和使用者體驗。例如，實作快取資料有助於大幅提升效能，但需要明確的策略來確定更新或使快取資料失效的方式和時間，以防止不正確的系統行為。 

 **常用的反模式：** 
+  您假設應該實作所有效能增益，即使實作有如最終一致性的權衡。 
+  您只會在效能問題達到臨界點時才會評估工作負載變更。 

 **建立此最佳實務的優勢：** 評估潛在的效能相關改善項目時，必須判斷技術變更的權衡是否與工作負載要求一致。在某些情況下，您可能需要實作其他控制來彌補權衡。 

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

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

 識別取捨：使用指標和監控來識別系統中效能不佳的部分。判斷如何進行改善，以及權衡對於系統和使用者體驗的影響。例如，實作快取資料有助於大幅提升效能，但需要明確的策略來確定更新或使快取資料失效的方式和時間，以防止不正確的系統行為。 

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

 **相關文件：** 
+  [Amazon Builders' Library](https://aws.amazon.com/builders-library) 
+  [Quick KPI](https://docs.aws.amazon.com/quicksight/latest/user/kpi.html) 
+  [Amazon CloudWatch RUM](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-RUM.html) 
+  [X-Ray 文件](https://docs.aws.amazon.com/xray/latest/devguide/aws-xray.html) 

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

 **相關範例：** 
+  [使用 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) 

# PERF08-BP04 衡量效能改進的影響
<a name="perf_tradeoffs_performance_measure"></a>

 在進行變更以提高效能時，請評估所收集的指標和資料。使用此資訊來判斷效能提升對工作負載、工作負載元件和客戶所造成的影響。此測量可協助您了解權衡所帶來的改善，並協助您判斷是否產生任何負面影響。 

 Well-Architected 系統利用一組效能策略。確定哪種策略將對給定的熱點或瓶頸產生最大的積極影響。例如，跨多個關聯式資料庫系統將資料分區可以提高整體輸送量，同時保留對交易的支援，並且在每個分區中，快取可以幫助減少負載。 

 **常用的反模式：** 
+  您會手動部署和管理可做為受管服務的技術。 
+  當可以使用多個元件來提高工作負載的效能時，您只需專注於如聯網等單一元件。 
+  您依賴客戶意見回饋和感受做為唯一的基準測試。 

 **建立此最佳實務的優勢：** 若要實作效能策略，您必須選擇多項服務和功能。當合併採用這些服務和功能時，您將能符合工作負載的效能需求。 

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

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

 Well-Architected 系統使用效能相關策略的組合。確定哪種策略將對給定的熱點或瓶頸產生最大的積極影響。例如，跨多個關聯式資料庫系統將資料分區可以提高整體輸送量，同時保留對交易的支援，並且在每個分區中，快取可以幫助減少負載。 

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

 **相關文件：** 
+  [Amazon Builders' Library](https://aws.amazon.com/builders-library) 
+  [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) 

 **相關範例：** 
+  [使用 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) 
+  [AWS 上的分散式負載測試](https://aws.amazon.com/solutions/implementations/distributed-load-testing-on-aws/) 

# PERF08-BP05 使用各種與效能相關的策略
<a name="perf_tradeoffs_performance_implement_strategy"></a>

 在適用的情況下，使用多種策略來提升效能。這些策略包括：快取資料以防止過多的網路或資料庫呼叫、使用資料庫引擎的唯讀複本來提高讀取速率、在可能的情況下對資料進行分區或壓縮以減少資料量，以及對結果進行緩衝和串流以避免阻塞。 

 在變更工作負載時，收集並評估指標以確定這些變更的影響。衡量對系統以及最終使用者的影響，以了解您的權衡如何影響您的工作負載。使用系統的方法 (例如負載測試) 來探索權衡是否可以提高效能。 

 **常用的反模式：** 
+  您假設在客戶未投訴的情況下，工作負載效能即已足敷使用。 
+  您只會在已進行效能相關變更後才收集效能資料。 

 **建立此最佳實務的優勢：** 若要最佳化效能和資源利用率，您需要取得整合操作檢視、即時精細資料和歷史參考。您可以建立儀表板，並對資料進行指標計算，以在工作負載隨著時間變更時，獲得工作負載的操作和使用率洞見。 

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

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

 使用資料驅動的方法來發展您的架構：在變更工作負載時，收集並評估指標以確定這些變更的影響。衡量對系統以及最終使用者的影響，以了解您的權衡如何影響您的工作負載。使用系統的方法 (例如負載測試) 來探索權衡是否可以提高效能。 

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

 **相關文件：** 
+  [Amazon Builders' Library](https://aws.amazon.com/builders-library) 
+  [實作 Amazon ElastiCache 的最佳實務](https://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/BestPractices.html) 
+  [AWS 資料庫快取 ](https://aws.amazon.com/caching/database-caching/?ref=wellarchitected) 
+  [Amazon CloudWatch RUM](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-RUM.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) 
+  [AWS 專用資料庫 (DAT209-L) ](https://www.youtube.com/watch?v=q81TVuV5u28&ref=wellarchitected) 
+  [透過 Amazon CloudWatch RUM 優化應用程式](https://www.youtube.com/watch?v=NMaeujY9A9Y) 

 **相關範例：** 
+  [使用 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) 
+  [AWS 上的分散式負載測試](https://aws.amazon.com/solutions/implementations/distributed-load-testing-on-aws/) 