HTTP/1.1とHTTP/2の違いについて
主な技術的違い
1. 多重化(Multiplexing)
HTTP/1.1: 1つのTCP接続で1つのリクエストのみ処理。複数のリクエストには複数の接続が必要
HTTP/2: 1つのTCP接続で複数のリクエストを並行処理。ストリームという概念で管理
2. ヘッダー圧縮
HTTP/1.1: ヘッダーは毎回テキスト形式で送信(圧縮なし)
HTTP/2: HPACK圧縮アルゴリズムでヘッダーを効率的に圧縮
3. データ形式
HTTP/1.1: テキストベースのプロトコル
HTTP/2: バイナリ形式でフレーム構造を使用
4. サーバープッシュ
HTTP/1.1: クライアントからのリクエストのみ
HTTP/2: サーバーが事前にリソースをプッシュ可能(ただし、実際の採用は限定的)
5. ストリーム優先度制御
HTTP/1.1: なし
HTTP/2: リクエストに優先度を設定して処理順序を制御
gRPC以外の代表的なHTTP/2活用例
Webブラウザ
Chrome、Firefox、Safari等のモダンブラウザはHTTP/2をデフォルトサポート
Webサイトの表示速度向上に大きく貢献
CDN(Content Delivery Network)
Cloudflare、AWS CloudFront等がHTTP/2対応
静的リソースの配信効率が大幅改善
REST API
従来のREST APIもHTTP/2で高速化
JSON over HTTP/2として利用
WebSocket over HTTP/2
リアルタイム通信の効率化
table:パフォーマンス比較
項目 HTTP/1.1 HTTP/2
接続数 多数必要 1つで十分
ヘッドオブライン・ブロッキング あり なし
ヘッダーオーバーヘッド 大きい 小さい
初期接続時間 長い 短い(1接続のため)
実装上の考慮点
HTTP/1.1の利点が残る場面
シンプルなデバッグ(テキストベースのため)
レガシーシステムとの互換性
プロキシサーバーでの透過性
HTTP/2導入時の注意点
サーバーサイドでの対応が必要
SSL/TLS必須(ブラウザの実装上)
古いプロキシやミドルウェアとの互換性問題
まとめ
gRPCはHTTP/2の優れた活用例の一つ。HTTP/2の恩恵はWebアプリケーション全般、API通信、CDN等、幅広い分野で活用。
多重化とヘッダー圧縮による性能向上は、現代のWebサービスにとって重要な改善。
参考:
gRPC vs REST
HTTP/1.1 vs HTTP/2