ネットワークを説明する際に使われる言葉に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 ブラウザーがリソースを要求する際の手順は以下のようになっています。
-
DNSで名前解決をする。
DNS(Domain Name System)と呼ばれるものを使って、アクセスしたいサーバーの実際のアドレスを取得します。ブラウザはドメイン名ではサーバーがどこにあるかを特定できないので、代わりにサーバーの住所であるIPアドレスをDNSから教えてもらうという手順です。この手順は電話帳で電話番号を検索するのとよく似ています。ブラウザはDNSにドメイン名を提供し、代わりにIPアドレスを受け取ります。
-
受け取った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の他サービスと同じプラットフォームで管理できるので相性良し。 |
CloudFlare | Argo Smart Routingと呼ばれるリアルタイムのグローバルネットワーク情報を使用して最適な経路を提供。HTTP/3を使用している。価格もお手頃。 |
Azure CDN | Akamai/Verizonの2社とパートナーシップを組んでいるので遅延があまりなく、容量の大きいCDNを提供。 |
他にもたくさんのプロバイダがCDNのサービスを提供しています。
まとめ
コンテンツ配信を担当するバックボーンであるCDNについて、理解が深まりましたでしょうか?CDNの活躍はユーザーの目には見えないのでなかなか知る機会のないものですが、現在、当たり前のように日常的に使っているネットワークの世界では全トラフィックの半分以上がCDN によって処理されています。縁の下の力持ちですね。
ネットワークは奥が深いものですが、エンジニアには必要不可欠な知識です。この記事で少しでもネットワークに興味を持っていただけたなら、是非ネットワークに強いエンジニアを目指していただけたらと思います。
【番外編】USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話
プログラミング塾に半年通えば、一人前になれると思っているあなた。それ、勘違いですよ。「なぜ間違いなの?」「正しい勉強法とは何なの?」ITを学び始める全ての人に知って欲しい。そう思って書きました。是非読んでみてください。
「フリーランスエンジニア」
近年やっと世間に浸透した言葉だ。ひと昔まえ、終身雇用は当たり前で、大企業に就職することは一種のステータスだった。しかし、そんな時代も終わり「優秀な人材は転職する」ことが当たり前の時代となる。フリーランスエンジニアに高価値が付く現在、ネットを見ると「未経験でも年収400万以上」などと書いてある。これに釣られて、多くの人がフリーランスになろうとITの世界に入ってきている。私もその中の1人だ。数年前、USBも知らない状態からITの世界に没入し、そこから約2年間、毎日勉学を行なった。他人の何十倍も努力した。そして、企業研修やIT塾で数多くの受講生の指導経験も得た。そこで私は、伸びるエンジニアとそうでないエンジニアをたくさん見てきた。そして、稼げるエンジニア、稼げないエンジニアを見てきた。
「成功する人とそうでない人の違いは何か?」
私が出した答えは、「量産型エンジニアか否か」である。今のエンジニア市場には、量産型エンジニアが溢れている!!ここでの量産型エンジニアの定義は以下の通りである。
比較的簡単に学習可能なWebフレームワーク(WordPress, Rails)やPython等の知識はあるが、ITの基本概念を理解していないため、単調な作業しかこなすことができないエンジニアのこと。
多くの人がフリーランスエンジニアを目指す時代に中途半端な知識や技術力でこの世界に飛び込むと返って過酷な労働条件で働くことになる。そこで、エンジニアを目指すあなたがどう学習していくべきかを私の経験を交えて書こうと思った。続きはこちらから、、、、
エンベーダー編集部
エンベーダーは、ITスクールRareTECHのインフラ学習教材として誕生しました。 「遊びながらインフラエンジニアへ」をコンセプトに、インフラへの学習ハードルを下げるツールとして運営されています。
関連記事
2020.02.25
完全未経験からエンジニアを目指す爆速勉強法
USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話
- キャリア・学習法
- エンジニア
2023.08.27
ネットワークの基本 ARPとRARPについて
ARPとRARPはネットワーク通信の基盤として働く重要な要素です。この記事はその役割と重要性を理解していただくことを目標とします。
- ネットワーク
2023.09.12
WANって何?インターネットやLANとの違いも解説!
WANとは、遠く離れたLAN同士を接続する広範囲な通信網です。
- ネットワーク
2023.10.25
Web3.0って結局なに? ブロックチェーンの違いは
この記事では、Web3.0とブロックチェーンについて解説しています。エンジニアを目指すにあたって知っておきたい、それぞれの特徴や「Web3.0とWeb2.0の比較」、「Web3.0の未来展望」も紹介します。
- ネットワーク