CDNのパフォーマンス

CDNの主なメリットは、コンテンツを迅速かつ効率よく配信できることです。CDNパフォーマンスの最適化は、3つのカテゴリーに分類できます。CDNガイドをご覧ください。

Share facebook icon linkedin icon twitter icon email icon

CDNのパフォーマンス

学習目的

この記事を読み終えると、以下のことができます。

  • CDNがどのように読み込み時間を短縮するかを理解する
  • CDNを使用する場合と使用しない場合を比較する
  • CDNキャッシングの基本を理解する
  • CDNがファイルサイズを縮小する方法を理解する

CDNはどのように読み込み時間を短縮するか?

インターネットに接続するほぼ全員が、Content Distribution Network(CDN)のメリットを享受しています。Google、Apple、Microsoftなどを含むテクノロジー企業の大半は、CDNを使用してWebページのコンテンツを読み込みときのレイテンシーを低減します。


通常、CDNはさまざまなネットワークの接続点にサーバーを配置します。こうしたInternet Exchange Point(IXP)は、各自のネットワーク上のリソースへの相互アクセスを提供するために、さまざまなインターネットプロバイダーが相互に結び付く主な場所です。IXPに加えて、可能な限り迅速にトラフィックを移動できるように、CDNは全世界のトラフィックの多い地域や戦略的な場所にあるデータセンターにサーバーを配置します。


CDNの主なメリットは、コンテンツを迅速かつ効率よく配信できることです。CDNパフォーマンスの最適化は次の3つのカテゴリーに分類できます:

  1. 距離の短縮 – クライアントと要求されたデータの物理的な距離を短縮します
  2. ハードウェア/ソフトウェアの最適化 – ソリッドステートのハードドライブや効率的なロードバランシングを用いてサーバー側のインフラストラクチャのパフォーマンスを高めます
  3. データ転送の削減 – ページの初期読み込みが素早く行われるようにファイルサイズを削減する技術を採用します

CDNを使用するメリットを理解するために、CDNを使用しない通常のクライアント/サーバー間のデータ転送を見ていきましょう。

CDNを使用する場合と使用しない場合の読み込み時間の差

ニューヨークにいる誰かがシンガポールのサーバー上でホストされているWebサイトにアクセスする必要があると想像してみてください。この2都市間の物理的な距離は大きく、15,321キロほど離れています。

Distance Without CDN

Webサイトのコンテンツをホストするサーバー(オリジンサーバー)がシンガポールにある場合、各Webサイトのアセットに対する各リクエストはニューヨークとシンガポール間を行き来しなければなりません。多くの乗り継ぎがある国際便を利用するようなものであり、各リクエストはA地点からB地点までの長距離移動にて一連のルーターを経由しなければなりません。


コンピューターが現在の場所から特定のWebサービスに到達するのにいくつの異なる接続(ホップ)をするかの実例を見るには、デスクトップコンピューターでTraceroute(トレースルート)を使用してネットワークの経路情報を調べてください。

CDN Transit Time Improvements

ニューヨークからシンガポールまでのリクエストはルーターのある各地点を通過する必要があるため、各ルーターがリクエストを処理するのに要する距離と時間の両方によって所要時間(レイテンシー)が増加します。オリジンサーバーがリクエストを処理してリクエストの送信元であるクライアントに応答したら、同様のルーター経路を使って情報をニューヨークに送信します。この往復旅行の測定を電気通信の世界では 「ラウンドトリップタイム(RTT)」と呼んでいます。瞬間的な可用帯域幅と潜在的なネットワーク輻輳は無視して、レイテンシー要因の例を見てみましょう。


ここでは説明のために、次のように仮定します:

  • リクエストがニューヨークからシンガポールまで移動するのに250ミリ秒かかります。
  • TCP/IP接続を確立するのに250ミリ秒のレイテンシーの3つのインスタンスが追加されます。
  • Webページは画像、JavaScriptファイル、およびWebページ自体で構成される5つの一意のアセットを必要とします。

このWebページを読み込むのにどれくらいの時間がかかるかを見てみましょう:

  • 750ミリ秒:TCP/IP接続がニューヨークのクライアントとシンガポールのオリジンサーバー間で確立されます。
  • 250ミリ秒:Webページに対するHTTPリクエストがニューヨークからシンガポールまで移動します。
  • 250ミリ秒:ニューヨークの要求元がシンガポールのオリジンサーバーからステータスコード200と必要なすべての追加アセットを含むWebページと一緒にレスポンスを受信します。
  • 250ミリ秒:それぞれの5つのアセットがニューヨークのクライアントによって要求されます。
  • 1500ミリ秒:5つのアセットがシンガポールのオリジンサーバーからクライアントに非同期で配信されます。

この単純な例では、このWebページを読み込むための合計転送時間は約3000ミリ秒です。


ご覧のとおり、リクエストが実行されてレスポンスが送信されるたびに、ニューヨークのクライアントとシンガポールのオリジン間のパス全体を横断することになります。Webサイトが大きくなるにつれて、必要となるアセットの数が増え、A地点とB地点の間のレイテンシーは増加し続けます。


ニューヨークのクライアントに提供されるシンガポールでホストされているコンテンツの例に戻りましょう。ただし、今度はCDNを使用するシンガポールのサイトと、静的Webサイトのキャッシュされたコピーを含むアトランタのサーバーです:

  • リクエストがニューヨークからアトランタまで移動するのに50ミリ秒かかります。
  • TCP/IP接続を確立するのに50ミリ秒のレイテンシーの3つのインスタンスが追加されます。
  • Webページは画像、JavaScriptファイル、およびWebページ自体で構成される5つの一意のアセットを必要とします。

CDNを使用してこのWebページを読み込むのにどれくらいの時間がかかるかを見てみましょう:

  • 150ミリ秒:TCP/IP接続がニューヨークのクライアントとアトランタのエッジサーバー間で確立されます。
  • 50ミリ秒:Webページに対するHTTP GETリクエストがクライアントからエッジサーバーまで移動します。
  • 50ミリ秒:クライアントがエッジサーバーキャッシュから必要なすべての追加アセットを含むWebページと一緒にレスポンスを受信します。
  • 50ミリ秒:それぞれの5つのアセットがクライアントによって要求されます。
  • 800ミリ秒:5つのアセットがエッジサーバーからクライアントに非同期で配信されます。

このWebページを読み込むための合計転送時間は約1100ミリ秒です。

CDN Distance Optimized

この例では、クライアントとコンテンツ間の距離の減少により静的コンテンツのレイテンシーが1900ミリ秒短縮されます。読み込み時間にすると約2秒短縮されます。

CDN Latency Improvement

移動する必要があるすべてのトラフィックの合計距離を減らすことで、そのWebサイトの各ユーザーは読み込み時間を短縮することができます。ユーザーは、待ち時間が長くなるとサイトを非常に早く去る(直帰する)ため、この読み込み時間の短縮は、ユーザー体験の向上とページにおけるユーザーの滞在時間の増加につながります。

CDNはどのようにコンテンツを読み込むのか?キャッシングとは?

前述のように、通常、クライアントがオリジンサーバーにファイルを要求すると、そのリクエストはクライアントとサーバー間を往復する必要があります。CDNは、キャッシングというプロセスで、オリジンサーバーから静的コンテンツファイルを取り出して分散したCDNネットワーク上で配信することでレイテンシーを低減します。一部のCDNには、動的コンテンツの選択的なキャッシングを可能にする高度な機能もあります。データがキャッシュされると、CDNは、最も近いCDNデータセンターからコンテンツをクライアントに提供します。

Request Without CDN Caching
Request With CDN Caching

TCPハンドシェイクが行われると、クライアントマシンはCDNネットワークにHTTPリクエストを実行します。コンテンツがまだキャッシュされていない場合、CDNはオリジンサーバーとCDNのエッジサーバー間で追加のリクエストを実行することで、まずオリジンからコンテンツをダウンロードします。


典型的なCDNキャッシングにおける4つの手順は以下のとおりです:

  1. ユーザーがWebページを要求すると、ユーザーのリクエストは、最も近いCDNのエッジサーバーに転送されます。
  2. 次に、エッジサーバーが、ユーザーが要求したコンテンツのリクエストをオリジンサーバーに送信します。
  3. オリジンサーバーが、エッジサーバーのリクエストに応答します。
  4. 最後に、エッジサーバーがクライアントに応答します。
CDN Caching Request

CDNのクライアントの近接性の価値が生まれるのは、オリジンサーバーへの最初のリクエストが行われた後です。データがオリジンサーバーからCDNのネットワークにキャッシュされると、クライアントからのそれぞれの後続のリクエストは、最も近いエッジサーバーまで行くだけで済みます。これは、最も近いエッジサーバーがオリジンサーバーより近ければ、レイテンシーを低減でき、コンテンツはずっと速く提供できることを意味します。

cached CDN edge response

アセットをダウンロードしてリクエストとレスポンスを処理するのに必要な時間は現在含まれていないことに注意することが重要です。これまでのところ、この2地点間で情報を転送するのに必要な移動時間のみが計算されています。ほかに考慮すべき重要なレイテンシー要因には、データの削減、ハードディスクの速度、ネットワーク輻輳などがあります。

速度を向上させるためにCDNはどにょうにファイルサイズを減らすのか?

ページ読み込み時間を短縮するために、CDNはCDNのキャッシュサーバーとクライアント間の全体的なデータ転送量を削減します。転送されるデータの全体量が減少すれば、レイテンシーと必要な帯域幅の両方は減少します。その結果、ページ読み込みが速くなり、帯域幅コストが下がります。この現象には2つの主要コンポーネントが関係します:


縮小 - 縮小とは、人間が起きていることを理解するのに役立つすべてのコンポーネントを削除することでコードブロックのサイズを縮小するプロセスのことです。エンジニアは、コードブロックを判読可能かつ管理可能にするために、概念を適切な変数名、スペース、コメントに分割する必要がある一方で、コンピューターはそうした文字を削除してコードを正常に実行できます。

これが縮小前と縮小後のコードブロックです:

自動縮小前:コード8行

CDN Without Minification

縮小後:1行のコードに縮小

CDN Minification

コードスニペットが8行から1行に縮小されたので、ファイルサイズ全体も縮小されました。つまり、ファイルの転送時間が短縮され、レイテンシーが低減し、コンテンツの読み込み速度の短縮につながります。


ファイル圧縮 - ファイル圧縮は、インターネット経由でデータを転送するときにレイテンシーと必要な帯域幅の消費を低減するための不可欠な構成要素です。GZipは、一般的な圧縮方法であり、Webページを転送するときに使用するのが最善であるとされています。多くのCDNプロバイダーはデフォルトでGZipを有効にしています。GZip圧縮によってサイズはどの程度縮小されるのでしょうか?通常、圧縮されたファイルは、元のファイルサイズの約50%~70%です。

速度を向上させるのにCDNはどのハードウェアを使用できるか?

CDNハードウェアの最適化に関して言えば、従来のハードディスクドライブ(HDD)よりもソリッドステートハードドライブ(SSD)の方が大きなメリットがあります。ソリッドステートドライブは、従来のハードディスクドライブよりも最大30%速くファイルを開くことができ、復元性と信頼性がより高いです。


レコードプレイヤーのように、従来のハードディスクドライブは、データを保管する磁気コーディングが施された回転する円形の金属ディスクで構成されます。アームの読み取り/書き込みヘッドは、ディスクがその下で回転するときに情報にアクセスします。このプロセスは機械的であり、ディスクの回転速度に影響されます。ソリッドステートドライブの出現により、旧式のハードドライブはあまり使用されなくなりましたが、現在でも製造されていて、多くのコンピューターシステムで広く使用されています。


ソリッドステートドライブ(SSD)は永続ストレージの一形態でもありますが、機能はUSBサムドライブやデジタルカメラのようなデバイスでよく見られるようなメモリーカードにずっと近いです。可動部分はありません。通常のハードディスクが回転していて、システムが衝突している場合、HDDはスキップして、読み取り/書き込みエラーや潜在的なダウンタイムが発生する可能性があります。SSDのもう1つの重要なメリットは、断片化したファイルにアクセスすることです。ファイルの断片化とは、ファイルの一部がディスクのあちこちに分散していて、HDDドライブのアクセスを遅くする状態のことを言います。SSDは不連続のメモリー箇所に効率よくアクセスできるので、断片化はパフォーマンスにとって脅威になりません。


初期のCDNでは、データはハードディスクドライブに保存されていました。今では一部のCDNサービスは、すべてのエッジ側のキャッシングをソリッドステートドライブで実行できます。SSDの欠点は費用です。SSDは従来のメディアより最大で5倍以上費用がかかる場合があります。そのため、一部のCDNサービスはSSDを使用することを避けて、古いテクノロジーを選択することが多いです。Cloudflare CDNはSSDのみを使用します。