🛜

CDN とは?仕組みから活用方法まで

に公開

想定読者

  • CDN について知りたい駆け出しエンジニア
  • CDN の仕組みについて整理したいエンジニア

CDN とは

Content Delivery Network の略で、Web 上のコンテンツを効率よく、スピーディに配信するために作られた仕組みのこと。CDN はユーザーから直接見える形で存在しているものではないが、身近なサービスを裏側から支える重要な役割を担っている

CDN のコンセプト

CDN は Web 上のコンテンツ(静的ファイルや画像など)を毎回元のサーバーから取得する代わりに、世界中に配置されたエッジサーバー(キャッシュサーバー)からコンテンツのキャッシュを配信し、取得できるようにするもの

CDN の仕組み

ここからは、CDN の仕組みを実際に順を追って説明していく ↓

まず、CDN はユーザーとオリジンサーバーの間に配置される形で展開され、CDN 展開直後はオリジンサーバーのみがコンテンツ(静的ファイルや画像のこと、ここでは仮に content.png とする)を持っている

オリジンサーバーはサイトの開発者が用意している、Web サイトやサービスを提供する大本のサーバーのことで、CDN(エッジサーバー、キャッシュサーバー)と区別するためにオリジンサーバーと呼ぶ
ユーザー、CDN(エッジサーバー)、オリジンサーバーの繋がり


CDN を展開した直後はコンテンツはオリジンサーバーのみが持っているので、最初のアクセス時は以下のような流れになる

  1. ユーザーがエッジサーバーにcontent.pngをリクエスト
  2. エッジサーバーがオリジンサーバーにcontent.pngをリクエスト
  3. オリジンサーバーがエッジサーバーにcontent.pngを返送
  4. エッジサーバーがユーザーにcontent.pngを返送

そしてこの、エッジサーバーがユーザーにコンテンツを返送するところで、エッジサーバーは同時にcontent.pngをキャッシュすることも行う
CDNがキャッシュするタイミングの画像


次に、別のユーザーがアクセスしてきたときのことを考える
この時は先ほどとは違って、エッジサーバーがコンテンツのキャッシュ(一時保存データ)を持っているので、オリジンサーバーに問い合わせることなく、エッジサーバーが代理でコンテンツを返送する
CDNがキャッシュを代理でレスポンスする画像


CDN の仕組み補足

キャッシュの有効期限(TTL)について

CDN では通常、TTL(Time to Live)という、コンテンツをキャッシュしておく期間(一時保存しておく期間)を設定することができる

キャッシュヒット率について

CDN(エッジサーバー)にアクセスしたときに、リクエストしたオブジェクトがキャッシュ(一時保存)から提供される割合のこと

キャッシュクリアについて

CDN のキャッシュに保存されたデータは、TTL が経過するかキャッシュクリアを行わないと消えない

まとめ

おまけ

CDN は画像などの静的アセットの配信以外にも静的サイトの配信としても利用することができる
その場合は、Amazon S3 というサービスを合わせて利用することが多い

GitHubで編集を提案

Discussion