📝

面談対策 Fargateについて軽く確認するための記事

に公開

概要

面談でFargateについて聞かれることが多い。

面談の直前にさっとこの記事を読んで、Fargateの概要を確認するための記事。

Fargate(ファーゲート)とは?

コンテナをサーバーレスで実行できるサービス。
Docker版ec2。

Fargateの構成要素。

Fargateはクラスター、サービス、タスクの三つで構成される。
クラスターはサービス、サービスはタスクを管理する。

[Cluster]
└─ [Service] ← タスク数やヘルスチェックを管理
└─ [Task 1] ← Dockerコンテナを実行
└─ [Task 2]

クラスター

FargateやEC2のタスクをグループ化する単位。
Fargateではインフラ管理が不要なため、クラスター自体にリソースは紐づかない。

サービス

常に動かし続けたいタスクを管理する仕組み(デーモンのような存在)
クラスターに所属?し、以下のことを行う。

タスク数の維持(例:二つに設定したら常に二つ可能)
ロードバランサーと連携可能(ALB, NLB)など。
デプロイ戦略を管理。

タスク

実際に動くコンテナの実行単位。Task Definition(Dockerコンテナの
設計図)から起動される。
Task Difinitionはタスクを作るためのテンプレート。主に以下を定義する。
・Dockerイメージ
・必要な環境変数
・CPU・メモリ設定
・ポート番号
など

Fargate周辺の構成要素

Fargateでデプロイするには、VPC(特にNAT Gateway)、Security Group、ALBが必要。
Security Gropuは自動で設定されるが、自分で設定することも可能。
NAT GatewayはVPC内に配置され、主にプライベートサブネットの出口として使われる。最近NATが高いためNATを使わない構成もあるが、基本FargateはNATが必要。

ターゲットグループ = ALB/NLBでトラフィックを振り分ける対象をまとめたグループのこと。

[ALB/NLB]
└── Listener (ポート80や443)
└── ルール(例: /api/*)
└── Target Group(ターゲットの集まり)
└── ターゲット(ECSタスクやEC2など)

ターゲットグループで、ヘルスチェック、ポート設定などが可能。

注意点

・EC2と異なり、Fargateはプライベートサブネットに配置する必要がある。
つまりElastic IPを付与することが出来ず、Fargateに外部からアクセスするには、VPC(NAT Gateway)が必要になる。

・cdkでは、ecsとecs_patternsという二つのライブラリをインポート出来る。
ecsはより低レベル、ecs_patternsは塚やすく高レベルなため、出来ればecs_patternライブラリを使いたい。

その他Dockerを使ったアプリ

ECS (Elastic Container Service。Dockerコンテナを管理・実行するためのフルマネージドサービス。FargateもECSのサービスの一つ。)
EKS (Kubernetes, クーバネティス。マイクロサービスを複数Dockerで動かす)
App Runner (Docker版 lambda)

Discussion