PERF02-BP05 利用可能な伸縮性のあるリソースを使用する
クラウドは、需要の変化に対応するためのさまざまなメカニズムを通じて、リソースを動的に拡張または縮小する柔軟性を提供します。この伸縮性をコンピューティング関連のメトリクスと組み合わせることによって、ワークロードは変更に自動的に対応して、必要なリソースのみを使用することができます。
一般的なアンチパターン:
-
予想されるスパイクに対応するためにオーバープロビジョニングする。
-
アラームに対応するために手動でキャパシティーを増やす。
-
プロビジョニングにかかる時間を考慮に入れずにキャパシティーを増やす。
-
スケーリングイベントの後、スケールダウンして元に戻すのではなく、キャパシティーを増加させたままにする。
-
ワークロードの実際の要件を直接反映していないメトリクスをモニタリングする。
このベストプラクティスを活用するメリット: 需要は、一定である場合も、変動する場合も、あるパターンに従う場合も、スパイクが発生しやすい場合もあります。需要と供給をマッチングすることで、ワークロードのコストを最低限に抑えることができます。ワークロードの伸縮性をモニタリング、テスト、設定することで、需要の変化に応じてパフォーマンス最適化、コスト低減、信頼性の向上を実現できます。これに対して手動で対応するアプローチも可能であるとはいえ、大規模な場合は非実用的です。自動化したメトリクスベースのアプローチを採用することで、どの時点でもリソースが確実に需要を満たすようにすることができます。
このベストプラクティスを確立しない場合のリスクレベル: 中
実装のガイダンス
リソースの供給が、ワークロードが求めるリソースの需要とマッチすることを目標に、伸縮性を活用するために、メトリクスベースのオートメーションを使用する必要があります。例えば、リソースのモニタリングに Amazon CloudWatch メトリクス
コンピューティング関連のメトリクスと組み合わせることによって、ワークロードは自動的に変化に対応し、最適な一連のリソースを利用して目標を達成できるようになります。プロビジョニングにかかる時間と予想されるリソース障害を考慮に入れて計画を策定する必要があります。
インスタンス、コンテナ、関数には、伸縮性のためのメカニズムがあり、サービスの一部として、Application Auto Scaling
デプロイされているワークロードのタイプに対して、伸縮自在なリソースのスケールアップまたはスケールダウンのメトリクスが検証されていることを確認します。例えば、動画トランスコーディングアプリケーションをデプロイする場合、CPU 使用率は 100% となることが想定されるため、主要なメトリクスにするべきではありません。代替手段として、インスタンスタイプのスケーリングを待機しているトランスコーディングジョブのキューの深さに対して測定することができます。
ワークロードのデプロイは、スケールアップとスケールダウンの両方のイベントに対処できる必要があります。ワークロードコンポーネントを安全にスケールダウンすることは、需要があるときにリソースをスケールアップするのと同じくらい重要です。
スケーリングイベントのテストシナリオを作成して、ワークロードが期待どおりに動作することを確認します。
実装手順
-
履歴データを活用して、経時的なワークロードのリソース需要を分析します。以下のような具体的な事項を検討します。
-
ワークロードは安定しており、経時的に既知の割合で増加しているか。
-
ワークロードは、季節的な繰り返しのパターンで増減しているか。
-
ワークロードはスパイクが発生しやすいか。 スパイクは予想したり予測したりできるか。
-
-
モニタリングサービスと履歴データを可能な限り活用します。
-
リソースにタグ付けすると、モニタリングに役立ちます。タグを使用する場合は、「Tagging Best Practices (タグ付けのベストプラクティス)」を参照してください。また、タグを使用すると、リソースの管理、特定、整理に役立ちます。
-
AWS では、さまざまなアプローチで需要と供給を一致させることができます。コスト最適化の柱のベストプラクティス (COST09-BP01~COST09-03) では、以下のアプローチを採用してコストを低減する方法について説明しています。
-
スケールダウンイベントのテストシナリオを作成して、ワークロードが期待どおりに動作することを確認します。
-
本稼働用以外のほとんどのインスタンスは、使用されていないときに停止するべきです。
-
Amazon Elastic Block Store (Amazon EBS) を使用する場合のストレージのニーズについては、ボリュームベースの伸縮性を活用します。
-
Amazon Elastic Compute Cloud (Amazon EC2)
については、Auto Scaling グループの使用を検討してください。これにより、需要のスパイク発生時にコンピューティングインスタンスの数を自動的に増やし、需要の減少時にキャパシティーを減らして、パフォーマンスとコストを最適化できます。
リソース
関連するベストプラクティス:
関連するドキュメント:
関連動画:
-
Amazon EC2 foundations (CMP211-R2)
(Amazon EC2 の基礎 (CMP211-R2)) -
Better, faster, cheaper compute: Cost-optimizing Amazon EC2 (CMP202-R1)
(より良く、より速く、より安価なコンピューティング: Amazon EC2 でのコストの最適化 (CMP202-R1)) -
Deliver high performance ML inference with AWS Inferentia (CMP324-R1)
(AWS Inferentia を使用して高パフォーマンスの機械学習推論を実現する (CMP324-R1)) -
Optimize performance and cost for your AWS compute (CMP323-R1)
(AWS コンピューティングのパフォーマンスとコストを最適化する) -
Powering next-gen Amazon EC2: Deep dive into the Nitro system
(次世代 EC2 の強化: Nitro System の詳細)
関連する例: