Reactアプリケーションをクラウドでホストする場合、インフラストラクチャの設定次第で、非常に安く済むこともあれば、驚くほど高くなることもあります。AWSでは、Amazon S3とAmazon CloudFrontの組み合わせが静的ファイルを提供する最も効率的な方法ですが、適切な最適化を行わないと、転送コストやリクエスト料金が積み重なる可能性があります。
このガイドでは、小規模プロジェクトでは実質無料、大規模アプリケーションでは非常に収益性の高いホスティング設定方法を分析します。
無料ホスティングの神話 vs AWS S3 + CloudFront
VercelやNetlifyなどのプラットフォームは寛大な無料枠を提供していますが、トラフィックが増えると大きなマージンが上乗せされることがよくあります。対照的に、AWSは「原材料」に近い価格を提供します。
AWS無料利用枠 (Free Tier)
アカウント作成から12ヶ月以内であれば、以下を利用できます。
- S3: 5 GBの標準ストレージ。
- CloudFront: 月間1 TBのデータ転送送信(ほとんどのウェブサイトにとって十分すぎる量です!)。
- CloudFront: 1,000万件のHTTP/HTTPSリクエスト。
無料枠を外れた後でも、5MBのReactアプリを保存するコストは、月額わずか数セントです。
戦略1:S3ストレージの最適化
S3のコストは、ストレージ料金とリクエスト料金(PUT、GET)に分かれます。
- バージョニングの整理: バケットでバージョニングを有効にしている場合、AWSは古いビルドをすべて保存します。ライフサイクルポリシーを設定して、30日より古いバージョンを自動的に削除するようにします。
- PUTリクエスト: デプロイ(
aws s3 sync)のたびに、PUTリクエストが発生します。1日に50回デプロイすると、コストが積み重なります。変更されたファイルのみをアップロードするCI/CDツールを使用してください。 - ストレージクラス: アクティブなウェブサイトには S3 Standard を使用してください。これほど小さなファイルに Intelligent-Tiering を使用しないでください。オブジェクトごとの管理コストが節約額を上回ってしまいます。
戦略2:CloudFront 価格クラス (Price Classes)
これはAWSにおける最大の「隠れた節約」です。CloudFrontには3つの価格クラスがあります。
- 価格クラス All: 世界中のすべてのエッジロケーションを使用します(最も高価)。
- 価格クラス 200: 最も高価な地域(南米、アフリカ)を除くほとんどの地域を含みます。
- 価格クラス 100: 米国、カナダ、欧州のみを使用します(最も安価)。
日本から配信する場合、アジアを含む価格クラス200以上が必要になりますが、ターゲットユーザーが欧米のみの場合は 価格クラス 100 を選択することで、速度を犠牲にすることなくデータ転送費用を大幅に削減できます。
戦略3:キャッシュの無効化を最小限に抑える
キャッシュを無効化(aws cloudfront create-invalidation)する際、毎月最初の1,000パスまでは無料です。それ以降は、無効化されたパスごとに料金が発生します。
プロのヒント: 画像を1枚変更しただけで、デプロイのたびにバケット全体(/*)を無効化しないでください。さらに良い方法は、キャッシュバスティング(Viteはファイル名にハッシュを追加することでこれをデフォルトで行います:index-a1b2c3.js)を使用することです。ファイル名が変われば、無効化する必要はありません。CloudFrontは単にオリジンから新しいファイルをリクエストするだけです。
React2AWS による自動化
TTL (Time to Live)、価格クラス、S3ポリシーを手動で設定するのは面倒です。当社のツール React2AWS は、以下の最適化が適用済みのTerraformテンプレートとBashスクリプトを生成します。
- 自動圧縮: Gzip/Brotliを有効にして転送量を削減します。
- OACセキュリティポリシー: S3への直接アクセスを防ぎ、バケットからのデータ転送料金を節約します。
- 最適なTTL: アセットがエッジに長く留まるようにキャッシュを設定し、オリジンへのリクエストを減らします。
結論
AWSはスケーリングのための最も強力なプラットフォームであり、これらの戦略を使えば、最も安価なプラットフォームにもなり得ます。重要なのは、使用した分だけ支払うという仕組みを理解することです。ファイルサイズを最適化し、適切な価格クラスを選択し、CloudFrontのキャッシュに重労働を任せましょう。
関連記事
ファイルの最適化の準備はできましたか?
React2AWS ジェネレーター ツールをお試しください。100% 無料でプライベート。サーバーへのアップロードなしで、ブラウザで直接すべてを処理します。