Edited at

新しいマネージドコンテナサービスAWS Fargateの価格は高いか安いか?ECS/Fargateのコスト最適化を考えてみよう

More than 1 year has passed since last update.

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の数を抑えるのも効果がありますよ。





  1. なぜこの数値を採用したかというと、実際使っているからです。Scale-outの閾値をあまりに高くしてしまうと、追加のTaskが起動することができずMemoryReservationが上昇できなくてScale-outして欲しいときに正しくScale-outしない、ということが起こりえます。 



  2. SpotFleetを使う場合、SpotFleetリクエストの期限などいくつか気にしないといけないことが増えます。