AWS EC2インスタンス・タイプ:AWSでアプリケーションをホストする際の課題とベスト・プラクティス

新しい戦略を計画するビジネス・パートナー

Amazon Web Services(AWS)でアプリケーションをホストする場合、最も重要な決定を下す必要があるのは、どのAmazon Elastic Compute クラウド(EC2)インスタンス・タイプを選択するかということです。EC2インスタンスは、AWSでアプリケーションを実行できる仮想マシンです。インスタンス・ファミリーと呼ばれるさまざまなサイズと構成があり、それぞれが特定の目的のために設計されています。アプリケーションに適したインスタンス製品とインスタンス・サイズを選択することは、パフォーマンスを最適化し、コストを削減するために非常に重要です。しかし、アプリケーションごとに需要プロファイルが固有であり、時間とともに変化する可能性もあるため、この作業は言うほど簡単ではありません。特定のファミリーの2xlargeインスタンスは必ずしも必要ではない場合があります。しかし、アプリケーションチームがクラウド運用に稼働時間維持を求めると、より大きく高コストなインスタンスが魅力的に映りがちです――クラウド費用が膨れ上がるまでは。

このブログ記事では、アプリケーションに最適なAmazon EC2インスタンス・タイプを選択する際の課題を探り、適切な決定を下すためのベスト・プラクティスをいくつか紹介します。さらに、IBM Turbonomicのようなソリューションが、機械学習、auto-scaling、オートメーションを使用してAWSクラウド・アプリの適正化にどのように役立つかについても説明します。Turbonomicに精通していて、今すぐAWS環境の最適化を開始したい場合は、30日間の無料トライアルを始めましょう

Amazon EC2 インスタンス・タイプについて

EC2インスタンスは、CPU、メモリー、ストレージ、ネットワーク容量などの特性に基づいて分類されます。各インスタンス・タイプは、汎用コンピューティング、メモリー集約型アプリケーション、計算集約型タスクなど、特定のワークロードに最適化されるように設計されています。EC2インスタンス・タイプとその主なユースケースの例をいくつか示します。

  • 汎用インスタンス(A、T、M、およびCシリーズ):汎用インスタンス・タイプは、Webサーバー、小規模データベース、開発およびテスト環境など、さまざまなワークロード向けに設計されています。このグループには、Intel Xeon Platinum 8175Mまたは8259CLプロセッサーを搭載した最新世代の汎用インスタンスであるm5インスタンスが含まれています。これらのインスタンスは、コンピューティング、メモリー、ネットワークリソースをバランスよく提供し、多くのアプリケーションにとって良い選択となります。
  • コンピューティング最適化インスタンス(CおよびRシリーズ):これらのインスタンスは、パフォーマンス・コンピューティング、バッチ処理、科学的モデリングなど、コンピューティング集約型のワークロード向けに最適化されています。GPUとコア数の多いCPUを使用して計算能力を最大化します。
  • メモリー最適化インスタンス(X、Z、およびRシリーズ): この高メモリー・インスタンスは、高性能データベース、分散型メモリ内キャッシュ、リアルタイムのデータ処理/ビッグデータ分析など、メモリー集約型のワークロード向けに最適化されています。
  • ストレージ最適化インスタンス(I、D、およびHシリーズ): これらのインスタンスは、ビッグデータ、データ・ウェアハウジング、ログ処理などのストレージ集約型のワークロード向けに最適化されています。大容量のキャッシュとソリッドステート・ドライブ(SSD)を活用して、ワークロードの集中的な読み取りと書き込みをサポートします。

適切なEC2インスタンスタイプを選択する際の課題

アプリケーションに適したEC2インスタンスタイプを選択することは、困難な作業となる場合があります。直面する可能性のある課題のいくつかを次に示します。

  • 複雑さ: 選択できるインスタンスが多数あるため、アプリケーションにどれが最適かを判断するのが困難な場合があります。さらに、Amazonはサービスカタログに新しいインスタンスタイプを継続的に導入しており、今日のアプリケーションに最適なものが数か月後のアプリケーションに必ずしも最適とは限らないことを示唆しています。
    • Turbonomicの有用性:Turbonomicは、AWSサービス・カタログ全体の仕様を継続的にINGESTし、ワークロードのリソース消費プロファイル(ベースラインとパーセンタイルベースのピークの両方)を最適なインスタンス・タイプにマッピングします。
  • ワークロード・タイプ:アプリケーションはどのタイプのワークロードを実行しますか?コンピューティング集約型のワークロードですか?それとも大量のメモリーやストレージ容量を必要としますか?ワークロードを明確に理解したら、オプションをワークロードに最適化されたインスタンス・タイプに絞り込むことができます。
  • パフォーマンス要件:大規模なワークロードを処理するために高パフォーマンスのインスタンス・タイプが必要ですか、それとも軽量ワークロード向けの小さめのインスタンスタイプで十分ですか?ワークロードは、顧客向けの低レイテンシー・アプリケーションをサポートしますか、それとも内部管理用アプリケーションですか?また、データのローカリティー(配置場所)の要件はどのようになりますか?インスタンス・タイプのパフォーマンスは、リージョンやアプリケーションの使用パターンによって変動する可能性があることも念頭に置いてください。
    • Turbonomicの有用性:ホスティング環境全体でワークロードの種類を判断することは大きな作業ですが、クラウド・コスト最適化ソフトウェアを活用することで容易になります。Turbonomicは、ワークロードのvCPU使用率、メモリー使用量、ストレージ・アクセス(IOPS)、ネットワーク・スループット、I/Oスループット、ストレージ容量、リザーブド・インスタンスのカバレッジ、データベースvMemory、データベースvCPU、データベース・ストレージ容量、データベースI/Oスループット、RI在庫およびRIカバレッジの現在および過去の使用状況を自動で検出し、ワークロードを最適にサポートするインスタンス・ファミリーおよびインスタンス・タイプを決定します。
  • 拡張性: 選択するインスタンス・タイプが、トラフィックやワークロードの変化に対応するために必要に応じてスケールアップまたはスケールダウンできることを確認する必要があります。さらに、各 EC2インスタンスがホストするアプリケーションがどのように拡張するように設計されているかを知る必要があります。アプリケーションがマイクロサービスで構成されている場合は、拡張性とパフォーマンスの要件も一緒に考慮する必要があります。
    • Turbonomicの有用性:各アプリケーションの拡張設計に応じて、Turbonomicは最も経済的な拡張アップ/拡張ダウンを実現し、可能な限り最も費用対効果の高い方法で拡張アウト/拡張イン・アクションを実行することもできます。
  • コスト:コストは、EC2インスタンス・タイプを選択する際の最も重要な考慮事項および課題の1つです。インスタンス・タイプの時間単位のコストに加えて、データ転送、ストレージ、その他の AWS サービスに対する追加料金も考慮する必要があります。さらに、リザーブド・インスタンスやSavings Planなどのさまざまな料金体系モデルにより、コスト計算がさらに複雑になります。

最適なEC2インスタンス・タイプを選択するためのベスト・プラクティス

最適なEC2インスタンスの選択に関する最も一般的な課題を理解できたところで、次は当社のクライアントやパートナーの皆様にお勧めするベスト・プラクティスをいくつか紹介します。

1. ワークロードを理解する

適切なEC2インスタンス・タイプを選択する際の最初の最も重要なステップは、ワークロードを理解することです。アプリケーションごとに、CPU、メモリー、ネットワーク、ストレージの要件が異なるため、アプリケーションをスムーズに動作させるためには、何が必要かを知ることが欠かせません。

例えば、データベース・アプリケーションを実行している場合、クエリーを効率的に処理するために大量のRAMが必要になる場合があります。一方、計算集約型のアプリケーションを実行している場合は、高性能なCPUが必要になる場合があります。

ワークロードをより深く理解するために、AWS CloudWatchやサードパーティの監視ソリューションなどのツールを使用して、リソースの使用率に関するデータを収集できます。さらに、このデータを使用して、アプリケーションに最適なインスタンス・タイプを決定できます。

2. CPUを考慮する

CPUはEC2インスタンスの処理能力を決定するため、EC2インスタンスの最もクリティカルなコンポーネントの1つです。アプリケーションで高いCPUパフォーマンスが必要な場合は、CPU数とクロック速度が高いインスタンス・タイプを探す必要があります。

AWSはC5、M5、R5ファミリーなど、高性能のコンピューティング・ワークロード向けに設計されたCPU最適化インスタンス・タイプ(ibm.com外部へのリンク)を多数提供しています。これらのインスタンスは最新世代のカスタムビルドAWS Graviton3(ibm.com外部へのリンク)プロセッサー(Graviton2への大幅なアップグレード)を搭載し、高いCPU利用率を必要とするアプリケーションに最適化されています。ただし、アプリケーションに高いCPUパフォーマンスが必要ない場合は、T3ファミリーなど、GPUを備えずCPU数が少ない安価なインスタンス・タイプを選択できます。

3. メモリーを考慮する

メモリーも、EC2インスタンスのクリティカルなコンポーネントの1つです。インスタンスが一度に処理できるデータ量を決定するからです。アプリケーションに大量のメモリーを必要とする場合は、より大きなメモリー容量を備えたインスタンス・タイプを探す必要があります。

ただし、アプリケーションに大量のメモリーを必要としない場合は、T3ファミリーなど、メモリー容量の少ない安価なインスタンス・タイプを選択できます。

AWSは、X1、R4、z1dファミリーのような、メモリーに最適化されたインスタンス・タイプ(リンクはibm.comの外にあります)を提供しており、メモリー集約型のワークロード向けに設計されています。このインスタンスは大量のメモリーを備えており、インメモリー・データベースなど、高いメモリー使用率を必要とするアプリケーション向けに最適化されています。

ただし、アプリケーションに大量のメモリーを必要としない場合は、T3ファミリーなど、メモリー容量の少ない安価なインスタンス・タイプを選択できます。

4. ネットワークを考慮する

ネットワークは、EC2インスタンスとの間のファストデータ転送速度を決定するため、EC2インスタンスのもう1つのクリティカルなコンポーネントです。アプリケーションで高いネットワーク・パフォーマンスが必要な場合は、より高いネットワーク帯域幅を持つインスタンス・タイプを探す必要があります。

AWSは、C5nやハイパフォーマンス・コンピューティングHPCファミリーなど、ネットワーク集約型のワークロード向けに設計された、さまざまなネットワーク最適化インスタンス・タイプを提供しています。このインスタンスは高速ネットワーク・インターフェイスを備えており、高いネットワーク使用率を必要とするアプリケーション用に最適化されています。

ただし、アプリケーションに高いネットワーク・パフォーマンスが必要ない場合は、T3ファミリーなど、ネットワーク帯域が狭い、安価なインスタンス・タイプを選択できます。

5. ストレージを考慮する

ストレージは、EC2インスタンスに保存できるデータの量を決定するため、EC2インスタンスの最終的な重要コンポーネントです。アプリケーションに大量のストレージを必要とする場合は、より大きなストレージ容量を備えたインスタンス・タイプ(Elastic Block Store、EBS)を探す必要があります。ただし、ストレージは最もコストのかかるクラウド・リソースの1つでもあり、アイドル状態のEBSボリュームや接続されていないEBSボリュームによって不要なコストが発生しやすいため、注意が必要です。

AWSは、I3ファミリーやD2ファミリーなど、ストレージ集約型のワークロード向けに設計された、さまざまなストレージ最適化インスタンス・タイプを提供しています。このインスタンスは、大量のSSDストレージとローカル・ストレージを主要な機能としており、高いIOPSスループットを必要とするアプリケーション用に最適化されています。

ただし、アプリケーションに大量のストレージを必要としない場合は、T3ファミリーなど、HDDベースのストレージ容量が小さい安価なインスタンス・タイプを選択できます。

6. 料金体系を考慮する

AWSは、オンデマンド、リザーブド・インスタンス、スポット・インスタンスなど、EC2インスタンスに複数の料金体系を提供しています。各モデルには長所と短所があり、ワークロードと予算に最適なモデルを選択することが不可欠です。

オンデマンド・インスタンスの価格は時間単位で設定され、前払いは必要ありません。これらは、需要が変動するワークロードや短期プロジェクトに最適です。

リザーブド・インスタンスは、1回限りの前払いと引き換えに時間あたりの料金を大幅に割引します。これらは、使用量が予測可能で、長期的なコミットメントを必要とするワークロードに最適です。

スポット・インスタンスを利用すると、未使用のEC2容量に入札できるため、大幅なコスト削減が可能になります。ただし、中断に耐えられ、柔軟な開始・終了時間を持つワークロードに最適です。

7. テストと最適化

EC2インスタンス・タイプを選択したら、アプリケーションをテストして最適化し、アプリケーションが効率的に実行されていることを確認することが不可欠です。AWS CloudWatchやIBM Instanaなどのツールを使用して、アプリケーションのパフォーマンスを監視し、ボトルネックや改善すべき領域を特定できます。

結論

適切なEC2インスタンス・タイプを選択することは、AWSインフラストラクチャーのパフォーマンスと費用対効果にとって非常に重要です。ワークロードを理解し、CPU、メモリー、ネットワーク、ストレージの要件を考慮し、適切な料金体系モデルを選択し、アプリケーションをテストして最適化することで、EC2インスタンスを最大限に活用することができます。

ワークロードやインフラストラクチャーのニーズは時間の経過とともに変化する可能性があるため、最適なインスタンスタイプの選択は一度きりの決断ではないことに注意してください。EC2インスタンスタイプを継続的に評価・最適化することで、AWSインフラの最適なパフォーマンスとコスト効率を実現できます。

IBM Turbonomicは、AWSアプリケーションのリソース要件を継続的に評価し、コストを節約し、EC2インスタンスを適切なサイズに維持するための特定のアクションを生成することで、このプロセスを自動的に管理することができます。Turbonomicは機械学習と自動化を活用し、AWSアカウントやAWS Billingアカウントと簡単に統合でき、30分以内に最適化アクションを生成します。

著者

Christopher Graham

WW Demand Strategy Manager

Turbonomic PLG