背景
CloudFrontに対する理解がレベル1からレベル2に上がったので備忘録します。
概要
以下を記載する。
- CloudFrontの仕組み
- CDNとは
- CloudFrontの仕組み
- 今後調査したいこと
CloudFrontの仕組み
CloudFrontを一言で言うと、「CDNを実現するためのAWSサービス」です。
なので、CloudFrontを理解するにはまずCDNを知る必要があります。
CDNとは(超簡潔ver)
CDNとは、Webコンテンツの配信を高速化するための仕組みです。
オリジンサーバーの情報を世界中のキャッシュサーバーが代わりに配信することで、配信を高速化します。
例えば、キャッシュサーバーがオリジンサーバーより物理的に近いことにより、配信が高速化されます(下図)
他にもCDNによって配信を高速化できる理由はありますが、ここでは以上の説明に留めます。
(もっと知りたい方はこちらなど参照)
CloudFrontの仕組み
前述の通り、CloudFrontは「CDNを実現するためのAWSサービス」です。
つまり、CloudFrontを使うことで、Webコンテンツの配信を高速化することができます。
どのようにしてCDNが実現されているのか、以下で簡単に説明します。
前提
Webコンテンツ配信者はCloudFrontを利用するために、オリジンサーバーとCloudFrontの紐付けを行います。
その際、オリジンサーバーのドメインとは別に、CloudFrontからもドメインが発行されます(xxx.cloudfront.net)。
クライアントがWebコンテンツを閲覧する際は、xxx.cloudfront.netにアクセスし、Webコンテンツを閲覧します。
CloudFrontを用いたWebコンテンツ配信の流れ
以下の流れでWebコンテンツが配信されます(こちら参照)
- クライアントはxxx.cloudfront.netへWebコンテンツをリクエストする
- DNSは1のリクエストを受領し、最適なキャッシュサーバー(ex.物理的に近い)へルーティングする※1
- キャッシュサーバーはクライアントにWebコンテンツを配信する※2
このように、CloudFrontを用いると、エンドユーザーはキャッシュサーバーからWebコンテンツの配信を受けることができ、CDNが実現されていることがわかります。
※1…CloudFrontでは"キャッシュサーバー"ではなく"CloudFront POP"と呼ばれる。
※2…リクエストの内容がキャッシュサーバーにない場合、キャッシュサーバーはオリジンサーバーへデータを問い合わせる。
今後調査したいこと(自分用メモ)
前述の「DNSから最適なキャッシュサーバーへのルーティング」について追加調査を行たい
- クライアントは物理的位置に関わらずxxx.cloudfront.netへリクエストを飛ばすため、裏側で位置情報を元に最適なキャッシュサーバーを特定する処理があると推察できる
- 前述の説明ではまるでDNSがその処理を行っていると解釈できるが、ワイの認識ではDNSはそのような機能を持たない
- なので、どこで最適なキャッシュサーバーの特定が行われているのかが気になる
- 論点は以下と考えられる
- DNSがクライアントに返却するのは何のIPアドレスか(キャッシュサーバーorその他)
- Reqの流れはどうなっているか
- クライアント → DNS → ??? → キャッシュサーバー
- クライアント → DNS → クライアント → ??? → クライアント → キャッシュサーバー
- クライアント → DNS → クライアント → ??? → キャッシュサーバー
※2024/01/08追記
↑の答えを見つけた。cloudfront内のdnsリゾルバが位置情報を使って最適なキャッシュサーバーのIPアドレスを返却するっぽい(参考リンク)