多くの方は、普段特に意識するもことなくPCや携帯端末などからウェブサイトにアクセスしています。
利用者目線で考えるとリンクをクリックするとそのサイトにアクセスできるということは当たり前のことであり、裏側でどういう処理が走った結果そのウェブサイトが表示されているかという見えない部分にはそういったお仕事をされていらっしゃる方以外は、なかなか馴染みはないのではないでしょうか。
今回は、ウェブサイトを効率的に表示させるために導入されている仕組みの一つである「CDN」について調べてみました。
それではいってみましょう。
CDNのお話をする前に、そもそもウェブサイトというのはどのように見られるかについて簡単に紹介をできればと思います。
ものすごく大雑把な説明となりますが、以下の図のようなイメージとなります。
基本的にウェブサイトごとにウェブサーバーというものが置かれています。
このウェブサーバーに対してクライアント(各個人端末)からウェブサイトを見せてほしいというリクエストを行い、ウェブサーバー側で問題なければクライアントのリクエストを承諾することでクライアントの端末でウェブサイトを表示できるという仕組みになります。
このやり取りがボタンを押して表示されるまでに超高速で行われています。すごいですよね。
では上記を念頭においた上で次の場合をご覧ください。
実際にはそのウェブサーバーにアクセスする人は何人もいるので上記のような処理が走ります。
このような各クライアントのリクエストに一つ一つ対応をしているとサーバーは疲弊をしてしまい、最悪ダウンしてしまうといったことになってしまいます。
それこそ大手サイトであれば毎秒世界中からアクセスがあるわけで膨大な処理が必要になってしまいますのでこれではいけません。
このような事態を解消するためにある仕組みの一つが今回ご紹介するCDNとなるのです。
CDNは正式名称「Content Delivery Network」というウェブサイトやウェブコンテンツを効率的に見られるようにするためのネットワークの仕組みとなります。
これがあるとどうなるかというのが、以下のような図になります。
CDNという大きい丸の中にいくつかサーバーがあり、クライアントはそのサーバーと通信していることがわかるかと思います。この円の中にあるサーバーをキャッシュサーバーと呼びます。
(キャッシュとは、ウェブサイトのデータなどを一時的に保存し、再表示する際にこのデータを再利用して効率的に表示するといった機能になります。)
そしてキャッシュサーバーはウェブサーバーのデータを予め一定の間隔で更新・保持しておくことができます。
このようなウェブサーバーの情報を集積したキャッシュサーバーを複数台設置し、各クライアントから一番近いキャッシュサーバーにアクセスさせ、保持したデータでウェブサイトを表示させることで負荷分散を行う仕組みがCDNとなります。
この仕組みによりクライアントはウェブサーバーを直接見に行くことがなくなり、また複数台あるキャッシュサーバーにそれぞれアクセス分散することからアクセス集中が抑えられるといった効果があります。
この仕組みは動画配信系、自治体などの公共、グローバルなサイトといった負荷が大きくなりがちなケースなど多くの場面で利用されています。
キャッシュサーバーを用いることでサーバーに対してウェブサーバーへの負荷を低減する仕組みがCDNとなりますが、実は負荷分散以外にもCDNを利用するメリットがあります。
色々なメリットがあるCDNですが、デメリットも存在します。
上記は代表的なものであり、提供されるCDNサービスによってはクリアされていることもありますが懸念点として押さえておく必要はありそうです。
今回はわかりやすいようにウェブサーバーを例にあげて紹介をさせていただきました。
実際には動画配信についてはストリーミングサーバーを利用するなど、大本となるサーバー(オリジンサーバー)は多岐にわたります。
CDNはウェブコンテンツを扱う上で色々なサーバーにも対応することができ、メリットがあります。
ただし、その裏では如何にデメリットを抑えつつ運用していくかといった部分で非常にシビア・丁寧な設計が求められそうです。
ここまでご覧いただき、ありがとうございました。