Kubernetes

Fargate ふぁーげーと

AWSコンテナサーバーレスECSEKSオーケストレーション
Fargateについて教えて

簡単に言うとこんな感じ!

コンテナを動かすためのサーバーを「自分で用意しなくていい」仕組みだよ!「アプリを動かして」って頼むだけで、AWSが裏側のサーバー管理を全部やってくれるから、インフラの面倒ごとから解放されるんだ!


Fargateとは

AWS Fargate(ファーゲート)は、AWSが提供するサーバーレスなコンテナ実行環境です。通常、コンテナ(アプリケーションをまとめた箱のようなもの)を動かすには、その土台となるサーバー(EC2インスタンスなど)を自分で用意・管理する必要があります。しかしFargateを使うと、サーバーの準備・スケーリング・パッチ適用といった運用作業をAWSが肩代わりしてくれます。

利用者は「このコンテナに何CPU・何GBのメモリを使わせるか」を指定するだけで、Fargateが自動的に適切なインフラを割り当てて起動してくれます。料金は実際にコンテナが動いた時間とリソース量に応じた従量課金なので、使った分だけ払えばよく、アイドル状態のサーバーに費用がかかる心配もありません。

FargateはAmazon ECS(Elastic Container Service)とAmazon EKS(Elastic Kubernetes Service)の両方で利用でき、コンテナオーケストレーション(複数のコンテナをまとめて管理する仕組み)の基盤として広く活用されています。


Fargateの仕組みと特徴

項目従来(EC2起動タイプ)Fargate
サーバーの準備自分で用意・設定が必要不要(AWSが自動で割り当て)
OSのパッチ管理自分で実施AWSが自動で対応
スケーリング設定インスタンス台数を管理コンテナ単位で自動スケール
料金体系インスタンスの稼働時間コンテナのvCPU・メモリ使用量
セキュリティ境界インスタンス単位コンテナ(タスク)単位で分離
向いているケース高トラフィック・細かい制御小〜中規模・運用負荷を減らしたい

覚え方

Far(遠く)+ Gate(門)」→ 「インフラ管理を遠ざけてくれる門番」とイメージすると覚えやすいです。サーバーという面倒な門番仕事を、AWSが代わりにやってくれるサービスと覚えましょう。

リソースの指定単位(タスク定義)

Fargateではタスク(コンテナの実行単位)ごとに以下を指定します:

タスク定義で指定できる主なリソース
─────────────────────────────────
vCPU  : 0.25 / 0.5 / 1 / 2 / 4 / 8 / 16 vCPU
メモリ: 0.5GB 〜 120GB(vCPUに応じて選択肢が変わる)
─────────────────────────────────
例:vCPU=1, メモリ=2GB → 小規模Webアプリに最適

歴史と背景

  • 2017年11月 — AWS re:Invent 2017にてFargateを発表。コンテナ普及が進む中、「インフラ管理が大変」という課題を解決するサービスとして登場
  • 2018年 — ECSでのGA(一般公開)。当初は米国東部リージョンのみ対応
  • 2019年 — Amazon EKS(Kubernetes環境)でもFargateがサポートされ、対応範囲が大幅に拡大
  • 2020年以降 — 対応リージョンが増加し、Graviton2(ARMベース)プロセッサへの対応でコスト効率がさらに向上
  • 現在 — ECS/EKSどちらでも標準的な選択肢となり、スタートアップから大企業まで広く採用される

コンテナ技術(Docker)の普及とともに「コンテナは使いたいがサーバー管理はしたくない」というニーズが高まったことが、Fargate誕生の大きな背景です。


ECS・EKS・EC2起動タイプとの関係

FargateはECSやEKSの「起動タイプ(Launch Type)」のひとつという位置づけです。以下の図で関係性を整理しましょう。

AWSコンテナサービスの構造 Amazon ECS (コンテナオーケストレーション) Fargate 起動タイプ EC2 起動タイプ Fargateの場合 ・サーバー管理不要 ・タスク単位でリソース指定 ・従量課金(vCPU+メモリ) Amazon EKS (Kubernetes管理サービス) Fargate プロファイル マネージド ノードグループ EKS+Fargateの場合 ・Podごとに分離実行 ・ノード管理不要 ・Fargateプロファイルで制御 共通

ECS vs EKS どちらでFargateを使うべきか?

ECS + FargateEKS + Fargate
学習コスト低い(AWSネイティブ)高い(Kubernetes知識が必要)
柔軟性・移植性AWSに依存マルチクラウド対応しやすい
向いているチームAWSをメインで使うチームKubernetesに慣れたチーム
コスト管理シンプルやや複雑

Lambdaとの違い

よく比較されるAWS Lambda(ラムダ)との違いも押さえておきましょう:

Fargate
  → コンテナを丸ごと動かす
  → 実行時間の上限なし(長時間バッチにも対応)
  → Dockerイメージをそのまま使える

Lambda
  → 関数(コードの断片)を動かす
  → 最大15分の実行制限あり
  → イベント駆動の短時間処理に最適

関連する規格・RFC

規格・仕様内容
OCI(Open Container Initiative)コンテナイメージの標準仕様。FargateはOCI準拠イメージをサポート
CRI(Container Runtime Interface)EKS+Fargate環境でのコンテナ実行インターフェース
AWS Fargate Platform VersionFargateのOS・ランタイムバージョン管理仕様(現行はLinux 1.4.0)

関連用語

  • Amazon ECS — AWSのコンテナオーケストレーションサービス。Fargateの主要な利用先
  • Amazon EKS — AWSのマネージドKubernetesサービス。FargateをノードとしてPodを実行できる
  • コンテナ — アプリと実行環境をまとめた軽量な実行単位。Fargateが動かす対象
  • Docker — コンテナを作成・管理するためのプラットフォーム
  • サーバーレス — サーバーの存在を意識せずにアプリを動かす仕組みの総称
  • AWS Lambda — AWSのサーバーレス関数実行サービス。Fargateと比較されることが多い