1. ホーム
  2. 記事一覧
  3. 【徹底解説】みんな知らずに使ってるCDN、コンテンツデリバリーネットワークって何?

2022.12.06

【徹底解説】みんな知らずに使ってるCDN、コンテンツデリバリーネットワークって何?

ネットワークを説明する際に使われる言葉にCDNというものがあります。

CDNとは何なのか、どういう風に機能しているのか、その特徴について見ていきましょう。

CDNの概要

CDN(Contents Delivery Network) とは、インターネット上のコンテンツを高速配信するために連携して動作する、地理的に分散されたサーバーのグループのことです。Webページをホストしているサーバー(オリジンサーバー)の代わりに、アクセスしてきたユーザーに対してコンテンツを配信します。CDNを使用することで高速にユーザーにリクエストされたページを届けることができます。

CDNが登場した当時は、CDNは非常に高価で大規模な組織しか使えませんでした。しかし、今日ではインターネットの進歩に伴って多くのホスティングプロバイダーがCDNのサービスをアドオンとして提供しています。

普段意識していないかもしれませんが、私たちは日常的にCDNの恩恵を受けています。CDNはユーザーにとって高速で快適なインターネット通信のために世界中で活躍しているサービスです。

今回は、そんな重要な役割を担っているCDNについて見ていきましょう。

CDNを使用する目的

CDNを利用する一番の目的は、Webサイトにアクセスする際の待ち時間を短縮することです。待ち時間が長くなればなるほど、Webサイトを訪れてくれたユーザーはページを離れてしまいます。

CDNを利用すると、HTMLページ、JavaScriptファイル、スタイルシート、画像、動画などWebサイトを構成しているさまざまな情報を素早く転送することができます。つまり、CDNの一番の目的はWebサイトの読み込み速度とパフォーマンスを向上させ、ユーザーエクスペリエンスを向上させることです。

CDNはどのように機能しているのか

Webサイトにアクセスするユーザーに対して待ち時間を短縮するとはどういうことでしょうか?

Webサイトにアクセスしてリクエストしたページが表示されるまでにかかる時間を左右しているのは主に、物理的な距離リクエストしたページのサイズです。エンドユーザーとオリジンサーバーの距離が遠ければ遠いほど、サイトを表示するのに必要なものが多ければ多いほど、リクエストに対する応答が返ってくるのは遅くなってしまいます。また、全てのユーザーがオリジンサーバーにアクセスすることになるので、オリジンサーバーへの負荷は高くなります。

そこで、戦略的に地理上のさまざまな箇所にコンテンツのキャッシュを置いておくことで、アクセスしてきたユーザーから最も近いデータセンターからレスポンスを返し、待ち時間を最小限に抑えることでパフォーマンスを向上させよう、というのがCDNの役割です。

例えば、日本からイギリスのサーバーにアクセスするとします。もしCDNが無かったとしたら、日本に住むユーザーはイギリスにあるオリジンサーバーからの返事を待つことになります。ですが、もしキャッシュサーバーがイギリスよりも近くにあったとしたら、わざわざオリジンサーバーまでアジア大陸を往復する必要無くレスポンスをもらい、ページを表示させることができます。

また、ユーザーはオリジンサーバーではなくキャッシュサーバーにアクセスすることになるので、オリジンサーバーへの負荷が軽くなります。

もう少し詳しく見てみよう

ブラウザがキャッシュサーバーからリソースを取得する流れ

Web ブラウザーがリソースを要求する際の手順は以下のようになっています。

  1. DNSで名前解決をする。

    DNS(Domain Name System)と呼ばれるものを使って、アクセスしたいサーバーの実際のアドレスを取得します。ブラウザはドメイン名ではサーバーがどこにあるかを特定できないので、代わりにサーバーの住所であるIPアドレスをDNSから教えてもらうという手順です。この手順は電話帳で電話番号を検索するのとよく似ています。ブラウザはDNSにドメイン名を提供し、代わりにIPアドレスを受け取ります。

  2. 受け取ったIPアドレスを元に、そのアドレスにアクセスする。

    ドメイン名だけでは分からなかったサーバーの住所をゲットしたので、その住所を使って実際に目当てのページをもらいにリクエストを送り、サーバーから返事としてページを受け取ります。

CDNを使った名前解決の場合、1の段階でDNSのサーバーは名前解決を要求してきたリクエストを調べ、そのユーザーから最適なサーバーを決定します。一番単純な方法としては、リクエストしてきたIPアドレスに基づいて地理的に一番近いキャッシュサーバーを返す方法です。(企業は他の方法でCDNを最適化することもできるので、全てのリクエストがこの方法で処理されているわけではありません。)

最適と判断されたキャッシュサーバーのIPアドレスを受け取ったブラウザは、名前解決の後そのサーバーにリクエストを送ります。リクエストがきたキャッシュサーバーは以下のような動作をします。

CDNの種類

CDNには一般的に2種類あります。大まかな違いは、CDNがどのようにファイルやページを構成するその他の要素を取得するかという点です。

Push型主導権はWebページ所有者。オリジンサーバーの方からコンテンツをCDN サーバーに自動または手動で直接送信。
Pull型主導権はCDN。CDNの方からWebページの要素とファイルをオリジンサーバーに取得しにいく。

それぞれのメリット・デメリットは以下のようになっています。

Push型メリットどのコンテンツを CDN サーバーにプッシュするか、そのコンテンツの有効期限がいつ切れるか、いつ更新する必要があるか、などを直接指定可能できるのでコンテンツに柔軟に対応可能。変更があった時のみキャッシュサーバーのコンテンツをアップデートできるので、通信量を低く抑えられる。
デメリットコンテンツを頻繁に更新する場合、オリジンサーバーで重たい処理をしている状況ではキャッシュサーバーと同期するのが非効率的なので不向き。
Pull型メリットCDNがよしなにしてくれるので、設定が簡単。
デメリットPush型に比べて柔軟性に欠ける。オリジンサーバーでファイルが更新される前であってもCDNからコンテンツ取得のクエリが来るので、通信が冗長になってしまう。ユーザーが受け取るデータは最新のものではない可能性がある。

どちらのCDNを選んだからという理由でサーバーの死活問題にはなりませんが、それぞれのメリット、デメリットを考慮した上でどちらの種類が自身のサーバーに向いているかを選べると、効果的にCDNを活用できますね。

CDNのサービスを提供しているプロバイダ例

最後に、紹介してきたCDNのサービスを提供しているプロバイダについて見ていきましょう。

プロバイダー名特徴
Akamai市場で最も古いCDNプロバイダーの1つ。何百万ものユーザーを同時に処理できるので、大規模なコンテンツ配信でも対応可能。
Amazon CloudFront従量課金制。AWSの他サービスと同じプラットフォームで管理できるので相性良し。
CloudFlareArgo Smart Routingと呼ばれるリアルタイムのグローバルネットワーク情報を使用して最適な経路を提供。HTTP/3を使用している。価格もお手頃。
Azure CDNAkamai/Verizonの2社とパートナーシップを組んでいるので遅延があまりなく、容量の大きいCDNを提供。

他にもたくさんのプロバイダがCDNのサービスを提供しています。

まとめ

コンテンツ配信を担当するバックボーンであるCDNについて、理解が深まりましたでしょうか?CDNの活躍はユーザーの目には見えないのでなかなか知る機会のないものですが、現在、当たり前のように日常的に使っているネットワークの世界では全トラフィックの半分以上がCDN によって処理されています。縁の下の力持ちですね。

ネットワークは奥が深いものですが、エンジニアには必要不可欠な知識です。この記事で少しでもネットワークに興味を持っていただけたなら、是非ネットワークに強いエンジニアを目指していただけたらと思います。

【番外編】USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話

IT未経験者必見 USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話

プログラミング塾に半年通えば、一人前になれると思っているあなた。それ、勘違いですよ。「なぜ間違いなの?」「正しい勉強法とは何なの?」ITを学び始める全ての人に知って欲しい。そう思って書きました。是非読んでみてください。

「フリーランスエンジニア」

近年やっと世間に浸透した言葉だ。ひと昔まえ、終身雇用は当たり前で、大企業に就職することは一種のステータスだった。しかし、そんな時代も終わり「優秀な人材は転職する」ことが当たり前の時代となる。フリーランスエンジニアに高価値が付く現在、ネットを見ると「未経験でも年収400万以上」などと書いてある。これに釣られて、多くの人がフリーランスになろうとITの世界に入ってきている。私もその中の1人だ。数年前、USBも知らない状態からITの世界に没入し、そこから約2年間、毎日勉学を行なった。他人の何十倍も努力した。そして、企業研修やIT塾で数多くの受講生の指導経験も得た。そこで私は、伸びるエンジニアとそうでないエンジニアをたくさん見てきた。そして、稼げるエンジニア、稼げないエンジニアを見てきた。

「成功する人とそうでない人の違いは何か?」

私が出した答えは、「量産型エンジニアか否か」である。今のエンジニア市場には、量産型エンジニアが溢れている!!ここでの量産型エンジニアの定義は以下の通りである。

比較的簡単に学習可能なWebフレームワーク(WordPress, Rails)やPython等の知識はあるが、ITの基本概念を理解していないため、単調な作業しかこなすことができないエンジニアのこと。

多くの人がフリーランスエンジニアを目指す時代に中途半端な知識や技術力でこの世界に飛び込むと返って過酷な労働条件で働くことになる。そこで、エンジニアを目指すあなたがどう学習していくべきかを私の経験を交えて書こうと思った。続きはこちらから、、、、

note記事3000いいね超えの殿堂記事 今すぐ読む

エンベーダー編集部

エンベーダーは、ITスクールRareTECHのインフラ学習教材として誕生しました。 「遊びながらインフラエンジニアへ」をコンセプトに、インフラへの学習ハードルを下げるツールとして運営されています。

RareTECH 無料体験授業開催中! オンラインにて実施中! Top10%のエンジニアになる秘訣を伝授します! RareTECH講師への質疑応答可

関連記事