「アプリケーションサーバ」の版間の差分

出典: フリー百科事典『ウィキペディア(Wikipedia)』
削除された内容 追加された内容
Sanchaman (会話 | 投稿記録)
Sanchaman (会話 | 投稿記録)
m 整理しました。
1行目: 1行目:
'''アプリケーションサーバ'''(Application Server)は、決められた[[アプリケーションソフトウェア]]を実行することを専門とする[[コンピュータ・ネットワーク]]上の[[サーバ]][[コンピュータ]]である。この用語また、そのようなコンピュータ上でのアプリケーションの実行を管理補助するソフトウェアを意味する場合もある。'''Webアプリケーションサーバ'''とは、[[Web]]を使用した各種システムにおいて、ビジネスロジックなどの[[アプリケーション]]部分を提供する[[サーバ]][[コンピュータ]]もしくは[[ミドルウェア]]のこと。サービス[[プログラム]]群とその動作に必要な各種機能を提供する
'''アプリケーションサーバ'''(Application Server)及び、'''Webアプリケーションサーバ'''(Web Application Server)は、ビジネスロジックなどの[[アプリケーションソフトウェア]]を実行することを専門とする[[コンピュータ・ネットワーク]]上の[[サーバ]][[コンピュータ]]もしくはそのようなコンピュータ上でのアプリケーションの実行を管理補助する[[ミドルウェア]]のこと。


アプリケーションサーバと呼ぶ場合、マイクロソフトによるCitrix WinFrameや.Net(ドットネット)に準じた独自のものも含むが、一般にはJ2EEを採用したWebアプリケーションサーバを指す。
多くの場合、Web[[クライアント]]からの[[HTTP]]のレスポンス要求を処理する[[Webサーバ]]とバックエンドの[[RDBMS]]を中心とするDB中核層への橋渡しを担い、データの加工などの処理を行う。


Webアプリケーションサーバは、Web[[クライアント]]からの[[HTTP]]のレスポンス要求を処理する[[Webサーバ]]とバックエンドの[[RDBMS]]を中心とするDB中核層への橋渡しを担い、データの加工などの処理を行う。
なお、アプリケーションサーバを狭義なWebアプリケーションサーバ機能を前提として使用する場合、一般にJ2EEを採用したものを指すが、広義のアプリケーションサーバと呼ぶ場合、マイクロソフトによるCitrix WinFrameや.Net(ドットネット)に準じた独自のものも含む。
ただし、システムに携わるエンジニアやコンサルタントが、単にアプリケーションサーバと言った場合、一般的には狭義の(Web)アプリケーションサーバを指す。


== 概要 ==
== 概要 ==

2006年9月2日 (土) 02:52時点における版

アプリケーションサーバ(Application Server)及び、Webアプリケーションサーバ(Web Application Server)は、ビジネスロジックなどのアプリケーションソフトウェアを実行することを専門とするコンピュータ・ネットワーク上のサーバコンピュータもしくはそのようなコンピュータ上でのアプリケーションの実行を管理補助するミドルウェアのこと。

アプリケーションサーバと呼ぶ場合、マイクロソフトによるCitrix WinFrameや.Net(ドットネット)に準じた独自のものも含むが、一般にはJ2EEを採用したWebアプリケーションサーバを指す。

Webアプリケーションサーバは、WebクライアントからのHTTPのレスポンス要求を処理するWebサーバとバックエンドのRDBMSを中心とするDB中核層への橋渡しを担い、データの加工などの処理を行う。

概要

Webアプリケーションサーバの基本的な機能は、以下の3つ。

  • プログラムの実行環境やデータベースへの接続機能の提供
  • 複数の処理を連結するトランザクション管理機能
  • 業務の処理の流れを制御するビジネスロジックの実装

である。この3つの機能以外に、各ベンダによる機能強化が行われている事も多い。

なお、Webアプリケーションサーバの機能についての厳密な定義は存在しない。

Web3層構成

一般的なWebシステムの多くは『Web3層構成』と呼ばれる構成にて設計されている事が多い。このWeb3層設計は、以下の3つの層で構成されている。

  • WebブラウザからのHTTPによるアクセス要求を分散処理するWebサーバ層
  • HTTPトランザクションの一貫性を保持し、システム固有の処理を行い、バックエンドで動作するデータベースなどの検索/加工処理などを司るWebアプリケーション層
  • システムのデータや管理情報を司るデータベース層

Webシステムをそれぞれ3つの層に実装を分け垂直分散したことで、それぞれの層単位でスケールアウト(サーバの増設で処理性能を向上できること)が可能となり、拡張性やコストパフォーマンスも大きく向上している。

一般に、3階層システムは、クライアントやバックエンド側にビジネスロジックを実装する方式(2階層システム)に比べ、システムの変更や更新、増強などが容易で、柔軟性が高いシステム構成といわれている。特にDB層とアプリケーション層を切り分けたことで、2層システムなどであったシステム更改の際の「高価な基幹データベース自体やそのサーバの必要諸元の変更にあわせて買い換えなければならない」といった悩みが解消されることになった。

歴史

1990年代前半のクライアントサーバベースのシステムでは、クライアント側を専用端末とし、各種機能を用意するリッチクライアント型のシステム構築が主流であった。これは、データベースなどを含むサーバーが非常に高価であり、変更(買い換え)が容易でなかったことによる。 そのため、業務プロセスが変わったら、端末側のプログラムを入れ替え、更新する必要があったが、多くの場合、利用者は社内の人間などに限られていたため大きな問題とはならなかった。

1990年代後半に、インターネットが普及をはじめると、Webブラウザを用いた電子商取引などのニーズが広がってくる。Webでは、サービスの対象者が不特定多数になることが多く、システムの変更にあわせて利用者全てのの環境を更新することは事実上不可能である。そこで、サーバサイドに業務プロセスなど各種アプリケーションを用意することが求められるようになった。 アプリケーションのクライアントからサーバへのシフトは、サーバサイドコンピュータの高性能化(UNIXサーバなどに代表される比較的安価で高性能なサーバの登場)とネットワークの高速化、Javaなどのプログラム言語の処理高速化技術等の進展などにより可能となった。1990年代後半には、Webブラウザをクライアントとして使用し、様々な処理をサーバー側で行うシステムが一般化している。

インターネットを利用したクライアントサーバーシステムでは、サーバー側に多種多様な機能が求められる。例えばeコマースサイトでは、商品情報を表示し、複数の商品の購入チェックボックスをチェックして、最終的に商品の決済を行うには、対話型の処理と、認証/個人情報の保護といったセキュリティ面の確保、安定性・可用性の確保といった各種要件・機能を保障する必要がある。

サーバーが高性能化したとはいえ、大規模なシステムにおいては、これらの要求に全て対処していくのは困難である。そこで、従来Webサーバーだけで処理してきた内容をWebサーバーとWebアプリケーションサーバーの2つに分離することで、より大量のトランザクション処理にも対応できる方式(3層構造システム)が実用化された。 1998年頃から本格的な製品が登場し始めている。

Webアプリケーションサーバに求められる機能

Webアプリケーションサーバは、以下のような要件を取り込むべく作成が進められ、実装されている。

システムの拡張性と可用性
コンシューマを対象とした電子取引商用システムなどの場合、処理要求数が非常に多く(数万件/分といったものも多い)なり、水平(サーバを増やす)/垂直(サーバを機能単位に切り分ける)方向の負荷分散を考慮する必要がある。Webアプリケーションサーバにおいては、垂直方向として認証機能とそれに付随する認証用DBをLDAPサーバとして切り分ける事が一般化している。水平方向においては、サーバの台数を動的に増やして対処し、ロードバランサ及びWebサーバの振り分け機能により1台辺りの処理要求アクセス数を調整する。
また、処理サーバ台数を増やす事により、システムとしての可用性を確保する。
トランザクションの高速処理
従来のCGIと比較して、サーバーサイドJava及びスクリプティング環境ではプロセス内の処理はスレッド単位で時分割処理される。1つのプロセス内に複数のスレッドを同時に起動できるため、効率的に処理を行うことができ、必要スペックを小さく出来る。
トランザクション管理の必要性
Webブラウザを使用する場合、当然、HTTPを用いたものとなり、トランザクションは要求―応答の単発とならざるを得ない。そのため、一連のアクセスを一貫性を持たせたトランザクションとして管理する必要が発生する。こういったトランザクションの一貫性を保持するトランザクションモニターの機能も必要となる。
セッション管理の必要性
システムへの接続や処理リクエストが増えると、単一のWebアプリケーションサーバのみにてサービスを提供する事が不可能となる。そのため、Webアプリケーションサーバのプロセスを増やしたり、サーバ自体を増やす水平分散が必要となる。
その際、ロードバランサのセッションパーシステンス機能により、仕掛かり中の処理が特定のアプリケーションサーバに割り当てられるが、アプリケーションサーバに異常が発生した際に、他アプリケーションサーバへ処理が引き渡される。これをセッション管理機能によって、再ログイン処理や最初からの対話処理のやり直しをおこなうのではなく、特定の位置までのロールバック処理にて情報を引き継ぎ、ユーザにストレス無く処理を続ける必要がある。
データベースとの接続性/応答性の確保
ユーザの要求処理毎に、データベースとの接続とその開放を繰り返すと、大きなボトルネックになる。これを回避するため、JDBCプーリングといったDB接続を保持し、それを使い廻す機能を提供する。
セキュリティ機能
アプリケーションサーバとして、処理を行う上での各種セキュリティ要件が発生する。これを単にHTTPベースのセキュリティ面(SSLの採用/電子認証)だけでなく、トランザクションベースでも確保する必要がある。
システム開発期間の短縮化
Webアプリケーション採用の利点として、Javaなどのプログラム言語とそのフレームワークの採用による開発工程の簡易化と短縮がある。Webアプリケーションサーバでは、開発環境やプログラム群の利用環境を整備することで、それらの利点を活かせるようにしている。

製品群

現在、Webアプリケーションサーバーは、マイクロソフト社製品とJavaベースの製品とに大別できる。特にJava platform Enterprise Editionの成功により、アプリケーションサーバという用語は J2EEアプリケーションサーバを示すことが多くなった。

J2EEアプリケーションサーバ

J2EEアプリケーションサーバ製品上でのアプリケーション動作を規定する言語として採用しているのはJava言語である。WebモジュールはServletJavaServer Pages(JSP)で構築され、ビジネスロジックはEnterprise JavaBeans(EJB)で開発さている。J2EEはWebコンポーネントも含めた標準とJavaによるモジュールを格納するコンテナ機能を提供する。

Servletは、Webコンテナ内で実行されるJavaプログラムで、CGIスクリプトに相当する。JSPはサーバロジックへのリファレンスを埋め込んでおくことでHTMLページを生成する方法である。HTMLを使う人やJavaプログラマは、並んで作業して互いのコードを見ながら作業することになる。Java Beansサン・マイクロシステムズのJava2アーキテクチャ上の独立なクラスコンポーネントである。

また、このサーブレットコンテナ上で動作させるWebアプリケーションのフレームワークとしてStruts(Apache Jakartaプロジェク)などがある。このフレームワークにも多くの種類があり、互いに影響を与え合って、発展している。

製品名 ベンダー バージョン リリース日 J2EE対応 ライセンス
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.3 プロプライエタリ
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 日立製作所 2005年3月 1.3 プロプライエタリ
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 フリー (GPL)
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 フリー

J2EE 以外のアプリケーションサーバ

広義な意味でのアプリケーションサーバという用語は、J2EE(Java)ではなく、他の言語で記載されたアプリケーションを動作させるサーバサービスも包含する。

その最たる例として、Windows2000以降の安定性とWindowsでのユーザ認証機能を基に、多くの機能を含有した.NETフレームワークに準じたものがある。ただし、.Net連携の場合もWindowsのユーザ認証機能とそのLDAPを利用したもので、アプリケーションサーバとして採用したシステム数は非常に低く、公式なリリースも報じられていない。

また、.Netフレームワークに準じたもので、オープンソースや商用のアプリケーションサーバもある。Base4アプリケーションサーバZopeが例として挙げられる。マイクロソフトのWindows Communication Foundationはアプリケーションサーバというよりも、通信フレームワークかミドルウェアと言うべきものである。

ポータルサイト

ポータルサイトは、組織が情報を管理することができる非常に一般的なアプリケーションサーバ機構と言える。ポータルサイトは1つのエントリポイントから全てを提供する。どんなデバイスからも透過的にWebサービスにアクセスでき、非常に柔軟性に富んでいる。ポータルサイトは組織の内部向けにも外部向けにも提供される。

多くのポータルサイト製品は、J2EEアプリケーションサーバ製品とユーザ認証機能を提供するLDAP、さらにシングルサインオンを実現する拡張機能を連携させたもので、WebSphereやOracleApplicationServer、BEA WebLogicなどの統合化された有償の商用製品によって提供されている。

Webシステムの分散処理

また、Webサーバにアプレットを置き、それをクライアント側にて自動ダウンロードさせ、アプレットとサーブレットでの処理分散を図る事も多い。 この場合、Javaに拘らずWindows系の.NetやActiveXでのスクリプティングを利用する事もあるが、統一したスクリプトを使用しないがためのセキュリティの脆弱性や問題点を抱え込むことが多く、一般的ではない。

関連項目

外部リンク