CDN

CDNとは?基礎をわかりやすく図解してみた【初心者向け】

CDNとは?基礎をわかりやすく図解してみた【初心者向け】
CDN?何それ??
CDNを会社で使うらしいから基礎をサクッと勉強したい。。

 

今回はこういった方向け。

 

CDNの基礎を自身の経験を交えつつ分かりやすく図解します。

 

CDNについて理解を深める上で少しでも参考になれば幸いです。

CDNとは何か?【CDNの基礎知識】

CDN(Content Delivery Network)とは、一言でいうとコンテンツキャッシュサーバーの集合体です。

 

キャッシュサーバーとは、その名の通りキャッシュを返すサーバーです。

サーバーの手前に配置され、サーバーの代わりにコンテンツ(キャッシュ)を返します。

キャッシュサーバーの図

 

キャッシュサーバーには「クエリキャッシュサーバー」「コンテンツキャッシュサーバー」などの種類があります。

 

クエリキャッシュサーバーは、DBサーバーの手前に配置され、クエリとその結果を記憶するキャッシュサーバーです。

DBへのアクセス回数が減るため、DB負荷の軽減が期待できます。

クエリキャッシュサーバーの図

 

コンテンツキャッシュサーバーはWebブラウザからのリクエストとその結果(Webサーバーからのレスポンス)の組み合わせを記憶するキャッシュサーバーです。

コンテンツ(Webページや動画)の表示速度を速めたり、Webサーバーの負荷を軽減する効果があります。

コンテンツキャッシュサーバーの図

 

そして、CDN(Content Delivery Network)はコンテンツキャッシュサーバーの集合体です。

世界中に配置されている数多のコンテンツキャッシュサーバーが、一つのコンテンツキャッシュサーバーのように動作します。

アクセス元(クライアント)から物理的に最も近いコンテンツキャッシュサーバーがコンテンツを返すため、レスポンス速度の向上が期待できます。

CDNの図

 

CDNのメリットについて

CDNのメリットを紹介します。

  • コンテンツの高速な配信が可能になる
  • Webサーバー・DBに対する負荷を軽減できる
  • Webセキュリティの強化に繋がる
  • 障害時にもサイトが表示され続ける

コンテンツの高速な配信が可能になる

Webサーバーの手前にいるコンテンツキャッシュサーバーがコンテンツを返すため、レスポンスが高速になります。

 

また、CDNは仕組みとしてクライアントから最も近いコンテンツキャッシュサーバー(エッジサーバー)がコンテンツを返すようになっています。

クライアントから最も近いコンテンツキャッシュサーバー(エッジサーバー)がコンテンツを返す

 

例えば、同一のWebページを参照したとしても、アメリカからアクセスした場合はアメリカにあるエッジサーバーがコンテンツを返し、アフリカからアクセスした場合はアフリカにあるエッジサーバーがコンテンツを返すということです。

そのため、物理的な距離の観点でもレスポンス速度(レイテンシー)を速めることができます。

 

また、レイテンシーの向上はユーザー体験の向上にも繋がるため、ビジネスの収益にもポジティブな影響を与えると考えられます。

 

この記事にも書かれているように、大手CDNプロバイダーのAkamaiは世界130カ国以上にエッジサーバーを配置しています

 

Webサーバー・DBに対する負荷を軽減できる

「Webサーバーの手前でコンテンツキャッシュサーバーがコンテンツを返す」ということは、リクエストが裏側のWebサーバー(DBサーバー)まで到達しないということです。

 

それはつまり、Webサーバーに対する負荷を軽減できることを意味しています。

 

Webページを運営している会社や個人にとって、「サービスを安定的に提供し続けること」は何よりも重要です。

その意味でもWebサーバーへの負荷を軽減するCDNは非常に重要な役割を果たしていると言えるでしょう。

 

Webセキュリティの強化に繋がる

Webサーバーの手前にサーバーを配置しているといういうことは、間に防御の壁があるのと意味合い的には近いです。

 

そのため、上手く設定すれば、WebサーバーをDDoS攻撃(分散サービス妨害)やSQLインジェクション等の攻撃から守ることができます。

CDNのWAF機能でWebサーバーをDDoS攻撃(分散サービス妨害)やSQLインジェクション等の攻撃から守る

 

実際、例えばAkamaiはこのように「Akamai WAF」というファイアウォール機能を提供しています。

※WAF = Web Application Firewall

 

WAFも一つの例ですが、CDNは「キャッシュ」以外にも以下のように多くの機能を提供しています。

  • 画像の最適化
  • WAF機能
  • ルーティング
  • アクセス情報を可視化

 

障害時にもWebページが表示され続ける

何らかの原因でサービスが提供できなくなった場合、CDN等のキャッシュがない場合は即座にWebページで500エラーが表示されます。

 

つまり、障害が起こった瞬間にサービス提供ができなくなるということです。

 

一方、CDNを使っている場合は、Webサーバーがコンテンツを提供できなくなっても、一定時間(キャッシュが残っている間)はCDNによりコンテンツが提供され続けます。

障害が起こってもCDNによってコンテンツは提供され続ける

 

そのため、CDNがコンテンツを提供してくれている間に障害をストップさせることができれば、ビジネス上の被害は最小限に抑えられるでしょう。

 

CDNのデメリットについて

CDNのデメリットもお伝えします。

  • 障害の検知が遅れる可能性がある
  • デプロイ時の考慮ポイントが増える
  • 意図せぬ挙動を生む可能性がある

障害の検知が遅れる可能性がある

何らかの要因でWebサーバーがコンテンツを提供できなくなったとしても、CDNがキャッシュを持っている場合、コンテンツは提供され続けます。

 

これはつまり、ユーザーからは障害が起こっていることが分からないということです。

 

もちろん良いことではあるのですが、障害検知のスピードが遅くなる可能性」もはらんでいることは忘れてはなりません。

 

しっかりとWebサーバーのエラー監視(ヘルスチェック)を行い、サービス提供ができていない場合はメールやSlackで通知するなどの仕組みを構築する必要があります。

 

まあ、エラー監視についてはCDNを通していなくてもやった方がいいですが、、

 

デプロイ時の考慮ポイントが増える

CDNを使っている場合、デプロイ時の考慮点が増えます。

 

例えば、ページのデザイン(HTML・CSS)を変更した場合、HTMLはWebサーバーのデータを返してCSSはCDNのキャッシュを返しているとデザイン崩れが生じる可能性があります。(逆もまた然り)

 

そのため、キャッシュの削除をしたり、デプロイの順番を工夫する必要が出てくるでしょう。

 

これは、「何も考えずにデプロイしたい」人にとっては非常に面倒であるとも言えます。

 

ちなみにデザイン崩れは私が実際に経験したミスです。。(m。_ _)/ ハンセイ

 

意図せぬ挙動を生む可能性がある

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について知りたい方は、こちらの本が参考になるでしょう。

 

我々はWebページにアクセスした際、ほとんどの場合で知らず知らずのうちにCDNにアクセスしているのです。。

 

CDNとは?基礎をわかりやすく図解してみた【おわりに】

今回は、CDNの概要を自身の経験も交えつつまとめてみました。

少しでもCDNについて理解を深めることができていたら幸いです。

 

最後まで読んで頂きありがとうございました。

 

補足1:CDNに関するおすすめの記事と本

CDNを理解する上で以下のAkamaiの記事はとても参考になります。

コンテンツ・デリバリー・ネットワーク — CDN とは?

 

また、書籍だと以下のWeb配信の技術がおすすめです。

CDNを含めたキャッシュ技術やWeb配信を安定させるためのノウハウが満載です。

補足2:おすすめコンテンツ

当サイトでは、私がWeb系エンジニアとして働く中で得た知見や個人的に勉強したことをまとめています。

気になるコンテンツがあれば併せて読んで頂けるとありがたいです。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA