8
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

「Dockerはわかるけど…」から卒業!AWSでコンテナを動かすための30日集中講座 - Day 11: ECSクラスターの設計:EC2とFargate、どちらを選ぶべき?

Posted at

Day 11: ECSクラスターの設計:EC2とFargate、どちらを選ぶべき? ⚖️

皆さん、こんにちは!30日集中講座、Day 11へようこそ。

昨日までの講座では、DockerとAWS CLIを使ってローカルのDockerイメージをECRにプッシュする方法を学びました。これで、アプリケーションをクラウドで動かすための準備が整いました。

ECSには、コンテナを実行するための基盤として、大きく分けて2つの選択肢があります。

  1. Fargate: サーバーレスで運用を簡素化
  2. EC2: 仮想サーバーを自分で管理し、カスタマイズ性を追求

今日は、この2つの起動タイプの特徴を比較し、プロジェクトの要件に応じてどちらを選ぶべきか、その判断基準を明確にしていきます。


1. Fargate vs EC2:選択肢の概要とユースケース

ECS on Fargate

Fargateは、サーバーの管理を完全にAWSに任せるサーバーレスな実行環境です。開発者は、CPUとメモリのリソースを指定するだけで、ECSが自動でコンテナを実行します。

  • メリット:
    • 運用負荷の軽減: EC2インスタンスのプロビジョニング、OSのパッチ適用、スケーリングといったインフラ管理の作業が一切不要になります。
    • コスト管理: コンテナが実際に使用したCPUとメモリの時間に対して秒単位(最小1分)で課金されるため、使った分だけ支払うシンプルで明瞭な料金体系です。
  • デメリット:
    • カスタマイズ性の制限: OSレベルでのカスタマイズや、Dockerデーモンへのアクセスができません。
  • 適しているユースケース:
    • Webアプリケーション(WordPress, Node.js, Python Flask/Django)やAPIサーバー
    • 開発・テスト環境
    • 突発的なトラフィック変動があるサービス

ECS on EC2

EC2は、コンテナを実行するための仮想サーバーを自分で管理する実行環境です。

  • メリット:
    • 高いカスタマイズ性: OSの選択や、Dockerデーモンへの直接的なアクセスが可能です。
    • コスト最適化: リザーブドインスタンスやSavings Plansを活用することで、最大72%のコスト削減が可能な場合があります。
  • デメリット:
    • 運用負荷: EC2インスタンスの管理(パッチ適用、セキュリティ設定、スケーリングポリシーの定義など)を自分で行う必要があります。
  • 適しているユースケース:
    • 高いI/O性能が必要なデータベースやキャッシュサーバー
    • GPUを使用するML/AI処理
    • 特殊なソフトウェアライセンス要件

2. どちらを選ぶべきか?判断のフローチャートと具体例

プロジェクトの要件に応じて、FargateとEC2のどちらが適しているかを判断するためのフローチャートを参考にしましょう。

  • 質問1: インフラ運用の専任者はいますか?
    • NoFargate。サーバー管理の複雑さを気にすることなく、アプリケーション開発に集中できます。
    • Yes → 次の質問へ。
  • 質問2: OSレベルのカスタマイズやコストの徹底的な最適化が必要ですか?
    • YesEC2。ハードウェアを自由に選択できるため、パフォーマンスやコスト要件に柔軟に対応できます。
    • No → 次の質問へ。
  • 質問3: トラフィックは予測可能で、24時間365日稼働しますか?
    • YesEC2。大規模な常時稼働システムでは、リザーブドインスタンスなどを活用することでコスト効率がFargateより高くなる可能性があります。
    • NoFargate。突発的なトラフィック変動にも運用負荷をかけずに対応できます。

【コスト比較例】

  • 開発・テスト環境(低稼働率)
    • Fargate: 約$7-9/月(月100時間稼働)
    • EC2(t3.small): 約$15/月(24時間稼働)
    • 低稼働率ならFargateが有利
  • 本番環境(高稼働率)
    • Fargate: 約$50-60/月
    • EC2(t3.small + RI): 約$10-15/月
    • 常時稼働ならEC2が有利

3. 技術的制約とセキュリティの比較

Fargate EC2
セキュリティ AWSがホストOSを管理。自動でセキュリティパッチが適用され、コンテナ間の分離も確保。タスク単位のIAMロールが簡単に設定可能です。 ホストOSの管理・パッチ適用が必要。iptablesSELinuxなど、より細かいセキュリティ制御が可能。設定ミスによるリスクがある。
技術的制約 Dockerソケットへの直接アクセスや、特権モードでのコンテナ実行はできません。 Dockerデーモンへのアクセスが可能。任意のカスタムAMIも利用可。

4. 導入順序と次へのステップ

多くのプロジェクトでは、以下の段階的な導入順序が推奨されます。

  1. 開発環境: 迅速な構築のためFargateを使用。
  2. ステージング: 本番と同等の環境をFargateで構築し、検証。
  3. 本番環境: 要件に応じてFargateまたはEC2を選択。

最終的な判断を下した後も、継続的な見直しは重要です。

  • 【Fargate選択後のチェックポイント】
    • CloudWatch Logsの設定
    • VPCエンドポイントによるコスト最適化
    • タスクロールの最小権限設定
  • 【EC2選択後のチェックポイント】
    • Auto Scaling設定
    • ECSエージェントの最新化
    • セキュリティグループの設定

明日からは、今日学んだ判断基準に基づいてFargateを選択し、昨日ECRにプッシュしたイメージを実際にECS上で動かすためのタスク定義を作成します。


次回の予告
Day 12: タスク定義とサービスの作成:コンテナをAWS上で動かすための設定

それでは、また明日お会いしましょう!

8
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?