【初心者向け】CDNとは? メリット、注意点等を徹底解説

こんにちは!ここ数年で、CDNという言葉を耳にする機会も増えてきたのではないでしょうか?

CDNを導入されている企業も増えていますが、一方で、まだCDNを使ったことのない、よく知らない方も多いでしょう。

  • CDNってそもそも何?
  • 導入のメリットは?
  • 利用の際に気を付けることは?

本記事では、CDNについて上記のような疑問を持っている人を対象に、CDNについての基本的な仕組みや、導入のメリット、およびその周辺基礎知識について、わかりやすく説明していきます。

速度改善はUX向上の基本

UX!いきなり難しい言葉が出てきましたが、「そのサービスを使ってどう感じたか?」というユーザ体験(User eXperience)のことです。

「UI/UX」のようにUIと一括りにされることも多いですが、

  • 一瞬でページが表示されて気持ちよかった! / ページ全体が表示されるまで30秒くらいかかってイライラした・・・
  • ページが見やすかった!使いやすかった! / ゴチャゴチャしていて使い方がわかりにくかった・・・

というWebサイト・Webサービスに対する体験はもちろんのこと、

  • カスタマーサポートに問い合わせたら10分後に丁寧な回答が返ってきて感動した!
  • ネットショップで購入してからその日のうちに届いた!
  • でも不良品が多くてガッカリ・・・
  • でもサポートに問い合わせたらすぐ新品と交換してくれた!

といった体験すべてがUXです。

ここに挙げたUXをすべて改善するには一部署だけでなく全社的な、あるいは社外も含めた協力体制が必要となる場合もあるので大変です。できることからコツコツとやっていきましょう。

第一にやるべきUX向上は速度改善。どんなに素晴らしいWebサイト・Webサービスも、ページが表示されるまでに時間がかかってしまっては素晴らしさを体験する前にユーザが離れてしまいます。Googleの調査でも、ページの表示速度が遅いほど直帰率(そのウェブサイトから離脱してしまう率)が増加することが明らかになっています。

「うん、速度が大事なのはわかったけどどうやって高速化すればいいの?」

はい。そこでCDNの出番です。

CDNで手軽に速度アップ!

CDNとは「Content Delivery Network」の略で、簡単に言うと自分のサーバの代わりにデータの配信を肩代わりしてくれるサービスです。「Network」という単語が使われていることからもわかるように、1拠点からの配信ではなく、複数拠点から配信することで、拠点内の冗長性だけではなく拠点単位の冗長性も考慮されているのが特長です。

拠点単位の冗長化がされていることで、1つの拠点が災害などで丸ごとダウンした場合でも、別の拠点から配信できます。

CDNは現在のインターネットに不可欠な存在

では、CDNは、いったいどういったところで使われているのでしょうか?

実はとても身近なところで使われているのです。そう、今お使いのパソコンのWindows Updateや、スマートフォンのOSアップデートでも利用されています。特定の時間にリリースされ、大容量のファイルを複数の端末へ届ける場合、サーバの負荷は非常に高くなります。しかも、これらのアップデートは配布初日の負荷が非常に高く、その他の日の負荷は恐ろしいほど低くなります。急なアクセス増加を見越してサーバやネットワークを事前に用意すると、低負荷の日は余剰なサーバやネットワークを運用する必要があるので、非常にコストがかかります。

CDNは高負荷に耐えられる専用のネットワーク、配信サーバを持っているので、大容量のトラフィックにも耐えられます。もちろん、アップデートファイルのようなファイル配布以外にも、天気予報、ニュースなどの公共性の高いWebサイトや、テレビ連動企画など、短時間で高負荷になるWebサイトでも利用されています。高負荷になりがちなサイトではサーバに負荷がかかり表示速度の悪化が見られますが、CDNを利用することでページの表示速度を改善できるのです。

CDNは、インターネットトラフィックの7~8割を配信する主要技術となっています。

CDNの仕組み

そんなインターネットの陰の立役者、CDNはどんな仕組みなのか知りたいですよね。ここからは、CDNの仕組みについてご説明します。

CDNを導入していない場合は、オリジンサーバ(Webサーバ)から直接閲覧者に配信されます。

CDNを導入している場合は、オリジンサーバ(Webサーバ)と閲覧者の間に、キャッシュサーバが入ります。

オリジンサーバとキャッシュサーバオリジン

オリジン(Origin)とは「原点」という意味ですが、CDNの場合は、「元のデータが入っているサーバ」を指します。

反対に、データを代わりに配信してくれるサーバを「キャッシュサーバ」と呼びます(エッジサーバと呼ぶ場合もあります)。

閲覧者はキャッシュサーバへリクエストを出し、キャッシュサーバからオリジンサーバへデータを取りに来るといったイメージです。

キャッシュサーバがオリジンサーバの代わりにデータを配信するまで

キャッシュサーバの中身は最初何も入っていませんので、オリジンサーバまで取りにいく必要があります。

初回にオリジンサーバから取得したあと、2回目以降のアクセスはキャッシュサーバから直接配信され、オリジンサーバへのアクセスは発生しません。

この状態を、「オリジンサーバのコンテンツをキャッシュサーバがキャッシュしている」と言います。「キャッシュ」という言葉は比較的耳慣れているかもしれませんが、CDNにおいてはオリジンサーバからデータを取得してキャッシュで持っている状態を指して「キャッシュしている」と言います。

キャッシュ時間という考え方

あるデータの「キャッシュ時間」を30秒に設定した場合、初回アクセス時にキャッシュサーバがオリジンサーバからデータを取得した後、30秒間はキャッシュサーバからデータを配信します。

31秒後以降にアクセスがあった場合、再度オリジンサーバへデータを取得にいきます。その際、オリジンサーバ上のデータが更新されていても、されていなくても取りにいき、新しいデータをまた30秒間キャッシュします。これがキャッシュ時間という考え方です。30秒間はオリジンサーバへのアクセスが発生しないので、負荷が回避されます。

例えば、秒間数億リクエストといったモンスター級のサイトであったとしても、キャッシュサーバが適切に処理していれば、オリジンサーバの負荷は30秒間に1リクエストに軽減できます。

他にもたくさん!CDNのメリット

オリジンサーバの負荷を下げられ、Webサイトの表示速度が向上できるという点がCDNの最大のメリットですが、他にも注目すべきメリットがいくつかあります。

ここでは、 CDNを利用することによって解消できるWebサイトのボトルネックについて紹介していきます。

帯域制限を気にしなくていい

一般的にVPSやレンタルサーバでは、ユーザに共有の回線を提供しています。これらのサービスでは、理論的に共有回線以上のトラフィックは流せないため、アクセスが集中して帯域を圧迫するとタイムアウトが発生し、Webサイトが閲覧できなくなるリスクがあります。

CDNを利用すると、この帯域制限を気にしなくてよくなります。

サーバのCPU負荷を低減できる

WordPressなど動的サイトを生成するCMSにありがちなのですが、データベースリクエストやPHPの処理が非常に高負荷で、CPUの負荷が高くなる傾向があります。

アクセスが殺到した際、レンタルサーバではPHPプログラムの同時実行数制限、VPSなどであればリソース制限に引っかかり、Service Temporarily Unavailable(503)エラーやゲートウェイタイムアウトなどのエラーが発生する原因となります。その対策として、PHPにより生成されるページのHTMLをキャッシュすることで、サーバのCPU負荷を格段に下げることができます。

WordPressサイトは非常にCPU負荷が高く、プラグインやテーマによってさらに高負荷となり、エラーが出やすくなるため、CDNでキャッシュするメリットが非常に高くなります。

転送容量を気にしなくていいため、サーバの運用費用を下げられる

レンタルサーバなどでは月間転送容量、1日の転送容量などが決まっているものが一般的です。動画などを多用しているサイトではこの転送量制限がボトルネックになり、その解決のために高い料金のサーバを借りている方もいらっしゃるかと思います。

CDNを利用するとオリジンサーバからの転送が少なくなり、キャッシュファイルの配信はオリジンサーバの転送容量カウントの対象外となります。キャッシュ配信にも費用がかかりますので事前のシミュレーションは必要ですが、CDNを利用することで現在のサーバのプランを安いプランに変更することも可能です。

また、クラウドサービスの中には、インスタンスからの転送容量に対して従量課金されるものもあります。このような場合も、CDNを利用することでオリジンサーバからの転送容量を削減できます。

CDNを使う際に気を付けること

これまではCDNのメリットについて触れてきましたが、使う際に気を付けることもまとめておきます。

コンテンツごとのキャッシュ設定を適切に行わないと、情報漏洩などのリスクが生まれる

CDNではキャッシュ時間とともに、キャッシュ対象ファイルを明確にしておく必要があります。

CDNを利用せずに自サーバ内でキャッシュをしている場合も同様ですが、個人情報が表示されたページをキャッシュしてしまい、そのページが他人に表示されるというキャッシュの誤表示、誤キャッシュの事故は継続的に発生しています。こういった事故は、キャッシュ配信がなければ生まれないものです。CDNを利用する際は、キャッシュ対象ファイルの選別を慎重に行う必要があります。

キャッシュ事故とは以下のような流れで発生します。

まず自分の個人情報を見ようとしてサイトへアクセスしたAさん。会員ページがキャッシュされる設定だったため、CDNにAさんの会員ページのHTMLがキャッシュされます。Aさんは正しく自分の情報が見えているので気づきません。

次に、同じページを閲覧しようとしたBさん。キャッシュする設定だったためCDNはAさん用の会員ページをそのままBさんへ返してしまいます。するとBさんにはAさんの個人情報が出ている会員ページが見えてしまい、情報漏洩となってしまいます。

このような事故を回避するためにも、キャッシュするファイルを選んでおくことが非常に大切です。

キャッシュ時間中はファイル更新が反映されない

「CDNの仕組み」で「キャッシュ時間」というものが存在し、キャッシュ時間中はキャッシュサーバからデータが配信されるため、オリジンサーバのファイルを更新しても修正が反映されないという点を説明しました。

もう少し具体的に説明すると、例えばECサイトでCDNを利用していて、新しい商品を登録した際に画像内に「激安!3,980円!」とするべきところを、「激安!398円!」にして画像をアップしてしまったとします。

キャッシュ時間が3600秒に設定されていた場合、アップロードしてキャッシュされてから1時間(3600秒間)はサイトの修正が反映されず「激安!398円!」で配信されてしまいます。 これもキャッシュ事故の一例です。

キャッシュ削除の反映に時間がかかる場合がある

間違ったファイルがキャッシュされてしまった場合、内容によっては非常に大きな問題となります。そのような時のために、多くのCDNではキャッシュの削除機能を備えています。API経由で削除できるもの、ウェブの管理画面から削除できるものなど様々なものがあります。

キャッシュ削除で注意したい点は、ものによってはキャッシュサーバからファイルを削除するのに時間がかかる場合があります。特に大規模なCDNサービスではキャッシュサーバの数も多く、削除までの時間が予想以上にかかることがあります。

キャッシュ削除機能はあくまでも一つの手段であり、キャッシュ時間を調整する、キャッシュ対象ファイルを選定するなど、キャッシュが消えない場合も対応できるようにしておきましょう。

障害点が増える

今まで運用していたWebサイトでコンテンツ配信にCDNを利用する場合、CDNが障害でダウンするとサイトの一部、もしくはすべてのコンテンツが表示されないリスクが増えます。もちろん、CDN事業者はこういったことがないように複数サーバ・複数拠点など可用性を高めていますが、CDNを利用することでリスクが1つ増えるということは覚えておきましょう。

また、配信拠点の追加は障害発生時に原因切り分けを難しくすることにもなります。事前に検証環境でCDNダウン時をシミュレーションしてみるなど、いざという時に対応できる体制やマニュアルを作っておくことも重要です。

アクセスログが取れない場合がある

CDN事業者によりますが、Urchinなどのログ解析型アクセス解析ツールを利用している場合、ログが取得できずにアクセス解析ができなくなる可能性があります。

最近はGoogle AnalyticsをはじめとしたJavaScriptによるビーコン型の解析ツールが主流となっているため、あまり気にしなくても大丈夫ですが、ログが必要な方は注意する必要があります。

ログのダウンロードサービスを提供しているCDN事業者もあります。

CDNを効果的に使うには? 画像最適化について

CDNの特長を活かすことで、サーバCPU負荷の軽減やサーバ運用コストの削減効果が最も期待できるのは、大容量のコンテンツがあるWebサイトです。

大容量のコンテンツとは具体的に何でしょうか?

「大量の画像を掲載しているサイト」はその典型例です。画像はテキストよりもはるかにファイルサイズが大きく、単に配信するだけではなく、デバイスごとに表示サイズを変えたり、解像度が高いまま表示させたいといった、「画像の最適化」を行いたいといった課題もあります。

CDNを使っただけでは画像のファイルサイズ自体を軽くすることができません。そのためサイトの表示速度が速くなっても、CDNによるデータ転送量も膨大になり、CDNの利用料金が割高になってしまう課題があります。

画像を大量に掲載しているECサイトやユーザが画像のアップロードを頻繁に行うようなサービスでは、画像に特化したCDNサービスを使うことで画像の最適化・配信を行うことができます。画像変換の機能も付いたCDNサービスを画像CDNサービスと呼びます。

また、UXの向上には表示速度の改善だけではなく、「画像の大きさ」と「画像のファイルサイズ」を調整する「画像の最適化」も重要です。

画像の最適化については、この記事の続編となる「【Webエンジニア向け】画像変換によるWebサイトの最適化を解説」の記事で詳しく解説していますので、是非ご覧ください。

まとめ

この記事では、CDNの基本的な仕組みや・メリット・導入の際に気を付けることについて解説しました。

  • CDNを導入すると手軽にWebサイトの表示速度を向上でき、サーバの負荷軽減や運用費用の低減が期待できる
  • CDNを使う際には、キャッシュ設定を適切に行うことが重要
  • 画像など大容量のコンテンツを扱うWebサイトには、画像CDNサービスという選択肢もある

最後まで読んでいただき、ありがとうございます。

ImageFluxについて

CDNの仕組みやメリット、画像最適化について説明しましたが、キャッシュ配信と画像最適化が出来るサービスとして、ImageFluxをご紹介します。

ImageFluxは、さくらインターネットがピクシブ社と共同開発したクラウド型の画像変換・キャッシュ配信サービスです。ピクシブ社の画像変換技術のノウハウを凝縮し、日本語のサポートやドキュメントも対応しております。

メルカリ様、STORES様、資生堂様等多数の企業にも利用いただいております。

サービスの詳細は、以下から資料をダウンロードいただけます。是非ご検討ください!

よくわかるImageFluxサービス紹介資料をダウンロード