面談対策 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