Node.js を使う想定で、Docker コンテナを実行するインスタンスを AWS が管理してくれる Fargate と、従来の EC2 のコストを比較してみたところ、案外 Fargate も安かった。t2/t3 系以外のオンデマンドインスタンスを並べる用途なら、Fargate を選択してもコスト観点の問題はなさそう。(2019年6月)
<シミュレーション条件>
- node.js の 1プロセスあたり 1vCPU・メモリ 2GB を使う。
- 間欠実行するバッチ処理ではなくて、24時間稼働し続ける。
- 多数の node.js プロセスを並列実行して、負荷分散する構成。
<価格表>
Fargate の価格表↓
料金 | |
---|---|
per vCPU per hour | 0.05056USD |
per GB per hour | 0.00553USD |
5セントとか0.5セントと言われても、さすがに比較しづらいので、『c5系・t2系を1台、24時間稼働させた場合』の月額と、Fargate の月額を比較してみます。通信費などは除きます。
vCPU | メモリ | c5系 | c5系 | t2系 | t2系 | Fargate |
---|---|---|---|---|---|---|
1 | 2GB | なし | - | t2.small | $22 | $44 |
2 | 4GB | c5.large | $77 | t2.medium | $44 | $89 |
4 | 8GB | c5.xlarge | $154 | なし | - | $177 |
8 | 16GB | c5.2xlarge | $308 | なし | - | $355 |
16 | 32GB | c5.4xlarge | $616 | なし | - | $710 |
※ 2019年6月現在。東京リージョン。
<価格差まとめ>
- Fargate は、t2 系の +100% 増し。
- Fargate は、c5 系の +15% 増し。
<用途別お買い得パターン>
(1)t2/t3 系で済む用途の場合:
- Fargate を使うよりも、t2/t3 系を使ったほうが、だいぶ安い。(半額)
(2)非 t 系が必要で、リザーブドインスタンス・スポットインスタンスが使える場合:
- Fargate を並べるより、c5 を並べた方が、だいぶ安い。
(3)非 t 系のオンデマンドインスタンスが必要で、プロセス数が8本未満の場合:
- Fargate でも c5 系でも、大差ない。
(4)非 t 系のオンデマンドインスタンスが必要で、プロセス数が9本以上の場合:
- 台数を抑えたまま『L→XL→2XL→4XL』とスケールアップさせる方針は、無駄できるのでイマイチ。
- c5.large の台数を2台→4台→8台→とスケールアウトさせる方針は、Fargate より 5〜15%程度安い。
<参考ページ>
- https://aws.amazon.com/jp/fargate/pricing/
- https://aws.amazon.com/jp/ec2/pricing/on-demand/
- https://dev.classmethod.jp/cloud/aws/compare-fees-for-fargat-and-ec2-2019-1/
[追記]
https://qiita.com/nabeken/items/69b47e2d346a61d34176#考察 によると、vCPUが1でも実CPUが2つ見えるとのこと。シングルスレッドの node.js 生だと 2 CPU を使えないので、片方がガラ空きでも他方を使い切ってくれるのかは、不詳。