ご無沙汰しております。田(でん)です。
第4回となりのエンジニアでは、GMOクラウドの開発エンジニアの宮島さんにNginx(エンジンエックス)とは何か、Apache(アパッチ)との違いを交えながら、教えてもらいました。
ー宮島さんについて教えてください。
田:宮島さんは今までどのようなお仕事されてきたんですか?
宮島:僕はもう社会人歴20年くらいになるんですが、初めは派遣という形でプログラマーを
やっていました。その頃はプロジェクト単位の仕事がメインでした。その後、ITのベンチャー企業に就職して、それからいろいろご縁があって、GMOクラウド(当時はアイル)に入社しました。
田:社会人歴20年目!大先輩です・・・!GMOクラウドに入ってからはどれくらい経つんですか?
宮島:もう11年になりますので、今年で12年目ですね。
田:長いですね~。GMOクラウドでは主にどのような仕事をされたんですか?
宮島:始めは共用サーバーの管理ツールなどの開発に携わってました。今でも提供が続いているiCLUSTA(アイクラスタ)の開発にも携わっていました。
田:そうなんですか!じゃあ、iCLUSTAを作ったチームにいたんですね。
宮島:そうですね。僕が担当していたのは、コントロールパネルのUIの部分がメインです。一番アプリケーションに近いところをやっていた感じですね。その後、マネージメントをやった期間もあって、その間はプログラミングから離れていました。
今はまた開発に携わる機会が多くなり、共用サービスに限らず、ALTUSなど様々なサービスの開発を行っています。
田:本日は、Nginxについて教えていただきたいと思っているのですが、業務上で利用することはありますか?
宮島:業務上で利用したことはなくて、今回のインタビューに備えていろいろ事前に調べたくらいですので、ご了承ください。
田:そうだったんですね!ありがとうございます・・・!
ーそもそもNginx(エンジンエックス)ってなんですか?
田:Nginxという単語を最近よく聞くようになったのですが、そもそもNginxってなんですか?
宮島:Nginxは、Apache(アパッチ)の代替となり得るWebサーバーです。成り得るというより、成り得ちゃってるといってもいいと思います。アクティブWebサイトの上位1000の41%はNginxで動いているという調査結果もあるみたいですね。
田:えー!そうなんですか!WebサーバーといえばApacheが主流って思ってましたけど、アクティブWebサイトの約4割がNginxで動いているなんてびっくりです・・・!
私なんかは最近騒がれていると思ってましたけど、業界的にはだいぶ前から注目されてたんですね?
宮島:そうですね。実際にNginxが作られたのは2004年頃ですから、もう11年くらい経つんです。
初めはごく一部のWebサイトで利用されていたんだと思います。Apacheとは異なる思想で設計されているのですが、それが受け入れられていったという経緯があったのではないかと思います。
ーNginxは、なぜ注目されているんですか?
田:Nginxの良さとも繋がると思うのですが、なぜここまで注目されるようになったのでしょうか?
宮島:Nginxの良さというより、Nginxを受け入れざるを得なかったといった方が良いかもしれません。
さきほども少し触れましたが、NginxはApacheとは異なる思想をもとに設計されました。
そもそもApacheでは対応できない問題が起きてしまったことが、Nginxが作られたきっかけなのです。
田:そうだったんですね!作られたきっかけについてもう少し具体的に教えてください。
宮島:ある企業がApacheを使っていて、サイトの利用者増加につれ、サイトへのアクセスがどんどん増えていきました。
一度の大量のアクセスがあった際にがApacheが処理しきれず、レスポンスが悪くなってしまった事例が発生したんですね。
Apacheが大量の同時アクセスに対処しきれないことは、「クライアント1万台問題」ともいわれています。
その企業で同時の大量アクセスを処理できるようなWebサーバーを作ろうと開発されたのが、Nginxなんです。
Apacheの弱点を補うために作られたわけですから、当然設計の思想が違うというわけです。
アクセスのある大手企業のサイトの多くは、Apacheの「クライアント1万台問題」に悩まされたそうです。
また、ネットの利用人口が増えたいまだからこそより需要が高まり、注目されるようになったのではないかと思います。
Nginxは、トレンドにあった設計をしているとも言えますね。
ーApacheとの違いについて教えてください。
田:そもそも設計の思想が違うという話でしたが、ApacheとNginxの違いについてもう少し具体的に教えていただけますか?
宮島:はい。基本的に違いについても設計思想の違いに由来するのですが、ApacheはHTTPのサービスに特化していて、Nginxは他サービスにも柔軟に対応できるようになっています。そのため、Nginxはロードバランサーのように利用することもでき、メールサーバーに指示を出したりすることもできたりするので、ロードバランサーとの相性も良いといえます。
それに比べてApacheはWebサービスに特化しているので、Webサービスが使うであろう機能をどんどん取り入れていますね。
Nginxは早く処理するために作られているので、自分では重たい仕事をせず、他に割り振ることを得意としていて、Apacheは重たい仕事も全部自分でこなすから、動作が遅くなったりするんですね。
また、Nginxは同時リクエストを多く処理することに特化しているので、余計な機能はつけていない非常にシンプルなものになります。本体がシンプルである分、ソフトウェアが小さいですので、メモリをたくさん使わないんですね。
そのためクラウドサーバーなどでを使えば、少ないメモリ量でサーバーが立てれるので、コストを抑えられて大手企業だけでなく中小企業の方にとってうれしい面もあるんです。
Apacheはたくさんの機能が最初からついてますから、Nginxに比べるとどうしてもメモリの使用量が多くなります。まとめるとこんな感じですね。
田:結構仕様で異なる部分が多いんですね。Nginxは大手企業向きかと思っていたのですが、少ないリソース量で動くという意味では、中小企業の方にもうれしいですね。またNginxはシンプルな作りということですが、たとえばどのような機能がなかったりするのでしょうか。
宮島:分かりやすいものでいうと、たとえばNginxにはphpの処理機能がないので、動的コンテンツを処理できなかったりするんですね。Apacheにはもちろんphpの処理機能はついています。なので、Nginxの下に複数台のApacheをぶら下げておけば、Nginxが自分で処理できないものはApacheへなげて、処理できるものは自分で処理するというような使い方もできますね。
田:なるほど!その使い方であればいいとこ取りですね^^
Nginxの特長やどのような場合に適しているのかとてもよく理解できました!ありがとうございました。
みなさんはNginxについての理解は深まりましたか?
実際のインストール方法などについて、続編としてお送りしますので、
そちらもお楽しみ に(o・ω・o)ノシ
後編はこちら▼
Nginx(エンジンエックス)をインストールした環境で、WordPressを導入してみた。