Amazon Web Services ブログ
Route 53とCloudFrontを使った中国ユーザーためのパフォーマンス最適化
中国は、グローバル企業にとって重要な市場です。グローバルにビジネスを展開する企業もスタートアップ企業も、中国で拡大するユーザー市場に参入する方法を模索しています。お客様のクラウドジャーニーを加速し、新しい市場に迅速に進出できるよう、2016年に AWS 中国(北京)リージョンが、2017年に AWS 中国(寧夏)リージョンが開始されました。これらのリージョンは、お客様が中国本土でサービスを提供する際に最高の体験を提供します。
最近、中国で Amazon Route 53 がローンチされたことにより、お客様は中国のエンドユーザーに高パフォーマンスのサービスを提供するための強力なツールをまた一つ手に入れました。Amazon Route 53 は、可用性と拡張性に優れたドメインネームシステム(DNS)、ドメイン名登録(Route53 Global)、およびヘルスチェックのウェブサービスを提供します。これは2019年に開始された Amazon CloudFront China を補完します。Amazon CloudFrontは、企業やWebアプリケーション開発者に、低遅延かつ高速なデータ転送速度でコンテンツを配信するための簡単でコスト効率の高い方法を提供する Web サービスです。
このブログ記事では、Amazon Route 53、Amazon CloudFront、および Application Load Balancer(ALB)を使用して、中国内外のエンドユーザー向けに Web サイトのパフォーマンスを向上させるアプローチを紹介します。
ソリューションの概要
本ソリューションでは、AWS Global と AWS 中国パーティションで Amazon Route 53 と Amazon CloudFront を使用して、中国リージョン内外のユーザー体験、パフォーマンスを向上させる方法を紹介します。目標は、中国内を発生源とするユーザートラフィックを中国内に、中国外を発生源とするユーザートラフィックを中国外に維持することです。これにより、ネットワーク境界を越えるトラフィックを減らし、レイテンシーを最小化し、パフォーマンスを向上させることができます。これは、中国内外の DNS ゾーンと Amazon Route 53 の位置情報ルーティングポリシーを使用することで実現されます。位置情報ルーティングでは、ユーザーの地理的な位置に基づいて、トラフィックを提供するリソースを選択できます。これにより、中国のエンドユーザーのトラフィックは、中国リージョン内の Amazon CloudFront China ディストリビューションに誘導され、パフォーマンスがさらに向上します。グローバルユーザーのトラフィックは、中国以外の CloudFront ディストリビューションに誘導されます。AWS 中国リージョンのパブリックサービスエンドポイントの公開の詳細については、Getting Started with AWS Services in AWS China (Beijing) Region and AWS China (Ningxia) Region blog post の Network Connections for AWS China Regions のセクションを参照してください。
前提条件
- Global Amazon Route 53、Global Amazon CloudFront、Amazon Route 53 China、Amazon CloudFront China、Application Load Balancer (ALB) 経由で提供されるオリジンを使用する予定です。このブログでは、静的または動的な Web サイトの提供に焦点を当て、HTTP リダイレクトを利用します。このような動作は、API エンドポイントの機能を阻害する可能性があります。そのため、そのようなユースケースはここでは取り扱いません。
- 既存のグローバルなオリジンを AWS 中国リージョンに拡張するソリューションも存在しますが、この記事では取り扱いません。
- AWS 中国リージョンでは、AWS 商用リージョンとは別に、中国本土の AWS サービスにアクセスするための特定のインターネットコンテンツプロバイダ(ICP)、AWS アカウントおよび認証情報の要件があります。詳しくは、Getting Started with AWS Services in AWS China (Beijing) Region and AWS China (Ningxia) Regionを参照してください。
- 必要なドメイン名は、グローバル(.com)と中国国内(.cn)の両方で使用するために、Amazon Route 53 または他のサードパーティのドメインレジストラを介して登録されています。例)www.example.com と www.example.cn
動作の仕組み
このソリューションでは、Amazon Route 53 と Amazon CloudFront を使用して、中国におけるユーザー体験のパフォーマンスを最適化するために、4つの主要なユースケースを解決する方法を紹介します。
- 中国国内のユーザーが www.example.cn へアクセスする場合
- グローバルユーザー(中国国外)が www.example.com へアクセスする場合
- 中国国内のユーザーが www.example.com へアクセスする場合
- グローバルユーザー(中国国外)が www.example.cn へアクセスする場合
準備
このアーキテクチャでは、グローバルと中国の両方の Amazon Route 53 と Amazon CloudFront のサービスを組み合わせています。中国リージョン外にある Global Route 53 のネームサーバーと CloudFront のエッジロケーションが中国以外のユーザーのトラフィックを処理します。中国国内のユーザーに対しては、Amazon Route 53 China と Amazon CloudFront China が同様の処理を行い、中国のトラフィックをリージョン内にとどめ、ユーザー体験とパフォーマンスを最適化します。これを実現する方法を紹介します。
グローバルAWSリージョン
- アプリケーションロードバランサーをウェブサイトのオリジンとして、 origin.example.com などの下に作成します。ホストヘッダーの条件に基づいて、.example.cn から.example.com への URLリダイレクトアクションを設定します。
- Amazon CloudFront にディストリビューションを作成します(例:xyz.cloudfront.net)
www.example.com と www.example.cn の代替ドメイン名/CNAMEをセットアップします。 - Amazon Route 53 で example.com のパブリックホストゾーンを作成します。
- 位置情報ルーティングポリシーを使って、www のための2つの CNAME レコードを作成します。デフォルトのロケーションは、CNAME を介して上記で作成した Amazon CloudFront ディストリビューション xyz.cloudfront.net を指すようにする必要があります。Amazon CloudFront ディストリビューション(中国)のための2番目のレコードは、最終的に中国パーティションの Amazon CloudFront ディストリビューションを指すようにします。暫定的に、それは CNAME を使って origin.example.com の下でオリジンとして機能するアプリケーションロードバランサーを指す必要があります。
中国AWSのリージョン
- アプリケーションロードバランサーをウェブサイトのオリジンとして、 origin.example.cn などの下に作成します。ホストヘッダーの条件に基づいて、.example.com から.example.cn への URL リダイレクトアクションを設定します。
- Amazon CloudFront China にディストリビューションを作成します(例:xyz.cloudfront.cn)。
www.example.com と www.example.cn を指す代替ドメイン名/ CNAME をセットアップします。AWS 中国リージョンでは、デフォルトの CloudFront ドメインである *.cloudfront.cn を使用してコンテンツを提供できないことに注意してください。CNAME として知られる代替ドメイン名を CloudFront ディストリビューションに追加し、コンテンツの URL でそのドメイン名を使用する必要があります。さらに、AWS China の CloudFront パーティションは、代替ドメイン名の DNS レコードが、作成または変更するディストリビューションではないディストリビューションを指しているかどうかを検証することに注意してください。この検証では、Global CloudFront パーティション内のディストリビューションも考慮されます。ここで使用される回避策は、代替ドメイン名の DNS レコードを、中国からのリクエスト用に位置情報ルーティングポリシー経由でグローバルアプリケーションロードバランサーに向けることです(前節のステップ4参照)。 - Amazon Route 53 (China)で、www.example.cn のパブリックホストゾーンを作成します。
- デフォルトのロケーションは、CNAME 経由で以前に作成した Amazon CloudFront ディストリビューション xyz.cloudfront.net を指す必要があります。中国ロケーションの2番目のレコードは、 CNAME を介して中国パーティションで以前に作成された Amazon CloudFront ディストリビューション( xyz.cloudfront.cn )を指し示します。
- Amazon Route 53 (Global)で、暫定的なステップとしてアプリケーションロードバランサーを指していたwww.example.com の CNAME レコードを更新し、中国ロケーションの2番目のレコードは、中国パーティションで以前に作成した Amazon CloudFront ディストリビュージョン( xyz.cloudfront.cn )にポイントしています。
図1:ソリューションアーキテクチャ図
このアーキテクチャにおけるトラフィックフローが、今回取り上げる4つのユースケースに従って、どのように機能するかを紹介します。
ユースケース
1. 中国国内のユーザーが www.example.cn へアクセスする 場合
図2:中国国内のユーザーが www.example.cn にアクセスする場合のユースケース
- DNSゾーンexample.cnは、Amazon Route 53 China および中国国内の権威 DNS サーバーによって提供されます。したがって、中国国内のユーザーから発信された DNS クエリは中国国内にとどまり、中国国内のAmazon Route 53 DNS サーバーによって提供されます。
- Route 53の位置情報ルーティングポリシーにより、www.example.cn のトラフィックは CloudFront China ディストリビューション xyz.cloudfront.cn へと誘導されます。Route 53 はリクエストを中国国内のCloudFront のエッジロケーションにルーティングします。典型的な CloudFront のキャッシュ動作がこのステップで適用されます。
- CloudFront のオリジンとして機能するアプリケーションロードバランサーは、この場合、転送ルールを呼び出す必要はありません。
- アプリケーションロードバランサーはバックエンドに接続し、リクエストを処理します。
2. グローバルユーザー(中国国外)がwww.example.comへアクセス する場合
図3:グローバルユーザー(中国国外)が www.example.com にアクセスする場合のユースケース
- DNS ゾーン example.com は、Amazon Route 53と中国国外の権威 DNS サーバーによって提供されています。したがって、中国国外のユーザーから発信された DNS クエリは中国国外にとどまり、中国国外のAmazon Route 53 DNSサーバーによって提供されます。
- Route 53の位置情報ルーティングポリシーにより、www.example.com のトラフィックは CloudFront ディストリビューションの xyz.cloudfront.net に誘導されます。Route 53は、中国外の CloudFront エッジロケーションにリクエストをルーティングします。典型的な CloudFront のキャッシュ動作がこのステップで適用されます。
- CloudFront のオリジンとして機能するアプリケーションロードバランサーは、この場合、転送ルールを呼び出す必要はありません。
- アプリケーションロードバランサーはバックエンドに接続し、リクエストを処理します。
中国国外からのユーザーは、 .com ドメインを使用しながら、中国国外のグローバル Amazon Route 53 サーバーと Amazon CloudFront エッジロケーションを活用し、ネットワークの地域境界を横断する必要がありません。
3. 中国国内のユーザーが www.example.com へアクセスする場合
図4:中国国内のユーザーが www.example.com にアクセスする場合のユースケース
- example.com の DNS ゾーンは、Amazon Route 53 と中国国外の権威 DNS サーバーによって提供されています。したがって、中国国内のユーザーから発信された DNS クエリは、ネットワーク境界を通過し、中国国外の権威 DNS サーバーによって提供される必要があります。
- Route 53 の位置情報ルーティングポリシーにより、www.example.com のトラフィックは、 CloudFront ディストリビューション xyz.cloudfront.cn に向かって誘導されます。Route 53 はリクエストを中国国内のCloudFront エッジロケーションにルーティングします。典型的な CloudFront のキャッシュ動作が、このステップで適用されます。
- AWS 中国リージョン内の ALB に設定されたリダイレクトアクションは、www.example.com からwww.example.cn にリダイレクトを発行します。これによって、クライアントの新しいリクエストは、 www.example.cn へ向けられることになります。
- example.cn の DNS ゾーンは、Amazon Route 53 China と中国国内の権威 DNS サーバーによって提供されています。したがって、中国国内のユーザーから発信されたこのゾーンへの DNS クエリは中国国内にとどまり、中国国内の Amazon Route 53 DNS サーバーによって提供されます。
- Route 53 の位置情報ルーティングポリシーにより、www.example.cn のトラフィックは CloudFront China ディストリビューション xyz.cloudfront.cn へと誘導されます。Route 53 はリクエストを中国国内のCloudFront のエッジロケーションにルーティングします。典型的な CloudFront のキャッシュ動作がこのステップで適用されます。
- CloudFront のオリジンとして機能するアプリケーションロードバランサーは、この場合、転送ルールを呼び出す必要はありません。
- アプリケーションロードバランサーはバックエンドに接続し、リクエストを処理します。
この使用例では、最初の DNS クエリのみがネットワークの境界を通過します。それ以降、中国国内からのユーザーは中国国内の CloudFront エッジロケーションとオリジンを利用します。その後のリクエストが中国国内に留まることを保証するために、DNSの解決も含めて、ユーザーはwww.example.cn ドメインにリダイレクトされます。
4. グローバルユーザー(中国国外)が www.example.cn にアクセスする場合
図5:グローバルユーザー(中国国外)が www.example.cn にアクセスする場合のユースケース
- example.cnのDNSゾーンは、Amazon Route 53 China および中国国内の権威 DNS サーバーによって提供されます。したがって、中国国外のユーザーから発信された DNS クエリは、ネットワーク境界を通過して、中国国内の権威 DNS サーバーによって提供される必要があります。
- Route 53の位置情報ルーティングポリシーにより、www.example.cn のトラフィックは CloudFront ディストリビューション xyz.cloudfront.net に誘導されます。Route 53は、中国外の CloudFront エッジロケーションにリクエストをルーティングします。典型的な CloudFront のキャッシュ動作がこのステップで適用されます。
- AWS 中国リージョン内の ALB に設定されたリダイレクトアクションは、www.example.cn からwww.example.com にリダイレクトを発行します。クライアントでは、これが www.example.com への新しいリクエストのトリガーとなります。
- DNS ゾーン example.com は、Amazon Route 53と中国国外の権威 DNS サーバーによって提供されています。したがって、中国国外のユーザーから発信されたこのゾーンの DNS クエリは中国国外に留まり、中国国外の Amazon Route 53 DNS サーバーによって提供されます。
- Route 53 の位置情報ルーティングポリシーにより、www.example.com のトラフィックは CloudFront ディストリビューション xyz.cloudfront.net に向けられることになります。Route 53 は、中国外の CloudFront エッジロケーションにリクエストをルーティングします。典型的な CloudFront のキャッシュ動作がこのステップで適用されます。
- CloudFront のオリジンとして機能するアプリケーションロードバランサーは、この場合、転送ルールを呼び出す必要はありません。
- アプリケーションロードバランサーはバックエンドに接続し、リクエストを処理します。
この使用例では、最初の DNS クエリのみがネットワークの境界を通過します。それ以降、中国国外からのユーザーは CloudFront のエッジロケーションと中国国外のオリジンを利用します。その後のリクエストを DNS の解決も含めて中国国外に留めるために、ユーザーはwww.example.com のドメインにリダイレクトされます。
検証
Amazon Route 53 位置情報は、ユーザートラフィックを AWS Global パーティションまたは AWS 中国パーティションのいずれかにルーティングします。 これは、ここで提示した設計の重要なコンポーネントです。中国内外のユーザーに対するこのルーティングポリシーの正しい動作の検証は、RIPE Atlasを使用して実現することができます。RIPE Atlas は、プローブやアンカーと呼ばれるハードウェアデバイスのグローバルネットワークで、インターネット接続を積極的に測定しています。このデータには、インターネットトラフィックマップ、ストリーミングデータ可視化、API を通じて誰でもアクセスすることができます。また、RIPE Atlas のユーザーは、カスタマイズされた測定を行うことで、自身のネットワークに関する貴重なデータを得ることができます。
この設計の場合、中国国内と中国国外の CloudFront エンドポイントが異なるTLS証明書を使用していることを利用して検証します。したがって、これらの証明書は、接続中に識別可能な異なる証明書フィンガープリントを提供し、CloudFront Point of Presence(POP)パーティションの識別を可能にします。異なる TLS 証明書を使用することはエンドユーザーには完全に透過的ですが、RIPE Atlasのカスタマイズされた SSL/TLS 測定により、プローブの位置から CloudFront Global または CloudFront China のどちらのディストリビューションを使用したか簡単に特定することが可能です。
図6:Route 53 位置情報ルーティングによるRIPE AtlasプローブとCloudFront Global(青)および CloudFront China(赤)の存在位置のマッピング
先のマップは、RIPE Atlasのカスタマイズ測定で生成されたものです。Route 53 位置情報ルーティングポリシーによりCloudFront Globalパーティションに接続したRIPE Atlasの各プローブ(プローブのホストが場所を指定)は、青色で表示されています。CloudFront Chinaパーティションに接続したRIPE Atlasのプローブは赤色で表示されています。
この結果は予想通りで、中国国内のRIPE Atlasプローブは CloudFront China パーティションで提供され、中国国外のプローブはCloudFront Global パーティションで提供されています。
.cn と .com の両方のエンドポイントに対して同じ RIPE Atlas プローブセットから Ping の RIPE Atlas ユーザー定義テストを使用すると、.cnと.comの両方のエンドポイントに対して中国内外のプローブがほぼ同じパフォーマンス動作をすることが予想されます。
図7:RIPE Atlas のプローブによる .com エンドポイントに対する Ping ラウンドトリップタイム(RTT)
図8:RIPE Atlasのプローブによる .cn エンドポイントに対するPingラウンドトリップタイム(RTT)
その他の考慮事項および制限事項
- 中国の北京リージョンと寧夏リージョンの AWS サービスを理解し、利用を開始するために、AWS 中国(北京)リージョンとAWS 中国(寧夏)リージョンのGetting Started with AWS Servicesを参照してください。
- AWS 商用リージョンと中国 リージョンで利用可能なサービス間の機能の同等性については、各AWSドキュメントのFeature Availability and Implementation Differencesのセクションを参照してください。
- Amazon Route 53は、EDNS0 を使用してユーザーの位置を推定します。
まとめ
このブログ記事では、中国地域を含むグローバルにアプリケーションを展開したいお客様向けに、最高のユーザー体験とパフォーマンスを得るためのアーキテクチャパターンをご紹介ました。4つの異なるアクセス方法が利用でき、それぞれの利点と制約を列挙しました。Amazon Route 53 と CloudFront を使用することで、中国地域内およびグローバルなユーザに対して、マルチリージョンかつパフォーマンスに最適化されたアーキテクチャをシームレスに提供することができます。
原文はこちら