SUS02-BP01 動態擴展工作負載基礎架構 - AWS Well-Architected 架構

SUS02-BP01 動態擴展工作負載基礎架構

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

常見的反模式:

  • 您不隨著使用者負載擴展基礎架構。

  • 您一律手動擴展基礎架構。

  • 您在擴展事件之後維持增加容量,而不是縮減規模。

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

未建立此最佳實務時的風險暴露等級:

實作指引

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

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

您可以使用多種不同的方法達到資源的供需平衡。

  • 目標追蹤法:監控您的擴展指標,並視需要自動增加或減少容量。

  • 預測擴展:縮減每日和每週趨勢的預期。

  • 排程法:根據可預測的負載變化設定您自己的擴展排程。

  • 服務擴展: 挑選按設計原本就會擴展的服務 (例如無伺服器),或提供自動擴展功能。

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

實作步驟

  • 彈性會比對您擁有的資源供應與這些資源的需求。執行個體、容器和函數提供了彈性機制,可與自動擴展功能結合使用,或是作為服務功能提供。AWS 提供了多種自動擴展機制,以確保工作負載可在使用者負載較低時迅速輕易地縮減規模。以下是自動擴展機制的幾個範例:

    Auto scaling mechanism Where to use

    Amazon EC2 Auto Scaling

    用來確認您擁有正確數量的 Amazon EC2 執行個體可處理應用程式的使用者負載。

    Application Auto Scaling

    用來自動將個別 AWS 服務的資源擴展到 Amazon EC2 以外,例如 Lambda 函數或 Amazon Elastic Container Service (Amazon ECS) 服務。

    Kubernetes Cluster Autoscaler

    用來自動擴展 AWS 上的 Kubernetes 叢集。

  • 擴展常與 Amazon EC2 執行個體或 AWS Lambda 函數等服務一起討論。請考慮設定非運算服務 (例如 Amazon DynamoDB 讀取和寫入容量單位或 Amazon Kinesis Data Streams 碎片) 以符合需求。

  • 確認會對要部署的工作負載類型驗證擴充或縮減規模的指標。如果您要部署影片轉碼應用程式,則預期為 100% CPU 使用率,且不應做為您的主要指標。您可以將自訂指標 (例如記憶體使用率) 用於擴展政策 (如有必要)。若要選擇正確的指標,請考量 Amazon EC2 的下列指引:

    • 指標應為有效的使用率指標,並說明執行個體的忙碌程度。

    • 指標值必須根據 Auto Scaling 群組中的執行個體數量按比例增加或減少。

  • 對於 Auto Scaling 群組請使用動態擴展,而非手動擴展。我們也建議您在動態擴展中使用目標追蹤擴展政策

  • 確認工作負載部署可處理橫向擴展和縮減事件。建立縮減事件的測試案例,以確認工作負載的行為符合預期,且不會對使用者體驗造成影響 (例如失去黏性工作階段)。您可以使用活動歷史來驗證 Auto Scaling 群組的擴展活動。

  • 評估工作負載以取得可預測模式,並在預計發生預測中的變化和隨需規劃變化時主動擴展。透過預測擴展,可以避免過度佈建容量的需求。如需詳細資訊,請參閱 Amazon EC2 Auto Scaling 的預測擴展

資源

相關文件:

相關影片:

相關範例: