AWS Global Acceleratorによるアプリケーションパフォーマンスの高速化:詳細解説
AWS Global Acceleratorが、グローバルなTCPおよびUDPアプリケーションのレイテンシ、フェイルオーバー、静的IPルーティングをいつ改善するかを学びます。
AWS Global Acceleratorによるアプリケーションパフォーマンスの高速化:詳細解説
ユーザーがAWSリージョンから遠く離れている場合、DNSだけでは常に安定したネットワークパスを提供できるとは限りません。AWS Global Acceleratorは、クライアントに静的Anycast IPアドレスを提供し、トラフィックが最寄りのAWSエッジロケーションに到達した後、AWSグローバルネットワークを経由して転送することで、アプリケーションパフォーマンスを向上させます。
この詳細解説では、Global Acceleratorの仕組み、効果的な場面、CloudFrontとの違い、そして本番トラフィックの前に確認すべき点について説明します。
グローバルな課題:レイテンシとアプリケーションパフォーマンス
アプリケーションがますます分散化し、大陸をまたいでユーザーにサービスを提供するにつれて、ユーザーとアプリケーションサーバー間の物理的な距離が重要な要素になります。データは光速で移動しますが、パブリックインターネットを経由するには多数のホップ、変動するネットワーク状況、潜在的な輻輳ポイントが伴います。これにより、以下の問題が発生する可能性があります:
- 高レイテンシ:データがユーザーからアプリケーションに往復するのにかかる時間で、応答性に直接影響します。
- パケットロス:データパケットが宛先に到達できず、再送信が必要になり、さらにレイテンシが増加します。
- ジッター:パケット到着時間の変動で、VoIPやゲームなどのリアルタイムアプリケーションに特に悪影響を及ぼします。
単に複数のリージョンにインスタンスをリージョンロードバランサーの背後にデプロイするといった従来のアプローチでは、ある程度の改善は見られますが、初期接続では依然として予測不可能なパブリックインターネットを経由してユーザートラフィックをルーティングします。ここで、Global Acceleratorのようなサービスが大きな利点を提供します。
AWS Global Acceleratorとは?
AWS Global Acceleratorは、ローカルおよびグローバルなユーザーに対してアプリケーションの可用性とパフォーマンスを向上させるネットワーキングサービスです。これは、ユーザートラフィックを、非常に信頼性が高く高性能なAWSグローバルネットワークバックボーンを介して最寄りの正常なエンドポイントに誘導することで実現します。パブリックインターネット経由でトラフィックをルーティングする代わりに、Global AcceleratorはAWSの広大なネットワークインフラストラクチャを利用して、ユーザーのエッジロケーションからアプリケーションエンドポイントへのパスを最適化します。
Global Acceleratorの核となるのは、アプリケーションへの固定エントリポイントとして機能する静的Anycast IPアドレスを提供することです。これらのIPは、世界中の複数のAWSエッジロケーションからアドバタイズされます。ユーザーが接続すると、そのトラフィックは自動的に最寄りのエッジロケーションに誘導され、そこから最適化されたAWSプライベートネットワークを経由して指定されたアプリケーションエンドポイントに到達します。
AWS Global Acceleratorの仕組み:アーキテクチャと主要概念
Global Acceleratorの背後にある仕組みを理解するために、その基本的なコンポーネントとそれらの相互作用を分解してみましょう:
Anycast IPアドレス
単一のサーバーに固有の従来のユニキャストIPアドレスとは異なり、Global Acceleratorは2つの静的Anycast IPアドレスを提供します。これらのIPは、複数のAWSエッジロケーションから同時にアドバタイズされます。ユーザーがこれらのIPを使用してアプリケーションに接続しようとすると、インターネット上のネットワークルーターは、そのアドレスをアドバタイズしている最寄りのエッジロケーションにトラフィックを誘導します。これにより、ユーザーは常に地理的に近いAWS PoPに接続することが保証されます。
AWSグローバルネットワークバックボーン
Global Acceleratorの真の力は、AWSグローバルネットワークの活用にあります。ユーザートラフィックが静的Anycast IPを介してAWSエッジロケーションに到達すると、その後はAWSの高速で低レイテンシなプライベートファイバー光学ネットワークを経由して最適なアプリケーションエンドポイントに移動します。これにより、パブリックインターネットの予測不可能な性質を回避し、より一貫したパフォーマンス、ジッターの低減、および低レイテンシを実現します。
エッジロケーション(Points of Presence - PoP)
これらは地理的に分散されたデータセンターであり、ユーザートラフィックがAWSグローバルネットワークに出入りするためのエントリポイントおよび終了点として機能します。Global AcceleratorはこれらのPoPを活用して、ユーザーからの着信接続を受信し、効率的に転送します。
トラフィック最適化とヘルスチェック
Global Acceleratorはエンドポイントの健全性を監視し、リスナー、エンドポイントグループ、トラフィックダイヤル、およびエンドポイントウェイトの設定に基づいて、正常なエンドポイントにのみトラフィックをルーティングします。エンドポイントが異常になった場合、Global Acceleratorは新しいトラフィックを別の正常なエンドポイントにルーティングします。
リスナー、エンドポイントグループ、エンドポイント
- リスナー:これらは、Global Acceleratorがクライアントからの着信接続を受け入れるポートとプロトコル(TCP/UDP)を定義します。
- エンドポイントグループ:エンドポイントグループは特定のAWSリージョンに関連付けられます。アプリケーションリソースが存在するリージョンごとに複数のエンドポイントグループを持つことができます。また、各グループに送信されるトラフィックの割合を制御するために、「トラフィックダイヤル」を設定することもできます。
- エンドポイント:これらはアプリケーションを提供する実際のリソースです。標準アクセラレータの場合、一般的なエンドポイントタイプは次のとおりです:
- アプリケーションロードバランサー(ALB)
- ネットワークロードバランサー(NLB)
- EC2インスタンス
- Elastic IPアドレス
- カスタムルーティングアクセラレータ用のVPCサブネットエンドポイント(これは異なるアクセラレータタイプです)。
AWS Global Acceleratorを使用する主な利点
Global Acceleratorを活用すると、グローバルアプリケーションにいくつかの魅力的な利点がもたらされます:
- パフォーマンスの向上とレイテンシの低減:AWSグローバルネットワークバックボーン経由でトラフィックをルーティングすることにより、Global Acceleratorはユーザーが経験するレイテンシとジッターを大幅に削減し、より機敏で応答性の高いアプリケーションを実現します。
- 可用性の向上とフォールトトレランス:自動ヘルスチェックとインテリジェントなトラフィックルーティングにより、Global Acceleratorはユーザーリクエストが常に正常なエンドポイントに誘導されることを保証します。リージョン全体またはエンドポイントグループがダウンした場合、トラフィックは自動的に別のリージョンで利用可能な次の最適な正常なエンドポイントに再ルーティングされます。
- 静的IPによるトラフィック管理の簡素化:Global Acceleratorが提供する2つの静的Anycast IPアドレスは決して変更されません。これにより、DNS設定とクライアント側の統合が簡素化され、アプリケーションの基盤となるエンドポイントが変更または移動した場合でも、DNSレコードやクライアント設定を更新する必要がなくなります。
- セキュリティの強化:Global Acceleratorに到達するトラフィックは、エッジでのAWS Shield StandardのDDoS保護の恩恵を受け、一般的なネットワーク層攻撃からアプリケーションを保護するのに役立ちます。
- 重み付けルーティングのためのトラフィックダイヤル:トラフィックダイヤルを使用して、異なるリージョンのエンドポイントグループに送信されるトラフィックの割合を制御できます。これは、A/Bテスト、ブルー/グリーンデプロイメント、または計画メンテナンスに最適です。
一般的なユースケース
AWS Global Acceleratorは、グローバルなユーザーに高いパフォーマンスと可用性を必要とする幅広いアプリケーションに最適です:
- グローバルWebアプリケーション:複数の大陸にユーザーがいるEコマースサイト、コンテンツ配信プラットフォーム、SaaSアプリケーション。
- ゲームサーバー:オンラインマルチプレイヤーゲームのレイテンシを低減し、応答性の高いエクスペリエンスを向上させます。
- VoIPとリアルタイム通信:ビデオ会議や音声通話のために、安定した低レイテンシの接続を保証します。
- IoTバックエンド:地理的に分散した多数のIoTデバイスがデータを送信するための、一貫性のある低レイテンシの接続を提供します。
- ディザスタリカバリ:複数のリージョンにエンドポイントを維持することで、Global Acceleratorは障害発生時に正常なリージョンにシームレスにフェイルオーバーし、堅牢なディザスタリカバリ戦略をサポートします。
AWS Global Acceleratorのセットアップ(概念的な手順)
Global Acceleratorのセットアップには、エントリポイントを定義し、それらをアプリケーションのリソースに誘導することが含まれます。
- アクセラレータの作成:これは、2つの静的Anycast IPアドレスを生成するトップレベルのリソースです。
- リスナーの追加:アクセラレータが着信クライアント接続をリッスンするポートとプロトコルを設定します(例:TCP 80、TCP 443、UDP 53)。
- エンドポイントグループの作成:アプリケーションにエンドポイントがあるAWSリージョンごとに、エンドポイントグループを作成します。このグループに送信されるトラフィックの割合を調整する「トラフィックダイヤル」を設定し、このグループに固有のヘルスチェック設定を構成できます。
- エンドポイントの追加:各エンドポイントグループ内に、アプリケーションリソース(ALB、NLB、EC2インスタンス、EIP)を追加します。個々のエンドポイントにウェイトを指定して、エンドポイントグループ内でさらにトラフィックを分散できます。
# AWS CLIでの概念的な手順(簡略化)
# 1. アクセラレータの作成
aws globalaccelerator create-accelerator \
--name MyGlobalAppAccelerator \
--ip-address-type IPV4 \
--enabled
# 2. リスナーの作成(例:HTTP用)
aws globalaccelerator create-listener \
--accelerator-arn <accelerator-arn> \
--port-ranges FromPort=80,ToPort=80 \
--protocol TCP \
--client-affinity NONE
# 3. エンドポイントグループの作成(例:us-east-1)
aws globalaccelerator create-endpoint-group \
--listener-arn <listener-arn> \
--endpoint-group-region us-east-1 \
--traffic-dial-percentage 100 \
--health-check-port 80 \
--health-check-protocol HTTP \
--health-check-path /health \
--endpoint-configurations EndpointId=<your-alb-arn>,Weight=100
ヒント:冗長性のために常に2つの静的IPアドレスを使用してください。Global Acceleratorが自動的に割り当てます。
警告:セキュリティグループとネットワークACLが、Global Acceleratorのヘルスチェックとアプリケーショントラフィックがエンドポイントに到達することを許可していることを確認してください。クライアントIP保存の動作は、エンドポイントのタイプと設定によって異なります。
AWS Global Accelerator vs. Amazon CloudFront
どちらのサービスもAWSのグローバルネットワークとエッジロケーションを使用してパフォーマンスを向上させますが、主な目的は異なります:
| 機能 | AWS Global Accelerator | Amazon CloudFront |
|---|---|---|
| 主な目的 | アプリケーション(TCP/UDP)のネットワークパフォーマンスと可用性を向上させる | コンテンツ配信パフォーマンス(HTTP/HTTPS)を向上させる |
| レイヤー | TCPおよびUDPのレイヤー4トラフィックアクセラレーション | レイヤー7 HTTPおよびHTTPS配信 |
| 静的IP | はい、2つのグローバル静的Anycast IPアドレス | いいえ、エッジ配信用に変更されるDNSレコードを使用 |
| キャッシング | いいえ | はい、エッジロケーションでコンテンツをキャッシュ |
| ユースケース | ゲーム、VoIP、API、永続的接続、動的コンテンツ | 静的ウェブサイト、動画ストリーミング、ダウンロード可能なコンテンツ |
| エンドポイントタイプ | ALB、NLB、EC2インスタンス、Elastic IP、カスタムルーティング用VPCサブネット | S3バケット、EC2インスタンス、ロードバランサー、HTTPオリジン |
いつどちらを使うべきか?
- キャッシュ不可能なコンテンツ、API、ゲーム、またはリージョン間で永続的接続や低レイテンシのTCP/UDPトラフィックを必要とするアプリケーションのパフォーマンスと可用性を向上させる必要がある場合は、Global Acceleratorを使用します。
- キャッシュ可能な静的または動的コンテンツ(画像、動画、Webファイル)を低レイテンシでユーザーに配信する必要がある場合(多くの場合、従来のWebアプリケーション)、CloudFrontを使用します。
両方を一緒に使用することも一般的です:CloudFrontは静的コンテンツのキャッシュに、Global Acceleratorはアプリケーションの動的APIバックエンドへのネットワークパスの最適化に使用します。
ベストプラクティスと考慮事項
- ヘルスチェック:アプリケーションエンドポイントの運用状態を正確に反映する堅牢なヘルスチェックを設定します。これは、Global Acceleratorが異常なインスタンスからトラフィックを正しくルーティングするために重要です。
- トラフィックダイヤル:制御されたデプロイメント(例:新しいリージョンやバージョンに徐々にトラフィックを移行する)やディザスタリカバリシナリオのためにトラフィックダイヤルを活用します。
- モニタリングとロギング:Global AcceleratorをCloudWatchおよびCloudTrailと統合して、パフォーマンスメトリクス、トラフィックフロー、APIコールを監視します。これにより、使用パターンの理解とトラブルシューティングに役立ちます。
- セキュリティグループ/NACL:バックエンドリソース(ALB、EC2)のネットワーク設定が、Global Acceleratorのヘルスチェックプローブからの着信トラフィックと、Global Acceleratorが保存するクライアントIP(またはクライアントIP保存が有効でないかサポートされていない場合はGlobal AcceleratorのIP範囲)からのトラフィックを許可していることを確認します。
- コスト管理:プロビジョニングされたアクセラレータの数とデータ転送量に基づく料金モデルを理解します。コストを効果的に管理するためにエンドポイントの使用を最適化します。
まとめ
アプリケーションが静的グローバルIP、高速なリージョンフェイルオーバー、またはリージョン全体に分散したユーザー向けのより優れたTCP/UDPパスを必要とする場合は、AWS Global Acceleratorを使用してください。主な利点がHTTPキャッシングとエッジ配信である場合は、CloudFrontを使用してください。本番展開では、すべてのトラフィックを移行する前に、1つのリスナー、1つまたは2つのリージョンエンドポイントグループ、厳格なヘルスチェック、およびCloudWatchアラームから始めてください。