アプリケーションサーバ
出典: フリー百科事典『ウィキペディア(Wikipedia)』
アプリケーションサーバ(Application Server)は、ビジネスロジックなどを実装したアプリケーションソフトウェアを実行することを専門とするコンピュータ・ネットワーク上のサーバコンピュータ、もしくはそのようなコンピュータ上でのアプリケーションの実行を管理補助するミドルウェアのこと。
アプリケーションサーバと呼ぶ場合、一般にはJava EEを採用したWebアプリケーションサーバを指し、CitrixによるCitrix Presentation Serverや.Net(ドットネット)に準じたサーバはアプリケーションサーバと呼ばれることは少ない。
Webアプリケーションサーバは、WebクライアントからのHTTPのレスポンス要求を処理するWebサーバとバックエンドのRDBMSを中心とするDB中核層への橋渡しを担い、データの加工などの処理を行う。
目次 |
[編集] 概要
アプリケーションサーバの基本的な機能とされるものは、以下の3つである。
- プログラムの実行環境やデータベースへの接続機能の提供
- 複数の処理を連結するトランザクション管理機能
- 業務の処理の流れを制御するビジネスロジックの実装
ただし、アプリケーションサーバの機能についての厳密な定義は存在しないため、これらの機能を有しないアプリケーションサーバも存在する。また、この3つの機能以外に、各ベンダによる機能強化が行われている事も多い。
以降、本稿ではWebアプリケーションサーバの記載を中心とする。
[編集] Web3層構成
一般的なWebシステムの多くは「Web3層構成」と呼ばれる構成にて設計されている事が多い。このWeb3層設計は、以下の3つの層で構成されている。
- ウェブブラウザからのHTTPによるアクセス要求を分散処理するWebサーバ層
- HTTPトランザクションの一貫性を保持し、システム固有の処理を行い、バックエンドで動作するデータベースなどの検索/加工処理などを司るWebアプリケーション層
- システムのデータや管理情報を司るデータベース層
Webシステムをそれぞれ3つの層に実装を分け垂直分散したことで、それぞれの層単位でスケールアウト(サーバの増設で処理性能を向上できること)が可能となり、拡張性やコストパフォーマンスも大きく向上している。
一般に、3階層システムは、クライアントやバックエンド側にビジネスロジックを実装する方式(2階層システム)に比べ、システムの変更や更新、増強などが容易で、柔軟性が高いシステム構成といわれている。特にDB層とアプリケーション層を切り分けたことで、2層システムなどであったシステム更改の際の「高価な基幹データベース自体やそのサーバの必要諸元の変更にあわせて買い換えなければならない」といった悩みが解消されることになった。
[編集] 歴史
1990年代前半のクライアントサーバベースのシステムでは、クライアント側を専用端末とし、各種機能を用意するリッチクライアント型のシステム構築が主流であった。これは、データベースなどを含むサーバが非常に高価であり、変更(買い換え)が容易でなかったことによる。 そのため、業務プロセスが変わったら、端末側のプログラムを更新或いは入れ替える必要があったが、多くの場合、利用者は社内の人間などに限られていたため大きな問題とはならなかった。
1990年代後半に、インターネットが普及をはじめると、ウェブブラウザを用いた電子商取引などのニーズが広がってくる。ウェブブラウザをクライアントに用いるシステムでは、サービスの対象者が不特定多数になることが多く、システムの変更にあわせて利用者全てのの環境を更新することは事実上不可能である。そこで、サーバサイドに業務プロセスなど各種アプリケーションを用意することが求められるようになった。 この要求に対して、アプリケーションのクライアントからサーバへのシフトは、サーバサイドコンピュータの高性能化(UNIXサーバなどに代表される比較的安価で高性能なサーバの登場)とネットワークの高速化、Javaなどのプログラム言語の処理高速化技術等の進展などにより可能となった。1990年代後半には、ウェブブラウザをクライアントとして使用し、様々な処理をサーバー側で行うシステムが一般化している。
インターネットを利用したクライアントサーバーシステムでは、サーバー側に多種多様な機能が求められる。例えばeコマースサイトでは、商品情報を表示し、複数の商品の購入チェックボックスをチェックして、最終的に商品の決済を行う必要がある。このサービスを実装するには、対話型の処理の保障と、認証/個人情報の保護といったセキュリティ面の確保、安定性・可用性の確保といった各種要件・機能を保障する必要がある。
サーバーが高性能化したとはいえ、大規模なシステムにおいては、これらの要求に全て対処していくのは困難である。そこで、従来Webサーバーだけで処理してきた内容をWebサーバとアプリケーションサーバの2つに分離することで、より大量のトランザクション処理にも対応できる方式(3層構造システム)が実用化された。 1998年頃から本格的な製品が登場し始めている。
[編集] Webアプリケーションサーバに求められる機能
Webアプリケーションサーバは、以下のような要件を取り込むべく作成が進められ、実装されている。
- システムの拡張性と可用性
- コンシューマを対象とした電子取引商用システムなどの場合、処理要求数が非常に多く(数万件/分といったものも多い)なり、水平(サーバを増やす)/垂直(サーバを機能単位に切り分ける)方向の負荷分散を考慮する必要がある。Webアプリケーションサーバにおいては、垂直方向として認証機能とそれに付随する認証用DBをLDAPサーバとして切り分ける事が一般化している。水平方向においては、サーバの台数を動的に増やして対処し、ロードバランサ及びWebサーバの振り分け機能により1台辺りの処理要求アクセス数を調整する。
- また、処理サーバ台数を増やし、分散する事により、システムとしての可用性を確保する。
- セッション管理機能
- システムへの接続や処理リクエストが増えると、単一のWebアプリケーションサーバのみにてサービスを提供する事が不可能となる。そのため、Webアプリケーションサーバのプロセスを増やしたり、サーバ自体を増やす水平分散が必要となる。
- その際、ロードバランサのセッションパーシステンス機能により、仕掛かり中の処理が特定のアプリケーションサーバに割り当てられるが、アプリケーションサーバに異常が発生した際に、他アプリケーションサーバへ処理が引き渡される。これをセッション管理機能によって、再ログイン処理や最初からの対話処理のやり直しをおこなうのではなく、特定の位置までのロールバック処理にて情報を引き継ぎ、ユーザにストレス無く処理を続ける必要がある。
- トランザクション管理機能
- ウェブブラウザを使用する場合、当然、HTTPを用いたものとなり、トランザクションは要求―応答の単発とならざるを得ない。そのため、一連のアクセスを一貫性を持たせたトランザクションとして管理する必要が発生する。こういったトランザクションの一貫性を保持するトランザクションモニターの機能も必要となる。
- トランザクションの高速処理
- 従来のCGIと比較して、サーバーサイドJava及びスクリプティング環境ではプロセス内の処理はスレッド単位で時分割処理される。1つのプロセス内に複数のスレッドを同時に起動できるため、効率的に処理を行うことができ、必要スペックを小さく出来る。
- データベースとの接続性/応答性の確保
- ユーザの要求処理毎に、データベースとの接続とその開放を繰り返すと、大きなボトルネックになる。これを回避するため、JDBCプーリングといったDB接続を保持し、それを使い廻す機能を提供する。
- セキュリティ機能
- アプリケーションサーバとして、処理を行う上での各種セキュリティ要件が発生する。これを単にHTTPベースのセキュリティ面(SSLの採用/電子認証)だけでなく、トランザクションベースでも確保する必要がある。
- システム開発期間の短縮化
- Webアプリケーション採用の利点として、Javaなどのプログラム言語とそのフレームワークの採用による開発工程の簡易化と短縮がある。Webアプリケーションサーバでは、開発環境やプログラム群の利用環境を整備することで、それらの利点を活かせるようにしている。
[編集] 製品群
現在、Webアプリケーションサーバーは、マイクロソフト社製品とJavaベースの製品とに大別できる。特にJava Platform, Enterprise Editionの成功により、アプリケーションサーバという用語は J2EEアプリケーションサーバを示すことが多くなった。現在ではJ2EEのことをJava EEと呼ぶように呼称が変更されている。
[編集] Java EEアプリケーションサーバ
Java EEは、標準機能セットであるJava Platform, Standard Edition (Java SE)に、Webサーバに必要な各種機能を追加したもので、Javaモジュールを格納するコンテナ機能などを提供する。
Java EEアプリケーションサーバ製品上でアプリケーション動作を規定する言語として採用されているのはJava言語である。通常、WebモジュールはServletやJavaServer Pages(JSP)で構築され、Enterprise JavaBeans(EJB)として開発される。
Servletは、Webコンテナ内で実行されるJavaプログラムで、CGIスクリプトに相当する。 JSPはサーバロジックへのリファレンスを埋め込んでおくことでHTMLページを生成する方法である。 Java Beansはサン・マイクロシステムズのJava2アーキテクチャ上で、クラスの部品化及びその組み合わせ方法を規定する技術仕様である。
また、このサーブレットコンテナ上で動作させるWebアプリケーションのフレームワークとしてStruts(Apache Jakartaプロジェクト)などがある。このフレームワークにも多くの種類があり、互いに影響を与え合って、発展している。
製品名 | ベンダー | バージョン | リリース日 | Java EE対応 | ライセンス |
---|---|---|---|---|---|
Apache Geronimo | ASF | 1.0 | 2006年1月5日 | 1.4 | Apacheライセンス |
JBoss | JBoss, Inc. | 4.0.4 RC1 | 2006年2月6日 | 1.4 | LGPL |
WebSphere | IBM | 6.0.2.3 | 2005年10月28日 | 1.4 | プロプライエタリ |
BEA WebLogic | BEAシステムズ | 9.1 | 2005年3月 | 1.4 | プロプライエタリ |
Sun JSAS | サン・マイクロシステムズ | 8.2 | 2006年1月6日 | 1.4 | フリー |
Oracle AS | オラクル | 10g (10.1.3) | 2005年3月23日 | 1.4 | プロプライエタリ |
Orion | Orion | 2.0.6 | 2005年3月23日 | 1.3 | |
SAP WAS | SAP AG | 6.40 | - | 1.3 | プロプライエタリ |
WebOTX | 日本電気 | 6.1 | 2005年3月23日 | 1.4 | プロプライエタリ |
Cosminexus | 日立製作所 | 7.1 | 2006年 | 1.4 | プロプライエタリ |
Interstage | 富士通 | 7.0 | 2005年12月 | 1.4 | プロプライエタリ |
JOnAS | ObjectWeb | 4.5.3 | 2005年8月19日 | 1.4 | LGPL |
AppDev Studio | SAS Institute | 3.1.4 | 2005年3月 | 1.3 | |
Blazix | Desiderata Software | 1.2 | 2005年3月 | NO | フリー |
Borland ES | ボーランド | 2005年3月 | 1.3 | ||
ColdFusion | マクロメディア | 7.0 | 2005年3月 | 1.3 | |
Dynamo AS | ATG | 6.3 | 2005年3月 | 1.3 | |
EAServer | サイベース | 5.1.9 | 2005年3月23日 | NO | プロプライエタリ |
Enhydra | Lutris | 5.1.9 | 2005年3月23日 | NO | フリー (GPL) |
exteNd | ノベル | 5.1.9 | 2005年3月23日 | NO | フリー (GPL) |
JEUS | Tmax Soft | 5.0.0 | 2005年5月5日 | 1.4 | |
JRun | マクロメディア | 5.1.9 | 2005年3月23日 | 1.3 | フリー (GPL) |
Apusic | Kingdee | 4.0 | 2005年3月23日 | 1.4 | |
OnceAS | 中国科学院 | 2.0 | 2005年3月23日 | 1.4 | |
Pramati | Pramati | 4.1 SP1 | 2005年3月23日 | NO | フリー (GPL) |
Resin | Caucho | 3.0.12 | 2005年3月23日 | NO | Dual GPL |
Trifork | Trifork | T4 | 2005年3月23日 | 1.4 | |
WebObjects | アップルコンピュータ | 5.3.1 | 2005年11月10日 | NO | フリー |
[編集] Java EE 以外のアプリケーションサーバ
広義な意味でのアプリケーションサーバという用語は、Java EE(Java)ではなく、他の言語で記載されたアプリケーションを動作させるサーバサービスも包含する。
その最たる例として、Windows2000以降の安定性とWindowsでのユーザ認証機能を基に、多くの機能を含有した.NETフレームワークに準じたものがある。ただし、.Net連携の場合もWindowsのユーザ認証機能とそのLDAPを利用したもので、アプリケーションサーバとして採用したシステム数は非常に低く、公式なリリースも報じられていない。
また、.Netフレームワークに準じたもので、オープンソースや商用のアプリケーションサーバもある。Base4アプリケーションサーバやZopeが例として挙げられる。マイクロソフトのWindows Communication Foundationはアプリケーションサーバというよりも、通信フレームワークかミドルウェアと言うべきものである。
[編集] ポータルサイト製品
多くのポータルサイト製品は、Java EEアプリケーションサーバ製品とユーザ認証機能を提供するLDAP、さらにシングルサインオンを実現する拡張機能を連携させており、一般的なアプリケーションサーバ機構と言える。
WebSphereやOracleApplicationServer、BEA WebLogicなどの統合化された有償の商用製品では、1つのエントリポイントから、どんなデバイスからも全てのWebサービスにアクセスできるように設計されており、柔軟性に富んでいる。
[編集] 関連項目
[編集] 外部リンク
- @IT:Linuxで動くJavaアプリケーションサーバ・カタログ
- The Server Side(英語) : サーバサイド技術専門のWebサイト
- Microsoft - アプリケーションサーバーの役割
カテゴリ: Webサーバ | World Wide Web | アプリケーションソフト | 分散処理 | サーバ | ソフトウェアアーキテクチャ