エンジニアになって半年ですが、「ミドルウェア」って結局なんだっけ?となったので、調べてみました。
1. ミドルウェアとは?
OSとアプリケーションの間で立ち回るソフトウェアで、OSほど汎用的ではないものの、多くのアプケーションで必須となるシステムを担っているそうです。
2. ミドルウェアの種類
代表的なミドルウェアに、webサーバ、アプリケーションサーバ、データベース管理を担うミドルウェアがあるそうです。これら3つは「web三構造」と呼ばれる、代表的なWebアプリの構造を構成しいます。
他にも、システムのバックアップやシステムの監視、サーバの冗長化など、「運用ミドルウェア」と呼ばれるミドルウェアがあります。確かに、OSが担う役割ではないけれど、アプリケーションを動かす際には必須の機能ですね。
3. web3構造
先述した通り、webサーバ、アプリケーションサーバ、データベース管理サーバの3つのミドルウェアで構成されるシステムを、「web3構造」と呼ぶそうです。1つ1つの役割を簡単にみていきます。
a. webサーバ
ユーザーのリクエストに応じて、ページを表示するためのファイルを返すためのサーバです。代表的なものには、apacheやnginxがあります。毎回同じページを返す場合は、webサーバのみで完結しますが、リクエストによって表示内容が変わる場合(動的コンテンツ)、アプリケーションサーバに問いかけて、情報を得る役割も担います。
b. アプリケーションサーバ
アプリケーションの実行環境を提供するサーバです。動的なコンテンツを生成し、webサーバを介してwebページに表示することができます。また、動的コンテンツだけではなく、DBにある特定のデータを表示したい場合には、データベース管理サーバに問い合わせ、データを取得することができます。
c. データベース管理サーバ
DBMS(データベース管理システム)が稼働するためのサーバ。データの一元管理をしていて、データの保存や更新、バックアップを行うことができます。アプリケーションサーバからデータを要求された時は、DBMSで特定のデータを取得することができます。
4. まだまだありそうミドルウェア
私は、現在Djangoを使った開発を行っていますが、settings.pyを覗きに行くと、色々なミドルウェアが登録されています。djangoのSecurityMiddleware
とか、 SessionMiddleware
とか…。この辺りは、まだノータッチなので、引き続き勉強して、次の記事でまとめてみます。