CDNとは?コンテンツ配信の方法とCDNの仕組み

Webサイトなどにアクセスしてからコンテンツの表示が完了するまでの時間は「レスポンスタイム」と呼ばれ、Webサイト訪問者のユーザー体験に大きな影響を与えます。
Webサイトやモバイルアプリケーションのレスポンスタイムは長くても2〜3秒程度が限度であり、それ以上に長くなるとユーザーはフラストレーションを感じ、そのページの閲覧やアプリケーションの使用を途中でやめてしまう傾向が強くなります。
レスポンスタイムを短縮するにあたって重要な役割を果たすのが「コンテンツ配信ネットワーク」(contents delivery network: CDN)であり、特に静的なコンテンツの配信において大きな力を発揮します。
なお、この記事では「静的なコンテンツ」という言葉をあまり内容が変わらないコンテンツという意味で用い、反対に「動的なコンテンツ」という言葉を内容が頻繁に変わるコンテンツをという意味で用います。
この記事ではCDNを含むコンテンツ配信の方法をいくつか紹介すると共に、メインテーマであるCDNについて詳しく解説します。

コンテンツ配信の方法

仮想マシン+ロードバランサ

クラウドにおける最も基本的なコンテンツ配信方法の一つとして、仮想マシンでApacheやNginxなどのWebサーバーを起動し、WebサーバーからユーザーのWebブラウザなどにコンテンツを配信する方法があります。
この際、1台の仮想マシンのみを使用することもできますが、複数台の仮想マシンを使用すると同時に仮想マシンの前段にロードバランサを配置することで性能や可用性を高めることができます。
さらに、仮想マシンの台数を需要に応じて動的に増減させる自動スケーリングを設定することで、スケーラビリティーを高めることも可能です。
仮想マシン+ロードバランサは動的なコンテンツの配信に向いており、静的なコンテンツの配信が中心である場合は他の方法と比べて料金が割高になる場合があります。
仮想マシン+ロードバランサのメリットとして、システムの構成などを要件に応じてある程度自由に決定できる点があります。
一方、仮想マシン+ロードバランサのデメリットとして、仮想マシンの構築や運用を自ら行う必要があるため、他の方法と比べて負荷が大きい点があります。

オブジェクトストレージ

主要なパブリッククラウド事業者は「オブジェクトストレージ」と呼ばれるカテゴリのストレージサービスを提供しており、多くのオブジェクトストレージサービスではHTTPSでアクセス可能なエンドポイントを利用することができます。
オブジェクトストレージに保存されるデータは「オブジェクト」と呼ばれ、それぞれのオブジェクトにはWebにおける一意な識別子であるURI(uniform resource identifier)が与えられます。
オブジェクトへのパブリックアクセスを許可すると共に、オブジェクトのURIをHTMLページのaタグのhref属性やimgタグのsrc属性として設定することにより、オブジェクトストレージからユーザーのWebブラウザなどにコンテンツを配信することができます。
オブジェクトストレージサービスによっては簡易なWebホスティング機能を備えるものもあり、この機能を有効にすることによって例えば"/"へのアクセス時に"/index.html"のオブジェクトのコンテンツを配信するなど、Webサイトを運用することも可能です。
オブジェクトストレージのメリットとして、仮想マシンなどの構築や運用を自ら行う必要がないため、仮想マシン+ロードバランサを使用する場合と比べて負荷を軽減できる点があります。
一方、オブジェクトストレージのデメリットとして、例えばTLS証明書を設定できないなどの制約がある点や、次に説明するCDNと比べてレスポンスタイムが長い点があります。

CDN

CDNはコンテンツのオリジナルを生成する「オリジン」とコンテンツのキャッシュを保持する「エッジロケーション」から構成されるネットワークです。
なお、エッジロケーションはユーザーから地理的に近いデータセンターに設けられ、主要なパブリッククラウドのCDNの場合は世界各地にエッジロケーションが設けています。
CDNはDNSなどの名前解決システムと統合されており、ユーザーがコンテンツにアクセスした場合、地理的に最も近いエッジロケーションへリクエストが送信されます。
リクエストを受信したエッジロケーションはアクセス先のURLなどからコンテンツを特定し、コンテンツのキャッシュを保持している場合はオリジンへアクセスすることなく、ユーザーへキャッシュされたコンテンツを返送します。
なお、エッジロケーションがキャッシュを保持していない場合、エッジロケーションはオリジンへアクセスしてコンテンツを取得し、取得したコンテンツをユーザーへ返送すると共に、次のリクエストに備えて返送したコンテンツをキャッシュします。
CDNのメリットやデメリットについては次段で詳しく解説します。

CDNの詳細

前段ではCDNを含むコンテンツ配信の方法について、その仕組みやメリット/デメリットについて解説しました。
色々なコンテンツ配信の方法がある中でも、CDNは複数のデータセンターにエッジロケーションを設ける必要があるため、自前で構築・運用するのはチャレンジングな試みでしたが、パブリッククラウドがCDNサービスを提供したことによって気軽に利用できるようになりました。
以下、この記事のメインテーマであるCDNについてさらに詳しく解説します。

メリット/デメリット

CDNのメリットとして、多くのユースケースにおいてレスポンスタイムが他の方法と比べて短くなる点があります。
通常はレスポンスタイムが短すぎて困るということはなく、ユーザーの離脱やそれに伴う機会損失の発生を防ぐための必要条件として、レスポンスタイムを短縮できる点はCDNの大きな魅力の一つといえます。
また、CDNサービスの料金体系にもよりますが仮想マシン+ロードバランサを使用する場合と比べても料金が割安になる場合があります。
一方、CDNのデメリットとして、キャッシュを利用しているためにオリジンの変更がすぐにエッジロケーションに反映されない点があります。
結果として、例えばスケジュール管理アプリケーションなどでユーザーがスケジュールを更新したのに変更が反映されずに不具合があるように見えてしまうなど、ユーザー体験を損なうことにつながる恐れがあります。

オリジンとエッジロケーション

CDNを構築する際、オリジンとしてURLやオブジェクトストレージのバケットなどを指定することができます。
1台の仮想サーバーをオリジンとすることもできますが、可用性を確保するためには複数の仮想マシン+ロードバランサを使用することが望ましいでしょう。
一方、エッジロケーションはクラウド事業者によって管理されるのでクラウド利用者が直接操作することはできませんが、キャッシュする条件などを設定することができます。
また、CDNサービスによってはエッジロケーションにキャッシュされた指定のコンテンツを破棄する操作を行うことが可能である、このような操作は「インバリデーション」と呼ばれます。

CDNの落とし穴

CDNではインバリデーションによってキャッシュの廃棄を行うことが可能ですが、全てのエッジロケーションでキャッシュの廃棄が完了するまでには一定の時間がかかります。
また、キャッシュに関する問題が発生した場合、異なる環境では問題となっている現象の再現が困難な場合があるため、問題解決の難易度が高くなる傾向があります。
CDNにはメリットとデメリットの両面があるため、利用する際には十分な検討が必要となります。

おわりに

CDNサービスの一例として、Amazon Web Servicesは「CloudFront」という名称のサービスを提供されています。
CloudFrontについては「世界規模のネットワークを通じてウェブコンテンツ配信を高速化する「Amazon CloudFront」とは」で詳しく解説していますので、興味のある方はご覧ください。

ネットワークからクラウドまでトータルサポート!!
NTT東日本のクラウド導入・運用サービスを確認してください!!

Amazon Web Services(AWS)、Microsoft Azureの
導入支援サービスのご相談、お問い合わせをお待ちしております。

ページ上部へ戻る