ABEJA Tech Blog

中の人の興味のある情報を発信していきます

俺はSSHをしたくない ~ Fargate vs ECS+SpotFleet のPrice比較 ~

この記事は AWS Fargate Advent Calendar 2017 の9日目の記事です。

こんにちは。 service sshd stop 布教活動中の、ABEJAのサービス系インフラを管理しているインフラエンジニアの村主です。

今回AWSからFargateというコンテナマネージドサービスが発表されました。 Fargateの詳しい説明は AWS Fargate Advent Calendar 2017 の等の情報を参照いただければと思います。

タイトルでも書き、昔に こんな記事 を書きましたが、僕はSSHはしたくないし、極論言えばインフラも管理したくありません。

そこで今回のre:InventでFargateが発表されて、EC2やクラスタの面倒みない=SSHしなくてええやん!イェーイ!を夢見て、コスト面の試算を始めました。

CPUとメモリの組み合わせ

FargateはCPUとメモリをある程度柔軟に選択でき、約50通りの組み合わせができます。 CPUとメモリの組み合わせは以下の通り、CPUに合わせて利用できるメモリ量が決まってるようです。

CPU (vCPU) Memory Values (GB)
0.25 0.5, 1, 2
0.5 1, 2, 3, 4
1 Min. 2GB and Max. 8GB, in 1GB increments
2 Min. 4GB and Max. 16GB, in 1GB increments
4 Min. 8GB and Max. 30GB in 1GB increments

Fargateの料金

CPUとメモリ毎の利用料は以下になり、1ヶ月に換算すると概ね以下のような金額になります。

Resource Cost/Hour Cost/Month(744h)
CPU (1vCPU) $0.0506 $37.6464
Memory Values (1GB) $0.0127 $9.4488

オンデマンドとの比較(バージニア)

そしてオンデマンドとの比較をしてみます。(若干計算間違ってるかも。ご了承ください)

Type CPU MEM On-demand Cost(744h) Fargate Cost(744h)
t2.small 1vCPU 2GB $17.112 $56.544
m3.medium 1vCPU 3.75GB $49.848 $73.0794
m4.large 2vCPU 8GB $74.4 $150.8832

オンデマンドと比較すると高く見えますが、オンデマンドのCPU/MEMリソースを100%効率活用した場合の比較なので、 スケジューリングされたコンテナが上手くはまらなければ効率はもう少し落ちると思います。 また、AutoScalingとか入れてると70%や80%でAutoScale発動とか組んでると、さらに20-30%位の効率は落ちると思います。 それでも少し高いかもしれませんが、EC2やクラスタの面倒をみない分手間が減ります。

僕の立ち位置としては、社内のエンジニアにAWSやインフラのノウハウとトランスファーすることが多いので、 インフラの考慮する要素が減ると(例えば、EC2やクラスタの管理等が減ると)エンジニアが少ない労力で たくさんのインフラを管理することが出来るようになる(インフラすら意識しない感じかもしれないけど)ので、 学習コスト等を考えると非常に安いものかと思います。

この時点で積極的に使っていこうと思いました。そう、この時点では。

SpotFleetとの比較

弊社ではECSを使ってるサービスがあるので置き換えられるかな?と思いましたが、よく考えたらSpotFleetも利用しているため、 オンデマンドの価格より少し高いなら、SpotFleetと比較したらもっと高くなっちゃうのでは・・?夢への計画が・・。と思い恐る恐る計算してみました。

  • 注意点
    • 2017/12/7時点でのバージニアの価格です
    • 価格変動するため、以下の金額から増減することは大いにあります
    • あくまで超参考値としてください
    • t2.smallはSpotInstanceがないので省いています 最近tシリーズもSpotInstanceが利用出来るようになったようです!
Type CPU MEM On-demand Fargate SpotFleet
m3.medium 1vCPU 3.75GB $49.848 $73.0794 $5.8776
m4.large 2vCPU 8GB $74.4 $150.8832 $22.3944

愕然としました

参考値としてm3.mediumとm4.largeだけ算出してますが、概ね同じような価格差かと思います。 リソースの非効率分の割合の話や、SpotFleetは価格変動に伴う停止リスクがあるにしても、この差は無いだろう・・。何度も計算しましたが、結果は同じでした。

でも僕は諦めません。 SpotFleet使うまでは無いよね。とか、ここ落ちると流石に・・。という部分にはSpotFleetを使うのを躊躇するので、 そういう部分ではインフラの管理コストを削減するために積極的にFargateを採用して行きたいと思います。 僕は諦めません。

また、そもそもLambdaで無理やりやっているような処理をFargateに置き換える事の相性は良さそうなので、積極的に採用して行きたいと思います。

おすすめ

SpotFleetの金額は見ずに、何も考えずにFargate使う方が幸せになれます。