CDN とは?仕組みから活用方法まで
想定読者
- CDN について知りたい駆け出しエンジニア
- CDN の仕組みについて整理したいエンジニア
CDN とは
Content Delivery Network の略で、Web 上のコンテンツを効率よく、スピーディに配信するために作られた仕組みのこと。CDN はユーザーから直接見える形で存在しているものではないが、身近なサービスを裏側から支える重要な役割を担っている
CDN のコンセプト
CDN は Web 上のコンテンツ(静的ファイルや画像など)を毎回元のサーバーから取得する代わりに、世界中に配置されたエッジサーバー(キャッシュサーバー)からコンテンツのキャッシュを配信し、取得できるようにするもの
CDN の仕組み
ここからは、CDN の仕組みを実際に順を追って説明していく ↓
まず、CDN はユーザーとオリジンサーバーの間に配置される形で展開され、CDN 展開直後はオリジンサーバーのみがコンテンツ(静的ファイルや画像のこと、ここでは仮に content.png
とする)を持っている
オリジンサーバーはサイトの開発者が用意している、Web サイトやサービスを提供する大本のサーバーのことで、CDN(エッジサーバー、キャッシュサーバー)と区別するためにオリジンサーバーと呼ぶ
CDN を展開した直後はコンテンツはオリジンサーバーのみが持っているので、最初のアクセス時は以下のような流れになる
- ユーザーがエッジサーバーに
content.png
をリクエスト - エッジサーバーがオリジンサーバーに
content.png
をリクエスト - オリジンサーバーがエッジサーバーに
content.png
を返送 - エッジサーバーがユーザーに
content.png
を返送
そしてこの、エッジサーバーがユーザーにコンテンツを返送するところで、エッジサーバーは同時にcontent.png
をキャッシュすることも行う
次に、別のユーザーがアクセスしてきたときのことを考える
この時は先ほどとは違って、エッジサーバーがコンテンツのキャッシュ(一時保存データ)を持っているので、オリジンサーバーに問い合わせることなく、エッジサーバーが代理でコンテンツを返送する
CDN の仕組み補足
キャッシュの有効期限(TTL)について
CDN では通常、TTL(Time to Live)という、コンテンツをキャッシュしておく期間(一時保存しておく期間)を設定することができる
キャッシュヒット率について
CDN(エッジサーバー)にアクセスしたときに、リクエストしたオブジェクトがキャッシュ(一時保存)から提供される割合のこと
キャッシュクリアについて
CDN のキャッシュに保存されたデータは、TTL が経過するかキャッシュクリアを行わないと消えない
まとめ
おまけ
CDN は画像などの静的アセットの配信以外にも静的サイトの配信としても利用することができる
その場合は、Amazon S3 というサービスを合わせて利用することが多い
Discussion