CDP:Latency Based Originパターン
提供:AWS-CloudDesignPattern
地域によりコンテンツ配信元のサーバを変更する
目次 |
解決したい課題
グローバル展開している製品のWebサイト、ファームウェアや説明書などをCDNで配信する場合、ブランディングのために全世界から同じURLでアクセスさせたい。 CDNを使用した場合、エッジサーバにキャッシュがあればコンテンツを早くダウンロードできるが、キャッシュがない場合はオリジンサーバまでコンテンツを取得しに行く必要がある。 このため、例えばオリジンが日本、ダウンロード元がブラジルだと、初回アクセス時は表示が遅くなってしまうという問題がある。
クラウドでの解決/パターンの説明
オリジンサーバを複数用意し、同一のコンテンツを保持させておく。次にオリジンへアクセスする際に使用するDNS名を登録し、その際に1つのDNS名に対して複数のオリジンサーバのDNSを登録し、さらにそれを地理的に近いオリジンを返すように設定する。 エッジサーバはオリジンアクセス時にDNSサーバから最寄りのオリジンへアクセスするため、初回アクセス時もダウンロードを早くすることができる。
実装
- 配信先の各リージョンにEC2を立て、コンテンツを配置する
- CMSの配布機能、rsync、GlusterFSのGeoReplicationなどで、各EC2のコンテンツを同期する
- オリジンアクセス用のDNSレコードを作成するこの際、Routing PolicyをLatencyにし、各リージョンに置いたEC2ごとにレコードを作成する。
- CloudFrontのDistributionを作成し、オリジンとして作成したDNSレコードを指定する。
構造
利点
- エッジサーバにコンテンツキャッシュがなく、遠くのオリジンに取りに行く必要がある場合でも、初回アクセスを早めることが出来る
- 地域によりアクセスURLを変え、オリジンを変えるような構成にする必要がない
注意点
- オリジンがS3ならベストだが、S3の制約としてカスタムドメインを使用する場合はS3バケット名と同じでないといけないという縛りがあるため、全てのオリジンをS3では実現出来ない。(オリジンのうち、1つだけはS3が利用出来る)
- コンテンツの同期には気をつける必要がある