(57)【要約】【課題】アプリケーションシステムの負荷を軽減させることである。【解決手段】本願発明は、サーバ装置と、該サーバ装置に通信可能に接続されるクライアント装置と、を有する分散システムであって、前記分散システム内のプレゼンテーション層及びロジック層で行うロジックを実現できる機能を有する仮想マシン技術とＶＰＮ技術を組み合わせた技術を提供する基盤を、前記サーバ装置と前記クライアント装置の両者にインストールして、前記サーバ装置上で動作する前記基盤及び前記クライアント装置上で動作する前記基盤とが連携して前記ロジックを実行する。【選択図】図１
2009064211.tif 000002
【特許請求の範囲】
【請求項１】
サーバ装置と、該サーバ装置に通信可能に接続されるクライアント装置と、を有する分散システムであって、
前記分散システム内のプレゼンテーション層及びロジック層で行うロジックを実現できる機能を有する仮想マシン技術とＶＰＮ（Virtual Private Network）技術を組み合わせた技術を提供する基盤を、前記サーバ装置と前記クライアント装置の両者にインストールして、前記サーバ装置上で動作する前記基盤及び前記クライアント装置上で動作する前記基盤とが連携して前記ロジックを実行することを特徴とする分散システム。
【請求項２】
請求項１に記載の分散システムにおいて、
前記サーバ装置上で動作する基盤は、前記サーバ装置上に通信ポートを作成し、該通信ポートを利用して前記クライアント装置上で動作する前記基盤が作成した通信ポートと通信することにより情報を交換することを特徴とする分散システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散システムに関し、特にクライアント拡張型グリッドコンピューティングシステムに関する。
【背景技術】
【０００２】
従来、Ｗｅｂ３階層モデル（Ｗｅｂ層，ＡＰ層（Application Layer），ＤＢ層（Database Layer）の３階層モデル）を用いたアプリケーションシステムには、以下のような課題があった。
【０００３】
それは、プレゼンテーション層（以下、Ｗｅｂ層）やロジック層（以下、ＡＰ層）のリソース問題であり、アプリケーションシステムへの多量のアクセスが発生した場合、システム内で相当の割合を占めるＷｅｂ層やＡＰ層の負荷が増大し、アプリケーションシステム全体の性能が劣化することである。この時、アクセスが増えれば増えるほど、その性能の劣化は顕著となり、データセンター内でのサーバ増設等では追いつかないことがしばしば発生する。
【０００４】
また、同現象の発生時は、Ｗｅｂ層やＡＰ層のサーバマシンが継続的な高負荷によりソフトウェア的又はハードウェア的な障害を誘発しやすく、障害発生によるサーバダウンが更なる高負荷状態を発生させる恐れがある。
【０００５】
例えば特許文献１は、クライアント側でサーバ側のアプリケーションを動作させているが、これはネットワークの遅延や通信切断などによる処理中断を防ぐ目的において、サーバ側アプリケーションがクライアントでエミュレートされて動くようにされているものである。
【特許文献１】特願平８−１０６８１０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記従来の技術では、基盤を用いてクライアント側からもサーバ側からもＷｅｂ層やＡＰ層が透過的に見えるものでないため、サーバ側とクライアント側のどちらかでしか稼動できないため、リソース不足への対応と可用性向上が実現していないという問題があった。
【０００７】
そこで、本発明は、上記各問題点に鑑みて為されたもので、その目的の一例は、アプリケーションシステムの負荷を軽減させることである。
【課題を解決するための手段】
【０００８】
上記の課題を解決するために、請求項１に記載の発明は、サーバ装置と、該サーバ装置に通信可能に接続されるクライアント装置と、を有する分散システムであって、前記分散システム内のプレゼンテーション層及びロジック層で行うロジックを実現できる機能を有する仮想マシン技術とＶＰＮ（Virtual Private Network）技術を組み合わせた技術を提供する基盤を、前記サーバ装置と前記クライアント装置の両者にインストールして、前記サーバ装置上で動作する前記基盤及び前記クライアント装置上で動作する前記基盤とが連携して前記ロジックを実行することを特徴とする。
【０００９】
請求項２に記載の発明は、請求項１に記載の分散システムにおいて、前記サーバ装置上で動作する前記基盤は、前記サーバ装置上に通信ポートを作成し、該通信ポートを利用して前記クライアント装置上で動作する前記基盤が作成した通信ポートと通信することにより情報を交換することを特徴とする。
【発明の効果】
【００１０】
本発明によれば、サーバ装置と、該サーバ装置に通信可能に接続されるクライアント装置と、を有する分散システムであって、当該分散システム内のプレゼンテーション層及びロジック層で行うロジックを実現できる機能を有する仮想マシン技術とＶＰＮ技術を組み合わせた技術を提供する基盤を、当該サーバ装置と当該クライアント装置の両者にインストールして、当該サーバ装置上で動作する基盤及びクライアント装置上で動作する基盤とが連携してロジックを実行することにより、分散システムの負荷を軽減させることができる。
【００１１】
また本発明によれば、リクエストが増大した場合でも、同様の割合でクライアント装置のリソースも増大するので、分散システム全体としてのリソース不足を軽減できる。従って、Ｗｅｂ３階層システムの分散システムにおけるＷｅｂ層、ＡＰ層のリソース不足を解決できる。また、分散システム内のＷｅｂ層、ＡＰ層をクライアント装置側に移動することによって、Ｗｅｂ層、ＡＰ層の障害の影響が限定的になるので、一つの仮想マシンが障害になってもそれは一つのクライアント装置内だけのことになるので、影響を局地的に抑えることができる。
【発明を実施するための最良の形態】
【００１２】
次に、本発明に好適な実施の形態について、図面に基づいて説明する。
【００１３】
本発明の実施形態を、図１乃至６に示す。
【００１４】
本発明は、仮想マシン技術とＶＰＮ（Virtual Private Network）技術を組み合わせ、それらを容易に提供する基盤を用意することによって、Ｗｅｂ層やＡＰ層のサーバマシンそのものを仮想化し、従来のアプリケーションシステム内ではなく、リモートクライアント内で実行可能にすることによって、アプリケーションシステムの負荷を軽減させる。
【００１５】
当該基盤は、それがインストールされたマシン上で稼働し、更にその中で仮想マシンを稼働させ、その中で従来Ｗｅｂ層やＡＰ層で動作していたロジックが動作する。基盤をクライアントマシンにインストールし、連携設定を行うことによって、相互がＶＰＮによって接続され、仮想マシンを基盤上で動作させることによって、負荷軽減を図る。
【００１６】
この基盤が備える機能は、以下の通りである。
1. 仮想マシン提供機能
1-1. 仮想マシン実行機能
1-1-1. 仮想マシンアプリケーションプログラム配置機能
1-1-2. 仮想マシン起動機能
1-2. 仮想マシンアクセス機能
1-2-1. リクエスト受付機能
1-2-2. レスポンス返却機能
1-2-3. 仮想マシン探索発見機能
2. 基盤間連携機能
2-1. 基盤間通信機能
2-2. 基盤間ＶＰＮ通信実現機能
2-3. 基盤内仮想マシン位置登録機能
2-4. 仮想マシン間アプリケーションプログラム再配置機能
3. 仮想マシンアプリケーションプログラム開発環境提供機能
1.の仮想マシン提供機能とは、仮想マシンに関する機能全般を示し、その中は更に仮想マシン実行機能提供機能、仮想マシンアクセス機能、仮想マシン稼動サーバ移動機能に分かれる。
【００１７】
1-1.の仮想マシン実行機能提供機能は、仮想マシンの実行に関する機能であり、その中は仮想マシンアプリケーションプログラム配置機能と仮想マシン起動機能に分かれる。
【００１８】
1-1-1.の仮想マシンアプリケーションプログラム配置機能は、開発環境で作成された、仮想マシンアプリケーションプログラムを基盤内に配置することで、仮想マシンを起動するための条件を整える機能である。仮想マシンアプリケーションプログラムの配置と削除の機能を備える。
【００１９】
1-1-2.の仮想マシン起動機能は、仮想マシンアプリケーションプログラム配置機能によって配置された仮想マシンアプリケーションプログラムを元に、仮想マシンを起動する機能である。仮想マシンの起動と停止を行う機能を備える。
【００２０】
1-2.の仮想マシンアクセス機能は、起動されている仮想マシンに対しアクセスに対する機能である。この中は更に、1-2-1.の処理のためのリクエストを受け付けるリクエスト受付機能、1-2-2.の処理結果のレスポンスを返却するレスポンス返却機能、1-2-3.の目的の仮想マシンを発見する仮想マシン探索発見機能を備える。
【００２１】
2.の基盤間連携機能とは、複数のマシンにインストールした基盤を連携設定することによって連携させる機能全般を示し、その中で更に基盤間通信機能、基盤間ＶＰＮ通信実現機能、基盤内仮想マシン位置登録機能、仮想マシン間アプリケーションプログラム再配置機能に分かれる。
【００２２】
2-1.の基盤間通信機能とは、２つの基盤間でＴＣＰ／ＩＰ等の通信手段を用い、情報をやり取りする機能である。
【００２３】
2-2.の基盤間ＶＰＮ通信機能とは、基盤間通信機能を包含する機能であり、The Internetなどの信頼性の低い通信経路上でも安全な通信を行うために、暗号化トンネリングを用いて安全性を確保した通信を保証する機能であり、この上で基盤間通信機能が動作する。
【００２４】
2-3.の仮想マシン位置登録機能とは、連携設定された基盤群の中で、どの仮想マシンがどの基盤上で動いているかを一覧として登録しておく機能であり、各基盤は独自に所持するが、その情報は常時連携基盤群の中で交換され、同期を取るものとする。
【００２５】
2-4.の仮想マシン間アプリケーションプログラム再配置機能とは、必要に応じてある基盤上に配置された仮想マシンアプリケーションプログラムを、別のマシン上でも配置状態にすることができる機能である。
【００２６】
3.の仮想マシンアプリケーションプログラム開発環境提供機能とは、仮想マシン用アプリケーションプログラムを開発するための開発環境を提供する機能である。
【００２７】
なお、ここでいう仮想マシンは、通常のコンピュータ全てを仮想化する必要は無く、Ｗｅｂ層、ＡＰ層で行うロジックを実現できる機能だけでよい。むしろ、The Internet上などを、ＶＰＮを通じて移動することを想定しているので、できるだけ機能を最小にし、仮想マシン自体のサイズを小さくする必要がある。
【００２８】
利用者は、クライアントマシンからこの仮想マシン上で動作するＷｅｂ層、ＡＰ層のロジックにアクセスするが、その際は直接仮想マシンにアクセスするのではなく、基盤を通じてアクセスを行う。利用者からのアクセスを、基盤を通じて行うことによって、仮想マシンがどこで動作しているかは関係なくロジックの処理が行われるようにする。
【００２９】
仮想マシンアクセス機能の動作を、図１に示す。
【００３０】
利用者は、開発環境上で仮想マシンアプリケーションプログラムを開発し、サーバマシン上でプロセスとして動作している基盤に対して、配置（１）を行う。配置されたアプリケーションプログラムは、同基盤上で起動して実行することができる（２）。
【００３１】
基盤上に配置されたアプリケーションプログラムは、仮想マシン間アプリケーションプログラム再配置機能を用いて、連携設定された別の基盤上に再配置することができる（３）。
【００３２】
基盤間連携機能の動作を、図２及び３に示す。
【００３３】
図２は、基盤間通信機能の動作であり、サーバマシン上で動作する基盤はサーバマシン上に通信ポートを作成し、それを利用して別の基盤が作成した通信ポートと通信して情報を交換する。この時、他方が利用するマシンのＩＰアドレスやポートなどの情報は、連携設定によって与えられるものとする。
【００３４】
図３は、基盤間ＶＰＮ通信実現機能の動作であり、この機能は、暗号化通信経路をまず作成し、その中に基盤間通信機能をトンネリングすることによって安全な通信路を保証する機能である。暗号化の具体的な方式は、実装によって変化する。
【００３５】
図４は、本実施形態の概要構成図である。
【００３６】
アプリケーションの利用者が使用するクライアントマシン１００（クライアント装置の一例）があり、その中で利用者が操作するＷｅｂブラウザ等のクライアント１０が動作する。
【００３７】
クライアントマシン１００上では、基盤５０（基盤の一例）がインストールされている。
【００３８】
アプリケーションを提供する側は、アプリケーションシステム（分散システムの一例）を動作させる環境としてデータセンター２００があり、その中ではサーバマシン１１０（サーバ装置の一例）、データ層３０が存在する。
【００３９】
サーバマシン１１０上では、基盤５１（基盤の一例）がインストールされており、クライアントマシン１００上の基盤５０も含めて全て連携設定が行われている。
【００４０】
クライアントマシン１００とデータセンター２００間の通信は、The Internet等のネットワーク３００を通じて行われ、連携設定された基盤間通信は、基盤の機能の一部であるＶＰＮ４００を通じて行われる。
【００４１】
アプリケーションシステムのＷｅｂ層、ＡＰ層のロジックを行う仮想マシンとして仮想マシン２０が存在し、これは連携設定された基盤のうち任意のマシンで動作することでアプリケーションシステムは正常動作するが、本実施形態ではクライアントマシン１００上の基盤５０内で動作するものとする。
【００４２】
クライアント１０は、アプリケーションへのアクセスを基盤５０に対して行うが、その際、基盤は仮想マシン２０がどこで動作しているかを判断し、ロジックの実行を仮想マシンに委譲する。
【００４３】
仮想マシンは、ロジックを終えたら、必要に応じてデータ層にアクセスし、結果を基盤に５０に返す。
【００４４】
基盤５０は、結果をクライアント１０に返して動作が終了する。
【００４５】
次に本実施形態の動作の説明をする。
【００４６】
初めてリクエストを受けた場合の本実施形態の動作を、図５に示す。
【００４７】
クライアント１０から発生した仮想マシン名、依頼処理内容、パラメータを含んだｈｔｔｐを用いたリクエストは、同マシン上でプロセスとして動作する基盤が構築した通信ポートによって受け付けられる。
【００４８】
受け付けたリクエストは、窓口であるリクエスト受付機能によって一次処理され、まず仮想マシン発見機能に目的の仮想マシンの位置を問い合せる（２）。
【００４９】
連携設定によって同期済みの仮想マシン位置情報を元に、目的の仮想マシンが基盤５１上にあることが判明するので、基盤間通信機能・基盤間ＶＰＮ通信実現機能により、基盤５０と基盤５１が通信し、基盤５１上の仮想マシンアプリケーションプログラムを仮想マシン５０上の仮想マシン実行機能上に再配置し、起動を行う（４）。
【００５０】
リクエスト受付後の処理とレスポンス返却についての本実施形態の動作を、図６に示す。
【００５１】
リクエストを処理すべき仮想マシンが図５の動作によって判明したので、仮想マシン２０に対して処理の依頼を行う（１）。
【００５２】
処理は、データ層に対してデータの書込みと読出しが必要と分かったので、仮想マシンは、まず窓口を通して基盤間通信機能・基盤間実現機能を経由し、基盤５１と通信し（２）、基盤５１経由でデータ層とやり取りする（３）。この時、データ層は、仮想マシンがどこに存在するかは意識せず、あくまで基盤５１が仮想マシンであるかのように動作する。
【００５３】
このようにして処理を終了し、最終的に処理結果と結果データを含んだレスポンスを基盤５０が返却する（４）。
【００５４】
本実施形態によれば、サーバマシン１１０と、サーバマシン１１０に通信可能に接続されるクライアントマシン１００と、を有するアプリケーションシステムであって、アプリケーションシステム内のＷｅｂ層、ＡＰ層で行うロジックを実現できる機能を有する仮想マシン技術とＶＰＮ技術を組み合わせた技術を提供する基盤５０及び５１を、サーバマシン１１０とクライアントマシン１００の両者にインストールして、サーバマシン１１０上で動作する基盤５１及びクライアントマシン１００上で動作する基盤５０とが連携してロジックを実行するので、アプリケーションシステムの負荷を軽減させることができる。
【００５５】
また、リクエストが増大した場合でも、同様の割合でクライアントマシン１００のリソースも増大するので、アプリケーションシステム全体としてのリソース不足を軽減できる。従って、Ｗｅｂ３階層システムのアプリケーションシステムにおけるＷｅｂ層、ＡＰ層のリソース不足を解決できる。また、アプリケーションシステム内のＷｅｂ層、ＡＰ層をクライアントマシン１００側に移動することによって、Ｗｅｂ層、ＡＰ層の障害の影響が限定的になるので、一つの仮想マシンが障害になってもそれは一つのクライアントマシン１００内だけのことになるので、影響を局地的に抑えることができる。
【００５６】
更に、基盤５０及び５１を用いて、クライアントマシン１００側からもサーバマシン１１０側からも透過的にＷｅｂ層及びＡＰ層が見えるものであるため、サーバマシン１１０側とクライアントマシン１００側のどちらでも稼動できるようにしたことで、リソース不足への対応と可用性向上を実現できる。
【００５７】
本発明は以上説明したように構成されるが、上記実施形態に限定されるものではなく、本発明の要旨の範囲内において種々変更可能である。
【図面の簡単な説明】
【００５８】
【図１】仮想マシンアクセス機能の動作を示す図である。
【図２】基盤間通信機能の動作を示す図である。
【図３】基盤間ＶＰＮ通信実現機能の動作を示す図である。
【図４】本実施形態の概要構成図を示す図である。
【図５】初めてリクエストを受けた場合の本実施形態の動作を示す図である。
【図６】リクエスト受付後の処理とレスポンス返却についての本実施形態の動作を示す図である。
【符号の説明】
【００５９】
１０        クライアント
２０        仮想マシン
３０        データ層
５０、５１  基盤
１００      クライアントマシン（クライアント装置の一例）
１１０      サーバマシン（サーバ装置の一例）
２００      データセンター
３００      ネットワーク
４００      ＶＰＮ
【図１】
2009064211.tif 000003
【図２】
2009064211.tif 000004
【図３】
2009064211.tif 000005
【図４】
2009064211.tif 000006
【図５】
2009064211.tif 000007
【図６】
2009064211.tif 000008