Akamai Diversity

Akamai Japan ブログ

第3回 Akamaiによる通信高速化を活用する - アカマイ ベスト・プラクティス (Web Perfromance編)

第2回は、キャッシュに関するベストプラクティスについてご紹介しました。
第3回では、キャッシュ対象外のコンテンツにも効果のある、Akamaiによる通信高速化について、お話します。

「遅延」がWebパフォーマンスのボトルネックになることは、第1回で述べました。
 
bestpractice_web_perfromance01_001.png
キャッシュを利用しない場合でも、Akamai経由で通信することで「遅延」の影響を小さくすることが可能です。
  1. TCPコネクション/TLSセッション確立の時間を短縮
  2. TCP最適化による高速通信
  3. 次にリクエストされるコンテンツの先読み
  4. 最適な経路選択により、ネットワーク経路上の混雑を回避

1.TCPコネクション/TLSセッション確立の時間を短縮 

HTTPリクエストを行う前に、TCPコネクションやTLSセッション(HTTPSの場合)を確立する必要があります。
サーバー/クライアント間で複数のパケットをやりとりする必要があるため、実際にコンテンツを取得するまでの時間に遅延が大きく影響してきます。 
tcptls_overhead_wo_akamai.png
クライアントに近い Akamai Edgeサーバーから配信することで、TCPコネクション/TLSセッション確立に要する時間を短縮できます。
Edgeにキャッシュがない場合は、当然上位キャッシュサーバー(Parent)やOriginサーバーからコンテンツを取得する必要がありますが、Origin/Parent間・Parent/Edge間は Persistent Connection (HTTP Keep-alive) により、可能な限りTCPコネクション/TLSセッションを維持しています。
毎回新たにTCPコネクション/TLSセッションを張る必要がないため、キャッシュヒットしなかった際にも素早くコンテンツを返すことが可能です。 
tcptls_overhead_w_akamai.png

2.TCP最適化による高速通信

Akamaiでは全てのEdge(Parent)サーバーに、独自のTCP最適化機能を有しています。
2012年の買収で取得した FastTCP という技術を元にしており、遅延の大きさに合わせて制御することで、高いスループットを実現します。 

3.次にリクエストされるコンテンツの先読み

Prefetch機能を有効にすると、ページ表示に必要なコンテンツを、素早くキャッシュすることが可能です。
htmlファイルには、JavaScript,CSS,画像等がHTMLタグで記載されています。
Edgeは htmlファイルを取得すると、HTMLタグを解釈し、クライアントからリクエストを待たずにコンテンツの取得を開始します。
このようにすることで、以降のクライアントからのリクエストに対して、すぐレスポンスを返すことができます。
Prefetchは、キャッシュできないコンテンツに対しても有効です。
この場合、PrefetchされたコンテンツはEdgeで一時的にキャッシュされますが、当該htmlに対してリクエストを行ったクライアントにのみ、Prefetchしたコンテンツを返し、その後キャッシュを破棄します。
またHTTP/2を利用すると、クライアントからのリクエストを待たずに、Edgeから必要なコンテンツをプッシュ配信することも可能です。 

4.最適な経路選択により、ネットワークの混雑を回避

SureRoute for Performance という機能では、Edge/Origin間の通信経路を最適化することが可能です。
インターネットは独立したネットワークの集合体であるため、インターネット全体の効率やパフォーマンスの観点から見た場合に、必ずしも最適な経路が選択されているわけではありません。
インターネット全体に分散配置された Edge を経由することで、混雑したネットワークや遠回りなルートを避け、より効率的な通信を行うことが可能です。
sureroute_for_performance_v2.png
第4回では、これまでご説明したAkamaiの仕組みを踏まえ、どのようにオリジンやワークフロー等を最適化できるかお話します。

Leave a comment