AWS Fargate Advent Calendar 2017 の10日目の記事です。昨日は 俺はSSHをしたくない ~ Fargate vs ECS+SpotFleet のPrice比較 ~ でした。 ネタ被ったァ!
Fargate の価格
1vCPU 1時間あたり$0.0506、1GBメモリ 1時間あたり$0.0127
From https://aws.amazon.com/jp/blogs/news/aws-fargate/
これだけです。高いか安いか考察してみましょう。
EC2 インスタンスのオンデマンド価格との比較
us-east-1(N.Virginia)の価格 を見てみましょう。 Fargate価格 欄は上記のFargateの価格で同じvCPUとメモリを確保した場合の価格です。
インスタンスタイプ | vCPU | メモリ(GB) | EC2価格 | Fargate価格 | 倍率 |
---|---|---|---|---|---|
m5.large | 2 | 8 | $0.096/h | $0.2028/h | x2.11 |
m4.large | 2 | 8 | $0.100/h | $0.2028/h | x2.03 |
m3.large | 2 | 7.5 | $0.133/h | $0.1965/h | x1.48 |
c5.large | 2 | 4 | $0.085/h | $0.152/h | x1.79 |
c4.large | 2 | 3.75 | $0.100/h | $0.1488/h | x1.49 |
c3.large | 2 | 3.75 | $0.105/h | $0.1488/h | x1.42 |
r4.large | 2 | 15.25 | $0.133/h | $0.2949/h | x2.22 |
r3.large | 2 | 15 | $0.166/h | $0.2917/h | x1.76 |
x1e.xlarge | 4 | 122 | $0.834/h | $1.7518/h | x2.10 |
m5シリーズであれば価格は性能と線形なので、たとえばm5.24xlargeでも倍率は同じx2.11になるためとりあえず比較しやすい上記に絞りました。
最新世代のm5やr4と比べて、おおむね2倍強の価格です。
Fargate高くない!? と思ったアナタ。ちょっと待ってください。
ECS Cluster AutoScaling構成との比較
多くの場合、ECSではそのメリットを享受するためにAutoScaling構成を取ります。たとえば、
- MemoryReservation >= 60% で Scale-out
- MemoryReservation < 30% で Scale-in
と設定するとしましょう1。この場合、実際に確保されるメモリ容量の割合は6割を超えません。
簡単のため、ECSでのリソース利用率はvCPU・メモリともに上記の中央値である45%程度であると仮定しましょう。
Fargateは 割り当てたvCPU・メモリに対する課金 ですので、それに対応するための計算です。
インスタンスタイプ | vCPU45% | メモリ45% | EC2価格 | Fargate価格 | 倍率 |
---|---|---|---|---|---|
m5.large | 0.9 | 3.6 | $0.096/h | $0.0913/h | x0.95 |
m4.large | 0.9 | 3.6 | $0.100/h | $0.0913/h | x0.91 |
m3.large | 0.9 | 3.375 | $0.133/h | $0.0884/h | x0.66 |
c5.large | 0.9 | 1.8 | $0.085/h | $0.0684/h | x0.80 |
c4.large | 0.9 | 1.6875 | $0.100/h | $0.0670/h | x0.67 |
c3.large | 0.9 | 1.6875 | $0.105/h | $0.0670/h | x0.64 |
r4.large | 0.9 | 6.8625 | $0.133/h | $0.1327/h | x1.00 |
r3.large | 0.9 | 6.75 | $0.166/h | $0.1313/h | x0.79 |
x1e.xlarge | 1.8 | 54.9 | $0.834/h | $0.7883/h | x0.95 |
こうして見ると、 Fargateは非常に妥当な値付け であり、少なくとも高くないか やや安い 、と言えそうです。
さいごに
m5/r4シリーズのインスタンスが元々コスパ高いからSpotFleetで使おう
ECS/Fargateを使うときのコスト最適化については、こんな感じになりそうです。
- SpotFleetを使っている場合にはそのままSpotFleetを使うのが良い
- オンデマンドインスタンスでAutoScaling Groupを作っているなら、Fargateに乗り換えると良い
オンデマンド価格でECSを使っているならFargateに乗り換えない理由はありませんね!また、エンジニアの稼働を減らすことでコストメリットが出るなら、SpotFleetからFargateに乗り換えるのも十分アリなのでは、と思います2。
ECS/Fargateを利用する場合には、他に ALBの利用料金 も発生します。コストを計算する場合にはそちらの考慮もお忘れなく!ALBの数が増えるとその分コストも増えますので、パスベースルーティングやホストベースルーティングを活用してALBの数を抑えるのも効果がありますよ。