予備知識
・OS(基本ソフトウェア)
・アプリケーション(応用ソフトウェア)
OSとアプリの例はこんな感じです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592457/30f5a742-1e4e-4985-f135-b48409db9135.png)
ミドルウェアとは
OS(基本ソフトウェア)とアプリケーション(応用ソフトウェア)の
中間に位置し、統一的なインターフェイスや便利なコンピューター利用機能を応用ソフトウェアから利用できる様にするためのソフトウェアです。
OSはコンピューターで使う最低限必要な機能を提供してくれています。逆にアプリケーションはOSでできないことをやってくれます。このOSとアプリケーションの間に入って、
「特別なことをするときに使う基本機能」を提供してくれます。
例えると、
漁師さんが取ってきてくれるのは魚です。これをOSさんが提供してくれている機能だとします。
ある時、アプリケーション・Aさんは焼き魚が食べたくなりました。また、アプリケーション・Bさんは煮付けが食べたくなりました。AさんBさんはそれぞれで魚を捌き始めました。ですが、捌くのにとても手間取っています。そこでCさんは考えました。「捌いてくれる場所があれば、便利なんじゃないか」と。そして、Cさんは魚を捌く魚屋さんを作りました。これにより、AさんBさんは捌く手間を省いて料理できる様になりました。この「魚を捌く」魚屋さんにあたる部分が「ミドルウェア」です。
Web3層構造
Webサーバー、アプリケーションサーバー、データベースの3つのサーバーから構成されているWebアプリケーションの構成のことをいいます。かつては、Webサーバーとデータベースのみの2層構造で成り立っていましたが、それだとWebサーバーに多大な負荷がかかってしまうので、Webサーバーとアプリケーションサーバーの2つに分割され、大量の処理が可能となりました。以下ではその3つのサーバーの役割と例になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592457/d6361734-5a79-a87d-aea5-c4786d54cdd8.png)
Webサーバー
必要に応じて、Webサーバー内の保管データを保護して、アクセス制限を行ったり、Webサイトの閲覧者によるリクエストに応じて、Webサーバーに保管中のデータを表示してくれます。
Webサーバー |
説明 |
Apache |
フリーでありながら、高い信頼性と充実した機能を備えたWebサーバー。ただし、大量のアクセスがあった場合にレスポンスが遅くなる問題点あり。 |
Nginx |
Apacheの問題点である大量のアクセスがあった際にレスポンスが遅くなる点を解決するために作られた。 |
IIS |
Microsoft Windowsの標準Webサーバー |
アプリケーションサーバー
Webサーバーからのリクエストを受け取り、そのリクエストに応じてアプリケーションを実行するためのサーバー。webサーバーとの大きな違いとしては、単体で使えるかどうかと言うところです。動的コンテンツ(RubyやPHPなどのプログラム)のない、静的コンテンツ(HTML,画像)だけのサイトを公開するのであれば、APサーバーを使わずWebサーバー単体で実現することができます。
アプリケーションサーバー |
説明 |
JBoss |
プログラミング言語Javaより開発されたOSSの総称。40以上の様々なプロジェクトがあり、Webサイトより自由にダウンロードして使うことができる。 |
Tomcat |
OSSとして公開されているアプリケーションサーバー。JavaサーブレットやJSPを処理することが可能。単独でwebサーバーとして利用することも可能だが、Apache Web Serberのプラグインとして動作することも可能。 |
データベース管理サーバー
各種必要なデータを保存してくれます。共有データとしてのデータベースを管理して、このデータベースに対するアクセス要求を管理、リクエストされた要求に応じて処理を行うソフトウェアです。
データベース管理サーバー |
説明 |
MySQL |
オープンソースとして公開されているリレーショナルデータベース管理システム。高速性と堅牢性に定評あり。世界的にも導入実績は多い。 |
PostgreSQL |
オープンソースとして公開されているリレーショナルデータベース管理システム。主にLinuxとApache Web Serverを連携させて使用されることが多い。 |
Firebird |
ボーランド株式会社のInterBase6.0ソースコードを流用したレリレーショナルデータベース。オープンソースとして公開されている。 |