AWS FargateとEC2の違い

目次

FargateとEC2の違い

観点 Fargate EC2
インフラ管理 不要(AWSがおまかせ) 自分で管理
運用の手間 少ない 多い
課金単位 タスクのCPU/メモリ・実行時間 インスタンス稼働時間
細かい制御 できない できる(SSH、チューニング等)
特殊要件 制約あり GPUなど柔軟に対応
コスト 手軽だが割高になりやすい 最適化すれば安くできる
向くケース 運用を楽にしたい・変動負荷 大規模・常時稼働・特殊要件

Fargate(ファーゲート):サーバーレス。インフラ管理をAWSに任せる(おまかせ)。
EC2:自分でサーバー(インスタンス)を管理する(自前運用)。

Fargateは管理の手間がない分やや割高になりやすく、EC2はSpotやリザーブドインスタンス、高い稼働率での運用などでコストを抑えやすい傾向があります。

ただし、Fargateには運用人件費がかからないという見えないメリットもあるため、インフラ管理にかける人的コストも含めてどちらが得かで判断するのが実態に合います。

Fargateとは

サーバーレスのコンテナ実行環境です。コンテナを動かすためのサーバーをAWSが裏側で用意・管理してくれます。

 

主な特徴

・EC2インスタンスの管理が不要(OSのパッチ当て、スケーリング、容量管理など全部おまかせ)
・必要なCPU・メモリを指定するだけでコンテナが動く
・タスク単位で起動し、使った分だけ課金される
・インフラ運用の手間が最小限
・サーバーの細かい設定や制御はできない

インフラ管理から解放されたい運用を楽にしたい場合に向いています。

 

構成

ECSクラスター
 └─ECSサービス
  └─Fargateタスク
   └─コンテナ

基盤サーバーはAWSが管理

利用者は主に次の項目を設定します。

・コンテナイメージ
・CPUとメモリ
・タスク数
・サブネット
・セキュリティグループ
・IAMロール
・ログ出力先

EC2インスタンスの作成やOSのパッチ適用は必要ありません。Fargateではタスクごとに分離された実行環境が用意され、基盤サーバーを利用者が直接管理しません。

EC2とは

自分でEC2インスタンス(仮想サーバー)を用意し、その上でコンテナを動かす方式です。

主な特徴

・インスタンスのタイプ、台数、OS、設定などを自分で管理する
・サーバーへのSSHログインや細かいチューニングが可能
・GPUインスタンスや特殊なインスタンスタイプを使える
・大量・長時間稼働ではコストを抑えやすい場合がある
・リザーブドインスタンスやSpotインスタンスで割引を活用できる
・その分、運用・管理の手間がかかる

細かい制御が必要特殊な要件があるコスト最適化を突き詰めたい場合に向いています。

 

構成

ECSに付かない一般的なEC2

EC2
├─Webサーバー(IIS、Apache、Nginx)
└─バッチサーバー等

これらはEC2上で、OSやアプリケーションを直接動かします。

 

ECSクラスターに付くEC2

ECSのタスクをEC2上で動かす場合、そのEC2をECSクラスターへ登録します。

ECSクラスター
└─EC2(コンテナインスタンス)
  ├─ECSタスク1
  │ └─コンテナ
  └─ECSタスク2
    └─コンテナ

ECSクラスターに登録されたEC2は、ECSではコンテナインスタンスと呼ばれます。

ECS Agentが動作し、クラスターに登録されたEC2が、タスクを配置できる実行基盤になります。

関連の記事

AWS ECSとEKSの違い

△上に戻る