メインコンテンツに移動

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

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

構成概要

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

基礎編

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

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

  • 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 を用いてオリジナルのドメインを取得およびホスティングすることが可能です

A Japanese-language architecture diagram illustrating a high traffic web solution on AWS using Amazon Route 53, Amazon CloudFront, Amazon S3, AWS Certificate Manager, Amazon API Gateway, AWS Lambda, and Amazon DynamoDB. It shows user requests, SSL/TLS certificate management, static content retrieval, and API request flow.

月額合計料金:18.63 (USD)

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

サービス
項目
数量
単価
料金 (USD)
Amazon S3

GET リクエスト

ストレージ

100,000 * 30 * 0.2 = 600,000 (リクエスト/月) ※1

1GB ※配信用の静的コンテンツのみ

0.00037 USD/1000 回

0.025 USD/GB

0.222

0.025

Amazon API Gateway (REST API)

リクエスト回数

100,000 * 3 = 300,000 (リクエスト/月) ※2

4.25 USD/100万リクエスト

1.275

AWS Lambda

実行回数

実行時間

100,000 * 3 = 300,000 (回/月) ※2

0.5 (GBのメモリ量を設定) * 1.0 (秒) * 300,000 (回/月) = 150,000 (GB-秒)

0.20 USD/100 万件

0.0000166667 USD/GB-秒

0.06

2.5

Amazon DynamoDB (オンデマンドモード)

データストレージ

読み出し要求

書き込み要求

5 GB

1RRU のリクエストが 150,000 回 発生

1WRU のリクエストが 50,000 回 発生

0.285 USD/GB-月

0.285 USD/100 万回

1.4269 USD/100 万回

1.43

0.04

0.07

Amazon CloudFront

データ転送アウト

(静的コンテンツのみ)

HTTPS リクエスト

100,000 (PV) * 30 (コンテンツ/PV) * 25 (KB) / 1000 / 1000 = 75 (GB/月) ※3

100,000 (PV) * 30 (コンテンツ/PV) + 100,000 (PV) * 3 (API/PV) = 3.3 (百万リクエスト)

0.114 USD/GB

※実際は 1TB まで無料枠がある

0.0120 USD/1 万リクエスト

8.55

3.96

Amazon Route 53

ホストゾーン

1

※後述のとおりホストゾーン以外の DNS クエリ等の料金に関しては、本試算から外すものとします。

0.50 USD/ホストゾーン

0.5

AWS Certificate Manager

SSL/TLS 証明書

※プライベートキーにアクセスの無い ACM プライベート CA から発行するプライベート証明書は無料

0 USD

0

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

  • 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://aws.amazon.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://aws.amazon.com/free/

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

この AWS サービスに関する参考情報

本構成を作るための参考記事