私と私のチームは、マップを利用できるモバイル ゲームを作成しています。JSON 情報は複数のファイルに保存されます。各ファイルはマップ上のタイルを表します。マップをレンダリングするには、ファイルをダウンロードし、それらを処理して通りや建物などを作成します。タイル ファイルをモバイル デバイスにダウンロードする最善の方法を選択したいのですが、モバイル デバイスでこのテストを実行する可能性がありませんでした。そのため、ブラウザとノード js スクリプトを使用しました。
100KB の json ファイルを使用しました。S3 バケットと EC2 ストレージにアップロードしました。S3 または EC2 に接続するためのノード スクリプトをいくつか作成しました。
- Node js ローカル スクリプトから S3 バケット (bucket.zone.amazonaws.com/file) への GET リクエスト - ~650ms
- S3 に接続する EC2 インスタンスで実行されるノード js ローカル スクリプトからノード js サーバーへの GET リクエスト - ~1032ms
- Node js ローカル スクリプトから Node js サーバーへの GET リクエストは、ローカル ストレージからファイルをロードする EC2 インスタンスで実行されます - ~833ms
最後の 2 つの値の差は、実際には、EC2 インスタンスがバケットからファイルにアクセスするために追加された時間です。そして、EC2 から S3 にリクエストを行う理由は、AWS のサービス間の接続が非常に高速であることを知っているからです。
私が行った他のテストは、ブラウザー (Firefox) からのものでした。
- S3 バケット (bucket.zone.amazonaws.com/file) に直接アクセス - 値が 400ms から 1000ms の間で約 624ms
- EC2 (ドメイン/ファイル) 上の Apache サーバー経由 - 649ms から 1090ms の値で ~875ms
- S3 バケット (EC2 で実行) に接続する Node js サーバー経由 (ドメイン:ポート) - 680ms から 1700ms の間の値で ~1014ms
- ローカル ストレージ (EC2 で実行) からファイルをロードする Node js サーバー経由 (ドメイン:ポート) - 600ms から 1700ms の値で ~ 965ms
私の質問は、ブラウザからファイルにアクセスすることと、Node スクリプトを介してファイルにアクセスすることの間に、なぜそれほど大きな違いがあるのでしょうか?
時間を記録するために、各リクエストを 10 回行い、平均回数を計算しました。EC2 インスタンスはマイクロで、アイルランドにあります。バケツもアイルランドにあります。