

# PERF02-BP05 利用可能な伸縮性のあるリソースを使用する
<a name="perf_select_compute_elasticity"></a>

 クラウドは、需要の変化に対応するためのさまざまなメカニズムを通じて、リソースを動的に拡張または縮小する柔軟性を提供します。コンピューティング関連のメトリクスと組み合わせることによって、ワークロードは自動的に変化に対応し、最適な一連のリソースを利用して目標を達成できるようになります。 

 均衡の取れた需要と供給はワークロードコストを最小限に抑えますが、プロビジョニングの時間と個々のリソース障害に対応するために十分な供給を計画する必要もあります。需要は固定的である場合と変動する場合があるため、管理が負担になったり、不相応に多額なコストがかからないようにするためにも、メトリクスと自動化が必要になります。 

 AWS では、さまざまなアプローチで需要と供給を一致させることができます。コスト最適化の柱のホワイトペーパーでは、コストに関して以下のアプローチを使用する方法が説明されています。 
+  需要ベースのアプローチ 
+  バッファーベースのアプローチ 
+  時間ベースのアプローチ 

 ワークロードのデプロイメントで、確実にスケールアップおよびスケールダウンイベントを対処できるようにしてください。スケールダウンイベントのテストシナリオを作成して、ワークロードが期待どおりに動作することを確認します。 

 **一般的なアンチパターン:** 
+  アラームに対応するために手動でキャパシティーを増やす。 
+  スケーリングイベントの後、スケールダウンして元に戻すのではなく、キャパシティーを増加させたままにする。 

 **このベストプラクティスを活用するメリット:** ワークロードの伸縮性を設定してテストすることで、トラフィックの変化に応じたコストの削減、パフォーマンスベンチマークの維持、信頼性の向上を実現できます。本稼働用以外のほとんどのインスタンスは、使用されていないときに停止するべきです。未使用のインスタンスを手動でシャットダウンすることは可能ですが、大規模な場合は実用的ではありません。また、ボリュームベースの伸縮性を活用することもできます。これにより、需要の急上昇時にコンピューティングインスタンスの数を自動的に増やし、需要の減少時にキャパシティーを減らすことによって、パフォーマンスとコストを最適化できます。 

 **このベストプラクティスを活用しない場合のリスクレベル:** 中 

## 実装のガイダンス
<a name="implementation-guidance"></a>

 伸縮性を活用する: 伸縮性は、持っているリソースの供給を、それらのリソースに対する需要と一致させます。インスタンス、コンテナ、関数のいずれにも、伸縮性の仕組みが備わっています。サービスの機能として実装されている場合も、自動スケーリングと組み合わせて実現する場合もあります。アーキテクチャの伸縮性を活用して、あらゆる規模のパフォーマンス要件を満たすために十分なキャパシティーを確保してください。伸縮自在なリソースのスケールアップまたはスケールダウンのメトリクスが、デプロイされているワークロードのタイプに対して検証されていることを確認します。動画トランスコーディングアプリケーションをデプロイしようとする場合、100% の CPU 使用率が想定されるため、プライマリメトリクスにするべきではありません。代替手段として、インスタンスタイプのスケーリングを待機しているトランスコーディングジョブのキューの深さに対して測定することができます。ワークロードのデプロイメントがスケールアップおよびスケールダウンイベントの両方に対処できることを確実にします。ワークロードコンポーネントを安全にスケールダウンすることは、需要があるときにリソースをスケールアップするのと同じくらい重要です。スケールダウンイベントのテストシナリオを作成して、ワークロードが期待どおりに動作することを確認します。 

## リソース
<a name="resources"></a>

 **関連ドキュメント:** 
+  [AWS を使用したクラウドコンピューティング](https://aws.amazon.com/products/compute/) 
+  [EC2 インスタンスタイプ](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html) 
+  [ECS コンテナ: Amazon ECS コンテナインスタンス](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_instances.html) 
+  [EKS コンテナ: 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) 
+  [EC2 インスタンスのプロセッサのステート制御](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/processor_state_control.html) 

 **関連動画:** 
+  [Amazon EC2 foundations (CMP211-R2)](https://www.youtube.com/watch?v=kMMybKqC2Y0) 
+  [Better, faster, cheaper compute: Cost-optimizing Amazon EC2 (CMP202-R1)](https://www.youtube.com/watch?v=_dvh4P2FVbw) 
+  [Deliver high performance ML inference with AWS Inferentia (CMP324-R1)](https://www.youtube.com/watch?v=17r1EapAxpk) 
+  [Optimize performance and cost for your AWS compute (CMP323-R1)](https://www.youtube.com/watch?v=zt6jYJLK8sg) 
+  [Powering next-gen Amazon EC2: Deep dive into the Nitro system](https://www.youtube.com/watch?v=rUY-00yFlE4) 

 **関連サンプル:** 
+  [Amazon EC2 Auto Scaling グループの例](https://github.com/aws-samples/amazon-ec2-auto-scaling-group-examples) 
+  [Amazon EFS のチュートリアル](https://github.com/aws-samples/amazon-efs-tutorial) 