

# COST09-BP03 動態提供資源
<a name="cost_manage_demand_resources_dynamic"></a>

 資源是按計畫進行佈建。這可以是以需求為基礎 (例如，透過自動調整規模)，或是以時間為基礎，其中需求可預測，並且根據時間提供資源。這些方法可儘量減少過度佈建或佈建不足的數量。 

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

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

您可以使用 [AWS Auto Scaling](https://aws.amazon.com/autoscaling/)，或使用 [AWS API 或 SDK](https://aws.amazon.com/developer/tools/)。透過消除手動變更環境所需的營運成本，這可讓您降低整體工作負載成本，而且執行速度更快。這可確保工作負載資源隨時都能最符合需求。

**需求為主的供應：** 利用雲端的彈性來供應資源，以滿足不斷變化的需求。藉由取得 API 或服務功能帶來的優勢，以程式設計方式動態性地更動架構中的雲端資源量。如此可允許您增減架構中元件的規模，需求激增時自動增加資源數量以維持效能，待需求消退時減少容量以降低成本。

[AWS Auto Scaling](https://aws.amazon.com/autoscaling/) 可協助您調整容量，以盡可能最低的成本維持穩定、可預測的效能。它是免費的全受管服務，與 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體和 Spot 叢集、Amazon Elastic Container Service (Amazon ECS)、Amazon DynamoDB 和 Amazon Aurora 整合。

Auto Scaling 提供自動資源探索，以協助尋找工作負載中可設定的資源，它具有內建的擴展策略以優化效能、成本或兩者之間的平衡，並提供預測擴展以協助處理定期發生的尖峰。

Auto Scaling 可以實作手動、排程或以需求為基礎的擴展。您也可以使用 [Amazon CloudWatch](https://aws.amazon.com/cloudwatch/) 的指標和警示，來觸發工作負載的擴展事件。典型的指標可以是標準 Amazon EC2 指標，例如 CPU 使用率、網路輸送量和 [Elastic Load Balancing (ELB) ](https://aws.amazon.com/elasticloadbalancing/)觀察到的請求/回應延遲。可能時，您應該使用可指示客戶體驗的指標，通常此指標為自訂指標，可能源自您工作負載內的應用程式程式碼。

以需求為主的方法進行建構時，請牢記兩大考量要點。第一，了解必須多迅速地佈建起新的資源。第二，了解供應與需求之間差距的大小會改變。您必須隨時因應需求的改變速度，並為資源失敗做好準備。

[ELB](https://aws.amazon.com/elasticloadbalancing/) 可跨多個資源分配需求以協助您進行擴展。當您實作更多資源時，您可將其新增至負載平衡器以接受需求。Elastic Load Balancing 具有 Amazon EC2 執行個體、容器、IP 地址和 AWS Lambda 函數的支援。

**時間為主的供應：** 時間為主方法能使資源容量符合可預測或依照時間定義完善的需求。這種方法通常不依存於資源的利用率。時間為主方法能確保需要資源的特定時間有資源可用，並且因為啟動程序和系統或一致性檢查的緣故，能在毫無延遲之下提供。採用時間為主方法，您可在忙碌期提供更多資源或增加容量。

您可以使用排程的 Auto Scaling 實作時間為主方法。可排定工作負載於定義的時間縮放規模 (例如在營業時段開始時) 如此可確保使用者或者需求到來時有資源可用。

您也可善用 [AWS API 和 SDK](https://aws.amazon.com/developer/tools/) 和 [AWS CloudFormation](https://aws.amazon.com/cloudformation/) 以視需要自動佈建整個環境以及除役。這種方法十分適合僅在定義的營業時段或時期執行的開發或測試環境。

您可使用 API 縮放環境之內的資源大小 (垂直縮放)。例如，可變更執行個體的大小或類別，以擴展生產工作負載。作法是將執行個體停止再啟動，選擇不同的執行個體大小或類別。此技法亦可套用至其他資源，例如 Amazon Elastic Block Store (Amazon EBS) Elastic Volumes，在使用中時經過修改可增加大小、調整效能 (IOPS) 或變更磁碟區類型。

以時間為主的方法進行建構時，請牢記兩大考量要點。首先，用量模式的一致性有多高？ 第二，若是模式改變會有何影響？ 您可藉由監控工作負載和使用商業智慧來提高預測的準確性。若看出用量模式有明顯變化，可調整時間以確保涵蓋。

**實作步驟**
+ ** 設定以時間為基礎的排程： **針對可預測的需求變更，以時間為基礎的擴展機制可以及時提供正確的資源數目。此外，當資源建立和設定的速度不夠快，不足以回應隨需變更時，此機制也能派上用場。透過 AWS Auto Scaling，使用工作負載分析來設定排定的擴展。
+ ** 設定 Auto Scaling： **若要根據作用中的工作負載指標來設定擴展，請使用 Amazon Auto Scaling。使用分析和設定 Auto Scaling 以便在正確的資源層級上觸發，並確保工作負載在所需時間內擴展。

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

 **相關文件：** 
+  [AWS Auto Scaling](https://aws.amazon.com/autoscaling/) 
+  [AWS Instance Scheduler](https://aws.amazon.com/answers/infrastructure-management/instance-scheduler/) 
+  [Amazon EC2 Auto Scaling 入門](https://docs.aws.amazon.com/autoscaling/ec2/userguide/GettingStartedTutorial.html) 
+  [Amazon SQS 入門](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-getting-started.html) 
+  [Amazon EC2 Auto Scaling 的排程擴展](https://docs.aws.amazon.com/autoscaling/ec2/userguide/schedule_time.html) 