CDNで機会損失を回避!CDNの仕組みから導入効果の試算まで分かりやすくご紹介
さくらインターネットではウェブアクセラレータというCDNサービスを提供しています。本稿では、主にWebサイトの運用/企画担当者向けに、そもそもCDNとは何なのか?どういう機能があってどういう時に役に立つのかといったポイントをご紹介します。
※この記事は掲載から1年以上が経過しております
目次
そもそもCDNってどういったもの?
CDNとはContent Delivery Networkの略で、簡単に言うと自分のサーバーの代わりにデータの配信を肩代わりしてくれるサーバーの集合体です。「Network」という単語が使われていることからもわかるように、1拠点からの配信ではなく、複数拠点から配信することで拠点内の冗長性だけではなく拠点単位の冗長性も考慮されているのが特長です。要はデータセンターが火災などで丸ごと障害が発生した場合でも、別のデータセンターから同じデータを配信できるということです。
CDNなし
CDNあり
図のように、CDNがない場合は1つの拠点でコンテンツ配信を行いますが、CDNを利用すると、自分のデータセンター以外の拠点を用いて配信することができるようになります。当然、自社で複数拠点にシステムを構築してCDN(的なもの)を作ることもできますが、運用の手間もかかりますしCDN利用によるコスト面でのメリットを活かせなくなってしまいます。コストメリットは後のセクションで詳しくご紹介します。
どんな人のためにあるの? ポイントは負荷の軽減と機会損失
Webサイト、Webサービスにおいて、負荷は一定ではありません。ニュースサイトは出退勤の朝夕、通販サイトはセール時など、どうしても負荷が集中する時間が発生します。
この一瞬の負荷を軽減できたら、サーバーコストはもっと安く済むのになぁ。というのはWebサイトの運用担当者共通の悩み。そんなお悩みを解決してくれるのがCDN、というわけです。負荷が一定でないWebサイト、つまりほとんどのWebサイトにおいて、CDNの導入はメリットがあります。強いて言えば、小規模すぎて最小構成で運用できている場合はCDNのメリットを享受するのが難しくなります。
Webサイトにおける過負荷の弊害とは?
負荷がサーバーの処理性能を超えて高まった場合や、契約している回線の帯域一杯までデータが流れている場合、Webサイトでは「レスポンスの遅れ」「表示の遅れ」が発生します。テーマパークの券売機に行列ができるように、処理の順番待ちが増えていきます。さらに高負荷になると、アプリケーションの処理能力を超えたことによる503エラー、タイムアウト(エラーの応答すらださなくなる)などが発生します。券売機を酷使しすぎて故障が発生し、白紙のチケットが出てきたり、チケットが発券できなくなるようなイメージです。メディアサイトでは広告が表示されなくなったり、ショッピングサイトでは商品が買えなくなる「機会損失」が発生します。機会損失は売上の減少に直結するので、どんなサイトでも最優先で取り組むべき課題です。
CDNを利用することは、この券売機を最寄り駅や中継駅などテーマパーク以外の場所にも設置して台数を増やすことに似ています。チケットを購入できる場所が増えることで券売機1台あたりの負荷が下がり、故障する確率が下がります。1箇所の券売機が故障しても、別の場所でチケットを購入できます。こうした高負荷を分散して肩代わりさせることでトラブル発生の可能性を下げ、機会損失を防ぐのがCDNの役割になります。
具体的なCDNの機能
昨今CDNは様々な機能を持っていますが、基本的にはファイルのコピーを配信するのが主なものです。キャッシュサーバー側では、リクエストが来た際にファイルがない場合、オリジンへファイルを取得しにいきます。1回目は必ずこの取得が発生します。
※簡易に説明するためにサブドメイン形式での配信を例に解説します。
1回目のアクセス
1)example.jpさんファイルください。
2)はいどうぞ、一部はCDNにありますよ。
3)CDNさんファイルください。
4)キャッシュ持ってないのでファイルください。
5)はいどうぞ。キャッシュ時間は1時間ね。
6)キャッシュ時間は1時間、メモメモ。
7)エンドユーザさんファイルです。
2回目以降は、オリジン側で設定されたキャッシュ時間に基づき、その時間内でキャッシュ配信します。キャッシュ時間が切れるとファイルが破棄され、再度オリジンへファイルを取得しにいきます。
2回目以降のアクセス
1)example.jpさんファイルください。
2)はいどうぞ、一部はCDNにありますよ。
3)CDNさんファイルください。
4)エンドユーザさんファイルです。
つまり、キャッシュ時間を長く設定すればするほどオリジンへのアクセスは減りますが、その分リアルタイム性が落ちます。例えば、随時更新の可能性のあるニュース画像などは10分、逆にほとんど更新の可能性のないマンガなどのコンテンツは1日といったように、どれぐらいのタイムラグで反映されれば良いのかを考えながらキャッシュ時間を設定することで、更新性と負荷軽減のバランスを取ります。キャッシュ時間が短いとリアルタイムに近いタイミングで更新できますが、その分すぐにキャッシュが削除されてしまうのでオリジンサーバーの負荷はキャッシュが長いときよりは増える、というわけです。
もちろん、キャッシュ時間内でも強制的にキャッシュを削除する機能も、大抵のCDNでは持っています。キャッシュ時間を1日に設定した場合、何かしら緊急の事情で画像を差し替えようとしても1日は差し替えられない状態になります。これを防ぐために、CDNではWebの管理画面やAPIを使って一旦キャッシュを強制的に削除してオリジンから再取得させる機能があります。CMSと組み合わせて、画像を更新したら自動的にAPI経由でキャッシュクリアさせる機能などを作ることも可能です。
ただし、CDNのキャッシュはかなりのサーバー台数が関わっている場合が多く、削除に時間がかかる場合もあります。できるだけキャッシュ時間のコントロールで対処できるようにキャッシュ時間を設定する方が良いでしょう。
CDN効果の試算
CDNの効果を試算する場合は以下の数式となります。
(浮かすことのできた費用)-(CDNに払う費用)
多くのCDNは転送容量×単価、もしくは転送容量×単価+リクエスト回数×単価という課金体系となっています。
さくらのCDN ウェブアクセラレータでは、1GiBあたり5円(税込)でリクエスト回数課金はありません。月間50TiBの転送量を出している場合、25万円(税込)となります。一般的なクラウドコンピューティングを利用した場合、転送量50,000GB×8円+サーバー使用料約1万円がかかり、40万円ちょっとかかってしまいます。割高なリージョンを利用していると、さらに高額になる場合もあります。
また、自社設備で画像サーバーなどを構築している場合も、回線、サーバー保守、ハウジングなどで費用がかかります。自社設備はデータベース系の複雑なアプリケーション・サーバーに特化させていき、単純なWebサーバー機能はCDNを利用すると、コストダウンに繋がる場合があります。
さくらのCDN ウェブアクセラレータは、こういった転送量+サーバー稼働時間などで課金されるクラウドコンピューティングサービスを単純なファイルの配信だけに利用している場合に費用圧縮効果が高くなります。また、単価が高いCDNなどをご利用の場合も、効果があります。
さくらのCDN ウェブアクセラレータ
さくらインターネットではウェブアクセラレータというCDNサービスを提供しています。さくらのクラウドオプションサービスという位置づけですが、オリジンサーバーはさくらのクラウド、VPS、専用サーバ以外にも、他社クラウドなどさくらインターネットのサービス以外でもオリジンとして利用可能で、さらに1GiBあたり5円(税込)とかなり気軽に利用できる料金設定になっています。利用開始時は500GiBの無償利用枠が設定されていますので、お試し利用も可能です。
今のところ、CNAMEによる独自ドメイン配信か、*.webaccel.jpのサブドメイン配信が選択可能で、SSLサーバ証明書の持ち込みやサブドメインのSSL通信、HTTP/2などに対応し、ファイルサイズは1GiBまでキャッシュ可能となっています。
ウェブアクセラレータをベンチマーク
実際のWebサイトでウェブアクセラレータを使用した場合のベンチマークをしてみました。
1ページに100枚程度の画像が配置されているページをWordPressで用意しました。
さくらのクラウドで2コア4GBメモリの仮想サーバをセットアップし、nginx + php-fpm(PHP7.0)+ mariaDBをインストールしてWordPressをセットアップ。そこへ外部サーバからApache Jmeterを利用して複数スレッドの負荷をかけてみます。
一方は全て当該サーバー内から配信し、もう一方は画像ファイルをウェブアクセラレータに逃しました。それ以外の条件は同じです。
ウェブアクセラレータON時
平均CPU負荷 : 21%
平均送信帯域 : 7.8Mbps
ウェブアクセラレータOFF時
平均CPU負荷 : 46%
平均送信帯域 : 48Mbps
以上のように、CPU負荷を45%程度、ネットワーク帯域を83%程度削減することができました。このように、CPUや帯域の使用量を減らせると、サーバー処理の余裕につながるためよりスペックの低い(=コストの安い)サーバーへ乗り換えたり、回線契約を見直すことも可能です。従量制のサーバーを利用している場合もコストダウンが可能になります。また、高負荷時の処理に遅延が生じている場合などでも、CDNによる負荷分散で応答速度を落とさずにコンテンツ配信を継続することが可能になります。
※ウェブアクセラレータの性能についてはオリジンの環境、配信するコンテンツに依存する部分が大きいため、上記の効果を出せることを保証するものではありません。
5円/1GiB(税込)とリーズナブルに利用できるさくらのCDN ウェブアクセラレータを是非お試しください。