CDN — 本店まで行かず、近所で受け取る
海外のサイトの画像がなかなか出てこない —— そんな経験はありませんか。原本(オリジン)のサーバーが地球の裏側にあると、データは長い距離を往復するぶんだけ遅くなります。だからといって世界中の人が毎回その本店まで取りに行くのは、効率が悪すぎます。
そこで登場するのが CDN(コンテンツ配信ネットワーク)。世界各地にエッジサーバーという「近所のコンビニ」を置き、一度取り寄せたファイルをそこにキャッシュ(預けておく)します。次からは本店まで行かず、近くのコンビニで受け取れるので一瞬です。下の図1で、いろいろな都市からアクセスしてみてください。同じ都市を2回押すと何が変わるでしょう?
(本店) 📄
初回は遅い。でも2回目から速い
エッジにファィルが無いとき(キャッシュミス)は、エッジが代わりに本店まで取りに行き、ついでに自分の棚にコピーを置きます。だから初回だけは本店までの距離ぶん時間がかかります。ところが2回目以降は、同じ都市の人はエッジの棚から即受け取れる(キャッシュヒット)。本店までの長い往復が消えるので、劇的に速くなります。
オリジンが米国寄りにある想定なので、図1ではニューヨークの初回がいちばん速く、東京の初回がいちばん遅いはずです。これが「地理的な近さ」の効果。CDNは原本を1か所に保ちつつ、世界中のエッジに同じコピーを散らすことで、誰にとっても"近所"を作り出します。ただしコピーである以上、原本を更新したらエッジの古いコピーはいつか捨てる(TTLでキャッシュ切れ)必要があります。図1の「キャッシュを空にする」がその瞬間です。
- オリジン
- ファイルの原本を持つ大元のサーバー(本店)。世界に1か所(ふつう)。
- エッジ
- 世界各地に置かれた、ユーザーに近いキャッシュ用サーバー(近所のコンビニ)。
- キャッシュヒット / ミス
- エッジに目当てのファイルが有ればヒット(即配信)、無ければミス(本店まで取りに行く)。
- TTL
- キャッシュの有効期限。切れると古いコピーは捨てられ、次のアクセスで取り直す。
まとめ
CDNは「原本は1か所、コピーは世界中の近所に」という仕組みです。初回のミスでエッジに置かれたコピーが、2回目以降のヒットを生み、本店までの長旅をまるごと省きます。図1で同じ都市を続けて押して2回目から数字が一気に下がるのを確かめ、キャッシュを空にするとまた初回の遅さに戻るのも見てみてください。速さの正体は、賢さよりも「近さ」です。