ミドルウェア
ミドルウェアは、ソフトウェアの一種であり、コンピュータの構成する一つの要素となっています。
ミドルウェアの働きがあることで、コンピュータは複雑な処理を行うことできます。
コンピュータ(ハードウェア)には、OSが搭載されています。
OSは汎用的な機能を担いますが、それだけでアプリケーション(chromeやExcelなど)を動かしているわけではなく、ミドルウェアが中間に入ってOSとアプリケーションの橋渡しをしています。
ミドルウェアの種類
ミドルウェアには「webサーバー」、「アプリケーションサーバー」、「データベース管理サーバー」の三種類があります。
上記をweb三層構造と呼んだりします。
webサーバー
我々が普段パソコンやスマホで見ているコンテンツは、webサーバーにアクセスして送られてきた文字・画像の集まりです。
「このページが見たい」とリクエストすればwebサーバーが返してくれます(レスポンス)。
誰が見ても同じ内容である「静的コンテンツ」や、ショッピングサイトのカートのような見る人によって内容が変わる「動的コンテンツ」も返してくれます(動的コンテンツはwebサーバーがアプリケーションサーバーへコンテンツを要求する必要がある)。
そして、webサーバーで代表的な製品がApacheとnginxです。
Apacheとは
無料(オープンソース)で使用可能なwebサーバーソフトウェア。
正式には、「Apache HTTP Server」という名称である。
1995年に公開されて現在でも利用されていることから、人気のwebサーバーであることがうかがえる。
(技術の移り変わりが激しい業界で、それだけ使われているのはすごいことだなと思います)
メリット
無料で利用可能
先ほど述べた通り無料で使えるので、コスト面でメリットがある。
主要なOSで使用できる
Mac / Windows / Linuxといった主要なOSで使える汎用性の高さもメリットの一つ。
豊富な機能
長年人気を博してきたApacheには拡張機能のためのモジュールが数多く用意されています。
処理が早く安定している
処理速度が速く安定していることから、ホームページの表示やコンテンツの動作についてもスムーズ。
デメリット
リクエストが多いと動作が重くなりがち
Apacheはマルチプロセスであり、リクエストが大量の場合にプロセスが同時に複数起動する。そうなるとオーバーヘッド(負荷処理)が大きくなりメモリを大量消費することになる。
結果動作が重くなったりする(※C10K問題)。
(※サーバー性能に問題がなくてもクライアントの同時接続数が一定数を超えるとサーバーがパンクして応答が遅くなること。「C」はクライアント、「10K」は1万台を表す。だからといって、クライアントの同時接続数が1万台に達したら起こるわけではないですが、、)
サポートや保証がない
オープンソースであるため、トラブル発生時の対応はユーザーに求められる。(ただ、長きにわたり多くの方に利用されている分、webで検索すれば対応方法がヒットすることもあり、自己でトラブルシューティングが可能かも)
Nginx(エンジンエックス)とは
webサーバーのシェア率はApacheと同じくらい普及しており、AdobeやCyberAgentといった企業も利用しています(細かく述べるとNginx Plus を利用)。
OSS(オープンソースソフトウェア)で無料版を使用することができ、OSSの機能を拡張した有料版(先ほどのNginx Plus)もあります。
メリット
OSSなら無料で使える
無料版があるので、とりあえず使ってみるのもあり。有料版との機能の比較はNginx Plus で確認できる。
大量のリクエストを処理できる
Apacheとよく比較されているところですが、Nginxは大量同時接続に対して強い。(C10K問題に対応している)
リバースプロキシとしても動作する
設定ファイル(/etc/nginx/conf.d)にプロキシ設定を記載して、リバースプロキシとして使用する。
デメリット
CPUリソースを沢山消費する処理に弱い
アプリケーション実行や動画などの処理には不向き。
Nginx単体で完結させるのは難しい
PHPなどのスクリプト言語処理の機能がない。