"このコンテンツは古いものです。現在、このバージョンの Well-Architected Framework は、次の場所にあります。 https://docs.aws.amazon.com/ja_jp/wellarchitected/2022-03-31/framework/performance-efficiency.html

PERF 2: コンピューティングソリューションはどのように選択するのですか?

ワークロードにとって最適なコンピューティングソリューションは、アプリケーションの設計、使用パターン、設定に応じて異なります。各アーキテクチャでは、コンポーネントごとに異なるコンピューティングソリューションが使用される可能性があるため、パフォーマンスを向上させるための機能も異なります。アーキテクチャに不適切なコンピューティングソリューションを選択すると、パフォーマンス効率が低下する可能性があります。

リソース

Amazon EC2 foundations (CMP211-R2)
Powering next-gen Amazon EC2: Deep dive into the Nitro system
Deliver high performance ML inference with AWS Inferentia (CMP324-R1)
Optimize performance and cost for your AWS compute (CMP323-R1)
Better, faster, cheaper compute: Cost-optimizing Amazon EC2 (CMP202-R1)
Cloud Compute with AWS
EC2 Instance Types
Processor State Control for Your EC2 Instance
EKS Containers: EKS Worker Nodes
ECS Containers: Amazon ECS Container Instances
Functions: Lambda Function Configuration

ベストプラクティス:

改善計画

使用可能なコンピューティングオプションを評価する

  • コンピューティングオプションを検討する: どのコンピューティングオプションが要件に合致するかを判断してください。パフォーマンスの観点から、インスタンスは、長期間実行されるアプリケーション、特にステートフルで長期間実行されるコンピューティングサイクルのアプリケーションに使用できます。関数は、応答時間を短くする必要があるイベント起動型のステートレスアプリケーションに使用できます。コンテナでは、インスタンスのリソースを効率的に使用できるようになります。
    Cloud Compute with AWS
  • コンピューティングパフォーマンスの要件を決定する: ワークロードにとって重要なコンピューティングパフォーマンスのメトリクスを特定し、ベンチマークや負荷テストを採り入れたデータ駆動型のアプローチを使用して、その要件を実装します。このデータを使用してコンピューティングソリューションの制約が発生している場所を特定し、そのソリューションを改善する設定オプションを調べてください。
  • 利用可能なコンピューティング設定オプションについて理解する

  • 利用可能な設定オプションを確認する: 選択したコンピューティングオプションについて、パフォーマンス要件を満たすように利用可能な設定オプションを最適化してください。AWS Nitro System を活用してホストハードウェアのコンピューティングリソースとメモリリソースを最大限に消費できるようにします。専用の Nitro Card によって、高速ネットワーク、高速 EBS、および I/O アクセラレーションが可能になります。
    AWS Nitro System
  • コンピューティング関連のメトリクスを収集する

  • コンピューティング関連のメトリクスを収集する: Amazon CloudWatch では、環境内のコンピューティングリソース全体のメトリクスを収集できます。CloudWatch とその他のメトリクス記録ツールの組み合わせを使用して、ワークロード内のシステムレベルのメトリクスを追跡します。CPU 使用率、メモリ、ディスク I/O、ネットワークなどのデータを記録し、使用状況レベルやボトルネックを把握します。このデータは、ワークロードのパフォーマンスやワークロードのリソース使用効率を理解するために不可欠です。これらのメトリクスをデータ駆動型のアプローチの一部として使用し、ワークロードのリソースを積極的に調整および最適化します。
    Amazon CloudWatch
  • 適切なサイジングによって必要な設定を決定する

  • ワークロード設定を変更して適切なサイズにする: パフォーマンスと全体的な効率性の両方を最適化するには、ワークロードに必要なリソースを特定します。CPU よりもメモリを必要とするシステムの場合は、メモリ最適化されたインスタンスを選択します。メモリ負荷の高くないデータ処理を実行するコンポーネントの場合は、コンピューティング最適化されたインスタンスを選択します。適切なサイジングを行うことで、ワークロードが要求されたリソースのみを使用しながら、可能な限り最高のパフォーマンスを達成することが可能になります。
  • 利用可能な伸縮性のあるリソースを使用する

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

  • データ駆動型のアプローチを使用してリソースを最適化する: パフォーマンスと効率性を最大限に高めるには、時間の経過に伴ってワークロードから収集したデータを使用してリソースを調整および最適化します。ワークロードの現在のリソース使用状況におけるトレンドを調べて、ワークロードのニーズにより適合させるために変更を加えることができる場所を特定します。リソースが過剰に使用されると、システムのパフォーマンスが低下します。その一方で、リソースの使用率が低いと、リソースの使用効率が低下し、コストがより高くなります。