AWS Fargate
サーバーを意識せずにコンテナを実行できるサーバーレスコンピューティングエンジン
何ができるか
AWS Fargate は、コンテナ向けのサーバーレスコンピューティングエンジンです。EC2 インスタンスの選定、プロビジョニング、スケーリング、パッチ適用といったサーバー管理を一切行わずに、Docker コンテナを実行できます。ECS と EKS の両方で利用でき、コンテナに必要な CPU とメモリを指定するだけで、あとは Fargate が適切なインフラを自動的に割り当てます。実行した分だけ課金される従量課金制です。
どのような場面で使うか
マイクロサービスのサーバーレス運用、開発・テスト環境の迅速な構築と破棄、トラフィック変動が大きい Web アプリケーションのバックエンド、定期的なバッチ処理やデータ変換ジョブ、CI/CD パイプラインのビルドタスクなど、サーバー管理の手間を省きたいコンテナワークロード全般で利用されています。 この分野について体系的に学びたい方は、関連書籍 (Amazon) も参考になります。
身近な例え
タクシー配車サービスに例えるとわかりやすいでしょう。自分で車 (サーバー) を所有・整備する代わりに、行きたい場所 (実行したいコンテナ) と乗車人数 (必要な CPU・メモリ) を伝えるだけで、適切な車が自動的に配車されます。乗車中だけ料金が発生し、車の維持費やガソリン代を気にする必要はありません。
Fargate とは
AWS Fargate は、2017 年に発表されたコンテナ向けのサーバーレスコンピューティングエンジンです。従来、コンテナを実行するには EC2 インスタンスを用意し、Docker ランタイムをインストールし、OS のパッチ適用やキャパシティ管理を行う必要がありました。Fargate はこれらのインフラ管理をすべて AWS に委任し、コンテナの定義と実行だけに集中できる環境を提供します。ECS と EKS の起動タイプとして利用でき、既存のコンテナワークロードを最小限の変更で移行できます。
主な特徴
Fargate の最大の特徴は、インフラ管理が完全に不要な点です。EC2 インスタンスの選定、クラスターのキャパシティプランニング、OS のセキュリティパッチ適用といった運用作業がすべて不要になります。各タスクは独立した実行環境で動作するため、他のタスクとカーネルやリソースを共有せず、セキュリティ面でも優れています。オートスケーリングとの組み合わせにより、トラフィックの増減に応じてタスク数を自動調整でき、過剰なプロビジョニングによるコスト浪費を防げます。
EC2 起動タイプとの比較
Fargate と EC2 起動タイプにはそれぞれ適した場面があります。Fargate はサーバー管理が不要で運用負荷が低い反面、vCPU あたりの単価は EC2 より高くなります。EC2 起動タイプはインスタンスの管理が必要ですが、リザーブドインスタンスやスポットインスタンスを活用すれば大幅にコストを削減できます。また、GPU を使う処理や特殊なカーネル設定が必要な場合は EC2 起動タイプが必要です。小規模で運用負荷を最小化したい場合は Fargate、大規模でコスト最適化を重視する場合は EC2 が適しています。
料金体系
Fargate の料金は、タスクに割り当てた vCPU とメモリの使用時間に基づいて計算されます。課金は秒単位で、最低課金時間は 1 分です。vCPU は 0.25 から 16 vCPU まで、メモリは 0.5 GB から 120 GB まで指定できます。Fargate Spot を利用すると、AWS の余剰キャパシティを活用して通常料金から最大 70% の割引で実行できます。中断される可能性がありますが、バッチ処理や耐障害性のあるワークロードに適しています。
はじめかた
Fargate を使い始めるには、ECS のクラスターを作成し、タスク定義で起動タイプに Fargate を指定します。タスク定義では Docker イメージの URL、vCPU とメモリの割り当て、ネットワーク設定を記述します。Fargate ではタスクごとに ENI (Elastic Network Interface) が割り当てられるため、awsvpc ネットワークモードを使用します。サービスを作成してタスク数を指定すれば、Fargate が自動的にインフラを確保してコンテナを起動します。
注意点
- vCPU あたりの単価は EC2 より高いため、大規模な常時稼働ワークロードではコスト比較を行い、EC2 起動タイプとの使い分けを検討すること
- Fargate タスクのストレージはエフェメラル (一時的) であり、タスク終了時にデータが消えるため、永続化が必要なデータは EFS や S3 に保存すること
さらに詳しく知りたい方は、関連書籍 (Amazon) で理解を深められます。