Amazon Web Services ブログ
AWS Fargate: サービス概要
AWS上でコンテナを運用管理するお客様の手助けになるようAmazon Elastic Container Service(Amazon ECS)をアナウンスしたのは約3年前でした。Amazon ECSを利用することで、クラスター管理やオーケストレーション用ソフトウェアを運用することについて心配する必要がなくなり、大規模に高い可用性を持ってワークロードを稼働させることが可能になりました。
2017/11/29、AWSは AWS Fargateをアナウンスしました。下回りとなるインスタンス群の管理をせずとも、コンテナを基本的な計算単位として利用することができる技術です。Fargateをご利用いただくことで、コンテナを動かすためにクラスター内の仮想マシンのプロビジョニング、設定やスケールを行う必要はもうありません。Fargateは現在Amazon ECSから利用可能ですが、将来的にはAmazon Elastic Container Service for Kubernetes (Amazon EKS)もサポートする予定です。
Fargateでは、アプリケーションの要件に対して最も近い設定を柔軟に行うことができ、請求は秒単位となります。
Amazon ECSとFargate
Amazon ECSは、コンテナを大規模に稼働させることを可能にします。また、このサービスは、VPC networking、load balancing、IAM、Amazon CloudWatch LogsやCloudWatch metricsといったAWSプラットフォームとネイティブに連携しています。これらの連携により、ECSタスクはAWSプラットフォームの中でファーストクラスオブジェクトとして扱うことができます。
タスクを起動するためには、適切なインスタンスタイプと数を選び、Auto Scalingを設定し、パフォーマンス向上のためにクラスターのサイジングを管理するといったクラスターの立ち上げが必要ですが、Fargateでは、それらを全て忘れることができ、アプリケーションの定義、権限やスケーリングについてのポリシー設定に専念することができます。
上図でお分かりいただけるように、ECSのコンテナ管理機能は同様に利用可能であり、コンテナのデプロイをスケールすることができます。Fargateでは、管理対象はタスクのみです。インスタンスや、Docker daemonやAmazon ECS agentのようなソフトウェアの管理は必要ありません。
Fargate機能はECS内にネイティブに組み込まれており、ECSでFargateを動かすのに新しいAPI等を学習する必要はありません。
Amazon ECSにおいて、Fargateはlaunch typeです。今までと同様にタスク定義を利用してアプリケーションを定義することができます。対照的に、EC2 launch typeでは、サーバクラスタの管理やそのカスタマイズを柔軟に行うことが可能です。
例として、Fargateをlaunch typeに指定したRunTaskコマンド例を以下に記載します:
ecs run-task --launch-type FARGATE --cluster fargate-test --task-definition nginx --network-configuration
"awsvpcConfiguration={subnets=[subnet-b563fcd3]}"
Fargateの主要な特徴をいくつかご紹介します:
リソースベースの課金体系と秒単位の請求
管理するインスタンスは存在しません。タスクによって使用されたリソースの時間に対してのみの請求となります。CPUとメモリに対する課金は秒単位で、1分間の最低利用料があります。
柔軟な設定オプション
Fargateでは、アプリケーションの要件を最適に満たすために、50の異なるCPUやメモリの組み合わせが利用可能です。vCPUあたり2GBから8GBまで、柔軟に割りあてることが可能です。ワークロードは一般用途、計算用途、メモリ最適化に問わず、要件を最適に満たすことが可能です。
ネットワーキング
全てのFargateタスクはお客様のVPCで稼働します。Fargateは、最近リリースされたネットワークキングのawsvpcモードをサポートし、タスクが起動しているsubnet内にそのタスク用のElastic Network Interfaceが確認できます。この機能により、下回りの基盤について心配する必要を無くしながらも、セキュリティグループ、ルーティングやNACLといったVPCの機能を通じてアプリケーションのネットワークポリシーについて全権限を持つことできるという、責任の分解が実現されます。
また、FargateはパブリックIP アドレスをサポートします。
ロードバランシング
Application Load BalancerやNetwork Load Balancerを前面に置いたECSサービスがサポートされています。Fargate launch typeでは、ロードバランサーへ登録する際にFargateタスクのIPアドレスを指定します。
権限の階層
Fargateでは管理するインスタンスは存在しませんが、ECSクラスタ内で誰がタスクを起動したり確認したりできるかを管理することは引き続き可能です。タスクIAM Roleも利用可能です。加えて、ログをCloudWatch Logsに保存したり、Amazon ECR (https://thinkwithwp.com/ecr)からイメージを取得するといった作業の実行権限をECSへ付加するTask Execution RoleをAWSが導入しています。
コンテナレジストリのサポート
Task Execution Roleで シームレスに認証を行うことで、FargateでECRからイメージを取得することが可能になります。同様に、DockerHubのような公開レポジトリも引き続きご利用いただけます。
Amazon ECS CLI
Amazon ECS CLIはECSクラスタとサービスを作成し実行することを簡単にするコマンドを提供しています。最新バージョンのCLIでFargateでタスクやサービスを実行することをサポートしています。
EC2とFargate Launch Typeの互換性
全てのECSクラスターは混合可能で、同じクラスター内にFargateタスクとECSタスクの両方を起動することができます。これにより、異なるアプリケーションを稼働しているチームがそれぞれのペースでFargateへ移行したり、既存のモデルを壊すことなく要件に合った好きなlaunch typeを利用することができます。既存のECSのタスク定義をFargate launch type互換にしてFargateサービスとして動かすことも可能ですし、その逆も可能です。Launch typeを選択することは、一方通行ではありません。
ログと可視化
FargateではアプリケーションのログをCloudWatch Logsに送ることができます。サービスのメトリクス(CPUとメモリの利用率)もCloudWatchメトリクスとして利用可能です。可視化や監視、アプリケーションパフォーマンスの領域での我々のパートナーである、DataDog、Aquasec、Splunk、Twistlock、そしてNew RelicもFargateタスクをサポートしています。
まとめ
Fargateによって、下回りのインフラストラクチャを管理することなくコンテナを実行することができます。Fargateは既にAmazon ECSで利用可能で、2018年にはAmazon EKSでも利用可能となる予定です。Fargateの製品ページを見ていただくか、AWSコンソールで使い始めてみてください。
–Deepak Dayama
原文: AWS Fargate: A Product Overview (翻訳: SA原田)