【AWS】【SAA対策】EC2

# EC2(Elastic Compute Cloud)
## サービス概要
EC2はAWSで最も重要といっても過言ではないサービス。
クラウド上でサイズが変更できるコンピューティングキャパシティーを提供する。
EC2を利用することで、必要な数の仮想サーバーを起動し、セキュリティ/ネットワークの設定、ストレージの管理を実施できる。

## 特徴
- 仮想コンピューティング環境をインスタンスという単位で管理。
- AMIと呼ばれる、OSおよびソフトウェアを事前に設定したテンプレートを既存(標準/AWS Marketplace)の物から利用あるいは、自作可能。
- インスタンスタイプ=CPU、メモリ、ストレージ、ネットワーキングキャパシティーの構成
- インスタンスストアボリューム＝インスタンスを停止/終了すると一時データが削除されるボリューム
- EBS＝永続的ストレージボリューム。インスタンスにアタッチすることで利用。
- セキュリティグループ＝プロトコル、ポート、ソースIP範囲で指定できるファイアウォール
- Elastic IPアドレス＝動的クラウドコンピューティング用の静的なIPv4アドレス
- オンデマンドインスタンス＝従量課金。リザーブドインスタンス＝前払いで値引き（1~3年）。スポットインスタンス＝未使用のEC2インスタンスをリクエストしてコスト削減。


## 種類やタイプ
#### インスタンスファミリー
|                  |   特徴        |   ユースケース      |
|:-----------------|:------------------|:-------------------|
|汎用              | T2,T3=負荷が少ないときに「CPUクレジット」を貯め、突発的に負荷が高まったときに貯めてたCPUクレジットを消する「バースト」機能。| 「ある時間だけ負荷が集中する」といった傾向が見えているWebサイト（T2,T3）。その他、バランス重視のサイト     |
|コンピューティング最適         |高パフォーマンスプロセッサの恩恵を受けるコンピューティングバウンドなアプリケーションに最適 |バッチ処理ワークロード、メディアトランスコード、高性能ウェブサーバーなどコンピューティング負荷の高いアプリケーション   |
|メモリ最適          |              メモリ内の大きいデータセットを処理するワークロードに対して高速なパフォーマンスを実現する |        高パフォーマンスデータベース、リアルタイムのビッグデータ分析、およびその他エンタープライズアプリケーションなどのメモリ集約型アプリケーション      |
|高速コンピューティング  |              ハードウェアアクセラレーター (コプロセッサ) を使用して、浮動小数点計算、グラフィックス処理、データパターン照合などの機能を、CPU で実行中のソフトウェアよりも効率的に実行 |機械学習/深層学習、ハイパフォーマンスコンピューティング (HPC)       |
|ストレージ最適化   |              ローカルストレージの大規模データセットに対する高いシーケンシャル読み取りおよび書き込みアクセスを必要とするワークロード用に設計されている。ストレージ最適化インスタンスは、数万 IOPS もの低レイテンシーなランダム I/O オペレーションをアプリケーションに提供するように最適化されている | NoSQL データベース (例:. Cassandra、MongoDB、Redis)、インメモリデータベース (例: Aerospike)、スケールアウトトランザクションデータベース、データウェアハウジング、Elasticsearch、分析ワークロード |


#### 購入タイプ
|       |  オンデマンドインスタンス |  リザーブドインスタンス   |スポットインスタンス|
|:-----------------|:------------------|:-------------------|:-------------------|
| 概要       | 一般的な従量課金制のインスタンス。 |   1 年あるいは 3 年のコミットメントで購入することができる。オンデマンドインスタンスの料金と比べて Amazon EC2 コストの大幅な割引を受けられる。  |使用料金を入札して安値で使用。入札できないと起動中のインスタンスが停止する。新規の場合はインスタンスが起動できない。|
| 価格          |  起動するインスタンスに対して秒単位でお支払い|         ||
| 支払方法          |            | ・**すべて前払い** : 期間の開始時に全額が支払われ、使用時間数に関係なく、残りの期間にその他のコストや追加時間課金は生じません。<br>**・一部前払い** : 料金の一部を前払いする必要があり、期間内の残りの時間は、リザーブドインスタンス が使用されたどうかにかかわらず、割引された時間料金で請求されます。<br>**・前払いなし** : リザーブドインスタンス が使用されたどうかにかかわらず、期間内のすべての時間は割引時間料金での請求となります。前払い料金は必要ではありません。<br>リザーブドインスタンス の前払い額を高く設定するほど、より多くの費用を節約できる。  ||
| ユースケース            |短期間、不規則なワークロードがあり中断できないアプリケーション |長期使用が確定しており、リソースの需要が固定している。 |後回し可能な処理を行う場合など。|
| 用途      | 開発、テスト環境など |   本番環境、長期稼働が確定したシステム  |突然停止、稼働延滞が起きても問題ないシステム|

＊1 時間 につき USD 単位で一定の使用量を守り、割引を得る、Savings plansもある。

#### リザーブドインスタンスの購入クラス
|     | スタンダード| コンバーティブル |
|:-----------------|:------------------|:-------------------|
| 概要         |  最大の割引を提供するが、変更のみを行うことができる |   スタンダード リザーブドインスタンス より金額が高いが、異なるインスタンス属性を使用する別のコンバーティブル リザーブドインスタンス と交換できる。    |

## ベストプラクティス
- Dedicated Hostは完全に専用で利用できる物理サーバーのため、ソフトウェアライセンスの条項で物理コアなどを制限しているときに有用。
- プレイスメントグループ=EC2インスタンスの配置方法の戦略。クラスター（単一AZ内インスタンスグループ化）、パーティション（論理パーティション分散）、スプレッド（電源隔離ネットワーク配置グループ）の3つがある。
- ハイバネーション機能により、インスタンスを休止し、セットアップ状態で再開できる。
- EC2の災害復旧ソリューションとしてインスタンスのAMI作成、別リージョンへのコピー。
- インスタンスにタグを追加し、IAMポリシーでタグへのアクセス定義をし、アクセス制御。
- 常時稼働しているインスタンスが複数ある場合、リザーブドインスタンスを使うことでコスト削減。
- 処理時間がかかるが、途中でアプリケーションが中断してもよい場合、スポットインスタンスを選択することで、費用対効果が高くなる。
- 高負荷による処理性能に限界が発生した場合、AutoScalingによる拡張は一時的なもののため、コストを抑えたい場合はスポットインスタンスを利用する。（長期的な対応には不向き）
- EC2インスタンス間の通信がうまくできない場合、セキュリティグループの通信許可がされているかを確認する。
- EC2インスタンスのAMIを別リージョンにコピーすることで、リージョンによる障害発生時に低コストでEC2インスタンスの復元が可能。（定期的に実施することが推奨。）*EBSのスナップショットのみではEBS内のデータのみのため、インスタンスの設定などはコピーできない。
- リザーブドインスタンスは1年または3年のため、期限切れの前にPJが終了したり、現在の容量が不要な場合にはマーケットプレイスで販売することでコスト削減できる。




## 参考例
## 用語