あらゆるワークロードに適応する仮想サーバー
Amazon EC2 をグラレコで解説
Author : 米倉 裕基
builders.flash の読者のみなさん、こんにちは ! テクニカルライターの米倉裕基と申します。
本記事では、クラウドコンピューティングサービス Amazon Elastic Compute Cloud (以下、Amazon EC2) の主要な機能と特徴を紹介します。
Amazon EC2 を使用することで、物理サーバーの購入や管理の手間から解放され、必要な時に必要な分だけ AWS クラウド上の仮想サーバーをすぐに利用できます。軽量な小規模インスタンスから、機械学習のトレーニングやビッグデータ分析に適したハイエンドの高性能インスタンスまで幅広い選択肢があり、CPU、メモリ、ストレージ、ネットワーク帯域幅をワークロードに合わせて細かく調整できます。
本記事では、Amazon EC2 の主要な機能について詳しく解説していきます。
- Amazon EC2 とは
- EC2 インスタンスの基礎
- Amazon EC2 の始め方
- 料金モデルとコスト管理
- インスタンスのセキュリティ対策
- ストレージとデータの永続化
- スケーリングとリソース管理
- 他の AWS サービスとの連携
それでは、項目ごとに詳しく見ていきましょう。
Amazon EC2 とは
Amazon EC2 は、AWS が提供するクラウドコンピューティングの中核を成すサービスです。Amazon EC2 を利用することで、ユーザーはオンデマンドでコンピューティングリソースを柔軟に調整できる仮想マシンを、AWS クラウド上で簡単に起動および管理することができます。
Amazon EC2 の仮想マシンは、「インスタンス」と呼ばれる単位で提供されます。インスタンスは、CPU、メモリ、ストレージ、およびネットワークキャパシティの組み合わせで構成されており、多様なワークロードに対応できるよう、幅広い選択肢が用意されています。ユーザーは、それらのインスタンス群の中から自身の求めるワークロードに最適なインスタンスを選び、必要に応じて柔軟にリソースをスケールすることができます。
クラウド仮想サーバーの果たす役割
一般的に、オンプレミス環境でサーバーを運用する場合、物理サーバーの調達からリソースの設定などに相応のコストや知識が求められます。一方、クラウド仮想サーバーは、ソフトウェアによる仮想化技術で実現されたリソースプールから、必要に応じて CPU、メモリ、ストレージなどを柔軟に割り当てることができます。
AWS クラウド上の仮想サーバーである Amazon EC2 では、ユーザーはリソースのプロビジョニングとスケーリングを自在に行えるだけでなく、ハードウェアの保守やセキュリティパッチの適用など、インフラ運用の多くの部分を AWS に任すことができます。さらに、Amazon EC2 単体での利用だけでなく、AWS が提供するさまざまなクラウドネイティブなサービスと連携することで、オンプレミス上に構築されたシステムとは異なる、柔軟で拡張性の高いクラウドアーキテクチャを構築できます。
Amazon EC2 の特徴
Amazon EC2 は様々なコンピューティングニーズに応える柔軟なソリューションを提供します。以下は、Amazon EC2 が提供する主な特徴です。
- 自動スケーリング:Auto Scaling による動的なリソースの調整で、需要の変動に迅速に対応します。
- 豊富なリソース:豊富なインスタンスタイプと AMI (Amazon マシンイメージ) を選択可能で、幅広いワークロードをサポートします。
- 多様な料金オプション:多様な料金オプションと従量課金制により、コストを最適化できます。
- 包括的なセキュリティ:セキュリティグループ、VPC、IAM などによる包括的なセキュリティ機能を提供します。
- 高性能インスタンス:機械学習やビッグデータ分析など高度なコンピューティングリソースを必要とするワークロードに対応するインスタンスが提供されています。
- AWS サービス連携:他の AWS サービスと緊密に連携し、総合的なクラウドソリューションを構築できます。
画像をクリックすると拡大します
その他 Amazon EC2 の特徴について詳しくは、「Amazon EC2 の特徴」をご覧ください。
Amazon EC2 のユースケース
Amazon EC2 は、クラウド仮想サーバーとしての柔軟性やスケーラビリティ、コスト効率の高さから、多様なビジネスニーズに対応できます。ここでは、Amazon EC2 の代表的なユースケースをいくつか紹介します。
- Web アプリケーションのホスティング:
Amazon EC2 は、動的な Web サイトや API をホストするために広く利用されています。トラフィックに応じてインスタンスをスケールアウト・インできるため、ユーザーの需要に柔軟に対応できます。 - High Performance Computing (HPC) アプリケーションの構築:
HPC 領域では、シミュレーション、モデリング、データ解析など、様々なワークロードが存在します。これらのワークロードには、高度な並列実行、大量のメモリ需要、高速データ転送など、異なる計算の特性があります。Amazon EC2 であれば、そうした計算の特性に合わせてマルチコア CPU、大容量メモリ、高速ネットワークなど、最適な計算リソースを柔軟に確保できます。 - Apple プラットフォーム向け開発:
Amazon EC2 Mac インスタンスを使用することで、AWS 上で macOS 環境でのビルド、テスト、デプロイが可能になります。ユーザーは必要な開発ツール (Xcode、Android Studio、Unity、Docker など) をインストールし、Apple 製品向けのアプリケーション開発環境を AWS クラウド上に構築できます。 - 機械学習アプリケーションの構築:
Amazon EC2 には、機械学習向けの高性能コンピューティングリソースが豊富に用意されています。GPU インスタンスでは NVIDIA の最新 GPU を利用でき、深層学習モデルのトレーニングを高速化できます。また、各種機械学習フレームワークがプリインストールされた AMI を提供しており、これらを使用して ML 向けのインスタンスを簡単にセットアップできます。
その他 Amazon EC2 の利点やユースケースについて詳しくは、「概要」をご覧ください。
EC2 インスタンスの基礎
Amazon EC2 では、多様なユースケースに対応する豊富な「インスタンスタイプ」が提供されています。インスタンスタイプは、CPU、メモリ、ストレージ、ネットワーク性能などのハードウェア構成を定義します。
EC2 インスタンスを起動する際は、AMI (Amazon マシンイメージ) の選択、インスタンスタイプの指定、ネットワーク、ストレージの設定などが必要です。これらの選択と設定は、AWS マネジメントコンソールの GUI 操作で簡単に行えます。
AMI の概要
AMI は、EC2 インスタンスを作成するための基本テンプレートです。オペレーティングシステム、アプリケーションサーバー、アプリケーションなどのソフトウェア構成を含んでいます。EC2 インスタンスの起動時には、以下の 4 種類の AMI からニーズに適したものを選択します。
- クイックスタート AMI:
AWS が公式に提供する基本的な OS イメージです。セキュリティアップデートが適用され、AWS 環境での動作に最適化されています。 - 自分の AMI:
ユーザーや組織が独自に作成した AMI です。特定の要件やセキュリティ基準に合わせてカスタマイズされた AMI です。 - AWS Marketplace AMI:
AWS Marketplace で販売されている有料の AMI です。各種ソフトウェアベンダーの特定のソフトウェアやツールがプリインストールされています。 - ユーザーコミュニティ AMI:
ユーザーコミュニティによって作成・共有されている AMI です。特定の目的に特化した AMI が多く公開されています。
その他 AMI について詳しくは、「Amazon EC2 の Amazon マシンイメージ」をご覧ください。
インスタンスタイプの読み方
インスタンスタイプは t2.micro や c7gn.xlarge のように英数字で表現され、それぞれ「インスタンスファミリー」「インスタンス世代」「オプション」「インスタンスサイズ」の 4 つの要素で構成されます。4 つの構成要素の組み合わせで、ユーザーはインスタンスタイプの性能や特徴を一目で理解できるようになっています。
例えば、c7gn.xlarge の場合、c、7、gn、xlarge の各構成要素は以下を表します。
構成要素 | 例 | 説明 |
インスタンスファミリー | c | コンピューティング最適化インスタンス |
インスタンス世代 | 7 | c インスタンスファミリーの第 7 世代 |
オプション | gn | g:AWS Graviton プロセッサ使用、n:ネットワークと EBS 最適化 |
インスタンスサイズ | xlarge | micro 、large、xlarge など、サイズが大きくなるに従い、vCPU 数、メモリ、ネットワーク帯域などリソースキャパシティが増加 |
インスタンスタイプの命名規則について詳しくは、「Amazon EC2 インスタンスタイプの命名規則」をご覧ください。
インスタンスファミリーの種類
Amazon EC2 では、異なる用途や性能に応じてさまざまなインスタンスファミリーが提供されています。インスタンスファミリーは以下の 6 つに分類されます。
- 汎用 (T、M、Mac シリーズ):
一般的な用途に最適で、メモリと CPU のバランスが取れています。開発、テスト、ウェブサーバーなどに適しています。 - コンピュート最適化 (C シリーズ):
高い CPU パフォーマンスが求められるアプリケーションに適しています。バッチ処理ワークロード、メディアトランスコード、高性能ウェブサーバー、科学的モデリング、専用ゲームサーバー、広告サーバーエンジンなどに適しています。 - メモリ最適化 (R、U、X、z シリーズ):
大量のデータをメモリ内で高速に処理する必要があるワークロードに適しています。高性能データベース、分散メモリキャッシュ、インメモリデータベース、リアルタイムビッグデータ分析などに使用されます。 - ストレージ最適化 (I、D、H シリーズ):
ローカルストレージに対して高い I/O 性能が必要なワークロードに適しています。NoSQL データベース、データウェアハウス、分散ファイルシステムなどに使用されます。 - 高速コンピューティング (P、G、Trn シリーズ):
GPU を利用した高性能計算に適しています。機械学習、深層学習、計算化学、レンダリング、金融モデリングなどに使用されます。 - HPC 最適化 (Hpc シリーズ):
高性能コンピューティング (HPC) ワークロードに最適化されています。流体力学、計算化学、天候予測、金融リスク分析などの複雑な科学計算や工学シミュレーションに使用されます。
画像をクリックすると拡大します
各インスタンスファミリーは複数の世代を持っていて、一般的に新しい世代ほどスペックが向上します。ただし、必要以上のスペックを選択すると無駄なコストが発生する可能性があるため、ワークロードの実際の要件とコスト効率を吟味し、過剰なリソースを避けつつ、最適なインスタンス世代を選ぶことが重要です。
その他、EC2 インスタンスタイプについて詳しくは、「Amazon EC2 インスタンスタイプ」をご覧ください。
進化を続ける EC2 インスタンス
EC2 インスタンスは常に最新のワークロードニーズに適合するために、継続的に新しいインスタンスタイプを提供し続けています。2024 年 12 月に実施された AWS re:Invent 2024 では、以下の次世代 EC2 インスタンスが発表されました。
- P5en インスタンス:NVIDIA H200 GPU 搭載、生成 AI や HPC 向け
- I7ie インスタンス:次世代ストレージ最適化インスタンス、第 3 世代の AWS Nitro SSD 搭載
- I8g インスタンス:第 3 世代の AWS Nitro SSD と AWS Graviton4 プロセッサ搭載のストレージ最適化インスタンス
- Trn2 インスタンス:16 個の Trainium2 チップ搭載、GPU インスタンスに比べ 30 〜 40% コストパフォーマンス向上。64 個の Trainium2 チップを搭載した Trn2 UltraServe も提供を予定。
さらに、2025 年後半に Trainium3 チップを搭載した新しいインスタンスタイプの登場が予告されました。今後も高パフォーマンスの機械学習トレーニングやビッグデータ分析などに最適化された次世代型のインスタンスが次々発表されることが予想されます。
その他、AWS re:Invent 2024 で発表された内容については、「AWS re:Invent 2024 の注目の発表」をご覧ください。
Amazon EC2 の始め方
Amazon EC2 の利用を始めるには、複雑なサーバー構築の手間や専門的な知識は不要です。サーバー構築に知見のない初心者でも簡単に EC2 インスタンスを起動できます。
コンソールによるインスタンスの起動
Amazon EC2 では、インスタンスの起動から接続、終了 (削除) までの全行程を、AWS マネジメントコンソールから GUI 操作で簡単に行えます。
- AWS アカウントの作成とログイン:
AWS アカウントがない場合は、アカウントを作成してから AWS マネジメントコンソールにログインします。 - インスタンスの作成:
Amazon EC2 ダッシュボードから「インスタンスを起動」を選択します。AMI、インスタンスタイプを選びます。初めて Amazon EC2 を利用する場合は、無料利用枠対象の「Amazon Linux 2023 AMI」と「t2.micro」インスタンスタイプがおすすめです。 - インスタンスの起動:
セキュリティ、ネットワーク、ストレージなどの設定を行います。キーペアを選択または作成し、安全に保管してください。すべての設定を確認後、「インスタンスを起動」をクリックします。 - インスタンスへの接続:
EC2 Instance Connect を使用すると、EC2 コンソールからブラウザベースの SSH 接続でインスタンスにアクセスできます。 - インスタンスの終了:
インスタンスの利用が終了したら、不要な料金の発生を防ぐためにインスタンスを「終了 (削除)」します。終了したインスタンスは完全に削除され、復元できないため、重要なデータは事前にバックアップしてください。
画像をクリックすると拡大します
インスタンスの起動方法について詳しくは、「Amazon EC2 の使用を開始する」をご覧ください。
EC2 インスタンスへの接続方法
EC2 インスタンスへのアクセス方法は複数あり、上記の手順では EC2 Instance Connect という最も簡易的な方法で接続しました。ここでは、主要な 4 つの接続方法を紹介します。
接続方法 | 特徴 | 使用場面 |
SSH クライアント | 最も一般的な接続方法です。任意のコマンドラインから SSH キーを利用して安全に EC2 インスタンスへ接続します。 |
|
EC2 Instance Connect | ブラウザベースで簡単に接続可能です。一時的な SSH キーを使用するため、特別な設定が不要です。 |
|
AWS Systems Manager セッションマネージャー | インスタンスがインターネットに接続していなくても、AWS CLI やマネジメントコンソールを介してアクセスできます。 |
|
EC2 シリアルコンソール | ネットワーク接続に依存せず、インスタンスのシリアルポートに直接アクセスできます。 |
|
各接続方法には特徴があり、EC2 インスタンスの用途や運用環境に応じて、接続方法を使い分けることができます。
インスタンスの状態管理
EC2 インスタンスの状態管理は、コストとデータ保存の観点から重要です。使用していないインスタンスを稼働させたままにすると不要な料金が発生する恐れがあります。また、無闇にインスタンスを終了 (削除) すると必要なデータが失われる可能性があります。
EC2 インスタンスには、「実行中」、「停止」、「終了 (削除)」の主要な 3 つの状態があり、実行中のインスタンスの「再起動」や停止中のインスタンスの「開始」操作が可能です。
- 停止:
一時的にインスタンスを停止します。コンピューティングリソースに対する課金は停止しますが、関連する EBS ボリュームのストレージ料金は継続して発生します。インスタンスのデータは保持されるため、「開始」操作することで以前の状態に戻すことができます。 - 終了 (削除):
インスタンスを完全に削除します。デフォルトでは、関連する EBS ボリュームも削除されるため、保存されているデータは失われます。ただし、EBS ボリュームに対して「DeleteOnTermination 属性」を無効にしている場合は、ボリュームは保持されます。なお、DeleteOnTermination 属性を無効にしていても、一度終了 (削除) したインスタンスは再起動できません。 - 再起動:
インスタンスの OS レベルでの再起動を行います。この操作はインスタンスを停止せずに再起動するため、IP アドレスは変更されず、データも保持されます。一時的なサービス中断は発生しますが、短時間で復旧します。
ユースケースに応じて適切に状態を管理することで、不要なコストの発生を防ぎつつ重要なデータの損失を防ぐことができます。
EC2 インスタンスの状態管理について詳しくは、「Amazon EC2 インスタンスの状態変更」をご覧ください。
料金モデルとコスト管理
Amazon EC2 では異なるニーズに対応するための複数の料金オプションを提供しており、これらを効果的に活用することでコストを最適化できます。
3 つの料金モデル
Amazon EC2 には主に 3 つの料金モデルがあり、それぞれ異なる用途や要件に適しています。
料金モデル | 特徴 | 用途 |
オンデマンドインスタンス | 使用した分だけ支払う柔軟な料金モデルで、長期契約は不要です。価格は固定されており、予測可能性が高いのが特徴です。 |
|
スポットインスタンス | Amazon EC2 の余剰キャパシティを活用し、最大 90% の大幅な割引が可能です。ただし、需給に応じて価格が変動し、中断される可能性があります。 |
|
Savings Plans | 1 年または 3 年の利用をコミットすることで、大幅な割引が適用されます。EC2、Fargate、Lambdaなど幅広いサービスに柔軟に適用可能で、インスタンスタイプやリージョンを自由に選択できます。全額前払い、一部前払い、前払いなしの 3 つの支払いオプションがあります。 |
|
これら 3 種類の料金モデルではコストパフォーマンスやユースケースが異なります。ワークロードの特性に合わせて、適切なモデルを選択します。
コスト最適化に向けたアプローチ
Amazon EC2 を長期的に運用する場合、不要なコストの発生がないか継続的に確認することが必要です。不要なリソースの削減、料金モデルの使い分け、モニタリングと分析、適切な管理とガバナンスなど、総合的なアプローチでコスト最適化を行います。
- リソースの最適化:
ワークロードに最適なインスタンスタイプを選択し、過剰なリソースによる無駄を削減することがコスト削減に繋がります。AWS Auto Scaling を活用して需要に応じてインスタンス数を自動調整することで、リソースの無駄を最小限に抑えられます。不要な EBS ボリュームは削除し、必要に応じてサイズ調整します。 - 料金モデルの戦略的利用:
複数の料金モデルを戦略的に組み合わせることで大幅なコスト削減が可能です。常時起動しているワークロードには Savings Plans、変動的なワークロードにはオンデマンド/スポットインスタンスなど、複数モデルを適切に組み合わせることで不要なコストを避けられます。 - モニタリングと分析:
定期的なモニタリングと分析がコスト最適化の鍵となります。AWS Cost Explorer で使用状況とコストを分析し、最適化の機会を特定します。また、AWS Budgets で予算設定とアラート受信により予算管理を強化できます。さらに、AWS コスト異常検出で異常なコストパターンを検知し、早期対応することも可能です。
画像をクリックすると拡大します
オンデマンド、スポットインスタンス、Savings Plans の 3 種類の料金モデルと、コスト最適化に向けたアプローチを戦略的に組み合わせることで、最大限の費用対効果を実現できます。
Amazon EC2 の料金について詳しくは、「Amazon EC2 料金表」をご覧ください。
インスタンスのセキュリティ対策
Amazon EC2 のセキュリティは、AWS とお客様との責任共有モデルに基づいています。AWS がインフラストラクチャのセキュリティを担保する一方で、お客様はインスタンス上のセキュリティ対策を実装する責任があります。
Amazon EC2 では、インスタンスのセキュリティを確保するために、さまざまなセキュリティ機能が備わっています。インスタンス作成時に設定するセキュリティグループやアクセス制御、ネットワーク分離など、多層的にセキュリティ対策を行うことで、既知および未知の脅威に対して包括的な対策を実現できます。
セキュリティグループの特徴
セキュリティグループは、EC2 インスタンスを保護する仮想ファイアウォールの役割を果たします。インスタンスへのインバウンドトラフィック (外部からの通信) とアウトバウンドトラフィック (外部への通信) をルールベースで制御し、セキュリティグループにより不必要な通信を遮断します。
セキュリティグループの主要な特徴は以下のとおりです。
特徴 | 説明 | 例 |
ルールベースの設定 | プロトコル、ポート、IP アドレスを指定してトラフィックを管理可能 | HTTP サーバー:80 番ポートの受信のみ許可 |
ステートフル | 許可された入力に対する応答トラフィックは自動的に許可される | クライアントからのリクエストに応じた応答は通過 |
即時反映 | ルール変更が即座に反映される | 緊急時の設定変更が可能 |
複数適用可能 | 1 つのインスタンスに複数のセキュリティグループを設定可能 | Web サーバーと DB サーバーの併用 |
これらの特徴を踏まえて、EC2 インスタンスに適切なセキュリティグループを適用することで、セキュアなトラフィック制御を実現できます。
セキュリティグループの設定例
セキュリティグループを設定する際のベストプラクティスは、必要最小限のポートと IP アドレスのみを許可することです。以下は Web サーバーと DB サーバーを対象とした設定例です。
例 1) Web サーバー用のセキュリティグループ
インバウンド:
- HTTPS ポート (443 番ポート):送信元 0.0.0.0/0 を許可
- SSH ポート (22 番ポート):送信元を自社内部の IP アドレス (例:192.168.1.0/24) に限定
アウトバウンド:
- すべてのアウトバウンドトラフィックを許可
例 2) DB サーバー用のセキュリティグループ
インバウンド:
- MySQL/Aurora ポート (3306 番ポート):送信元を Web サーバーのプライベート IP アドレス (例:172.31.0.0/16) に限定
アウトバウンド:
- すべてのアウトバウンドトラフィックを許可
上記の設定例では、Web サーバーと DB サーバー間の通信を最小限に制限し、外部からの不審なトラフィックを防ぎます。その他セキュリティグループについて詳しくは、「セキュリティグループ」をご覧ください。
その他のセキュリティ対策
EC2 インスタンスのセキュリティを確保するには、セキュリティグループによるトラフィック制御のほかに、IAM ロールを使ったアクセス制御や VPC を使ったネットワーク分離など複層的なセキュリティ対策が有効です。
- IAM ロールによるアクセス制御:
EC2 インスタンスに IAM ロールを関連付けることで、インスタンス上で動作するアプリケーションに AWS リソースへのアクセス権限を付与します。IAM ロールには必要最小限の権限のみを設定し、最小権限の原則に従います。 - VPC によるネットワーク分離:
Amazon Virtual Private Cloud (VPC) を使用して、EC2 インスタンスを論理的に分離されたネットワークセグメントに配置します。これにより、不要なネットワークアクセスを制限し、セキュリティを強化できます。 - ネットワーク ACL による追加のネットワークフィルタリング:
VPC サブネットレベルで動作し、セキュリティグループを補完するステートレスなファイアウォールとして機能します。より広範囲なネットワークセキュリティ制御を実現します。
画像をクリックすると拡大します
セキュリティ上の脅威は常に進化するため、対策の定期的な見直しと更新が不可欠です。EC2 インスタンスのセキュリティ対策について詳しくは、「セキュリティ」をご覧ください。
ストレージとデータの永続化
EC2 インスタンスにおけるストレージの選択とデータ永続化は、アプリケーションのパフォーマンス、可用性、コストに大きな影響を与えます。適切なストレージオプションを選択することで、データの耐久性を確保しつつ、コストとパフォーマンスのバランスを最適化できます。
ストレージオプション
Amazon EC2 では主に、「Amazon Elastic Block Store (EBS)」と「インスタンスストア」の 2 つのストレージオプションが提供されています。
ストレージタイプ | 特徴 | ユースケース |
EBS |
|
データベース、ファイルシステム、長期保存が必要なデータなど、永続性と信頼性が求められるワークロードに適しています。 |
インスタンスストア |
|
一時的なキャッシュ、高速データ処理、頻繁な読み書きが必要な一時ファイルなど、高い I/O 性能が求められる短期的なデータ処理に最適です。 |
通常は、ルートボリュームに EBS を選択し、永続的なデータ保存が必要な場合は追加の EBS データボリュームを割り当てます。
EBS ボリュームを選択する際には、EC2 インスタンス作成時に、汎用 SSD (gp2/gp3) やプロビジョンド IOPS (io1/io2) などのボリュームタイプ、ボリュームのサイズ、プロビジョンド IOPS の設定値などを指定します。
一方で、インスタンスストアは一時的なデータ処理用途に利用されます。インスタンスストアを利用するには、インスタンスタイプの選択時に、インスタンスストアボリュームを搭載した特定のインスタンスタイプ (m5ad.large など) を選択します。
EC2 インスタンスのストレージオプションについて詳しくは、「Amazon EC2 インスタンスのストレージオプション」をご覧ください。
画像をクリックすると拡大します
データ永続化に向けた選択肢
インスタンスストアとは異なり、EBS ボリュームは EC2 インスタンスとは別に存在するため、インスタンスを削除してもボリューム自体は残ります。ただし、DeleteOnTermination 属性が有効になっている場合は、インスタンスと一緒にEBSボリュームも削除されてしまうので注意が必要です。
その他 EBS ボリュームを使ってデータを永続化する場合、以下のような点を考慮する必要があります。
- EBS ボリュームは 1 つのアベイラビリティーゾーンに拘束される
- ボリュームのスナップショットを手動で作成する手間がかかる
- 長期保存用のスナップショットを維持するコストがかかる
そこで、より確実で効率的なデータ永続化を実現するために、他の AWS のストレージサービスを組み合わせることもできます。
- Amazon S3:
Amazon S3 に EBS スナップショットを保存することで、データをクロスリージョンで冗長化できます。 - Amazon EFS:
Amazon EFS は、Amazon EC2 と併用できるスケーラブルなファイルストレージを提供します。EFS ファイルシステムを作成し、複数のインスタンスでマウントすれば、共有データソースとして活用できます。 - Amazon FSx:
Lustre、NetApp ONTAP、OpenZFS、Windows File Server など、高性能なファイルシステムに EC2 インスタンスからアクセスできます。 - Amazon File Cache:
Amazon File Cache は、AWS 上でファイルデータを処理するための一時的な高性能キャッシュを提供します。EC2 インスタンスからの高速なデータアクセスを実現できます。
これらのストレージサービスの併用以外にも、Amazon Data Lifecycle Manager で EBS スナップショットと EBS-backed AMI のバックアップを自動化し、データ永続化にかかるコストと手間を削減する方法もあります。詳しくは、「Amazon Data Lifecycle Manager でバックアップを自動化」をご覧ください。
スケーリングとリソース管理
Amazon EC2 の重要な機能の一つに、需要に応じてリソースを柔軟に調整できる動的なスケーリング機能があります。この機能を効果的に活用することで、コスト効率を高めつつ、パフォーマンスと可用性を最適化できます。ここでは、EC2 インスタンスのスケーリングの方法と Amazon EC2 Auto Scaling (以降、Auto Scaling) の仕組みについて説明します。
スケーリングの方法
EC2 インスタンスのスケーリングは主に「垂直スケーリング」と「水平スケーリング」の 2 つのアプローチがあります。それぞれの特性と留意点は以下のとおりです。
垂直スケーリング (スケールアップ/ダウン)
垂直スケーリングでは、既存の EC2 インスタンスの性能を向上させることで処理能力を高めます。例えば、小規模な t3.micro インスタンスを m5.large にアップグレードすることで、CPU やメモリのリソースを増加させることが可能です。
- 利点:
アプリケーションの構造を変更せずに性能を向上できるため、シンプルで迅速なスケーリングができます。 - 留意点:
インスタンスのリソースには上限があるため、スケールアウトに比べて拡張性が制限されます。また、インスタンスの変更にはダウンタイムが発生する場合があります。
水平スケーリング (スケールアウト/イン)
水平スケーリングでは、複数のインスタンスを増減させることで負荷を分散します。これにより、急激なトラフィックの増加でも柔軟にスケーリング対応が可能です。
- 利点:
負荷分散を通じて可用性を向上させることができます。障害時にも別のインスタンスがバックアップとして機能します。 - 留意点:
複数のサーバーで同時に動作できるように、アプリケーションが分散型アーキテクチャに対応している必要があります。
Amazon EC2 では、任意のスケーリングポリシーの条件に応じて自動的にリソースをスケーリングする、Auto Scaling 機能が備わっています。Auto Scaling のスケーリングアプローチは、「水平スケーリング」として機能し、EC2 インスタンスの数を需要に応じて動的に増減させる仕組みです。
Amazon EC2 Auto Scaling の仕組み
Amazon EC2 Auto Scaling は、主に「Auto Scaling グループ (ASG)」と「スケーリングポリシー」を使用して設定します。
Auto Scaling グループ
Auto Scaling グループ (ASG) は、EC2 インスタンスのグループを管理する基本単位です。Auto Scaling グループでは、以下のようなスケールするインスタンス数を設定します。
- 最小インスタンス数:常に稼動させる最低限のインスタンス数を設定します。
- 最大インスタンス数:トラフィック急増時にスケールアウトできる上限を設定します。
- 希望するインスタンス数:通常時の稼働数を設定します。
例えば、ASG で最小 1 台、最大 10 台を設定した場合、負荷が増えると最大 10 台までインスタンスが追加され、負荷が減ると 1 台まで縮小されます。
ASG について詳しくは、「Auto Scaling グループ」をご覧ください。
画像をクリックすると拡大します
スケーリングポリシー
スケーリングポリシーは、CloudWatch メトリクスと連携して動作し、リソースの増減を決定するルールです。Amazon CloudWatch が継続的に収集する EC2 インスタンスのメトリクス (CPU 使用率、メモリ使用率、ネットワークトラフィックなど) に基づいて、動的に Auto Scaling がトリガーされます。
Amazon EC2 Auto Scaling の動的なスケーリングポリシーは、主に以下の 3 種類が提供されています。
- シンプルスケーリング:
特定の CloudWatch アラーム がトリガーされた時に、定義された数のインスタンスを追加または削除します。
設定例:CPU 使用率が 70% を超えた場合にインスタンスを 1 台追加し、30% 未満になった場合に 1 台削除 - ステップスケーリング:
特定の CloudWatch アラームの値の範囲に応じて、段階的にインスタンス数を増減させます。
設定例:CPU 使用率が 50〜60% の範囲でインスタンスを 1 台追加、60〜70% で 2 台追加 - ターゲット追跡スケーリング:
特定のメトリクス(例:CPU 使用率)の目標値を設定し、その値を維持するようにインスタンス数を自動調整します。
設定例:CPU 使用率を常に 50% に保つようにインスタンス数を増減
スケーリングポリシーの設定により、トラフィックの変動に応じて効率的なリソース運用が可能になります。動的スケーリングポリシーについて詳しくは、「Amazon EC2 Auto Scaling の動的スケーリング」をご覧ください。
なお、Amazon EC2 Auto Scaling では、リソースの利用状況に関わらず、あらかじめ決められた時間に増減させるスケジュールされたスケーリングなど、静的なスケーリングポリシーも用意されています。
Amazon EC2 のスケーリングについて詳しくは、「スケーリングでアプリケーションのコンピューティングキャパシティを増減する」をご覧ください。
他の AWS サービスとの連携
Amazon EC2 はサービス単体でも多くのワークロードに対応する豊富な機能を備えていますが、他の AWS サービスと連携することで、さらに高度な機能や効率化が可能です。
他の AWS サービスとシームレスに統合できる点は、AWS クラウドベースの仮想サーバーである Amazon EC2 の大きな強みと言えます。
画像をクリックすると拡大します
AWS サービスの連携例
ここでは、Amazon EC2 との他の AWS サービスを連携することで、アプリケーション層やデータ層の最適化、セキュリティの向上、運用管理の効率化などの側面で、より堅牢でスケーラブルなクラウドインフラストラクチャを実現する例を紹介します。
アプリケーション層の強化
フロントエンドには Elastic Load Balancing (ELB) を配置し、複数の EC2 インスタンス間でトラフィックを分散します。Application Load Balancer を使用することで、コンテナベースのアプリケーションやマイクロサービスアーキテクチャにも対応できます。また、Auto Scaling と CloudWatch の連携により、トラフィックの変動に応じて自動的にインスタンス数を調整できます。
セキュリティの強化
連携サービス例: AWS WAF、 AWS Shield、 AWS Systems Manager
セキュリティ面では、AWS WAF や AWS Shield との連携により、Web アプリケーションを様々な脅威から保護できます。例えば、EC2 インスタンスの前段に WAF を配置することで、SQL インジェクションやクロスサイトスクリプティングなどの一般的な攻撃をブロックできます。また、AWS Systems Manager を活用することで、パッチ管理やセキュリティ設定の一括適用も効率的に行えます。
データ管理の最適化
連携サービス例: Amazon RDS、 Amazon S3、 Amazon EMR
バックエンドでは、Amazon RDS との連携によってデータベース運用の負担を軽減できます。EC2 インスタンスで処理した静的コンテンツは Amazon S3 に保存し、コスト効率の高いストレージソリューションを実現できます。大規模なデータ処理が必要な場合は、Amazon EMR と連携することで、分散処理フレームワークを簡単に構築できます。
運用管理の効率化
連携サービス例: AWS CloudFormation、 AWS CDK、 AWS Organizations、 AWS Config
Infrastructure as Code (IaC) の観点では、AWS CloudFormation や AWS CDK を使用して EC2 インスタンスを含むインフラ構成をコード化できます。これにより、環境の再現性が高まり、開発からテスト、本番環境まで一貫した構成管理が実現できます。また、AWS Organizations と統合することで、複数の AWS アカウントにまたがる EC2 リソースの一元管理も可能になります。
Amazon EC2 を中心として各種 AWS サービスを適切に組み合わせることで、スケーラブルで安全性の高いクラウドアーキテクチャを構築できます。AWS Well-Architected Framework のベストプラクティスに従いながら、ビジネスニーズに最適な組み合わせを選択することで、より高度で堅牢なシステム構築が可能になります。
その他 Amazon EC2 を中心に据えたアーキテクチャの知見や事例について詳しくは、「Amazon EC2 のリソース」をご覧ください。
まとめ
最後に、本記事で紹介した機能の全体図を見てみましょう。
画像をクリックすると拡大します
Amazon EC2 は、多様な規模のワークロードニーズに適応する豊富なインスタンスタイプ、直感的な AWS マネジメントコンソール、動的な負荷変動に対応する動的なスケーリング、そして高度なセキュリティ機能により、コンピューティングリソースに求められる包括的で柔軟なソリューションを提供します。
Amazon EC2 をより詳しく知りたい方は、製品ページやドキュメントとあわせて、AWS Black Belt オンラインシリーズの YouTube コンテンツ「Amazon EC2 入門」もあわせてご覧ください。
AWS グラレコ解説のその他の記事はこちら
- 選択
- 今話題のブロックチェーンをAWSで実現する仕組みをグラレコで解説 »
- サーバーレスって何が便利なの ? AWS でサーバーレスを構築するためのサービスをグラレコで解説 »
- 機械学習のワークフローってどうなっているの ? AWS の機械学習サービスをグラレコで解説 »
- 外部から AWS のバックエンドサービス利用を実現する仕組みをグラレコで解説 »
- AWS でデプロイの自動化を実現するベストプラクティスをグラレコで解説 »
- コンテナを使ってモノリスを分割する方法をグラレコで解説 »
- クラウドへ移行する理由とそのステップをグラレコで解説 »
- Windows ワークロードをクラウドへ移行するためのベストプラクティスをグラレコで解説 »
- サーバーレスのイベントバスって何 ? Amazon EventBridge をグラレコで解説 »
- サーバーレスで SaaS を構築する方法をグラレコで解説 »
- 「あなたへのおすすめ」はどう生成するの ? Amazon Personalize で簡単に実現する方法をグラレコで解説 »
- クラウド設計・運用のベストプラクティス集「AWS Well-Architectedフレームワーク」をグラレコで解説 »
- 特定の顧客セグメントにメッセージ送信。「Amazon Pinpoint」の仕組みをグラレコで解説 »
- アプリにユーザー認証機能を簡単に追加できる「Amazon Cognito」をグラレコで解説 »
- わずか数分で WordPress サイトを構築できる「Amazon Lightsail」をグラレコで解説 »
- 異なるアプリケーション同士の疎結合を実現。「Amazon SQS」をグラレコで解説 »
- Web アプリを高速に開発できる「AWS Amplify」をグラレコで解説 »
- 機械学習の知識ゼロでもテキストデータを分析。Amazon Comprehend をグラレコで解説 »
- ビジネスデータをまとめて可視化 & 分析。Amazon QuickSight をグラレコで解説
- 人工衛星の地上局を 1 分単位で利用。AWS Ground Station をグラレコで解説
- カオスエンジニアリングで本当にカオスにならないための進め方をグラレコで解説
- GraphQL API を簡単に作成 & 運用。AWS AppSync をグラレコで解説
- IoT 環境を必要な機能を選択するだけで構築。AWS IoT をグラレコで解説
- 高い可用性と耐久性のオブジェクトストレージ。Amazon S3 をグラレコで解説
- サーバーレスでイベント駆動型アプリケーションを実現。AWS Lambda をグラレコで解説
- データサイエンス教育の強い味方。Amazon SageMaker Studio Lab をグラレコで解説
- 高速で柔軟な NoSQL データベースサービス。Amazon DynamoDB をグラレコで解説
- リレーショナルデータベースを簡単・迅速に実現。Amazon RDS をグラレコで解説
- アプリのワークフローを視覚的に構成。 AWS Step Functions をグラレコで解説
- データ保護に使う暗号化キーを一元管理。AWS KMS をグラレコで解説
- アプリケーションへのトラフィックを効率的に負荷分散。Application Load Balancer をグラレコで解説
- AWS で簡単にコンテナアプリケーションを構築 ! Amazon ECS をグラレコで解説
- 大規模データセットも簡単クエリ! Amazon Athena をグラレコで解説
- キャッシュ機能でアプリの高速化を実現 ! Amazon ElastiCache をグラレコで解説
- 使い慣れたプログラミング言語でクラウド環境を構築 ! AWS CDK をグラレコで解説
- ストリーミングデータを簡単にキャプチャ、処理、保存 ! Amazon Kinesis Data Streams をグラレコで解説
- AWS で始める機械学習はじめの一歩 ! AWS の主要な AI/ML サービスをグラレコで解説
- リレーショナルデータベースをサーバーレス化 ! Amazon Aurora Serverless をグラレコで解説
- ML 駆動の検索エンジンで企業の情報管理を革新! Amazon Kendra をグラレコで解説
- オンプレミス、エッジ、どこでも楽々コンテナ管理 ! Amazon EKS Anywhere をグラレコで解説
- 生成 AI アプリケーション開発をもっと身近に、簡単に ! Amazon Bedrock をグラレコで解説
- わずか数クリックで多様な脅威を監視しクラウドを保護 ! 脅威検出サービス Amazon GuardDuty をグラレコで解説
- データの改ざん耐性と変更履歴の検証可能性を実現 ! 台帳データベース Amazon QLDB をグラレコで解説
- 生成 AI x クラウドがもたらす次世代のイノベーション ! AWS Summit Japan Day 1 基調講演をグラレコで解説
- ビジネス向け生成 AI アシスタント Amazon Q Business をグラレコで解説
- 生成 AI コーディングアシスタント Amazon Q Developer をグラレコで解説
- フロントエンドとバックエンドを統合開発 ! フルスタック TypeScript 開発環境 AWS Amplify Gen 2 をグラレコで解説
- AWS へのスムーズな移行を強力サポート ! マイグレーションサービス AWS Application Migration Service をグラレコで解説
- あらゆるワークロードに適応する仮想サーバー Amazon EC2 をグラレコで解説
筆者プロフィール
米倉 裕基
アマゾン ウェブ サービス ジャパン合同会社
テクニカルライター・イラストレーター
日英テクニカルライター・イラストレーター・ドキュメントエンジニアとして、各種エンジニア向け技術文書の制作を行ってきました。
趣味は娘に隠れてホラーゲームをプレイすることと、暗号通貨自動取引ボットの開発です。
現在、AWS や機械学習、ブロックチェーン関連の資格取得に向け勉強中です。
AWS を無料でお試しいただけます