CDNと聞いて皆さんはどんなイメージを思い起こしますか?
コンテンツデリバリーホゲホゲでしょ? akamaiだかなんだかだよね・・
とか
あぁ、画像が大量にある時に放り込んどくキャッシュね・・
とか
案外、人それぞれでイメージが異なってたりするんだと思います。
最近触る機会が多いJストリーム社の国産CDNサービス"CDNext"を参考にCDNサービスの現在の姿やWebサイト運用をぐっと楽にする為の活用法などについて紹介したいと思います。
CDNのしくみ
ざくっと言ってしまうと、地理的に分散配置されたリバースプロキシサーバー群です。
リバースプロキシ+コンテンツキャッシュ+最適ルーティング、と言ってもいいのかもしれません。
CDNを使うメリットは
基本的なメリットとしては以下あたりだと思います。
- Webコンテンツを高速に安定して配信することができる
大量の同時アクセスが発生するような場合でもCDNがプロキシしてくれるのでWebサーバーは楽ちんです
クライアントからネットワーク経路的に最も近いプロキシへ最適ルーティングされるのでWebサイトの応答速度が速くなります(といっても、日本国内ではさほどの差にはならないです、、)
- DDoS攻撃対策にもなる
一般的にCDNネットワークではDDoS対策がとられており、WebサイトをDDoS攻撃から守ることができます
- HTTP/2対応、手っ取り早い常時SSL化
CDNにSSLサーバー証明書を登録することでHTTP/2対応が可能となりサイトが高速化したり、オリジンサーバーでの常時SSL化がいろいろと大変な場合は、クライアント-CDN間の通信のみ常時SSL化することもできたりします
CDN活用法
Webサイト運用をコストも手間もかけずに改善するためのCDN活用法として、以下にいくつかあげてみたいと思います。
CDN導入には手間をかけない
従来だと画像やJS,CSSといった更新頻度が低く、かつ比較的サイズの大きい静的ファイルのみCDNへオフロードするという導入方法が一般的でした。この導入法だとコンテンツの精査やリンクの書き換えなどコンテンツ側での手間が大きく発生してしまいますね。
CDNextなどの最近のCDNサービスではPHPやCGI等で動的に生成されるコンテンツについても問題なくキャッシュとして扱うことができます。なので、あまり細かい事は気にせず、Webサイト全体に対してCDNを適用し、コンテンツ側での制御はキャッシュさせたくない特定ディレクトリ下に.htaccessを設置するといったお手軽な導入方法がおススメです。
Webサイトを冗長化する
ECサイトだけではなく、一般的な企業サイトでも今やWebサイトのダウンはビジネスに大きな影響を及ぼしてしまいます。
ですが、Webサーバーの冗長化には負荷分散(ロードバランサーなど)の導入や、コンテンツ同期、場合によってはデータベースの冗長化など技術的難易度が高い作業が必要となり、相応のコストがかかるため、なかなか踏み切れないといったケースは多いと思います。
CDNに複数のオリジンサーバーを設定することで簡易的なロードバランサーとして機能させることができます。
アクティブサーバーからスタンバイサーバーへ定期的にコンテンツを転送、同期させる処理は必要ですが、コストも手間もあまりかけずにWebサイトの可用性をグッと向上させることができます。
いろいろと融通が利くコンテンツ管理
Webサイトが成長していくとコンテンツを管理する面においても様々な課題が発生します。
- 複数の制作会社が存在し、サーバー上のコンテンツ管理が難しくなってきた・・
- コンテンツを管理する複数の部署が存在し、サーバー上のコンテンツ管理が難しくなってきた・・
仮想パスといったURL配下の名前空間を制御できるCDNであれば、上記のような課題に対してかなり融通が利く楽な管理ができるようになります。
仮想パスを活用したコンテンツ管理の例として、
- www.example.jp/ir/ といったIR関連コンテンツは部署Aが管理するサーバーへ振り向ける
- サーバー管理もあわせて依頼しており、制作会社Aサーバー、制作会社BサーバーといったようにWeサーバーが分散してしまうようなケースでもCDNで集約、管理が手間なくできる
といった融通が利く管理が可能になり、Webサイト全体での運用がグッと楽になります。
さいごに
CDNが登場した当初は一部の限られた大規模サイトが大きなコストをかけて利用するものというイメージが強かったですが、今や無料で使えるCDNサービスなども登場しており、CDNを活用する目的も多様化しているんだと思います。
付加機能なども各社それぞれで拡充されており、いろんな活用法が考えられるツールになってきていると感じてます。
Webサイト運用がもっと楽になれば・・とお悩みの方は是非いちど、CDN活用を検討してみてはいかがでしょうか。