Amazon Web Services(AWS)でアプリケーションをホストする場合、最も重要な決定を下す必要があるのは、どのAmazon Elastic Compute クラウド(EC2)インスタンス・タイプを選択するかということです。EC2インスタンスは、AWSでアプリケーションを実行できる仮想マシンです。インスタンス・ファミリーと呼ばれるさまざまなサイズと構成があり、それぞれが特定の目的のために設計されています。アプリケーションに適したインスタンス製品とインスタンス・サイズを選択することは、パフォーマンスを最適化し、コストを削減するために非常に重要です。しかし、アプリケーションごとに需要プロファイルが固有であり、時間とともに変化する可能性もあるため、この作業は言うほど簡単ではありません。特定のファミリーの2xlargeインスタンスは必ずしも必要ではない場合があります。しかし、アプリケーションチームがクラウド運用に稼働時間維持を求めると、より大きく高コストなインスタンスが魅力的に映りがちです――クラウド費用が膨れ上がるまでは。
このブログ記事では、アプリケーションに最適なAmazon EC2インスタンス・タイプを選択する際の課題を探り、適切な決定を下すためのベスト・プラクティスをいくつか紹介します。さらに、IBM Turbonomicのようなソリューションが、機械学習、auto-scaling、オートメーションを使用してAWSクラウド・アプリの適正化にどのように役立つかについても説明します。Turbonomicに精通していて、今すぐAWS環境の最適化を開始したい場合は、30日間の無料トライアルを始めましょう。
EC2インスタンスは、CPU、メモリー、ストレージ、ネットワーク容量などの特性に基づいて分類されます。各インスタンス・タイプは、汎用コンピューティング、メモリー集約型アプリケーション、計算集約型タスクなど、特定のワークロードに最適化されるように設計されています。EC2インスタンス・タイプとその主なユースケースの例をいくつか示します。
アプリケーションに適したEC2インスタンスタイプを選択することは、困難な作業となる場合があります。直面する可能性のある課題のいくつかを次に示します。
最適なEC2インスタンスの選択に関する最も一般的な課題を理解できたところで、次は当社のクライアントやパートナーの皆様にお勧めするベスト・プラクティスをいくつか紹介します。
適切なEC2インスタンス・タイプを選択する際の最初の最も重要なステップは、ワークロードを理解することです。アプリケーションごとに、CPU、メモリー、ネットワーク、ストレージの要件が異なるため、アプリケーションをスムーズに動作させるためには、何が必要かを知ることが欠かせません。
例えば、データベース・アプリケーションを実行している場合、クエリーを効率的に処理するために大量のRAMが必要になる場合があります。一方、計算集約型のアプリケーションを実行している場合は、高性能なCPUが必要になる場合があります。
ワークロードをより深く理解するために、AWS CloudWatchやサードパーティの監視ソリューションなどのツールを使用して、リソースの使用率に関するデータを収集できます。さらに、このデータを使用して、アプリケーションに最適なインスタンス・タイプを決定できます。
CPUはEC2インスタンスの処理能力を決定するため、EC2インスタンスの最もクリティカルなコンポーネントの1つです。アプリケーションで高いCPUパフォーマンスが必要な場合は、CPU数とクロック速度が高いインスタンス・タイプを探す必要があります。
AWSはC5、M5、R5ファミリーなど、高性能のコンピューティング・ワークロード向けに設計されたCPU最適化インスタンス・タイプ(ibm.com外部へのリンク)を多数提供しています。これらのインスタンスは最新世代のカスタムビルドAWS Graviton3(ibm.com外部へのリンク)プロセッサー(Graviton2への大幅なアップグレード)を搭載し、高いCPU利用率を必要とするアプリケーションに最適化されています。ただし、アプリケーションに高いCPUパフォーマンスが必要ない場合は、T3ファミリーなど、GPUを備えずCPU数が少ない安価なインスタンス・タイプを選択できます。
メモリーも、EC2インスタンスのクリティカルなコンポーネントの1つです。インスタンスが一度に処理できるデータ量を決定するからです。アプリケーションに大量のメモリーを必要とする場合は、より大きなメモリー容量を備えたインスタンス・タイプを探す必要があります。
ただし、アプリケーションに大量のメモリーを必要としない場合は、T3ファミリーなど、メモリー容量の少ない安価なインスタンス・タイプを選択できます。
AWSは、X1、R4、z1dファミリーのような、メモリーに最適化されたインスタンス・タイプ(リンクはibm.comの外にあります)を提供しており、メモリー集約型のワークロード向けに設計されています。このインスタンスは大量のメモリーを備えており、インメモリー・データベースなど、高いメモリー使用率を必要とするアプリケーション向けに最適化されています。
ただし、アプリケーションに大量のメモリーを必要としない場合は、T3ファミリーなど、メモリー容量の少ない安価なインスタンス・タイプを選択できます。
ネットワークは、EC2インスタンスとの間のファストデータ転送速度を決定するため、EC2インスタンスのもう1つのクリティカルなコンポーネントです。アプリケーションで高いネットワーク・パフォーマンスが必要な場合は、より高いネットワーク帯域幅を持つインスタンス・タイプを探す必要があります。
AWSは、C5nやハイパフォーマンス・コンピューティングHPCファミリーなど、ネットワーク集約型のワークロード向けに設計された、さまざまなネットワーク最適化インスタンス・タイプを提供しています。このインスタンスは高速ネットワーク・インターフェイスを備えており、高いネットワーク使用率を必要とするアプリケーション用に最適化されています。
ただし、アプリケーションに高いネットワーク・パフォーマンスが必要ない場合は、T3ファミリーなど、ネットワーク帯域が狭い、安価なインスタンス・タイプを選択できます。
ストレージは、EC2インスタンスに保存できるデータの量を決定するため、EC2インスタンスの最終的な重要コンポーネントです。アプリケーションに大量のストレージを必要とする場合は、より大きなストレージ容量を備えたインスタンス・タイプ(Elastic Block Store、EBS)を探す必要があります。ただし、ストレージは最もコストのかかるクラウド・リソースの1つでもあり、アイドル状態のEBSボリュームや接続されていないEBSボリュームによって不要なコストが発生しやすいため、注意が必要です。
AWSは、I3ファミリーやD2ファミリーなど、ストレージ集約型のワークロード向けに設計された、さまざまなストレージ最適化インスタンス・タイプを提供しています。このインスタンスは、大量のSSDストレージとローカル・ストレージを主要な機能としており、高いIOPSスループットを必要とするアプリケーション用に最適化されています。
ただし、アプリケーションに大量のストレージを必要としない場合は、T3ファミリーなど、HDDベースのストレージ容量が小さい安価なインスタンス・タイプを選択できます。
AWSは、オンデマンド、リザーブド・インスタンス、スポット・インスタンスなど、EC2インスタンスに複数の料金体系を提供しています。各モデルには長所と短所があり、ワークロードと予算に最適なモデルを選択することが不可欠です。
オンデマンド・インスタンスの価格は時間単位で設定され、前払いは必要ありません。これらは、需要が変動するワークロードや短期プロジェクトに最適です。
リザーブド・インスタンスは、1回限りの前払いと引き換えに時間あたりの料金を大幅に割引します。これらは、使用量が予測可能で、長期的なコミットメントを必要とするワークロードに最適です。
スポット・インスタンスを利用すると、未使用のEC2容量に入札できるため、大幅なコスト削減が可能になります。ただし、中断に耐えられ、柔軟な開始・終了時間を持つワークロードに最適です。
EC2インスタンス・タイプを選択したら、アプリケーションをテストして最適化し、アプリケーションが効率的に実行されていることを確認することが不可欠です。AWS CloudWatchやIBM Instanaなどのツールを使用して、アプリケーションのパフォーマンスを監視し、ボトルネックや改善すべき領域を特定できます。
適切なEC2インスタンス・タイプを選択することは、AWSインフラストラクチャーのパフォーマンスと費用対効果にとって非常に重要です。ワークロードを理解し、CPU、メモリー、ネットワーク、ストレージの要件を考慮し、適切な料金体系モデルを選択し、アプリケーションをテストして最適化することで、EC2インスタンスを最大限に活用することができます。
ワークロードやインフラストラクチャーのニーズは時間の経過とともに変化する可能性があるため、最適なインスタンスタイプの選択は一度きりの決断ではないことに注意してください。EC2インスタンスタイプを継続的に評価・最適化することで、AWSインフラの最適なパフォーマンスとコスト効率を実現できます。
IBM Turbonomicは、AWSアプリケーションのリソース要件を継続的に評価し、コストを節約し、EC2インスタンスを適切なサイズに維持するための特定のアクションを生成することで、このプロセスを自動的に管理することができます。Turbonomicは機械学習と自動化を活用し、AWSアカウントやAWS Billingアカウントと簡単に統合でき、30分以内に最適化アクションを生成します。