HTTP/2の理解: HTTP/2とは?APIのテスト方法

HTTP/1.1は10年以上にわたり信頼性のあるパフォーマンスを提供してきましたが、HTTP/2はウェブ通信の未来を担います。

HTTP/1.1は10年以上にわたり信頼性のあるパフォーマンスを提供してきましたが、HTTP/2はウェブ通信の未来を担います。

ハイパーテキスト転送プロトコル (HTTP) はインターネットの基本であり、HTMLページの送受信を可能にします。HTTPやHTTPSを介してアクセスされるリソースは、URI(統一資源識別子)で識別されます。

HTTP/2はウェブ通信における大幅な改良を導入し、スピードと効率を大幅に向上させます。徐々に普及しているものの、その優れた性能を考慮すると、すべてのウェブ開発者やサーバー管理者が学ぶべき技術です。

HTTP/1.1は10年以上にわたりウェブを支えてきましたが、HTTP/2は全てのエンジニアがマスターすべき次のフロンティアです。この記事では、HTTP/2の進化、その特徴、デバッグ方法、そして性能向上について詳しく説明します。

image.png

I. HTTPの進化

1. HTTP/0.9

1991年に発表された初期プロトタイプです。GETメソッドのみをサポートし、MIMEタイプやHTTPヘッダーがありませんでした。

2. HTTP/1.0

1996年にリリースされ、HTTP/0.9に加えて追加メソッド、HTTPヘッダー、マルチメディアオブジェクトの処理が導入されました。GETメソッドに加えてPOSTとHEADメソッドが追加され、ブラウザとサーバー間のやり取りが強化されました。

このプロトコルはテキスト、画像、動画、バイナリファイルなど、様々なコンテンツ形式を送信できるようにし、インターネットの発展を加速させました。HTTPリクエストとレスポンスにはメタデータを含むHTTPヘッダーが追加され、これはHTTP/0.9からの大きな変革でした。

しかし、HTTP/1.0にはいくつかの欠点がありました。例えば、TCP接続につき一つのリクエストしか処理できず、データ送信後に接続が閉じられる点です。複数のリソースを要求するためには新しい接続が必要で、接続ヘッダーを用いた非標準的な解決策がありましたが、ブラウザやサーバー間で一貫性がありませんでした。

3. HTTP/1.1

1999年に標準化され、構造上の問題を解決し、セマンティクスを明確にし、複雑なウェブアプリケーションをサポートする機能を追加しました。ホストプロトコルヘッダー、範囲セグメントリクエスト、持続接続、圧縮とチャンク転送エンコード、キャッシュ処理の強化などの重要な機能が追加されました。

4. SPDY

Googleによって2009年に開発されましたが、HTTP/2の標準化に伴い2016年に廃止されました。

5. HTTP/2

HTTP/2は2015年5月にリリースされ、Chrome、IE11、Safari、Firefoxなどの主要なブラウザでサポートされています。このプロトコルはHTTP/2と呼ばれ、HTTP/2.0ではありません。これはIETFが成熟したプロトコルと見なしているためで、将来的な変更はおそらくHTTP/3としてリリースされるでしょう。

HTTP/2はSPDYの原則を基にしています。GoogleのエンジニアがIETFに関与し、SPDYの概念がHTTP/2標準に組み込まれました。

HTTP/2はバイナリプロトコルであり、HPACKを使用してHTTPヘッダーを圧縮します。マルチプレキシングやサーバープッシュなどの機能をサポートし、HTTP/1.1の構文と互換性を保ちながらも大幅な性能最適化を実現しています。

II. HTTP/1.1 vs. HTTP/2

HTTP/2はHTTP/1.1に比べて次のような改良をもたらします:

  • マルチプレキシング:複数のリクエストとレスポンスを同時に送信、レイテンシを削減しページの読み込みを高速化。
  • バイナリフレーミング:データ転送と解析がより効率的。
  • ヘッダー圧縮:ヘッダーのサイズを削減し、帯域幅の消費を抑制。
  • サーバープッシュ:クライアントがリクエストする前にリソースを送信し、ページの読み込み時間を改善。

III. パフォーマンス

テストマシン構成:

  • キャッシュサーバー: cache1.cn1
  • IPアドレス: 115.238.23.13
  • CPU: 16コア Intel Xeon CPU L5630 @ 2.13GHz
  • メモリ: 48GB RAM
  • ネットワークカード: 10Gbps
  • テストツール: h2load

テスト結果:

image.png
image.png

結果の分析

Keep-aliveの有無に関わらず、HTTP/2はSPDY/3.1に近い性能を持ち、場合によってはそれを上回ります。1kb、2kb、4kbのサイズでは、RTが低いときにQPSが比較的高く、CPUのボトルネックが問題となりません。圧縮テストクライアントを増やすと、QPSが若干増加します。RTが増加すると、5xxエラーも増加します(この部分のデータは提供されておらず、テスト中に記録された現象です)。16kb、32kb、64kb、128kb、256kbのサイズでは、CPUがボトルネックに達します。サイズが大きくなると、QPSが減少し、RTが増加します。

CPUの性能を見ると、リソースを最も消費する原因はgcm_ghash_clmulのようです。512kサイズになるとネットワークカードがボトルネックに達し、CPUはそうではありません。Keep-aliveが有効な場合、HTTP/1.1とHTTP/2の間にPerformanceの大差はありませんが、無効にするとHTTP/2の方が優れています。

IV. HTTP/2 APIのテスト方法

EchoAPIは信頼できるAPIライフサイクル管理ツールとして、HTTP/2プロトコルのデバッグを完全にサポートしています。

EchoAPIを使用してHTTP/2をデバッグする手順は以下の通りです:

ステップ 1:

EchoAPIを開いて新しいリクエストを作成します。

EchoAPIを開いて新しいリクエストを作成します

ステップ 2:

HTTP/2プロトコルを選択し、「送信」ボタンをクリックします。

HTTP/2プロトコルを選択し、「送信」ボタンをクリックします

結論

HTTP/2は、前世代のプロトコルに対して一連のコア最適化を提供し、パフォーマンスの大幅な向上をもたらします。これにより、多くの企業がHTTP/2を採用し、よりセキュアで信頼性が高く高速なインターネット通信の新時代が到来しています。