OSS市場動向 ―成長するNginx


はじめまして、日立ソリューションズの吉田です。
今回から、Web関連の話題について、コラムを担当させていただきますので、よろしくお願いします。

さて、Web関連の話題ということで、まずはWebサーバに最近の話題についてご紹介したいと思います。

オーストリアのQ-Success社が実施しているW3techsによると、2017年4月時点でWebサーバのシェアで、Nginxが33.3%に到達したと報告されています(*1)。Nginxのシェアは7年前には3.9%で、この7年間で大きな成長を見せたことになります。ちなみに、Apacheのシェアは下落の傾向が続いており50%を下回りました。
ということで、今後もNginxのシェアが伸びていくように思いますが、そもそもNginxというのは、どのようなソフトウェアなのでしょうか?

Wikipedia(*2)によるとNginxは、2002年にカザフスタン生まれのIgor Sysoev氏によって、開発がはじめられたソフトウェアです。特徴は、軽量で高速にコンテンツを配信することができるということです。
また、リバースプロキシの機能を持っているため、背後にWebアプリケーションサーバを配置して動的なコンテンツを配信やロードバランサやHTTPキャッシュとしても使うこともできます。

先ほど紹介したW3techsの調査では、ロシアでは76.8%のシェアでベラルーシやウクライナ、カザフスタンなども同様の傾向だそうです。アジアやアフリカでもシェアが高いそうですが、米国や欧州では依然Apacheのシェアが高く、MicrosoftのIISは中国やトルコ、エジプトやアラブ諸国でシェアが高いようで、地域的特徴があるようです。

では、なぜNginxの普及が進んでいるのでしょうか?その大きな理由は、HTTP/2にあるようです。2009年に米国Google社がWeb高速化の取り組みとして、2009年に「SPDY」プロトコルを開発しました。この「SPDY」は、既存のHTTPプロトコルとの互換性を保ちながら、セッションを効率化するもので、当初はGoogleのサービスでしか採用されていませんでしたが、TwitterやFacebookなどの有名サイトが続々と対応していきました。
その後、標準化団体IETF(Internet Engineering Task Force)のHTTPBisワーキンググループによってHTTPの仕様改定時に、そのベースとして「SPDY」が採用されました。従って、HTTP/2は「SPDY」の改良版だといっても良いと思います。

では、どのように高速化を図ってきたのでしょうか?
HTTPプロトコルは、ブラウザからのリクエストにサーバがレスポンスを返すことになっており、基本的には、ひとつのリクエストが完了するまで、次のリクエストを送ることができません。HTTP/1.1では、前回のリクエストの完了を待たずに次のリクエストを送って良いことになっていましたが、サーバはリクエストの順番通りにレスポンスを返さなければいけないという制限があるので、先頭のリクエストに時間がかかっているとそのほかのレスポンスがすべてブロックされることになります。HTTP/2では、リクエストからレスポンスまでの一連のやりとりをストリームと呼び、並列に扱えるようにしました。さらに、重要でないストリームがリソースを占有することを防ぐためにクライアントがPRIORITYフレームを用いてストリームに優先順位をつけることができるようになりました。他にもヘッダの圧縮やデータ転送量を制御するためにフロー制御の仕組みを用意するなど、高速化を図るための仕掛けを用意しています。

また、セキュリティの観点からSSL化が進んでいますが、一般的には暗号化することで速度が落ちると考えるのが、一般的ですが、このような高速化の仕組みを活用することで、SSL化しても速度が落ちないというより、高速化される可能性があるようです。

最新の技術をいち早く取り入れることで、Nginxはシェアを伸ばしてきました。このようにシェアを伸ばしていくために常に最新の技術をキャッチアップして、技術開発のスピードを活用する必要があります。

(*)本文中記載の会社名、商品名、ロゴは各社の商標、または登録商標です。

(*1)Nginx reaches 33.3% web server market share while Apache falls below 50%
https://w3techs.com/blog/entry/nginx_reaches_33_3_percent_web_server_market_share_while_apache_falls_below_50_percent

(*2) https://ja.wikipedia.org/wiki/Nginx


Post Author: 吉田 行男

吉田 行男