

# PERF02-BP05 動態擴展運算資源
<a name="perf_compute_hardware_scale_compute_resources_dynamically"></a>

 為滿足需求，請使用雲端的彈性，來動態擴充或縮減運算資源，並避免為工作負載佈建過多或過少的容量。 

 **常見的反模式：** 
+  您可以手動增加容量，對警示做出反應。 
+  您使用與內部部署相同的大小準則 (通常是靜態基礎結構)。 
+  您在擴展事件之後維持增加容量，而不是縮減規模。 

 **建立此最佳實務的優勢：** 設定和測試運算資源的彈性，可協助您節省成本、維持效能基準，並隨著流量變化改善可靠性。 

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

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

 AWS 透過各種擴展機制，讓您能夠彈性動態擴充或縮減資源，以因應需求的變化。動態擴展與運算相關指標結合，讓工作負載能夠自動回應變更，並使用最佳的運算資源集來達成其目標。 

 您可以使用多種不同的方法達到資源的供需平衡。 
+  **目標追蹤法：**：監控擴展指標，並視需要自動增加或減少容量。
+  **預測擴展**：根據預測每日和每週趨勢進行擴展。
+  **排程法**：根據可預測的負載變更來設定您自己的擴展排程。
+  **服務擴展**：選擇可根據設計自動擴展的服務 (例如無伺服器)。

 您必須確保工作負載部署可以同時處理擴展和縮減事件。 

### 實作步驟
<a name="implementation-steps"></a>
+  運算執行個體、容器和函數提供了彈性機制，可能是與自動調整規模功能結合使用，或是作為服務功能提供。以下是自動擴展機制的幾個範例：     
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/wellarchitected/2023-10-03/framework/perf_compute_hardware_scale_compute_resources_dynamically.html)
+  我們常將擴展與 Amazon EC2 執行個體或 AWS Lambda 函數等運算服務一起討論。請務必同時考慮非運算服務的組態，例如， [AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/auto-scaling.html) ，以符合需求。 
+  確認用於擴展的指標符合要部署之工作負載的特性。如果您要部署影片轉碼應用程式，則預期為 100% CPU 使用率，且不應做為您的主要指標。請改用轉碼任務佇列的深度。您可以將 [自訂指標](https://aws.amazon.com/blogs/mt/create-amazon-ec2-auto-scaling-policy-memory-utilization-metric-linux/) 用於擴展政策 (如有必要)。若要選擇正確的指標，請考量 Amazon EC2 的下列指引： 
  +  指標應為有效的使用率指標，並說明執行個體的忙碌程度。 
  +  指標值必須根據 Auto Scaling 群組中的執行個體數量按比例增加或減少。 
+  請確定您使用的是 [動態擴展](https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-scale-based-on-demand.html) 而非 [手動擴展](https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-manual-scaling.html) 處理您的 Auto Scaling 群組。我們也建議您將 [目標追蹤擴展政策](https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-scaling-target-tracking.html) 用於動態擴展中。 
+  確認工作負載部署可同時處理擴展事件 (擴充和縮減)。例如，您可以使用 [活動歷史](https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-verify-scaling-activity.html) 來確認 Auto Scaling 群組的擴展活動。 
+  評估工作負載以取得可預測模式，並在預計發生預測中的變化和隨需規劃變化時主動擴展。透過預測擴展，可以避免過度佈建容量的需求。如需詳細資訊，請參閱 [Amazon EC2 Auto Scaling 的預測擴展](https://aws.amazon.com/blogs/compute/introducing-native-support-for-predictive-scaling-with-amazon-ec2-auto-scaling/)。 

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

 **相關文件：** 
+  [使用 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 執行個體的處理器狀態控制](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/processor_state_control.html) 
+  [深入探討 Amazon ECS 叢集 Auto Scaling](https://aws.amazon.com/blogs/containers/deep-dive-on-amazon-ecs-cluster-auto-scaling/) 
+  [介紹 Karpenter - 一個開放原始碼的高效能 Kubernetes Cluster Autoscaler](https://aws.amazon.com/blogs/aws/introducing-karpenter-an-open-source-high-performance-kubernetes-cluster-autoscaler/) 

 **相關影片：** 
+  [Amazon EC2 基礎](https://www.youtube.com/watch?v=kMMybKqC2Y0) 
+  [更好、更快、更便宜的運算：成本最佳化 Amazon EC2](https://www.youtube.com/watch?v=_dvh4P2FVbw) 
+  [最佳化 AWS 運算的效能和成本](https://www.youtube.com/watch?v=zt6jYJLK8sg) 
+  [支援下一代 Amazon EC2：深入探討 Nitro 系統](https://www.youtube.com/watch?v=rUY-00yFlE4) 
+  [打造兼具成本、能源和資源優勢的運算環境](https://www.youtube.com/watch?v=8zsC5e1eLCg) 

 **相關範例：** 
+  [Amazon EC2 Auto Scaling 群組範例](https://github.com/aws-samples/amazon-ec2-auto-scaling-group-examples) 
+  [使用 Karpenter 實作自動擴展](https://www.eksworkshop.com/beginner/085_scaling_karpenter/) 