Nginx・Apacheとは?ミドルウェアってなに?
本日はサーバー基礎の一つミドルウエアについて。
実際にサーバーの構築をしていく上で、このミドルウエアという名前は出てきます。
WEBにかかわる方は覚えているといいのかなというないようなのでまとめてみました。
ミドルウェアというのは英語で中間という意味で日本語にそのまま直訳すると中間ソフトウェアということになります
ソフトウェアとは、コンピュータを動作させるための命令や処理手順の纏まりで何らかの処理を行うプログラムを指しますがミドルウェアは、その名の通り osとアプリケーションという2つのものの中間で動作するソフトウェアのことなのです。
アプリケーションとOSの中間である機能に特化した上で os とアプリケーションを補助してくれるソフトウェアということになります。
ハードウェアーというものがないとパソコンや実際のサーバーコンピューターは動きませんがハードウェアの上にオペレーティングシステム os があり、
実際にプログラミングなどでシステムの製作をするものがアプリケーションになります。その間に入って何かの補助をしてくれるのがミドルウェアということです。
アプリケーションとは
アプリケーションは基本ソフトウェアだけだと実現できないような応用的な作業を可能にするソフトウェアと言われています。
例としてはいろいろたくさん種類もありますがmicrosoft のエクセルなどの表計算ソフト、コンテンツ管理システム、cms や勤怠管理システム、予約システムと呼ばれているものは基本的にこの応用ソフトウェアに該当するものになるかと思います
アプリケーションはそれだけで動作してくれるのかというとそういうわけではなく、
たとえばweb ページのブラウザに、予約情報などの情報を表示する機能をつくるとして、
適切に必要なデータを取り出せるようにするには保管、管理する機能が必要にとなってきます。
また実際に予約確定されたときにメールを送受信する機能などのシステムはもちろんその開発者が記述したプログラムのコード通りに動作することにはなるのですがこちらのコードというのは基本的にはその機能を実現するための補助をしてくれるミドル上を利用する前提で設計されているという事があります。
web ページを表示させるためのミドルウェアとして、
例えばNginx・Apacheなどは世界中で最も多く利用されています(複数種類はあるんですがここでは代表例で表記します)
データを保存版するデータベースを管理するためのものとして例えば mysql というものが有名なものであります。
Nginx・Apacheなどの利用用途としては大規模な商用サイトから自宅のミニマムなサーバーにおいて幅広く披露されている形になります。
NginxとApacheの比較詳細 大容量で高速なのはどちらですか?
Nginx と Apache は、WEBサーバーソフトウェアの両方として人気があります。
Nginx と Apache二つの比較
構造:
Nginx はイベント駆動型アプローチを採用しています。
Apache はリクエストを処理するために多数のスレッドを使用するマルチスレッドアプローチを採用しています。
速度:
Nginx は Apache よりも高速であり、静的なコンテンツを配信する場合に特に速いと言われています。
Apacheは動的なコンテンツに向いているといわれています
拡張性:
Apache は拡張性が高いため、多くのモジュールを使用することができますが、
Nginx はよりシンプルであり、高速な代わりに拡張性が落ちます。
リソース使用量:
Nginx は Apache よりもリソース使用量が少ないため、大容量で高速なサイトを構築する際に適しています。
まとめると
NginxとApacheは、Webサーバーソフトウェアの一種で、HTTPリクエストを受け取り、Webページを返す役割を持ちますがそれぞれ得意な領域や特徴が異なります。
Nginxは静的コンテンツの表示や大量の同時接続処理に優れており、メモリ消費量を抑えることができます。NginxはApacheよりも軽量であり、同時接続数が増えれば増えるほど処理能力差が顕著に出てきます。逆を言うとNginxはPHPなどの動的なコンテンツは得意ではないといわれています。Nginxは並列処理を行う構造が優れており複数のリクエストを同時に処理することができるのが特徴といえます。
Apacheは非常に汎用性が高く、さまざまな動作をこなすことができるオールマイティーなWebサーバーといえます。基本的にマルチプロセスで動作し、1つのリクエストに対して1つのプロセスで処理を行います。そのため、Apacheでは同時接続のリクエストが増えるとプロセス数が増え、サーバのメモリ消費量も増加してしまいます。しかし高い拡張性から多くのモジュールが存在するため、様々な機能を追加することができます。一方で、NginxはApacheに比べるとモジュールが少なく、機能拡張が難しいとされています
適切な状況や要件に応じて、それぞれのWebサーバーを選択することが重要です。
どちらが人気でおすすめ?
どちらを選ぶかは、あなたのサイトの要件に応じて決まります。
大容量で高速なサイトを構築する場合は、Nginx が適していますが、
高度な機能が必要な場合は Apache が適しているといえるでしょう。