

# 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/) 