今回は、何故CDNを使う必要があるのか、CDN の 仕組み や技術的なことをなるべく分かりやすく解説したいと思います。

WEB高速化、負荷分散、オンデマンド・ライブ動画配信、コンテンツ配信、ということを検討もしくはこれから始めようとしている方は、CDNというキーワードを一度ぐらいは聞いたことがあると思います。CDNってどんな仕組みでどのようなことが出来るかご存じですか? まずはCDNの簡単な歴史から。

CDNの歴史

akamai-cdn

CDN(コンテンツデリバリーネットワーク)というのは、大手Akamaiさんが1990年代に提唱したといわれているコンテンツを配信するためのネットワークのことです。実は、最近できた技術や仕組みではありません。

インターネットが流行りだした時代からありました。

しかし、近年では90年代当初から比べると様々な仕組みや技術が取り入れられた次世代CDNに進化しています。

 

 

 CDNとは?

CDNは「90年代に作られた仕組み」というお話をしたように、近未来的で特殊な事をして何でもWEBを爆速にするという技術ではありません。そして、オンデマンド動画配信(ストリーミングなど)やライブ配信なんて出来ません。

単にファイル(画像やZIPファイル等)をダウンロード配信するための技術なんです。

つまり動画配信=CDN WEB高速化=CDN ではないということです。

普通のサーバーとの違い

そもそもファイルをダウンロードさせるだけであれば、VPSなりクラウドサーバーなりをロードバランサーの下に置いて、配信するファイルを配置し横並びにしてダウンロードさせれば良いじゃない、と思われるかもしれません。

cdn-loadbalance1

 

CDN の 仕組みについて

確かに負荷分散をするだけであれば、サーバーを並べて同じコンテンツを全サーバーに置いて配信するのも効果的です。
しかしCDNはファイル配信の仕組みがサーバーを並べるだけの配信と大きく異なる点があります。

それは、アクセス元からみて距離的に一番近い場所にあるサーバーを自動で選択しコンテンツをダウンロードさせるということです。

わかりやすく1つ例をだします。

例:ヨーロッパにある企業、サーバーはヨーロッパに配置してるケース

CDNを利用しない場合

アメリカにいるユーザーがヨーロッパにある企業のWEBサイトからファイルをダウンロードすると遠いサーバーからのダウンロードとなるので遅い。

CDNを利用した場合

CDNを利用すると、アメリカのユーザーはアメリカにあるキャッシュサーバーからダウンロードすることが出来てダウンロードが高速になる。

cdn-graphic-example

 

距離が近いとは

そもそもアクセス元からみて距離的に一番近い場所にあるサーバーを自動で選択し、コンテンツをダウンロードさせるとは一体どういうことでしょうか。
一般的に距離的に近いという意味はこんな感じだとおもいます。

北海道にいるユーザーピヨピヨさんが北海道に設置されたピヨピヨサーバーからファイルをダウンロードする

距離的に近い

北海道にいるユーザーピヨピヨさんが沖縄に設置されたピヨピヨサーバーからファイルをダウンロードする

距離的に遠い

しかし、これは物理的な距離のお話であってネットワーク的に近いというとそうで無い場合があります。

ネットワーク的に距離が近いという重要性

インターネットの世界ではアクセス元からアクセス先に到達するまでに様々なことが行われファイルがダウンロードされます。インターネット自体がその名の通りルーター同士のつながりのようなメッシュ構造で出来ているネットワークです。 アクセス元から近いルーター、そのルーターが知ってる経路のどこか、さらにどこかを経由、経由、経由して、ようやく目的地のファイルがあるサーバーたどり着きます。

この経由する数をHOP数といい、アクセス元から目的地まで何HOPで到達するかというのがアクセス速度に比例します。

metric2

この図でみると下の経路も上の経路も物理的にあんまり大差なく見えますよね?でも、上の経路のほうが経由するところが少ないので下の経路より速いということです。これがネットワーク的に高速な経路という意味です。このHOP数が多ければ多いほど遅延が起きる可能性も増加します。

もう少し分かりやすくいうと、日本からロシアのサイトやアメリカのサイトを見に行ったとき遅いと感じませんか?
それは国内のサーバーにアクセスするより海外のほうが物理的な距離も勿論ですが、HOP数が多いため往復の時間がかかるからです。

CDNの仕組みとして、アクセスするユーザーから一番近いサーバー、経路からファイルを配信できるため効率が良い賢い配信方法といえるでしょう。余談ですがAkamaiというのはハワイ語で賢いという意味があるようで、CDNのこのような賢い配信の仕組みがそのまま社名になっているようです。

また、弊社の国内向け定額CDNでもこのHOP数に注目しており、アクセスするユーザーが利用しているISP網(回線)から一番近い位置にあるネットワークにキャッシュサーバーを配置するようにしています。そのため、一般的な海外CDNと比べると経由する機器(HOP数)がかなり少ないCDNですので経路障害遅延が限りなくおきにくい設計といえます。こういった経路のお話は分かりづらく見えにくい部分ですがそういう所こそ丁寧に設計するのがCDNベンダーだと考えています。

距離だけじゃないCDNのメリット

CDNはアクセス元から一番近いサーバーを自動的に選択してそこからファイルを配信するということが分かりましたね。これは先ほどのように海外配信のケースで威力を発揮するお話です。では海外配信ではなく国内のみの配信はどうでしょうか。

実は、海外に比べ日本は回線品質が非常に高いため北海道のユーザーが沖縄のサーバーにアクセスしても、北海道内にあるサーバーにアクセスしても、遅延はそれほど差がでません。

つまり、国内配信の場合はCDNの特徴、アクセス元から近いサーバーを選択するという仕組みがあまり生きてこないケースがあります。しかし、CDNはこのアクセス元からの距離の他に様々なメリットがあるんです。

トラフィック分散

先ほどのように、サーバーを並べた場合、サーバー自体の負荷(DiskIO等)は負荷分散できます。サーバーの障害時もロードバランサーによるヘルスチェックで壊れたサーバーを自動で切り離せるためある程度の可用性が確保できます。

cdn-loadbalance2しかし、サーバーをロードバランサー配下に並べた場合、ロードバランサーからのOUTトラフィック(回線容量)がボトルネックとなるケースがあり、所謂回線不足に陥ることも十分ありえます。

どれだけアクセスが集中しどれだけ回線を確保すればいいかは非常に予想が難しく、オーバースペックな回線を用意すると莫大なコストと維持費がかかります。

 

 

CDNの場合

cdn-traffic1その点、CDNは複数台のキャッシュサーバーで構成され、それぞれのサーバーの上位ネットワークが複数存在することから、単一のネットワーク帯域不足により遅延を軽減できます。

CDNの仕組み上、大阪からアクセスしたユーザーは大阪から近いキャッシュサーバーがあるネットワークを利用しますが、通常複数ロケーションにキャッシュサーバーが配置されているため上位回線全体がほぼ利用できるといっても良いでしょう。(厳密には違いますが)

そのため、自社で回線を引くより圧倒的にコストメリットも手軽さもあるということです。

 

回線の種類

通常インターネット回線は共有回線占有回線(帯域保証回線)がありそれぞれ以下のような特徴があります。

メリット デメリット
共有回線  比較的コストが安い 他社と共有なので大規模配信では
回線不足になる恐れがある
占有回線 契約した回線容量をフルに利用できる
安定した配信が可能
圧倒的な高コスト
(100Mbpsで大凡月額10万円~)

高可用性(対障害性)

まだまだCDNのメリットはあります。いくら回線を大容量にしてもサーバーを100台並べたとしてもサーバーやネットワークの障害により配信できなくなってしまっては全く意味がありません。そのため、通常サーバーを横並びにした構成で安定した配信を考慮する場合は、

回線の冗長化 ロードバランサーの冗長化 という2つの障害を加味した構成が必須となります。

ロードバランサー自体が障害となった場合、配下にあるサーバーは全てアクセスができなくなってしまいますので、実質ロードバランサーの冗長化も行わなければいけなくもしかすると、回線の冗長化もしなければいけないかもしれません。

cdn-cost

CDNの場合

CDNは配信ネットワークといいながら実際は沢山のキャッシュサーバーで出来ています。つまりCDNだって先ほどの横並びのロードバランサー構成と同じように機器の故障などはあり得る話です。

しかし、ロードバランサーでサーバーの障害を検知し切り離すように、CDNも構成しているキャッシュサーバーを独自の方法でヘルスチェックし問題があった場合は切り離しを行います。

cdn-failover2

ファイル再配置の必要なし

横並び配信サーバーの場合、配信するファイルを複数のサーバーで同一にしておかなければいけません。
サーバーが3台あれば3台共に同じファイルを配置します、もちろんDISK容量もサーバー台数分かかるということになります。

cdn-file-upload

CDNサービスの場合、サービスの種類にもよりますがファイル自体をどこかにアップロードしなくても今あるサーバー(オリジンサーバー)のファイルをつかって負荷分散することが可能です。

CDNサービスの場合

ドメイン名はどうするの?IPは?どうやって切り替えるの?まず何をすればいいの?など色々あるとおもいますが、そこらへんは次回の記事でまとめたいと思います。

まとめ

第1回目では、CDNってなんなの?というお話をざっくりまとめてみました。
CDNはファイルをただ配信するだけのサーバー達で構成されたネットワークのことです。
ロードバランサー配下にサーバーをおいてダウンロード配信させる場合と比べ、様々なメリットがあります。
一定の可用性を確保しさらに大規模配信に備える場合、膨大なコストがかかりますが、CDNサービスを使えばコスト削減になる可能性があります。(もちろんその逆もありますが)
また、既存のサーバーに手を加える事なく静的ファイルの負荷分散が可能となるため、導入時の手間がほぼないことも特徴の一つです※こちらは次回