「Webが遅い」を解決する、CDNの仕組みと実現できること

Webサイトの表示が遅くて困っているなら、CDN(Content Delivery Network コンテント・デリバリー・ネットワーク)の利用で解決する可能性があります。もちろん、表示が遅い理由は一つではありませんが、Webサイトの設計やインフラに問題がないのなら、サーバ負荷が高すぎるのが原因かもしれません。それを解消するCDNの仕組みと、CDNを導入することで実現できることについて解説します。

CDNとは

かつて、Webサイト構築のガイドラインに「8秒ルール」という言葉がありました。「Webサイトにアクセスしてから全体が表示されるまでに8秒以上かかると、ユーザーは他のサイトに行ってしまう」というものです。しかし、今は8秒も待ってくれるユーザーは少ないかもしれません。Webサイトの表示が遅くてユーザーが離脱してしまうのは、「企業イメージが下がる」「機会損失が起きている」と同義です。

重いWebサイトは「負荷分散」で解決

Webサイトの表示が遅い理由はいろいろあります。そもそもコンテンツが重いのかもしれませんし、外部からの読み込み要素がある場合はそれが原因のこともあります。ネットワークやWebサーバに問題があるというケースもあるでしょう。しかし、もしそういった問題をクリアしているならば、ユーザーのアクセスが多くて処理しきれなくなっているという可能性があります。それを解決するのは、「負荷分散」です。

負荷分散は、サーバの台数を増やしてロードバランサという装置を入れることで実現します。また、CDNというサービスを利用することでも負荷分散は可能です。そしてCDNには、単なる負荷分散以上のメリットがあります。

CDNの仕組みとは

CDNとは、世界中に配置されたコンテンツ配信用のCDNサーバ(エッジサーバ)を仮想的なネットワークに構成して、そこからWebサーバ(オリジンサーバ)のコンテンツを配信する仕組みです。CDNサーバは、Webサーバの内容をコピーして一定の時間保持します。これを「キャッシュする」といいます。ユーザーはCDNサーバからキャッシュをダウンロードして表示したものを見るので、オリジナルであるWebサーバの負担が減るわけです。

キャッシュは、日常的には「スマホの動作が重くなった時にキャッシュクリアする」というような文脈で耳にすることが多いため、悪いことのように感じるかもしれませんが、キャッシュ自体が悪いものというわけではなく、コンピュータを使ったシステムでは一般的に使われている手法です。例えば、文章を書く時に必ず見る辞書を、書庫の本棚に入れておくのではなく、袖机に出しておくほうが作業ははかどります。同じように、コピーを近くに置いておくことで処理を速くするのが「キャッシュする」ということです。

辞書の例では、同じ辞書を複数の人が使いたい場合、書庫への出入りが渋滞してしまうことがあります。しかし、各人の袖机にコピーを置いておけば、そのようなことも起こりません。CDNは、それと同様に様々な場所に設置されたCDNサーバにキャッシュしておくことでユーザーがどこからアクセスしても迅速に応えることができるのです。

ちなみに「キャッシュがたまって動作が重くなる」のは「袖机にいろいろな資料が山積みになって、使う資料が探せなくなった」状態です。一度全部捨てて(キャッシュクリアして)、あらためて今見たい資料をコピーしてくると、作業がはかどるようになるわけです。

CDNで実現できる3つのこと

CDNを利用することで得られるメリットは、主に次の3つです。

① アクセスの高速化

CDNでは、キャッシュというコピーを、さまざまな場所に設置されたCDNサーバーに保存しています。そのため、メインのWebサーバから遠い場所からアクセスしてきたユーザーがいた場合にも、そのユーザーの近くのCDNサーバからコンテンツをダウンロードすることができるため表示速度が速いのです。

インターネット経由でWebサイトを閲覧する時、そのWebサーバがとても遠くにあれば、それだけ時間がかかります。たとえ高速回線を利用していても、通信が光速より速いわけではないので、動画を米国西海岸からダウンロードする場合、コンマ何秒かの遅延は発生するでしょう。この、遠さなどに起因する「遅い」「重い」をITの用語でレイテンシーといいます。

そして実は、インターネット上で「遠い」という時、単純に物理的な距離が遠いことだけを指すわけではありません。インターネットは中継器にあたるネットワーク機器で編み目のように回線がつながっていますが、そのネットワーク機器を通る回数が多いほど、レイテンシーが大きくなるのです。

例えるなら、物理的な距離が近くても、何度も乗り換えが必要で行きにくい駅があるのと似た状態です。つまり「国内のWebサイトを国内のユーザーに見せるだけだから関係ない」というわけではないのです。CDNの事業者は、そのような状況も考慮してCDNサーバを配置しています。

② 負荷分散

アクセスが集中して処理しきれないという時、Webサーバの性能の問題と、Webサーバが接続するネットワーク回線のキャパシティの問題があります。そのため、単純にサーバ台数を増やしただけでは解決しないことがあります。しかしCDNは、オリジナルのWebサーバへのアクセスを別々のネットワーク回線に接続されたCDNサーバが肩代わりするため、どちらの問題であっても負荷分散の効果があります。

性質として、まず各地にあるCDNサーバの数だけアクセスが分割されることで集中をある程度緩和できるため、サーバごとにかかる負荷を減らせます。

その上で、それぞれのCDNサーバが接続するネットワーク回線が別の場所に設置してあるため、回線の混雑も緩和できます。

これは、特定の日にアクセスが集中するような場合に、特に威力を発揮します。アクセスするユーザーが順調に増えているのであれば、サーバ追加の予算も通りやすいでしょうし、インフラ増強という選択肢も有力です。しかし、キャンペーンや申し込みの解禁など、特定の日にアクセスが極端に集中する場合、その日のためだけにサーバを増やすのは現実的ではありません。CDNは、そのような突出したアクセス集中にも対応できます。

③ セキュリティ

CDNはセキュリティソリューションではないので、セキュリティ対策に直接的に効くというわけではありません。しかし、DDoS攻撃には効果を発揮します。DDoS攻撃とは、Webサイトにアクセスを集中させてサーバダウンを起こさせるというものです。単なる嫌がらせのようなものですが、自社のWebサイトがダウンすると会社の信用にもかかわるので、おろそかにもできません。CDNを使っていればDDoS攻撃への耐久性が高くなる効果が期待できます。

また、まずはDDoS攻撃でWebサーバをダウンさせてから内部に侵入して重要なデータを盗むといった攻撃もあるので、異常なアクセス集中を避けるための対策を施すことは、セキュリティ上有効であるといえるでしょう。

CDNのデメリットは?

ここまで、CDNのメリットを紹介しましたが、デメリットがないわけではありません。キャッシュの仕組みを考えれば、キャッシュをCDNサーバが取得してから次にキャッシュを取得するまでの間はメインのWebサーバに更新があっても反映されません。例えば、商品の価格を一桁間違えて書いてしまった場合、キャッシュを再取得するまでの時間が長いと、すぐにWebサーバの方を修正してもそれがなかなか反映されないといったことが起きます。このように、配信してはまずい内容の修正が遅れるということはそれだけユーザーの目に触れる危険性が増すということになりますので、キャッシュするファイルは慎重に選定する必要があります。

CDNの導入方法とサービス選定のポイント

CDNは、事業者に相談して導入する場合や、現在利用しているレンタルサーバやCMSのオプション機能として導入する方法などがあります。CDNサーバの設置エリア、ネットワーク回線の容量、キャッシュ容量などを確認して、自社に適した事業者を選定する必要があります。

また、料金体系も「転送料課金(CDNサーバからインターネットへ配信された通信料で課金する方法)」「オリジン転送料課金(CDNサーバが Webサーバからキャッシュを取得するために発生する通信量で課金する方法)」「トランザクション数課金(ユーザーがアクセスした回数で課金する方法)」「定額課金(月額いくらという課金方法)」などさまざまなので、自社のデータ通信量や予算などに応じて、選定する必要があります。

選定のポイント

どのCDNを選べばよいかは、自社のWebサイトの状況によります。例えば、更新は少ないのでキャッシュ時間が長くて構わないという場合、WebサーバからCDNサーバの通信量は少ないので、オリジン転送料課金が得です。一方、キャッシュ時間を短くしたいなら、通常の転送料課金のほうが割安になります。

また、従量課金では社内の稟議が通りにくい場合などは、多少割高でも定額課金がよいということになります。その他、どの程度のキャッシュサイズが必要か、使用中のSSLサーバ証明書をそのまま使えるかなど、CDNを検討する際にあらかじめ確認しておきましょう。

CMSなどの追加機能でCDNを導入する

Webサイトが遅くて表示に時間がかかっていると、ユーザーは待ちきれずによそへ行ってしまいます。それは、企業イメージやブランド価値の失墜、機会損失につながります。それを避けるためには、CDNを活用するという手があります。Webサーバの負担を減らすCDNは、アクセス高速化だけでなく、負荷分散してサーバダウンを防ぐことにも役立ちます。導入に際しては、現在利用しているレンタルサーバやCMSなどの追加機能で対応できる場合もあります。