1. 問題: ベトナムからの突然の遅延

先週、私のウェブサイトはベトナムからアクセスした際に突然非常に遅くなりました。通常、私のページは2秒未満で読み込まれますが、今回は10秒から15秒かかるか、タイムアウトしてしまいました。私のウェブサイトをホストしているサーバーはアメリカ合衆国(us-east-1リージョン)にあるため、アジアのユーザーはそれに到達するためにいくつかの国際インターネットルートを通過しなければなりませんでした。

調査の結果、この地域の主要な海底インターネットケーブルの1つであるアジア太平洋ゲートウェイ(APG)に故障が発生していることがわかりました。ベトナムのインターネットサービスプロバイダーからの情報によると、APGケーブルの管理ユニットはS3ブランチに問題を検出しました。このブランチは、約66キロメートルの距離にある崇明島(中国)の近くに位置しています。このブランチは、東南アジアの一部を太平洋を越えて日本とアメリカ合衆国に接続しています。この事件は、ベトナムと国際的な目的地間のトラフィックを混乱させ、接続が長いまたは混雑した経路を通るように強いられ、高いレイテンシと不安定な速度を引き起こしました。

2. 最初の観察: CDNは役立ったが、十分ではなかった

私のサイトはすでに静的アセット(画像、CSS、JavaScriptなど)を配信するためにAWS CloudFrontを使用しています。これらのファイルは、CloudFrontがベトナムに近いエッジロケーション(シンガポールを含む)を持っているため、まだ速く読み込まれていました。

しかし、私のサイトのHTMLページは動的に生成され、アメリカのウェブサーバーから直接提供されています。これらのリクエストは、ケーブルの問題の影響を受けた公共インターネットを通過しなければなりませんでした。これが遅いページレンダリングと長い待機時間の理由でした。

私は動的コンテンツを配信するためのより信頼性の高い方法を探し始め、解決策を見つけました: AWS Global Accelerator

3. AWS Global Acceleratorとは?

AWS Global Acceleratorは、世界中のアプリケーションのパフォーマンスと可用性を向上させるネットワークサービスです。公共インターネットの予測できない特性に依存するのではなく、ユーザートラフィックをAmazonのプライベートグローバルネットワークを通じてルーティングします。

AWSは、地球上で最も大きく、最も進んだプライベートバックボーンネットワークの1つを運営しており、大陸を越えてデータセンターを接続しています。Global Acceleratorを使用すると、ユーザーのリクエストは最寄りのAWSエッジロケーションでこのプライベートネットワークに入って、AWSのバックボーンを通じて直接サーバーに移動します。これにより、レイテンシが大幅に削減され、不安定なルートを回避できます。

4. 仕組み(簡略化した説明)

AWS Global Acceleratorをウェブサイトに有効にすると、AWSは2つの静的Anycast IPアドレスを提供します。これらのアドレスは、グローバルにあなたのアプリケーション全体を表します。

誰かがあなたのサイトを訪れると、次のようなことが起こります:

  1. ベトナムのユーザーがブラウザにあなたのドメイン名を入力します。
  2. DNSがあなたのドメインをAWS Global Acceleratorが提供するAnycast IPの1つに解決します。
  3. これらのIPは世界中の多くのAWSエッジロケーションから広告されているため、ユーザーのリクエストは自動的に最寄りのAWSエッジノード(例えば、シンガポール)にルーティングされます。
  4. そのエッジノードから、リクエストはAWSのプライベートグローバルネットワークを通じてアメリカのアプリケーションサーバーに安全に移動します。
  5. レスポンスは同じ最適化された経路を通じて返送されます。

これにより、ホップ数が最小限に抑えられ、混雑した国際ルートを回避できるため、ユーザーはグローバルなインターネットの混乱があっても、はるかに速く安定した接続を体験できます。

5. Anycast IPとは?

従来のセットアップでは、サーバーは1つの物理的な場所にホストされた単一のIPアドレスを持っています。世界中のすべてのユーザーは、そのアドレスに直接接続します。

しかし、Anycastでは、同じIPアドレスが異なる地域の複数のサーバー(エッジノードと呼ばれる)から発信されます。インターネットのルーティングプロトコルは、自動的に各ユーザーのリクエストをネットワーク距離に基づいて最も近い利用可能なエッジノードに送信します。

これは、あなたのウェブサイトに多くの「フロントドア」があるようなものです — シンガポールに1つ、東京に1つ、ロンドンに1つ、アメリカに1つ — すべて同じIPアドレスを共有しています。ユーザーは常に最寄りのドアに接続し、AWSのプライベートネットワークが残りのトラフィックをオリジンサーバーまで運びます。

これにより、次のような結果が得られます:

  • オリジンから遠いユーザーのレイテンシが低下します。
  • より予測可能なネットワークパフォーマンス。
  • 1つのエッジノードが利用できなくなった場合でも、トラフィックが迅速に別の経路に切り替えられるため、障害耐性が向上します。

6. 結果: 明らかな改善

AWS Global Acceleratorを設定した後、違いは明らかでした。

私のウェブサーバーはまだアメリカにありますが、ベトナム、タイ、シンガポール、インドネシアのユーザーは、今では不安定な公共インターネット経路を通過するのではなく、最寄りのAWSエッジロケーションを通じて接続しています。

  • 平均レイテンシが約350 msから160 msに低下しました。
  • ページの読み込み時間が10秒以上から約2秒に改善されました。
  • 可用性が向上しました。1つのAWSエッジ経路が混雑したり失敗した場合でも、トラフィックが自動的に別の経路に切り替わります。

実際、サイトはケーブルの問題が発生する前よりもさらに速く読み込まれるようになりました。

AWS Global Acceleratorスピードテストで自分で試してみてください

AWS Global Acceleratorがあなたの接続にどれだけの違いをもたらすかを見たい場合は、公式のAWS Global Acceleratorスピードテスト を試してみてください https://speedtest.globalaccelerator.aws/

7. コストと実用的な注意事項

AWS Global Acceleratorの価格設定はシンプルです:

  • $0.025 per hour(約$18 per month)のアクセラレーター料金。
  • $0.015 per GBのアクセラレーターを通じて処理されたデータ料金(通常のAWSデータ転送料金に加えて)。

複数の大陸からユーザーにサービスを提供するサイトにとって、改善された速度と信頼性は、このコストを簡単に正当化します。

8. 結論

AWS Global Acceleratorは、大規模なエンタープライズシステムだけのものではありません。地域でサイトを運営しながら、グローバルにユーザーにサービスを提供するすべての人にとって実用的なツールです。

もしあなたのメインサーバーがアメリカにあり、アジア、ヨーロッパ、または他の地域から訪問者がいる場合、Global AcceleratorはAWSの高速プライベートネットワークを通じてユーザーをルーティングすることで、パフォーマンスを劇的に改善できます。