AWS
docker
ECS
Fargate

AWS FargateとECSの違いは?

AWS Fargateとは?

ラスベガスで開催された2017年 AWS re:Invent会議で、新しいサービスAWS Fargateを発表した。このサービスを使うことで、実行インフラストラクチャについて考えることなくコンテナを運用できるようになる。

AWS ECSとの違いは?

コンテナベースのサービスと言えばAmazon ECSがあげられる。
ECSとの違いはなんだろうか?一言で言えばEC2インスタンスが不要なコンテナベースのサービスだ。

ECSではコンテナベースのクラスタリングをEC2上で行なっていた。コンテナの設定や必要なリソースの設定はコンソール上で行うためEC2の存在を意識することはなかったが、EC2コンソールを見てみると確かにインスタンスが存在する。

「EC2インスタンスが不要なコンテナベースのサービス」とは要はインフラレイヤーの管理を行わなくてもよくなると言うこと。おそらく裏ではEC2が動いているのだろうが、マネージドでよろしくやってくれるので、我々はアプリケーションレイヤーのみに集中することができますよと言うこと。

コンテナベースのサービスはECSの他にもAWS Batchなどもあるが、これも裏ではECSが動いている。
もちろんさらにその裏ではEC2が動いていた。Fargateはインフラレイヤーが完全にマネージドに移ったと言う意味では他のコンテナサービスと一線を画すものだと思う。

Fargateのメリット/デメリット整理

(メリット)
- インフラレイヤーの管理が不要
 → コンテナはインフラレイヤーを気にしないとか言いつつ、ECSインスタンスの死活監視をCloudwatchでやってたり・・ということがなくなる
- リソースを効率的に使用できる
 → CPU3コア(そんなインスタンスは無いが)のインスタンスにCPU2コアを割り当てたコンテナを乗っけた場合、1コア分のCPUが無駄になる。Fargateではそもそもインスタンスのコア数を考慮する必要が無いため、効率的にリソースを使用することができる。
- スケールが容易
 → 従来であればコンテナのスケールに合わせてEC2インスタンスのスケールも設計しなければ行けなかったが、Fargateでは不要になる。

(デメリット)
- EC2インスタンスに比べ少々お高い
 → ただしメリットでも述べたように効率的にリソースを使うことができるのでコスパはよくなるかも?

終わりに

2017年12月1日時点でus-east-1リージョンでしか使用できません。
近いうちに東京リージョンでも公開される予定らしいですが、基本的にはFargateを使用すれば間違いないかなと思っています。

おしまい。

(2018/06/06追記)
2018年7月中にTokyoリージョンでも使えるようになるみたいです。
https://aws.amazon.com/jp/blogs/news/aws-fargate-tokyo-launch/