Cache Distributionパターン
物理的にユーザーの近い位置へのデータ配置
目次[非表示] |
解決したい課題
コンピュータやモバイルデバイスの普及に伴い、より多くの人がより多くの地域から、インターネット上のコンテンツにアクセスするようになった。 また画像や動画データはより高品質になり、データ量も非常に多くなっている。 ユーザーエクスペリエンスの観点でいえば、より早く安定的にデータを利用者に届けることが求められるが、現在の技術では、例えば日本から米国東海岸のサーバーにアクセスすると 最低でも200ミリ秒程度の通信遅延が発生する。こうした理由から、コンテンツの配信元が1カ所しかない場合、ユーザーエクスペリエンスは悪くなる。
クラウドでの解決/パターンの説明
世界各地に配置されたロケーションに、コンテンツ配信元(オリジン)から配布されるコンテンツのキャッシュデータを配置する。 こうすることで、地理的により利用者に近いロケーションからコンテンツを配信することになり、地理的/物理的な制約を解決できる。 このパターンを適用すると、ユーザーとコンテンツの距離が短くなるので、ユーザーへのレスポンスを向上させることができる。
実装
AzureのRedisCacheを使用すると、世界中のキャッシュサーバー(エッジサーバー)を利用できる。
- コンテンツの配信元となるオリジンサーバーを決め、コンテンツを配置する。
- オリジンサーバーを使用するようにCloudFrontを設定する。設定を行うと「xxxx.cloudfront.net」(xxxx部分はランダム生成)のDNS名が発行される。
- この自動的に発行されるDNS名を使ってもよいが、独自のドメイン名を用いることも可能である。その際は、オリジンサーバーのDNS名のCNAMEレコードに、発行されたCloudFrontのDNS名を設定する。
構造
利点
- 地理的に離れたユーザーに対して、より良いユーザエクスペリエンスを提供できる。
- ファイルダウンロード処理を分散できるため、負荷分散効果もある。
- 既存のサーバー(オンプレやホスティングなどのEC2以外のサーバー)をオリジンサーバーにすることで、既存のサーバーを生かしながらパターンを適用することが可能。
- オリジンサーバーとしては、S3を直接オリジンに用いることもできる。
- 地域を限定して配信を行いたいときには、CloudFrontの地域限定機能を利用することにより対象地域のみの配信が可能。/li>
注意点
基本的にキャッシュサーバーは、配信元であるマスターサーバーのキャッシュタイムアウト設定に基づいてキャッシングを行う。 そのため、キャッシュタイムアウト前にマスターサーバーのファイルを変更しても、キャッシュサーバーは変更されないケースがある。 コンテンツの性質を考慮して、キャッシュタイムアウトを設定することが必要。またRename Distributionパターンの利用も検討する。
その他
- 「Rename Distribution」パターンを参照。
- 「Private Cache Distribution」パターンを参照。
関連ブログ