この数年、急激にシェアを伸ばし、大きな注目を集めているWebサーバ「Nginx」。その開発者と経営陣が、商用版「NGINX Plus」の国内販売開始に合わせて来日した。
来日したのは、Nginxのオリジナル開発者でCTOのIgor Sysoev氏、Sysoev氏と共に創業し現在はDirector of Business Developmentの任に就くAndrew Alexeev氏、2012年12月に両氏に招かれCEO として会社を取り纏めるGus Robertson氏の3名。Nginxの中枢を担う人物達だ。
本誌は、彼らに面会する機会を得て、開発の経緯やポリシー、今後の展開などを聞いたので、その模様をお伝えしよう。
Apacheのプロキシ機能に不満があり、開発に着手
Nginxは、Web系企業を中心にこの数年で急激にシェアを伸ばしているWebサーバ。パフォーマンスとスケーラビリティに優れることが大きな特徴だ。
Nginxの生みの親で米Nginx CTOを務めるIgor Sysoev氏 |
リバースプロキシサーバやアプリケーションロードバランサなどの機能も持つことから、Apacheと組み合わせて利用されるなど、Webサーバの枠を超えたプロダクトとして認識されている。
現在、世界1億4600万サイトで利用されており、W3Techs調査では、世界のアクセス数トップ1万サイトでのシェアが39%と、No.1の座を獲得している。
Nginxは、現在CTOを務めるIgor Sysoev氏が2002年から開発をスタートし、2004年にオープンソースとして公開した。しばらくの間Sysoev氏がほぼ1人で開発を行っていたが、2011年にAndrew Alexeev氏らと3人でNginx, Inc.を設立して開発を加速。2012年にはCEOとしてGus Robertson氏を招聘し、英語圏でのサポートを拡充させたことなどで、人気に火がついた。
Sysoev氏によると、Nginxのそもそもの開発のきっかけは、Apacheのプロキシ機能が貧弱だったことにあるという。
「当時は、ロシアのRamblerというポータルサイト事業者でシステム管理者をしていた。あるとき開発者から、proxyを使っても2台目のApacheがアクセラレートされないと相談を受け、調べてみたらproxyモジュールの機能が弱いことがわかった。そこでproxyやキャッシュを改善してアクセラレータとして正しく動くようにしていった」(Sysoev氏)
当時のSysoev氏は、プログラマーとしてのキャリアはなかったが、14歳からコードを書き、大学ではコンピュータサイエンスを専攻した。最初に触れたコンピュータはヤマハのMSXだという。修正したコードをさまざまなサイトで運用して、2005年からはRamblerでも利用した。
「その後、1000を超える同時接続に対応し、スタティックなコンテンツだけでなく、ダイナミックなコンテンツにも対応した。もともと(リバースプロキシを使って)リモートサーバとプロセスをやりとりできるWebサーバが欲しかったが、当時はそのような発想のOSSのWebサーバがなく、自分で作ることにした(Lighttpdは後で知ったとのこと)。また、1万以上の同時接続をどうすればハンドリングできるかにも興味があり、調査したいという気持ちもあった」(Sysoev氏)
1万超の同時接続に耐えうる高い拡張性が時代のニーズにマッチ
共同創設者のAndrew Alexeev氏は、Nginxが急速に広がった理由の1つとして、こうした1万超の同時接続に対応し、高い拡張性を持ったアーキテクチャを備えていたことにあると説明する。
米Nginx 共同創設者のAndrew Alexeev氏 |
Nginxのユーザーには、Netflix、Dropbox、Box、Airbnb、Facebook、Huluなどもいるが、「ソーシャルやビデオなどを活用したモダンなWebでは、大量のトランザクションをリアルタイムに処理する必要がある。テクノロジーと業界のトレンドがマッチした」(Alexeev氏)とのこと。
また、コネクションの効率性を高めるSPDYプロトコルやリアルタイム性を高めるWebsocketのサポートなど、業界の動きにも迅速に対応している。こうした迅速な対応が可能なのは、本体が軽量で、拡張のための機能はモジュールとして静的に組み込む(ビルドし直す)構造になっているせいである。
「Nginxは軽量でスケーラビリティを実現できるような仕組みになっている。本体には、冗長な部分や不必要なものはなく、必要な機能は必要なものだけを組み込むかたち。そのため、機能を拡張しても、本体の処理が遅くなったりはしない。パフォーマンスにフォーカスすること、ダイナミックな部分のオーバーヘッドを減らすことにこだわっている。もちろん、フレキシビリティを求めるユーザーもいるので、そうしたニーズには、シンプルに対応できるようにしている」(Alexeev氏)
Sysoev氏によると、製品の設計で気をつけているのは、「ムダな動作をしないよう機能をよくチェックすること」「不具合があったときに理由がわかるようにしておくこと」だという。実際、Alexeev氏は、Sysoev氏の開発の進め方について「分析にかなりの時間を割く。最も効率のいいものを探そうとするのが彼のやり方で、それが製品の大きな強みになっている」と話す。