CDN performance

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

学習目的

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

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

記事のリンクをコピーする

CDNでロード時間が短縮される仕組み

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

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

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

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

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

CDNを使用する場合と使用しない場合のロード時間の差

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

CDNを使用しない場合の距離

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

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

CDN送信時間の改善

Because the request from New York to Singapore needs to pass through each of the router locations along the way, the amount of time (latency) is increased both by the total distance and the time it takes each router to process the request. Once the origin server processes the request and responds to the client making the request, it then sends information back through a similar sequence of routers before it returns to New York. The measurement of this total round trip is referred to in telecommunications as RTT for “round trip time.” Ignoring for the moment available bandwidth and potential network congestion, let’s walk through an example of the latency factors.

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

  • リクエストがニューヨークからシンガポールまで移動するのに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による距離の最適化

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

CDNによる遅延の改善

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

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

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

CDNキャッシングのないリクエスト
CDNキャッシングがあるリクエスト

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

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

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

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

キャッシュされたCDNエッジの応答

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

速度向上のために、CDNがファイルサイズを減らす方法は?

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

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

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

縮小前:8行のコード

縮小のないCDN

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

CDN縮小

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

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

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

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

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

A solid-state drive (SSD) is also a form of persistent storage, but functions much more similarly to USB thumb drives or the memory cards commonly found in devices like digital cameras; there are no moving parts. If a regular hard disk is spinning and the system is jostled, the HDD may skip, resulting in read/write errors and potential downtime. Another important SSD benefit is in accessing fragmented files. File fragmentation is a situation where parts of a file are in different locations across the disk, resulting in slower access for HDD drives. Because a SSD can access non-contiguous memory locations efficiently, fragmentation is not a threat to performance.

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