コンテンツにスキップ

Fargate

1. サービス概要

AWS Fargate は、コンテナを実行するためのサーバーレスコンピューティングエンジンである。
ユーザーは、コンテナを実行するための EC2 インスタンスなどのインフラストラクチャを管理することなく、Docker コンテナをデプロイ、実行、スケーリングできる。
Fargate は、コンテナの実行に必要なコンピューティングリソースを自動的にプロビジョニングし、ユーザーはアプリケーション開発とデプロイに集中できる。
これにより、インフラストラクチャの管理コストを削減し、開発者の生産性を向上させることができる。

主なユースケースとして、

  • Web アプリケーションのデプロイ
  • マイクロサービスアーキテクチャの構築
  • API バックエンドの実行
  • バッチ処理の実行
  • 機械学習ワークロードの実行

などが挙げられる。
AWS Fargate は、これらのユースケースに対応するための様々な機能と、AWS の他のサービスとの統合を提供する。

2. 主な特徴と機能

2.1 サーバーレスコンテナ実行

Fargate は、サーバーレスでコンテナを実行できるため、EC2 インスタンスなどのインフラストラクチャの管理が不要である。
ユーザーは、コンテナイメージを指定するだけで、コンテナを実行できる。

2.2 コンテナの自動スケーリング

アプリケーションの需要に応じて、コンテナの数を自動的にスケーリングできる。
これにより、リソースの利用率を最適化し、コストを削減できる。

2.3 柔軟なリソース設定

コンテナに必要な CPU、メモリ、ストレージなどのリソースを柔軟に設定できる。
これにより、アプリケーションの要件に合わせたリソース構成を実現できる。

2.4 Docker イメージのサポート

Fargate は、Docker コンテナイメージをサポートしており、Docker CLI や Docker API を使って、コンテナイメージをプッシュ/プルできる。
Amazon ECR などのコンテナレジストリと統合できる。

2.5 ロードバランシング

アプリケーションロードバランサー(ALB)やネットワークロードバランサー(NLB)と統合することで、コンテナ化されたアプリケーションのトラフィックを分散し、可用性を高めることができる。

2.6 統合性と拡張性

AWS Fargate は、Amazon ECS、Amazon EKS、AWS App Runner などのコンテナオーケストレーションサービスと統合できる。
また、AWS の他のサービス(IAM, VPC, CloudWatch など)とも密接に統合されており、コンテナベースのアプリケーション開発とデプロイメントを効率的に行える。

2.7 セキュリティ

Fargate は、コンテナアプリケーションをセキュアに実行するための様々な機能を提供する。
コンテナイメージの脆弱性スキャン、ネットワーク隔離、IAM によるアクセス制御など、セキュリティ対策が組み込まれている。

3. アーキテクチャおよび技術要素

  1. 開発者は、Docker イメージを Amazon ECR などのコンテナレジストリにプッシュ。
  2. ECS タスク定義または EKS Pod 定義を作成し、実行するコンテナイメージ、リソース、ネットワーク設定などを定義。
  3. Fargate を使用して、コンテナをデプロイ。
  4. 必要に応じて、ロードバランサーを設定し、トラフィックを分散。
  5. Fargate は、コンテナの実行に必要なコンピューティングリソースを自動的にプロビジョニング。

AWS Fargate は、AWS のインフラ上に構築されており、高い可用性とスケーラビリティを提供する。
コンテナの実行に必要なインフラストラクチャは AWS が管理するため、ユーザーはサーバー管理を意識する必要はない。

4. セキュリティと認証・認可

AWS Fargate は、コンテナアプリケーションのセキュリティを確保するために、以下の機能を提供する:

  • IAM 統合: AWS Identity and Access Management (IAM) を利用して、Fargate タスクへのアクセスを制御する。
  • VPC 内での実行: Fargate タスクは Virtual Private Cloud (VPC) 内で実行され、ネットワーク隔離を実現。
  • タスクロール: Fargate タスクに IAM ロールを割り当て、AWS リソースへのアクセスを制御。
  • データ暗号化: コンテナイメージ、タスクデータなどは暗号化される。
  • コンテナイメージの脆弱性スキャン: ECR イメージスキャン機能を利用し、脆弱性を検出。

これらのセキュリティ対策により、コンテナアプリケーションとそのデータを安全に保護する。

5. 料金形態

AWS Fargate の料金は主に以下に基づきる:

  • 仮想 CPU: タスクで使用される仮想 CPU の量に応じて課金。
  • メモリ: タスクで使用されるメモリの量に応じて課金。
  • ストレージ: タスクで使用されるストレージの量に応じて課金。
  • データ転送: データ転送量に応じて課金。

6. よくあるアーキテクチャ・設計パターン

AWS Fargate は、様々なコンテナアプリケーションのデプロイメントに利用できる。
一般的なパターンは以下の通りである:

  • Web アプリケーションのデプロイ: Web アプリケーションをコンテナ化し、Fargate でデプロイし、ロードバランサーでトラフィックを分散。
  • マイクロサービスアーキテクチャ: マイクロサービスごとにコンテナをデプロイし、Fargate で実行。
  • API バックエンド: API バックエンドをコンテナ化し、Fargate でデプロイし、API Gateway と連携。
  • バッチ処理の実行: バッチ処理ジョブをコンテナ化し、Fargate で実行。
  • 機械学習ワークロードの実行: 機械学習モデルをコンテナ化し、Fargate で実行。

7. 設定・デプロイ手順(ハンズオン例)

  1. AWS マネジメントコンソールから Amazon ECS または Amazon EKS を開き、クラスターを作成。
  2. ECS タスク定義または EKS Pod 定義を作成し、Fargate 起動タイプを選択。
  3. 実行するコンテナイメージ、リソース、ネットワーク設定などを定義。
  4. Fargate を使用して、コンテナをデプロイ。
  5. 必要に応じて、ロードバランサーを設定し、トラフィックを分散。
  6. アプリケーションにアクセスし、動作を確認。

8. 試験で問われやすいポイント

8.1 サーバーレスコンテナ実行

  • 特徴: EC2 インスタンスなどのインフラストラクチャの管理が不要。
  • メリット: コンテナイメージを指定するだけで、コンテナを実行可能。
  • 試験対策: サーバーレスのメリット、管理範囲が問われる。

8.2 コンテナの自動スケーリング

  • 機能: アプリケーションの需要に応じて、コンテナ数を自動的にスケーリング。
  • 目的: リソースの利用率を最適化、コストを削減。
  • 試験対策: 自動スケーリングの仕組み、メリットが問われる。

8.3 柔軟なリソース設定

  • 設定項目: CPU, メモリ, ストレージなどのリソースを柔軟に設定。
  • 利点: アプリケーションの要件に合わせたリソース構成。
  • 試験対策: リソース設定の方法、柔軟性が問われる。

8.4 Docker イメージのサポート

  • 連携: Docker CLI、Docker API、Amazon ECR。
  • 利用: コンテナイメージをプッシュ、プル。
  • 試験対策: Docker イメージの利用方法、ECR との連携が問われる。

8.5 ロードバランシング

  • 連携サービス: ALB, NLB。
  • 目的: アプリケーションのトラフィックを分散、可用性を高める。
  • 試験対策: ロードバランサーの設定方法、利用目的が問われる。

8.6 料金体系

  • 課金対象: 仮想 CPU, メモリ, ストレージの使用量、データ転送量。
  • 最適化: リソース使用量の最適化がコスト削減に有効。
  • 試験対策: 料金体系、課金対象が問われる。

8.7 類似・関連サービスとの比較

  • Amazon ECS: コンテナオーケストレーションサービス。Fargate は ECS で利用可能な実行環境。
  • Amazon EKS: Kubernetes をベースとしたコンテナオーケストレーションサービス。Fargate は EKS で利用可能な実行環境。
  • AWS Lambda: イベント駆動型のサーバーレスコンピューティングサービス。Fargate はコンテナベースのワークロードに特化。

8.8 試験で頻出となる具体的な問われ方と答え

  • Q: AWS Fargate は何を提供するサービスか?
  • A: コンテナを実行するためのサーバーレスコンピューティングエンジンである。
  • Q: AWS Fargate でユーザーが管理する必要のあるインフラストラクチャは何か?
  • A: ユーザーは、インフラストラクチャの管理を行う必要はない。
  • Q: AWS Fargate は、どのようなコンテナイメージをサポートしているか?
  • A: Docker コンテナイメージをサポートしている。
  • Q: AWS Fargate でロードバランシングを行うには、どのようなサービスと統合するか?
  • A: アプリケーションロードバランサー(ALB)やネットワークロードバランサー(NLB)と統合する。
  • Q: AWS Fargate の料金はどのように計算されるか?
  • A: 仮想 CPU、メモリ、ストレージの使用量、データ転送量に基づいて計算される。