最近はCloudFrontを調べたり弄る機会が多くなったので、しばらくはCloudFrontのネタになりそうです。そして今更ながらCloudFrontの基本的な動きについて触れていきます。
●関連記事はこちら
[AWS]AWS個人利用は高すぎるって話。
[AWS]CloudFrontを導入したときの話。
[AWS]キャッシュを持たないCloudFrontの利点とは?
CloudFrontの概要
ひとことで言うとCDNサービスです。要はキャッシュサーバーをいっぱい配置して、ユーザーには素早くコンテンツを配信して、運営側はオリジンサーバーの負荷が減ってみんなハッピーになる機能です。ちなみにこのキャッシュサーバーはエッジロケーションと呼ばれています。ユーザーのアクセスは地理的に一番近いエッジロケーションにアクセスするようになっています。
その他としてAWSのセキュリティサービスが利用できるため、セキュアな構成を構築することが可能です。
ユーザーのアクセス
ユーザーがCloudFrontを利用しているコンテンツにアクセスする場合の挙動について考えます。
ユーザーはまず地理的にもっとも近い場所にあるエッジロケーションにアクセスします。エッジロケーション内で必要なキャッシュを持っている場合には、エッジロケーションはそのままユーザーに返答を返します。
ユーザーがアクセスしたエッジロケーションがキャッシュを保持していない場合を考えます。
キャッシュを保持していないエッジロケーションはオリジンサーバーに問い合わせを行い、必要なデータをダウンロードしてきます。
この時、ユーザーへの返答が遅延しないように、オリジンサーバーから送られてくるデータのダウンロード完了を待たずにそのままユーザーに送信します。その後、次にアクセスがあった場合にすぐ返答できるようにキャッシュを保持します。
Webサーバーの配信
オリジンサーバーがWebサーバーで、POSTデータの送信が行われたりデータベースの更新が必要なケースについて考えます。
CloudFrontは結構そのあたりはしっかり作ってあって、POSTされたデータなどはそのままオリジンにスルーすることができます。
エッジロケーション内ではどうしても対応できないPOST処理はオリジンサーバーへ任せることが可能です。
地理的な判断
ユーザーがアクセスするときは必ず地理的に最も近いエッジロケーションにアクセスされます。しかしどのようにして地理的に近い場所を割り出しているのでしょうか。
この解決は結構簡単で、DNSによる名前解決の際に地理情報データベースみたいなものを参照して最も近いエッジロケーションへのIPアドレスを返すことで実現しています。
前面配置でよりセキュアに
これについては以前まとめた記事を参照していただければと思います。
要はサービスから離れた位置の段階で不正なアクセスを防ぎましょうって言うことですね。
おわりに
寝る前にさくっと何か書こうということで、CloudFrontの挙動について簡単にまとめました。
名前解決やキャッシュが無い場合の挙動については、きちんとした仕組みを把握せずに利用している人は結構いるんじゃないでしょうか。こんな感じにメモがてら今まで詳細を知らなかった機能とかもまとめられたらなと思います。
コメントを残す