同じアプリをECSとEC2で実行する場合、どちらがより安価か? 💸

「コンテナで実行すればコストが削減されるだろう」という考えは、

本当だろうか? 数字で直接確認してみよう。

>

🎯 この記事で扱うこと

  • ECSとEC2の料金体系がなぜ異なるのか
  • 同じパフォーマンス基準でどちらが安価なのか
  • クラスター使用率(Utilization)によって結論が覆る理由
  • Savings Plan、Spotなどの割引オプションまで考慮した現実的な比較
  • 2025年に新しく登場したECS Managed Instancesはどのような位置づけなのか

📌 導入 — 「ECS vs EC2」という質問自体が間違っている?

AWSを使っていると、自然とこのような疑問を抱くようになる。

「同じアプリケーションをEC2に直接デプロイするのと、

ECS(コンテナ)でデプロイするのと、どちらが安いのか?」

しかし、この質問には一つ落とし穴がある。ECSとFargateは競合関係ではない。ECSはコンテナオーケストレーションサービスであり、FargateはECSタスクを実行するためのコンピューティングオプションの一つだ。

つまり、正しい比較対象は以下のようになる。

比較対象 説明
純粋なEC2 VMに直接アプリをデプロイし、インフラをすべて自分で管理
ECS on EC2 EC2インスタンス上でコンテナを実行し、ECSがスケジューリングを担当
ECS on Fargate サーバーレスで、AWSがインフラをすべて管理

この3つを同じパフォーマンス基準で比較してみよう。


🔍 まず料金構造を理解する

💡 EC2 (純粋なEC2またはECS on EC2)

EC2はインスタンス単位で課金される。使用率が20%であろうと100%であろうと、インスタンスが稼働している時間分だけ料金が発生する。

비용 = 인스턴스 시간당 요금 × 실행 시간

例: t3.medium (2 vCPU / 4GB) → 約 $0.0416/hr (us-east-1 オンデマンド基準)

💡 ECS on Fargate

Fargateは、コンテナイメージのプル時点からECSタスクが終了するまで、タスクが要求したvCPUとメモリの使用量に応じて課金される。

비용 = (vCPU 요금 × 사용 vCPU × 시간) + (메모리 요금 × 사용 GB × 시간)

例: 1 vCPU + 2GBタスクを730時間(1ヶ月)実行した場合

  • vCPU: $0.04048 × 1 × 730 = $29.55
  • Memory: $0.004445 × 2 × 730 = $6.49
  • 合計: 約 $36.04/月

同じスペックのEC2 (t3.small 2vCPU/2GB): $0.0208/hr × 730 = 約 $15.18/月

📌 スペックだけ見るとEC2が約2倍安い。しかし、これで終わりではない。


⚖️ 使用率(Utilization)が鍵となる

コスト比較の決定的な変数はEC2インスタンスの使用率だ。

EC2ベースのECSは、選択したインスタンスタイプのメモリと容量に対して固定費用を支払う。実際にワークロードがどれだけ使用しても、インスタンス全体の費用を支払うことになる。一方、Fargateは単一タスクが消費するCPUとメモリに対してのみ課金されるため、実際のリソース要件により近い形で費用が請求される可能性がある。

シナリオ別比較(10 vCPU / 20GBワークロード基準)

使用率 ECS on EC2 (オンデマンド) ECS on Fargate より安価な方
90%以上 約 $350/月 約 $520/月 ✅ EC2
50~60% 約 $350/月 約 $520/月 ✅ EC2
30%以下 約 $350/月 (無駄が発生) 実使用に比例して請求 ✅ Fargateが有利
断続的実行 維持費はそのまま 実行時間のみ課金 ✅ Fargateが圧倒的に有利

あるしきい値までは、Fargateの精密な課金がEC2ベースよりも費用効率が良い。しかし、そのしきい値を超えると、独自のEC2フリートを管理する方がFargateよりも費用効率が良くなる。


💻 実践シミュレーション — 同一アプリ基準

次の条件で直接比較してみよう。

  • ウェブアプリケーション1つ、24時間常時稼働
  • 必要スペック: 2 vCPU、4GBメモリ
  • リージョン: ap-northeast-2 (ソウル)
  • 基準: 1ヶ月(730時間)

EC2直接運用 (t3.medium、オンデマンド)

# ソウルリージョン t3.medium オンデマンド価格確認
aws pricing get-products 
  --service-code AmazonEC2 
  --filters 'Type=TERM_MATCH,Field=instanceType,Value=t3.medium' 
             'Type=TERM_MATCH,Field=location,Value=Asia Pacific (Seoul)' 
  --query 'PriceList[0]'
  • t3.medium (2vCPU / 4GB): 約 $0.052/hr
  • 月額費用: $0.052 × 730 = 約 $37.96
  • Reserved Instance (1年): 約 $22~25/月 (約40%削減)

ECS on Fargate (2 vCPU / 4GB、常時実行)

# ソウルリージョン Fargate 月額費用計算
# vCPU: $0.04656/hr (ソウル基準)
# Memory: $0.00512/GB/hr (ソウル基準)

python3 -c "
vcpu_cost = 0.04656 * 2 * 730
mem_cost  = 0.00512 * 4 * 730
print(f'vCPU 비용: ${vcpu_cost:.2f}')
print(f'메모리 비용: ${mem_cost:.2f}')
print(f'총 Fargate 월 비용: ${vcpu_cost + mem_cost:.2f}')
"
# vCPU費用: $67.98
# メモリ費用: $14.95
# 合計 Fargate 月額費用: $82.93

###

結果要約

オプション 月額費用 備考
EC2 オンデマンド ~$38 直接管理が必要
EC2 Reserved (1年) ~$23 長期コミットが必要
Fargate オンデマンド ~$83 管理不要
Fargate Spot ~$25 中断の可能性あり
Fargate Savings Plan (1年) ~$55 約30%削減

📌 常時稼働の単一ワークロードであれば、EC2が2〜3倍安い


🆕 2025年新オプション — ECS Managed Instances

2025年9月に発表されたAmazon ECS Managed Instancesは、Fargateの運用利便性とEC2の柔軟性を組み合わせたオプションだ。AWSがインフラを管理しながらも、多様なEC2インスタンスタイプにアクセスできる。

Managed Instancesは、EC2料金に時間あたり$0.02の管理手数料が追加される。インスタンスタイプに関わらず手数料は同じだ。つまり、t3.microを使おうとm5.24xlargeを使おうと、$0.02/hrの追加費用が発生する。

EC2を直接管理するのが負担だが、Fargateの価格が負担であれば、良い中間地点となるだろう。


🎭 Fargate Spot — 隠されたカード

バッチ処理、開発環境、ステートレス(Stateless)サービスのように中断を許容できるワークロードは、Fargate Spotで実行すると最大70%の割引が可能だ。

開発/テスト環境や非同期バッチ処理であれば、Fargate SpotがEC2よりもむしろ安価になる可能性がある。


⚠️ 隠れたコスト — コンピューティング以外の項目

Fargateのコンピューティング料金だけを見てコストを予測すると、実際よりも30〜50%少なく見積もってしまうことが多い。コンピューティング費用以外にも以下が追加される。

  • ALB (Application Load Balancer): 約 $16〜25/月の固定費 + トラフィック費用
  • NAT Gateway: 時間あたり $0.059 + データ処理GBあたり $0.059
  • CloudWatch Logs: ログ収集GBあたり $0.76 (収集)、保存GBあたり $0.033/月
  • ECR: コンテナイメージ保存GBあたり $0.10/月

EC2には、これに加えて運用人件費も考慮する必要がある。パッチ適用、セキュリティ設定、オートスケーリング構成などは目に見えないコストだ。


✅ まとめ — いつ何を選択すべきか?

状況 推奨
24時間常時稼働、使用率60%以上 EC2 (オンデマンドまたはReserved)
インフラ管理リソースなし、迅速な開始 ECS Fargate
断続的/バッチワークロード Fargate Spot
EC2の経済性 + 管理の利便性 ECS Managed Instances (2025年新規)
スケールアップ/ダウンが頻繁な不規則なトラフィック ECS Fargate

主要な結論3行要約:

  1. スペック基準の単純比較であれば、EC2がFargateよりも2〜3倍安い。
  2. 使用率が低いかトラフィックが変動的であれば、Fargateがより有利になる可能性がある。
  3. TCO(総所有コスト)の観点からは、運用人件費まで含めて計算して初めて本当の答えが出る。

AWS Pricing Calculator (calculator.aws)で、自身のワークロードスペックを直接入力して比較するのが最も正確だ。公式ツールであるため、リージョン別、購入オプション別に細かくシミュレーションできる。


Comments

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です