今回はこういった方向け。
CDNの基礎を自身の経験を交えつつ分かりやすく図解します。
CDNについて理解を深める上で少しでも参考になれば幸いです。
CDNとは何か?【CDNの基礎知識】
CDN(Content Delivery Network)とは、一言でいうと「コンテンツキャッシュサーバーの集合体」です。
キャッシュサーバーとは、その名の通り「キャッシュを返すサーバー」です。
サーバーの手前に配置され、サーバーの代わりにコンテンツ(キャッシュ)を返します。
キャッシュサーバーには「クエリキャッシュサーバー」「コンテンツキャッシュサーバー」などの種類があります。
クエリキャッシュサーバーは、DBサーバーの手前に配置され、クエリとその結果を記憶するキャッシュサーバーです。
DBへのアクセス回数が減るため、DB負荷の軽減が期待できます。
コンテンツキャッシュサーバーはWebブラウザからのリクエストとその結果(Webサーバーからのレスポンス)の組み合わせを記憶するキャッシュサーバーです。
コンテンツ(Webページや動画)の表示速度を速めたり、Webサーバーの負荷を軽減する効果があります。
そして、CDN(Content Delivery Network)はコンテンツキャッシュサーバーの集合体です。
世界中に配置されている数多のコンテンツキャッシュサーバーが、一つのコンテンツキャッシュサーバーのように動作します。
アクセス元(クライアント)から物理的に最も近いコンテンツキャッシュサーバーがコンテンツを返すため、レスポンス速度の向上が期待できます。
CDNのメリットについて
CDNのメリットを紹介します。
- コンテンツの高速な配信が可能になる
- Webサーバー・DBに対する負荷を軽減できる
- Webセキュリティの強化に繋がる
- 障害時にもサイトが表示され続ける
コンテンツの高速な配信が可能になる
Webサーバーの手前にいるコンテンツキャッシュサーバーがコンテンツを返すため、レスポンスが高速になります。
また、CDNは仕組みとして「クライアントから最も近いコンテンツキャッシュサーバー(エッジサーバー)がコンテンツを返す」ようになっています。
例えば、同一のWebページを参照したとしても、アメリカからアクセスした場合はアメリカにあるエッジサーバーがコンテンツを返し、アフリカからアクセスした場合はアフリカにあるエッジサーバーがコンテンツを返すということです。
そのため、物理的な距離の観点でもレスポンス速度(レイテンシー)を速めることができます。
また、レイテンシーの向上はユーザー体験の向上にも繋がるため、ビジネスの収益にもポジティブな影響を与えると考えられます。
Webサーバー・DBに対する負荷を軽減できる
「Webサーバーの手前でコンテンツキャッシュサーバーがコンテンツを返す」ということは、リクエストが裏側のWebサーバー(DBサーバー)まで到達しないということです。
それはつまり、Webサーバーに対する負荷を軽減できることを意味しています。
Webページを運営している会社や個人にとって、「サービスを安定的に提供し続けること」は何よりも重要です。
その意味でもWebサーバーへの負荷を軽減するCDNは非常に重要な役割を果たしていると言えるでしょう。
Webセキュリティの強化に繋がる
Webサーバーの手前にサーバーを配置しているといういうことは、間に防御の壁があるのと意味合い的には近いです。
そのため、上手く設定すれば、WebサーバーをDDoS攻撃(分散サービス妨害)やSQLインジェクション等の攻撃から守ることができます。
実際、例えばAkamaiはこのように「Akamai WAF」というファイアウォール機能を提供しています。
※WAF = Web Application Firewall
WAFも一つの例ですが、CDNは「キャッシュ」以外にも以下のように多くの機能を提供しています。
- 画像の最適化
- WAF機能
- ルーティング
- アクセス情報を可視化
障害時にもWebページが表示され続ける
何らかの原因でサービスが提供できなくなった場合、CDN等のキャッシュがない場合は即座にWebページで500エラーが表示されます。
つまり、障害が起こった瞬間にサービス提供ができなくなるということです。
一方、CDNを使っている場合は、Webサーバーがコンテンツを提供できなくなっても、一定時間(キャッシュが残っている間)はCDNによりコンテンツが提供され続けます。
そのため、CDNがコンテンツを提供してくれている間に障害をストップさせることができれば、ビジネス上の被害は最小限に抑えられるでしょう。
CDNのデメリットについて
CDNのデメリットもお伝えします。
- 障害の検知が遅れる可能性がある
- デプロイ時の考慮ポイントが増える
- 意図せぬ挙動を生む可能性がある
障害の検知が遅れる可能性がある
何らかの要因でWebサーバーがコンテンツを提供できなくなったとしても、CDNがキャッシュを持っている場合、コンテンツは提供され続けます。
これはつまり、ユーザーからは障害が起こっていることが分からないということです。
もちろん良いことではあるのですが、「障害検知のスピードが遅くなる可能性」もはらんでいることは忘れてはなりません。
しっかりとWebサーバーのエラー監視(ヘルスチェック)を行い、サービス提供ができていない場合はメールやSlackで通知するなどの仕組みを構築する必要があります。
デプロイ時の考慮ポイントが増える
CDNを使っている場合、デプロイ時の考慮点が増えます。
例えば、ページのデザイン(HTML・CSS)を変更した場合、HTMLはWebサーバーのデータを返してCSSはCDNのキャッシュを返しているとデザイン崩れが生じる可能性があります。(逆もまた然り)
そのため、キャッシュの削除をしたり、デプロイの順番を工夫する必要が出てくるでしょう。
これは、「何も考えずにデプロイしたい」人にとっては非常に面倒であるとも言えます。
意図せぬ挙動を生む可能性がある
CDNがあることによって意図せぬ挙動を生む可能性もあります。
例えば、違うドメインでキャッシュキーが被っている場合に上手く画面が表示できなかったり、500エラーが発生した場合にそのレスポンスをキャッシュして、障害が治っても500ページが表示され続けるなどです。
もちろん、「500レスポンスはキャッシュしない」などの指定はできるので、しっかりと設定していれば問題はないのですが、設定が漏れている場合は混乱に陥る可能性もあるでしょう。
CDNの種類・企業について
以下がCDNを提供している企業(サービス)の例です。
- Fastly
- CDN専業
- 割と最近(2011年)創業だけど、世界規模でシェアを増やしている
- Akamai
- CDN専業
- 老舗
- CDN事業者の中では最も知名度が高く、多くの企業が利用している
- Akamaiはハワイ語で「賢い」の意味
- CloudFlare
- CDN専業
- 無料プランがあり、個人サービス等で利用している人も多い
- Amazon CloudFront
- AWSのサービス
- Google Cloud CDN
- GCPのサービス
- CDNetworks
Akamai等のCDNの老舗はもちろんのこと、最近ではAWSやGCP等のクラウド事業者もCDNのサービスを提供しています。
中でもCDNプロバイダーの中では老舗の「Akamai」はインターネットの15〜30%の通信を占めており、「インターネット最大の会社」とも呼ばれています。
参考:「誰も知らないインターネット上最大の会社」アカマイ・テクノロジーズとは
より詳しくAkamaiについて知りたい方は、こちらの本が参考になるでしょう。
CDNとは?基礎をわかりやすく図解してみた【おわりに】
今回は、CDNの概要を自身の経験も交えつつまとめてみました。
少しでもCDNについて理解を深めることができていたら幸いです。
最後まで読んで頂きありがとうございました。
補足1:CDNに関するおすすめの記事と本
CDNを理解する上で以下のAkamaiの記事はとても参考になります。
また、書籍だと以下の「Web配信の技術」がおすすめです。
CDNを含めたキャッシュ技術やWeb配信を安定させるためのノウハウが満載です。
補足2:おすすめコンテンツ
当サイトでは、私がWeb系エンジニアとして働く中で得た知見や個人的に勉強したことをまとめています。
気になるコンテンツがあれば併せて読んで頂けるとありがたいです。