16
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ElixirAdvent Calendar 2022

Day 13

AWS Copilot で Phoenix Framework の本番環境を構築する コスト・料金編

Last updated at Posted at 2022-06-08

はじめに

以前、 Phoenix Framework を AWS Copilot によって AWS 上にデプロイしました

これを本番運用するとなると、以下の点を考慮する必要があります

というわけで、数回に分けて検証、実装した内容を紹介していきます

今回は コスト・料金編 です

AWS Copilot で作られるもの

今回は Workload type に Load Balanced Web Service を選択した場合です

  • ECR
  • ECS
  • ELB
  • Route53
  • CloudFormation (AWS 内でのみ動作するため無償)
  • IAM Role (無償)
  • VPC (NATゲートウェイなどは作らないためノーコスト、のはず)

ECR

デプロイするコンテナイメージは ECR に保存されます

コンテナイメージのプッシュ時(ECRから見たデータ受信)は無料です

また、 AWS 内であればプル(ECRから見たデータ送信)も無料になります

したがって、ストレージにかかる料金だけが対象になります

ストレージ料金: 1 GB/月あたり 0.10 USD

コンテナイメージが 1GB なら 1月 0.10 USD なので、ほぼ無視していい金額です

ECS

デプロイしたコンテナイメージは ECS の Fargate で動作します

東京リージョンで Linux/X86 の場合

単位 料金
1 時間あたりの vCPU 単位 0.05056 USD
1 時間あたりの GB 単位 0.00553 USD

EC2 の m6g.xlarge 相当と仮定すると、

  • vCPU = 4
  • メモリ = 16GB

1ヶ月を 730 時間、2台でクラスタリングするとしたとき、 1ヶ月で 60.83 タスク

ストレージの追加はなしとする

  • vCPU にかかる費用

    60.83 タスク x 4 vCPU x 24 時間 x 0.05056 1 時間あたり USD = 295.25 USD vCPU 時間用

  • メモリにかかる費用

    60.83 タスク x 16.00 GB x 24 時間 x 0.00553 USD/GB/時間 = 129.17 USD GB 時間用

  • 合計

    295.25 USD + 129.17 USD = 424.42 USD

開発環境用などで性能を抑えればかなり安くできます

性能を以下のようにした場合

  • 台数 = 1
  • vCPU = 0.5
  • メモリ = 2GB

vCPU もメモリも 1/16 になるので、 26.53 USD / 月 になります

起動時間を平日の業務時間中のみに制限すれば更に安くできます

また、 Fargate Spot を利用することでも安くすることが可能です

単位 料金 通常との比
1 時間あたりの vCPU 単位 0.01554869 USD 30.75 %
1 時間あたりの GB 単位 0.00170064 USD 30.75 %

通常に対して 30.75 % の費用まで抑えられます

Fargate Spot を利用する場合、 manifest.ymlcount を以下のように設定します

  • 通常の Fargate

    count: 1
    
  • Fargate Spot

    count:
      spot: 1
    

以下のように指定することで Auto Scaling も可能です

count:  
  range:
    min: 1
    max: 5
    spot_from: 2
  cpu_percentage: 70
  memory_percentage: 80
  requests: 10000
  response_time: 2s

更に Linux/ARM を使えば 20% 安くなります

platform: linux/arm64

ELB

1 台の Application Load Balancer が作成されます

1 時間で 1GB のデータを処理する = 1 LCU と仮定します

  • ロードバランサーの固定費用

    1 ロードバランサー x 0.0243 USD/時間 x 730 時間 (1 か月) = 17.74 USD

  • 1 LCU にかかる費用

    1 ロードバランサー x 1 LCU x 0.008 LCU 料金/時間 x 730 時間/月 = 5.84 USD

  • 合計

    17.74 USD + 5.84 USD = 23.58 USD

Route53

<環境名>.<アプリケーション名>.local のプライベートホストゾーンが1つ作成されます

ホストゾーン1つなので、 0.50 USD 費用が発生します

合計費用

サービス 費用
ECR 0.10 USD
ECS 424.42 USD
ELB 23.58 USD
Route53 0.50 USD
合計 448.6 USD

合計でおおよそ 500 USD になりました

実際にはここにドメイン費用やデータベース、 CloudFront の料金が追加されます

EC2 の場合との比較

費用のほとんどは ECS であり、 EC2 で構成した場合もそれ以外の要素はほぼ同じになるはずなので、
EC2 で同程度の性能にした場合の費用と比較してみましょう

参考: ECS で指定できる vCPU とメモリの値の組み合わせ

EC2 インスタンス m6g.xlarge = ECS 4vCPU、メモリ 16GB とする

東京リージョン、1時間、1台当たりの費用

サービス 費用
ECS Fargate 0.281 USD
ECS Fargate Spot 0.086 USD
EC2 オンデマンド 0.198 USD
EC2 3年前払い 0.075 USD

普通に Fargate だけで使うと ECS の方が EC2 のオンデマンドより 42 % ほど高くなります

Fargate Spot を使えば EC2 の 50% で動かせるので、
オートスケーリングとうまく組み合わせると良さそうですね

開発環境用として EC2 、 ECS のそれぞれ最低コストの場合も見てみましょう

  • EC2: t2.nano = 1vCPU、 0.5GB (ECS だと、この組み合わせは指定できない)
  • ECS: 0.25 vCPU、 0.5GB (EC2 だと、 vCPU を 1 未満にはできない)

東京リージョン、1時間、1台当たりの費用

サービス 費用
ECS Fargate 0.0154 USD
ECS Fargate Spot 0.0047 USD
EC2 オンデマンド 0.0076 USD
EC2 3年前払い 0.0050 USD

最安値は ECS で Fargate Spot を使う場合でした

開発環境など、簡易的に立ち上げるだけなら ECS がお得です

まとめ

Copilot から Auto Scaling や Fargate Spot の指定をすることで、
EC2 よりもコストを抑えられることがわかりました

EC2 で Phoenix を動かす場合、 Terraform や Ansible などで環境構築する必要があり、
リリースにも色々気を遣う必要がありました

Copilot の場合は環境構築、リリースが圧倒的に楽なので、
コストが十分に抑えられるのであれば積極的に使いたいですね

16
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?