AWS FargateとEC2の違い

目次

FargateとEC2の違い

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

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

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

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

Fargateとは

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

 

主な特徴

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

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

 

構成

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

基盤サーバーはAWSが管理

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

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

 

OSのupdateで、一時的に使用不可になる?

Fargateはユーザーが手動でOS updateする必要はありません。
しかし、AWS側の基盤更新・セキュリティパッチ・プラットフォームリビジョン廃止により、稼働中のタスクが停止・置き換えされることはあります。

そのため、Fargateでも以下の考慮が必要です。

・1タスク構成なら一時停止の可能性あり
・複数タスク+ALB+適切なECSサービス設定なら影響を小さくできる
・単発バッチは再実行・リトライ設計が必要

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の違い

△上に戻る