サーバレスサービスを用いて高負荷なトラフィックにも耐えうるウェブアプリケーションを構築したい

サーバーの管理や運用の労力を最小限にできるサービスを選定しつつ、高負荷なトラフィックにも耐えうるアーキテクチャを構成する

この構成例のクラウドレベル:

基礎編

入門編:該当するユースケースの知識が全くない方が対象
基礎編:該当するユースケースの入門知識がある方が対象
応用編:該当するユースケースにある程度精通している方が対象

この構成例で解決できる課題・困りごと:

  • Web サイトをサーバーレスアーキテクチャで構築したい
  • 利用が少ない時間帯もあるが、常に利用できる状態にしておきたい
  • 厳密にリクエスト量が見積もれない新規事業や新しいプロダクト開発したい
  • エッジサービスを使ってコンテンツ配信を最適化したい
  • 自前で直接 S3 に HTML や JavaScript などのソースコードをデプロイしたい

この構成例の概算料金:

18.63 ドル (月額)

この構成例のメリット:

  • サーバレスサービスを用いて、ウェブアプリケーションを構築する例です
  • サーバーレスサービスな構成であるため、アプリケーションの可用性担保や運用保守の大部分を軽減することが可能となります
  • 必要な時だけコンピュートリソースを利用する形になるので、ランニングコストを極力抑えた形でアプリケーションの運用ができます
  • Content Delivery Network (CDN) サービスである Amazon CloudFront を用いて、静的コンテンツのキャッシュを行うことで、オリジン側のリクエスト負荷の軽減を行うと共に、エンドユーザーへのレスポンス速度を向上させることでユーザーエクスペリエンスの向上に貢献します
  • この構成例を構築する手順として、まず、静的なコンテンツを Web ホスティングするために Amazon S3 を用いることで HTML, CSS, JavaScript, 画像ファイル,動画ファイルといった静的なコンテンツを Web ホスティングします
  • 次に、動的にアプリケーションの処理を行う役割として Amazon API Gateway と AWS Lambda, Amazon DynamoDB のセットを紐付けます
    ※ Amazon API Gateway では、APIのインターフェース部分をカスタマイズできるだけではなく、バックエンドの処理をするモジュールとして HTTP エンドポイントやLambda 関数が指定できます
    ※ 今回は、データを格納する先として DynamoDB を選択しておりますが、お客様の要件に併せてお好きなものをご選択いただけます
  • 最後に、ユーザーからのエンドポイントとして Amazon CloudFront を用いて、カスタムドメインやコンテンツキャッシュの有効化の設定などを行います
    ※ AWS Certificate Manager を用いることで、 カスタムドメインを利用した SSL/TLS 証明書を無料で導入いただけます
    ※ カスタムドメインが必要な場合、Amazon Route 53 を用いてオリジナルのドメインを取得およびホスティングすることが可能です

この構成例で使用したサービスと概算料金内訳:

サービス 項目 数量 単価 料金 (USD)
Amazon S3 GET リクエスト 100,000 * 30 * 0.2 = 600,000 (リクエスト/月) ※1 0.00037 USD/1000 回 0.222
  ストレージ 1GB ※配信用の静的コンテンツのみ 0.025 USD/GB 0.025
Amazon API Gateway リクエスト回数 100,000 * 3 = 300,000 (リクエスト/月) ※2 4.25 USD/100万リクエスト 1.275
(REST API)        
AWS Lambda 実行回数 100,000 * 3 = 300,000 (回/月) ※2 0.20 USD/100 万件 0.06
  実行時間 0.5 (GBのメモリ量を設定) * 1.0 (秒) * 300,000 (回/月) = 150,000 (GB-秒) 0.0000166667 USD/GB-秒 2.5
Amazon DynamoDB データストレージ 5 GB 0.285 USD/GB-月 1.43
(オンデマンドモード)        
  読み出し要求 1RRU のリクエストが 150,000 回 発生 0.285 USD/100 万回 0.04
  書き込み要求 1WRU のリクエストが 50,000 回 発生 1.4269 USD/100 万回 0.07
Amazon CloudFront データ転送アウト 100,000 (PV) * 30 (コンテンツ/PV) * 25 (KB) / 1000 / 1000 = 75 (GB/月) ※3 0.114 USD/GB 8.55
  (静的コンテンツのみ)   ※実際は 1TB まで無料枠がある  
  HTTPS リクエスト 100,000 (PV) * 30 (コンテンツ/PV) + 100,000 (PV) * 3 (API/PV) = 3.3 (百万リクエスト) 0.0120 USD/1 万リクエスト 3.96
Amazon Route 53 ホストゾーン 1 0.50 USD/ホストゾーン 0.5
    ※後述のとおりホストゾーン以外の DNS クエリ等の料金に関しては、本試算から外すものとします。    
AWS Certificate Manager SSL/TLS 証明書 ※プライベートキーにアクセスの無い ACM プライベート CA から発行するプライベート証明書は無料 0 USD 0

月額合計料金:18.63 (USD)

※ 2024 年 7 月 18 日時点での試算です。

  • 東京リージョンでのご利用を想定しています。

  • 1 ヶ月を 730 時間として計算しています。

  • ウェブアプリケーションについては下記の想定で試算を行っています。

    • 月間 10 万ページビュー
    • 1 ページビューあたり静的コンテンツが 30 コンテンツ
    • 1 コンテンツあたり平均オブジェクトサイズが 25 KB
    • 1 ページビューあたりのAPIリクエストが平均 3 回
    • Amazon S3 に保管されている静的コンテンツへのリクエストに対する Amazon CloudFront (CDN) のキャッシュヒット率は 80 %
      ※1 「 1 ページビューあたり静的コンテンツが 30 コンテンツ」なので「月間 10 万ページビュー」とした時に 300 万コンテンツとなるのと、「Amazon S3 に保管されている静的コンテンツへのリクエストに対する Amazon CloudFront (CDN) のキャッシュヒット率は 80 %」を考慮しております。
      ※2 「 1 ページビューあたりの API リクエストが平均 3 回」なので「月間 10 万ページビュー」とした時に 30 万回実行される計算です。
      ※3「 1 ページビューあたり静的コンテンツが 30 コンテンツ」なので「月間 10 万ページビュー」とした時に 300 万コンテンツとなるのと、「 1 コンテンツあたり平均オブジェクトサイズが 25 KB 」なので、 GB の単位に変換した後の値を掛け合わせた数値がデータアウトの量となります。
  • その他の想定

    • Amazon S3 には常に 1 GB の配信用の静的コンテンツを保持する (変動は考慮しないものとする) 。
    • Amazon API Gateway のキャッシュ機能は用いず、データ転送にかかる費用は本試算には含まないものとする。
    • AWS Lambda では 512 MB のメモリ設定で、API Gateway 1 つとセットになっており、平均実行秒数は 1 秒と仮定ものとする。
    • Amazon Route53 上ではドメインの取得は行わず、別のサービスで取得したドメインのサブドメインを Hosted Zone に権限委譲しているものとします (また、DNS クエリの料金 [0.40 USD 100 万クエリごと]は本試算から外すものとします) 。
    • データベースには Amazon DynamoDB (オンデマンドモード) を用い、下記の前提で試算を行うものとする。

✓常に 5 GB のデータを保持する(変動は考慮しないものとする) 。

✓読み出し要求は 1 WRU のリクエストが 150,000 回 発生したものとする。
 ※本来は「書き込み (1 KB まで) については、 1 回につき書き込みリクエストが 1 単位発生し、トランザクション書き込みでは 1 回につき書き込みリクエストが 2 単位発生する」ため、消費 WRU に前後はあるが、本ケースでは考慮しないものとする。

✓書き込み要求は 1 RRU のリクエストが 50,000 回 発生したものとする。
 ※本来は「強力な整合性のある読み込み (4 KB まで) 1 回につき 1 単位、トランザクション読み込み 1 回につき 2 単位、結果整合性のある読み込み 1 回につき 0.5 単位の読み込みリクエストが発生する」ため、消費 RRU に前後はあるが本ケースでは考慮しないものとする。
 ※ DynamoDB の詳しい情報は下記の料金ページをご参照ください。
 https://thinkwithwp.com/jp/dynamodb/pricing/

  • 無料枠について (2024/07 現在)

    • Amazon CloudFront には下記の無料枠があり、本試算ではこの分を抜いて試算を行っています。
      • データ転送アウト: 1 TB のデータ送信
      • HTTPS リクエスト:1000 万件の HTTP および HTTPS リクエスト 毎月 1 年間
    • AWS Lambda には下記の無料枠があり、本試算では無料枠を超えた部分について計算を行い、料金として表記しています。
      • リクエスト回数: 1 か月ごとに 100 万件リクエストが無料
      • コンピューティング時間: 320 万 GB-秒のコンピューティング時間が無料
    • Amazon DynamoDB には 25 GB / 月のデータストレージ無料枠があり、本試算ではこの分を抜いて試算を行っています。
      ※無料利用枠の詳しい情報は下記のページをご参照ください。
      https://thinkwithwp.com/free/

最新の料金やサービスのスペックを変更した場合の料金を知りたい場合は AWS Pricing Calculator を使って想定利用金額を算出してみましょう

AWS Pricing Calculator の使い方 (基礎編 - 1 つのサービスを見積もる方法 )
AWS Pricing Calculator の使い方(応用編 - 複数のサービスの組み合わせを見積もる方法)
  • アマゾン ウェブ サービス(AWS)の利用をご検討中の皆様に向けて、無料個別相談会を実施いたします。
    今後 AWS の導入に向けて、サービス詳細や特定の業界・サービスを活用した事例の紹介をご希望の皆様、料金関連(支払方法やお見積り、課金体系)に関するご相談、具体的な構成等の技術に関するご相談等を希望される皆様は、是非ご参加ください。
    無料個別相談会に申し込む »

  • お客様のビジネスニーズに合わせて AWS が提供できるサービスと提供内容についてご説明させていただきます。
    フォームにご記入いただき、AWS 日本担当チームまでお問い合わせください。
    フォームで日本担当チームに問い合わせる »

今日から AWS を始めましょう!

コンピューティング、データベース、ストレージ、コンテンツ配信、機械学習、IoT をはじめ、
AWS では、柔軟性、スケーラビリティ、信頼性の高いアプリケーションの構築を支援するサービスをご用意しています。