Amazon Elastic Compute Cloud (以下、Amazon EC2) は、AWS の中で最も広く使用されているサービスの一つです。
この記事では、Amazon EC2についての概要を紹介し、メリットや関連機能について解説していきます。
Amazon EC2 の概要
Amazon EC2は、クラウド上に仮想サーバーインスタンスを構築するためのコンピューティングサービスで、ユーザー自身で管理が可能です。
作成されるサーバーは「EC2インスタンス」と呼ばれ、次のような特徴があります。
- 作成時に「タイプ」「OS」「インスタンスサイズ」「ストレージ」「帯域幅などのオプション」を選択することができる
- ユーザーは自分自身の仮想環境を構築し、独自のアプリケーションやサービスを実行することができる
- 手動で起動・停止することや、自動的にスケーリングすることもできる
- 自社で管理するデータセンターやオンプレミス環境と組み合わせて利用することも可能
- AWSによって管理されるインフラストラクチャ上に構築されているため、セキュリティや可用性、拡張性などの課題を気にすることなくアプリケーションを構築することができる
- AWSの他のサービスと組み合わせることで、柔軟な運用を実現することが可能
Amazon EC2を利用するメリット
オンプレでサーバーを立てる場合と比較して、EC2インスタンスを構築する場合のメリットを見てみましょう。
コスト効率
使用時間や使用量に応じて課金されるため、必要な時に必要なだけのリソースを使用することができます。
オンプレの場合は、あらかじめサイジングした最大量のキャパシティを確保する必要があるため、大きな初期投資が必要となります。
スケーラビリティ
アプリケーションのトラフィックに応じて、インスタンスをスケールアップまたはスケールダウンすることができます。スケールアップはCPUやメモリの増強、スケールダウンは反対に減らすことを指し、AWS Management Console(以下、マネジメントコンソール)から操作することで、わずか数分で変更が可能です。
オンプレ環境の場合は、ハードウェア自体の増強になるため、パーツ購入後に物理的に拡張するか、ハードウェア自体を上位のものに買い替える必要があります。そのため、意思決定から拡張完了まで数週間から数カ月かかることもあります。
仮想化されている環境では、仮想化基盤が提供するコントロールパネルを使い、数分でスケールアップやダウンが可能です。Amazon EC2では、ほぼ無制限にキャパシティの確保ができますが、自社で用意した仮想化環境の場合は、ハードウェア的なキャパシティ上限を超えることはできません。
フレキシブルな構成
様々なオペレーティングシステム、アプリケーション、ミドルウェアをサポートし、構成をカスタマイズすることができます。
EC2インスタンスはOSインストール状態のサーバーと同等なため、自由に構成を決めることが可能です。OSについても、WindowsServerやLinuxなど豊富な種類が用意されています。
その点では、オンプレとの違いはほとんどありません。
フルコントロール
インスタンスの起動、停止、削除、アップグレードなど、インスタンスに対する操作を自分で行うことができます。操作はマネジメントコンソールまたはAPIやCLIを通じて行うことができます。
APIやCLIを通じて制御できるということは、インフラ環境をプログラム的に扱うことができるということです。オンプレ環境との大きな違いということができます。
セキュリティ
豊富なセキュリティ機能を提供し、インスタンスやデータを保護することができます。セキュリティグループやAWS ShieldによるDDoS対策など、AWSにて用意しているサービスを通じてセキュリティ対策を強化することが可能です。
オンプレではすべてのセキュリティ対策を自社で行う必要があるため、労力もコストもかかります。この負担を軽減できるのは大きなメリットとなります。
EC2 インスタンスの利用用途
Amazon EC2は、多くのタイプのワークロードに適しており、様々な用途で利用されています。
Webアプリケーションのホスティング
Webアプリケーションのホスティングに適しています。Apache、NGINX、IISなどのWebサーバをインスタンスにインストールし、アプリケーションを実行することができます。WordPressやMovableType、EC-Cubeなどのパッケージソフトをインストールして利用することも可能です。
データベースサーバ
リレーショナルデータベースやNoSQLデータベース、Big Data分析などのワークロードに適しており、MySQL、PostgreSQL、MongoDBなどのデータベースをインスタンスにインストールし、データを保存することができます。
フルマネージド型のデータベースサービスのRDSも用意されているため、費用や要件に応じて使い分けを行っていきます。
バッチ処理とビッグデータ処理
バッチ処理やビッグデータ処理に適しており、Apache HadoopやApache Sparkなどのフレームワークをインスタンスにインストールし、大量のデータを処理することができます。
フルマネージド型のAWS BatchやEMRなどのサービスもあるので、こちらも必要に応じて使い分けが必要です。
ゲームサーバ
ゲームサーバに適しており、Unity、Unreal Engineなどのゲームエンジンをインスタンスにインストールし、ゲームを実行することができます。
DevOps
DevOpsに適しており、Jenkins、Ansible、ChefなどのDevOpsツールをインスタンスにインストールし、自動化や継続的インテグレーションなどを実行することができます。
Amazon EC2の関連サービス
Amazon EC2は以下の関連サービスと組み合わせることで、より高い可用性、スケーラビリティ、セキュリティを実現します。
Elastic Block Store (EBS)
EC2インスタンスに接続するためのブロックレベルのストレージサービスで、インスタンスのストレージを永続化します。
EC2インスタンスのストレージとして利用することが可能で、スナップショットによるバックアップや復元などに対応しています。また、サイズ変更なども用意に行うことが可能です。
Elastic Load Balancing (ELB)
EC2インスタンスに対してのトラフィックをバランスさせるためのサービスで、アプリケーションのスケーラビリティを向上させます。
AWS Certificate Manager (ACM) を利用して、AWSが発行する無料SSL証明書を利用することができます。また、AWS WAFを付けてWEBサイトのセキュリティ向上を行うことも可能です。
Auto Scaling
EC2インスタンスのスケールアップやスケールダウンを自動化するためのサービスです。あらかじめ設定した台数を維持することや、閾値を超えた場合に自動で台数を増やすなどして、アプリケーションのパフォーマンスを維持します。
Elastic IP
EC2インスタンスに固定IPアドレスを割り当てるためのサービスです。
Virtual Private Cloud (VPC)
プライベートなネットワークを構築するためのサービスです。インスタンス間の通信に関するセキュリティを保護します。
CloudWatch
EC2インスタンスに対して、リソースの使用状況やパフォーマンスを監視するためのサービスです。インスタンスの状態を監視し、必要に応じてアクションを起こすことも可能です。
EC2 インスタンスのセキュリティ
EC2インスタンスは、AWS上に構築される仮想サーバーであり、インスタンスを管理するためにはセキュリティに対する注意が必要です。
セキュリティグループ
EC2インスタンスは、セキュリティグループと呼ばれる仮想ファイアウォールを使用して、インバウンド/アウトバウンドのトラフィックを制御することができます。セキュリティグループによって、特定のIPアドレスやプロトコルなどからのアクセスを許可することができます。
Network Access Control Lists (ネットワークACL)
Network Access Control Lists (ネットワークACL)を使用することで、VPC上のサブネットレベルのアクセスを制御することができます。ネットワークACLによって、特定のIPアドレスやプロトコルなどからのアクセスを許可することができます。
Key Pair
EC2インスタンスは、秘密鍵と公開鍵を使用した鍵ペア認証を使用します。鍵ペアを使用することで、特定のインスタンスに対してのみアクセスすることができます。
IAM Role
AWS Identity and Access Management (IAM) Roleを使用することで、EC2インスタンスに対するアクセス制御を行うことができます。IAM Roleを使用することで、特定のアクションに対してのみアクセスすることができます。
Amazon Machine Images (AMI)
Amazon Machine Images (AMI)は、EC2インスタンスを構築するためのテンプレートであり、OSやアプリケーションなどがインストールされています。AMIは、インスタンスを作成するイメージとしても利用が可能なため、定期的なスナップショットを取得し、AMIから復元することが出来ます。
EC2 インスタンスの作成や管理
マネジメントコンソールへログインして、対象サービスからインスタンスの作成やスケールアップ/ダウン、インスタンスのスナップショット、インスタンスのステータスの監視などを行うことができます。またはAPIやCLIを通じて、操作することも可能です。
EC2 インスタンスの料金
EC2インスタンスの利用料金は「インスタンスタイプ」「インスタンスサイズ」「リージョン」「使用量」「購入オプション」の5要素に応じて異なります。
Amazon EC2のインスタンスタイプ
EC2インスタンスには、様々なタイプがあります。それぞれのタイプは、特定の用途や性能要件に合わせて選択が可能です。
インスタンスタイプは次のように表されます。
例)m5.large
それぞれ、次の意味を表します。
- m:インスタンスタイプ
- 5:世代
- large:インスタンスサイズ
世代は数字が大きいものほど新しく、性能が向上して、低価格で利用できるようになっています。
インスタンスタイプでは、vCPUやメモリ、ネットワークなどの上限が定められています。
代表的なインスタンスタイプについて、下記で説明していきます。
汎用型インスタンス (T3, M5, M6G, ,M6I, M6A 等)
汎用型インスタンスは、一般的なワークロードに適しています。このタイプは、CPUとメモリの比率が均等になっているため、一般的なアプリケーションに適しています。
ただし、t系インスタンスはCPU保証のないインスタンスとなるため、CPU利用率の高い環境での利用には適しません。ワークロードの特徴が不明な場合は、本番環境ではm系のインスタンスをおすすめしています。
メモリ優先型インスタンス (R7IZ,R6A, R5, R5A 等)
メモリ優先型インスタンスは、大量のデータを扱うワークロードに適しています。このタイプは、大容量のRAMを搭載しているため、データベースやキャッシュなどのワークロードに適しています。
CPU優先型インスタンス (C7GN, C7G, C6IN, C5 等)
CPU優先型インスタンスは、高負荷のワークロードに適しています。このタイプは、高性能のCPUを搭載しているため、高負荷のワークロードに適しています。
GPUインスタンス (P3, P3DN)
GPUインスタンスは、グラフィックスや計算処理に特化したワークロードに適しています。このタイプは、NVIDIA GPUを搭載しているため、機械学習や画像処理などのワークロードに適しています。
ARMインスタンス (A1, M6G)
ARMインスタンスは、特定のワークロードに適しています。このタイプは、ARMプロセッサを搭載しているため、軽いワークロードに適しています。
INF1インスタンス
Inf1インスタンスは、機械学習に特化したワークロードに適しています。このタイプは、高性能のInferentiaチップを搭載しているため、高速な推論処理が可能です。
G4インスタンス
G4インスタンスは、グラフィックスや機械学習に特化したワークロードに適しています。このタイプは、NVIDIA T4 Tensor Core GPUを搭載しているため、高速な推論処理やグラフィックス処理が可能です。
F1インスタンス
F1インスタンスは、FPGA(Field Programmable Gate Array)を搭載したワークロードに適しています。このタイプは、FPGAを搭載しているため、高速な推論処理やカスタマイズ性の高いワークロードに適しています。
インスタンスサイズ
CPUやメモリ割り当て量に応じて、インスタンスのサイズが決まります。サイズと各スペックの対象を下記表にまとめます。※インスタンスタイプによって若干異なる場合があります。
インスタンスサイズ | vCPU | メモリ | 備考 |
---|
nano | 2 | 〇 | t系 |
---|
micro | 1 | 1 | t系 |
---|
small | 2 | 2 | t系 |
---|
medium | 1 | 4 | m系 |
---|
large | 2 | 4 | m系 |
---|
xlarge | 4 | 16 | m系 |
---|
2xlarge | 8 | 32 | m系 |
4xlarge | 16 | 64 | m系 |
8xlarge | 32 | 128 | m系 |
12xlarge | 48 | 192 | m系 |
16xlarge | 64 | 256 | m系 |
24xlarge | 96 | 384 | m系 |
32xlarge | 128 | 512 | m系 |
48xlarge | 192 | 768 | m系 |
リージョン
リージョンとは、地理的に分割されたAWSの所有するデータセンター群のことです。どのリージョンにインスタンスを作成するかによっても、料金は変わってきます。
詳細は「覚えておくと良い用語集」をご確認ください。
使用量
インスタンスの起動時間によって課金されていきます。AWS公式サイトからは、1時間稼働した場合の料金を確認することができます。
購入オプション
EC2の支払いには5通りの方法があります。それぞれ使用条件や期間に応じたディスカウントもあるので、自分に合った支払い方法を選ぶことが大切です。
オンデマンドインスタンス
インスタンスを使用した時間に比例して、利用料金が決まります。このオプションは、インスタンスの使用量が不確定な場合に適しています。
リザーブドインスタンス
1~3年の期間、インスタンスタイプとリージョンを含むインスタンスを事前購入する契約をすることで、ディスカウントを受けることができます。このオプションは、使用量が一定または予測可能で、最低の利用期間が確定している場合に適しています。
スポットインスタンス
インスタンスを市場価格で購入し、インスタンスが解放された場合には、料金が変更されるオプションです。未使用のインスタンスをリクエストして使用し、AWS側が必要としたときには中断されることがある分、大幅なディスカウントを受けられます。このオプションは、短期間に多くのリソースを使用する場合や突然インスタンスが停止しても問題ないワークロードに適しています。
SAVINGS PLANS
1~3年の期間、1時間あたりUSD単位で一定の使用量を契約することによりディスカウントをうけることができます。使用量が一定以下で、最低の利用期間が確定している場合に適しています。
DEDICATED HOSTS
インスタンスの実行のみを目的とした物理ホストに対して契約します。この物理ホストは契約者の専有環境となります。
まとめ
この記事では、Amazon EC2について説明していきました。
EC2インスタンスは、高いスケーラビリティとコストメリットを活かして、様々なワークロードで利用が可能なサービスです。AWSの中でも最も利用頻度が高いサービスであり、中心的なサービスとなるので、メリットや料金体系をしっかりと抑えておきましょう。
また、AWS全体について気になる方は「AWSとは?初心者の人にもわかりやすく解説」もご覧ください。