何かサービス配信やWebサイトを高速配信したい時に、CDNというサービスがよさそうで調べてました。4K/8K等の動画や解像度の高い画像を採用するなど、リッチな事をする時に、デザイン要素を削らずに資金投入で高速化できるのは非常にありがたいですね。
- 高速化の背景(3秒以内にサイト表示とコンテンツのリッチ化の両立)
- CDN(コンテンツ・デリバリ・ネットワーク)の概要
- 実現方法(キャッシュ型とコピー型)
- 他メリット(PR等の一時的アクセス対応・DoS対策)
- 価格の発生ポイント
- まとめ
- Tips
高速化の背景(3秒以内にサイト表示とコンテンツのリッチ化の両立)
ビジネス展開する上でやはり人に見てもらって操作してもらうサイトを用意する必要があります。以前、調べましたが人は3秒以内にサイト表示を完了しないとページから離れていきます。しかし、では文字だけのページで人を引き付けるサイトになるかというとそうでもない。
・3秒以内の高速化を果たしたい
・魅力的なサイトにするために動画・音声・画像等を多用したい
このトレードオフを改善するために、CDNという呼ばれる手法が注目される。
CDN(コンテンツ・デリバリ・ネットワーク)の概要
ユーザのアクセスを自前のサーバだけでなく、最寄りのサーバに振り分ける事で、大本のサーバ負荷軽減とネットワーク遅延が減る事による高速化が図れる。
実現方法(キャッシュ型とコピー型)
CDNを実現する方法として2つに大別できる。
基本的に、CDNサーバがコンテンツを事前に保有しておき、ユーザに配布する形になるが、更新頻度に差がある。
●キャッシュ型:定期的に同期する方式(更新したら通知もらうなどもある)
良い点:大本のサーバとCDNサーバ間の通信量が少なく、安い。
悪い点:大本のサーバのコンテンツを更新しても、CDNサーバで反映されるまで
ユーザ側に届かない。※更新反映が遅くなる。
●コピー型:リアルタイムに同期し、コピーする方式。
良い点:古いコンテンツにアクセスするユーザがいない※即時更新
悪い点:大本のサーバとCDNサーバ間の通信量が多く、高い。
それぞれ一長一短あるが、キャッシュ側は利用料金が抑えられるため、一般的に使用される。一方、コピー型は自前でCDNの仕組みを用意できる会社か、コンテンツの容量や変更頻度が少ない(オープンソース開発等)時に利用される 事がある。
他メリット(PR等の一時的アクセス対応・DoS対策)
恒常的なアクセスではなく、一時的にアクセス数が増える見込みがある際に、ユーザを逃さず取り込むために、CDNを使うとよい。
例えば、無料キャンペーンや新商品のニュースリリースなど、通常時のアクセスをはるかに上回る時に、CDNを一時的に活用するのがよい。自社のサーバとして資産化すると、通常時は持て余してしまうので、無駄となってしまうが、それを避けられる。
また、負荷分散にもなるので、不正な大量アクセスによるDoS攻撃を受けても、そもそもの通信許容量が増えているので、耐える事ができる。CDNサーバ側でも防御機構はもっているので、可用性を高める事ができる。
価格の発生ポイント
ここも大きくは2つ。
①ユーザからCDNサーバのアクセス
②大本のサーバからCDNサーバへの通信
また、単純にコンテンツの容量以外にも、HTTPヘッダ情報やSSL情報などオーバヘッドの部分もあるので、単純にコンテンツ容量×ユーザ数から高い価格となる事もありえるので注意。
まとめ
できるだけリッチなサイトを用意しつつ、ユーザが離れないような高速表示をトレードオフをクリアする必要が出てきた時は、CDNも選択肢にいれるとよさそうです。
実現方式も2つありますが、ちょっとした更新の時間差が致命的になるようなサービスでもないならば、キャッシュ型のCDNを選択しておけば無難そうです。
Tips
物理的にアメリカと日本間だと200ミリ秒、日本内でも20ミリ秒はかかる事もある