orangeitems’s diary

40代ITエンジニアが毎日何か書くブログ

HTTP/2という新技術の情報を手っ取り早く学習する

f:id:orangeitems:20180310195130j:plain

 

HTTP/2

HTTP/2という言葉は聞いたことがあるが、ほとんどのエンジニアが聞き流していることだと思う。私も同じだからだ。

そう言っている間に、さくらインターネットがHTTP/2対応をうたい始めた。

cloud.watch.impress.co.jp

さくらインターネット株式会社が提供するレンタルサーバーサービス「さくらのレンタルサーバ」「さくらのマネージドサーバ」の全プランがHTTP/2プロトコルに対応する。これに伴い、3月7日~4月10日にかけて順次メンテナンスを実施する。

 HTTP/2は、サーバーとブラウザー間の通信を効率化し、画像やCSS、JavaScriptなどの構成ファイルが多いウェブサイトにおいて、表示速度の向上が期待できる通信規格。今回、同規格に対応することで、速度面でもパフォーマンスの改善が見込めるとしている。

 画像やCSS、JavaScriptなんて、どんなサイトでも多用している。私はインフラ側のエンジニアなのでコーディングすることはないが、ドキュメントルートを見ると、jsファイルやcssファイルが詰まっているし、画像ファイルの取り回しもポイントとなる。今の所CDNを使うのが手っ取り早いが、これもこれらのファイルを早く転送するための技術だった。HTTP/2め、これを解決できるのだろうか。

いずれ、アプリケーションエンジニアの方から、HTTP/2使ってみたいんだけど大丈夫?って言ってくるのが目に見える。逆にインフラ側からソリューションとして提案して見るのも手だろう。そしてぼやぼやしている間に、お客様のほうから、HTTP/2にしてよとオーダーが来るかもしれない。

これは無視できない。

スポンサーリンク

 

さくらインターネットによるHTTP/2の説明

HTTP/2について調べて見ると、さくらインターネットが能動的にその技術的な解説をしてくれている。ありがたい。

knowledge.sakura.ad.jp

この記事自身は、2017/3/24とありだいたい1年前の記事だ。ただ状況は変わっておらず、CentOS7の現在の最新バージョンである7.4のhttpdも、2.4.6系の2.4.6-67であり、まだHTTP/2には対応していない。つまり"yum install httpd"では使えない。

 

ソースからのインストール

とすると、正攻法で行こうとするとソースからコンパイルしてインストールすることになる。きちんとやろうとすると以下の記事のようになると思う。

blog.apar.jp

 

yumからのインストール

ただ、2018年においてほとんどのケースにおいて、yumでやった方がいいですよというアドバイスをしている。WEBサーバーは日めくりで脆弱性が報告されパッチ適用に終われる。ソースからのバージョンアップはやたら手間がかかるし失敗すると本番障害につながる。

リポジトリを変更してyumから入れる方法はこちら。結局はこちらのブログに行き当たるので素晴らしいブログだなあと思う。 

blog.apar.jp

 

本番影響を考える

さくらインターネットの技術記事を見ると、コネクションが1つで済むとかサーバーからファイルがプッシュできるとかいろいろ期待ができそうではある。ただ、クライアントがキャッシュに持っているファイルをわざわざプッシュしてしまうというのは確かにマイナスだと思う。乱用すると通信量が跳ね上がる可能性がある。

また、PreForkでは使えない点も注目。Workerでしか動かない。なるほど。これは覚えておけばいいだけだ。まあHTTP/2を使いたいのにPreForkで行きたいとかわけわからないのでこれは問題ないだろう。Workerのほうがパフォーマンスがいいのは明らかだ。構築時には実はPreForkだけしか使えないような制約がないか、アプリケーションサーバー側の仕様は確認しておいたほうがいい。

あと、maxclientsのチューニングも気になっている。CPUやメモリ利用も含めて大量アクセスの際どのような動きをするのかを見極めないといけない。基本的にはコネクションを複数消費しないことを踏まえると、コネクション的にはかなりキャパシティーは増えて、一方でCPUやメモリは使われがちになるようなイメージを持っている。

さくらインターネットの冒頭のリリースなど、まずは小規模サイトを中心にHTTP/2が流行っていくことにより事例が出てくるだろう。それらの事例を踏まえながら、エンタープライズにも2018年は徐々にHTTP/2の動きが広がっていくように思われる。

知らない、では済まされなくなったHTTP/2だ。