はじめに
フロントエンドエンジニアがわかっておきたいCDNについて簡単に調べまとめた。
CDN(コンテンツデリバリネットワーク)とは
世界中に配置されたコンテンツキャッシュサーバー同士で接続されたネットワークのこと。
企業が提供しているサービスがある。例えば、Akamai、Fastly、Amazon CloudFrontなどがある。最近は従量課金制で融通が効くものが多い。
コンテンツキャッシュサーバーとは
動画や音声ファイルなどサイズの大きいファイルを保存しておくサーバーのこと。
Webサーバーに保存しているデータで定期的にキャッシュを更新している。
キャッシュとは
リクエストに対するレスポンスの記憶のこと。
Webサーバーのデータは定期的に書き変えることが多いため、キャッシュしておく保存期間は指定されている。
CDNの仕組み
クライアントがサーバにアクセスするとき、CDNの一番近いコンテンツキャッシュサーバーにアクセスする。
もし、コンテンツキャッシュサーバーに送りたいリクエスト対するレスポンスがなければ、通常大元のwebサーバーにアクセスする。
CDNのメリット
-
アクセス速度が早くなる。
コンテンツキャッシュサーバは世界に大量にあり、webサーバまで直接見にいかなくても一番近いコンテンツキャッシュサーバーを見に行けばよいので、アクセスが速くなる。 -
セキュリティが高くなる
キャッシュを見に行く回数が増えるほど、大元のWebサーバにアクセスしなくて良い。大元のWebサーバへのアクセス回数が減ることで必然的にセキュリティへの攻撃が減る。
また、IPアドレス制限などで大元のWebサーバーへのアクセスを制限できる。つまり、大元のWebサーバへのアクセスは、コンテンツキャッシュサーバーがレスポンスを取得するときと、データを変更するときだけした場合、外からアクセスされることはないため安全性が非常に高くなる。
CDNのデメリット
-
キャッシュ事故に気を付ける必要がある
CDNに関わらずキャッシュを行う場合、キャッシュ事故が発生する場合がある。
例えば、AさんがあるWebページのマイページにアクセスして、レスポンスとしてAさんの個人情報のデータを取得したとする。このAさんの個人情報がキャッシュされてしまうと、BさんやCさんが同じWebページのマイページにアクセスしたとき、キャッシュされているAさんの個人情報が表示されてしまうことがある。
キャッシュするファイルとしないファイルを区別して設定する必要がる。 -
キャッシュ時間中はファイル更新が反映されない
キャッシュ時間の間は大元のWebサーバーのファイルが更新されない。そのため、キャッシュ時間を長くしてしまうとその分キャッシュデータの更新が遅くなる。
参考
おわりに
今回はCDNについて調べまとめた。一言で言うと、CDNは効率よく大きなファイルをキャッシュする仕組みだった。
今後もWeb関係の仕組みを理解していく。