

# PERF 2  您如何選取運算解決方案？
<a name="w2aac19c11b5b7"></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>

 分析工作負載的各種效能特性，以及這些特性與記憶體、網路和 CPU 使用量的關係。使用此資料，可以選擇最適合您工作負載描述檔的資源。例如，執行個體的 R 系列可以為記憶體密集型工作負載 (例如資料庫) 提供最佳服務。不過，高載工作負載從彈性容器系統中獲益的程度更高。 

 **常用的反模式：** 
+  您可以選擇可用於所有工作負載的最大型執行個體。 
+  您可以將所有執行個體類型標準化為一種類型，以方便管理。 

 **建立此最佳實務的優勢：** 如果熟悉 AWS 運算方案，您可以為各種工作負載確定合適的解決方案。為工作負載選擇各種運算方案後，您就可以靈活快速地試驗這些運算方案，以判斷哪些方案符合工作負載需求。 

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

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

 透過適當調整大小來修改工作負載組態：若要同時最佳化效能和整體效率，請判斷工作負載所需的資源。對於比起 CPU 需要更多記憶體的系統，選擇記憶體優化的執行個體；或者為那些不耗用太多記憶體的資料處理元件，選擇運算優化的執行個體。適當調整大小可以讓您的工作負載在發揮出色效能的同時僅使用所需資源 

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

 **相關文件：** 
+  [AWS Compute Optimizer](https://aws.amazon.com/compute-optimizer/)  
+  [使用 AWS 進行雲端運算](https://aws.amazon.com/products/compute/) 
+  [EC2 執行個體類型](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html) 
+  [ECS 容器：Amazon ECS 容器執行個體](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_instances.html) 
+  [EKS 容器：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) 
+  [EC2 執行個體的處理器狀態控制](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/processor_state_control.html) 

 **相關影片：** 
+  [Amazon EC2 基礎 (CMP211-R2)](https://www.youtube.com/watch?v=kMMybKqC2Y0) 
+  [更好、更快、更便宜的運算：成本優化 Amazon EC2 (CMP202-R1)](https://www.youtube.com/watch?v=_dvh4P2FVbw) 
+  [使用 AWS Inferentia (CMP324-R1) 提供高效能 ML 推斷](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>

 雲端提供的彈性可透過各種機制來動態擴展或減少資源，以滿足需求的變化。結合與運算相關的指標，工作負載可以自動回應變更，並使用最佳資源集來實現其目標。 

 讓供需達到最佳相符，將工作負載的成本降到最低，但您還需規劃充分的供應，為佈建時間和個別資源失敗而預留。需求可為固定或可變，需要指標和自動化，以確保該項管理不致構成明顯的大量比例失衡成本。 

 搭配 AWS，您可以使用各種不同的方法使供需相符。成本優化支柱白皮書說明如何使用下列方法來計算成本： 
+  需求為主方法 
+  緩衝為主方法 
+  時間為主方法 

 您必須確保工作負載部署可以同時處理擴展和縮減事件。建立縮減事件的測試案例，以確保工作負載如預期般運作。 

 **常用的反模式：** 
+  您可以手動增加容量，對警示做出反應。 
+  您在擴展事件之後維持增加容量，而不是縮減規模。 

 **建立此最佳實務的優勢：** 設定和測試工作負載彈性將有助於節省金錢、維護性能基準，以及在流量變更時提高可靠性。大多數非生產執行個體在未使用時應該予以停止。雖然可以手動關閉未使用的執行個體，但這種做法在較大規模下不切實際。您也可以利用以磁碟區為基礎的彈性，透過在需求高峰期間自動增加運算執行個體數量，並在需求減少時減少容量，藉此最佳化效能和成本。 

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

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

 利用彈性：彈性會比對您擁有的資源供應與這些資源的需求。執行個體、容器和函數提供了彈性機制，可能是與自動調整規模功能結合使用，或是作為服務功能提供。利用架構中的彈性，以確保您有足夠的容量滿足所有使用規模的效能需求。確保針對要部署的工作負載類型來驗證擴展或縮減彈性資源的指標。如果您要部署影片轉碼應用程式，則預期為 100% CPU 使用率，且不應做為您的主要指標。或者，您可以針對等待擴展執行個體類型的轉碼任務的佇列深度，來進行測量。確定針對要部署的工作負載類型驗證擴展或縮減彈性資源的指標。安全地縮減工作負載元件，與在必要時擴展資源一樣重要。建立縮減事件的測試案例，以確保工作負載如預期般運作。 

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

 **相關文件：** 
+  [使用 AWS 進行雲端運算](https://aws.amazon.com/products/compute/) 
+  [EC2 執行個體類型](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html) 
+  [ECS 容器：Amazon ECS 容器執行個體](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_instances.html) 
+  [EKS 容器：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) 
+  [EC2 執行個體的處理器狀態控制](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/processor_state_control.html) 

 **相關影片：** 
+  [Amazon EC2 基礎 (CMP211-R2)](https://www.youtube.com/watch?v=kMMybKqC2Y0) 
+  [更好、更快、更便宜的運算：成本優化 Amazon EC2 (CMP202-R1)](https://www.youtube.com/watch?v=_dvh4P2FVbw) 
+  [使用 AWS Inferentia (CMP324-R1) 提供高效能 ML 推斷](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>

 使用資料驅動的方法來優化資源：為了獲得最佳效能和效率，使用從工作負載中收集一段時間的資料來調整和優化資源。查看工作負載中當前資源的使用趨勢，並確定可以在何處進行變更以更好地滿足工作負載的需求。當資源過量使用時，系統效能會降低，而利用率不足則會導致資源使用效率低下和成本增加。 

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

 **相關文件：** 
+  [使用 AWS 進行雲端運算 ](https://aws.amazon.com/products/compute/?ref=wellarchitected) 
+  [AWS Compute Optimizer](https://aws.amazon.com/compute-optimizer/) 
+  [使用 AWS 進行雲端運算](https://aws.amazon.com/products/compute/) 
+  [EC2 執行個體類型](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html) 
+  [ECS 容器：Amazon ECS 容器執行個體](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_instances.html) 
+  [EKS 容器：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) 
+  [EC2 執行個體的處理器狀態控制](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/processor_state_control.html) 

 **相關影片：** 
+  [Amazon EC2 基礎 (CMP211-R2)](https://www.youtube.com/watch?v=kMMybKqC2Y0) 
+  [更好、更快、更便宜的運算：成本優化 Amazon EC2 (CMP202-R1)](https://www.youtube.com/watch?v=_dvh4P2FVbw) 
+  [使用 AWS Inferentia (CMP324-R1) 提供高效能 ML 推斷](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) 

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