Speee DEVELOPER BLOG

Speee開発陣による技術情報発信ブログです。 メディア開発・運用、スマートフォンアプリ開発、Webマーケティング、アドテクなどで培った技術ノウハウを発信していきます!

エンジニアTGIFでFargateについて話したよ!

こんにちは!
UZOU でエンジニアしてます @hatappiです。

Speee では週に1回社内のエンジニアが集まる エンジニア TGIF を開いています。
コンテンツは持ち回りの LT や飛び入り LT 、業務連絡などを行っており様々な事業部のエンジニアが集まる場になっています。
お酒ではないですが、お菓子や飲み物が用意されていて、ゆったり楽しめる場になっています!!

先月は私の番がまわってきたのでプライベートのサービスで使い始めた Fargate についての話をしました。
Fargate は去年の AWS re:Invent 2017 でお披露目されて、AWS Summit Tokyo 2018 後の7月に東京リージョンにきました。
今回は Fargate を使ってある程度知見がたまったので、実際に UZOU で使ってみたらどうなるかといったLTをしました。

発表時の資料はこちらです↓
speakerdeck.com

このエントリで書くこと

だいたいのことは資料に書いてあるので、このエントリでは補足として ECS で EC2 と Fargate をどう棲み分けるかについて個人的に思ったことを書いていこうと思います。
結論から言うと ECS 上で管理する場合バッチ実行なら Fargate 、常駐させるようなサービスの場合は EC2 で良いのかなと思いました
理由としてはコスト面です。

Fargate は docker pull を開始した時点から ECS のタスクが終了するまでに使用された vCPU およびメモリリソースに基づいて計算され、最も近い秒数に切り上げられます。
そして1 分の最低料金が適用されます。

aws.amazon.com

料金
per vCPU per hour 0.0632USD
per GB per hour 0.0158USD

試算してみる

例として次のスペックで試算してみます。
※ 実際はネットワークの転送量などがかかりますが、今回は省いています。

vCPU: 2vCPU
メモリ: 4GB

Fargate の場合は次のようになります。

vCPU : $0.0632/h * 2(vCPU) = $0.1264/h
Memory : $0.0158/min * 4(GB) = $0.0632/h

合計: $0.1264 + $0.0632 = 0.1896/h

同じようなスペックの t2.medium が $0.0608/h などで時間単位で見ると Fargate のほうが2倍以上コストがかかる計算になります。
数分から1時間などで終わるようなバッチであれば、 EC2 上で実行するよりも下回りの実行環境のメンテナンスをせずにタスクに集中できるので Fargate を使った方がメリットが大きいかと思います。
しかしこれが常時稼働するようなサービスで24時間365日となってしまうと、この約2倍かかるコストは無視できないものになります。

幸いなことに ECS の1つのクラスターの中に EC2 、 Fargate で起動したタスクを同居することができます。
よって常駐させるサービスは EC2 でバッチの実行は Fargate で行うということが同じクラスター内で実現することができます。

このようにお金のコストと実行環境のメンテナンスするコストとのトレードオフになりますが、個人的には ECS 上で管理する場合バッチ実行なら Fargate 、常駐させるようなサービスの場合は EC2 だと思っています。

最後に

Fargate はちょくちょくアップデートされていて2018年8月にはイベントベースのタスクスケジュールがサポートされました。

AWS Fargate が時間とイベントベースのタスクスケジューリングをサポート

個人的には胸熱のアップデートで個人のサービスでも3つくらい設定され毎日元気に動いています。
f:id:hatappi1225:20180926133950j:plain

UZOU でもバッチの実行に ECS を使っているので実行環境を Fargate に移行したいなと思ってたりします。
興味ある方は @hatappi もしくは↓からお声がけくださーい!!!1

www.wantedly.com