Fargate一択だと思っていた私がECS on EC2の重要性に気づいた話

Fargate一択だと思っていた私がECS on EC2の重要性に気づいた話

2026.04.13

AI事業本部/西日本開発チームの片桐です。
私は、 ECS を利用する際に、起動タイプはサーバーレスの Fargate 一択だと、以前は思い込んでました。
今回はそんな私が ECS on EC2 の重要性について気づいたので、まとめて紹介させていただきます。

この記事について

[対象読者]

  • ECS をこれから触る方
  • ECS の起動タイプについて確認したい方

ECS とは

AWS が提供するコンテナオーケストレーションサービスです。
Docker コンテナのデプロイ、管理、スケーリングを行います。

コンテナオーケストレーションとは

コンテナ化されたアプリケーションのデプロイ、スケーリング、ネットワーキングの管理を自動化する技術のこと。
オープンソースの Kubernetes(k8s) などが有名です。


ECS の起動タイプ

ECS にはコンテナを動かすためのリソースの選択肢(起動タイプ)として2つあります。

観点 Fargate ECS on EC2
実態 EC2 なし(サーバーレス) EC2 の上にコンテナを配置
スペック設定 タスク定義のみでOK EC2 とタスク定義の2箇所で必要
OS 管理 AWS が対応 自分で対応
運用負荷 ほぼゼロ 高い

ECS の3層構造

ECS の概念についても簡単に触れておきます。

  • クラスター
    サービスやタスクをまとめる箱。
    複数の Web アプリケーションやバッチ処理などを一つのクラスターで管理します。

  • サービス
    起動するタスク(コンテナ)の維持や、スケーリング、ネットワーク設定や、ロードバランサーとの紐づけを行います。

  • タスク定義
    コンテナの設計図。
    どの Docker イメージ( ECR に保存されたコンテナイメージ)をどのスペック( CPU / メモリ)で起動するか、環境変数やポートマッピング、ログ設定などを行います。

ECS の基本概念を押さえたところで、私が Fargate を選び続けていた理由を振り返ります。

Fargate を選び続けていた理由

ここからは ECS 初学者である私が考えていた、 Fargate のメリットです。

設定箇所が少ない

Docker イメージの作成とタスク定義までが私たちユーザーの設定範囲となり、インフラ層(ホストマシン)の設定は Fargate を選択することで、最適化されます。

ECS on EC2 のように、インスタンスタイプの選択やメモリの設定など、設定不要です。

運用管理が不要

ECS on EC2 で起動した場合に必要な以下の作業がすべて不要です。

  • OS アップデート
  • セキュリティパッチの適用
  • Docker ランタイムの更新
  • ECS エージェントの更新

実際にハマった体験

当初は ECS on EC2 でセットアップしようとしていました。
その際に、理解が乏しかったため下記のような事象が発生しました。

  1. サービス設定時に EC2 のインスタンスを t4g.micro (メモリ 約1GB)で設定
  2. タスク定義時に、コンテナ実行に必要なのは 3GB だったため、 3GB でタスクを設定
  3. ホストマシンのスペックを超えたタスクを起動させる指示が走るため、いくら待ってもタスクが起動しない

ここで、 Fargate に切り替えたら、すぐに起動できたため、ホストマシンの設定が不要な Fargate が好きになり、一番の最適解だと思いました。

Fargate が適さない場合

しかし、 Fargate にもデメリットがあることに気づいてしまいました。

GPU 利用不可

GPU が利用できないため、下記のようなタスクを実行させる場合は処理が遅くなったり、動作しない場合があります。

  • 動画の加工処理
  • 画像処理
  • 機械学習関連

エフェメラルストレージ 最大200GB

ECS 自体ステートレスなサービスのため、あまりコンテナでデータを保存することは少ないと思いますが、場合によっては影響する可能性が出てきます。

エフェメラルストレージ

コンテナの終了・再起動時にデータが消滅する一時的な記憶領域のこと

タスクの CPU / メモリ に対しての課金

長期的かつ大規模な運用になってくると Fargate ではコストがEC2よりも高くなる可能性があります。

Fargate は Compute Savings Plans の適用や、 Fargate Spot による割引が可能ですが、リザーブドインスタンス( RI )は利用できません。
一方、ECS on EC2 ではリザーブドインスタンスや EC2 Spot など、 EC2 の料金オプションをフル活用できます。

料金オプション Fargate ECS on EC2
Spot Fargate Spot EC2 Spot
リザーブドインスタンス 利用不可 利用可能
Savings Plans Compute Savings Plans Savings Plans

ここで、 ECS on EC2 の利用も検討が必要になります。
しかし、 ECS on EC2 の運用管理は負担が大きいと考えていました。
そこでAWSのドキュメントを確認していたところ、有用な選択肢があることに気づきました。

ECS on EC2 マネージドインスタンス

2025年9月にリリースされた選択肢です。
Amazon ECS マネージドインスタンスの発表
これは EC2 のメリットを活かしつつ、 Fargate に近い運用を実現できます

観点 Fargate マネージドインスタンス
実態 EC2 なし EC2 あり(管理は AWS )
インスタンス選定 不要 AWS が最適なものを自動選定
台数管理 不要 AWS が自動で管理
OS 管理 不要 AWS が自動で管理
GPU 利用不可 利用可能
ストレージ 最大 200GB EBS で設定可能
Spot 利用可能( Fargate Spot ) 利用可能( EC2 Spot )
リザーブドインスタンス 利用不可 利用可能
Savings Plans 利用可能( Compute Savings Plans ) 利用可能

Fargate との違いは、 EC2 が存在するかどうかです。
EC2 が存在することにより、 GPU は使えて、ストレージも増やせて、 EC2 の料金体系を利用できます。
そして、インスタンス設定や台数管理、 OS 管理は AWS が行うため、運用負荷も Fargate とほぼ同等です。

ただし、以下の制約があります。

  • インスタンスの最大稼働期間は14日間(セキュリティパッチ適用のため自動ドレイン・置換)
  • カスタム AMI は利用不可( AWS が管理する AMI のみ)
  • SSH 接続不可(デバッグは ECS Exec で代替)

運用負荷が Fargate に近い反面、こうした制約も存在するため、要件に合わせて選択してください。

ECS on EC2 セルフマネージドの選択肢

ここで疑問が生じるのが、セルフマネージドの使い所です。
運用上 EC2 の設定をすべて自分で行いたい場合の選択肢になりそうです。

  • 特定の AMI を使用する
  • インスタンスの配置を管理する
  • 既存の EC2 運用のまま利用する

おわりに

ECS を触り始めた当初は「 Fargate だけでいいのでは?」と思っていました。
設定は楽、管理はストレスフリー、実際に EC2 起因のトラブルも Fargate で即解決していたので。。。

しかし調べていくうちに、 GPU ・コスト最適化など、 Fargate では対応できないケースがあることに気づきました。

1. まず Fargate で始める
   → ほとんどの Web アプリはこれで十分

2. GPU・大容量ストレージ・コスト最適化が必要になったら
   → マネージドインスタンスを検討

3. 特殊なカスタマイズが必要なら
   → セルフマネージドを検討

何事も一つだけではなく、幅広い選択肢があることで、サービスを活用することができます。
今回みたいに、ハンズオン教材だけでなく、リリースノートをみて機能をおさらいするのも選択肢を増やすきっかけになるので、引き続き幅広くキャッチアップしていきます。

参考リンク

この記事をシェアする

関連記事