Webサーバ、APサーバ、データベース管理サーバの役割について
はじめに
IT業界に携わっている人でもそうでない人でも「サーバ」という単語を聞いたことはあるでしょう。サーバにはいくつかの種類があり、またサーバの境界線も人や場合によってとらえる範囲が異なる場合があります。そういった特徴も踏まえつつ、本記事では「Webサーバ」と「AP(アプロケーション)サーバ」、「データベース管理サーバ」がどのような役割を担い、どのような違いがあるのかを出来るだけ簡単に理解できるようにご紹介いたします。
サーバとは
サーバとはサービスを提供する側のコンピュータの事を言います。サービスを受け取る側のことをクライアントと呼ぶのですが、サーバはクライアントからのリクエストに応じて保管しておいたファイル、例えばホームページを表示するために必要となる情報を提供します。その情報にはHTMLファイルや画像ファイル、音楽ファイル、映像ファイルなどが含まれます。
ソフトウェアの分類
ソフトウェアを大きく分けると4つにわけることができます。
1、応用ソフトウェア(各種アプリケーションソフト)
2、ミドルウェア
3、基本ソフトウェア(OSや言語プロセッサ、各種サービスプログラムなど)
4、ハードウェア
ミドルウェア
この中で2番目に位置する「ミドルウェア」とは処理を行うアプリケーションと制御をするOSの中間的な処理を行うソフトウェアのことをいいます。アプリケーションは業務に特化した機能、OSは汎用的な機能を担うのですがミドルウェアはアプリケーションの機能ほど具体的ではなくOSの機能ほど汎用的ではない機能を持っています。そのミドルウェアを構成しているのが「Webサーバ」「APサーバ」「データベースサーバ」です。
Web三層構造
現在、多くのWebサービスは「Web3層構造」という設計で作られていることが多いです。Web3層構造とは上記した通り
Webサーバ(層)
APサーバ(層)
データベース管理サーバ(層)
この3層で構成されています。
Webサーバ
Webサーバはブラウザからのリクエストに応じて「静的コンテンツ」を提供します。静的コンテンツとは、時間や利用するクライアントによって表示する内容が変わらないコンテンツのことを言います。例えば、今表示されているWebページも誰がどの時間帯に見ても内容が変わらないのでWebサーバから提供されている静的コンテンツになります。
APサーバ
APサーバはWebサーバからのリクエストに応じ、JavaやPHPなどで作成されたアプリケーションを実行して動的コンテンツを生み出します。動的コンテンツとは見る人や時間帯によって表示する内容が変わります。例えば、Amazonのログインページではおすすめ商品や購入履歴など見る人によって変わるので動的コンテンツになります。
データベース管理サーバ
データベース管理サーバとはAPサーバからのリクエストを受けデータベース管理システムが作動するサーバのこといを言います。データ自体はデータベース管理サーバに保存されているわけではなくデータベースに保存されています。そのデータ情報をAPサーバからのリクエストに応じてSQLを利用し取り出したり、書き込んだりするのがデータベース管理サーバの役割になります。
Web3層構造のメリット
ではなぜミドルウェアをわざわざ「Webサーバ」「APサーバ」「データベース管理サーバ」の3層構造になっているのか、そのメリットについて説明します。
パフォーマンスの向上
昔はAPサーバがなく、WebサーバがAPサーバの役割を担っていました。そのためWebサーバにAPサーバ分の負荷がかかり処理が重くなって動作遅延が頻繁に起きていました。しかし現在では静的コンテンツはWebサーバに、動的コンテンツはAPサーバで処理することによってパフォーマンスを向上させることが出来ます。
保守性の向上
Webシステムはシステムが止まってしまうと多大な被害が出てしまいます。しかし3層構造にすることによって、もしエラーが起こってシステムが止まってしまっても、どの部分でエラーが起きているのかをすぐに判断することができ、またシステムを全体的には止めず、一部の機能を停止するだけで済ませることが出来るというメリットがあります。
コストを抑えられる
1層構造の場合、故障や更新の時に全てを変更する必要があり膨大なコストがかかってしまいます。3層構造にすることで、機能を分離しているので故障や更新があってもその層だけを修正すればいいのでコストを抑えることができます。
おわりに
本記事ではサーバの3層構造普段何気なく使っているWebサービスですが、サーバは上記のような仕組みになっていて全く異なる役割を担っています。これらのことを理解しておくだけでITリテラシーを上げることが出来ますし、インフラエンジニアを目指している方にとってはとても重要な知識になります。この記事を参考にサーバについて、より深い理解ができたならば幸いです。