Webアプリケーションサーバとは?Webサーバとの違いや3層構造についても解説
システム開発に触れた経験がある方であれば、Webアプリケーションサーバという言葉を耳にしたことがあるのではないでしょうか。しかし、WebアプリケーションやWebサーバなど似たような言葉があり、それらの違いがあまり把握できていない方もいるかもしれません。
システムの構造に関わる部分は、システムを利用する際にはあまり意識しませんが、システム開発を外部委託する場合などは知っておいたほうが良いでしょう。
ここでは、Webアプリケーションサーバの役割やメリット、Webサーバとの違いを紹介します。Webアプリケーションサーバを使用する「Web3層構成」についても詳しく解説するため、参考にしてみてください。
INDEX[非表示]
- 1.Webアプリケーションサーバとは?
- 2.Webアプリケーションサーバの役割
- 2.1.ビジネスロジックの実装
- 2.2.データベースなどとのコネクト機能
- 2.3.トランザクションの管理
- 3.Webシステムの構成
- 3.1.Web3層構造
- 3.1.1.プレゼンテーション層
- 3.1.2.アプリケーション層
- 3.1.3.データ層
- 3.2.Webシステムのサーバ構成
- 3.2.1.Webサーバ
- 3.2.2.Webアプリケーションサーバ
- 3.2.3.データベースサーバ
- 3.3.似ているようで実は違う?WebアプリケーションサーバとWebサーバの違い
- 4.Webアプリケーションサーバを利用するメリット
- 4.1.開発工数やメンテナンスコストが削減できる
- 4.2.情報処理負荷が軽減される
- 4.3.セキュリティの担保がしやすい
- 5.Web3層構造を利用しない場合の構成
- 6.まとめ
>> 「Webアプリケーションサーバ 」に関するお悩み・ご相談はこちら
Webアプリケーションサーバとは?
Webアプリケーションサーバは、プログラミング言語で構築されたアプリケーションやプログラムを動作させるサーバのことを指します。アプリケーションサーバと呼ばれることもあります。
大抵のWebサイトやWebシステムなどでは、サーバの構造が「Webサーバ」「Webアプリケーションサーバ」「データベースサーバ」の3つに分かれています。その一つに該当するWebアプリケーションサーバはサーバの一種ではありますが、オンプレミスサーバのような物理サーバ(ハードウェア)ではなく、ソフトウェアの一種です。
Webアプリケーションサーバの役割
Webアプリケーションサーバは、具体的にはどのような役割を担い、またどのような機能をもっているのでしょうか。ここからはWebアプリケーションサーバの役割や機能について詳しく解説します。
ビジネスロジックの実装
Webアプリケーションサーバは「ビジネスロジック」も実装しています。ビジネスロジックとは、データベースの読み出し・書き込みのような処理の総称です。
具体的には、ユーザー認証機能やリモート通信機能などがあります。ビジネスロジックに明確な定義はありませんが、後述するWeb3層構造でシステムの処理をする部分にあたる「アプリケーション層」がビジネスロジックに該当すると考えて良いでしょう。
また、ビジネスロジックの実装をすべてソースコードで書くと膨大な量になるため、後述する「デ―タベースなどとのコネクト機能」や「トランザクションの管理」を活用して実装されます。
データベースなどとのコネクト機能
企業が業務で利用する販売管理システムや在庫管理システムなどの業務アプリケーションは、基本的にデータを管理・処理するためのデータベースを備えています。Webアプリケーションサーバには「コネクト機能」が備わっており、データベースに接続してデータの読み出しや書き出しなどの処理が可能です。
通常、データベースへの切断・再接続を繰り返した場合、実行速度の低下に繋がってしまう可能性があります。しかし、コネクト機能で事前にデータベース接続をおこなっておけば、毎回接続をおこなう必要がなくなるため実行速度が低下しにくくなります。
トランザクションの管理
業務アプリケーションでは多くのユーザーが多くのデータを同時に取り扱うこともあるため、データの整合性や完全性が求められます。
銀行振込のシステムを例にしてみましょう。銀行口座Aから銀行口座Bに10万円送金する場合、下記の2つの処理が発生します。
- 銀行口座Aの残高を10万円減らす
銀行口座Bの残高を10万円増やす
これらの2つの処理を別々におこなうと、もし片方の処理が成功、もう片方の処理が失敗した場合にデータベースに矛盾が生じてしまいます。
Webアプリケーションサーバは、上記のような矛盾が生じるのを避けるために、分離させると不都合が生じるような複数の処理を一つにまとめて管理しています。すべての処理が正常に終わらなかった場合は、ロールバック処理をおこなって処理前の状態に戻します。このような処理はプログラム側で制御すると処理に時間がかかってしまうため、Webアプリケーションサーバの機能を利用してサーバ側に処理を任せることをおすすめします。
Webシステムの構成
Webシステムは、Webを利用したシステムのことです。一般的なコーポレートサイトやコラムサイトなどのようなWebサイトよりも、高度な機能を備えています。
例えばECサイトでの商品購入や、銀行サイトでのお金の振り込みなどのような、インタラクティブなサービスを受けることのできるWebサイトがWebシステムに該当し、Webアプリケーションとも呼ばれます。
ここからは、Webシステムの構成を詳しく見ていきましょう。
Web3層構造
Webシステムは、基本的に「プレゼンテーション層」「アプリケーション層」「データ層」という3層の階層構造になっており、Web3層構造と呼ばれています。それぞれの層にユーザーからのリクエストを処理するのに必要となるサーバがあり、Webアプリケーションサーバはアプリケーション層で処理をおこなうサーバです。
WebシステムをWeb3層構造で構成する理由の一つとして、負荷の分散があげられます。
層を分割しなかった場合、一つのサーバでユーザーからのリクエストを受け、適切な処理を実行することになります。小規模なシステムであればさほど問題はないかもしれませんが、複雑な処理が必要な場合やアクセス数が多い場合はサーバの負荷が大きくなってしまいます。
Web3層構造を取り入れることで、サーバにかかる負荷を抑えることができます。
次に、それぞれの層の役割を見ていきましょう。
プレゼンテーション層
プレゼンテーション層は、ユーザーからのリクエストに応じたWebサーバとのやり取りや、ユーザー側への画面表示処理を担っている層です。
Webブラウザに表示させる部分は「HTML」や「CSS」、「JavaScript」で構築されており、ユーザーがアクセスできる唯一の層でもあります。また最近では、JavaScriptの構築には「View.js」や「React」、「Angular」などのフレームワークが使用されることが多くなっています。
Web3層構造のくくりの中ではプレゼンテーション層と呼ばれるのが一般的ですが、開発を進める中ではフロントエンドやクライアントサイドと呼ばれることもあります。
アプリケーション層
アプリケーション層は、プレゼンテーション層から伝達されたユーザーのリクエストに応じてビジネスロジックを処理する層です。
Webアプリケーションの核となる部分であり、プレゼンテーション層で入力されたデータを処理するほか、後述する「データ層」と連携することで、必要に応じてデータの検索・作成・追加・削除・更新などのリクエスト・レスポンスの送受信をおこなえます。
ユーザーが直接アクセスはしない部分になり、バックエンドやサーバサイドと呼ばれることも多いです。一般的に「PHP」や「Java」、「Python」などの言語で開発されます。
データ層
データ層はデータ管理の役割を担っており、データの検索・作成・追加・削除・更新などの機能を提供している層です。
「MySQL」や「PostgreSQL」などのデータベースを操作する言語を利用して、アプリケーション層と連動しています。
アプリケーション層と同じくバックエンドやサーバサイドに分類され、ユーザーから見ると3層の中で最も遠い位置関係にあります。
Webシステムのサーバ構成
次にWebシステムのサーバ構成を見ていきましょう。先述したようにWeb3層構造のそれぞれの層にサーバが稼働しており、3つのサーバで構成されていることになります。具体的にはプレゼンテーション層が「Webサーバ」、アプリケーション層が「Webアプリケーションサーバ」、データ層が「データベースサーバ」です。各サーバがどのような役割を担っているのか詳しく解説します。
Webサーバ
Webサーバは、ユーザーからリクエストされた情報に対し、HTMLやCSS、画像などでレスポンスを返すサーバです。WebアプリケーションやWebサイトの稼働に必須であり、主な役割として「Webブラウザに表示される画面の生成」「Webアプリケーションサーバへの処理指示とデータ授受」の2つがあります。
Webサーバにはさまざまな種類がありますが、「Apache HTTP Server」や「Nginx」、「IIS」がよく使われています。
Webアプリケーションサーバ
Webアプリケーションサーバは、Webサーバから受け取った情報を処理するためのサーバです。RubyやJavaなどのプログラミング言語で構築したアプリケーションを実行して処理し、結果を返します。動的な処理が多いWebシステムで活用されます。必要に応じてデータベースサーバにアクセスしてデータをリクエストし、返ってきたデータを動的コンテンツとして扱う場合もあます。
よく使われるWebアプリケーションサーバと対応言語は以下のとおりです。
Webアプリケーションサーバ |
プログラミング言語 |
---|---|
Apache Tomcat |
Java |
JBoss |
Java |
Unicorn |
Ruby |
IIS |
C#、VB.NETなど |
Javaはオブジェクト指向のプログラミング言語で、Webアプリケーション開発に広く使用されています。マルチプラットフォームに対応しているため、柔軟性が高いです。
RubyもWebアプリケーションの開発でよく使用されるプログラミング言語です。文法がシンプルで可読性が高く、「Ruby on Rails」というフレームワークがよく使われています。
また、Webアプリケーションサーバにはアプリケーション開発に必要となるコネクト機能やトランザクション機能などがあらかじめ備わっている場合が多く、開発に必要な機能を使えばアプリケーションの開発工数を削減できます。
データベースサーバ
Webアプリケーションのデータベースサーバは、データベース管理システムによって管理されています。おもな役割は、Webアプリケーションサーバからのリクエストに応じたデータ管理の実行です。データの作成や読み出し、更新、削除がこれに該当します。
データベースサーバには企業にとって大切なデータが多く保管されているため、データの流出は避けなければなりません。そのためにはセキュリティ対策が必須ですが、WebシステムはWeb3層構造によりセキュリティの確保が可能です。Web3層構造を用いて役割ごとにサーバを分散することで、サーバごとに最適な運用・保守を実現でき、また階層構造になることでデータベースサーバへのアクセスも困難になるためです。
データベースの種類は「Oracle」、「SQL Server」、「MySQL」、「PostgreSQL」などがよく使われています。
似ているようで実は違う?WebアプリケーションサーバとWebサーバの違い
WebアプリケーションサーバとWebサーバは混同されがちですが、両者には明確な違いがあります。具体的な違いは以下のとおりです。
Webアプリケーションサーバ |
Webサーバ |
|
---|---|---|
主な役割 |
ビジネスロジックの実行や、データベースサーバへのアクセス |
ユーザーからのリクエストを処理してWebコンテンツを配信 |
扱えるプロトコル |
HTTP以外も扱える |
HTTPのみ |
実行形式 |
シングルスレッド |
マルチスレッドやマルチプロセス |
処理内容 |
|
|
よく利用されるサーバ |
など |
など |
この表からもわかるように、WebアプリケーションサーバとWebサーバは名前の面では似ているものの役割などが異なります。
Webサーバはユーザーとの窓口、Webアプリケーションサーバはユーザーのリクエストに応じた対応をおこなうバックヤードのようなイメージです。
しかし、それでも両者が混同されやすいのは、Apache HTTP Serverのように、WebアプリケーションサーバとWebサーバの両方で機能するサーバソフトウェアが存在するためでしょう。Apache HTTP ServerはPHPでの開発時によく用いられるWebサーバで、Webアプリケーションサーバとしての機能も兼ね備えています。
例えば、Apache HTTP ServerとWebサイトのCMSツールであるWordPressを組み合わせることで、WebアプリケーションサーバがなくてもWebサイトの構築が可能です。
Webアプリケーションサーバを利用するメリット
さまざまな機能が備わっているWebアプリケーションサーバですが、WebアプリケーションやWebシステムの開発に利用するとどのようなメリットがあるのでしょうか。ここからは、Webアプリケーションサーバを利用するメリットを詳しく解説します。
開発工数やメンテナンスコストが削減できる
Webアプリケーションサーバにはデータベースサーバとのコネクト機能やトランザクションの管理機能など、システム開発に欠かせない機能があらかじめ実装されています。そのため、開発したいシステムに必要な機能が備わったWebアプリケーションサーバを選べば、開発工数の削減が可能です。
また、Webアプリケーションサーバを使用するWebアプリケーションのシステムは、メンテナンスコストも削減できます。メンテナンスの際、クライアントアプリケーションを使用していた際は、アプリケーションをインストールしたすべてのパソコンで更新をしなければなりませんでした。ですが、WebアプリケーションであればWebサーバやWebアプリケーションサーバ、データベースサーバを更新するだけで良いため、メンテナンス作業の削減が可能です。また、Webブラウザで動作するため、クライアント側の変更も不要です。
サーバが役割ごとに分かれているため、トラブルが発生した場合に原因を特定しやすい点もメリットです。
情報処理負荷が軽減される
Webアプリケーションや業務システムにはレスポンスの速さが求められます。多くのユーザーが日常的に利用するこれらのシステムは、ユーザーのリクエストを効率よく処理し、レスポンスする必要があるためです。Web3層構造であればサーバが役割ごとに分かれているため、各サーバの負荷は比較的軽減されます。設計次第で他にも負荷軽減措置はあるため、テスト時の動作状況に応じて別途対応が必要になることもあります。
従来のWebシステムはWebアプリケーションサーバがない2層構造を採用しており、WebサーバがWebアプリケーションサーバの役割も担っていました。そのため、Webサーバに負荷がかかりやすい点が問題とされていましたが、Web3層構造を採用することでこの問題を解決できます。また、ビジネスロジックの処理をおこなっているWebアプリケーションサーバを複数台用意すればユーザーからのアクセスがより分散するため、さらなるパフォーマンスの向上が期待できるでしょう。
サーバを用意するにはコストがかかりますが、仮想サーバであれば比較的簡単に複数のサーバを用意できるため、パフォーマンスの向上を図る際の有効な手段の一つです。
セキュリティの担保がしやすい
Webアプリケーションサーバの利用は、セキュリティの担保がしやすい点もメリットです。例えばすべてのシステムを1台のサーバに集約した場合、ユーザーはデータベースがあるサーバに直接アクセスできてしまいます。サーバのセキュリティが不十分だった場合、悪意あるユーザーに重要な情報を盗まれる可能性が高くなります。
しかし、Web3層構造のようにサーバを分けておけば、データベースサーバへのアクセスをWebアプリケーションサーバからのアクセスに限定することもできます。また、サーバ間へのセキュリティ製品の設置も可能です。このようなセキュリティを施せば、悪意あるユーザーがデータベースにアクセスする事態を防げるため、システムの機密性を高めることができます。
Web3層構造を利用しない場合の構成
現在、Webアプリケーションの構成はWeb3層構造が主流ですが、必ずしもWeb3層構造を利用しなくてはならないわけではありません。Web3層構造を利用しない場合の構成にはどのようなものがあるのか、詳しく見ていきましょう。
Web2層構造を利用する
Web2層構造は、プレゼンテーション層とデータ層で構成されており、アプリケーション層が存在しない構成です。Web3層構造が主流になるまではWeb2層構造がよく利用されていました。Web3層構造であればアプリケーション層のWebアプリケーションサーバに実装されているビジネスロジックは、プレゼンテーション層やデータ層、あるいは両方に実装されています。
Web2層構造の場合、プレゼンテーション層からデータ層に直接アクセスできてしまうため、ビジネスロジックが制限されることがあります。また、プレゼンテーション層のWebサーバでリクエストの受付から処理までをおこなうことになるため、サーバに負荷がかかりパフォーマンスが低下する可能性も高まります。
上記のようなデメリットを抱えているため、Webアプリケーションを開発する際は基本的にはWeb3層構造の利用をおすすめします。Webアプリケーションにおいてレスポンススピードは重要なため、Web2層構造を採用してパフォーマンスに課題を抱えている場合は、Web3層構造への改修を検討するのも良いでしょう。
WebアプリケーションサーバをWebサーバで代替できることも
実はWebアプリケーションサーバはWebアプリケーションに必ずしも必要というわけではなく、WebアプリケーションサーバをWebサーバで代替することも可能です。
例えば、先述したApache HTTP Serverは、WebサーバながらWebアプリケーションサーバの機能も持ち合わせています。
まとめ
Webアプリケーションサーバは、Web3層構築においてWebサーバとデータベースサーバの間に位置するサーバです。コネクト機能やトランザクションの管理機能など、Webアプリケーションの核となる機能が備わっています。従来のWeb2層構造よりもサーバ負荷の軽減などの点で優れているため、Webアプリケーションを開発する際は、基本的にはWeb3層構造を採用するのが良いでしょう。
株式会社エヌアイデイは、お客様の業務理解のもと企画立案からシステム構築、システム運用・監視に至るまで一貫してWebアプリケーション開発をサポートしています。Webアプリケーションの開発でお困りごとなどございましたら、お気軽にご相談ください。
>> エヌアイデイのWebアプリケーション開発について詳しくはこちら