

# SUS02-BP01 動態擴展工作負載基礎設施
<a name="sus_sus_user_a2"></a>

使用雲端的彈性並動態擴展您的基礎設施，以達到雲端資源的供需平衡，避免工作負載出現過度佈建的容量。

**常見的反模式：**
+ 您不隨著使用者負載擴展基礎設施。
+ 您一律手動擴展基礎設施。
+ 您在擴展事件之後維持增加容量，而不是縮減規模。

 **建立此最佳實務的優勢：**設定並測試工作負載彈性有助於有效達到雲端資源的供需平衡，並避免過度佈建的容量。您可以利用雲端中的彈性，在需求尖峰期間或之後自動擴展容量，以確保您使用的資源數量正好足以滿足業務所需。

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

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

 雲端提供的彈性可透過各種機制來動態擴展或減少資源，以滿足需求的變化。平衡供需關係可將工作負載受到的影響降到最低。

 需求可為固定或可變，需要指標和自動化以確保該項管理不致成為繁重的工作。應用程式可藉由修改執行個體大小進行垂直調整 (縱向擴展或縮減規模)、藉由修改執行個體數目進行水平調整 (縮減或橫向擴展)，或進行兩者的合併調整。

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

 辨別使用率低或無使用率的時期，並調整資源規模以移除過剩容量、提高效率。

## 實作步驟
<a name="implementation-steps"></a>
+ 彈性會比對您擁有的資源供應與這些資源的需求。執行個體、容器和函數提供了彈性機制，可與自動擴展功能結合使用，或是作為服務功能提供。AWS 提供了多種自動擴展機制，以確保工作負載可在使用者負載較低時迅速輕易地縮減規模。以下是自動擴展機制的幾個範例：    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/wellarchitected/latest/framework/sus_sus_user_a2.html)
+  我們常將擴展與 Amazon EC2 執行個體或 AWS Lambda 函數等運算服務一起討論。請考慮設定非運算服務 (例如 [Amazon DynamoDB](https://aws.amazon.com/dynamodb/) 讀取和寫入容量單位或 [Amazon Kinesis Data Streams](https://aws.amazon.com/kinesis/data-streams/) 碎片) 以符合需求。
+  確認會對要部署的工作負載類型驗證擴充或縮減規模的指標。如果您要部署影片轉碼應用程式，則預期為 100% CPU 使用率，且不應做為您的主要指標。您可以將[自訂指標](https://aws.amazon.com/blogs/mt/create-amazon-ec2-auto-scaling-policy-memory-utilization-metric-linux/) (例如記憶體使用率) 用於擴展政策 (如有必要)。若要選擇正確的指標，請考量 Amazon EC2 的下列指引：
  +  指標應為有效的使用率指標，並說明執行個體的忙碌程度。
  +  指標值必須與 Auto Scaling 群組中的執行個體數成比例增加或減少。
+  對於 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)。我們也建議您在動態擴展中使用[目標追蹤擴展政策](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 群組的擴展活動。
+  評估工作負載以取得可預測模式，並在預計發生預測中的變化和隨需規劃變化時主動擴展。透過預測性擴展，可以消除過度佈建容量的需求。如需詳細資訊，請參閱 [Predictive Scaling with 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>

 **相關文件：**
+  [Amazon EC2 Auto Scaling 入門](https://docs.aws.amazon.com/autoscaling/ec2/userguide/GettingStartedTutorial.html) 
+  [EC2 的預測擴展，採用機器學習技術](https://aws.amazon.com/blogs/aws/new-predictive-scaling-for-ec2-powered-by-machine-learning/) 
+  [使用 Amazon OpenSearch Service、Amazon Data Firehose 和 Kibana 分析使用者行為](https://aws.amazon.com/blogs/database/analyze-user-behavior-using-amazon-elasticsearch-service-amazon-kinesis-data-firehose-and-kibana/) 
+  [什麼是 Amazon CloudWatch？](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) 
+  [在 Amazon RDS 上使用 Performance Insights 監控資料庫負載](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.html) 
+  [介紹對於 Amazon EC2 Auto Scaling 預測擴展的原生支援](https://aws.amazon.com/blogs/compute/introducing-native-support-for-predictive-scaling-with-amazon-ec2-auto-scaling/) 
+  [介紹 Karpenter - 一個開放原始碼的高效能 Kubernetes Cluster Autoscaler](https://aws.amazon.com/blogs/aws/introducing-karpenter-an-open-source-high-performance-kubernetes-cluster-autoscaler/) 
+  [深入探討 Amazon ECS 叢集自動擴展](https://aws.amazon.com/blogs/containers/deep-dive-on-amazon-ecs-cluster-auto-scaling/) 

 **相關影片：**
+ [AWS re:Invent 2023 - 針對前 1000 萬個使用者在 AWS 上進行擴展](https://www.youtube.com/watch?v=JzuNJ8OUht0)
+ [AWS re:Invent 2023 - 永續架構：過去、現在和未來](https://www.youtube.com/watch?v=2xpUQ-Q4QcM)
+  [AWS re:Invent 2022 - 建置具成本、能源和資源效率的運算環境](https://www.youtube.com/watch?v=8zsC5e1eLCg) 
+ [AWS re:Invent 2022 - 將容器從一個使用者擴展到數百萬名使用者](https://www.youtube.com/watch?v=hItHqzKoBk0)
+ [AWS re:Invent 2023 - 使用 Amazon SageMaker AI 將 FM 推論擴展到數百種模型](https://www.youtube.com/watch?v=6xENDvgnMCs)
+ [AWS re:Invent 2023 - 利用 Karpenter 的力量來擴展、最佳化和升級 Kubernetes](https://www.youtube.com/watch?v=lkg_9ETHeks)

 **相關範例：**
+ [ 自動擴展](https://www.eksworkshop.com/docs/autoscaling/)