AWS Fargate は、Amazon ECS および Amazon EKS で使用できるテクノロジーです。これにより、Amazon EC2 インスタンスのサーバーやクラスターを管理せずにコンテナを実行できます。
Fargate を 使用すると、コンテナーを実行するために仮想マシン クラスターを構成、スケーリング、またはプロビジョニングする必要がなくなります。サーバーの種類を選択したり、クラスターのスケーリングをスケジュールしたり、クラスターのパッキングを最適化したりする必要はありません。
Fargate 起動タイプまたは Fargate キャパシティープロバイダーを使用して、Amazon ECS タスクとサービスを実行できます。 Fargate を使用するには、アプリケーションをコンテナーにパッケージ化し、オペレーティング システム、CPU、メモリの要件を指定し、ネットワークと IAM ポリシーを構成して起動します。
コンテナーをホストするために基本的な CPU と RAM の容量を維持する必要はありません。タスクに必要なリソースの量を AWS に伝え、残りのタスクは AWS に任せることができます。 Fargate の各タスクには分離バリアがあるため、基礎となるカーネル、CPU、メモリ、またはエラスティック ネットワーク インターフェイスを他のタスクと共有しません。

Fargate はどのように機能しますか?
Fargate は、コンテナをホストするインフラストラクチャを設定または管理せずにコンテナをデプロイできるようにすることで機能します。どのコンテナイメージを実行するか、および割り当てる CPU リソースとメモリリソースの数を Fargate に指示します。その後、ホスト サーバーは Fargate によって自動的にプロビジョニングされます。コンテナーの実行中は、使用したリソースに対してのみ料金が発生します。
Fargate は、エンドユーザーがコンテナーをホストするサーバーを管理する必要がないため、サーバーレス コンピューティング エンジンです。念のために言っておきますが、サーバーはまだ存在しています。 AWS は単にそれらを管理するだけです。 Fargate を、コンテナを念頭に置いて作成されたわけではない別のサーバーレス コンピューティング サービスである AWS Lambda と混同しないでください (ただし、Lamba はコンテナ イメージのデプロイメントをサポートするようになりました)。

Fargate はどのように役立ちますか?
AWS Fargate は、タスクに必要なコンピューティング、メモリ、その他のリソースの正確な量を計算するため、インスタンスの種類の選択やクラスター容量のスケーリングについて心配する必要はありません。
これにより、コンテナの運用に必要なリソースの料金を使用に応じて支払うことができるため、オーバープロビジョニングや不要なサーバーへの料金の支払いを回避できます。
Fargate タスク (ポッド) は独自のカーネルで実行されるため、ワークロードが分離され、セキュリティが強化された安全で分離されたコンピューティング環境が実現します。
これにより、チームは、サーバーのスケーリングやセキュリティ保護、オペレーティング システムへのパッチ適用などの時間のかかるインフラストラクチャ管理アクティビティに取り組むことなく、ECS または EKS コンテナを使用してアプリを設計および実行できるようになります。
Amazon CloudWatch Container Insights などの他の AWS サービスとの接続が組み込まれている AWS Fargate は、高レベルの可観測性を提供します。複数のサードパーティ テクノロジーを使用して、ログとメトリクスを収集することもできます。
また、Fargate でコンテナを使用すると、AWS の膨大なサービスを効率的に利用できます。
Fargate は、コンテナの要件に合わせてコンピューティング リソースを常に起動および拡張するため、オーバープロビジョニングを防ぎ、使用しないリソースに対して料金を支払う必要がなくなります。節約戦略を計算することもできます。Fargate Spot オプションを使用すると、通常のコストを最大 70% 節約できますが、これは中断可能なアプリケーションにのみ最適です。

Fargate のコンポーネント
クラスター
タスクまたはサービスの論理グループが Amazon ECS クラスターです。クラスターを使用してアプリケーションを分離できます。 Fargate を使用してタスクを実行すると、Fargate がクラスター リソースを管理します。
タスクの定義
タスク定義は、アプリケーションのコンテナーの少なくとも 1 つを説明するテキスト ファイルです。 JSONファイルです。これを使用して、一度に最大 10 個のコンテナを記述することができます。アプリケーションのタスク定義は青写真として機能します。アプリケーションの多数のパラメータを指定します。
たとえば、これを使用して、オペレーティング システム パラメーター、使用するコンテナー、アプリケーション用に開くポート、タスク内のコンテナーで使用するデータ ボリュームを定義できます。アプリケーションの要件によって、タスク定義に使用できる特定のパラメータが決まります。
タスク
タスクは、タスク定義のクラスターレベルのインスタンス化です。 Amazon ECS でアプリケーションのタスク定義を作成したら、クラスター上で実行するタスクの数を選択できます。タスクはサービスの一部として実行することも、別のプロセスとして実行することもできます。
サービス
Amazon ECS クラスターでは、Amazon ECS サービスを利用して、必要な数のタスクを同時に実行および維持できます。何らかの理由でタスクが失敗または停止した場合、Amazon ECS サービス スケジューラはタスク定義に基づいて別のインスタンスを実行します。これは、それを置き換えて、サービス内のタスクの数を正しいレベルに保つために行われます。
オペレーティング システムと CPU アーキテクチャ
Fargate でサポートされているオペレーティング システムは、Amazon Linux 2、Windows Server 2019 Full、および Windows Server 2019 Core です。
ARM と X86_64 は、Amazon ECS タスク定義に使用できる 2 つのアーキテクチャです。 Windows コンテナを使用する場合は、X86_64 CPU アーキテクチャが必要です。対照的に、Linux コンテナを使用する場合は、ARM ベースのアプリケーションに ARM64 アーキテクチャと X86_64 CPU アーキテクチャを使用できます。

EC2 インスタンスを使用した ECS とECS と AWS Fargate
EC2 インスタンス モデル では、コンテナはクラスターの EC2 インスタンス (VM) にデプロイされます。 ECS は、タスク定義の一部であるタスクと組み合わせてそれらを管理します。
長所👍
- ここで使用される EC2 インスタンスのタイプは完全に制御できます。
- スポット インスタンスを使用すると、コストを最大 90% 削減できます。
短所👎
- インスタンスのセキュリティ パッチとネットワーク セキュリティに注意する必要があります。また、クラスター内のスケーラビリティにも責任を負います。
Fargate モデル では、EC2 インスタンスやサーバーについて心配する必要はなくなりました。必要な CPU とメモリ構成を選択すると、Fargate がコンテナをデプロイします。
長所👍
- サーバーを管理する必要はありません。
- AWS は可用性とスケーラビリティを担当しますが、適切なメモリと CPU を選択することをお勧めします。そうしないと、アプリケーションが使用できなくなる危険があります。
- Fargate Spot を使用することにした場合は、Fargate の価格から最大 70% の割引を受けることができます。
短所👎
- AWS Fargate を使用する ECS は、1 つのネットワーク モード (awsvpc) のみをサポートします。その結果、ネットワーク層に対する制御が制限されます。

Fargate を使用しない EKS とFargate を使用した EKS
Fargate モデルを使用しない EKS では、クラスターのサイズを事前に決定する必要があります。ノードは後からいつでも手動で変更できますが、最初から理想的なサイズを指定するのと比べて面倒です。
長所👍
- このモデルでは、HostNetwork や HostPort などの構成変数を指定できるなど、さまざまな方法でより詳細に制御できます。
- Fargate はすべてのリージョンでサポートされているわけではないため、より多くのリージョンでコンテナーを利用できるようにする場合は、Fargate なしで EKS を使用することをお勧めします。
短所👎
- Fargate を使用しない EKS は少し使いにくいです。
Fargate モデルを使用した EKS では、クラスターのサイズを事前に指定する必要はありません。
長所👍
- Fargate を使用した EKS は専用の仮想マシン内で実行されるため、より安全です。特権モードをサポートしていないという事実は、一種のセキュリティ機能です。
- 長い目で見ればそのほうが安いです。
短所👎
- さまざまな点でコントロールが難しくなります
結論
Fargate は非常に強力で成熟したツールです。インフラストラクチャ管理をすべて行うことで、コスト、時間、多大な労力を節約できます。 Fargate は、コンテナーを初めて使用し、アプリケーションを保守するのではなく構築に集中したい場合に特に有益です。