HTTPS化もHTTP/2にすれば負荷を下げられる~奥一穂氏による「HTTPとサーバ技術の最新動向」(後編)。Developers Summit 2016

2016年2月23日

HTTP/2の登場を背景に、いまHTTPとWebサーバの技術がどのように進化しているのか、Developers Summit 2016で行われた同氏のセッション「HTTP とサーバ技術の最新動向」の内容をダイジェストで紹介します。

記事は3部に分かれています。いまお読みの記事は後編です。

HTTP/2だとパケットをまとめられるので負荷が下がる

次はHTTPSとサーバ負荷についての話です。

多くの方が、HTTPS化するとWebサーバの負荷が上がるんじゃないかと懸念を持っていると思います。

このグラフを見てもらうと、HTTP 1.1のとき(左2つのマーカ)とHTTP/2 over TLS(いちばん右の2つのマーカ)のとき、Nginxだとあまり違わない(青いマーカ)のですが、H2OだとHTTP/2でTLSを使う方がHTTP 1.1よりずっと速くなっています(いちばん右の赤いマーカ)。

fig

なんでこうなるかというと、HTTP/2を使う複数のリクエスト、複数のレスポンスを1つにまとめて1パケットで送れるんです。これがHTTP/2の特長で、その結果HTTP/2の方が速くなります。

HTTP/2を使うことでサーバ負荷を下げつつHTTPSに移行できます。

ただ、そのときにはリザンプションの設定が必須になります。

リザンプションとはなにか。TLSのハンドシェイクには2つあります。フルハンドシェイクと短縮ハンドシェイクです。

フルハンドシェイクをやろうとするとサーバ側でRSSの署名演算が必要で、これに時間がかかります。これだと遅いね、ということで前回のハンドシェイクを使い回すのが短縮ハンドシェイク。これがリザンプションです。

fig

このリザンプションにも2種類の方式があり、それぞれメリットデメリットがあります。

Googleが開発した圧縮アルゴリズム「Brotli」

BrotliはGoogleが開発した新しい圧縮アルゴリズムです。gzipより圧縮率が高いと言われています。

fig

今後zipからbrotliへの移行が進んでいくと思われます。FirefoxやChromeにもBrotliが入る予定です。ただしいずれもHTTPSのみの対応です。

fig

WebブラウザもWebサーバへも対応が進んでいくので、Brotliへの移行はすぐに考えた方がいいのかなと思います。

特定のWebサーバへのロックインを避ける

最後はWebサーバ内のスクリプト実行について。

Apacheのmod_rewriteは黒魔術のようで保守が大変です。しかしURLをWebアプリケーションにマッピングしたり、クライアントによって異なる画像を返すなど、ルーティングには便利ですよね。

そういったことをやろうとすると結局mod_rewriteに頼って、その結果保守性が悪くなる。それ以外にもApacheのmod_perlとかNginxのluaとかmrubyとかnginScriptなどがあります。

Webサーバ内のスクリプト実行にはメリットもありますが、懸念としてはWebサーバにロックインされるということがあります。

また、外部サーバへ問い合わせたときに性能が落ちるんじゃないかという懸念もあります。

fig

じゃあロックインを避けるにはどうすればいいか。ロックインが発生する理由は、Webサーバごとにスクリプト言語やAPIが異なるからで、本当であれば共通のスクリプト言語や一般的なAPIが使えればいいわけです。

そこでH2OではmrubyとRack APIを使っています。

fig

標準的なスクリプト言語と標準的なAPIを使うことでロックインを避ける、ということが今後の流れの1つになるのではないかと思います。

またH2では非同期処理をタスクとして抽象化できるようにしました。

fig

まとめです。HTTPとサーバの技術はまだ進化中で、実装などによる差が大きくなっています。また評価に当たっては、影響する範囲に注意が必要だと思います。

fig

(公開されている資料)

HTTPとサーバ技術の最新動向 from Kazuho Oku

Developers Summit 2016

Tags: HTML/CSS HTTP Web技術 Web標準 ネットワーク

このエントリーをはてなブックマークに追加
ツイート
follow us in feedly




タグクラウド

クラウド / AWS / Azure / Google Cloud
コンテナ / Docker / Kubernetes
クラウドネイティブ / サーバレス
クラウド障害 / 運用・監視

プログラミング言語 / 開発ツール
JavaScript / Java / .NET / WebAssembly
HTML/CSS / Web標準

アジャイル開発 / スクラム / DevOps / CI/CD
ソフトウェアテスト・品質
ローコード/ノーコード開発

データベース / RDB / NoSQL / 機械学習・AI
Oracle Database / MySQL / PostgreSQL
Office / 業務アプリケーション

ネットワーク / HTTP / QUIC / セキュリティ
OS / Windows / Linux / VMware
ハードウェア / サーバ / ストレージ

業界動向 / 働き方 / 給与・年収
編集後記 / 殿堂入り / おもしろ

全てのタグを見る

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed

最新記事10本