コンテンツにスキップ

英文维基 | 中文维基 | 日文维基 | 草榴社区

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

出典: フリー百科事典『ウィキペディア(Wikipedia)』
削除された内容 追加された内容
Windchime (会話 | 投稿記録)
Melan (会話 | 投稿記録)
Webアプリケーションサーバ 2006年8月30日 (水) 16:29 (UTC) を統合
256行目: 256行目:
[[sv:Applikationsserver]]
[[sv:Applikationsserver]]
[[vi:Máy chủ cho chương trình ứng dụng]]
[[vi:Máy chủ cho chương trình ứng dụng]]

----
'''Webアプリケーションサーバ'''とは、[[Web]]を使用した各種システムにおいて、ビジネスロジックなどの[[アプリケーション]]部分を提供する[[サーバ]][[コンピュータ]]もしくは[[ミドルウェア]]のこと。サービス[[プログラム]]群とその動作に必要な各種機能を提供する。

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

なお、アプリケーションサーバを狭義なWebアプリケーションサーバ機能を前提として使用する場合、一般にJ2EEを採用したものを指すが、広義のアプリケーションサーバと呼ぶ場合、マイクロソフトによるCitrix WinFrameや.Net(ドットネット)に準じた独自のものも含む。
ただし、システムに携わるエンジニアやコンサルタントが、単にアプリケーションサーバと言った場合、一般的には狭義の(Web)アプリケーションサーバを指す。

== 概要 ==
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ベースの製品とに大別できる。特に[[J2EE|Java platform Enterprise Edition]]の成功により、'''アプリケーションサーバ'''という用語は ''J2EEアプリケーションサーバ''を示すことが多くなった。

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

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

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

{|class="wikitable"
|- bgcolor="#efefef"
! 製品名
! ベンダー
! バージョン
! リリース日
! J2EE対応
! ライセンス
|-
! [[Geronimo]]
|align="Center"| [[Apacheソフトウェア財団|ASF]]
|align="Center"| 1.0
|align="Center"| 2006年1月5日
|align="Center"| 1.4
|align="Center"| Apacheライセンス
|-
! [[JBoss]]
|align="Center"| JBoss, Inc.
|align="Center"| 4.0.4 RC1
|align="Center"| 2006年2月6日
|align="Center"| 1.4
|align="Center"| LGPL
|-
! WebSphere
|align="Center"| [[IBM]]
|align="Center"| 6.0.2.3
|align="Center"| 2005年10月28日
|align="Center"| 1.4
|align="Center"| プロプライエタリ
|-
! BEA WebLogic
|align="Center"| [[BEAシステムズ]]
|align="Center"| 9.1
|align="Center"| 2005年3月
|align="Center"| 1.4
|align="Center"| プロプライエタリ
|-
! Sun JSAS
|align="Center"| [[サン・マイクロシステムズ]]
|align="Center"| 8.2
|align="Center"| 2006年1月6日
|align="Center"| 1.4
|align="Center"| フリー
|-
! Oracle AS
|align="Center"| [[オラクル]]
|align="Center"| 10g (10.1.3)
|align="Center"| 2005年3月23日
|align="Center"| 1.3
|align="Center"| [[プロプライエタリ]]
|-
! Orion
|align="Center"| Orion
|align="Center"| 2.0.6
|align="Center"| 2005年3月23日
|align="Center"| 1.3
|align="Center"|
|-
! SAP WAS
|align="Center"| [[SAPジャパン|SAP AG]]
|align="Center"| 6.40
|align="Center"| -
|align="Center"| 1.3
|align="Center"| [[プロプライエタリ]]
|-
! WebOTX
|align="Center"| [[日本電気]]
|align="Center"| 6.1
|align="Center"| 2005年3月23日
|align="Center"| 1.4
|align="Center"| [[プロプライエタリ]]
|-
! Cosminexus
|align="Center"| [[日立製作所]]
|align="Center"|
|align="Center"| 2005年3月
|align="Center"| 1.3
|align="Center"| [[プロプライエタリ]]
|-
! Interstage
|align="Center"| [[富士通]]
|align="Center"| 7.0
|align="Center"| 2005年12月
|align="Center"| 1.4
|align="Center"| [[プロプライエタリ]]
|-
! JOnAS
|align="Center"| ObjectWeb
|align="Center"| 4.5.3
|align="Center"| 2005年8月19日
|align="Center"| 1.4
|align="Center"| LGPL
|-
! AppDev Studio
|align="Center"| [[SAS Institute]]
|align="Center"| 3.1.4
|align="Center"| 2005年3月
|align="Center"| 1.3
|align="Center"|
|-
! Blazix
|align="Center"| Desiderata Software
|align="Center"| 1.2
|align="Center"| 2005年3月
|align="Center"| NO
|align="Center"| フリー
|-
! Borland ES
|align="Center"| [[ボーランド]]
|align="Center"|
|align="Center"| 2005年3月
|align="Center"| 1.3
|align="Center"|
|-
! ColdFusion
|align="Center"| [[マクロメディア]]
|align="Center"| 7.0
|align="Center"| 2005年3月
|align="Center"| 1.3
|align="Center"|
|-
! Dynamo AS
|align="Center"| ATG
|align="Center"| 6.3
|align="Center"| 2005年3月
|align="Center"| 1.3
|align="Center"|
|-
! EAServer
|align="Center"| サイベース
|align="Center"| 5.1.9
|align="Center"| 2005年3月23日
|align="Center"| NO
|align="Center"| フリー (GPL)
|-
! Enhydra
|align="Center"| Lutris
|align="Center"| 5.1.9
|align="Center"| 2005年3月23日
|align="Center"| NO
|align="Center"| フリー (GPL)
|-
! exteNd
|align="Center"| [[ノベル (企業)|ノベル]]
|align="Center"| 5.1.9
|align="Center"| 2005年3月23日
|align="Center"| NO
|align="Center"| フリー (GPL)
|-
! JEUS
|align="Center"| Tmax Soft
|align="Center"| 5.0.0
|align="Center"| 2005年5月5日
|align="Center"| 1.4
|align="Center"|
|-
! JRun
|align="Center"| [[マクロメディア]]
|align="Center"| 5.1.9
|align="Center"| 2005年3月23日
|align="Center"| 1.3
|align="Center"| フリー (GPL)
|-
! Apusic
|align="Center"| Kingdee
|align="Center"| 4.0
|align="Center"| 2005年3月23日
|align="Center"| 1.4
|align="Center"|
|-
! OnceAS
|align="Center"| [[中国科学院]]
|align="Center"| 2.0
|align="Center"| 2005年3月23日
|align="Center"| 1.4
|align="Center"|
|-
! Pramati
|align="Center"| Pramati
|align="Center"| 4.1 SP1
|align="Center"| 2005年3月23日
|align="Center"| NO
|align="Center"| フリー (GPL)
|-
! Resin
|align="Center"| Caucho
|align="Center"| 3.0.12
|align="Center"| 2005年3月23日
|align="Center"| NO
|align="Center"| Dual GPL
|-
! Trifork
|align="Center"| Trifork
|align="Center"| T4
|align="Center"| 2005年3月23日
|align="Center"| 1.4
|align="Center"|
|-
! [[WebObjects]]
|align="Center"| [[アップルコンピュータ]]
|align="Center"| 5.3.1
|align="Center"| 2005年11月10日
|align="Center"| NO
|align="Center"| フリー
|-
|}

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

その最たる例として、[[Windows]]2000以降の安定性と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でのスクリプティングを利用する事もあるが、統一したスクリプトを使用しないがためのセキュリティの脆弱性や問題点を抱え込むことが多く、一般的ではない。

==関連項目==
* [[クライアントサーバモデル]]
* [[コンテンツマネジメントシステム]]
* [[Webブラウザ]]
* [[Java]]
* [[Webサーバ]]
* [[HTTP]]
* [[UNIX]]
* [[Windows]]

==外部リンク==
*[http://www.atmarkit.co.jp/flinux/special/ctl_as/javaas01.html @IT:Linuxで動くJavaアプリケーションサーバ・カタログ]
*[http://www.theserverside.com The Server Side(英語)] : サーバサイド技術専門のWebサイト
*[http://www.microsoft.com/japan/technet/prodtechnol/windowsserver2003/serverroles/appserver/default.mspx Microsoft - アプリケーションサーバーの役割]

== 注記 ==
<references/>

[[Category:Webサーバ|*]]
[[Category:サーバ]]
[[category:World Wide Web]]
[[Category:アプリケーションソフト]]
[[Category:分散処理|うぇふあふりけいしおんさあは]]
[[Category:サーバ|うぇふあふりけいしおんさあは]]


<!--
[[de:Application Server]]
[[en:Application server]]
[[es:Servidor de aplicaciones]]
[[fr:Serveur d'applications]]
[[it:Application server]]
[[nl:Applicatieserver]]
[[pl:Serwer aplikacji]]
[[pt:Servidor de aplicação]]
[[ru:Сервер приложений]]
[[sv:Applikationsserver]]
[[vi:Máy chủ cho chương trình ứng dụng]]
-->
{{comp-stub}}

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

アプリケーションサーバ(Application Server)は、決められたアプリケーションソフトウェアを実行することを専門とするコンピュータ・ネットワーク上のサーバコンピュータである。 この用語はまた、そのようなコンピュータ上でのアプリケーションの実行を管理補助するソフトウェアを意味する場合もある。

シン・クライアントとアプリケーションサーバ

1990年代後半、アプリケーションを一箇所に集めて、デスクトップPCを軽量なネットワーク・コンピュータに置き換えるという大規模なシフトがあるとの見方が強まった時期がある。これは、大型で高価な中央コンピュータに複数のユーザーがダム端末でアクセスするという1960年代の古いコンピューティングモデルへの回帰である。違いは、グラフィカルユーザインターフェース(GUI)が広く採用されている点である。Citrix WinFrameなどの製品は非常に人気を呼び、標準のWindowsソフトウェアをNTサーバー上で動作させ、様々なクライアント(中にはWindowsマシンではないMacintoshUNIXマシンもある)からサーバにアクセスする形態が生まれた。しかし、今のところこれは予測されたほど広まらず、ネットワークを経由したGUIベースアプリケーションには数々の技術的問題点がある。しかし、この動きが一時の流行だったのかを判断するのはまだ早いだろう。

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

Java platformの成功により、アプリケーションサーバという用語は J2EEアプリケーションサーバを示すことが多くなった。WebSphere(IBM)やWebLogic(BEA)などがJ2EEアプリケーションサーバとして有名である。ObjectWebコンソーシアムが開発したJOnAS アプリケーションサーバはオープンソースのアプリケーションサーバとしては世界で初めて J2EE の認証試験に合格した。これらが言語として採用しているのはJava言語である。WebモジュールはServletJavaServer Pages(JSP)で構築され、ビジネスロジックはEnterprise JavaBeans(EJB)で開発される。そしてJ2EEはWebコンポーネントも含めた標準を提供する。Apacheソフトウェア財団Tomcatや ObjectWebの JOnASはそういったモジュールを格納するコンテナとなる。どちらの団体もコードを無料で誰にでも提供している(オープンソース)。

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

製品名 ベンダー バージョン リリース日 J2EE対応 ライセンス
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
Cosminexus 日立製作所 2005年3月 1.3
Interstage 富士通 7.0 2005年12月 1.4
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 Free (GPL)
Geronimo ASF 1.0 2006年1月5日 1.4 Apacheライセンス
Sun JSAS サン・マイクロシステムズ 8.2 2006年1月6日 1.4 フリー
JBoss JBoss, Inc. 4.0.4 RC1 2006年2月6日 1.4 LGPL
JEUS] Tmax Soft 5.0.0 2005年5月5日 1.4
JOnAS ObjectWeb 4.5.3 2005年8月19日 1.4 LGPL
JRun マクロメディア 5.1.9 2005年3月23日 1.3
Apusic Kingdee 4.0 2005年3月23日 1.4
OnceAS 中国科学院 2.0 2005年3月23日 1.4
Oracle AS オラクル 10g (10.1.3) 2005年3月23日 1.3
Orion Orion 2.0.6 2005年3月23日 1.3
Pramati Pramati 4.1 SP1 2005年3月23日 NO フリー (GPL)
Resin Caucho 3.0.12 2005年3月23日 NO Dual GPL
SAP WAS SAP AG 6.40 - 1.3 プロプライエタリ
Trifork Trifork T4 2005年3月23日 1.4
WebLogic BEAシステムズ 9.1 2005年3月 1.4 プロプライエタリ
WebObjects アップルコンピュータ 5.3.1 2005年11月10日 NO フリー
WebOTX 日本電気 6.1 2005年3月23日 1.4
WebSphere IBM 6.0.2.3 2005年10月28日 1.4 プロプライエタリ

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

アプリケーションサーバという用語は、J2EEとは関係ない(Javaとも関係ない)様々なものにも使われる。例えば、.NETの人気の高まりにより、マイクロソフトもアプリケーションサーバを提供していると主張している。他のオープンソースや商用のものもある。Base4アプリケーションサーバZopeが例として挙げられる。マイクロソフトのWindows Communication Foundationはアプリケーションサーバというよりも、通信フレームワークかミドルウェアと言うべきものである。

アプリケーションサーバ製品は、信頼性、セキュリティ、否認防止など様々な要求に答えつつアプリケーション相互の通信を可能とするためにミドルウェアをバンドルすることが多い。また、プログラマのためのAPIを提供し、オペレーティングシステムや数々のアプリケーション用インターフェースのことで悩むことなくシステムを構築できるようにしている。アプリケーションサーバは、HTMLやXMLの形式のWebと通信し、様々なデータベースとリンクし、莫大で切り替えられない古いアプリケーションや時計や家庭用機器のような小型情報機器とさえリンクする必要がある。

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

異なった用法

この用語は以下の領域でも専門用語として広く使われる。

  • 分散処理 - 分散された計算タスクの一部を実行しているコンピュータのことをアプリケーションサーバと呼ぶ。
  • ソフトウェアコンポーネント - 「コンポーネントファーム」のこと。すなわち、呼び出しに答えるためのソフトウェアコンポーネントを詰め込んだコンピュータである。
  • Webサービス - HTTPXML上でインタフェースコールに答えるアプリケーションを実行しているマシンを示す。

関連項目

外部リンク


Webアプリケーションサーバとは、Webを使用した各種システムにおいて、ビジネスロジックなどのアプリケーション部分を提供するサーバコンピュータもしくはミドルウェアのこと。サービスプログラム群とその動作に必要な各種機能を提供する。

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

なお、アプリケーションサーバを狭義なWebアプリケーションサーバ機能を前提として使用する場合、一般にJ2EEを採用したものを指すが、広義のアプリケーションサーバと呼ぶ場合、マイクロソフトによるCitrix WinFrameや.Net(ドットネット)に準じた独自のものも含む。 ただし、システムに携わるエンジニアやコンサルタントが、単にアプリケーションサーバと言った場合、一般的には狭義の(Web)アプリケーションサーバを指す。

概要

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でのスクリプティングを利用する事もあるが、統一したスクリプトを使用しないがためのセキュリティの脆弱性や問題点を抱え込むことが多く、一般的ではない。

関連項目

外部リンク

注記