はじめに
IT業界未経験からインフラエンジニアへの転職を目指すmmと申します。
今回はWEBサーバーについて理解を深めるために、それぞれのソフトウェアの違いについてまとめてみました。
初学者のため、誤っている事があればご指摘いただけると幸いです
WEBサーバーとは
クライアントからのWebブラウザのリクエストに対して、HTMLやCSS、JavaScriptなどの情報を返すコンピュータのことです。
コンピュータはWEBサーバーソフトウェアをインストールすることで、WEBサーバーとして機能できるようになります。
WEBサーバーソフトウェアとしては、Nginx、Apache、IIS、LiteSpeedの4種類があります。
Apache
無償で利用できるオープンソースのWEBサーバーソフトウェアです。
WEBサーバーの代表格として20年以上の実績があり、高い信頼性と安定性を誇ります。そのため、技術情報が豊富であり、インターネットで情報の入手がしやすいです。
また、WEBサーバーソフトウェアの中でもモジュールの数が一番豊富です。
そのため、様々な機能を柔軟に選択することが可能です。
また、Apacheはマルチプロセスモデルのため、動的コンテンツのような重たい処理が得意です。しかし、マルチプロセスモデルは、クライアントからのリクエスト毎に1つのプロセスで対応します。そのため、同時接続数(クライアントの数)が増えると、その分だけプロセスも増えるため、プロセス数の上限以上のリクエストを同時に処理できなくなったり、メモリが大量に消費されてしまうという問題があります。
メリット
- 信頼性と安定性が高い
- 技術情報が入手しやすい
- 拡張機能が豊富
- 重い処理が得意
デメリット
- メモリの消費が大きい
- 大量の同時処理には耐えられない
Nginx
シングルスレッドのイベント駆動型モデルです。
イベント駆動型とは、クライアントのアクセスをイベントとして扱い、それをトリガーにプロセス内で処理を開始します。マルチプロセスモデルとの違いは、1プロセスにつき1スレッドであるということです。そのため、同時接続数(クライアントの数)が増えても、プロセス数やスレッド数は増えないため、Apacheで問題となっていた同時接続数が増えた場合にも対応できます。
また、リバースプロキシやロードバランサー機能があります。静的コンテンツやリバースプロキシに特化させ、プログラムの実行は他のサーバーに行わせるといった活用方法も可能です。しかし、単独ではPHPなどのスクリプト言語を処理する機能がなくCGIなどを別途導入する必要があります。
メリット
- 動作が速くて、高負荷に強い(特に静的コンテンツに強い)
- リバースプロキシやロードバランサー機能がある
デメリット
- 重い処理には不向き
- Nginx単独での運用は難しい
IIS(アイアイエス)
Windows専用のWEBサーバーソフトウェアであり、SQLやAzureといったMicrosoft製品と親和性が高いです。
WindowsのOSにインストールして使用することから、見慣れたGUIを使用して、Windowsと同じ感覚でWEBサーバーを構築できます。
拡張機能や開発環境も充実しているほか、日本語の公式マニュアルが用意されており、トラブル対応へのハードルも低いことから初心者に優しいWEBサーバーソフトウェアです。
技術者情報も豊富であり、インターネット情報の入手がしやすい事も大きな特徴です。
ただし、Windows専用であり、運用がWindowsの環境に限られてしまうのがデメリットです。
メリット
- Windows専用でMicrosoft製品と親和性が高い
- GUIベースで操作が可能
- 拡張機能や開発環境が充実している
- 日本語の公式マニュアルがある
- 技術情報は豊富
デメリット
- WindowsのOSでしか利用できない
LiteSpeed
近年、超高速のWEBサーバーソフトウェアとして注目が集まっています。
Apacheと完全互換性があることも大きな特徴です。Apacheと互換性がある事から、サーバー移行のハードルが低く、Apacheの代わりに採用されるケースが増えているそうです。
また、ブログやWebサイトを作成できるコンテンツとしてトップシェアを誇るWordpressを高速化する専用のプラグイン「LiteSpeed Cache」があります。「LiteSpeed Cache」はワンクリックで簡単に導入することができます。
しかし、新しいWEBサーバーソフトウェアであることから、技術情報が少なく入手しにくいというデメリットもあります。
メリット
- 超高速
- Apacheと完全互換性がある
- Wordpressを高速化する専用のプラグインがある
デメリット
- 技術情報が少ない
終わりに
今回は過去の勉強メモをもとに、今までなんとなくしか覚えていなかったWEBサーバーについて再度学習し、それぞれの違いについてまとめてみました。
まだまだ理解が及んでいない部分もありますが、引き続き学習したいと思います。
参考