Programing beginner by koala

CDNって何?初心者でも分かる画像多めの「過保護解説」

FontAwesomeやBootstrapを使用するにあたり、導入の際に必ず出てくるのが「CDN」です!

ファイルなどをダウンロードして導入するよりも、手軽に使用できるのは分かるのだけど、他には何が違うんだろう?と疑問に思い、メリット・デメリットを調べてみたので、備忘録としてまとめておきますね(^^)

CDNって何?

CDNとは、Content Delivery Networkの略で、直訳すると「コンテンツをデリバリーするネットワーク」のことです。

例えば、FontAwesomeのアイコンを使用するには、その画像を、自分のパソコンに一度ダウンロードする必要がありますが、ダウンロードしなくても、必要な時に、注文する(リンクコードを貼る)だけで、必要な画像をデリバリーしてくれるような、そんなシステムです。

自分は在庫を持たなくとも、自分の代わりに、必要なファイルなどを保管していてくれるような、本を実際に持たなくても、本のデータを保管していてくれるkindleのような、なんか、そんなイメージです。

実際はもっと複雑ですけど、まぁ、こんな感じです笑

CDNを使うメリットとは?

CDNを使用するメリットはたくさんあります。下記にまとめてみますね(^^)

簡単に導入できる!

上記にも書いたように、導入の際には、使用したい時だけ注文(リンクコードを貼る)すればOK!ダウンロードして、サーバーにアップするっていう手間はありません。

ちなみに、このリンクコードは、例えば、style.cssを呼び出す<link>タグと同じです。つまり、このファイルを読み込んでね!と指定することで、サイトに反映されるようになるわけです。

自分が在庫(?)を抱える必要なし!

上記でも書いたように、例えば、kindleのように、本を実際に持たなくても、代わりに本のデータを保管しておいてくれるので、自分のパソコンや(アップロードする際に)サーバーの容量への負荷が削減できます。

大したファイル量ではありませんが、少ないに越したことはないですよね。。断捨離流行ってますし(^_^;)

一番のメリットは難しいので順を追って説明します!

CDNの一番のメリットとして、「サーバーへの負荷が軽減し、表示速度が向上する」というのがあります。

これを説明するには、DNSサーバーとキャッシュの仕組みなども理解しておく必要がありそうです。初心者が萎える複雑な仕組みですが、画像多めで、分かりやすく説明していきますね!

DNSサーバーとは?

DNSとは、人間用アドレス(別名サイトアドレス、URL)を、パソコン用アドレス(別名IPアドレス)に変換してくれるサーバーのことです。

プログラミングのように、人間にとっては複雑ですが、たった1文字違うだけで、全く違う情報になるような、そんなパソコン同士のコミュニケーションのためにあるアドレスに変換してくれる、翻訳ツールみたいなものかな。

キャッシュとは?

プラウザが、情報を一時的に保管してくれるシステムのことです。

現代の日本ではあまりないですけど、私が10年前オーストラリアに住んでいた時、オーストラリアのインターネット事情は、かなり遅れていました。

画像多めのページを表示させるのに、数十秒かかったり、マクドナルドなどの公共のWi-Fiだと、数分かかったこともありました(T_T)

実は、サイトにアクセスし、表示させるまでに、裏では下記のような処理がされています。

①「人間用アドレス(別名サイトアドレス、URL)」を検索者が打ち込む

②DNSサーバーが、「人間用アドレス」を「パソコン用アドレス(別名IPアドレス)」に変換し、WEBサーバーに「この情報をくれ!」を要求

③WEBサーバーが「パソコン用アドレス」を元に、必要な情報を探し出し提供

④やっと検索者のパソコンに表示される

っていう、意外とたくさんのステップがあります(^_^;)

でも、毎回毎回、サイトにアクセスされる度に同じ作業が繰り返されるって、大変ですよね?

そこで、一時的に、そのデータを保管しておいてくれて、WEBサーバーがその情報を探すのを手伝ってくれるのが「キャッシュ」です。

確かに、画像が多く重めのサイトを、最初に開く時は時間がかかりますが、再び開く時は、サクッと開きますよね?これはキャッシュのおかげ様様なのです♡

再びCDNに戻ります!

上記のことを踏まえまして、CDNの最大のメリットに戻りますね(^^)

それは、「サーバーの負荷が軽減し、表示速度が向上する」ということでした。1つづつ見ていきましょう。

サーバーの負荷が軽減とは?

通常のサイトは、キャッシュとは?にも書いたように、4つのステップを踏んでやっと表示されます。

しかも、サイトにアクセスされるたびに、WEBサーバーに「このアドレスのデータちょうだい!!」って要求されるため、WEBサーバーがパンク寸前になります。

ひどい時だと、「サーバーダウン」なんてありますよね。これが「サーバーに負荷がかかった状態」です。

CDNは、DNSが直接WEBサーバーに「このアドレスのデータちょーだい!」と要求する前に、キャッシュサーバー(一時的に情報を保管してくれるサーバー)を挟むことで、大本のサーバー(オリジンサーバーと言います)への負荷を軽減させています。

このキャッシュサーバーに情報がない場合だけ、キャッシュサーバーが、大本のWEBサーバーに情報を取りに行くようなシステムなんですね!めっちゃ敏腕秘書みたいなっ!!

まとめると、こんな感じ↓

こんな連携プレーが、名前に「デリバリー」って入れる所以かもしれませんね!

表示速度が向上する、とは?

ここまで来ると、もう察しが付くかもしれませんが、「大本のWEBサーバーに負荷がかかる→処理が遅くなる→表示が遅くなる」というわけですが、キャッシュサーバーを挟むことで、その処理も分散され、表示速度が速くなるというわけです!

あと実はもう一つありまして、このキャッシュサーバーを世界中に分散配置しているので、ユーザーのアクセス元から、一番近いところのキャッシュサーバーにアクセスし、表示されるようになっているようです。

テレビでも海外中継とかだと、若干のタイムラグが発生するように、ネットなどでも遠いところだと、タイムラグが発生するようです。

この2つの理由から、「表示速度が向上する」といういうわけです。

CDNのデメリットはあるの?

ちょっと調べてみたところ、少なからずデメリットはあるようですが、例えば、BootstrapやFontAwesomeを使う場合に限っては、下記のようなことが挙げられるかな?と思います。

ファイルの更新に時間がかかる。。場合がある。

キャッシュとは、情報を一時保管してくれるというシステムで、キャッシュサーバーに情報があれば、大本のWEBサーバーに情報を取りに行くことはないということでした。

あくまでも一時保管なので、その期間が過ぎれば、その情報は削除されるのですが、一定の時間は、大本のWEBサーバーにアクセスすることはありません。

ですので、その時間内に、大本のサーバーにて、その情報が更新された場合、キャッシュサーバーと、大本のサーバーの間にタイムラグが発生します。

とは言っても、長くても数分でしょうし、そこまで気にする必要はないのかな?と思いますが(^_^;)

まとめ

まとめると、CDNはとっても便利なシステムだ!っていうことです。

それにしても、IT専門用語が多すぎで、理解するのが大変ですね(-_-)

以上です!

About me

IT業界6年目にして、プログラミングの勉強を始めたkoalaです。

プログラミング用語が難しすぎる!ということで、初心者が初心者に解説するという型破りなブログを開設してみました。

専門用語少な目、分かりやすくをモットーにしています。

>>続きはこちら

今日の名言

クリックすると、あなたの心に響く誰かの名言が表示されます♪

 

今日の名言

 
※あなたの名言募集しています!詳細はこちら