はじめに
今回は「ミドルウェア」について理解を深めた。
以前は「共通処理をまとめて再利用できるもの」くらいの認識だったが、よりインフラ視点での理解が進んだ。
ミドルウェアとは?
ミドルウェアとは、その名の通り、
「アプリケーションとOSの中間的な処理を行うソフトウェア」
たとえば、OSだけではアプリケーションは「サーバーとしての機能」を持たない。
そこで、以下のようなミドルウェアを導入することで、サーバーとして動作するようになる。
- Webサーバー(nginx、Apacheなど)
- APサーバー(PHP、Javaの実行環境など)
- DBサーバー(MySQL、PostgreSQLなど)
ミドルウェアはサーバーにインストールして初めて使える
「〇〇サーバー」と呼ばれるように、ミドルウェアはサーバーにインストールすることで動作する。
Web三層構成とそれぞれの役割
層 | 役割 | 代表例 |
---|---|---|
Webサーバー | クライアントと最初に接する窓口。静的ファイルを返す、またはAPサーバーに処理を渡す。 | nginx / Apache |
APサーバー | アプリケーション本体を実行する。DBと連携し、動的レスポンスを生成。 | PHP / Java(実行環境) |
DBサーバー | アプリケーションに必要なデータを保存・提供する。 | MySQL / PostgreSQL |
[クライアント]
↓ HTTP
[Webサーバー](例: nginx)
↓ PHP実行
[APサーバー](例: PHP-FPM)
↓ SQL
[DBサーバー](例: MySQL)
なぜWeb三層に分けるのか?
セキュリティ
- DBサーバーを直接クライアントから触れるのは危険。
- 中間にWeb/APサーバーを挟むことで、制御・検査ができる。
障害耐性・保守性
- すべてを1台にまとめると、1台が落ちる=全滅。
- レイヤーごとに分ければ、影響を局所化できる。
Dockerを学んでいる自分にとっての気づき
Dockerは、たとえ1台のホストであっても、プロセス・ストレージ・ネットワークを分離できる。
つまり、物理的に分かれていなくても、論理的に三層構成を模倣できる。
Dockerは「分離された環境を手軽に再現できる」ことが強み。
おわりに
今回ミドルウェアの役割や三層構成を学ぶことで、Dockerのような技術がなぜ必要なのか、どんな価値があるのかにも気づくことができた。
やはり、基礎知識があるからこそ、応用が効くのだなと実感。