LoginSignup
20
10

More than 1 year has passed since last update.

【保存版】AWS+Next.jsのホスティングパターンと料金概算

Last updated at Posted at 2022-11-08

はじめに

AWS上にNext.jsをホスティングしようと考えた時にいくつかのパターンが考えられます。
AWSの料金体系も複雑で、自分メモがてら誰かの役に立てばと纏めました。

比較するサイトの規模として3パターン計算しています。
料金は2022/11/08時点の料金ですので変わる可能性があるので注意が必要です。

前提条件

サイトはブログを想定(24時間起動)

サイトA
月間100万PV 毎日更新(月30件)
サイトB
月間10万PV 2日に1回更新(月15件)
サイトC
月間1万PV 1週間に1回更新(月5件)
全コンテンツのサイズは1GB

1か月は30日 = 720時間

情報
無料枠は考慮せず、ボリュームディスカウントは一番高い料金で計算

事前:データ量の計算

1ページは1MBとする

サイトA
100万PV ×1MB=1TB
サイトB
10万PV ×1MB=100GB
サイトC
1万PV ×1MB=10GB

事前:CloudFrontの計算

無料枠内に収まる想定
・1 TB のデータ転送 (アウト)
・1,000 万件の HTTP または HTTPS リクエスト

CloudFront料金表

情報
2021/11月の改定で無料枠が50 GBから1 TBに拡充されました。
古いブログ等では、50 GBで計算されていて高い場合があります。

事前:DB使用料金(記事の保存先として利用)

Amazon RDS for MySQL/PostgreSQL
 db.t4g.micro(スタンダード)0.025USD/時 × 720時間
 合計 18 USD

情報
負荷は高くないと想定されるため、CPUクレジットは考慮しない
Aurora、Oracleなどは使わないだろうと想定

DynamoDB
 書き込み要求ユニット 100 万あたり 1.4269USD
 読み出し要求ユニット 100 万あたり 0.285USD
 データストレージは25 GBの無料枠内
 合計 1.7119 USD

S3ホスティング

データ転送:0.114USD/GB(データ転送量100 GB無料)
リクエスト(Get):0.00037USD/1000リクエスト
リクエスト(Put):0.0047USD/1000リクエスト
ストレージ:0.025USD/GB

サイト データ転送 リクエスト(Get) リクエスト(Put) ストレージ 合計
A 102.6 (900 GB) 0.37 0.0047 0.025 102.9997 USD
B 0 0.037 0.0047 0.025 0.0667 USD
C 0 0.0037 0.0047 0.025 0.0334 USD

S3料金表

注意
HTTPSをサポートしていません

CloudFront+S3

サイト CloudFront S3からCloudFront ストレージ 合計
A 0 0 0.025 0.025 USD
B 0 0 0.025 0.025 USD
C 0 0 0.025 0.025 USD

EC2

データ転送:0.114USD/GB(データ転送量100 GB無料)
インスタンス:t3.micro 0.0136 USD/時 × 720時間 = 9.72 USD
EBS:汎用 SSD (gp3) 0.096USD/GB 月 × 20 GB(想定) = 1.92 USD

サイト データ転送 EC2 EBS 合計
A 102.6 (900 GB) 9.72 1.92 114.24 USD
B 0 9.72 1.92 11.64 USD
C 0 9.72 1.92 11.64 USD

注意
インスタンスタイプで料金は大きく変わります。
t3.medium 0.0544 USD/時 × 720時間 = 39.168 USD

また、SSRやISRの選択肢があるため、記事の管理方法にもバリエーションが生まれます。
・SSG(追加コスト不要)
・記事をRDSで管理 18 USD
・記事をDynamoDBで管理 1.7119 USD
・Headless CMSを利用(各サービスの料金体系に依存するが無料枠でなんとかなりそう)
・OSSのHeadless CMS(Strapiなど)を利用(別途、サーバーを用意する必要がある)

CloudFront+EC2

サイト CloudFront EC2からCloudFront EC2 EBS 合計
A 0 0 9.72 1.92 11.64 USD
B 0 0 9.72 1.92 11.64 USD
C 0 0 9.72 1.92 11.64 USD

注意
インスタンスタイプや記事の管理はEC2単体と同じです。

AWS Fargate

CPU:0.5 vCPU(想定) × 0.05056USD/時 × 720時間 = 18.2016 USD
メモリ:1 GB(想定) × 0.00553USD/時 × 720時間 = 3.9816 USD
データ転送:EC2と同じ※CloudFrontの選択肢もあり

サイト データ転送 CPU メモリ 合計
A 102.6 (900 GB) 18.2016 3.9816 124.7832 USD
B 0 18.2016 3.9816 22.1832 USD
C 0 18.2016 3.9816 22.1832 USD

注意
CPUやメモリでコスト増大

AWS ECS(EC2起動タイプ)

情報
EC2と同じため、省略

AWS App Runner

CPU:1 vCPU(想定) × 0.064 USD/時 × 720時間 = 46.08 USD
メモリ:2 GB(想定) × 0.007 USD/時 × 720時間 = 10.08 USD
データ転送:EC2と同じ※CloudFrontの選択肢もあり

サイト データ転送 CPU メモリ 合計
A 102.6 (900 GB) 46.08 10.08 158.76 USD
B 0 46.08 10.08 56.16 USD
C 0 46.08 10.08 56.16 USD

注意
AWS Fargateに比べて、CPUやメモリの下限が高い。
ビルド時間に応じて追加コストが発生するが、SSGのサイトでこのサービスは使用しないだろうと想定して見積もっていない。

Amazon Lightsail

情報
月額 3.5 USD
データ転送は1TBまで無料

サイト データ転送 月額料金 合計
A 0 3.5 3.5 USD
B 0 3.5 3.5 USD
C 0 3.5 3.5 USD

Node.jsインスタンスでセルフホスティングでも、Nginxインスタンスでリバースプロキシでもどちらでも大丈夫。
Headless CMSと組み合わせてOn-demand ISRも可能です。

AWS Amplify

データ転送:0.15 USD/GB
ストレージ:0.023 USD/GB
ビルド & デプロイ:0.01 USD/1 分 * 1回5分(想定) = 0.05 USD

情報
SSGで記事追加ごとにビルドするのを想定(SSRやISRだと初回ビルドだけで良いが別途記事管理の費用が必要)

サイト データ転送 ストレージ ビルド & デプロイ 合計
A 150 0.023 1.5 151.523 USD
B 15 0.023 0.75 15.773 USD
C 1.5 0.023 0.25 1.773 USD

(追記)Next.js 13まで対応しました

注意
対応しているNext.jsのバージョンが古い
2022/11/21 Next.js 13まで対応

その他費用がかかるもの

・Route53独自ドメイン(1ホストゾーン 0.5USD/月)
・東京リージョンから海外(米国・カナダ・欧州)へ配信した場合、料金が変わる
・Serverless Next.js Componentを利用した場合、Lambda@Edgeなどのサービス料金が追加で掛かる
・ISRの場合、revalidateの設定に応じてDB等へのリクエストが増える
・AWS WAFでEDos攻撃の対策は導入したい
・next/imageで画像を最適化したいがCloudFrontに対応できないので、別途仕組みを作る必要がある

個人的な思い

私的には、Amazon Lightsailのnode.jsインスタンスでセルフホスティングするのが良いかなと思っています。
next/imageも使えますし、On-demand ISRもできますし。

Headless CMSはNEWTさんですね。
無料でできる事が多いですし、画像のS3保存もできます。
imgixでの画像最適化もできますので、next/imageの代替にできるんじゃないでしょうか。

20
10
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
20
10