

# 效能達成效率
<a name="a-performance-efficiency"></a>

效能達成效率要件包括有效率地使用運算資源以滿足系統需求，並隨著需求變更與技術發展來保持該效率需求的能力。您可以在[效能達成效率支柱白皮書](https://docs.aws.amazon.com/wellarchitected/latest/performance-efficiency-pillar/welcome.html?ref=wellarchitected-wp)中找到實作的指引。

**Topics**
+ [選擇](a-selection.md)
+ [檢閱](a-review.md)
+ [監控](a-monitoring.md)
+ [權衡](a-tradeoffs.md)

# 選擇
<a name="a-selection"></a>

**Topics**
+ [PERF 1  您如何選擇效能最佳的架構？](perf-01.md)
+ [PERF 2  您如何選取運算解決方案？](perf-02.md)
+ [PERF 3  您如何選取儲存解決方案？](perf-03.md)
+ [PERF 4  您如何選擇資料庫解決方案？](perf-04.md)
+ [PERF 5  您如何設定聯網解決方案？](perf-05.md)

# PERF 1  您如何選擇效能最佳的架構？
<a name="perf-01"></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/) 

# PERF 2  您如何選取運算解決方案？
<a name="perf-02"></a>

工作負載的最佳運算解決方案會根據應用程式設計、使用模式和組態設定而有所不同。架構可針對不同元件使用不同運算解決方案並啟用不同功能，以提升效能。為架構選錯運算解決方案，可能使效能達成效率降低。

**Topics**
+ [PERF02-BP01 評估可用的運算選項](perf_select_compute_evaluate_options.md)
+ [PERF02-BP02 了解可用的運算組態選項](perf_select_compute_config_options.md)
+ [PERF02-BP03 收集與運算相關的指標](perf_select_compute_collect_metrics.md)
+ [PERF02-BP04 透過適當調整大小來確定所需的組態](perf_select_compute_right_sizing.md)
+ [PERF02-BP05 利用資源的可用彈性](perf_select_compute_elasticity.md)
+ [PERF02-BP06 根據指標持續評估運算需求](perf_select_compute_use_metrics.md)

# PERF02-BP01 評估可用的運算選項
<a name="perf_select_compute_evaluate_options"></a>

 了解您的工作負載如何受益於使用不同的運算選項，例如執行個體、容器和函數。 

 **預期成果：** 藉由了解所有可用的運算選項，您將注意到提高效能、減少不必要的基礎設施成本，以及降低減少維護工作負載所需操作工作量的機會。如果部署新服務和功能，也可以加速交期。 

 **常用的反模式：** 
+  在遷移後工作負載中，使用正用於內部部署的同一運算解決方案。 
+  缺乏對雲端運算解決方案以及這些解決方案如何提高您運算效能的感認。 
+  當替代運算解決方案更精確地符合您的工作負載特性時，現有運算解決方案會變得更大以符合擴展或效能要求。 

 **建立此最佳實務的優勢：** 藉由識別運算要求和評估可用的運算解決方案，業務利害關係人和工程團隊將了解使用所選運算解決方案的優勢和限制。選取的運算解決方案應該符合工作負載效能準則。重要準則包括處理需求、流量模式、資料存取模式、擴展需求，以及延遲要求。 

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

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

 了解可以使工作負載受益並滿足效能要求的虛擬化、容器化和管理解決方案。一個工作負載可以包含多種類型的運算解決方案。每個運算解決方案都有不同的特性。根據工作負載規模和運算要求，您可以選取一個運算解決方案，並將其設定為符合您的需求。雲端架構師應該了解執行個體、容器和函數的優缺點。下列步驟將協助您如何選取運算解決方案，以符合工作負載特性和效能要求。 


|  **類型**  |  **伺服器**  |  **容器**  |  **函數**  | 
| --- | --- | --- | --- | 
|  AWS 服務  |  Amazon Elastic Compute Cloud (Amazon EC2)  |  Amazon Elastic Container Service (Amazon ECS)、Amazon Elastic Kubernetes Service (Amazon EKS)  |  AWS Lambda  | 
|  重要特性  |  具有硬體授權要求的專用選項、置放選項，以及根據運算指標大量選取不同的執行個體系列  |  易於部署、一致環境、在 EC2 執行個體之上執行、可擴展  |  執行時間短 (15 分鐘或更少)、最大記憶體和 CPU 不如其他服務高、受管硬體層、可擴展到數百萬個並行要求  | 
|  常見的使用案例  |  隨即轉移遷移、整合型應用程式、混合環境、企業應用程式  |  微型服務、混合環境、  |  微型服務、事件驅動應用程式  | 

 

 **實作步驟：** 

1.  透過評估選取運算解決方案所在位置 [PERF05-BP06 根據網路要求選擇工作負載的位置](perf_select_network_location.md)。此位置將限制可供您使用的運算解決方案類型。

1.  識別處理位置要求和應用程式要求的運算解決方案類型  

   1.  [https://aws.amazon.com/ec2/](https://aws.amazon.com/ec2/) 虛擬伺服器執行個體提供廣泛不同的系列和大小。它們可提供眾多不同功能，包括固態硬碟 (SSD) 和圖形處理單元 (GPU)。EC2 執行個體可在選擇執行個體時提供最大彈性。啟動 EC2 執行個體時，您指定的執行個體類型會決定執行個體的硬體。每種執行個體類型均提供了不同的運算、記憶體和儲存功能。我們會根據這些功能，將執行個體類型分組為不同的執行個體系列。典型使用案例包括：執行企業應用程式、高效能運算 (HPC)、訓練和部署機器學習應用程式，以及執行雲端原生應用程式。

   1.  [https://aws.amazon.com/ecs/](https://aws.amazon.com/ecs/) 是全受管的容器協調服務，可讓您使用 AWS Fargate，在 EC2 執行個體或無伺服器執行個體的叢集上 自動執行和管理容器。您可以使用 Amazon ECS，搭配 Amazon Route 53、Secrets Manager、AWS Identity and Access Management (IAM) 和 Amazon CloudWatch 等服務。如果您的應用程式已容器化，而且您的工程團隊偏好 Docker 容器，則建議使用 Amazon ECS。 

   1.  [https://aws.amazon.com/eks/](https://aws.amazon.com/eks/) 是全受管的 Kubernetes 服務。您可以選擇使用 AWS Fargate 執行 EKS 叢集，無須佈建和管理伺服器。管理 Amazon EKS 已簡化，因為與 AWS 服務整合，例如 Amazon CloudWatch、Auto Scaling 群組、AWS Identity and Access Management (IAM) 和 Amazon Virtual Private Cloud (VPC)。使用容器時，您必須使用運算指標，為工作負載選取最佳類型，類似於使用運算指標選取 EC2 或 AWS Fargate 執行個體類型的方式。如果您的應用程式已容器化，並且您的工程團隊偏好 Kubernetes 而不是 Docker 容器，則建議使用 Amazon EKS。 

   1.  您可以使用 [https://aws.amazon.com/lambda/](https://aws.amazon.com/lambda/) 執行程式碼，支援允許的執行時間、記憶體和 CPU 選項。只要上傳程式碼，AWS Lambda 就會管理程式碼執行和擴展所需的所有項目。您可以將程式碼設定為從其他 AWS 服務自動觸發或直接呼叫它。若是針對雲端開發且短期執行的微型服務架構，建議使用 Lambda。  

1.  在您已使用新的運算解決方案進行了試驗之後，請規劃您的遷移並驗證您的效能指標。這是持續程序，請參閱 [PERF02-BP04 透過適當調整大小來確定所需的組態](perf_select_compute_right_sizing.md)。

 **實作計劃的工作量：** 如果工作負載從某個運算解決方案移至另一個運算解決方案，則有一個 *中等* 工作量，其中涉及重構應用程式。   

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

 **相關文件：** 
+  [使用 AWS 進行雲端運算 ](https://aws.amazon.com/products/compute/?ref=wellarchitected) 
+  [EC2 執行個體類型 ](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html?ref=wellarchitected) 
+  [EC2 執行個體的處理器狀態控制 ](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/processor_state_control.html?ref=wellarchitected) 
+  [EKS 容器：EKS 工作節點 ](https://docs.aws.amazon.com/eks/latest/userguide/worker.html?ref=wellarchitected) 
+  [Amazon ECS 容器：Amazon ECS 容器執行個體 ](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_instances.html?ref=wellarchitected) 
+  [函數：Lambda 函數組態](https://docs.aws.amazon.com/lambda/latest/dg/best-practices.html?ref=wellarchitected#function-configuration) 
+  [容器的規範指引](https://aws.amazon.com/prescriptive-guidance/?apg-all-cards.sort-by=item.additionalFields.sortText&apg-all-cards.sort-order=desc&awsf.apg-new-filter=*all&awsf.apg-content-type-filter=*all&awsf.apg-code-filter=*all&awsf.apg-category-filter=categories%23containers&awsf.apg-rtype-filter=*all&awsf.apg-isv-filter=*all&awsf.apg-product-filter=*all&awsf.apg-env-filter=*all) 
+  [無伺服器的規範指引](https://aws.amazon.com/prescriptive-guidance/?apg-all-cards.sort-by=item.additionalFields.sortText&apg-all-cards.sort-order=desc&awsf.apg-new-filter=*all&awsf.apg-content-type-filter=*all&awsf.apg-code-filter=*all&awsf.apg-category-filter=categories%23serverless&awsf.apg-rtype-filter=*all&awsf.apg-isv-filter=*all&awsf.apg-product-filter=*all&awsf.apg-env-filter=*all) 

 **相關影片：** 
+  [如何為新創公司選擇運算選項](https://aws.amazon.com/startups/start-building/how-to-choose-compute-option/) 
+  [優化 AWS 運算的效能和成本 (CMP323-R1)](https://www.youtube.com/watch?v=zt6jYJLK8sg) 
+  [Amazon EC2 基礎 (CMP211-R2) ](https://www.youtube.com/watch?v=kMMybKqC2Y0&ref=wellarchitected) 
+  [支援下一代 Amazon EC2：深入探討 Nitro 系統 ](https://www.youtube.com/watch?v=rUY-00yFlE4&ref=wellarchitected) 
+  [使用 AWS Inferentia (CMP324-R1) 提供高效能 ML 推斷 ](https://www.youtube.com/watch?v=17r1EapAxpk&ref=wellarchitected) 
+  [更好、更快、更便宜的運算：成本優化 Amazon EC2 (CMP202-R1) ](https://www.youtube.com/watch?v=_dvh4P2FVbw&ref=wellarchitected) 

 **相關範例：** 
+  [將 Web 應用程式遷移至容器](https://application-migration-with-aws.workshop.aws/en/container-migration.html) 
+  [執行 Serverless Hello World](https://aws.amazon.com/getting-started/hands-on/run-serverless-code/) 

# PERF02-BP02 了解可用的運算組態選項
<a name="perf_select_compute_config_options"></a>

 每個運算解決方案都有選項和組態，可供您支援工作負載特性。了解各種選項如何與您的工作負載互補，以及哪種組態選項最適合您的應用程式。這些選項的範例包括執行個體系列、大小、功能 (GPU、I/O)、爆量、逾時、函數大小、容器執行個體，以及並行。 

 **預期成果：** 包括 CPU、記憶體、網路輸送量、GPU、IOPS、流量模式和資料存取模式的工作負載特性會加以記錄，並用來設定運算解決方案以符合工作負載特性。其中每一個指標以及工作負載特有的自訂指標都會加以記錄、監控，然後用來優化運算組態以最好地符合要求。 

 **常用的反模式：** 
+  使用正用於內部部署的同一運算解決方案。 
+  未審查運算選項或執行個體系統以符合工作負載特性。 
+  使運算變得更大以確保爆量功能。 
+  您針對相同的工作負載使用多個運算管理平台。 

** 建立此最佳實務的優勢：** 熟悉 AWS 運算方案，才能為每個工作負載確定合適的解決方案。為工作負載選取運算方案之後，您可以快速試驗這些運算方案，以判斷其符合工作負載需求的程度。為符合工作負載特性而優化的運算解決方案將提高效能、降低成本並提升可靠性。

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

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

 如果您的工作負載已使用相同的運算選項超過四週，並且您預計特性未來仍將保持不變，您可以使用 [AWS Compute Optimizer](https://aws.amazon.com/compute-optimizer/) 根據運算特性提供一個建議。如果 AWS Compute Optimizer 不是選項，起因於缺少指標、 [非支援的執行個體類型](https://docs.aws.amazon.com/compute-optimizer/latest/ug/requirements.html#requirements-ec2-instances) 或特性中可預測的變更，則您必須根據負載測試和試驗預測指標。  

 **實作步驟：** 

1.  您是否正在具有 EC2 啟動類型的 EC2 執行個體或容器上執行？ 

   1.  您的工作負載是否可以使用 GPU 提升效能？ 

      1.  [加速運算](https://aws.amazon.com/ec2/instance-types/?trk=36c6da98-7b20-48fa-8225-4784bced9843&sc_channel=ps&sc_campaign=acquisition&sc_medium=ACQ-P|PS-GO|Brand|Desktop|SU|Compute|EC2|US|EN|Text&s_kwcid=AL!4422!3!536392622533!e!!g!!ec2%20instance%20types&ef_id=CjwKCAjwiuuRBhBvEiwAFXKaNNRXM5FrnFg5H8RGQ4bQKuUuK1rYWmU2iH-5H3VZPqEheB-pEm-GNBoCdD0QAvD_BwE:G:s&s_kwcid=AL!4422!3!536392622533!e!!g!!ec2%20instance%20types#Accelerated_Computing) 執行個體是 GPU 型執行個體，可為機器學習培訓、推斷和高效能運算提供最高效能。 

   1.  您的工作負載是否執行機器學習推斷應用程式？ 

      1.  [AWS Inferentia (Inf1)](https://aws.amazon.com/ec2/instance-types/inf1/) — Inf1 執行個體專為支援機器學習推斷應用程式所建置。客戶可使用 Inf1，執行大型規模的機器學習推斷應用程式，例如影像辨識、語音辨識、自然語言處理、個人化以及詐騙偵測。您可以在 TensorFlow、PyTorch 或 MXNet 等其中一個常用機器學習架構中建立模型，並使用 GPU 執行個體來訓練模型。將機器學習模型訓練到符合需求之後，您可以使用 [AWS Neuron](https://aws.amazon.com/machine-learning/neuron/)在 Inf1 執行個體上部署模型，AWS Neuron 是一種專業的軟體開發套件 (SDK)，其中包含編譯器、執行時間和分析工具，可將 Inferentia 晶片的機器學習推斷效能優化。 

   1.  您的工作負載是否與低階硬體整合以改進效能？  

      1.  [可現場程式化閘道陣列 (FPGA)](https://aws.amazon.com/ec2/instance-types/f1/) — 使用 FPGA，您可以為要求最高的工作負載自訂硬體加速執行，進而優化您的工作負載。您可以利用支援的通用程式設計語言 (例如 C 或 Go)，或以硬體為導向的語言 (例如 Verilog 或 VHDL) 來定義演算法。 

   1.  您是否有至少四週的指標，並且可以預測您的流量模式和指標在未來仍大致相同？ 

      1.  使用 [Compute Optimizer](https://aws.amazon.com/compute-optimizer/) 取得哪個運算組態最符合運算特性的機器學習建議。 

   1.  您的工作負載效能是否受到 CPU 指標限制？  

      1.  [運算優化](https://aws.amazon.com/ec2/instance-types/?trk=36c6da98-7b20-48fa-8225-4784bced9843&sc_channel=ps&sc_campaign=acquisition&sc_medium=ACQ-P|PS-GO|Brand|Desktop|SU|Compute|EC2|US|EN|Text&s_kwcid=AL!4422!3!536392622533!e!!g!!ec2%20instance%20types&ef_id=CjwKCAjwiuuRBhBvEiwAFXKaNNRXM5FrnFg5H8RGQ4bQKuUuK1rYWmU2iH-5H3VZPqEheB-pEm-GNBoCdD0QAvD_BwE:G:s&s_kwcid=AL!4422!3!536392622533!e!!g!!ec2%20instance%20types#Compute_Optimized) 執行個體非常適合於需要高效處理器的工作負載。  

   1.  您的工作負載效能是否受到記憶體指標限制？  

      1.  [記憶體優化](https://aws.amazon.com/ec2/instance-types/?trk=36c6da98-7b20-48fa-8225-4784bced9843&sc_channel=ps&sc_campaign=acquisition&sc_medium=ACQ-P|PS-GO|Brand|Desktop|SU|Compute|EC2|US|EN|Text&s_kwcid=AL!4422!3!536392622533!e!!g!!ec2%20instance%20types&ef_id=CjwKCAjwiuuRBhBvEiwAFXKaNNRXM5FrnFg5H8RGQ4bQKuUuK1rYWmU2iH-5H3VZPqEheB-pEm-GNBoCdD0QAvD_BwE:G:s&s_kwcid=AL!4422!3!536392622533!e!!g!!ec2%20instance%20types#Memory_Optimized) 執行個體會提供大量記憶體，以支援記憶體密集工作負載。 

   1.  您的工作負載效能是否受到 IOPS 限制？ 

      1.  [儲存優化](https://aws.amazon.com/ec2/instance-types/?trk=36c6da98-7b20-48fa-8225-4784bced9843&sc_channel=ps&sc_campaign=acquisition&sc_medium=ACQ-P|PS-GO|Brand|Desktop|SU|Compute|EC2|US|EN|Text&s_kwcid=AL!4422!3!536392622533!e!!g!!ec2%20instance%20types&ef_id=CjwKCAjwiuuRBhBvEiwAFXKaNNRXM5FrnFg5H8RGQ4bQKuUuK1rYWmU2iH-5H3VZPqEheB-pEm-GNBoCdD0QAvD_BwE:G:s&s_kwcid=AL!4422!3!536392622533!e!!g!!ec2%20instance%20types#Storage_Optimized) 執行個體專為需要對本機儲存進行高循序讀寫存取 (IOPS) 的工作負載而設計。 

   1.  您的工作負載特性是否代表所有指標之間的平衡需求？ 

      1.  您的工作負載 CPU 是否需要爆量，以處理流量中的峰值？ 

         1.  [高載效能](https://aws.amazon.com/ec2/instance-types/?trk=36c6da98-7b20-48fa-8225-4784bced9843&sc_channel=ps&sc_campaign=acquisition&sc_medium=ACQ-P|PS-GO|Brand|Desktop|SU|Compute|EC2|US|EN|Text&s_kwcid=AL!4422!3!536392622533!e!!g!!ec2%20instance%20types&ef_id=CjwKCAjwiuuRBhBvEiwAFXKaNNRXM5FrnFg5H8RGQ4bQKuUuK1rYWmU2iH-5H3VZPqEheB-pEm-GNBoCdD0QAvD_BwE:G:s&s_kwcid=AL!4422!3!536392622533!e!!g!!ec2%20instance%20types#Instance_Features) 執行個體類似於運算優化執行個體，不同之處在於它們可讓您突破運算優化執行個體中所識別的固定 CPU 基準。 

      1.  [一般用途](https://aws.amazon.com/ec2/instance-types/?trk=36c6da98-7b20-48fa-8225-4784bced9843&sc_channel=ps&sc_campaign=acquisition&sc_medium=ACQ-P|PS-GO|Brand|Desktop|SU|Compute|EC2|US|EN|Text&s_kwcid=AL!4422!3!536392622533!e!!g!!ec2%20instance%20types&ef_id=CjwKCAjwiuuRBhBvEiwAFXKaNNRXM5FrnFg5H8RGQ4bQKuUuK1rYWmU2iH-5H3VZPqEheB-pEm-GNBoCdD0QAvD_BwE:G:s&s_kwcid=AL!4422!3!536392622533!e!!g!!ec2%20instance%20types#General_Purpose) 執行個體提供所有特性的平衡，以支援各種工作負載。 

   1.  您的運算執行個體是否正在 Linux 上執行，並受到網路介面卡上的網路輸送量限制？ 

      1.  檢閱 [效能問題 5、最佳實務 2：評估可用的聯網功能](https://docs.aws.amazon.com/wellarchitected/latest/performance-efficiency-pillar/network-architecture-selection.html) 來找出正確的執行個體類型和系統，以符合您的効能需求。 

   1.  在您承諾使用一年的特定可用區域中，您的工作負載是否需要一致且可預測的執行個體？  

      1.  [預留執行個體](https://aws.amazon.com/ec2/pricing/reserved-instances/) 確認特定可用區域中的容量保留。預留執行個體非常適合於特定可用區域中所需的運算能力。  

   1.  您的工作負載是否具有需要專用硬體的授權？ 

      1.  [專用主機](https://aws.amazon.com/ec2/dedicated-hosts/) 支援現有的軟體授權，並協助您滿足合規需求。 

   1.  您的運算解決方案是否會爆量且需要同步處理？ 

      1.  [隨需執行個體](https://aws.amazon.com/ec2/pricing/on-demand/) 可讓您按小時或秒使用運算容量，無需長期承諾。這些執行個體適合於超過效能基準需求的爆量。 

   1.  您的運算解決方案為無狀態、容錯和非同步嗎？  

      1.  [Spot 執行個體](https://aws.amazon.com/ec2/spot/) 可讓您針對無狀態、容錯工作負載利用未用的執行個體容量。  

1.  您是否正在將容器執行於 [Fargate](https://aws.amazon.com/fargate/)？ 

   1.  您的任務效能是否受到記憶體或 CPU 限制？ 

      1.  使用 [任務大小](https://docs.aws.amazon.com/AmazonECS/latest/bestpracticesguide/capacity-tasksize.html) 調整您的記憶體或 CPU。 

   1.  您的效能是否正受到流量模式爆量限制？ 

      1.  使用 [Auto Scaling](https://docs.aws.amazon.com/AmazonECS/latest/bestpracticesguide/capacity-autoscaling.html) 組態來比對您的流量模式。 

1.  您的運算解決方案是否位於 [Lambda](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-features.html)？ 

   1.  您是否有至少四週的指標，並且可以預測您的流量模式和指標在未來仍大致相同？ 

      1.  使用 [Compute Optimizer](https://aws.amazon.com/compute-optimizer/) 取得哪個運算組態最符合運算特性的機器學習建議。 

   1.  您沒有足夠的指標來使用 AWS Compute Optimizer 嗎？ 

      1.  如果您沒有可供 Compute Optimizer 使用的指標，請使用 [AWS Lambda Power Tuning](https://docs.aws.amazon.com/lambda/latest/operatorguide/profile-functions.html) 協助選取最佳組態。 

   1.  您的函數效能是否受到記憶體或 CPU 限制？ 

      1.  設定您的 [Lambda 記憶體](https://docs.aws.amazon.com/lambda/latest/dg/configuration-function-common.html#configuration-memory-console) 來符合您的效能需求指標。 

   1.  您的函數在執行時是否逾時？ 

      1.  變更 [逾時設定](https://docs.aws.amazon.com/lambda/latest/dg/configuration-function-common.html) 

   1.  您的函數效能是否受到活動和並行爆量限制？  

      1.  設定 [並行設定](https://docs.aws.amazon.com/lambda/latest/dg/configuration-concurrency.html) 來符合您的效能要求。 

   1.  您的函數是否以非同步方式執行，並在重試時失敗？ 

      1.  在 [非同步組態](https://docs.aws.amazon.com/lambda/latest/dg/invocation-async.html) 設定中設定最長事件保留期限和最多重試次數限制。 

## 實作計劃的工作量： 
<a name="level-of-effort-for-the-implementation-plan-to-establish-this-best-practice-you-must-be-aware-of-your-current-compute-characteristics-and-metrics.-gathering-those-metrics-establishing-a-baseline-and-then-using-those-metrics-to-identify-the-ideal-compute-option-is-a-low-to-moderate-level-of-effort.-this-is-best-validated-by-load-tests-and-experimentation."></a>

若要建立此最佳實務，您必須注意目前運算特性和指標。收集這些指標、建立基準，然後使用這些指標來識別理想的運算選項為 *低* 至 *中等* 工作量。這最好由負載測試和試驗進行驗證。 

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

 **相關文件：** 
+  [使用 AWS 進行雲端運算 ](https://aws.amazon.com/products/compute/?ref=wellarchitected) 
+  [AWS Compute Optimizer](https://aws.amazon.com/compute-optimizer/) 
+  [EC2 執行個體類型 ](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html?ref=wellarchitected) 
+  [EC2 執行個體的處理器狀態控制 ](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/processor_state_control.html?ref=wellarchitected) 
+  [EKS 容器：EKS 工作節點 ](https://docs.aws.amazon.com/eks/latest/userguide/worker.html?ref=wellarchitected) 
+  [Amazon ECS 容器：Amazon ECS 容器執行個體 ](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_instances.html?ref=wellarchitected) 
+  [函數：Lambda 函數組態](https://docs.aws.amazon.com/lambda/latest/dg/best-practices.html?ref=wellarchitected#function-configuration) 

 **相關影片：** 
+  [Amazon EC2 基礎 (CMP211-R2) ](https://www.youtube.com/watch?v=kMMybKqC2Y0&ref=wellarchitected) 
+  [支援下一代 Amazon EC2：深入探討 Nitro 系統 ](https://www.youtube.com/watch?v=rUY-00yFlE4&ref=wellarchitected) 
+  [優化 AWS 運算的效能和成本 (CMP323-R1) ](https://www.youtube.com/watch?v=zt6jYJLK8sg&ref=wellarchitected) 

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

# PERF02-BP03 收集與運算相關的指標
<a name="perf_select_compute_collect_metrics"></a>

若要了解運算資源的執行方式，您必須記錄和追蹤各種系統的使用率。此資料可用來更準確地判斷資源需求。  

 工作負載可以產生大量資料，例如指標、日誌和事件。判斷您現有的儲存、監控和可觀測性服務是否可以管理產生的資料。識別哪些指標反映資源使用率，並可在整個單一平台上進行收集、彙總和相互關聯。這些指標應該代表您的所有工作負載資源、應用程式和服務，以便您可以輕鬆地取得全系統可見性，並快速識別效能改進機會和問題。

 **預期成果：** 與運算相關資源相關的所有指標都會在單一平台上進行識別、收集、彙總和相互關聯，並實作保留以支援成本和營運目標。 

 **常用的反模式：** 
+  您只使用手動日誌檔案來搜尋指標。  
+  您只將指標發佈到內部工具。 
+  您只會使用所選監控軟體記錄的預設指標。 
+  您只會在有問題時檢閱指標。 

 

 **建立此最佳實務的優勢：** 若要監控工作負載的效能，您必須記錄一段時間的多個效能指標。這些指標可讓您偵測效能中的異常。它們也會協助針對業務指標衡量效能，以確保您符合工作負載需求。 

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

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

 識別、收集、彙總運算相關指標，並使其相互關聯。使用 Amazon CloudWatch 這類服務可讓實作更快且更輕鬆維護。除了記錄的預設指標外，還會在您的工作負載內識別和追蹤其他系統等級指標。記錄 CPU 利用率、記憶體、磁碟 I/O，以及網路傳入和傳出指標等資料，以洞悉使用率水平或瓶頸。此資料對於了解工作負載的執行方式，以及運算解決方案的使用方式至關重要。將這些指標納入資料驅動的方法，以主動調整和優化工作負載的資源。  

 **實作步驟：** 

1.  哪些運算解決方案指標務必要追蹤？ 

   1.  [EC2 預設指標](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/viewing_metrics_with_cloudwatch.html) 

   1.  [Amazon ECS 預設指標](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/cloudwatch-metrics.html) 

   1.  [EKS 預設指標](https://docs.aws.amazon.com/prescriptive-guidance/latest/implementing-logging-monitoring-cloudwatch/kubernetes-eks-metrics.html) 

   1.  [Lambda 預設指標](https://docs.aws.amazon.com/lambda/latest/dg/monitoring-functions-access-metrics.html) 

   1.  [EC2 記憶體和磁碟指標](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/mon-scripts.html) 

1.  我目前是否具有核准的記錄和監控解決方案？ 

   1.  [Amazon CloudWatch](https://aws.amazon.com/cloudwatch/) 

   1.  [適用於 OpenTelemetry 的 AWS Distro](https://aws.amazon.com/otel/) 

   1.  [適用於 Prometheus 的 Amazon 受管服務](https://docs.aws.amazon.com/grafana/latest/userguide/prometheus-data-source.html) 

1.  我是否已識別並設定我的資料保留策略，以符合我的安全和營運目標？ 

   1.  [CloudWatch 指標的預設資料保留](https://aws.amazon.com/cloudwatch/faqs/#AWS_resource_.26_custom_metrics_monitoring) 

   1.  [CloudWatch Logs 的預設資料保留](https://aws.amazon.com/cloudwatch/faqs/#Log_management) 

1.  如何部署您的指標和記錄彙總代理程式？ 

   1.  [AWS Systems Manager 自動化](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-automation.html?ref=wellarchitected) 

   1.  [OpenTelemetry 收集器](https://aws-otel.github.io/docs/getting-started/collector) 

 **實作計劃的工作量： **有一個 *中* 工作量，用來從所有運算資源識別、追蹤、收集、彙總指標，並使其相互關聯。 

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

 **相關文件：** 
+  [Amazon CloudWatch 文件](https://docs.aws.amazon.com/cloudwatch/index.html?ref=wellarchitected) 
+  [使用 CloudWatch Agent 從 Amazon EC2 執行個體和內部部署伺服器收集指標和日誌](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Install-CloudWatch-Agent.html?ref=wellarchitected) 
+  [存取 Amazon CloudWatch Logs 的 AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/monitoring-functions-logs.html?ref=wellarchitected) 
+  [搭配容器執行個體使用 CloudWatch Logs](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_cloudwatch_logs.html?ref=wellarchitected) 
+  [發佈自訂指標](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/publishingMetrics.html?ref=wellarchitected) 
+  [AWS Answers：集中式記錄](https://aws.amazon.com/answers/logging/centralized-logging/?ref=wellarchitected) 
+  [發佈 CloudWatch 指標的 AWS 服務](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CW_Support_For_AWS.html?ref=wellarchitected) 
+  [在 AWS Fargate 上監控 Amazon EKS](https://aws.amazon.com/blogs/containers/monitoring-amazon-eks-on-aws-fargate-using-prometheus-and-grafana/) 

 

 **相關影片：** 
+  [AWS 上的應用程式效能管理](https://www.youtube.com/watch?v=5T4stR-HFas&ref=wellarchitected) 
+  [制定監控計劃](https://www.youtube.com/watch?v=OMmiGETJpfU&ref=wellarchitected) 

 

 **相關範例：** 
+  [Level 100：使用 CloudWatch 儀表板進行監控](https://wellarchitectedlabs.com/performance-efficiency/100_labs/100_monitoring_with_cloudwatch_dashboards/) 
+  [Level 100：使用 CloudWatch 儀表板監控 Windows EC2 執行個體](https://wellarchitectedlabs.com/performance-efficiency/100_labs/100_monitoring_windows_ec2_cloudwatch/) 
+  [Level 100：使用 CloudWatch 儀表板監控 Amazon Linux EC2 執行個體](https://wellarchitectedlabs.com/performance-efficiency/100_labs/100_monitoring_linux_ec2_cloudwatch/) 

# PERF02-BP04 透過適當調整大小來確定所需的組態
<a name="perf_select_compute_right_sizing"></a>

分析工作負載的各種效能特性，以及這些特性與記憶體、網路、I/O 和 CPU 使用量的關係。使用此資料，可以選擇最適合您工作負載設定檔的資源。例如，像是資料庫的記憶體密集型工作負載可以從較高的每個核心記憶體比例獲益。不過，運算密集型工作負載可能需要較高的核心計數和頻率，但是較低的每個核心記憶體數量也可以滿足。

 **常見的反模式：** 
+  您在適用於所有工作負載的所有效能特性中選擇具有最大值的執行個體。 
+  您可以將所有執行個體類型標準化為一種類型，以方便管理。 
+  您根據標準綜合基準進行最佳化，而未驗證特定工作負載的實際要求。 
+  您長時間保持相同基礎設施，而未重新評估和整合新的供應項目。 

 **建立此最佳實務的優勢：**當您熟悉工作負載的要求時，您可以比較這些需求與可用的運算供應項目，並且快速試驗以判斷哪個供應項目最有效率地符合您的工作負載需求。這可讓您有最佳效能，不必為不需要的資源多付費用。 

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

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

透過適當調整大小來修改工作負載組態。若要最佳化效能、整體效率和成本效益，請先判斷工作負載所需的資源。為像是資料庫的記憶體密集型工作負載選擇記憶體最佳化執行個體，例如 R 系列執行個體。對於需要較高運算容量的工作負載，選擇 C 系列執行個體，或選擇具有較高核心計數或較高核心頻率的執行個體。根據您的工作負載的需求選擇 I/O 效能，而不是與標準綜合基準進行比較。如需較高的 I/O 效能，請從 I 系列執行個體選擇執行個體，[選取 I/O 最佳化 Amazon EBS 磁碟區](https://aws.amazon.com/premiumsupport/knowledge-center/optimize-ebs-provisioned-iops/)，或選擇具有[執行個體儲存體](https://aws.amazon.com/premiumsupport/knowledge-center/instance-store-vs-ebs/)的執行個體。如需特定執行個體類型的詳細資訊，請參閱 [Amazon EC2 執行個體類型](https://aws.amazon.com/ec2/instance-types/)。

 適當調整大小會確認您的工作負載執行而且可行，不必為不需要的資源多付費用。 

 **實作步驟** 
+  知曉您的工作負載或分析其資源要求。 
+  個別評估工作負載。AWS 雲端 給予您彈性和敏捷性來適當調整每個工作負載的大小，不需要妥協。 
+  建立測試環境，根據您的工作負載尋找運算供應項目的最佳相符項目。 
+  持續重新評估新的運算供應項目，並且根據您的工作負載需求進行比較。 
+  例行檢閱新服務供應項目以取得最佳價格效能。 
+  定期執行 Well-Architected Framework 檢閱。 

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

 **相關的最佳實務：** 
+  [PERF02-BP03 收集與運算相關的指標](perf_select_compute_collect_metrics.md) 
+  [PERF02-BP06 根據指標持續評估運算需求](perf_select_compute_use_metrics.md) 

 **相關文件：** 
+  [AWS Compute Optimizer](https://aws.amazon.com/compute-optimizer/)  
+  [使用 AWS 進行雲端運算](https://aws.amazon.com/products/compute/) 
+  [Amazon EC2 執行個體類型](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html) 
+  [Amazon ECS 容器：Amazon ECS 容器執行個體](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_instances.html) 
+  [Amazon EKS 容器：Amazon EKS 工作節點](https://docs.aws.amazon.com/eks/latest/userguide/worker.html) 
+  [函數：Lambda 函數組態](https://docs.aws.amazon.com/lambda/latest/dg/best-practices.html#function-configuration) 

 **相關影片：** 
+  [Amazon EC2 基礎 (CMP211-R2)](https://www.youtube.com/watch?v=kMMybKqC2Y0) 
+  [更好、更快、更便宜的運算：成本優化 Amazon EC2 (CMP202-R1)](https://www.youtube.com/watch?v=_dvh4P2FVbw) 
+  [使用 AWS Inferentia 提供高效能 ML 推斷 (CMP324-R1)](https://www.youtube.com/watch?v=17r1EapAxpk) 
+  [最佳化 AWS 運算的效能和成本 (CMP323-R1)](https://www.youtube.com/watch?v=zt6jYJLK8sg) 
+  [支援下一代 Amazon EC2：深入探討 Nitro 系統](https://www.youtube.com/watch?v=rUY-00yFlE4) 
+  [如何為新創公司選擇運算選項](https://aws.amazon.com/startups/start-building/how-to-choose-compute-option/) 
+  [最佳化 AWS 運算的效能和成本 (CMP323-R1)](https://www.youtube.com/watch?v=zt6jYJLK8sg) 

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

# PERF02-BP05 利用資源的可用彈性
<a name="perf_select_compute_elasticity"></a>

雲端提供的彈性可透過各種機制來動態擴展和減少資源，以滿足需求的變化。結合此彈性和運算相關指標，工作負載可以自動因應變更，使用需要的資源且僅用需要的資源。

 **常見的反模式：** 
+  您過度佈建以涵蓋可能的峰值。 
+  您可以手動增加容量，對警示做出反應。 
+  您增加容量而未考慮佈建時間 
+  您在擴展事件之後維持增加容量，而不是縮減規模。 
+  您監控未直接反映工作負載真實要求的指標。 

 **建立此最佳實務的優勢：**需求可以是固定、可變、遵循模式或尖峰。平衡供需關係可將工作負載成本降到最低。彈性地監控、測試和設定工作負載，可以最佳化效能、節省成本，以及隨著用量需求變更來改善可靠性。雖然利用手動方法來達成這個目的是可行的，但是在較大規模下不切實際。自動化及指標式方法可確保資源隨時符合需求。 

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

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

應該使用指標式自動化來利用彈性，其目標是您擁有的資源供應符合您的工作負載需要的資源需求。例如，您可以使用 [Amazon CloudWatch 指標來監控您的資源](https://aws.amazon.com/startups/start-building/how-to-monitor-resources/)，或將 Amazon CloudWatch 指標用於您的 Auto Scaling 群組。

 結合與運算相關的指標，工作負載可以自動回應變更，並使用最佳資源集來實現目標。您也必須規劃佈建時間和潛在資源失敗。 

 執行個體、容器和函數提供了彈性機制，可以是服務的功能、[Application Auto Scaling](https://aws.amazon.com/autoscaling/) 的形式，或是與 [Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/what-is-amazon-ec2-auto-scaling.html) 結合使用。利用架構中的彈性，以確認您有足夠的容量滿足各種使用規模的效能要求。 

 針對要部署的工作負載類型來驗證擴展或縮減彈性資源的指標。例如，如果您要部署影片轉碼應用程式，則預期為 100% CPU 使用率，且不應做為您的主要指標。或者，您可以針對等待擴展執行個體類型的轉碼任務的佇列深度，來進行測量。 

 工作負載部署需要同時處理縱向擴展和縮減規模事件。安全地縮減工作負載元件，與在必要時擴展資源一樣重要。 

 建立擴展事件的測試案例，以確認工作負載如預期般運作。 

 **實作步驟** 
+  利用歷史資料來分析您的工作負載隨著時間的資源需求。詢問如下的特定問題： 
  +  您的工作負載是否穩定並且以已知的速率隨著時間增加？ 
  +  您的工作負載季節性以可重複的模式增加或減少？ 
  +  您的工作負載是否處於尖峰？ 峰值是否可以預期或預測？ 
+  盡可能多利用監控服務和歷史資料。 
+  標記資源可以協助監控。使用標記時，請參閱[標記最佳實務](https://docs.aws.amazon.com/whitepapers/latest/tagging-best-practices/tagging-best-practices.html)。此外，[標記可以協助您管理、識別和組織資源](https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html)。 
+  搭配 AWS，您可以使用各種不同的方法使供需相符。成本最佳化支柱最佳實務 ([COST09-BP01 到 COST09-03](https://docs.aws.amazon.com/wellarchitected/latest/cost-optimization-pillar/manage-demand-and-supply-resources.html)) 說明如何對成本使用下列方法： 
  + [COST09-BP01 對工作負載需求進行分析](https://docs.aws.amazon.com/wellarchitected/latest/cost-optimization-pillar/cost_manage_demand_resources_cost_analysis.html)
  + [COST09-BP02 實作緩衝或調節機制來管理需求](https://docs.aws.amazon.com/wellarchitected/latest/cost-optimization-pillar/cost_manage_demand_resources_buffer_throttle.html)
  + [COST09-BP03 動態提供資源](https://docs.aws.amazon.com/wellarchitected/latest/cost-optimization-pillar/cost_manage_demand_resources_dynamic.html)
+  建立縮減事件的測試案例，以確認工作負載如預期般運作。 
+  大多數非生產執行個體在未使用時應該予以停止。 
+  對於使用 Amazon Elastic Block Store (Amazon EBS) 時的儲存需求，請利用[容量型彈性](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-modify-volume.html)。 
+  對於 [Amazon Elastic Compute Cloud (Amazon EC2)](https://aws.amazon.com/ec2/)，請考慮使用 [Auto Scaling 群組](https://docs.aws.amazon.com/autoscaling/ec2/userguide/auto-scaling-groups.html)，讓您透過在需求高峰期間自動增加運算執行個體數量，並在需求減少時減少容量，藉此最佳化效能和成本。 

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

 **相關的最佳實務：** 
+  [PERF02-BP03 收集與運算相關的指標](perf_select_compute_collect_metrics.md) 
+  [PERF02-BP04 透過適當調整大小來確定所需的組態](perf_select_compute_right_sizing.md) 
+  [PERF02-BP06 根據指標持續評估運算需求](perf_select_compute_use_metrics.md) 

 **相關文件：** 
+  [使用 AWS 進行雲端運算](https://aws.amazon.com/products/compute/) 
+  [Amazon EC2 執行個體類型](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html) 
+  [Amazon ECS 容器：Amazon ECS 容器執行個體](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_instances.html) 
+  [Amazon EKS 容器：Amazon EKS 工作節點](https://docs.aws.amazon.com/eks/latest/userguide/worker.html) 
+  [函數：Lambda 函數組態](https://docs.aws.amazon.com/lambda/latest/dg/best-practices.html#function-configuration) 

 **相關影片：** 
+  [Amazon EC2 基礎 (CMP211-R2)](https://www.youtube.com/watch?v=kMMybKqC2Y0) 
+  [更好、更快、更便宜的運算：成本優化 Amazon EC2 (CMP202-R1)](https://www.youtube.com/watch?v=_dvh4P2FVbw) 
+  [使用 AWS Inferentia 提供高效能 ML 推斷 (CMP324-R1)](https://www.youtube.com/watch?v=17r1EapAxpk) 
+  [最佳化 AWS 運算的效能和成本 (CMP323-R1)](https://www.youtube.com/watch?v=zt6jYJLK8sg) 
+  [支援下一代 Amazon EC2：深入探討 Nitro 系統](https://www.youtube.com/watch?v=rUY-00yFlE4) 

 **相關範例：** 
+  [Amazon EC2 Auto Scaling 群組範例](https://github.com/aws-samples/amazon-ec2-auto-scaling-group-examples) 
+  [Amazon EFS 教學課程](https://github.com/aws-samples/amazon-efs-tutorial) 

# PERF02-BP06 根據指標持續評估運算需求
<a name="perf_select_compute_use_metrics"></a>

使用資料驅動型方法來持續評估和最佳化您的工作負載隨著時間的運算資源。

 **預期成果：**使用系統層級指標來主動監控工作負載隨時間的行為和要求。根據收集的資料針對可用資源評估工作負載的需求，並且對您的運算環境進行變更，以達到最適合工作負載設定檔的狀態。例如，工作負載可能會隨著時間比最初指定的要消耗更多的記憶體，因此轉換到不同的執行個體系列或大小，可以同時提高效能和效率。 

 **常見的反模式：** 
+  監控系統層級指標以取得對於工作負載的洞察，並且不重新評估運算需求。 
+  架構您的運算需求，以滿足尖峰工作負載要求。 
+  當移至替代運算解決方案更有效率地符合您的工作負載特性時，現有運算解決方案會變得更大以符合擴展或效能要求。 

 **建立此最佳實務的優勢：**根據實際資料和您想要的成本與效能平衡，最佳化運算資源。 

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

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

使用資料驅動型方法，根據觀察到的工作負載行為最佳化運算資源。為了獲得最佳效能和效率，使用從工作負載中收集一段時間的資料來持續調整和最佳化資源。查看工作負載中當前資源的使用趨勢，並確定可以在何處進行變更以更好地滿足工作負載的需求。當資源過量使用時，系統效能會降低，而當資源未充分使用時，系統執行效率較差且成本較高。

 若要最佳化效能和資源利用率，您需要取得整合操作檢視、即時精細資料和歷史參考。您可以建立自動化儀表板來視覺化此資料，並衍生操作和使用率洞察。 

 **實作步驟** 

1.  收集隨著時間的運算相關指標。 

1.  針對您所選取運算解決方案中的可用資源比較工作負載指標。 

1.  藉由適當調整現有解決方案的大小或評估替代運算解決方案，判斷任何必要的組態變更。 

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

 **相關的最佳實務：** 
+  [PERF02-BP01 評估可用的運算選項](perf_select_compute_evaluate_options.md) 
+  [PERF02-BP02 了解可用的運算組態選項](perf_select_compute_config_options.md) 
+  [PERF02-BP03 收集與運算相關的指標](perf_select_compute_collect_metrics.md) 
+  [PERF02-BP04 透過適當調整大小來確定所需的組態](perf_select_compute_right_sizing.md) 

 **相關文件：** 
+  [使用 AWS 進行雲端運算](https://aws.amazon.com/products/compute/?ref=wellarchitected) 
+  [AWS Compute Optimizer](https://aws.amazon.com/compute-optimizer/) 
+  [EC2 執行個體類型](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html) 
+  [Amazon ECS 容器：Amazon ECS 容器執行個體](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_instances.html) 
+  [Amazon EKS 容器：Amazon EKS 工作節點](https://docs.aws.amazon.com/eks/latest/userguide/worker.html) 
+ [使用 AWS Lambda 函數的最佳實務](https://docs.aws.amazon.com/lambda/latest/dg/best-practices.html#function-configuration)

 **相關影片：** 
+  [Amazon EC2 基礎 (CMP211-R2)](https://www.youtube.com/watch?v=kMMybKqC2Y0) 
+  [更好、更快、更便宜的運算：成本優化 Amazon EC2 (CMP202-R1)](https://www.youtube.com/watch?v=_dvh4P2FVbw) 
+  [使用 AWS Inferentia 提供高效能 ML 推斷 (CMP324-R1)](https://www.youtube.com/watch?v=17r1EapAxpk) 
+  [最佳化 AWS 運算的效能和成本 (CMP323-R1)](https://www.youtube.com/watch?v=zt6jYJLK8sg) 
+  [支援下一代 Amazon EC2：深入探討 Nitro 系統](https://www.youtube.com/watch?v=rUY-00yFlE4) 
+ [選取和最佳化 Amazon EC2 執行個體](https://www.youtube.com/watch?v=Vz0HZ6hlpgM)

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

# PERF 3  您如何選取儲存解決方案？
<a name="perf-03"></a>

 系統的最佳儲存解決方案會根據存取方法類型 (區塊、檔案或物件)、存取模式 (隨機或連續)、所需傳輸量、存取頻率 (線上、離線、封存)、更新頻率 (WORM、動態) 及可用性和耐用性限制而有所不同。Well-Architected 系統使用多重儲存解決方案，並啟用不同功能以提升效能並有效使用資源。 

**Topics**
+ [PERF03-BP01 了解儲存特性和要求](perf_right_storage_solution_understand_char.md)
+ [PERF03-BP02 評估可用的組態選項](perf_right_storage_solution_evaluated_options.md)
+ [PERF03-BP03 根據存取模式和指標制定決策](perf_right_storage_solution_optimize_patterns.md)

# PERF03-BP01 了解儲存特性和要求
<a name="perf_right_storage_solution_understand_char"></a>

 識別並記載工作負載儲存需求，並定義每個位置的儲存特性。儲存特性的範例包括：可共用的存取、檔案大小、成長率、輸送量、IOPS、延遲、存取模式，以及資料的持久性。請使用這些特性，評估區塊、檔案、物件或執行個體儲存服務對您的儲存需求而言是否為最有效的解決方案。 

 **預期成果：** 識別和記載儲存要求，並根據各項儲存要求評估可用的儲存解決方案。根據重要儲存特性，團隊將了解選取的儲存服務對於您的工作負載效能有何助益。重要準則包括資料存取模式、成長率、擴展需求，以及延遲要求。 

 **常見的反模式：** 
+  所有工作負載只能使用一種儲存類型，例如 Amazon Elastic Block Store (Amazon EBS)。 
+  您假設所有工作負載都有類似的儲存存取效能需求。 

 **建立此最佳實務的優勢：** 根據已識別和所需的特性選取儲存解決方案，可協助您改善工作負載效能、降低成本，以及減少維護工作負載所需的營運工作量。您的工作負載效能將因儲存服務的解決方案、組態和位置而提高。 

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

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

 確定對工作負載最重要的儲存效能指標，並使用基準化分析或負載測試將改善做為資料驅動方法的一部分實作。使用這些資料來確定您的儲存解決方案受限的地方，並檢查可以改善此解決方案的組態選項。判斷工作負載的預期增長率，並選擇符合這些增長率的儲存解決方案。研究 AWS 儲存產品，以判斷適用於各種工作負載需求的正確儲存解決方案。在 AWS 中佈建儲存解決方案可增加測試儲存產品的機會，以判斷產品是否適合您的工作負載需求。 


| AWS 服務 | 重要特性 | 常用案例 | 
| --- | --- | --- | 
| Amazon S3 |  99.999999999% 的耐久性、不受限的增長、可從任一處存取、基於存取和彈性有數種成本模型  |  雲端原生應用程式資料、資料封存、備份、分析、資料湖、靜態網站託管、IoT 資料   | 
| Amazon Glacier |  數秒到數小時的延遲、不受限的增長、最低的成本、長期儲存  |  資料封存、媒體封存、長期備份保留。  | 
| Amazon EBS | 儲存大小需要管理和監控、低延遲、持久性儲存、99.8% 到 99.9% 的耐久性，大部分的磁碟區類型只能從一個 EC2 執行個體來存取。 |  COTS 應用程式、I/O 密集型應用程式、關聯式和 NoSQL 資料庫、備份與復原  | 
| EC2 執行個體存放區 |  預先決定的儲存大小、最低的延遲、不保存、只能從一個 EC2 執行個體存取  |  COTS 應用程式、I/O 密集型應用程式、記憶體內資料存放區  | 
| Amazon EFS |  99.999999999% 的耐久性、不受限的增長、可供多個運算服務存取  |  在多個運算服務間共用檔案的現代化應用程式、用來擴展內容管理系統的檔案儲存  | 
| Amazon FSx |  支援四種檔案系統 (NetApp、OpenZFS、Windows File Server 和 Amazon FSx for Lustre)，每個檔案系統適用的儲存體各不相同，可供多個運算服務存取  |  雲端原生工作負載、私有雲端爆量、需要特定檔案系統的已遷移工作負載、VMC、ERP 系統、內部部署檔案儲存與備份   | 
| Snow Family |  可攜式裝置、256 位元加密、NFS 端點、內建運算、TB 級的儲存容量  |  將資料遷移至雲端儲存，並且在極端內部部署的條件、災難復原、遠端資料收集中運算  | 
| AWS Storage Gateway |  對採用雲端技術的儲存體、全受管的內部部署快取提供低延遲的內部部署存取   |  將內部部署資料遷移至雲端、從內部部署來源填入雲端資料湖、現代化檔案共用。  | 

 **實作步驟：** 

1. 使用基準化分析或負載測試收集您儲存需求的重要特性。重要特性包括： 

   1. 可共用 (哪些元件會存取此儲存體) 

   1. 成長率 

   1. 輸送量 

   1. 延遲 

   1. I/O 大小 

   1. 耐久性 

   1. 存取模式 (讀取/寫入、頻率、激增或一致) 

1. 識別哪種類型的儲存解決方案支援您的儲存特性。

   1. [Amazon S3](https://aws.amazon.com/s3/) 是一項物件儲存服務，具有不受限的可擴展性、高可用性，以及多個可存取性選項。對 Amazon S3 輸入和存取物件時，可以使用服務 (例如 [Transfer Acceleration](https://aws.amazon.com/s3/transfer-acceleration/) 或 [存取點](https://aws.amazon.com/s3/features/access-points/) ) 來支援您的位置、安全需求和存取模式。使用 [Amazon S3 效能指導方針](https://docs.aws.amazon.com/AmazonS3/latest/userguide/optimizing-performance-guidelines.html) 協助您優化 Amazon S3 組態，以符合您的工作負載效能需求。

   1. [Amazon Glacier](https://aws.amazon.com/s3/storage-classes/glacier/) 是針對資料封存而建置的 Amazon S3 儲存類別。您有三種封存解決方案可供選擇，存取速度從數毫秒到 5-12 小時都有，且有不同的成本與安全選項。Amazon Glacier 可讓您實作支援個人商業需要和資料特性的資料生命週期，以利符合效能要求。 

   1. [Amazon Elastic Block Store (Amazon EBS)](https://aws.amazon.com/ebs/) 是專為 Amazon Elastic Compute Cloud (Amazon EC2) 而設計的高效能區塊儲存服務。您可以選擇 [SSD 或 HDD 型](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volume-types.html) 解決方案，兩者各有不同特性，分別側重於 [IOPS](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/provisioned-iops.html) 或 [輸送量](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/hdd-vols.html)。EBS 磁碟區非常適用於高效能工作負載，是只能存取連結階段系統的檔案系統、資料庫或應用程式的主要儲存。

   1. [Amazon EC2 執行個體存放區](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html) 類似於 Amazon EBS，同樣也連結至一個 Amazon EC2 執行個體，但執行個體存放區只是暫時性的儲存體，理想情況下應作為緩衝區、快取或其他暫時性內容使用。您無法將執行個體存放區中斷連結，且若執行個體關閉，所有資料都將遺失。執行個體存放區可用於資料無需持續保存的高 I/O 效能與低延遲使用案例。 

   1. [Amazon Elastic File System (Amazon EFS)](https://aws.amazon.com/efs/) 是一個可掛載的檔案系統，可供多種類型的運算解決方案存取。Amazon EFS 會自動增長及縮減儲存體，解已進行效能優化而提供一致的低延遲。EFS 有 [兩種效能組態模式](https://docs.aws.amazon.com/efs/latest/ug/performance.html)：一般用途和最大 I/O。「一般用途」的讀取延遲低於 1 毫秒，寫入延遲則低於 10 毫秒。「最大 I/O」功能可支援數千個需要共用檔案系統的運算執行個體。Amazon EFS 支援 [兩種輸送量模式](https://docs.aws.amazon.com/efs/latest/ug/managing-throughput.html)：高載和佈建。經歷激增存取模式的工作負載將可獲益於高載輸送量模式，而持續偏高的工作負載則可在佈建輸送量模式下保有高效能。

   1. [Amazon FSx](https://aws.amazon.com/fsx/) 建置於最新的 AWS 運算解決方案之上，用以支援四個常用的檔案系統：NetApp ONTAP、OpenZFS、Windows File Server 和 Lustre。Amazon FSx [延遲、輸送量和 IOPS](https://aws.amazon.com/fsx/when-to-choose-fsx/) 會隨著檔案系統而不同，當您為工作負載需求選取適當的檔案系統時，應予以考量。

   1. [AWS Snow Family](https://aws.amazon.com/snow/) 是一種儲存和運算裝置，支援以雲端為目標的線上和離線資料遷移，以及內部部署的資料儲存與運算。AWS Snow 裝置支援大量收集內部部署資料、處理該資料，以及將該資料移至雲端。在談到檔案數量、檔案大小和壓縮時， [有幾項列載於文件中的效能最佳實務](https://docs.aws.amazon.com/snowball/latest/developer-guide/performance.html) 可供參考。

   1. [AWS Storage Gateway](https://aws.amazon.com/storagegateway/) 提供內部部署應用程式對雲端架構儲存體的存取。AWS Storage Gateway 支援多個雲端儲存服務，包括 Amazon S3、Amazon Glacier、Amazon FSx 和 Amazon EBS。此外也支援多種通訊協定，例如 iSCSI、SMB 和 NFS。它會藉由在內部快取經常存取的資料來提供低延遲的效能，並且只會將有所變更和已壓縮的資料傳送至 AWS。

1. 在您體驗過新的儲存解決方案並且找出最佳組態之後，請規劃您的遷移並驗證您的效能指標。這是連續性的程序，且在重要特性變更時，或是可用的服務或選項變更時，應重新評估。

 **實作計劃的工作量： **如果工作負載從某個儲存解決方案移至另一個解決方案，可能會有 *中等* 工作量涉及重構應用程式。   

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

 **相關文件：** 
+  [Amazon EBS 磁碟區類型](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html) 
+  [Amazon EC2 儲存](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Storage.html) 
+  [Amazon EFS：Amazon EFS 效能](https://docs.aws.amazon.com/efs/latest/ug/performance.html) 
+  [Amazon FSx for Lustre 效能](https://docs.aws.amazon.com/fsx/latest/LustreGuide/performance.html) 
+  [Amazon FSx for Windows File Server 效能](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/performance.html) 
+ [Amazon FSx for NetApp ONTAP 效能](https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/performance.html)
+ [Amazon FSx for OpenZFS 效能](https://docs.aws.amazon.com/fsx/latest/OpenZFSGuide/performance.html)
+  [Amazon Glacier：Amazon Glacier 文件](https://docs.aws.amazon.com/amazonglacier/latest/dev/introduction.html) 
+  [Amazon S3：請求率和效能考量](https://docs.aws.amazon.com/AmazonS3/latest/dev/request-rate-perf-considerations.html) 
+  [AWS 的雲端儲存](https://aws.amazon.com/products/storage/) 
+ [AWS Snow Family](https://aws.amazon.com/snow/#Feature_comparison)
+  [EBS I/O 特性](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ebs-io-characteristics.html) 

 **相關影片：** 
+  [深入探討 Amazon EBS (STG303-R1)](https://www.youtube.com/watch?v=wsMWANWNoqQ) 
+  [使用 Amazon S3 優化儲存效能 (STG343)](https://www.youtube.com/watch?v=54AhwfME6wI) 

 **相關範例：** 
+  [Amazon EFS CSI 驅動程式](https://github.com/kubernetes-sigs/aws-efs-csi-driver) 
+  [Amazon EBS CSI 驅動程式](https://github.com/kubernetes-sigs/aws-ebs-csi-driver) 
+  [Amazon EFS 公用程式](https://github.com/aws/efs-utils) 
+  [Amazon EBS 自動擴展](https://github.com/awslabs/amazon-ebs-autoscale) 
+  [Amazon S3 範例](https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/s3-examples.html) 
+ [Amazon FSx for Lustre Container Storage Interface (CSI) 驅動程式](https://github.com/kubernetes-sigs/aws-fsx-csi-driver)

# PERF03-BP02 評估可用的組態選項
<a name="perf_right_storage_solution_evaluated_options"></a>

 評估各種特性和組態選項，以及它們與儲存的關係。了解如何在何處使用佈建 IOPS、SSD、磁帶儲存、物件儲存、存檔儲存或暫時性儲存，以優化工作負載的儲存空間和效能。 

 [Amazon EBS](https://aws.amazon.com/ebs) 提供了各種選項，可讓您優化工作負載的儲存效能和成本。這些選項分為兩大類：適用於交易工作負載 (例如資料庫和開機磁碟區) 且支援 SSD 的儲存 (效能主要取決於 IOPS)；以及適用於輸送量密集型工作負載 (例如 MapReduce 和日誌處理) 且支援 HDD 的儲存 (效能主要取決於 MB/s)。 

 支援 SSD 的磁碟區包括適用於延遲敏感的交易工作負載的最高效能佈建 IOPS SSD 和可使各種交易資料的價格和效能之間達到平衡的一般用途 SSD。 

 [Amazon S3 Transfer Acceleration](https://aws.amazon.com/s3/transfer-acceleration/) 可以在用戶端和 S3 儲存貯體之間快速進行遠距離檔案傳輸。Transfer Acceleration 利用了 Amazon CloudFront 分散於全球的節點，以將資料路由至優化的網路路徑。對於 S3 儲存貯體中具有大量 GET 請求的工作負載，請將 Amazon S3 與 CloudFront 搭配使用。上傳大型檔案時，請使用分段上傳，同時上傳多個組件以協助最大化網路輸送量。 

 [Amazon Elastic File System (Amazon EFS)](https://aws.amazon.com/efs/) 提供簡單、可擴展、全受管的彈性 NFS 檔案系統，可與 AWS 雲端服務和內部部署資源搭配使用。為了支援各式各樣的雲端儲存工作負載，Amazon EFS 提供兩種效能模式：一般用途效能模式和最高 I/O 效能模式。針對檔案系統，提供兩種傳輸量模式供您選擇：爆量傳輸量和佈建傳輸量。若要判斷工作負載適用的設定，請參閱 [Amazon EFS 使用者指南](https://docs.aws.amazon.com/efs/latest/ug/performance.html)。 

 [Amazon FSx](https://aws.amazon.com/fsx/) 提供四種檔案系統供您選擇： [Amazon FSx for Windows File Server](https://aws.amazon.com/fsx/windows/) (適用於企業工作負載)、 [Amazon FSx for Lustre](https://aws.amazon.com/fsx/lustre/) (適用於高效能工作負載)、 [Amazon FSx for NetApp ONTAP](https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/index.html) (適用於 NetApps 熱門 ONTAP 檔案系統)，以及 [Amazon FSx for OpenZFS](https://docs.aws.amazon.com/fsx/latest/OpenZFSGuide/what-is-fsx.html) (適用於 Linux 型檔案伺服器)。FSx 支援 SSD，旨在提供快速、可預測、可擴展和一致的效能。Amazon FSx 檔案系統提供持續的高讀寫速度，以及一致的低延遲資料存取。您可以選擇所需的輸送量等級，以符合工作負載的需求。 

 **常用的反模式：** 
+  所有工作負載只能使用一種儲存類型，例如 Amazon EBS。 
+  您為所有工作負載使用已佈建的 IOPS，卻未針對所有儲存層進行實際測試。 
+  您假設所有工作負載都有類似的儲存存取效能需求。 

 **建立此最佳實務的優勢：** 評估所有儲存服務選項可降低基礎設施成本和維護工作負載所需的工作量。這可能會加速部署新服務和功能的交期。 

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

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

 判斷儲存特性：評估儲存解決方案時，判斷您需要的儲存特性，例如共用能力、檔案大小、快取大小、延遲、輸送量和資料的持久性。然後，將您的需求比對最符合您需求的 AWS 服務。 

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

 **相關文件：** 
+  [AWS 的雲端儲存](https://aws.amazon.com/products/storage/?ref=wellarchitected) 
+  [Amazon EBS 磁碟區類型](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html) 
+  [Amazon EC2 儲存](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Storage.html) 
+  [Amazon EFS：Amazon EFS 效能](https://docs.aws.amazon.com/efs/latest/ug/performance.html) 
+  [Amazon FSx for Lustre 效能](https://docs.aws.amazon.com/fsx/latest/LustreGuide/performance.html) 
+  [Amazon FSx for Windows File Server 效能](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/performance.html) 
+  [Amazon Glacier：Amazon Glacier 文件](https://docs.aws.amazon.com/amazonglacier/latest/dev/introduction.html) 
+  [Amazon S3：請求率和效能考量](https://docs.aws.amazon.com/AmazonS3/latest/dev/request-rate-perf-considerations.html) 
+  [AWS 的雲端儲存](https://aws.amazon.com/products/storage/) 
+  [AWS 的雲端儲存](https://aws.amazon.com/products/storage/?ref=wellarchitected) 
+  [EBS I/O 特性](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ebs-io-characteristics.html) 

 **相關影片：** 
+  [深入探討 Amazon EBS (STG303-R1)](https://www.youtube.com/watch?v=wsMWANWNoqQ) 
+  [使用 Amazon S3 優化儲存效能 (STG343)](https://www.youtube.com/watch?v=54AhwfME6wI) 

 **相關範例：** 
+  [Amazon EFS CSI 驅動程式](https://github.com/kubernetes-sigs/aws-efs-csi-driver) 
+  [Amazon EBS CSI 驅動程式](https://github.com/kubernetes-sigs/aws-ebs-csi-driver) 
+  [Amazon EFS 公用事業](https://github.com/aws/efs-utils) 
+  [Amazon EBS 自動擴展](https://github.com/awslabs/amazon-ebs-autoscale) 
+  [Amazon S3 範例](https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/s3-examples.html) 

# PERF03-BP03 根據存取模式和指標制定決策
<a name="perf_right_storage_solution_optimize_patterns"></a>

 根據工作負載的存取模式選擇儲存系統，並透過決定工作負載存取資料的方式來設定儲存系統。選擇物件儲存而不是區塊儲存，以提高儲存效率。設定您選擇的儲存選項以匹配資料存取模式。 

 您存取資料的方式會影響儲存解決方案的執行方式。選擇最適合您的存取模式的儲存解決方案，或者考慮變更存取模式，以符合儲存解決方案，從而最大化效能。 

 建立 RAID 0 陣列可讓您實現比在單一磁碟區上佈建的檔案系統更高的效能。當 I/O 效能比容錯能力更重要時，請考慮使用 RAID 0。例如，您可以將其與頻繁使用的資料庫 (其資料複寫已獨立設定) 搭配使用。 

 針對工作負載使用的所有儲存選項，為您的工作負載選取適當的儲存指標。當使用的檔案系統使用爆量額度時，請建立警示，以便在即將接近額度限制時告知您。您必須建立儲存儀表板，以顯示整體工作負載儲存體運作狀態。 

 對於固定大小的儲存系統 (例如 Amazon EBS 或 Amazon FSx)，請確保監控使用的儲存量佔整體儲存大小的比例，並在達到閾值時建立自動化 (如可能) 以增加儲存大小 

 **常用的反模式：** 
+  您假設在客戶未投訴的情況下，儲存效能即已足敷使用。 
+  您只使用一個存儲層 – 假設所有工作負載都適合該層。 

 **建立此最佳實務的優勢：** 您需要取得整合操作檢視、即時精細資料和歷史參考，以優化效能和資源使用率。您可以建立 1 秒精細度的自動儀表板和資料，以對資料執行指標運算，並獲得儲存需求的操作和使用率洞見。 

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

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

 優化您的儲存使用和存取方式：根據工作負載的存取模式和可用儲存選項的特性選擇儲存系統。確定儲存資料的最佳位置，這將讓您能夠滿足您的要求，同時減少開銷。在設定和與資料互動時，根據儲存的特性利用效能優化和存取模式 (例如，對儲存磁碟區進行條帶化或對資料進行分割)。 

 為儲存選項選取適當的指標：確保為工作負載選取適當的儲存指標。每個儲存選項提供各種指標來追蹤工作負載在一段時間內的執行狀況。確保針對任何儲存高載指標進行測量 (例如監控 Amazon EFS 的爆量額度)。對於大小固定的儲存系統，例如 Amazon Elastic Block Store 或 Amazon FSx，請確保您監控的是使用儲存量與整體儲存大小的比較情況。儘可能建立自動化以在達到閾值時增加儲存大小。 

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

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

 **相關文件：** 
+  [Amazon EBS 磁碟區類型](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html) 
+  [Amazon EC2 儲存](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Storage.html) 
+  [Amazon EFS：Amazon EFS 效能](https://docs.aws.amazon.com/efs/latest/ug/performance.html) 
+  [Amazon FSx for Lustre 效能](https://docs.aws.amazon.com/fsx/latest/LustreGuide/performance.html) 
+  [Amazon FSx for Windows File Server 效能](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/performance.html) 
+  [Amazon Glacier：Amazon Glacier 文件](https://docs.aws.amazon.com/amazonglacier/latest/dev/introduction.html) 
+  [Amazon S3：請求率和效能考量](https://docs.aws.amazon.com/AmazonS3/latest/dev/request-rate-perf-considerations.html) 
+  [AWS 的雲端儲存](https://aws.amazon.com/products/storage/) 
+  [EBS I/O 特性](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ebs-io-characteristics.html) 
+  [使用 Amazon CloudWatch 監控和了解 Amazon EBS 效能](https://aws.amazon.com/blogs/storage/valuable-tips-for-monitoring-and-understanding-amazon-ebs-performance-using-amazon-cloudwatch/) 

 **相關影片：** 
+  [深入探討 Amazon EBS (STG303-R1)](https://www.youtube.com/watch?v=wsMWANWNoqQ) 
+  [使用 Amazon S3 優化儲存效能 (STG343)](https://www.youtube.com/watch?v=54AhwfME6wI) 

 **相關範例：** 
+  [Amazon EFS CSI 驅動程式](https://github.com/kubernetes-sigs/aws-efs-csi-driver) 
+  [Amazon EBS CSI 驅動程式](https://github.com/kubernetes-sigs/aws-ebs-csi-driver) 
+  [Amazon EFS 公用事業](https://github.com/aws/efs-utils) 
+  [Amazon EBS 自動擴展](https://github.com/awslabs/amazon-ebs-autoscale) 
+  [Amazon S3 範例](https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/s3-examples.html) 

# PERF 4  您如何選擇資料庫解決方案？
<a name="perf-04"></a>

 系統的最佳資料庫解決方案可能會依可用性、一致性、分割容錯度、延遲、耐用性、可擴展性及查詢能力的需求而有所不同。許多系統針對不同子系統使用不同資料庫解決方案，並啟用不同功能以提升效能。為系統選錯資料庫解決方案和功能，可能使效能達成效率降低。 

**Topics**
+ [PERF04-BP01 了解資料特性](perf_right_database_solution_understand_char.md)
+ [PERF04-BP02 評估可用選項](perf_right_database_solution_evaluate_options.md)
+ [PERF04-BP03 收集並記錄資料庫效能指標](perf_right_database_solution_collect_metrics.md)
+ [PERF04-BP04 根據存取模式選擇資料儲存](perf_right_database_solution_access_patterns.md)
+ [PERF04-BP05 根據存取模式和指標優化資料儲存](perf_right_database_solution_optimize_metrics.md)

# PERF04-BP01 了解資料特性
<a name="perf_right_database_solution_understand_char"></a>

 選擇您的資料管理解決方案，以最佳方式符合工作負載資料集的特性、存取模式和要求。在選取和實作資料管理解決方案時，您必須確保查詢、擴展和儲存特性支援工作負載資料要求。了解各種資料庫選項如何符合您的資料模型，以及哪些組態選項最適合您的使用案例。  

 AWS 提供眾多資料庫引擎，包括關聯式、鍵值、文件、記憶體內、圖形、時間序列和總帳資料庫。每個資料管理解決方案都有選項和組態，可供您支援使用案例和資料模型。您的工作負載能夠根據資料特性使用數個不同的資料庫解決方案。藉由選取特定問題的最佳資料庫解決方案，您可以擺脫整合型資料庫，這些資料庫採用一體適用的方法，但此方法有限制性，並專注於管理資料以符合客戶的需求。 

 **預期成果：** 工作負載資料特性會加以記錄，並提供足夠的詳細資訊，以利於選取和設定支援的資料庫解決方案，而且這些特性可讓您洞悉潛在的替代方案。 

 **常用的反模式：** 
+  未考慮將大型資料集分割成具有類似特性之較小資料集合的方法，這會導致錯失使用更多專用資料庫，更好地符合資料和成長特性的機會。 
+  未預先識別資料存取模式，這會導致稍後進行昂貴且複雜的修改。 
+  使用不會視需要快速擴展的資料儲存策略來限制成長 
+  為所有工作負載選擇一個資料庫類型和廠商。 
+  堅持使用某個資料庫解決方案，因為對某種特定類型的資料庫解決方案具有內部經驗和知識。 
+  保留資料庫解決方案，因為它在內部部署環境中運作良好。 

 **建立此最佳實務的優勢：** 熟悉所有 AWS 資料庫解決方案，以便您可以判斷適合各種工作負載的正確資料庫解決方案。為工作負載選取適當的資料庫解決方案之後，您可以快速試驗每個資料庫產品，以判斷它們是否能繼續滿足您的工作負載需求。 

 **若未建立此最佳實務，暴露的風險等級：** 高 
+  可能未識別潛在的節省成本。 
+  可能無法將資料保護到所需的等級。 
+  資料存取和儲存效能可能不是最佳的。 

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

 定義工作負載的資料特性和存取模式。檢閱所有可用的資料庫解決方案來識別哪個解決方案支援您的資料要求。在特定工作負載內，可能選取多個資料庫。評估每個服務或服務群組，並個別存取它們。如果針對部分或全部資料識別了潛在的替代資料管理解決方案，請嘗試可能解開成本、安全性、效能和可靠性優勢的替代實作。如果採用新的資料管理方式，請更新現有文件。 


|  **類型**  |  **AWS 服務**  |  **重要特性**  |  **常見的使用案例**  | 
| --- | --- | --- | --- | 
|  關聯式  |  Amazon RDS、Amazon Aurora  |  參考完整性、ACID 交易、寫入時的結構描述  |  ERP、CRM、商務現成軟體  | 
|  鍵值  |  Amazon DynamoDB  |  高輸送量、低延遲、近乎無限可擴展性  |  購物車 (商務)、產品型錄、聊天應用程式  | 
|  文件  |  Amazon DocumentDB  |  儲存 JSON 文件並查詢任何屬性  |  內容管理 (CMS)、客戶設定檔、行動應用程式  | 
|  記憶體內  |  Amazon ElastiCache、Amazon MemoryDB  |  微秒延遲  |  快取、遊戲排行榜  | 
|  圖形  |  Amazon Neptune  |  高度關聯式資料，其中資料之間的關係有意義  |  社交網路、個人化引擎、詐騙偵測  | 
|  時間序列  |  Amazon Timestream  |  其中主要維度為時間的資料  |  DevOps、IoT、監控  | 
|  寬欄  |  Amazon Keyspaces  |  Cassandra 工作負載。  |  產業設備維護、路由優化  | 
|  總帳  |  Amazon QLDB  |  不可變且可加密驗證的變更總帳  |  記錄、醫療保健、供應鏈、金融機構的系統  | 

 **實作步驟** 

1.  如何建構資料？(例如，非結構化、鍵值、半結構化、關聯式) 

   1.  如果資料是非結構化，請考慮物件存放區，例如 [Amazon S3](https://aws.amazon.com/products/storage/data-lake-storage/) 或 NoSQL 資料庫，例如 [Amazon DocumentDB。](https://aws.amazon.com/documentdb/) 

   1.  若為鍵值資料，請考慮 [DynamoDB](https://aws.amazon.com/documentdb/)， [ElastiCache for Redis](https://aws.amazon.com/elasticache/redis/) 或 [MemoryDB。](https://aws.amazon.com/memorydb/) 

   1.  如果資料具有關聯式結構，需要哪個層級的參考完整性。 

      1.  針對外部索引鍵限制，關聯式資料庫 (例如 [Amazon RDS](https://aws.amazon.com/rds/) 和 [Aurora](https://aws.amazon.com/rds/aurora/) ) 可以提供此層級的完整性。 

      1.  通常，在 NoSQL 資料模型內，您會將資料去正規化為單一文件或文件集合，以便可在單一請求中擷取，而不是跨文件或資料表聯結。  

1.  需要 ACID (單元性、一致性、隔離行為、持續性) 合規嗎？ 

   1.  如果需要與關聯式資料庫相關聯的 ACID 屬性，請考慮關聯式資料庫，例如 [Amazon RDS](https://aws.amazon.com/rds/) 和 [Aurora。](https://aws.amazon.com/rds/aurora/) 

1.  需要哪個一致性模式？ 

   1.  如果您的應用程式可以容忍最終一致性，請考慮 NoSQL 實作。檢閱其他特性以協助選擇哪個 [NoSQL 資料庫](https://aws.amazon.com/nosql/) 最適用。 

   1.  如果需要高度一致性，您可以使用高度一致性讀取，搭配 [DynamoDB](https://aws.amazon.com/documentdb/) 或關聯式資料庫，例如 [Amazon RDS](https://aws.amazon.com/rds/)。 

1.  必須支援哪些查詢和結果格式？(例如，SQL、CSV、Parque、Avro、JSON 等) 

1.  存在哪些資料類型、欄位大小和整體數量？(例如，文字、數字、空間、已計算的時間序列、二進位或 Blob 文件) 

1.  儲存要求如何隨時間變更？ 這如何影響可擴展性？ 

   1.  無伺服器資料庫，例如 [DynamoDB](https://aws.amazon.com/documentdb/) 和 [Amazon Quantum Ledger Database](https://aws.amazon.com/qldb/) ，將自動擴增至近乎無限的儲存。 

   1.  關聯式資料庫在佈建的儲存上具有上限，一旦達到這些限制，通常必須透過碎片化這類機制進行水平分割。 

1.  讀取查詢與寫入查詢的比例是多少？ 快取可能改善效能嗎？ 

   1.  包含大量讀取作業的工作負載可以從快取層中受益，這可以是 [ElastiCache](https://aws.amazon.com/elasticache/) 或 [DAX](https://aws.amazon.com/dynamodb/dax/) 如果資料庫是 DynamoDB。 

   1.  讀取也可以卸載至具有關聯式資料庫的讀取複本，例如 [Amazon RDS](https://aws.amazon.com/rds/)。 

1.  儲存和修改 (OLTP - 線上交易處理) 或擷取和報告 (OLAP - 線上分析處理) 是否具有更高的優先順序？ 

   1.  如需高輸送量交易處理，請考慮 NoSQL 資料庫，例如 DynamoDB 或 Amazon DocumentDB。 

   1.  如需分析查詢，請考慮單欄式資料庫，例如 [Amazon Redshift](https://aws.amazon.com/redshift/) 或將資料匯出至 Amazon S3 並執行分析，方法為使用 [Athena](https://aws.amazon.com/athena/) 或 [QuickSight。](https://aws.amazon.com/quicksight/) 

1.  此資料的敏感程度，以及其需要哪個等級的保護和加密？ 

   1.  所有 Amazon RDS 和 Aurora 都支援使用 AWS KMS 進行靜態資料加密。Microsoft SQL Server 和 Oracle 也會在使用 Amazon RDS 時支援原生透明資料加密 (TDE)。 

   1.  針對 DynamoDB，您可以使用更精細的存取控制，搭配 [IAM](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/access-control-overview.html) 控制誰可以存取金鑰等級的哪些資料。 

1.  資料需要哪個等級的耐久性？ 

   1.  Aurora 會自動跨區域內的三個可用區域複寫您的資料，這表示您的資料可以耐久，因而資料遺失的機會降低。 

   1.  DynamoDB 會自動跨多個可用區域進行複寫，這會提供高可用性和資料耐久性。 

   1.  Amazon S3 提供 99.999999999% 耐久性。許多資料庫服務 (例如 Amazon RDS 和 DynamoDB) 支援將資料匯出至 Amazon S3，進行長期保留和封存。 

1.  復原時間目標 (RTO) [或復原點目標 (RPO)](https://docs.aws.amazon.com/wellarchitected/latest/reliability-pillar/plan-for-disaster-recovery-dr.html) 要求是否影響解決方案？ 

   1.  Amazon RDS、Aurora、DynamoDB、Amazon DocumentDB 和 Neptune 全都支援時間點復原，以及隨需備份和還原。  

   1.  針對高可用性要求，可以全域複寫 DynamoDB 資料格，方法為使用 [全域資料表](https://aws.amazon.com/dynamodb/global-tables/) 功能，而且可以使用全域資料庫功能。跨多個區域複寫 Aurora 叢集。此外，還可以使用跨區域複寫，跨 AWS 區域 複寫 S3 儲存貯體。  

1.  是否希望擺脫商務資料庫引擎/授權成本？ 

   1.  考慮開放原始碼引擎，例如 Amazon RDS 或 Aurora 上的 PostgreSQL 和 MySQL 

   1.  利用 [AWS DMS](https://aws.amazon.com/dms/) 和 [AWS SCT](https://aws.amazon.com/dms/schema-conversion-tool/) 從商務資料庫引擎遷移至開放原始碼 

1.  對資料庫的操作期望是什麼？ 移至受管服務是否為主要問題？ 

   1.  利用 Amazon RDS 而非 Amazon EC2 和 DynamoDB，或利用 Amazon DocumentDB 而非自行託管 NoSQL 資料庫，可以降低營運負擔。 

1.  目前如何存取資料庫？ 它是否只是應用程式存取，或是否有商業智能 (BI) 使用者和其他連網的現成應用程式？ 

   1.  如果您依賴外部工具，則可能必須維護與其所支援資料庫的相容性。Amazon RDS 完全與其支援的不同引擎版本相容，包括 Microsoft SQL Server、Oracle、MySQL 和 PostgreSQL。 

1.  下列是潛在資料管理服務的清單，以及最能在哪裡使用這些服務： 

   1.  關聯式資料庫會使用預先定義的結構描述和它們之間的關係來儲存資料。這些資料庫旨在支援 ACID (單元性、一致性、隔離行為、持續性) 交易，並維護參考完整性和強大的資料一致性。許多傳統應用程式、企業資源規劃 (ERP)、客戶關係管理 (CRM) 和電子商務都使用關聯式資料庫來儲存資料。您可以在 Amazon EC2 上執行許多資料庫引擎，或選擇其中一種 AWS 受管  [資料庫服務](https://aws.amazon.com/products/databases/)： [Amazon Aurora](https://aws.amazon.com/rds/aurora)、 [Amazon RDS](https://aws.amazon.com/rds)和 [Amazon Redshift](https://aws.amazon.com/redshift)。 

   1.  鍵值資料庫已針對常見的存取模式進行優化，通常用於儲存和擷取大量資料。即使有極大量的並行請求，這些資料庫也能提供快速回應。高流量 Web 應用程式、電子商務系統和遊戲應用程式是鍵值資料庫的典型使用案例。在 AWS 中，您可以利用 [Amazon DynamoDB](https://aws.amazon.com/dynamodb/)，這是一個全受管、多區域、多主機、耐用的資料庫，針對網際網路規模的應用程式提供內建安全性、備份和還原以及記憶體內快取。 

   1.  記憶體內資料庫適用於需要即時存取資料、最低延遲和最高輸送量的應用程式。透過將資料直接儲存在記憶體中，這些資料庫可為應用程式提供微秒延遲，因為毫秒延遲不足以因應其需求。您可以將記憶體內資料庫用於應用程式快取、工作階段管理、遊戲排行榜和地理空間應用程式。 [Amazon ElastiCache](https://aws.amazon.com/elasticache/) 是全受管的記憶體內資料存放區，與 [Redis](https://aws.amazon.com/elasticache/redis/) 或 [Memcached](https://aws.amazon.com/elasticache/memcached)。若應用程式也需要更高的耐久性要求， [Amazon MemoryDB for Redis](https://aws.amazon.com/memorydb/) 會將其結合為耐久的記憶體內資料庫服務，以取得超快效能。 

   1.  文件資料庫旨在將半結構化資料儲存為 JSON 類文件。這些資料庫可協助開發人員快速建置和更新應用程式，例如內容管理、目錄和使用者設定檔。 [Amazon DocumentDB](https://aws.amazon.com/documentdb/) 是快速、可擴展、高度可用且全受管的文件資料庫服務，可支援 MongoDB 工作負載。 

   1.  寬欄存放區是一種 NoSQL 資料庫類型。它使用表格、列和欄，但與關聯式資料庫不同，在同一個表格中，欄的名稱和格式會因列而異。您通常會在大規模工業應用程式中看到寬欄存放區，用於設備維護、叢集管理和路由優化。 [Amazon Keyspaces (適用於 Apache Cassandra)](https://aws.amazon.com/mcs/) 是寬欄的可擴展、高度可用且受管的 Apache Cassandra 相容資料庫服務。 

   1.  圖形資料庫適用此類應用程式：必須在高度連線圖形資料集之間，大規模導覽和查詢數百萬個關係，並且只有毫秒延遲。許多公司使用圖形資料庫進行詐騙偵測、社交聯網和推薦引擎。 [Amazon Neptune](https://aws.amazon.com/neptune/) 是快速、可靠、全受管的圖形資料庫服務，可讓您輕鬆建立和執行搭配高度連線資料集使用的應用程式。 

   1.  時間序列資料庫可有效率地從隨時間變化的資料收集、合成和衍生洞見。IoT 應用程式、DevOps 和工業遙測可以利用時間序列資料庫。 [Amazon Timestream](https://aws.amazon.com/timestream/) 是適用於 IoT 和操作應用程式的快速、可擴展、全受管時間序列資料庫服務，每天可輕鬆儲存和分析數兆個事件。 

   1.  總帳資料庫提供集中化且受信任的機構，為每個應用程式維護可擴展、不可變且以密碼編譯方式驗證的交易記錄。我們會看到用於記錄、供應鏈、註冊甚至銀行交易系統的總帳資料庫。 [Amazon Quantum Ledger Database (Amazon QLDB)](https://aws.amazon.com/qldb/) 是全受管總帳資料庫，提供透明、不可變且可加密驗證的交易日誌，由集中式信任的授權單位所擁有。Amazon QLDB 會追蹤每個應用程式資料變更，並維護一段時間內完整且可驗證的變更歷史記錄。 

 **實作計劃的工作量： **如果工作負載從某個資料庫解決方案移至另一個資料庫解決方案，則有一個 *高* 工作量，其中涉及重構資料和應用程式。   

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

 **相關文件：** 
+  [AWS 的雲端資料庫 ](https://aws.amazon.com/products/databases/?ref=wellarchitected) 
+  [AWS 資料庫快取 ](https://aws.amazon.com/caching/database-caching/?ref=wellarchitected) 
+  [Amazon DynamoDB Accelerator ](https://aws.amazon.com/dynamodb/dax/?ref=wellarchitected) 
+  [Amazon Aurora 最佳實務 ](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Aurora.BestPractices.html?ref=wellarchitected) 
+  [Amazon Redshift 效能 ](https://docs.aws.amazon.com/redshift/latest/dg/c_challenges_achieving_high_performance_queries.html?ref=wellarchitected) 
+  [Amazon Athena 10 大效能秘訣 ](https://aws.amazon.com/blogs/big-data/top-10-performance-tuning-tips-for-amazon-athena/?ref=wellarchitected) 
+  [Amazon Redshift Spectrum 最佳實務 ](https://aws.amazon.com/blogs/big-data/10-best-practices-for-amazon-redshift-spectrum/?ref=wellarchitected) 
+  [Amazon DynamoDB 最佳實務](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/BestPractices.html?ref=wellarchitected) 
+  [在 EC2 與 Amazon RDS 之間選擇](https://docs.aws.amazon.com/prescriptive-guidance/latest/migration-sql-server/comparison.html) 
+  [實作 Amazon ElastiCache 的最佳實務](https://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/BestPractices.html) 

 **相關影片：** 
+ [AWS 專用資料庫 (DAT209-L) ](https://www.youtube.com/watch?v=q81TVuV5u28) 
+ [探究 Amazon Aurora 儲存的奧秘：運作方式 (DAT309-R) ](https://www.youtube.com/watch?v=uaQEGLKtw54) 
+ [深入探討 Amazon DynamoDB：進階設計模式 (DAT403-R1) ](https://www.youtube.com/watch?v=6yqfmXiZTlM) 

 **相關範例：** 
+  [使用 Amazon Redshift 資料共用來優化資料模式](https://wellarchitectedlabs.com/sustainability/300_labs/300_optimize_data_pattern_using_redshift_data_sharing/) 
+  [資料庫遷移](https://github.com/aws-samples/aws-database-migration-samples) 
+  [MS SQL Server - AWS Database Migration Service (DMS) 複寫示範](https://github.com/aws-samples/aws-dms-sql-server) 
+  [資料庫現代化實際操作研討會](https://github.com/aws-samples/amazon-rds-purpose-built-workshop) 
+  [Amazon Neptune 範例](https://github.com/aws-samples/amazon-neptune-samples) 

# PERF04-BP02 評估可用選項
<a name="perf_right_database_solution_evaluate_options"></a>

 了解可用的資料庫選項，以及這些選項如何在您選取資料管理解決方案之前優化您的效能。使用負載測試，識別對您的工作負載而言很重要的資料庫指標。在探索資料庫選項時，請考慮各種層面，例如參數群組、儲存選項、記憶體、運算、讀取複本、最終一致性、連線集區，以及快取選項。嘗試使用這些不同的組態選項來改善指標。 

 **預期成果：** 一個工作負載可以具有一或多個根據資料類型使用的資料庫解決方案。資料庫功能和優勢完美符合資料特性、存取模式和工作負載要求。要優化資料庫效能和成本，您必須評估資料存取模式，以判斷適當的資料庫選項。評估可接受的查詢時間，以確保選取的資料庫選項可以符合要求。 

 **常用的反模式：** 
+  未識別資料存取模式。 
+  未意識到所選資料庫管理解決方案的組態選項。 
+  僅依靠增加執行個體大小，而不查看其他可用的組態選項。 
+  未測試所選解決方案的擴展特性。 

 

 **建立此最佳實務的優勢：** 藉由探索和嘗試使用資料庫選項，您能夠降低基礎設施成本、改善效能和可擴展性，以及減少維護工作負載所需的工作量。 

 **若未建立此最佳實務，暴露的風險等級：** 高 
+  必須優化 *一體適用* 資料庫，表示做出不必要的妥協。 
+  由於未設定資料庫解決方案以符合流量模式，因此成本更高。 
+  擴展問題可能會出現操作問題。 
+  可能無法將資料保護到所需的等級。 

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

 了解您的工作負載資料特性，以便您可以設定資料庫選項。執行負載測試來識別您的重要效能指標和瓶頸。使用這些特性和指標，來評估資料庫選項並嘗試使用不同的組態。 


|  AWS 服務  |  Amazon RDS、Amazon Aurora  |  Amazon DynamoDB  |  Amazon DocumentDB  |  Amazon ElastiCache  |  Amazon Neptune  |  Amazon Timestream  |  Amazon Keyspaces  |  Amazon QLDB  | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | 
|  擴展運算  |  增加執行個體大小，Aurora 無伺服器執行個體會自動擴展，以回應負載中的變更  |  隨需容量模式下的自動讀取/寫入擴展，或所佈建容量模式下所佈建讀取/寫入容量的自動擴展  |  增加執行個體大小  |  增加執行個體大小、將節點新增至叢集  |  增加執行個體大小  |  自動擴展以調整容量  |  隨需容量模式下的自動讀取/寫入擴展，或所佈建容量模式下所佈建讀取/寫入容量的自動擴展  |  自動擴展以調整容量  | 
|  橫向擴展讀取  |  所有引擎都支援讀取複本。Aurora 支援自動擴展讀取複本執行個體。  |  增加已佈建的讀取容量單位  |  讀取複本  |  讀取複本  |  讀取複本。支援自動擴展讀取複本執行個體  |  自動擴展  |  增加已佈建的讀取容量單位  |  自動縱向擴展至記錄的並行限制  | 
|  橫向擴展寫入  |  增加執行個體大小、在應用程式中批次寫入、在資料庫前面新增佇列。透過跨多個執行個體的應用程式層級共用來水平擴展  |  增加已佈建的寫入容量單位。確定最佳的分區索引鍵以防止分割層級寫入限流  |  增加主要執行個體大小  |  在叢集模式下使用 Redis 跨碎片散發寫入  |  增加執行個體大小  |  寫入要求可能會在擴展時進行限流。如果遇到限流異常，請繼續以相同 (或更高) 的輸送量傳送資料以自動擴展。批次寫入以減少並行寫入要求  |  增加已佈建的寫入容量單位。確定最佳的分區索引鍵以防止分割層級寫入限流  |  自動縱向擴展至記錄的並行限制  | 
|  引擎組態  |  參數群組  |  不適用  |  參數群組  |  參數群組  |  參數群組  |  不適用  |  不適用  |  不適用  | 
|  快取  |  記億體內快取，可透過參數群組設定。與 ElastiCache for Redis 等專用快取配對，以卸載經常存取項目的請求  |  DAX (DAX) 可用的完全受管快取  |  記憶體內快取。或者，與 ElastiCache for Redis 等專用快取配對，以卸載經常存取項目的請求  |  主要功能為快取  |  使用查詢結果快取來快取唯讀查詢的結果  |  Timestream 有兩個儲存層；其中一個是高效能記憶體內層  |  部署個別的專用快取 (例如 ElastiCache for Redis)，以卸載經常存取項目的請求  |  不適用  | 
|  高可用性/災難復原  |  生產工作負載的建議組態是在第二個可用區域中執行待命執行個體，以在區域內提供彈性。  若為跨區域的彈性，可以使用 Aurora 全域資料庫  |  區域內的高可用性可以使用 DynanoDB 全域資料表跨區域複寫資料表  |  如需可用性，跨可用區域建立多個執行個體。  可以跨區域共用快照，也可以使用 DMS 複寫叢集，以提供跨區域複寫/災難復原  |  生產叢集的建議組態是在次要可用區域中建立至少一個節點。  ElastiCache Global Datastore 可以用來跨區域複寫叢集。  |  其他可用區域中的讀取複本會充當容錯移轉目標。  可以跨區域共用快照，也可以使用 Neptune 串流複寫叢集，以在兩個不同區域的兩個叢集之間複寫資料。  |  可在區域內高度使用。跨區域複寫需要使用 Timestream SDK 進行自訂應用程式開發  |  區域內的高可用性  跨區域複寫需要自訂應用程式邏輯或第三方工具  |  區域內的高可用性  若要跨區域複寫，請將 Amazon QLDB 日誌的內容匯出到 S3 儲存貯體，並設定儲存貯體進行跨區域複寫。  | 

 

 **實作步驟** 

1.  哪些組態選項適用於選取的資料庫？ 

   1.  Amazon RDS 和 Aurora 的參數群組可讓您調整常用的資料庫引擎層級設定，例如針對快取分配的記憶體或調整資料庫的時區 

   1.  針對佈建的資料庫服務，例如 Amazon RDS、Aurora、Neptune、Amazon DocumentDB，以及在 Amazon EC2 上部署的服務，您可以變更執行個體類型、佈建的儲存，以及新增讀取複本。 

   1.  DynamoDB 可讓您指定兩個容量模式：隨需和已佈建。若要處理不同的工作負載，您可以隨時在這些模式之間進行變更，以及在已佈建模式下增加分配的容量。 

1.  工作負載是大量讀取或大量寫入？  

   1.  哪些解決方案適用於卸載讀取 (讀取複本、快取等)？  

      1.  若為 DynamoDB 資料表，您可以使用 DAX 卸載讀取，以進行快取。 

      1.  對於關聯式資料庫，您可以建立一個 ElastiCache for Redis 叢集，並將您的應用程式設定為首先從快取中讀取，如果請求的項目不存在，則退回到資料庫。 

      1.  關聯式資料庫 (例如 Amazon RDS 和 Aurora) 和已佈建的 NoSQL 資料庫 (例如 Neptune 和 Amazon DocumentDB) 全都支援新增讀取複本，以卸載工作負載的讀取部分。 

      1.  無伺服器資料庫 (例如 DynamoDB) 將自動擴展。確定您已佈建足夠的讀取容量單位 (RCU) 來處理工作負載。 

   1.  哪些解決方案適用於擴增寫入 (分區索引鍵碎片、引進佇列等)？ 

      1.  對於關聯式資料庫，您可以增加執行個體的大小，以適應增加的工作負載或增加已佈建的 IOPS，以允許增加基礎儲存的輸送量。 
         +  您也可以在資料庫前面引進佇列，而不是直接寫入至資料庫。此模式允許您將擷取與資料庫分離並控制流量，因此資料庫不會癱瘓。  
         +  批次處理寫入請求而不是建立許多短期交易，有助於改善高寫入量關聯式資料庫中的輸送量。 

      1.  DynamoDB 之類的無伺服器資料庫可以自動擴展寫入輸送量，或透過調整已佈建的容量單位 (WCU) 來進行，取決於容量模式。  
         +  您仍會遇到 *常用* 分區的問題，但這時您達到特定分區索引鍵的輸送量限制。這可以透過選擇更均勻分佈的分區索引鍵，或對分區索引鍵進行寫入碎片化來緩解。  

1.  目前或預期的每秒尖峰交易 (TPS) 有多少？ 使用此流量和此容量 \$1X% 進行測試，以了解擴展特性。 

   1.  原生工具 (例如 pg\$1bench for PostgreSQL) 可以用來對資料庫進行壓力測試，並了解瓶頸和擴展特性。 

   1.  應該擷取生產類流量，以便可以將其重播，來模擬除了綜合工作負載之外的真實條件。 

1.  如果使用無伺服器或彈性可擴展運算，請測試在資料庫上進行此擴展的影響。若適用，請引進連線管理或集區，以降低對資料庫的影響。  

   1.  RDS Proxy 可以搭配 Amazon RDS 和 Aurora 使用，以管理資料庫的連線。  

   1.  無伺服器資料庫 (例如 DynamoDB) 沒有與其相關聯的連線，但會考慮佈建的容量和自動擴展政策來處理負載中的峰值。 

1.  負載是否可預測、負載中是否有峰值，以及是否有閒置期間？ 

   1.  若有閒置期間，請考慮在這些時段縮減佈建的容量或執行個體大小。Aurora Serverless V2 將根據負載自動擴增和縮減。 

   1.  針對非生產執行個體，請考慮在這些非運作時刻暫停或停止這些執行個體。 

1.  您是否需要根據存取模式和資料特性分割和分解資料模型？ 

   1.  考慮使用 AWS DMS 或 AWS SCT，將您的資料移至其他服務。 

## 實作計劃的工作量： 
<a name="level-of-effort-for-the-implementation-plan-to-establish-this-best-practice-you-must-be-aware-of-your-current-data-characteristics-and-metrics.-gathering-those-metrics-establishing-a-baseline-and-then-using-those-metrics-to-identify-the-ideal-database-configuration-options-is-a-low-to-moderate-level-of-effort.-this-is-best-validated-by-load-tests-and-experimentation."></a>

若要建立此最佳實務，您必須注意目前資料特性和指標。收集這些指標、建立基準，然後使用這些指標來識別理想的資料庫組態選項為 *低* 至 *中* 工作量。這最好由負載測試和試驗進行驗證。 

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

 **相關文件：** 
+  [AWS 的雲端資料庫 ](https://aws.amazon.com/products/databases/?ref=wellarchitected) 
+  [AWS 資料庫快取 ](https://aws.amazon.com/caching/database-caching/?ref=wellarchitected) 
+  [Amazon DynamoDB Accelerator ](https://aws.amazon.com/dynamodb/dax/?ref=wellarchitected) 
+  [Amazon Aurora 最佳實務 ](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Aurora.BestPractices.html?ref=wellarchitected) 
+  [Amazon Redshift 效能 ](https://docs.aws.amazon.com/redshift/latest/dg/c_challenges_achieving_high_performance_queries.html?ref=wellarchitected) 
+  [Amazon Athena 10 大效能秘訣 ](https://aws.amazon.com/blogs/big-data/top-10-performance-tuning-tips-for-amazon-athena/?ref=wellarchitected) 
+  [Amazon Redshift Spectrum 最佳實務 ](https://aws.amazon.com/blogs/big-data/10-best-practices-for-amazon-redshift-spectrum/?ref=wellarchitected) 
+  [Amazon DynamoDB 最佳實務](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/BestPractices.html?ref=wellarchitected) 

 

 **相關影片：** 
+  [AWS 專用資料庫 (DAT209-L) ](https://www.youtube.com/watch?v=q81TVuV5u28)
+ [探究 Amazon Aurora 儲存的奧秘：運作方式 (DAT309-R) ](https://www.youtube.com/watch?v=uaQEGLKtw54) 
+  [深入探討 Amazon DynamoDB：進階設計模式 (DAT403-R1) ](https://www.youtube.com/watch?v=6yqfmXiZTlM)

 **相關範例：** 
+  [Amazon DynamoDB 範例](https://github.com/aws-samples/aws-dynamodb-examples) 
+  [AWS 資料庫遷移範例](https://github.com/aws-samples/aws-database-migration-samples) 
+  [資料庫現代化研討會](https://github.com/aws-samples/amazon-rds-purpose-built-workshop) 
+  [使用 Amazon RDS for PostgreSQL 資料庫上的參數](https://github.com/awsdocs/amazon-rds-user-guide/blob/main/doc_source/Appendix.PostgreSQL.CommonDBATasks.Parameters.md) 

# PERF04-BP03 收集並記錄資料庫效能指標
<a name="perf_right_database_solution_collect_metrics"></a>

 若要了解您的資料管理系統如何執行，請務必追蹤相關指標。這些指標將協助您優化資料管理資源，以確保符合您的工作負載要求，並確保您對工作負載如何執行有著清楚的概觀。使用工具、程式庫和系統來記錄與資料庫效能有關的效能測量值。 

 

 有一些與資料庫託管所在系統相關的指標 (例如，CPU、儲存體、記憶體、IOPS)，也有一些用於存取資料本身的指標 (例如，每秒交易數、查詢率、回應時間、錯誤)。任何支援或操作人員都應該可以立即存取這些指標，並且有足夠的歷史記錄能夠識別趨勢、異常和瓶頸。 

 

 **預期成果：** 若要監控資料庫工作負載的效能，您必須記錄一段時間的多個效能指標。這可讓您偵測異常，以及針對業務指標測量效能，以確保符合您的工作負載需求。 

 **常用的反模式：** 
+  您只使用手動日誌檔案來搜尋指標。 
+  您只會將指標發佈至您團隊所使用的內部工具，而且沒有工作負載的全貌。 
+  您只會使用所選監控軟體記錄的預設指標。 
+  您只會在有問題時檢閱指標。 
+  您只會監控系統層級指標，而不會擷取資料存取或用量指標。 

 **建立此最佳實務的優勢：** 建立效能基準可協助您了解正常行為和工作負載的要求。異常模式可以更快地識別和偵錯，進而改善資料庫的效能和可靠性。可以設定資料庫容量，以確保最佳成本，而不會犧牲效能。 

 **若未建立此最佳實務，暴露的風險等級：** 高 
+  無法區分異常與正常效能等級將讓您難以識別問題和做出決策。 
+  可能未識別潛在的節省成本。 
+  將不會識別可能導致可靠性或效能下降的成長模式。 

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

 識別、收集、彙總資料庫相關指標，並使其相互關聯。指標應該同時包括支援資料庫的基礎系統和資料庫指標。基礎系統指標可能包括 CPU 使用率、記憶體、可用磁碟儲存、磁碟 I/O 和網路傳入和傳出指標，而資料庫指標可能包括每秒交易數、熱門查詢、平均查詢率、回應時間、索引使用情況、表格鎖定、查詢逾時，以及開啟的連線數目。此資料對於了解工作負載的執行方式，以及資料庫解決方案的使用方式至關重要。將這些指標納入資料驅動的方法，以調整和優化工作負載的資源。  

 **實作步驟：** 

1.  務必要追蹤哪些資料庫指標？ 

   1.  [監控 Amazon RDS 的指標](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Monitoring.html) 

   1.  [使用 Performance Insights 進行監控](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.html) 

   1.  [增強型監控](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Monitoring.OS.overview.html) 

   1.  [DynamoDB 指標](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/metrics-dimensions.html) 

   1.  [監控 DynamoDB DAX](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DAX.Monitoring.html) 

   1.  [監控 MemoryDB](https://docs.aws.amazon.com/memorydb/latest/devguide/monitoring-cloudwatch.html) 

   1.  [監控 Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/mgmt/metrics.html) 

   1.  [Timeseries 指標和維度參考](https://docs.aws.amazon.com/timestream/latest/developerguide/metrics-dimensions.html) 

   1.  [Aurora 的叢集層級指標](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraMySQL.Monitoring.Metrics.html) 

   1.  [監控 Amazon Keyspaces](https://docs.aws.amazon.com/keyspaces/latest/devguide/monitoring.html) 

   1.  [監控 Amazon Neptune](https://docs.aws.amazon.com/neptune/latest/userguide/monitoring.html) 

1.  資料庫監控是否會受益於偵測操作異常效能問題的機器學習解決方案？ 

   1.  [Amazon DevOps Guru for Amazon RDS](https://docs.aws.amazon.com/devops-guru/latest/userguide/working-with-rds.overview.how-it-works.html) 可讓您查看效能問題，並做出更正動作的建議。 

1.  您是否需要有關 SQL 使用情況的應用程式層級詳細資訊？ 

   1.  [AWS X-Ray](https://docs.aws.amazon.com/xray/latest/devguide/xray-api-segmentdocuments.html#api-segmentdocuments-sql) 可以檢測至應用程式，以獲得見解並封裝所有資料點以進行單一查詢。 

1.  您目前是否具有核准的記錄和監控解決方案？ 

   1.  [Amazon CloudWatch](https://aws.amazon.com/cloudwatch/) 可以收集架構中各種資源的指標。您還可以收集和發佈自訂指標以顯示業務或衍生指標。使用 CloudWatch 或第三方解決方案來設定可指出何時超過閾值的警示。 

1.  您是否已識別並設定資料保留策略，以符合安全和營運目標？ 

   1.  [CloudWatch 指標的預設資料保留](https://aws.amazon.com/cloudwatch/faqs/#AWS_resource_.26_custom_metrics_monitoring) 

   1.  [CloudWatch Logs 的預設資料保留](https://aws.amazon.com/cloudwatch/faqs/#Log_management) 

 **實作計劃的工作量： **有一個 *中* 工作量，用來從所有資料庫資源識別、追蹤、收集、彙總指標，並使其相互關聯。 

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

 **相關文件：** 
+ [AWS 資料庫快取 ](https://aws.amazon.com/caching/database-caching/) 
+ [ Amazon Athena 10 大效能秘訣 ](https://aws.amazon.com/blogs/big-data/top-10-performance-tuning-tips-for-amazon-athena/)
+ [ Amazon Aurora 最佳實務 ](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Aurora.BestPractices.html)
+  [Amazon DynamoDB Accelerator ](https://aws.amazon.com/dynamodb/dax/)
+ [Amazon DynamoDB 最佳實務 ](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/BestPractices.html) 
+ [Amazon Redshift Spectrum 最佳實務 ](https://aws.amazon.com/blogs/big-data/10-best-practices-for-amazon-redshift-spectrum/) 
+ [Amazon Redshift 效能 ](https://docs.aws.amazon.com/redshift/latest/dg/c_challenges_achieving_high_performance_queries.html) 
+ [AWS 的雲端資料庫 ](https://aws.amazon.com/products/databases/) 
+  [Amazon RDS Performance Insights](https://aws.amazon.com/rds/performance-insights/) 

 **相關影片：** 
+ [AWS 專用資料庫 (DAT209-L) ](https://www.youtube.com/watch?v=q81TVuV5u28) 
+  [探究 Amazon Aurora 儲存的奧秘：運作方式 (DAT309-R) ](https://www.youtube.com/watch?v=uaQEGLKtw54)
+  [深入探討 Amazon DynamoDB：進階設計模式 (DAT403-R1) ](https://www.youtube.com/watch?v=6yqfmXiZTlM)

 **相關範例：** 
+  [Level 100：使用 CloudWatch 儀表板進行監控](https://wellarchitectedlabs.com/performance-efficiency/100_labs/100_monitoring_with_cloudwatch_dashboards/) 
+  [AWS 資料集擷取指標收集架構](https://github.com/awslabs/aws-dataset-ingestion-metrics-collection-framework) 
+  [Amazon RDS 監控研討會](https://www.workshops.aws/?tag=Enhanced%20Monitoring) 

# PERF04-BP04 根據存取模式選擇資料儲存
<a name="perf_right_database_solution_access_patterns"></a>

使用工作負載的存取模式和應用程式的要求，決定要使用的最佳資料服務和技術。

 **預期成果：**已根據識別和記錄的資料存取模式，選取了資料儲存。這可能包括最常見的讀取、寫入和刪除查詢、對特定計算和彙總的需求、資料的複雜性、資料相依性，以及必要的一致性需求。 

 **常見的反模式：** 
+ 您只選取一個資料庫廠商來簡化操作管理。
+  您假設資料存取模式不會隨著時間改變。 
+  您在應用程式中實作複雜的交易、回復和一致性邏輯。 
+  資料庫設定為支援潛在的高流量爆增，這會導致資料庫資源大部分時間保持閒置狀態。 
+  使用共用的資料庫進行交易和分析用途。 

 **建立此最佳實務的優勢：**根據存取模式選取和優化您的資料儲存將有助於降低開發複雜性，並優化效能機會。了解何時使用讀取複本、全域表、資料分割和快取將協助您降低營運負擔，並根據您的工作負載需求進行擴展。 

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

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

識別並評估您的資料存取模式，以選取正確的儲存組態。每個資料庫解決方案都有設定和優化儲存解決方案的選項。使用收集的指標和記錄，並嘗試使用選項來找出最佳組態。使用下表根據每個資料庫服務檢閱儲存選項。


|  AWS Services  |  Amazon RDS  |  Amazon Aurora  |  Amazon DynamoDB  |  Amazon DocumentDB  |  Amazon ElastiCache  |  Amazon Neptune  |  Amazon Timestream  |  Amazon Keyspaces  |  Amazon QLDB  | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | 
|  Scaling Storage  | Storage can be scaled up manually or configured to scale automatically to a maximum of 64 TiB based on engine types. Provisioned storage cannot be decreased. |  Storage scales automatically up to maximum of 128 TiB and decreases when data is removed. Maximum storage size also depends upon specific Aurora MySQL or Aurora Postgres engine versions.  | Storage automatically scales. Tables are unconstrained in terms of size. | Storage scales automatically up to maximum of 64 TiB. Starting Amazon DocumentDB 4.0 storage can decrease by comparable amounts for data removal through dropping a collection or index. With Amazon DocumentDB 3.6 allocated space remains same and free space is reused when data volume increases. |  Storage is in-memory, tied to instance type or count.  |  Storage scales automatically can grow up to 128 TiB (or 64 TiB in few Regions). Upon data removal from, total allocated space remains same and is reused in the future.  | Organizes your time series data to optimize query processing and reduce storage costs. Retention period can be configured through in-memory and magnetic tiers. | Scales table storage up and down automatically as your application writes, updates, and deletes data. | Storage automatically scales. Tables are unconstrained in terms of size. | 

 

 **實作步驟：** 

1.  了解交易、更新了連結、一致性、隔離行為和持續性 (ACID) 合規性以及一致性讀取的要求。並非每個資料庫都支持這些項目，並且大部分 NoSQL 資料庫都會提供最終一致性模型。 

1.  考慮全球分散式應用程式的流量模式、延遲和存取要求，以便識別最佳的儲存解決方案。 

1.  分析查詢模式、隨機存取模式和一次性查詢。還必須斟酌圍繞文字和自然語言處理、時間系列和圖形的高度專業化查詢功能的考量。 

1.  識別並記錄資料和流量的預期成長。 

   1.  Amazon RDS 和 Aurora 支援儲存自動擴增至記錄的限制。除此之外，考慮將較舊資料轉換到 Amazon S3 進行封存、彙總歷史資料進行分析，或透過碎片水平擴展。 

   1.  DynamoDB 和 Amazon S3 將自動擴展至近乎無限制的儲存容量。 

   1.  可以手動調整在 EC2 上執行的 Amazon RDS 執行個體和資料庫大小，並且 EC2 執行個體可以在後來新增 EBS 容量以取得額外的儲存。  

   1.  可以根據活動中的變更來變更執行個體類型。例如，您可以在測試時從較小的執行個體開始，然後在您開始接收服務的生產流量時擴展執行個體。Aurora Serverless V2 會自動擴展以回應負載中的變更。  

1. 根據正常和尖峰效能 (每秒交易數 TPS 和每秒查詢數 QPS) 和一致性 (ACID 和最終一致性) 設定基準要求。

1.  記錄解決方案部署層面和資料庫存取要求 (例如全域複寫、多可用區域、讀取複寫和多個寫入節點)。 

 **實作計劃的工作量：**低。如果您的資料管理解決方案沒有日誌或指標，則需要在識別和記錄資料存取模式之前完成該操作。一旦了解您的資料存取模式，就能輕鬆選取並設定您的資料儲存。 

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

 **相關文件：** 
+ [AWS 的雲端資料庫](https://aws.amazon.com/products/databases/)
+ [使用適用於 Amazon RDS 資料庫執行個體的儲存](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PIOPS.StorageTypes.html)
+ [Amazon DocumentDB 儲存](https://docs.aws.amazon.com/documentdb/latest/developerguide/how-it-works.html#how-it-works.storage)
+ [AWS 資料庫快取](https://aws.amazon.com/caching/database-caching/)
+ [Amazon Timestream 儲存](https://docs.aws.amazon.com/timestream/latest/developerguide/storage.html)
+ [Amazon Keyspaces 中的儲存](https://docs.aws.amazon.com/keyspaces/latest/devguide/Storage.html)
+ [Amazon ElastiCache 常見問答集](https://aws.amazon.com/elasticache/faqs/)
+ [Amazon Neptune 儲存、可靠性和可用性](https://docs.aws.amazon.com/neptune/latest/userguide/feature-overview-storage.html)
+ [Amazon Aurora 最佳實務](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Aurora.BestPractices.html) 
+ [Amazon DynamoDB Accelerator ](https://aws.amazon.com/dynamodb/dax/) 
+ [Amazon DynamoDB 最佳實務](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/BestPractices.html) 
+  [Amazon RDS 儲存類型](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Storage.html) 
+ [Amazon RDS 執行個體類別的硬體規格](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.DBInstanceClass.html#Concepts.DBInstanceClass.Types)
+ [ Aurora 儲存限制](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_Limits.html#RDS_Limits.FileSize.Aurora)

 **相關影片：** 
+ [AWS 專用資料庫 (DAT209-L)](https://www.youtube.com/watch?v=q81TVuV5u28) 
+  [探究 Amazon Aurora 儲存的奧秘：運作方式 (DAT309-R)](https://www.youtube.com/watch?v=uaQEGLKtw54)
+ [Amazon DynamoDB 深入探討 ：進階設計模式 (DAT403-R1)](https://www.youtube.com/watch?v=6yqfmXiZTlM)

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

# PERF04-BP05 根據存取模式和指標優化資料儲存
<a name="perf_right_database_solution_optimize_metrics"></a>

 使用效能特性和存取模式來優化資料儲存或查詢，以實現最佳效能。測量索引編制、鍵值分佈、資料倉儲設計或快取策略此類的優化，會對系統效能或整體效率造成何種影響。 

 **常用的反模式：** 
+  您只使用手動日誌檔案來搜尋指標。 
+  您只將指標發佈到內部工具。 

 **建立此最佳實務的優勢：** 為了確保您符合工作負載所需的指標，您必須監控與讀取和寫入相關的資料庫效能指標。您可以使用這些資料，針對資料儲存層讀取和寫入來新增新的優化。 

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

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

 根據指標和模式優化資料儲存：使用報告的指標來識別工作負載中任何效能不佳的區域，並優化您的資料庫元件。每個資料庫系統都有不同的效能特性要評估，例如建立索引的方式、快取的方式或在多個系統之間分發的方式。測量優化的影響。 

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

 **相關文件：** 
+  [AWS 資料庫快取](https://aws.amazon.com/caching/database-caching/) 
+  [Amazon Athena 10 大效能秘訣](https://aws.amazon.com/blogs/big-data/top-10-performance-tuning-tips-for-amazon-athena/) 
+  [Amazon Aurora 最佳實務](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Aurora.BestPractices.html) 
+  [Amazon DynamoDB Accelerator](https://aws.amazon.com/dynamodb/dax/) 
+  [Amazon DynamoDB 最佳實務](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/BestPractices.html) 
+  [Amazon Redshift Spectrum 最佳實務](https://aws.amazon.com/blogs/big-data/10-best-practices-for-amazon-redshift-spectrum/) 
+  [Amazon Redshift 效能](https://docs.aws.amazon.com/redshift/latest/dg/c_challenges_achieving_high_performance_queries.html) 
+  [AWS 的雲端資料庫](https://aws.amazon.com/products/databases/) 
+  [使用 DevOps Guru for RDS 分析效能異常](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/devops-guru-for-rds.html) 
+  [DynamoDB 的讀取/寫入容量](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadWriteCapacityMode.html) 

 **相關影片：** 
+  [AWS 專用資料庫 (DAT209-L)](https://www.youtube.com/watch?v=q81TVuV5u28) 
+  [探究 Amazon Aurora 儲存的奧秘：運作方式 (DAT309-R)](https://www.youtube.com/watch?v=uaQEGLKtw54) 
+  [深入探討 Amazon DynamoDB：進階設計模式 (DAT403-R1)](https://www.youtube.com/watch?v=6yqfmXiZTlM) 

 **相關範例：** 
+  [Amazon DynamoDB 的實作實驗室](https://amazon-dynamodb-labs.workshop.aws/hands-on-labs.html) 

# PERF 5  您如何設定聯網解決方案？
<a name="perf-05"></a>

 工作負載的最佳網路解決方案會根據延遲、輸送量需求、抖動和頻寬而有所不同。實體限制 (例如使用者或內部部署資源) 會決定位置選項。這些限制條件可以隨著節點或資源置放而位移。 

**Topics**
+ [PERF05-BP01 了解聯網如何影響效能](perf_select_network_understand_impact.md)
+ [PERF05-BP02 評估可用的聯網功能](perf_select_network_evaluate_features.md)
+ [PERF05-BP03 為混合式工作負載選擇適當大小的專用連線或 VPN](perf_select_network_hybrid.md)
+ [PERF05-BP04 利用負載平衡和加密卸載](perf_select_network_encryption_offload.md)
+ [PERF05-BP05 選擇網路通訊協定以提高效能](perf_select_network_protocols.md)
+ [PERF05-BP06 根據網路要求選擇工作負載的位置](perf_select_network_location.md)
+ [PERF05-BP07 根據指標最佳化網路組態](perf_select_network_optimize.md)

# PERF05-BP01 了解聯網如何影響效能
<a name="perf_select_network_understand_impact"></a>

 分析並了解與網路相關的決策如何影響工作負載效能。網路為應用程式元件、雲端服務、邊緣網絡和內部部署資料之間的連線負責，因此可以高度地影響工作負載效能。除了工作負載效能外，使用者體驗也會受到網路延遲、頻寬、通訊協定、位置、網路擁塞、抖動、輸送量和路由規則的影響。 

 **預期成果：** 具有來自工作負載的聯網要求的記錄清單，包括延遲、封包大小、路由規則、通訊協定和支援的流量模式。檢閱可用的聯網解決方案，並識別哪個服務符合您的工作負載聯網特性。雲端型網路可以快速重建，因此隨著時間演進您的網路架構是改善效能達成效率的必要條件。 

 **常用的反模式：** 
+  通過現有資料中心的所有流量流程。 
+  您尚未了解實際用量要求，就建置過多的 Direct Connect 工作階段。 
+  在定義聯網解決方案時，您未考慮工作負載特性和加密負擔。 
+  您將內部部署概念和策略用於雲端中的聯網解決方案。 

 **建立此最佳實務的優勢：** 了解聯網如何影響工作負載效能協助您識別潛在的瓶頸、改善使用者體驗、提高可靠性，以及隨著工作負載的變更降低營運維護成本。 

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

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

 識別工作負載的重要網路效能指標，並擷取其聯網特性。使用基準化分析或負載測試，定義並記錄屬於資料驅動方法的要求。使用這些資料來確定您的網路解決方案受限的地方，並檢查可以改善此工作負載的組態選項。了解雲端原生聯網功能和可用選項，以及它們如何根據要求影響您的工作負載效能。每個聯網功能都有優缺點，並且可以設定為符合您的工作負載特性，並根據您的需求進行擴展。 

 **實作步驟：** 

1.  定義並記錄聯網效能需求： 

   1.  包括網路延遲、頻寬、通訊協定、位置、流量模式 (峰值和頻率)、輸送量、加密、檢查，以及路由規則等指標 

1.  擷取您的基礎聯網特性： 

   1.  [VPC Flow Logs ](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html) 

   1.  [AWS Transit Gateway 指標](https://docs.aws.amazon.com/vpc/latest/tgw/transit-gateway-cloudwatch-metrics.html) 

   1.  [AWS PrivateLink 指標](https://docs.aws.amazon.com/vpc/latest/privatelink/privatelink-cloudwatch-metrics.html) 

1.  擷取您的應用程式聯網特性： 

   1.  [彈性網路配接卡](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/monitoring-network-performance-ena.html) 

   1.  [AWS App Mesh 指標](https://docs.aws.amazon.com/app-mesh/latest/userguide/envoy-metrics.html) 

   1.  [Amazon API Gateway 指標](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-metrics-and-dimensions.html) 

1.  擷取您的邊緣聯網特性： 

   1.  [Amazon CloudFront 指標](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/viewing-cloudfront-metrics.html) 

   1.  [Amazon Route 53 指標](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/monitoring-cloudwatch.html) 

   1.  [AWS Global Accelerator 指標](https://docs.aws.amazon.com/global-accelerator/latest/dg/cloudwatch-monitoring.html) 

1.  擷取您的混合聯網特性： 

   1.  [Direct Connect 指標](https://docs.aws.amazon.com/directconnect/latest/UserGuide/monitoring-cloudwatch.html) 

   1.  [AWS 站點對站點 VPN 指標](https://docs.aws.amazon.com/vpn/latest/s2svpn/monitoring-cloudwatch-vpn.html) 

   1.  [AWS Client VPN 指標](https://docs.aws.amazon.com/vpn/latest/clientvpn-admin/monitoring-cloudwatch.html) 

   1.  [AWS 雲端 WAN 指標](https://docs.aws.amazon.com/vpc/latest/cloudwan/cloudwan-cloudwatch-metrics.html) 

1.  擷取您的安全聯網特性： 

   1.  [AWS Shield、WAF 和 Network Firewall 指標](https://docs.aws.amazon.com/waf/latest/developerguide/monitoring-cloudwatch.html) 

1.  使用追蹤工具擷取端對端效能指標： 

   1.  [AWS X-Ray](https://aws.amazon.com/xray/) 

   1.  [Amazon CloudWatch RUM](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-RUM.html) 

1.  對網路效能進行基準測試： 

   1.  [基準](https://aws.amazon.com/premiumsupport/knowledge-center/network-throughput-benchmark-linux-ec2/) 網路輸送量：當執行個體位於同一 VPC 時，可能會影響 EC2 網路效能的一些因素。測量同一 VPC 中 EC2 Linux 執行個體之間的網路頻寬。 

   1.  執行 [負載測試](https://aws.amazon.com/solutions/implementations/distributed-load-testing-on-aws/) 嘗試使用聯網解決方案和選項 

 **實作計劃的工作量： **有一個 *中等* 工作量，用來記錄工作負載聯網要求、選項和可用的解決方案。 

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

 **相關文件：** 
+ [Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html) 
+ [Linux 上的 EC2 增強型聯網 ](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/enhanced-networking.html) 
+ [Windows 上的 EC2 增強型聯網 ](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/enhanced-networking.html) 
+ [EC2 置放群組 ](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html) 
+ [在 Linux 執行個體上啟用搭配彈性網路轉接器 (ENA) 的增強型聯網](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/enhanced-networking-ena.html) 
+ [Network Load Balancer ](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/introduction.html) 
+ [AWS 的聯網產品](https://aws.amazon.com/products/networking/) 
+  [Transit Gateway ](https://docs.aws.amazon.com/vpc/latest/tgw)
+ [轉換到 Amazon Route 53 中的 Latency Based Routing ](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/TutorialTransitionToLBR.html) 
+ [VPC 端點 ](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints.html) 
+ [VPC Flow Logs ](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html) 

 **相關影片：** 
+ [與 AWS 和混合 AWS 網路架構的連線 (NET317-R1) ](https://www.youtube.com/watch?v=eqW6CPb58gs) 
+ [優化 Amazon EC2 執行個體的網路效能 (CMP308-R1) ](https://www.youtube.com/watch?v=DWiwuYtIgu0) 
+  [改善應用程式的全球網路效能](https://youtu.be/vNIALfLTW9M) 
+  [EC2 執行個體和效能優化最佳實務](https://youtu.be/W0PKclqP3U0) 
+  [優化 Amazon EC2 執行個體的網路效能](https://youtu.be/DWiwuYtIgu0) 
+  [搭配 Well-Architected Framework 的聯網最佳實務和秘訣](https://youtu.be/wOMNpG49BeM) 
+  [大規模遷移中的 AWS 聯網最佳實務](https://youtu.be/qCQvwLBjcbs) 

 **相關範例：** 
+  [AWS Transit Gateway 和可擴展的安全解決方案](https://github.com/aws-samples/aws-transit-gateway-and-scalable-security-solutions) 
+  [AWS 聯網研討會](https://networking.workshop.aws/) 

# PERF05-BP02 評估可用的聯網功能
<a name="perf_select_network_evaluate_features"></a>

評估雲端中可能提升效能的聯網功能。透過測試、指標和分析來測量這些功能的影響。例如，利用可用的網路層級功能來降低延遲、封包遺失或抖動。

許多服務的功用是要改善效能，有些則通常是為了提供優化網路效能的功能。AWS Global Accelerator 和 Amazon CloudFront 之類的服務旨在改善效能，而其他大部分的服務則具有優化網路流量的產品功能。檢閱服務功能 (例如，EC2 執行個體網路功能、增強型聯網執行個體類型、經 Amazon EBS 優化的執行個體、Amazon S3 Transfer Acceleration 和 CloudFront)，以改善您的工作負載效能。

**預期成果：** 您已記載工作負載內的元件清查，並識別個別元件有哪些聯網組態有助於您達到效能要求。在評估聯網功能之後，您試驗並測量了效能指標，以識別如何使用您可用的功能。

**常見的反模式：** 
+ 您將所有的工作負載放在離總部最近的 AWS 區域 中，而不是使用者附近的 AWS 區域。
+ 未能對您的工作負載效能進行基準測試，並根據其結果持續評估工作負載效能。
+ 您未檢閱服務組態以找出效能改進選項。

**建立此最佳實務的優勢：** 評估所有服務功能和選項可提高工作負載效能、降低基礎架構成本、減少維護工作負載所需的人力，以及提升整體安全狀態。您可以使用全球 AWS 骨幹，以確保能為客戶提供最佳的聯網體驗。

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

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

檢閱您可以使用哪些網路相關組態選項，及其對工作負載可能有何影響。了解這些選項如何與您的架構互動，以及這些選項對衡量效能與使用者感知效能的影響，對於效能最佳化至關重要。

**實作步驟：** 

1. 建立工作負載元件清單。

   1. 使用下列工具來建置、管理及監控您的組織網路： [AWS 雲端 WAN](https://aws.amazon.com/cloud-wan/)。

   1. 使用下列工具檢視您的網路： [Network Manager](https://docs.aws.amazon.com/vpc/latest/tgwnm/what-is-network-manager.html)。使用現有的組態管理資料庫 (CMDB) 工具或 [AWS Config](https://aws.amazon.com/config/) 之類的工具，建立工作負載的清查及其設定方式。

1. 如果這是現有的工作負載，請識別並記載效能指標的基準，並將重心放在瓶頸和有待改善的領域上。每個工作負載的效能相關聯網指標，都會隨著業務要求和工作負載特性而不同。一開始對您的工作負載而言，下列指標可能都是必須檢閱的：頻寬、延遲、封包遺失、抖動和重新傳輸。

1. 如果這是新的工作負載，請執行 [負載測試](https://aws.amazon.com/solutions/implementations/distributed-load-testing-on-aws/) 以找出效能瓶頸。

1. 對於您找出的效能瓶頸，請檢閱您解決方案的組態選項，以找出改善效能的機會。

1. 如果您不知道網路路徑或路由，請使用 [Network Access Analyzer](https://docs.aws.amazon.com/vpc/latest/network-access-analyzer/what-is-vaa.html) 加以識別。

1. 檢閱您的網路通訊協定，以進一步降低延遲。
   + [PERF05-BP05 選擇網路通訊協定以提高效能](perf_select_network_protocols.md) 

1. 如果您跨多個位置使用 AWS Site-to-Site VPN 連線至 AWS 區域，請檢閱 [加速 Site-to-Site VPN 連線](https://docs.aws.amazon.com/vpn/latest/s2svpn/accelerated-vpn.html) 以找出改善聯網效能的機會。

1. 如果您的工作負載流量分散於多個帳戶，請評估網路拓撲和服務以降低延遲。
   + 在連接多個帳戶時，評估 [VPC 對等互連](https://docs.aws.amazon.com/vpc/latest/peering/what-is-vpc-peering.html) 和 [AWS Transit Gateway](https://aws.amazon.com/transit-gateway/) 之間在操作和效能上的權衡。AWS Transit Gateway 支援 AWS Site-to-Site VPN 輸送量擴展至單一 [IPsec 最大限制](https://aws.amazon.com/blogs/networking-and-content-delivery/scaling-vpn-throughput-using-aws-transit-gateway/) 以上 (使用多重路徑)。Amazon VPC 與 AWS Transit Gateway 之間的流量仍會在私有 AWS 網路上，且不會對網際網路公開。AWS Transit Gateway 會簡化所有 VPC 的互連方式，如此便可跨數千個 AWS 帳戶 並進入內部部署網路。使用下列工具在多個帳戶間共用您的 AWS Transit Gateway： [Resource Access Manager](https://aws.amazon.com/ram/)。若要取得檢視全域網路流量的能力，請使用 [Network Manager](https://aws.amazon.com/transit-gateway/network-manager/) 以集中檢視您的網路指標。

1. 檢閱您的使用者位置，並儘可能拉近使用者與工作負載之間的距離。

   1. [AWS Global Accelerator](https://aws.amazon.com/global-accelerator/) 是一項連網服務，可使用 Amazon Web Services 全域網路基礎架構將使用者流量效能提升最多達 60%。網際網路壅塞時，AWS Global Accelerator 會找出最佳的應用程式路徑，以持續保持低封包遺失率、低抖動和低延遲。此外也提供靜態 IP 位址，以方便在可用區域或 AWS 區域 之間移動端點，而無須更新 DNS 組態或變更面向用戶端的應用程式。

   1. [Amazon CloudFront](https://aws.amazon.com/cloudfront/) 可讓您改善全域的工作負載內容傳遞效能和延遲。CloudFront 具有超過 410 個散佈於全球的連接點，可快取您的內容並降低使用者經歷的延遲。

   1. Amazon Route 53 提供 [以延遲為基礎的路由](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-policy-latency.html)，[地理位置路由](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-policy-geo.html)，[地理位置臨近性路由](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-policy-geoproximity.html)和 [以 IP 為基礎的路由](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-policy-ipbased.html) 等選項，可協助您提升全球對象的工作負載效能。請檢閱您的工作負載流量和使用者位置，找出能夠優化工作負載效能的路由選項。

1. 評估用來改善儲存 IOPS 的其他 Amazon S3 功能。

   1.  [Amazon S3 Transfer Acceleration](https://aws.amazon.com/s3/transfer-acceleration/) 功能讓外部使用者得以獲益於 CloudFront 的聯網優化，以將資料上傳到 Amazon S3。這樣就可以更輕易地從與 AWS 雲端 沒有專用連線的遠端位置輸送大量資料。

   1.  [Amazon S3 多區域存取點](https://docs.aws.amazon.com/AmazonS3/latest/userguide/MultiRegionAccessPoints.html) 可將內容複寫至多個區域，並提供單一存取點以簡化工作負載。使用多區域存取點時，您可以使用可識別最低延遲儲存貯體的服務，來要求資料或將資料寫入 Amazon S3。

1. 請檢閱您的運算資源網路頻寬。

   1. EC2 執行個體、容器和 Lambda 函數所使用的彈性網絡介面 (ENA) 會按個別流程受到限制。請檢閱您的置放群組以優化 [EC2 聯網輸送量](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-network-bandwidth.html)。若要避免發生個別流程的瓶頸，請將應用程式設計為使用多個流程。若要監控及檢視您的運算相關聯網指標，請使用 [CloudWatch 指標](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2-instance-network-bandwidth.html) 和 [https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/monitoring-network-performance-ena.html](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/monitoring-network-performance-ena.html)。`ethtool` 包含在 ENA 驅動程式中，會將可發佈為 [自訂指標](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/publishingMetrics.html) 的其他網路相關指標公開至 CloudWatch。

   1. 較新的 EC2 執行個體可以利用增強型聯網。[N 系列 EC2 執行個體](https://aws.amazon.com/ec2/nitro/)(例如 `M5n` 和 `M5dn`) 利用第四代自訂 Nitro 卡，為單一執行個體提供高達 100 Gbps 的網路輸送量。相較於基礎的 `M5` 執行個體，這些執行個體提供 4 倍之多的網路頻寬和封包程序，非常適合網路密集型應用程式。

   1. [Amazon Elastic Network Adapters](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/enhanced-networking-ena.html) (ENA) 可提供進一步的優化，具體方法是為您在叢集置放群組內的執行個體提供更理想的 [輸送量](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html#placement-groups-cluster%23placement-groups-limitations-cluster)。

   1. [Elastic Fabric Adapter](https://aws.amazon.com/hpc/efa/) (EFA) 是 Amazon EC2 執行個體的網路介面，讓您能夠在 AWS 上大規模執行需要高階節點間通訊的工作負載。透過 EFA，使用訊息傳遞界面 (MPI) 的高效能運算 (HPC) 應用程式，以及使用 NVIDIA 集體通訊函式庫 (NCCL) 的機器學習 (ML) 應用程式可擴展到數千個 CPU 或 GPU。

   1. [經 Amazon EBS 優化的](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-optimized.html) 執行個體使用優化的設定堆疊，可提供更多專用容量以增加 Amazon EBS I/O。這項優化能盡量減少 Amazon EBS I/O 與傳出執行個體的其他流量之間的競用，使得 EBS 磁碟區具有最佳效能。

**實作計劃的工作量： **

若要建立此最佳實務，您必須了解目前有哪些工作負載元件選項會影響網路效能。收集元件、評估網路改進選項、試驗、實作和記載這些改進，是 *低* 至 *中等* 工作量。

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

 **相關文件：** 
+  [Amazon EBS - 優化的執行個體](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-optimized.html) 
+  [Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html) 
+  [Amazon EC2 執行個體網路頻寬](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-network-bandwidth.html) 
+  [Linux 上的 EC2 增強型聯網](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/enhanced-networking.html) 
+  [Windows 上的 EC2 增強型聯網](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/enhanced-networking.html) 
+  [EC2 置放群組](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html) 
+  [在 Linux 執行個體上啟用搭配彈性網路轉接器 (ENA) 的增強型聯網](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/enhanced-networking-ena.html) 
+  [Network Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/introduction.html) 
+  [AWS 的聯網產品](https://aws.amazon.com/products/networking/) 
+  [AWS Transit Gateway](https://docs.aws.amazon.com/vpc/latest/tgw) 
+  [轉換到 Amazon Route 53 中以延遲為基礎的路由](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/TutorialTransitionToLBR.html) 
+  [VPC 端點](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints.html) 
+  [VPC Flow Logs](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html) 
+  [建置雲端 CMDB](https://aws.amazon.com/blogs/mt/building-a-cloud-cmdb-on-aws-for-consistent-resource-configuration-in-hybrid-environments/) 
+  [使用 AWS Transit Gateway 擴展 VPN 輸送量](https://aws.amazon.com/blogs/networking-and-content-delivery/scaling-vpn-throughput-using-aws-transit-gateway/) 

 **相關影片：** 
+  [與 AWS 和混合 AWS 網路架構的連線 (NET317-R1)](https://www.youtube.com/watch?v=eqW6CPb58gs) 
+  [優化 Amazon EC2 執行個體的網路效能 (CMP308-R1)](https://www.youtube.com/watch?v=DWiwuYtIgu0) 
+  [AWS Global Accelerator](https://www.youtube.com/watch?v=lAOhr-5Urfk) 

 **相關範例：** 
+  [AWS Transit Gateway 和可擴展的安全解決方案](https://github.com/aws-samples/aws-transit-gateway-and-scalable-security-solutions) 
+  [AWS 聯網研討會](https://networking.workshop.aws/) 

# PERF05-BP03 為混合式工作負載選擇適當大小的專用連線或 VPN
<a name="perf_select_network_hybrid"></a>

 需要公共網路連接 AWS 中的內部部署和雲端資源時，請確認您有足夠的頻寬來符合您的效能要求。預估混合工作負載的頻寬和延遲需求。這些數字將促進您的連線選項的調整大小要求。 

 **預期成果：**部署需要混合網路的工作負載時，您有連線的多個組態選項，例如專用連線或虛擬私有網路 (VPN)。為每個工作負載選取適用的連線類型，同時確認在您的位置與雲端之間您有足夠的頻寬和加密要求。 

 **常見的反模式：** 
+ 您無法了解或識別所有工作負載要求 (頻寬、延遲、抖動、加密和流量需求)。
+  您未評估備份或並行連線能力選項。 

 **建立此最佳實務的優勢：**選取和設定適當大小的混合網路解決方案將提高工作負載的可靠性，並充分利用效能機會。藉由識別工作負載要求、提前規劃和評估混合解決方案，您將最大限度地減少昂貴的實體網路變更和營運負擔，同時延長上市時間。 

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

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

根據您的頻寬要求開發混合式聯網架構預估混合式應用程式的頻寬和延遲要求。在使用專用網路連線或網際網路型 VPN 之間考慮適當的連線選項。

專用連線會建立透過私有線路的網路連線。需要高頻寬、低延遲同時可達到一致效能時，適合這個選項。VPN 連線會建立透過網際網路的安全連線。需要使用現有網際網路連線的加密連線時，適合這個選項。

根據頻寬要求，單一 VPN 連線或專用連線可能不足，而且您必須架構混合式設定，以便啟用跨多個連線的流量負載平衡。

 **實作步驟** 

1.  預估混合式應用程式的頻寬和延遲要求。 

   1.  針對移至 AWS 的現有應用程式，利用來自您的內部網路監控系統的資料。 

   1.  針對您沒有監控資料的新應用程式或現有應用程式，請諮詢產品擁有者以衍生適當的效能指標，並且提供良好的使用者體驗。 

1.  選取專用連線或 VPN 做為您的連線選項。根據所有工作負載要求 (加密、頻寬和流量需求)，您可以選擇 AWS Direct Connect 或 AWS Site-to-Site VPN (或兩者)。下圖可協助您選擇適當的連線類型。 

   1.  如果您考慮使用專用連線，可能需要 AWS Direct Connect，由於它的私有網路連線能力，所以能提供更可預測和一致的效能。AWS Direct Connect 提供與 AWS 環境的專用連線能力，從 50 Mbps 到高達 100 Gbps，使用專用連線或託管連線。這可為您提供受管和受控的延遲以及佈建頻寬，因此您的工作負載可以有效率地連線到其他環境。使用 AWS Direct Connect 合作夥伴，您可以擁有來自多個環境的端對端連線能力，提供擴充的網路和一致的效能。AWS 提供使用原生 100 Gbps、連結彙總群組 (LAG) 或 BGP 等價多路徑 (ECMP) 的擴展直接連線連線頻寬。 

   1.  如果您考慮使用 VPN 連線，AWS 受管 VPN 是建議選項。AWS Site-to-Site VPN 提供受管 VPN 服務，支援網際網路通訊協定安全性 (IPsec) 通訊協定。建立 VPN 連線時，每個 VPN 連線都包含兩個通道以獲得高可用性。使用 AWS Transit Gateway，您可以簡化多個 VPC 之間的連線，也可以使用單一 VPN 連線來連線到連接至 AWS Transit Gateway 的任何 VPC。AWS Transit Gateway 也可讓您藉由透過多個 VPN 通道啟用等價多路徑 (ECMP) 路由支援，擴展超過 1.25Gbps IPsec VPN 輸送量限制。 

![\[流程圖說明您在判斷在您的網路中是否需要決定性效能時，應該考慮的選項。\]](http://docs.aws.amazon.com/zh_tw/wellarchitected/2023-04-10/framework/images/deterministic-performance-flowchart.png)


 

 **實作計劃的工作量：**高。評估混合網路的工作負載需求和實作混合網路解決方案需要大量工作量。 

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

 **相關文件：** 
+ [Network Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/introduction.html) 
+ [AWS 的聯網產品](https://aws.amazon.com/products/networking/) 
+ [AWS Transit Gateway](https://docs.aws.amazon.com/vpc/latest/tgw) 
+ [轉換到 Amazon Route 53 中以延遲為基礎的路由](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/TutorialTransitionToLBR.html) 
+ [VPC 端點](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints.html) 
+ [VPC Flow Logs](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html) 
+  [AWS Site-to-Site VPN](https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html) 
+  [建置可擴展且安全的多 VPC AWS 網路基礎設施](https://docs.aws.amazon.com/whitepapers/latest/building-scalable-secure-multi-vpc-network-infrastructure/welcome.html) 
+  [AWS Direct Connect](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html) 
+  [用戶端 VPN](https://docs.aws.amazon.com/vpn/latest/clientvpn-admin/what-is.html) 

 **相關影片：** 
+ [與 AWS 和混合 AWS 網路架構的連線 (NET317-R1)](https://www.youtube.com/watch?v=eqW6CPb58gs) 
+ [最佳化 Amazon EC2 執行個體的網路效能 (CMP308-R1)](https://www.youtube.com/watch?v=DWiwuYtIgu0) 
+  [AWS Global Accelerator](https://www.youtube.com/watch?v=lAOhr-5Urfk) 
+  [AWS Direct Connect](https://www.youtube.com/watch?v=DXFooR95BYc&t=6s) 
+  [Transit Gateway Connect](https://www.youtube.com/watch?v=_MPY_LHSKtM&t=491s) 
+  [VPN 解決方案](https://www.youtube.com/watch?v=qmKkbuS9gRs) 
+  [使用 VPN 解決方案保護安全](https://www.youtube.com/watch?v=FrhVV9nG4UM) 

 **相關範例：** 
+  [AWS Transit Gateway 和可擴展的安全解決方案](https://github.com/aws-samples/aws-transit-gateway-and-scalable-security-solutions) 
+  [AWS 聯網研討會](https://networking.workshop.aws/) 

# PERF05-BP04 利用負載平衡和加密卸載
<a name="perf_select_network_encryption_offload"></a>

使用負載平衡器達成您的目標資源的最佳效能效率，並且改善系統的回應能力。

 **預期成果：**減少為您的流量提供服務的運算資源數量。避免您的目標的資源取用失衡。將運算密集型任務卸載至負載平衡器。利用雲端彈性和靈活性來改善效能並且最佳化您的架構。 

 **常見的反模式：** 
+ 您在選擇負載平衡器類型時不考慮工作負載要求。
+ 您不利用負載平衡器功能來進行效能最佳化。
+  工作負載在不使用負載平衡器的情況下，直接公開到網際網路。 

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

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

 負載平衡器會做為您的工作負載的進入點，從那裡將您的流量分散到後端目標，例如運算執行個體或容器。選擇正確的負載平衡器類型是最佳化架構的第一步。 

 從列出您的工作負載特性開始，例如通訊協定 (例如 TCP、HTTP、TLS 或 WebSockets)、目標類型 (例如執行個體、容器或無伺服器)、應用程式要求 (例如長時間執行連線、使用者身分驗證或黏性) 和置放 (例如 Region、Local Zone、Outpost 或區域隔離)。 

 選擇正確的負載平衡器之後，您可以開始利用其功能來減少後端為流量提供服務需付出的工作量。 

 例如，同時使用 Application Load Balancer (ALB) 和 Network Load Balancer (NLB)，您可以執行 SSL/TLS 加密卸載，這是避免 CPU 密集型 TLS 交握由您的目標完成，並且改善憑證管理的機會。 

 在您的負載平衡器中設定 SSL/TLS 卸載時，它會負責往返用戶端的流量的加密，同時將未加密的流量交付給您的後端，釋放您的後端資源並且改善用戶端的回應時間。 

 Application Load Balancer 也可以為 HTTP2 流量提供服務，不需要在您的目標上支援它。這個簡單的決策可以改善您的應用程式回應時間，因為 HTTP2 更有效率地使用 TCP 連線。 

 負載平衡器也可以用來讓您的架構更有彈性，方法是在不同後端類型之間分散流量，例如容器或無伺服器。例如，Application Load Balancer 可以使用[接聽程式規則](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/listener-update-rules.html)進行設定，該規則會根據請求參數 (例如標題、方法或模式) 將流量轉送到不同目標群組。 

 定義架構時，也應該考慮您的工作負載延遲要求。例如，如果您有對延遲敏感的應用程式，您可能會決定使用 Network Load Balancer，它提供極低的延遲。另外，您可能會決定藉由利用 [AWS Local Zones](https://aws.amazon.com/about-aws/global-infrastructure/localzones/) 中的 Application Load Balancer 或甚至是 [AWS Outposts](https://aws.amazon.com/outposts/rack/)，讓工作負載更靠近您的客戶。 

 對延遲敏感的工作負載的另一個考慮是跨區域負載平衡。使用跨區域負載平衡，每個負載平衡器節點會將已註冊目標之間的流量分散到所有已啟用可用區域中。這樣可改善可用性，然而會對往返時間延遲增加一個位數的毫秒。 

 最後，ALB 和 NLB 都提供監控資源，例如日誌和指標。適當地設定監控可協助收集您的應用程式的效能洞察。例如，您可以使用 ALB 存取日誌來尋找哪個請求耗費較久的時間獲得解答，或哪個後端目標造成效能問題。 

 **實作步驟** 

1.  為您的工作負載選擇正確的負載平衡器。 

   1.  針對 HTTP/HTTPS 工作負載使用 Application Load Balancer。 

   1.  針對在 TCP 或 UDP 上執行的非 HTTP 工作負載使用 Network Load Balancer。 

   1.  如果您想要利用兩個產品的功能，使用兩者個組合 ([ALB 做為 NLB 的目標](https://aws.amazon.com/blogs/networking-and-content-delivery/application-load-balancer-type-target-group-for-network-load-balancer/))。例如，如果您想要搭配使用 NLB 的靜態 IP 與來自 ALB 的 HTTP 標題型路由，或者如果您想要將您的 HTTP 工作負載公開到 [AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/privatelink-share-your-services.html)，您可以這麼做。 

   1.  如需負載平衡器的完整比較，請參閱 [ELB 產品比較](https://aws.amazon.com/elasticloadbalancing/features/)。 

1.  使用 SSL/TLS 卸載。 

   1.  設定 HTTPS/TLS 接聽程式，[Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-https-listener.html) 和 [Network Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/create-tls-listener.html) 都與 [AWS Certificate Manager](https://aws.amazon.com/certificate-manager/) 整合。 

   1.  請注意，基於合規理由，某些工作負載可能需要端對端加密。在此情況下，在目標啟用加密是一項要求。 

   1.  如需安全最佳實務，請參閱 [SEC09-BP02 強制執行傳輸中加密](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/sec_protect_data_transit_encrypt.html)。 

1.  選取正確的路由演算法。 

   1.  路由演算法可以造成您的後端目標的妥善使用程度和它們影響效能程度的差異。例如，ALB 提供[兩個路由演算法的選項](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-target-groups.html#modify-routing-algorithm)： 

   1.  **最低未解決請求：**針對當您的應用程式的請求因複雜性而異或您的目標因處理功能而異的情況時，用來讓負載更佳地分散到您的後端目標。 

   1.  **輪詢均衡：**當請求和目標類似，或是如果您需要在目標之間平均分散請求時使用。 

1.  考慮跨區域或區域隔離。 

   1.  針對延遲改善和區域失敗網域使用跨區域關閉 (區域隔離)。在 NLB 中預設為關閉，[在 ALB 中您可以依據各個目標群組加以關閉](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/disable-cross-zone.html)。 

   1.  使用跨區域開啟來增加可用性和彈性。根據預設，ALB 的跨區域為開啟，[在 NLB 中您可以依據各個目標群組加以開啟](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/target-group-cross-zone.html)。 

1.  為您的 HTTP 工作負載開啟 HTTP keep-alives。 

   1.  針對 HTTP 工作負載，為您的後端目標在 Web 伺服器設定中開啟 HTTP keep-alive。使用這項功能，負載平衡器可以重複使用後端連線，直到 keep-alive 逾時到期，改善您的 HTTP 請求和回應時間，同時減少您的後端目標上的資源使用率。如需如何針對 Apache 和 Nginx 執行此操作的詳細資訊，請參閱[使用 Apache 或 NGINX 做為 ELB 的後端伺服器的最佳設定是什麼？](https://aws.amazon.com/premiumsupport/knowledge-center/apache-backend-elb/) 

1.  使用 Elastic Load Balancing 整合來達到更佳的運算資源協同運作。 

   1.  使用與您的負載平衡器整合的 Auto Scaling。效能效率系統的其中一個關鍵層面與適當調整後端資源大小有關。若要完成此操作，您可以利用後端目標資源的負載平衡器整合。使用與 Auto Scaling 群組整合的負載平衡器，目標會視需要從負載平衡器新增或移除，以因應傳入流量。 

   1.  負載平衡器也可以針對容器化工作負載與 Amazon ECS 和 Amazon EKS 整合。 
      + [使用 Elastic Load Balancing 在您的 Auto Scaling 群組中的執行個體之間分散流量](https://docs.aws.amazon.com/autoscaling/ec2/userguide/autoscaling-load-balancer.html)
      + [Amazon ECS - 服務負載平衡](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-load-balancing.html)
      + [Amazon EKS 上的應用程式負載平衡](https://docs.aws.amazon.com/eks/latest/userguide/alb-ingress.html)
      + [Amazon EKS 上的網路負載平衡](https://docs.aws.amazon.com/eks/latest/userguide/network-load-balancing.html)

1.  監控您的負載平衡器以尋找效能瓶頸。 

   1.  為您的 [Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/enable-access-logging.html) 和 [Network Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-access-logs.html) 啟用存取日誌。 

   1.  針對 ALB 要考慮的主要欄位是 `request_processing_time`，`request_processing_time`，和 `response_processing_time`。 

   1.  針對 NLB 要考慮的主要欄位是 `connection_time` 和 `tls_handshake_time`。 

   1.  請準備好在您需要日誌時進行查詢。您可以使用 Amazon Athena 來查詢 [ALB 日誌](https://docs.aws.amazon.com/athena/latest/ug/application-load-balancer-logs.html)與 [NLB 日誌](https://docs.aws.amazon.com/athena/latest/ug/networkloadbalancer-classic-logs.html)。 

   1.  建立如 [ 的效能相關指標的警示`TargetResponseTime` 針對 ALB](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-cloudwatch-metrics.html)。 

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

 **相關的最佳實務：** 
+  [SEC09-BP02 強制執行傳輸中加密](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/sec_protect_data_transit_encrypt.html) 

 **相關文件：** 
+ [ELB 產品比較](https://aws.amazon.com/elasticloadbalancing/features/)
+ [AWS 全球基礎設施](https://aws.amazon.com/about-aws/global-infrastructure/)
+ [使用可用區域親和性改善效能並且降低成本](https://aws.amazon.com/blogs/architecture/improving-performance-and-reducing-cost-using-availability-zone-affinity/)
+ [使用 Amazon Athena 逐步執行日誌分析](https://github.com/aws/elastic-load-balancing-tools/tree/master/amazon-athena-for-elb)
+ [查詢 Application Load Balancer 日誌](https://docs.aws.amazon.com/athena/latest/ug/application-load-balancer-logs.html)
+ [監控您的 Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-monitoring.html)
+ [監控您的 Network Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-monitoring.html)

 **相關影片：** 
+ [AWS re:Invent 2018：[REPEAT 1] Elastic Load Balancing：深入探討和最佳實務 (NET404-R1)](https://www.youtube.com/watch?v=VIgAT7vjol8)
+ [AWS re:Invent 2021 - 如何為您的 AWS 工作負載選擇正確的負載平衡器](https://www.youtube.com/watch?v=p0YZBF03r5A)
+ [AWS re:Inforce 2022 - 如何使用 Elastic Load Balancing 大規模增強您的安全狀態 (NIS203)](https://www.youtube.com/watch?v=YhNc5VSzOGQ)
+ [AWS re:Invent 2019：針對不同工作負載充分發揮 Elastic Load Balancing (NET407-R2)](https://www.youtube.com/watch?v=HKh54BkaOK0)

 **相關範例：** 
+ [使用 Amazon Athena 之日誌分析的 CDK 和 CloudFormation 範例](https://github.com/aws/elastic-load-balancing-tools/tree/master/log-analysis-elb-cdk-cf-template)

# PERF05-BP05 選擇網路通訊協定以提高效能
<a name="perf_select_network_protocols"></a>

評估您的工作負載的效能要求，並且選擇可最佳化您的工作負載整體效能的網路通訊協定。

實現輸送量的延遲和頻寬之間存在關係。例如，如果您的檔案傳輸使用傳輸控制協定 (TCP)，較高的延遲會降低整體輸送量。有一些方法可以使用 TCP 調校和最佳化的傳輸通訊協定來解決這個問題 (有些方法則會使用使用者資料包協定 (UDP))。

 [可擴展可靠資料包 (SRD)](https://ieeexplore.ieee.org/document/9167399) 通訊協定是 AWS 針對提供可靠資料包交付的 Elastic Fabric Adapter 所建置的網路傳輸通訊協定。與 TCP 通訊協定不同，SRD 可以重新排序封包並且不依序交付它們。SRD 的這個不依序交付機制會透過替代路徑平行傳送封包，增加輸送量。 

 **常見的反模式：** 
+  無論效能需求為何，都可以將 TCP 用於所有工作負載。 

 **建立此最佳實務的優勢：** 
+  為工作負載元件之間的通訊選擇適當的通訊協定，便可確保達到該工作負載的最佳效能。 
+  確認針對使用者與工作負載元件之間的通訊使用適當的通訊協定，可協助改善您的應用程式的整體使用者體驗。例如，藉由同時使用 TCP 和 UDP，VDI 工作負載可以針對關鍵資料利用 TCP 的可靠性，針對即時資料利用 UDP 的速度。 

 **未建立此最佳實務時的曝險等級：**中 (使用不適當的網路通訊協定會導致效能不佳，例如緩慢的回應時間、高延遲和可擴展性不佳) 

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

改善您的工作負載效能的主要考慮是了解延遲和輸送量要求，然後選擇可最佳化效能的網路通訊協定。

 **考慮使用 TCP 的時機** 

 TCP 提供可靠的資料交付，並且可用於可靠性和保證資料交付很重要的工作負載元件間通訊。許多 Web 式應用程式仰賴 TCP 型通訊協定，例如 HTTP 和 HTTPS，針對與 AWS 上的伺服器的通訊開啟 TCP 通訊端。電子郵件和檔案資料傳輸是也會使用 TCP 的常見應用程式，原因是 TCP 控制資料交換率和網路壅塞的能力。使用 TLS 與 TCP 會對通訊增加一些負擔，導致提高延遲和降低輸送量。負擔主要來自交握處理的增加負擔，需要數個往返才能完成。一旦交握完成，加密和解密資料的負擔相對小。 

 **考慮使用 UDP 的時機** 

 UDP 是無連線導向的通訊協定，因此適用於需要快速、有效傳輸的應用程式，例如日誌、監控和 VoIP 資料。此外，如果您有會回應來自大量用戶端之小型查詢的工作負載元件，請考慮使用 UDP，以確保最佳工作負載效能。資料包傳輸層安全性 (DTLS) 是等同於 TLS 的 UDP。使用 DTLS 與 UDP 時，負擔是來自加密和解密資料，因為交握處理已簡化。DTLS 也會對 UDP 封包增加小量負擔，因為它包含額外欄位以指出安全參數以及偵測竄改。 

 **考慮使用 SRD 的時機** 

 Scalable Reliable Datagram (SRD) 是針對高輸送量工作負載最佳化的網路傳輸通訊協定，因為它能夠在多個路徑之間負載平衡流量，並且快速從封包捨棄或連結失敗復原。因此 SRD 最適合用於需要運算節點之間高輸送量和低延遲通訊的高效能運算 (HPC) 工作負載。這可能包含平行處理任務，例如牽涉到在節點之間大量資料傳輸的模擬、建模和資料分析。 

 **實作步驟** 

1.  使用 [AWS Global Accelerator](https://aws.amazon.com/global-accelerator/) 和 [AWS Transfer Family](https://aws.amazon.com/aws-transfer-family/) 服務來改善您的線上檔案傳輸應用程式的輸送量。AWS Global Accelerator 服務可協助您達成用戶端裝置與 AWS 上工作負載之間的較低延遲。使用 AWS Transfer Family，您可以使用 TCP 型通訊協定，例如 Secure Shell File Transfer Protocol (SFTP) 和 File Transfer Protocol over SSL (FTPS)，安全地擴展和管理您對於 AWS 儲存服務的檔案傳輸。 

1.  使用網路延遲來判斷 TCP 是否適合工作負載元件之間的通訊。如果您的用戶端應用程式與伺服器之間的網路延遲高，則 TCP 三向交握會耗費一些時間，因此會影響您的應用程式的回應能力。例如到第一個位元組的時間 (TTFB) 和往返時間 (RTT) 等指標可用來測量網路延遲。如果您的工作負載為使用者提供動態內容的服務，請考慮使用 [Amazon CloudFront](https://aws.amazon.com/cloudfront/)，這會建立與每個動態內容來源的持久性連線，消除會減緩每個用戶端請求的連線設定時間。 

1.  使用 TLS 與 TCP 或 UDP 會由於加密和解密的影響，導致對您的工作負載增加延遲和減少輸送量。針對此類工作負載，請考慮 [Elastic Load Balancing](https://aws.amazon.com/elasticloadbalancing/) 上的 SSL/TLS 卸載，藉由允許負載平衡器處理 SSL/TLS 加密和解密程序而不是讓後端執行個體進行處理，來改善工作負載效能。這可協助減少後端執行個體上的 CPU 使用率，可以改善效能和增加容量。 

1.  使用 [Network Load Balancer (NLB)](https://aws.amazon.com/elasticloadbalancing/network-load-balancer/) 來部署依賴 UDP 通訊協定的服務，例如身分驗證和授權、記錄、DNS、IoT 和串流媒體，改善您的工作負載的效能和可靠性。NLB 會在多個目標之間分散傳入 UDP 流量，讓您水平地擴展工作負載、增加容量以及減少單一目標的負擔。 

1.  針對您的高效能運算 (HPC) 工作負載，請考慮使用[彈性網路介面卡 (ENA) 快速版](https://aws.amazon.com/about-aws/whats-new/2022/11/elastic-network-adapter-ena-express-amazon-ec2-instances/)功能，該功能使用 SRD 通訊協定來改善網路效能，方法是針對 EC2 執行個體之間的網路流量提供較高的單一流量頻寬 (25Gbps) 和較低的尾端延遲 (99.9 百分位數)。 

1.  使用 [Application Load Balancer (ALB)](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html) 來路由和負載平衡工作負載元件之間的 gRPC (遠端程序呼叫) 流量或已啟用 gRPC 的用戶端與服務之間的流量。gRPC 會使用 TCP 型 HTTP/2 通訊協定進行傳輸，並且提供如較輕網路足跡、壓縮、有效二進位序列化、支援多種語言和雙向串流的優點。 

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

 **相關文件：** 
+  [Amazon EBS - 最佳化的執行個體](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-optimized.html) 
+  [Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html) 
+  [Linux 上的 EC2 增強型聯網](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/enhanced-networking.html) 
+  [Windows 上的 EC2 增強型聯網](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/enhanced-networking.html) 
+  [EC2 置放群組](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html) 
+  [在 Linux 執行個體上啟用搭配彈性網路轉接器 (ENA) 的增強型聯網](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/enhanced-networking-ena.html) 
+  [Network Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/introduction.html) 
+  [AWS 的聯網產品](https://aws.amazon.com/products/networking/) 
+  [Transit Gateway](https://docs.aws.amazon.com/vpc/latest/tgw) 
+  [轉換到 Amazon Route 53 中以延遲為基礎的路由](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/TutorialTransitionToLBR.html) 
+  [VPC 端點](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints.html) 
+  [VPC Flow Logs](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html) 

 **相關影片：** 
+  [與 AWS 和混合 AWS 網路架構的連線 (NET317-R1)](https://www.youtube.com/watch?v=eqW6CPb58gs) 
+  [最佳化 Amazon EC2 執行個體的網路效能 (CMP308-R1)](https://www.youtube.com/watch?v=DWiwuYtIgu0) 
+ [調整您的雲端：改善應用程式的全球網路效能](https://www.youtube.com/watch?v=00ukhVcgWrs)
+ [使用 EFA 和 SRD 的應用程式擴展](https://pages.awscloud.com/HPC-Application-Scaling-with-Elastic-Fabric-Adapter-EFA-and-Scalable-Reliable-Datagram-SRD_2020_0004-CMP_OD.html)

 **相關範例：** 
+  [AWS Transit Gateway 和可擴展的安全解決方案](https://github.com/aws-samples/aws-transit-gateway-and-scalable-security-solutions) 
+  [AWS 聯網研討會](https://networking.workshop.aws/) 

# PERF05-BP06 根據網路要求選擇工作負載的位置
<a name="perf_select_network_location"></a>

評估資源置放的選項以減少網路延遲和提高輸送量，藉由減少頁面載入和資料傳輸時間來提供最佳的使用者體驗。

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

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

例如 Amazon EC2 執行個體的資源會放到 [AWS 區域](https://aws.amazon.com/about-aws/global-infrastructure/regions_az/)、[AWS Local Zones](https://aws.amazon.com/about-aws/global-infrastructure/localzones/)、[AWS Outposts](https://aws.amazon.com/outposts/) 或 [AWS Wavelength](https://aws.amazon.com/wavelength/) 區域內的可用區域。此位置的選取會影響來自指定使用者位置的網路延遲和輸送量。例如 [Amazon CloudFront](https://aws.amazon.com/cloudfront/) 和 [AWS Global Accelerator](https://aws.amazon.com/global-accelerator/) 的邊緣服務也可以用來改善網路效能，方法是在邊緣節點快取內容，或透過 AWS 全球網路為使用者提供工作負載的最佳路徑。

 **實作步驟** 

1.  根據下列關鍵元素，為您的部署選擇適當的 AWS 區域 或區域： 

   1.  **使用者所在的位置：**選擇靠近工作負載使用者的區域可確保降低使用工作負載時的延遲。

   1.  **資料所在位置：**對於資料密集型應用程式，資料傳輸的主要瓶頸是延遲。應用程式程式碼應盡可能接近資料予以執行。

   1.  **其他限制：**請考慮安全和合規等限制 (例如，資料落地要求)。

1.  針對指定工作負載，如果元件包含需要低延遲的獨立 Amazon EC2 執行個體群組，請考慮使用[叢集置放群組](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html)來影響這些執行個體的置放，符合工作負載的要求。相同叢集置放群組中的執行個體針對 TCP/IP 流量享有較高的單一流量輸送量限制，並且置放在網路的相同二分頻寬區段。建議將叢集置放群組用於受益於低網路延遲、高網路輸送量或兩者兼而有之的應用程式。 

1.  針對對於位置敏感的工作負載，例如具有低延遲或資料落低要求，請檢閱 [AWS Local Zones](https://aws.amazon.com/about-aws/global-infrastructure/localzones/) 或 [AWS Outposts](https://aws.amazon.com/outposts/)。 

   1.  AWS Local Zones 是一種基礎設施部署類型，將運算、儲存、資料庫和其他選取 AWS 服務放置靠近大型母體和產業中心。 

   1.  AWS Outposts 是一系列全受管解決方案，將 AWS 基礎設施和服務提供給幾乎任何內部部署或邊緣節點，以獲得真正的一致混合體驗。 

1.  例如高解析度即時影片串流、高保真度音訊和擴增實境/虛擬實境 (AR/VR) 的應用程式，需要 5G 裝置的極低延遲。針對此類應用程式，請考慮 [AWS Wavelength](https://aws.amazon.com/wavelength/)。AWS Wavelength 會將 AWS 運算及儲存服務嵌入 5G 網路，為開發、部署和擴展極低延遲應用程式提供行動裝置邊緣運算基礎設施。 

1.  如果您有地理上分散的使用者，可以使用內容分發網路 (CDN)，藉由透過散佈全球的連接點 (POP) 交付資料，來加速靜態和動態 Web 內容的分發。CDN 通常也會提供邊緣運算功能，執行對延遲敏感的操作，例如在邊緣的大規模 HTTP 標題操作和 URL 重新撰寫與重新導向。[Amazon CloudFront](https://aws.amazon.com/cloudfront/) 是 Web 服務，可加速您的靜態和動態 Web 內容的分發。CloudFront 的使用案例包括加速靜態網站內容交付和為隨需影片或即時串流影片提供服務。CloudFront 也可以用來以降低的延遲為觀眾自訂內容和體驗。 

1.  某些應用程式需要藉由減少第一個位元組延遲和抖動並且增加輸送量，來獲得固定的進入點或較高的效能。這些應用程式可以從在邊緣節點提供靜態任播 IP 地址和 TCP 終止的網路服務獲益。[AWS Global Accelerator](https://aws.amazon.com/global-accelerator/) 可以改善您的應用程式效能高達 60%，並且提供多區域架構的快速容錯移轉。AWS Global Accelerator 提供靜態任播 IP 地址，做為一或多個 AWS 區域 中託管應用程式的固定進入點。這些 IP 地址可讓流量傳入盡可能靠近您的使用者的 AWS 全球網路。AWS Global Accelerator 會藉由建立用戶端與最接近用戶端之 AWS 邊緣節點之間的 TCP 連線，減少初始連線設定時間。請檢閱 AWS Global Accelerator 的使用以改善您的 TCP/UDP 工作負載的效能，並且提供多區域架構的快速容錯移轉。 

1.  如果您有內部部署的應用程式或使用者，您可能會從具備網路與雲端之間的專用網路連線獲益。專用網路連線可以減少遇到壅塞或非預期增加延遲的機會。[AWS Direct Connect](https://aws.amazon.com/directconnect/) 可以藉由將您的網路直接連線到 AWS 並且略過公有網際網路，改善應用程式效能。建立新的連線時，您可以選擇 AWS Direct Connect 交付合作夥伴所提供的託管連線，或選擇 AWS 的專用連線並且在全球超過 100 個 AWS Direct Connect 位置部署。您也可以透過 AWS 的低資料傳輸費率，並且選擇性地針對容錯移轉設定 Site-to-Site VPN，降低您的網路成本。 

1.  如果您設定 [Site-to-Site VPN](https://aws.amazon.com/vpn/site-to-site-vpn/) 來連線到 AWS 內的資源，您可以選擇性地啟用加速。加速的 Site-to-Site VPN 連線會使用 AWS Global Accelerator 將來自您內部部署網路的流量，路由傳送到最靠近您的客戶閘道裝置的 AWS 邊緣節點。 

1.  藉由檢閱您的工作負載流量和使用者位置，識別哪個 DNS 路由選項可最佳化您的工作負載效能。[Amazon Route 53](https://aws.amazon.com/route53) 提供[以延遲為基礎的路由](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-policy-latency.html)、[地理位置路由](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-policy-geo.html)、[地理位置臨近性路由](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-policy-geoproximity.html)和[以 IP 為基礎的路由](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-policy-ipbased.html)選項，協助您提升全球對象的工作負載效能。 

   1.  Route 53 也為您的最終使用者提供低查詢延遲。使用全世界 DNS 伺服器的全球任播網路，Route 53 的設計目的是根據網路條件從最佳位置自動回應查詢。 

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

 **相關的最佳實務：** 
+ [COST07-BP02 根據成本實作區域](https://docs.aws.amazon.com/wellarchitected/latest/framework/cost_pricing_model_region_cost.html)
+ [COST08-BP03 實作可降低資料傳輸成本的服務](https://docs.aws.amazon.com/wellarchitected/latest/framework/cost_data_transfer_implement_services.html)
+ [REL10-BP01 將工作負載部署至多個位置](https://docs.aws.amazon.com/wellarchitected/latest/framework/rel_fault_isolation_multiaz_region_system.html)
+ [REL10-BP02 為您的多位置部署選取適當位置](https://docs.aws.amazon.com/wellarchitected/latest/framework/rel_fault_isolation_select_location.html)
+ [SUS01-BP01 選擇 Amazon 可再生能源專案附近的區域，以及電網公佈的碳強度低於其他位置 (或區域) 的區域](https://docs.aws.amazon.com/wellarchitected/latest/framework/sus_sus_region_a2.html)
+ [SUS02-BP04 針對使用者位置最佳化工作負載的地理位置](https://docs.aws.amazon.com/wellarchitected/latest/framework/sus_sus_user_a5.html)
+ [SUS04-BP07 將跨網路的資料移動降到最少](https://docs.aws.amazon.com/wellarchitected/latest/framework/sus_sus_data_a8.html)

 **相關文件：** 
+ [AWS 全球基礎設施](https://aws.amazon.com/about-aws/global-infrastructure/)
+ [AWS Local Zones 和 AWS Outposts，為您的邊緣工作負載選擇正確的技術](https://aws.amazon.com/blogs/compute/aws-local-zones-and-aws-outposts-choosing-the-right-technology-for-your-edge-workload/)
+  [置放群組](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html) 
+  [AWS Local Zones](https://aws.amazon.com/about-aws/global-infrastructure/localzones/) 
+  [AWS Outposts](https://aws.amazon.com/outposts/) 
+  [AWS Wavelength](https://aws.amazon.com/wavelength/) 
+  [Amazon CloudFront](https://aws.amazon.com/cloudfront/) 
+  [AWS Global Accelerator](https://aws.amazon.com/global-accelerator/) 
+  [AWS Direct Connect](https://aws.amazon.com/directconnect/) 
+  [Site-to-Site VPN](https://aws.amazon.com/vpn/site-to-site-vpn/) 
+  [Amazon Route 53](https://aws.amazon.com/route53) 

 **相關影片：** 
+ [AWS Local Zones 解說影片](https://www.youtube.com/watch?v=JHt-D4_zh7w)
+ [AWS Outposts：概觀和運作方式](https://www.youtube.com/watch?v=ppG2FFB0mMQ)
+ [AWS re:Invent 2021 - AWS Outposts：在內部部署環境帶來 AWS 體驗](https://www.youtube.com/watch?v=FxVF6A22498)
+ [AWS re:Invent 2020：AWS Wavelength：在 5G 邊緣以極低延遲執行應用程式](https://www.youtube.com/watch?v=AQ-GbAFDvpM)
+ [AWS re:Invent 2022 - AWS Local Zones：為分散的邊緣建置應用程式](https://www.youtube.com/watch?v=bDnh_d-slhw)
+ [AWS re:Invent 2021 - 使用 Amazon CloudFront 建置低延遲網站](https://www.youtube.com/watch?v=9npcOZ1PP_c)
+ [AWS re:Invent 2022 - 使用 AWS Global Accelerator 改善效能與可用性](https://www.youtube.com/watch?v=s5sjsdDC0Lg)
+ [AWS re:Invent 2022 - 使用 AWS 建置您的全球廣域網路](https://www.youtube.com/watch?v=flBieylTwvI)
+ [AWS re:Invent 2020：使用 Amazon Route 53 進行全球流量管理](https://www.youtube.com/watch?v=E33dA6n9O7I)

 **相關範例：** 
+ [AWS Global Accelerator 研討會](https://catalog.us-east-1.prod.workshops.aws/workshops/effb1517-b193-4c59-8da5-ce2abdb0b656/en-US)
+ [使用邊緣功能處理重新撰寫和重新導向](https://catalog.us-east-1.prod.workshops.aws/workshops/814dcdac-c2ad-4386-98d5-27d37bb77766/en-US)

# PERF05-BP07 根據指標最佳化網路組態
<a name="perf_select_network_optimize"></a>

不當的網路組態經常會影響網路效能、效率和成本。在常見網路環境中，為了在早期階段快速完成部署，在適當的網路組態方面不會完全考慮網路效能。若要最佳化您的網路組態，您必須先具有網路環境的相關可見性和資料。

若要了解您的網路資源如何執行，請收集和分析資料，以便對最佳化您的網路組態做出明智決策。測量這些變更的影響，並利用這些測量結果來做出未來的決策。

 **預期成果：**使用指標和網路監控工具，隨著工作負載演進來最佳化網路組態。雲端型網路可以快速最佳化，因此隨著時間演進您的網路架構是維持效能達成效率的必要條件。 

 **常見的反模式：** 
+  您假設所有效能相關問題都與應用程式有關。 
+  您只能從靠近已部署工作負載的位置測試網路效能。 
+  您針對所有網路服務使用預設組態。 
+  您過度佈建網路資源來提供足夠的容量。 

 **建立此最佳實務的優勢：**收集您的 AWS 網路的必要指標和實作網路監控工具，可讓您了解網路效能和最佳化網路組態。 

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

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

 監控往返 VPC、子網路或網路界面的流量，對於了解如何利用 AWS 網路資源和如何最佳化網路組態而言非常重要。藉由使用下列工具，您可以進一步檢查流量用量、網路存取和日誌的相關資訊。 

 **實作步驟** 

1.  使用 [Amazon VPC IP Address Manager](https://docs.aws.amazon.com/vpc/latest/ipam/what-it-is-ipam.html)。您可以使用 IPAM 來規劃、追蹤和監控您的 AWS 和內部部署工作負載的 IP 地址。這是您最佳化 IP 地址用量和分配的最佳實務。 

1.  開啟 [VPC 流程日誌](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html)。使用 VPC 流程日誌來擷取有關往返您的 VPC 中網路界面的詳細資訊。使用 VPC 流程日誌，您可以診斷過於嚴格或寬鬆的安全群組規則，並且判斷往返網路界面的流量方向。發佈流程日誌時，會收取自動售貨日誌的資料擷取和封存費用。 

1.  開啟 [DNS 查詢記錄](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/query-logs.html)。您可以設定 Amazon Route 53 來記錄 Route 53 所收到的公有或私有 DNS 查詢的相關資訊。使用 DNS 日誌，您可以藉由了解請求的網域或子網域或是回應 DNS 查詢的 Route 53 邊緣節點，最佳化 DNS 組態。 

1.  使用 [Reachability Analyzer](https://docs.aws.amazon.com/vpc/latest/reachability/what-is-reachability-analyzer.html) 來分析和偵錯網路連線能力。Reachability Analyzer 是組態分析工具，可讓您執行您的 VPC 中來源資源與目的地資源之間的連線能力測試。此工具可協助您確認您的組態符合您預期的連線能力。 

1.  使用[網路存取分析器](https://docs.aws.amazon.com/vpc/latest/network-access-analyzer/what-is-network-access-analyzer.html)以了解您的資源的網路存取。您可以使用網路存取分析器來指定您的網路存取要求，並識別未符合您的指定要求的潛在網路路徑。藉由最佳化您的對應網路組態，您可以了解及確認網路的狀態，並且示範 AWS 上的網路是否符合您的合規要求。 

1.  使用 [Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) 並且為網路選項啟用適當的指標。請確定為您的工作負載選擇正確的網路指標。例如，您可以啟用 VPC 網路地址用量、VPC NAT 閘道、AWS Transit Gateway、VPN 通道、AWS Network Firewall、Elastic Load Balancing 和 AWS Direct Connect 等指標。持續監控指標是觀察和了解您的網路狀態和用量的良好實務，並且可以協助您根據您的觀察來最佳化網路組態。 

 **實作計劃的工作量：**中 

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

 **相關文件：** 
+  [VPC Flow Logs](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html) 
+ [公有 DNS 查詢記錄](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/query-logs.html)
+ [什麼是 IPAM？](https://docs.aws.amazon.com/vpc/latest/ipam/what-it-is-ipam.html)
+  [什麼是 Reachability Analyzer？](https://docs.aws.amazon.com/vpc/latest/reachability/what-is-reachability-analyzer.html) 
+ [什麼是網路存取分析器？](https://docs.aws.amazon.com/vpc/latest/network-access-analyzer/what-is-network-access-analyzer.html)
+ [您的 VPC 的 CloudWatch 指標](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-cloudwatch.html)
+ [使用 Apache Parquet 格式的 VPC 流程日誌針對網路分析最佳化效能和降低成本](https://aws.amazon.com/blogs/big-data/optimize-performance-and-reduce-costs-for-network-analytics-with-vpc-flow-logs-in-apache-parquet-format/)
+  [使用 Amazon Cloudwatch 指標監控您的全球和核心網路](https://docs.aws.amazon.com/vpc/latest/tgwnm/monitoring-cloudwatch-metrics.html) 
+  [持續監控網路流量和資源](https://docs.aws.amazon.com/whitepapers/latest/security-best-practices-for-manufacturing-ot/continuously-monitor-network-traffic-and-resources.html) 

 **相關影片：** 
+ [搭配 Well-Architected Framework 的聯網最佳實務和秘訣](https://www.youtube.com/watch?v=wOMNpG49BeM)
+ [監控網路流量並對其進行疑難排解](https://www.youtube.com/watch?v=Ed09ReWRQXc)

 **相關範例：** 
+  [AWS 聯網研討會](https://networking.workshop.aws/) 
+  [AWS 網路監控](https://github.com/aws-samples/monitor-vpc-network-patterns) 

# 檢閱
<a name="a-review"></a>

**Topics**
+ [PERF 6  您如何發展工作負載，以運用新版本的優勢？](perf-06.md)

# PERF 6  您如何發展工作負載，以運用新版本的優勢？
<a name="perf-06"></a>

 架構工作負載時，可選擇的選項有限。但一段時間後會有可改善工作負載效能的新技術和方法推出。 

**Topics**
+ [PERF06-BP01 掌握最新的資源和服務](perf_continue_having_appropriate_resource_type_keep_up_to_date.md)
+ [PERF06-BP02 定義提高工作負載效能的程序](perf_continue_having_appropriate_resource_type_define_process.md)
+ [PERF06-BP03 隨時間提升工作負載效能](perf_continue_having_appropriate_resource_type_evolve.md)

# PERF06-BP01 掌握最新的資源和服務
<a name="perf_continue_having_appropriate_resource_type_keep_up_to_date"></a>

當新服務、設計模式和產品供應項目推出時，評估提升效能的方法。透過評估、內部討論或外部分析，確定哪些方法可以提高工作負載效能或效率。

定義程序來評估與工作負載相關的更新、新功能和服務。例如，建立使用新技術的概念證明或與內部小組協商。嘗試新的想法或服務時，執行效能測試以衡量其對工作負載效能的影響。使用基礎設施即程式碼 (IaC) 和 DevOps 文化，運用能力，以最少的成本和風險來頻繁測試新想法或技術。

 **預期成果：** 您已記錄組成部分、設計模式和工作負載特性的清單。您使用該文件來建立訂閱清單，以便向團隊通知服務的最新狀態、功能和新產品。您已確定組成部分的利害關係人，他們將會評估新版本並針對業務影響和優先要務提供建議。 

 **常見的反模式：** 
+  當工作負載不符合效能要求時，只審查新的選項和服務。 
+  您假設所有新產品供應項目對於工作負載都沒有幫助。 
+  改善工作負載時，您總是選擇建置而不是購買。 

 **建立此最佳實務的優勢：** 透過考量新服務或產品供應項目，您可以改善工作負載的效能和效率、降低基礎設施的成本，以及減少維護服務所需的工作量。

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

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

 定義程序來評估來自 AWS 的更新、新功能和服務。例如，建立使用新技術的概念證明。嘗試新的想法或服務時，執行效能測試以衡量對工作負載效率或效能的影響。利用您在 AWS 中具備的靈活性，以最少的成本或風險頻繁測試新的想法或技術。 

## 實作步驟
<a name="implementation-steps"></a>

1.  記錄工作負載解決方案。使用組態管理資料庫 (CMDB) 解決方案，來記錄清單並分類服務和相依性。使用 [AWS Config](https://aws.amazon.com/config/) 之類的工具，來取得在工作負載使用中 AWS 中的所有服務清單。

1.  使用 [標記策略](https://docs.aws.amazon.com/whitepapers/latest/tagging-best-practices/tagging-best-practices.html) 來記錄每個工作負載組成部分和類別的擁有者。例如，如果您目前使用 Amazon RDS 作為資料庫解決方案，請將資料庫管理員 (DBA) 指派為評估和研究新服務與更新的擁有者，並加以記錄。

1.  找出與工作負載組成部分相關的新聞和更新來源。在先前所提及的 Amazon RDS 範例中，類別擁有者應訂閱 [AWS 部落格的最新消息](https://aws.amazon.com/new/) 來了解與其工作負載組成部分相符的產品。您可以訂閱 RSS 摘要或管理 [電子郵件訂閱](https://pages.awscloud.com/communication-preferences.html)。監控對您使用的 Amazon RDS 資料庫所做的升級、導入的功能、發行的執行個體，以及 Amazon Aurora Serverless 之類新產品。掌握產業部落格、產品和生產組成部分的廠商動態。

1.  記錄您在評估更新和新服務的過程。向類別擁有者提供所需的時間和空間，來研究、測試、實驗和驗證更新及新服務。回顧所記錄的業務需求和 KPI，來協助排定哪個更新將帶來正面業務影響的優先順序。 

 **實作計劃的工作量：** 若要建立此最佳實務，您必須了解目前的工作負載組成部分、找出類別擁有者以及找出服務更新的來源。此作業所需的工作量不會很多，但會是一個持續的過程，可能會隨著時間發展和改善。 

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

 **相關文件：** 
+  [AWS 部落格](https://aws.amazon.com/blogs/) 
+  [AWS 最新消息](https://aws.amazon.com/new/?ref=wellarchitected) 

 **相關影片：** 
+  [AWS 活動 YouTube 頻道](https://www.youtube.com/channel/UCdoadna9HFHsxXWhafhNvKw) 
+  [AWS 線上技術會談 YouTube 頻道](https://www.youtube.com/user/AWSwebinars) 
+  [Amazon Web Services YouTube 頻道](https://www.youtube.com/channel/UCd6MoB9NC6uYN2grvUNT-Zg) 

 **相關範例：** 
+  [AWS Github](https://github.com/aws) 
+  [AWS Skill Builder](https://explore.skillbuilder.aws/learn) 

# PERF06-BP02 定義提高工作負載效能的程序
<a name="perf_continue_having_appropriate_resource_type_define_process"></a>

 定義一個程序，以在新的服務、設計模式、資源類型和組態可用時對其進行評估。例如，對新的執行個體方案執行現有的效能測試，以判斷其是否可能改善工作負載。 

 工作負載的效能有一些關鍵限制。記錄這些內容，以便您知道哪種創新可以改善工作負載的效能。當新服務或技術可用時，請使用此資訊來找出緩解限制或瓶頸的方法。 

 **常用的反模式：** 
+  您假設您目前的架構將變成靜態，而且永遠不會隨著時間更新。 
+  您會隨時間導入架構變更，而且無須指標佐證。 

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

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

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

 識別工作負載的關鍵效能限制：記錄工作負載的效能限制，讓您知道哪些類型的創新可能會改善工作負載的效能。 

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

 **相關文件：** 
+  [AWS 部落格](https://aws.amazon.com/blogs/) 
+  [AWS 最新消息](https://aws.amazon.com/new/?ref=wellarchitected) 

 **相關影片：** 
+  [AWS 活動 YouTube 頻道](https://www.youtube.com/channel/UCdoadna9HFHsxXWhafhNvKw) 
+  [AWS 線上技術會談 YouTube 頻道](https://www.youtube.com/user/AWSwebinars) 
+  [Amazon Web Services YouTube 頻道](https://www.youtube.com/channel/UCd6MoB9NC6uYN2grvUNT-Zg) 

 **相關範例：** 
+  [AWS Github](https://github.com/aws) 
+  [AWS Skill Builder](https://explore.skillbuilder.aws/learn) 

# PERF06-BP03 隨時間提升工作負載效能
<a name="perf_continue_having_appropriate_resource_type_evolve"></a>

 作為一個組織，使用評估過程中收集的資訊，在新服務或資源可用時主動推動採用。 

 在評估新的服務或技術以推動變更時，好好利用您收集的資訊。隨著業務或工作負載變化，效能需求也隨之變化。利用從工作負載指標收集的資料，來評估可獲得最大效率或效能效益的區域，並主動採用新的服務和技術來滿足需求。 

 **常用的反模式：** 
+  您假設您目前的架構將變成靜態，而且永遠不會隨著時間更新。 
+  您會隨時間導入架構變更，而且無須指標佐證。 
+  您會變更架構的原因就只是業界內的每個人都是採用此做法。 

 **建立此最佳實務的優勢：** 若要最佳化工作負載效能和成本，您必須評估所有可用的軟體和服務，以判斷適合工作負載的軟體和服務。 

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

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

 隨時間發展您的工作負載：在評估新的服務或技術以推動變更時，好好利用您收集的資訊。隨著業務或工作負載變化，效能需求也隨之變化。利用從工作負載指標收集的資料，來評估可達成最大效率或效能效益的區域，並主動採用新的服務和技術來滿足需求。 

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

 **相關文件：** 
+  [AWS 部落格](https://aws.amazon.com/blogs/) 
+  [AWS 最新消息](https://aws.amazon.com/new/?ref=wellarchitected) 

 **相關影片：** 
+  [AWS 活動 YouTube 頻道](https://www.youtube.com/channel/UCdoadna9HFHsxXWhafhNvKw) 
+  [AWS 線上技術會談 YouTube 頻道](https://www.youtube.com/user/AWSwebinars) 
+  [Amazon Web Services YouTube 頻道](https://www.youtube.com/channel/UCd6MoB9NC6uYN2grvUNT-Zg) 

 **相關範例：** 
+  [AWS Github](https://github.com/aws) 
+  [AWS Skill Builder](https://explore.skillbuilder.aws/learn) 

# 監控
<a name="a-monitoring"></a>

**Topics**
+ [PERF 7  您如何監控資源來確保達成預期效能？](perf-07.md)

# PERF 7  您如何監控資源來確保達成預期效能？
<a name="perf-07"></a>

 系統效能可能會隨時間降低。監控系統效能以識別效能降低情況，並修復內部或外部因素，如作業系統或應用程式負載。 

**Topics**
+ [PERF07-BP01 記錄效能相關指標](perf_monitor_instances_post_launch_record_metrics.md)
+ [PERF07-BP02 分析事件或事故發生時的指標](perf_monitor_instances_post_launch_review_metrics.md)
+ [PERF07-BP03 建立用於測量工作負載效能的關鍵績效指標 (KPI)](perf_monitor_instances_post_launch_establish_kpi.md)
+ [PERF07-BP04 使用監控來產生警示型通知](perf_monitor_instances_post_launch_generate_alarms.md)
+ [PERF07-BP05 定期審查指標](perf_monitor_instances_post_launch_review_metrics_collected.md)
+ [PERF07-BP06 主動監控和警示](perf_monitor_instances_post_launch_proactive.md)

# PERF07-BP01 記錄效能相關指標
<a name="perf_monitor_instances_post_launch_record_metrics"></a>

 使用監控和可觀察性服務來記錄效能相關指標。指標範例包括記錄資料庫交易、慢速查詢、I/O 延遲、HTTP 請求輸送量、服務延遲或其他關鍵資料。 

 確定對您的工作負載重要的效能指標並進行記錄。此資料是能夠識別哪些元件會影響整體效能或工作負載效率的重要部分。 

 從客戶體驗出發，確定重要指標。對於每個指標，確定目標、測量方法和優先級。使用它們來建置警示和通知，以主動解決與效能相關的問題。 

 **常用的反模式：** 
+  您只需監控作業系統層級指標，以深入了解工作負載。 
+  您會架構運算需求，以滿足尖峰工作負載要求。 

 **建立此最佳實務的優勢：** 若要最佳化效能和資源利用率，您需要取得關鍵績效指標的整合操作檢視。您可以建立儀表板，並對資料進行指標計算，以獲得操作和使用率的洞見。 

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

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

 確定與您的工作負載相關的效能指標並進行記錄。此資料有助於識別哪些元件會影響整體效能或工作負載效率。 

 識別效能指標：使用客戶體驗來識別最重要的指標。對於每個指標，確定目標、測量方法和優先級。使用這些資料點來建置警示和通知，以主動解決與效能相關的問題。 

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

 **相關文件：** 
+  [CloudWatch 文件](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) 
+  [使用 CloudWatch Agent 從 Amazon EC2 執行個體和內部部署伺服器收集指標和日誌](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Install-CloudWatch-Agent.html?ref=wellarchitected) 
+  [發佈自訂指標](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/publishingMetrics.html?ref=wellarchitected) 
+  [監控、記錄和效能 APN 合作夥伴](https://aws.amazon.com/devops/partner-solutions/#_Monitoring.2C_Logging.2C_and_Performance) 
+  [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) 

 **相關影片：** 
+  [突破混沌的難題：掌握運作相關的情況和洞見 (MGT301-R1)](https://www.youtube.com/watch?v=nLYGbotqHd0) 
+  [AWS 上的應用程式效能管理](https://www.youtube.com/watch?v=5T4stR-HFas&ref=wellarchitected) 
+  [制定監控計劃](https://www.youtube.com/watch?v=OMmiGETJpfU&ref=wellarchitected) 

 **相關範例：** 
+  [Level 100：使用 CloudWatch 儀表板進行監控](https://wellarchitectedlabs.com/performance-efficiency/100_labs/100_monitoring_with_cloudwatch_dashboards/) 
+  [Level 100：使用 CloudWatch 儀表板監控 Windows EC2 執行個體](https://wellarchitectedlabs.com/performance-efficiency/100_labs/100_monitoring_windows_ec2_cloudwatch/) 
+  [Level 100：使用 CloudWatch 儀表板監控 Amazon Linux EC2 執行個體](https://wellarchitectedlabs.com/performance-efficiency/100_labs/100_monitoring_linux_ec2_cloudwatch/) 

# PERF07-BP02 分析事件或事故發生時的指標
<a name="perf_monitor_instances_post_launch_review_metrics"></a>

 為回應事件或事故 (或在事件或事故期間)，使用監控儀表板或報告來了解和診斷影響。這些檢視可讓您深入了解工作負載的哪些部分未如預期執行。 

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

 **常用的反模式：** 
+  您假設效能事件是一次性問題，而且只與異常有關。 
+  只有在回應效能事件時，才會評估現有效能指標。 

 **建立此最佳實務的優勢：** 在判斷工作負載是否如預期效能運作時，您必須收集其他指標資料來分析，以回應效能事件。此資料用於了解效能事件的影響，並建議提升工作負載效能的變更。 

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

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

 優先考慮關鍵使用者案例的體驗問題：在為架構編寫關鍵使用者案例時，應包括效能需求，例如指定每個關鍵案例應執行的速度。對於這些關鍵案例，實作額外執行指令碼的使用者之旅，以確保您了解這些使用者案例會如何根據您的要求予以執行。 

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

 **相關文件：** 
+  [CloudWatch 文件](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) 
+  [Amazon CloudWatch Synthetics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Canaries.html) 
+  [監控、記錄和效能 APN 合作夥伴](https://aws.amazon.com/devops/partner-solutions/#_Monitoring.2C_Logging.2C_and_Performance) 
+  [X-Ray 文件](https://docs.aws.amazon.com/xray/latest/devguide/aws-xray.html) 

 **相關影片：** 
+  [突破混沌的難題：掌握運作相關的情況和洞見 (MGT301-R1)](https://www.youtube.com/watch?v=nLYGbotqHd0) 
+  [透過 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) 

# PERF07-BP03 建立用於測量工作負載效能的關鍵績效指標 (KPI)
<a name="perf_monitor_instances_post_launch_establish_kpi"></a>

 識別定量和定性衡量工作負載效能的 KPI。KPI 有助於測量工作負載的運作狀態，因為其與業務目標相關。KPI 允許業務和工程團隊在衡量目標和策略時，以及如何將其結合以產生業務成果方面保持一致。當業務目標、策略或最終使用者要求變更時，應該重新檢視 KPI。   

 例如，網站工作負載可能使用頁面載入時間，做為整體效能的指示。此指標將是衡量最終使用者體驗的多個資料點之一。除了識別頁面載入時間閾值外，您還應該記錄未符合效能時預期的成果或業務風險。頁面載入時間若很長，將會直接影響您的最終使用者、降低其使用者體驗評分，並可能導致客戶流失。當您定義 KPI 閾值時，請同時結合業界基準和最終使用者期望。例如，如果目前業界基準是網頁在兩秒內載入，但您的最終使用者期望網頁在一秒內載入，則您在建立 KPI 時應將這兩個資料點列入考慮。另一個 KPI 範例可能專注於符合內部效能需求。可能根據在產生了生產資料後的一個工作日內產生銷售報告來建立 KPI 閾值。這些報告可能直接影響每日決策和業務成果。  

 **預期成果：** 建立 KPI 涉及不同的部門和利害關係人。您的團隊必須使用即時精密資料和歷史資料來評估您的工作負載 KPI，以供參考，並建立儀表板，針對您的 KPI 資料執行指標數學，以衍生營運和使用率見解。KPI 應該加以記錄，說明已同意支援業務目標和策略的 KPI 和閾值，以及對應到受監控的指標。KPI 會識別效能要求，刻意進行審查，以及經常與所有團隊分享並使其理解。清楚地識別風險和取捨，並了解未符合 KPI 閾值時業務會受到何種影響。 

 **常用的反模式：** 
+  您只監控系統層級指標，以洞悉工作負載，但不了解對這些指標的業務影響。 
+  您假設 KPI 已發佈，並做為標準指標資料分享。 
+  定義 KPI 但未與所有團隊分享它們。 
+  未定義一個量化的可衡量 KPI。 
+  未使 KPI 與業務目標或策略保持一致。 

 

 **建立此最佳實務的優勢：** 識別代表工作負載運作狀態的特定指標有助於使團隊在其優先事項上保持一致，並定義成功的業務成果。與所有部門分享這些指標可對閾值、期望和業務影響提供可見性和一致性。 

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

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

 受工作負載運成狀態影響的所有部門和業務團隊都應為定義 KPI 做出貢獻。單一人員應該推動協同合作、時間軸、文件，以及與組織 KPI 相關的資訊。這個單一執行緒擁有者通常會分享業務目標和策略，並指派利害關係人任務，在其各自部門中建立 KPI。一旦定義了 KPI，營運團隊通常就會協助定義將支援和告知不同 KPI 成功的指標。僅當支援工作負載的所有團隊成員都意識到 KPI 時，KPI 才有效。 

 **實作步驟** 

1.  識別並記錄利害關係人。 

1.  識別公司目標和策略。 

1.  審查符合貴公司目標和策略的常見業界 KPI。 

1.  審查工作負載的最終使用者期望。 

1.  定義並記錄支援公司目標和策略的 KPI。 

1.  識別並記錄核准的取捨策略以符合 KPI。 

1.  識別並記錄將告知 KPI 的指標。 

1.  識別並記錄嚴重性或警示等級的 KPI 閾值。 

1.  識別並記錄未符合 KPI 時的風險和影響。 

1.  識別每個 KPI 的審查頻率。 

1.  與支援工作負載的所有團隊交流 KPI 文件。 

** 實作指引的工作量：** 定義和交流 KPI 是 *低* 工作量。這通常可以透過在幾週內與業務利害關係人會面、審查目標、策略和工作負載指標來完成。

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

 **相關文件：** 
+ [CloudWatch 文件 ](http://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) 
+  [監控、記錄和效能 APN 合作夥伴](https://aws.amazon.com/devops/partner-solutions/#_Monitoring.2C_Logging.2C_and_Performance) 
+ [X-Ray 文件 ](https://docs.aws.amazon.com/xray/latest/devguide/aws-xray.html) 
+  [使用 Amazon CloudWatch 儀表板](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Dashboards.html?ref=wellarchitected) 
+  [Quick KPI](https://docs.aws.amazon.com/quicksight/latest/user/kpi.html) 

 **相關影片：** 
+  [AWS re:Invent 2019：擴充至首個 1,000 萬名使用者 (ARC211-R)](https://www.youtube.com/watch?v=kKjm4ehYiMs&ref=wellarchitected) 
+  [突破混沌的難題：掌握運作相關的情況和洞見 (MGT301-R1)](https://www.youtube.com/watch?v=nLYGbotqHd0&ref=wellarchitected) 
+  [制定監控計劃](https://www.youtube.com/watch?v=OMmiGETJpfU&ref=wellarchitected) 

 

 **相關範例：** 
+  [使用 Quick 建立儀表板](https://github.com/aws-samples/amazon-quicksight-sdk-proserve) 

# PERF07-BP04 使用監控來產生警示型通知
<a name="perf_monitor_instances_post_launch_generate_alarms"></a>

 使用監控系統和您定義的效能相關關鍵績效指標 (KPI)，當這些測量結果超出預期範圍時自動產生警示。 

 Amazon CloudWatch 可以收集架構中各種資源的指標。您還可以收集和發佈自訂指標以顯示業務或衍生指標。使用 CloudWatch 或第三方監控服務來設定警示，以在超過閾值時進行指示 — 指標超出預期邊界時發出警示。 

 **常用的反模式：** 
+  您需要靠員工監控指標，並在他們發現問題時做出反應。 
+  當可以觸發無伺服器工作流程來完成相同的任務時，您僅倚賴操作執行手冊作業。 

 **建立此最佳實務的優勢：** 您可以根據預先定義的閾值或機器學習演算法，來設定提醒並自動化動作，確定指標中的異常行為。這些警示也可以觸發無伺服器的工作流程，藉以修改工作負載的效能特性 (例如，增加運算容量、修改資料庫組態)。 

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

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

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

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

 **相關文件：** 
+  [CloudWatch 文件](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) 
+  [監控、記錄和效能 APN 合作夥伴](https://aws.amazon.com/devops/partner-solutions/#_Monitoring.2C_Logging.2C_and_Performance) 
+  [X-Ray 文件](https://docs.aws.amazon.com/xray/latest/devguide/aws-xray.html) 
+  [使用 CloudWatch 中的警示和警示動作](https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/cw-example-using-alarm-actions.html) 

 **相關影片：** 
+  [AWS re:Invent 2019：擴充至首個 1,000 萬名使用者 (ARC211-R)](https://www.youtube.com/watch?v=kKjm4ehYiMs&ref=wellarchitected) 
+  [突破混沌的難題：掌握運作相關的情況和洞見 (MGT301-R1)](https://www.youtube.com/watch?v=nLYGbotqHd0&ref=wellarchitected) 
+  [制定監控計劃](https://www.youtube.com/watch?v=OMmiGETJpfU&ref=wellarchitected) 
+  [搭配 Amazon CloudWatch Events 使用 AWS Lambda](https://www.youtube.com/watch?v=WDBD3JmpLqs) 

 **相關範例：** 
+  [Cloudwatch Logs 自訂警示](https://github.com/awslabs/cloudwatch-logs-customize-alarms) 

# PERF07-BP05 定期審查指標
<a name="perf_monitor_instances_post_launch_review_metrics_collected"></a>

 作為日常維護或對事件或事故的回應，審查收集了哪些指標。透過這些審查來確定哪些指標是解決問題的關鍵，以及哪些其他指標 (如果被追蹤) 將有助於識別、解決或預防問題。 

 作為對事故或事件的回應的一部分，評估哪些指標有助於解決問題，哪些指標可以幫助解決問題但未被追蹤。使用此方法提高所收集指標的品質，從而可以防止事故發生或更快地解決將來的事故。 

 **常用的反模式：** 
+  您讓指標長時間持續處於警示狀態。 
+  您建立自動化系統無法採取行動的警示。 

 **建立此最佳實務的優勢：** 持續審查正在收集的指標，以確保指標正確識別、處理或防止問題發生。如果讓指標長時間持續處於警示狀態，指標也會變得過時。 

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

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

 不斷改進指標收集和監控：作為對事故或事件的回應的一部分，評估哪些指標有助於解決問題，哪些指標可以幫助解決問題但未被追蹤。使用此方法提高所收集指標的品質，從而可以防止事故發生或更快地解決將來的事故。 

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

 **相關文件：** 
+  [CloudWatch 文件](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) 
+  [使用 CloudWatch Agent 從 Amazon EC2 執行個體和內部部署伺服器收集指標和日誌](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Install-CloudWatch-Agent.html?ref=wellarchitected) 
+  [監控、記錄和效能 APN 合作夥伴](https://aws.amazon.com/devops/partner-solutions/#_Monitoring.2C_Logging.2C_and_Performance) 
+  [X-Ray 文件](https://docs.aws.amazon.com/xray/latest/devguide/aws-xray.html) 

 **相關影片：** 
+  [突破混沌的難題：掌握運作相關的情況和洞見 (MGT301-R1)](https://www.youtube.com/watch?v=nLYGbotqHd0) 
+  [AWS 上的應用程式效能管理](https://www.youtube.com/watch?v=5T4stR-HFas&ref=wellarchitected) 
+  [制定監控計劃](https://www.youtube.com/watch?v=OMmiGETJpfU&ref=wellarchitected) 

 **相關範例：** 
+  [使用 Quick 建立儀表板](https://github.com/aws-samples/amazon-quicksight-sdk-proserve) 
+  [Level 100：使用 CloudWatch 儀表板進行監控](https://wellarchitectedlabs.com/performance-efficiency/100_labs/100_monitoring_with_cloudwatch_dashboards/) 

# PERF07-BP06 主動監控和警示
<a name="perf_monitor_instances_post_launch_proactive"></a>

 使用關鍵績效指標 (KPI) 搭配監控和提醒系統，主動處理效能相關的問題。使用警示觸發自動化動作，盡可能修復問題。如果無法自動回應，則將警示上報給能夠回應的人員。例如，您可能有一個可以預測關鍵績效指標 (KPI) 預期值並在超過特定閾值時發出警示的系統，或者在 KPI 超出預期值時可以自動停止或回復部署的工具。 

 實作可在工作負載執行時提供效能可見度的程序。建置監控儀表板並建立效能預期的基準規範，以確定工作負載是否以最佳狀態執行。 

 **常用的反模式：** 
+  您只讓操作人員有能力對工作負載進行操作變更。 
+  您讓所有警示篩選到操作團隊，無須主動修復。 

 **建立此最佳實務的優勢：** 主動修復警示動作能夠讓支援人員專注在無法自動採取行動的項目上。如此可確保操作人員不會負荷所有警報，而僅專注於關鍵警報。 

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

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

 在營運過程中監控效能：實作可在工作負載執行時提供效能可見度的程序。建立監控儀表板，並建立效能期望的基準。 

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

 **相關文件：** 
+  [CloudWatch 文件](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) 
+  [監控、記錄和效能 APN 合作夥伴](https://aws.amazon.com/devops/partner-solutions/#_Monitoring.2C_Logging.2C_and_Performance) 
+  [X-Ray 文件](https://docs.aws.amazon.com/xray/latest/devguide/aws-xray.html) 
+  [使用 CloudWatch 中的警示和警示動作](https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/cw-example-using-alarm-actions.html) 

 **相關影片：** 
+  [突破混沌的難題：掌握運作相關的情況和洞見 (MGT301-R1)](https://www.youtube.com/watch?v=nLYGbotqHd0) 
+  [AWS 上的應用程式效能管理](https://www.youtube.com/watch?v=5T4stR-HFas&ref=wellarchitected) 
+  [制定監控計劃](https://www.youtube.com/watch?v=OMmiGETJpfU&ref=wellarchitected) 
+  [搭配 Amazon CloudWatch Events 使用 AWS Lambda](https://www.youtube.com/watch?v=WDBD3JmpLqs) 

 **相關範例：** 
+  [Cloudwatch Logs 自訂警示](https://github.com/awslabs/cloudwatch-logs-customize-alarms) 

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

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

# PERF 8  您如何採用權衡來增進效能？
<a name="perf-08"></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="w2aac19c13c13b5b6c17"></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/) 