AWS - Amazon EC2
概要
Amazon EC2 (Amazon Elastic Compute Cloud) とは、クラウド上にOS付きの仮想マシン (VM) を作成できるサービスである。
クラウド上に自身または自社専用のサーバを構築することができる。
このように、クラウド上でOSありの仮想マシン環境を提供するサービスをIaaS (Infrastructure as a Service )と呼ぶ。
Amazon EC2はIaaSの中でも最も広く使用されているサービスであり、AWSの主要サービスの1つである。
Amazon EC2のようなIaaSをオンプレミスサーバと比較したメリットとして、物理的なハードが不要である事によるスペースや初期費用のメリットが挙げられる。
また、それ以外にも以下に示すメリットが得られる。
- 従量制(使用した分)だけ過不足なく料金が請求される。(コストの変動費化)
- 障害への耐性を簡単な設定で確保できる。(可用性)
- 適切な設定により柔軟に性能を向上できる。(パフォーマンス)
- アクセス権限を簡単に設定できる。(セキュリティ)
また、より機能を限定したSaaSやPaaSと比較した場合の特徴としては、「様々なことができるが、何かをするためには自身で逐次設定が必要である」ことが挙げられる。
ただし、近年ではサーバーレス技術を用いて設定管理を簡略化できるFargateやLambda等のサービスに置き換えられることも増えている。
様々なことができ、かつ、料金が安いというAmazon EC2の特徴は多くの企業にとって魅力的である。
EC2の構造
Amazon EC2は大きく分けて、3つの構成要素から成り立っている。
| 名称 | 一般的なPCにおける役割 |
|---|---|
| AMI (OS) | OS (Linux, Windows等) + 一部のミドルウェア |
| インスタンスタイプ | CPU + メモリ (+ ストレージ + GPU) |
| ストレージ (EBS) | ストレージ |
AMI (OS)
AMI (Amazon Machine Images) とは、インスタンスの起動時に実行するOSイメージを表す。
また、ミドルウェアがインストールされたAMIもあり、用途に応じて選択することができる。
AWSがデフォルトで提供するAMI以外にも、サードパーティ製のAMIやユーザが独自に作成できるカスタムAMIと呼ばれる仕組みが存在しており、環境構築の簡略化やバックアップ用途等で使用されている。
AWSがデフォルトで提供するAMIを下表に示す。
また、アーキテクチャも同時に選択できるが、アーキテクチャとインスタンスタイプのアーキテクチャを揃える必要がある。
| 名称 | 分類 | 概要 |
|---|---|---|
| Amazon Linux | Linux | RHEL派生のAmazonがカスタマイズしたLinux |
| SLES | Linux | Slackware派生のLinux |
| RHEL | Linux | RHEL |
| Ubuntu Pro | Linux | Debian派生のLinux |
| Windows Server | Windows | - |
初めて使用する場合は、Amazon Linuxを選択することが推奨される。
ミドルウェア
一般的なのWebサーバ等の用途であれば、OSのみがインストールされたAMIでよい。
以下に示すような特殊用途を想定して、一部ミドルウェアがインストールされたAMIも提供されている。
| AMIの名称 | 概要 | 用途 |
|---|---|---|
| Deep Learning AMI | TensorFlowおよびPyTorchの実行環境(CUDA, GPUドライバ等) | Deep LearningによるAI開発 |
| with SQL Server | SQL Serverがインストールされている | データベースサーバ |
| with .NET 6 | .NETの開発環境やMATEによるデスクトップ環境 | .NETを使用した開発 (Unityを使用したゲーム開発等) |
インスタンスタイプ
サーバ上で処理を実行する装置(CPU, RAM等)を選択する。
CPUおよびRAM等を選択するために一意に付与されたIDをインスタンスタイプと呼び、t2.microのような名称で表される。
名称の解釈を以下に示す。
- 先頭の文字
- インスタンスの種類(ファミリー)
- 用途と対応
- 先頭から2つ目の数字
- 世代
- 数字が大きいほど高スペック
- nano、micro
- サイズを表す。
- 基本的に大きいほど高スペック
| 名称 | 概要 |
|---|---|
| vCPU | 仮想CPUの個数 (詳細なCPUの種類は、Amazon EC2の公式ドキュメントを参照すること) |
| メモリ | 仮想メモリの容量 |
| ネットワーク帯域幅 | EC2外部と通信する際の帯域幅 (通信速度) |
| ストレージ | インスタンスストア(後述)の容量 (EBSではないことに注意する) 通常は0 |
| GPU | GPUの個数 (一般的なサーバ用途では0でよいが、Deep Learningをする場合は必要となる)
|
また、用途とインスタンスタイプの関係の詳細を知りたい場合は、Amazon EC2の公式ドキュメントを参照すること。
例えば、学習用途の場合は、t2.microを選択してよい。
ストレージ (EBS)
一般的なPCにおけるストレージと同様に、Amazon EC2にもストレージを付与する必要がある。
特に、起動用OSがインストールされたルートボリュームは必須である。
Amazon EC2のストレージには、一般的にEBS (Elastic Block Store)というサービスが用いられるが、特殊な用途ではインスタンスストアと呼ばれるサービスも使用される。
| 名称 | 冗長性 | 着脱(アタッチ)可否 | データの永続性 | バックアップ(スナップショット) | 速度(スループット) | 速度(IOPS) |
|---|---|---|---|---|---|---|
| EBS | 可能 | あり | あり | 可 | 高速 | SSDは高速 HDDは低速 |
| インスタンスストア | 不可 | なし | なし | 不可 | EBSより高速 | EBSよりかなり高速 |
スループットとIOPSの違いを以下に示す。
- スループット
- 大きなファイルを一度に読み書きする時の速度
- IOPS
- 細切れのファイルに頻繁に読み書きする時の速度
EBS
EBSは、Amazon EC2に対して自由に着脱(アタッチ / デタッチ)可能なストレージであり、一般的なストレージのように使用することができる。
EBSもインスタンスタイプと似たボリュームタイプと呼ばれる一意の名称から選択することができる。
主なボリュームタイプを下表に示す。
| ボリュームタイプ名称 | 種類 | 耐久性 | スループット (MB/s) | IOPS (回/s) | 容量 | 備考 |
|---|---|---|---|---|---|---|
| gp3 | SSD | 99.8% 〜 99.9% | 1000 | 16,000 | 1[GB] 〜 16[TB] | |
| gp2 | SSD | 99.8% 〜 99.9% | 250 | 16,000 | 1[GB] 〜 16[TB] | |
| io2Block Express | SSD | 99.8% | 1000 | 16,000 | 4[GB] 〜 64[TB] | |
| io2 | SSD | 99.999% | 4000 | 256,000 | 4[GB] 〜 16[TB] | |
| io1 | SSD | 99.999% | 1000 | 64,000 | 4[GB] 〜 16[TB] | 複数インスタンス共有可 |
| st1 | HDD | 99.8% 〜 99.9% | 500 | 500 | 125[GB] 〜 16[TB] | ルートボリューム不可 |
| sc1 | HDD | 99.8% 〜 99.9% | 250 | 250 | 125[GB] 〜 16[TB] | ルートボリューム不可 |
基本的に、HDDタイプのsc1 / st1よりもSSDタイプのgp2やgp3の方が高性能かつ料金が高い。
また、同じSSDタイプでもgp2 / gp3より、io1 / io2の方が高性能かつ料金が高い。
gp2が容量に応じた時間課金のみであるのに対し、gp3は読み書きに伴うIOPSやスループットにも課金される。
ボリュームタイプによる性能差は、スループットよりもIOPSの方が大きいため、IOPSに求められる要件と料金のバランスを見て判断することを推奨する。
スループットやIOPSは、ボリュームの容量によっても変化するため、詳細を知りたい場合はAmazon EC2の公式ドキュメントを参照すること。
なお、EBSはAmazon EC2と一体化して動作するという特性上、同じAZ内のAmazon EC2インスタンスとしか紐付けることができない。
また、io1を除き、1つのEBSを複数のAmazon EC2インスタンスで共有する事はできない。
※スナップショットとは
スナップショットは、EBSのデータをAmazon S3にバックアップする機能のことである。
これは、ユーザのAmazon S3ではなく、AWSが管理するAmazon S3バケットに保存される。
障害時の復旧等に有用な機能であるが、有料であることに注意する。
また、EBSのみで使用できる機能であるため、インスタンスストアでは使用できないことに注意する。
スナップショットによるバックアップの詳細は、AWS_-_Amazon_EC2#Amazon EC2とバックアップを参照すること。