説明

アプリケーションサービス提供システム、及び方法、並びにアプリケーション移行方法

【課題】システムの可用性を維持しつつ、複数のアプリケーションサーバ間のメンテナンスを容易とすること。
【解決手段】プロキシプロセス21からプロキシプロセス11へアプリケーション221に関する情報であるアプリケーション情報231を送信する。プロキシプロセス11は、アプリケーション情報231を管理情報記憶部13へ登録し、WEBサーバ30からのサービス提供要求を代表して受信し、アプリケーション情報231に基づきアプリケーション221の実行の依頼をプロキシプロセス21へ行う。プロキシプロセス21は、アプリケーション情報231に基づきアプリケーション221を実行する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ネットワークを介したサービスの提供要求に対して、第1のアプリケーションサーバ、及び、第2のアプリケーションサーバが備える複数のアプリケーションを実行することにより当該サービスを提供するアプリケーション提供システム、及びアプリケーション提供方法に関し、特に、第1のアプリケーションサーバで実行されるアプリケーションを第2のアプリケーションサーバへ移行するアプリケーション移行方法に関する。
【背景技術】
【0002】
サーバによるビジネスアプリケーションサービスを提供しているWebシステムにおいては、当該Webシステムが提供するサービスを停止させることなく、システムを継続稼働させることが要求される。
【0003】
近年、Webシステムとして標準的なWEBサーバ、AP(Application)サーバ、及びDB(Database)サーバという3層構成において、WEBサーバ、及びDBサーバのそれぞれについては、一般的に、負荷分散の仕組みが普及している。また、アプリケーションサーバの負荷分散の仕組みについては、特許文献1、特許文献2に開示されている。
【0004】
特許文献1に開示されるクラスタリング方法は、同一のサービスを提供可能な複数のサーバと、このサーバの少なくとも一つが提供するサービスを利用するクライアントを有し、サーバに割り当てられた固有のサーバ名と対応するアドレスを管理するネームサーバがあり、クライアントからのアドレスの問い合わせに対し、第1のサーバから応答がない場合、第2のサーバへアドレスを問い合わせるものである。
【0005】
特許文献2に開示される高可用性計算機システムは、少なくとも2台のサーバが共有ディスクを共有し、運用系から待機系へ切り替える基本の高可用性機構と、基本とは別の高可用性機構を備えた高可用性計算機システムである。そして、予め運用系の設定情報を待機系のローカルハードディスクへコピーしておき、運用系、及び共有ディスクが共に障害となった場合、待機系から共有ディスクを切断し、待機系のローカルハードディスクから単独で起動し、復旧を行うものである。
【特許文献1】特開2000−357160号公報
【特許文献2】特開2006−227770号公報
【発明の開示】
【発明が解決しようとする課題】
【0006】
しかしながら、特許文献1では、同一の環境を複数のサーバ(アプリケーションサーバ)に用意する必要がある。また、特許文献2では、共有ディスクに保存されない設定情報を運用系と待機系のアプリケーションサーバ間で同期を取る必要があるがその方法については、開示されていない。
【0007】
そのため、複数のアプリケーションサーバ間の同期を取る等のメンテナンスが煩雑である、という問題点がある。ここで、メンテナンスとは、アプリケーションサーバ、及びアプリケーションの追加、及び削除、並びに移行等を指す。また、一方のアプリケーションサーバから他方のアプリケーションサーバでアプリケーションを実行させることが困難である。
【0008】
本発明では、このような問題点を解決するためになされたものであり、システムの可用性を維持しつつ、複数のアプリケーションサーバ間のメンテナンスを容易とするアプリケーションサービス提供システム、アプリケーションサービス提供方法、及びアプリケーションサービス移行方法の提供をすることを目的とする。
【課題を解決するための手段】
【0009】
本発明の第1の態様にかかるアプリケーションサービス提供システムは、ネットワークを介したサービスの提供要求に対して、第1のアプリケーションサーバが第1のアプリケーションを、第2のアプリケーションサーバが第2のアプリケーションをそれぞれ実行することにより当該サービスを提供するものである。前記第1のアプリケーションサーバは、前記第1のアプリケーション及び第2のアプリケーションに関するアプリケーション情報を記憶する管理情報記憶部と、前記第1のアプリケーションサーバ及び前記第2のアプリケーションサーバを代表して前記提供要求を受信し、前記第1のアプリケーション及び第2のアプリケーションを実行させる第1のプロキシプロセスとを備え、前記第1のプロキシプロセスは、前記第2のアプリケーションサーバから前記第2のアプリケーションに関するアプリケーション情報を受信し、前記管理情報記憶部へ登録する登録手段と、前記提供要求を受信し、前記管理情報記憶部に格納された前記第2のアプリケーションに関するアプリケーション情報に基づいて前記第2のアプリケーションサーバへ前記第2のアプリケーションの実行を依頼する実行依頼手段とを備え、前記第2のアプリケーションサーバは、前記第2のアプリケーションに関するアプリケーション情報を前記第1のアプリケーションサーバに対して送信する管理情報送信手段と、前記実行依頼手段による依頼に基づき前記第2のアプリケーションを実行する実行手段とを備える。
【0010】
これにより、サービスの提供要求を代表して受信するアプリケーションサーバにおいて、他のアプリケーションサーバのアプリケーション情報を管理することにより、当該アプリケーション情報に基づき、他のアプリケーションサーバのアプリケーションを実行させることができる。そのため、サービス提供要求を継続しつつ、複数の第2のアプリケーションサーバの入れ替えを容易に行うことができる。
【0011】
また、前記第2のアプリケーションサーバは、前記第1のアプリケーションサーバ及び前記第2のアプリケーションサーバを代表して前記提供要求を受信し、前記実行手段により前記第1のアプリケーション及び第2のアプリケーションを実行させる第2のプロキシプロセスをさらに備え、前記管理情報送信手段は、前記第2のプロキシプロセスに関するプロセス情報を前記第1のプロキシプロセスへ送信し、前記登録手段は、前記第2のプロキシプロセスから受信した前記プロセス情報を前記管理情報記憶部へ登録し、前記実行依頼手段は、前記管理情報記憶部に格納された前記プロセス情報を参照し、前記第2のプロキシプロセスへ前記第2のアプリケーションの実行を依頼することが望ましい。
【0012】
これにより、プロキシプロセス間の通信によりアプリケーションの実行が可能となり、同機能のプロキシプロセスを備えたアプリケーションサーバによるシステムの拡張が可能となる。そのため、複数のアプリケーションを実行するアプリケーションサーバ間で管理情報の同期を取ることができ、アプリケーションサーバのメンテナンスをシステムへの影響を最小限にして行うことができる。
【0013】
また、前記第1のプロキシプロセスは、前記登録手段により新規なプロセス情報が登録された場合、前記第2のプロキシプロセスへ前記第1のプロキシプロセスに関するプロセス情報、及び、前記第1のアプリケーションに関するアプリケーション情報を送信することが望ましい。これにより、追加されたアプリケーションサーバ、プロキシプロセスに対して、管理情報の同期が可能となる。
【0014】
また、前記第1のプロキシプロセスは、前記第1のアプリケーション又は前記第2のアプリケーションが起動又は中断する旨の通知を受信した場合、前記管理情報記憶部において前記第1のアプリケーション又は前記第2のアプリケーションに関するアプリケーション情報を更新する更新手段をさらに備え、前記更新手段により前記第1のアプリケーションに関するアプリケーション情報が更新された場合、前記管理情報記憶部に格納された当該更新されたアプリケーション情報を前記第2のプロキシプロセスへ送信するとよい。これにより、アプリケーションの起動、中断を管理し、他のアプリケーションサーバへ通知することで、アプリケーションサーバ間で、各々のアプリケーションの状態を共有することができる。
【0015】
さらに、前記実行依頼手段は、前記提供要求を受信した場合、前記管理情報記憶部に格納された前記第1のアプリケーションに関するアプリケーション情報に基づいて前記第1のアプリケーションを実行させるとよい。これにより、自己のアプリケーションサーバ内のアプリケーションと、他のアプリケーションサーバ内のアプリケーションとを等価的に分散実行することができ、代表して受信するアプリケーションサーバを柔軟に変更できる。
【0016】
また、前記第1のアプリケーションサーバは、前記第1のアプリケーションの実行コード、及び設定パラメータを記憶するアプリケーション情報記憶部と、前記第1のアプリケーションの処理を中断する前に、前記アプリケーション情報記憶部から前記第1のアプリケーションの実行コード、及び設定パラメータを取得し、前記第2のアプリケーションサーバへ送信する第1の送信手段と、前記第1のアプリケーションの処理を中断した後に、前記第1のアプリケーションの実行状態を示す実行状態情報を前記第2のアプリケーションサーバへ送信する第2の送信手段と、をさらに備え、前記第2のアプリケーションサーバは、前記第1の送信手段から前記実行コード、及び前記設定パラメータを受信し、前記第2の送信手段から前記実行状態情報を受信し、前記実行状態情報に基づいて当該第1のアプリケーションの処理を再開する処理再開手段と、をさらに備えるとよい。これにより、稼働するアプリケーションサーバ間での実行中のアプリケーションの移行をシステムへの影響を最小限にして、行うことができる。
【0017】
本発明の第2の態様にかかるアプリケーションサービス提供システムは、ネットワークを介したサービスの提供要求に対して、第1のアプリケーションサーバ及び第2のアプリケーションサーバによってアプリケーションを実行することにより当該サービスを提供するものである。前記第1のアプリケーションサーバは、前記アプリケーションの実行コード、及び設定パラメータを記憶するアプリケーション情報記憶部と、前記アプリケーションの処理を中断する前に、前記アプリケーション情報記憶部から前記アプリケーションの実行コード、及び設定パラメータを取得し、前記第2のアプリケーションサーバへ送信する第1の送信手段と、前記アプリケーションの処理を中断した後に、前記アプリケーションの実行状態を示す実行状態情報を前記第2のアプリケーションサーバへ送信する第2の送信手段と、を備え、前記第2のアプリケーションサーバは、前記第1の送信手段から前記実行コード、及び前記設定パラメータを受信し、前記第2の送信手段から前記実行状態情報を受信し、前記実行状態情報に基づいて当該アプリケーションの処理を再開する処理再開手段と、を備えるものである。
【0018】
これにより、稼働するアプリケーションサーバ間での実行中のアプリケーションの移行をシステムへの影響を最小限にして、行うことができる。
【0019】
また、前記第1のアプリケーションサーバは、前記アプリケーションの実行を管理する第1のプロキシプロセスと、前記アプリケーションの処理を中断した旨を前記第1のプロキシプロセスへ通知する中断通知手段と、をさらに備え、前記第2のアプリケーションサーバは、前記アプリケーションの実行を管理する第2のプロキシプロセスと、前記処理再開手段により当該アプリケーションの処理を再開した旨を前記第2のプロキシプロセスへ通知する再開通知手段と、をさらに備えることが望ましい。これにより、アプリケーションの実行を管理するプロキシプロセスへ当該アプリケーションの中断、及び再開を通知することで、プロキシプロセスによりアプリケーションの移行の状況を管理できる。
【0020】
また、前記第1のアプリケーションサーバは、前記アプリケーションの処理を中断した後に、当該アプリケーションの実行状態情報を前記アプリケーション情報記憶部へ格納する実行状態情報格納手段をさらに備え、前記第2の送信手段は、前記実行状態情報格納手段により格納された当該アプリケーションの実行状態情報を前記アプリケーション情報記憶部から取得して、前記第2のアプリケーションサーバへ送信することが望ましい。これにより、アプリケーションの中断時点の実行状態情報を転送することができる。
【0021】
また、前記第1の送信手段は、前記アプリケーションを前記第2のアプリケーションサーバへ移行する指示に応じて実行されることが望ましい。これにより、任意のタイミングで柔軟に移行が可能となる。
【0022】
本発明の第1の態様にかかるアプリケーションサービス提供方法は、ネットワークを介したサービスの提供要求に対して、第1のアプリケーションサーバが第1のアプリケーションを、第2のアプリケーションサーバが第2のアプリケーションをそれぞれ実行することにより当該サービスを提供するものである。前記第2のアプリケーションサーバから前記第1のアプリケーションサーバへ前記第2のアプリケーションに関するアプリケーション情報を送信する管理情報送信ステップと、前記第1のアプリケーションサーバにおいて、前記送信するステップにより送信された前記第2のアプリケーションに関するアプリケーション情報を受信し、当該アプリケーション情報を管理情報記憶部へ登録する登録ステップと、前記第1のアプリケーションサーバにおいて、前記第1のアプリケーションサーバ及び前記第2のアプリケーションサーバを代表して前記提供要求を受信し、前記管理情報記憶部に格納された前記第2のアプリケーションに関するアプリケーション情報に基づいて前記第2のアプリケーションサーバへ前記第2のアプリケーションの実行を依頼する実行依頼ステップと、前記第2のアプリケーションサーバにおいて、前記実行依頼ステップによる依頼に基づき前記第2のアプリケーションを実行する実行ステップとを備える。
【0023】
これにより、サービスの提供要求を代表して受信するアプリケーションサーバにおいて、他のアプリケーションサーバのアプリケーション情報を管理することにより、当該アプリケーション情報に基づき、他のアプリケーションサーバのアプリケーションを実行させることができる。そのため、サービス提供要求を継続しつつ、複数の第2のアプリケーションサーバの入れ替えを容易に行うことができる。
【0024】
また、前記管理情報送信ステップは、前記第2のアプリケーションサーバにおいて前記実行手段により前記第2のアプリケーションを実行させるプロキシプロセスに関するプロセス情報をさらに送信し、前記登録ステップは、前記プロキシプロセスに関するプロセス情報を受信し、当該プロセス情報を前記管理情報記憶部へ登録し、前記実行依頼ステップは、前記管理情報記憶部に格納された前記プロセス情報を参照し、前記プロキシプロセスへ前記第2のアプリケーションの実行を依頼することが望ましい。
【0025】
これにより、プロキシプロセス間の通信によりアプリケーションの実行が可能となり、同機能のプロキシプロセスを備えたアプリケーションサーバによるシステムの拡張が可能となる。そのため、複数のアプリケーションを実行するアプリケーションサーバ間で管理情報の同期を取ることができ、アプリケーションサーバのメンテナンスをシステムへの影響を最小限にして行うことができる。
【0026】
また、前記登録ステップにより新規なプロセス情報が登録された場合、前記管理情報記憶部に格納された前記第1のアプリケーションサーバにおいて前記第1のアプリケーションを実行させるプロキシプロセスに関するプロセス情報、及び、前記第1のアプリケーションに関するアプリケーション情報を送信する送信ステップをさらに備える、請求項12に記載のアプリケーションサービス提供方法。
これにより、追加されたアプリケーションサーバ、プロキシプロセスに対して、管理情報の同期が可能となる。
【0027】
また、前記第1のアプリケーション又は前記第2のアプリケーションが起動又は中断する旨の通知を受信した場合、前記管理情報記憶部において前記第1のアプリケーション又は前記第2のアプリケーションに関するアプリケーション情報を更新する更新ステップをさらに備え、前記送信ステップは、前記更新ステップにより前記第1のアプリケーションに関するアプリケーション情報が更新された場合、前記管理情報記憶部に格納された当該更新されたアプリケーション情報を送信することが望ましい。これにより、アプリケーションの起動、中断を管理し、他のアプリケーションサーバへ通知することで、アプリケーションサーバ間で、各々のアプリケーションの状態を共有することができる。
【0028】
また、前記実行依頼ステップは、前記第1のアプリケーションサーバにおいて、前記提供要求を受信した場合、前記管理情報記憶部に格納された前記第1のアプリケーションに関するアプリケーション情報に基づいて前記第1のアプリケーションを実行させることが望ましい。これにより、自己のアプリケーションサーバ内のアプリケーションと、他のアプリケーションサーバ内のアプリケーションとを等価的に分散実行することができ、代表して受信するアプリケーションサーバを柔軟に変更できる。
【0029】
本発明の第2の態様にかかるアプリケーション移行方法は、ネットワークを介したサービスの提供要求に対して、第1のアプリケーションサーバ及び第2のアプリケーションサーバによってアプリケーションを実行することにより当該サービスを提供するアプリケーションサービス提供システムにおけるものである。前記アプリケーションの処理を中断する前に、前記アプリケーションの実行コード、及び設定パラメータを前記第2のアプリケーションサーバへ送信する第1の送信ステップと、前記アプリケーションの処理を中断した後に、前記アプリケーションの実行状態を示す実行状態情報を前記第2のアプリケーションサーバへ送信する第2の送信ステップと、前記第1の送信ステップから前記実行コード、及び前記設定パラメータを受信し、前記第2の送信ステップから前記実行状態情報を受信し、前記実行状態情報に基づいて当該アプリケーションの処理を再開する処理再開ステップと、を備えるものである。これにより、稼働するアプリケーションサーバ間での実行中のアプリケーションの移行をシステムへの影響を最小限にして、行うことができる。
【0030】
また、前記アプリケーションの処理を中断した旨を前記第1のアプリケーションサーバにおいて前記アプリケーションの実行を管理するプロキシプロセスへ通知する中断通知ステップと、前記処理再開ステップにより当該アプリケーションの処理を再開した旨を前記第2のアプリケーションサーバにおいて前記アプリケーションの実行を管理するプロキシプロセスへ通知する再開通知手段ステップと、をさらに備えることが望ましい。これにより、アプリケーションの実行を管理するプロキシプロセスへ当該アプリケーションの中断、及び再開を通知することで、プロキシプロセスによりアプリケーションの移行の状況を管理できる。
【0031】
また、前記アプリケーションの処理を中断した後に、当該アプリケーションの実行状態情報をアプリケーション情報記憶部へ格納する実行状態情報格納ステップをさらに備え、前記第2の送信ステップは、前記実行状態情報格納ステップにより格納された当該アプリケーションの実行状態情報を前記アプリケーション情報記憶部から取得して、前記第2のアプリケーションサーバへ送信することが望ましい。これにより、アプリケーションの中断時点の実行状態情報を転送することができる。
【0032】
また、前記第1の送信ステップは、前記アプリケーションを前記第2のアプリケーションサーバへ移行する指示に応じて実行されることが望ましい。これにより、任意のタイミングで柔軟に移行が可能となる。
【発明の効果】
【0033】
本発明により、システムの可用性を維持しつつ、複数のアプリケーションサーバ間のメンテナンスを容易とするアプリケーションサービス提供システム、アプリケーションサービス提供方法、及びアプリケーションサービス移行方法の提供をすることができる。
【発明を実施するための最良の形態】
【0034】
以下では、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略される。
【0035】
発明の実施の形態1.
図1は、本発明の実施の形態1にかかるアプリケーションサービス提供システム100の構成の一例を示すブロック図である。アプリケーションサービス提供システム100は、アプリケーションサーバ10と、アプリケーションサーバ20と、Webサーバ30と、ネットワーク40と、端末50とを備える。Webサーバ30と端末50とは、ネットワーク40を介して接続されている。ネットワーク40は、インターネット、公衆網、専用線、移動体通信網等の通信ネットワークであればよい。尚、アプリケーションサービス提供システム100には、アプリケーションサーバ10、及びアプリケーションサーバ20にデータベースサーバをさらに接続してもよい。
【0036】
アプリケーションサービス提供システム100は、Webサーバ30において、ネットワーク40を介して端末50からサービスの提供要求を受け付け、Webサーバ30によりアプリケーションサーバ10、及びアプリケーションサーバ20を用いて複数のアプリケーションを分散して実行し、当該複数のアプリケーションの実行結果を集約して当該サービスとして端末50へ返信するものである。
【0037】
ここで、アプリケーションサービス提供システム100で対象とするアプリケーションは、何らかのスケールファクターに比例した処理が必要とされ、並列実行が可能なものとする。
【0038】
当該対象とするアプリケーションとは、例えば、遠隔データ収集を行うアプリケーションである。遠隔データ収集を行う場合、収集データ対象が増えるに従って処理量が増えるが、複数のアプリケーションサーバで分担してデータを収集するように実行することで、分散処理を行うことができる。または、当該対象とするアプリケーションとは、大規模なデータ検索を行うアプリケーションであり、検索範囲を分割してそれぞれのアプリケーションサーバにおいて検索を実行することができる。
【0039】
そのため、当該対象とするアプリケーションは、分散処理を行うアプリケーションサーバの台数を増やすだけで、容易に処理量を増やし、処理効率を高めることができるものである。
【0040】
尚、アプリケーションサーバの台数は、アプリケーションサーバ10、及びアプリケーションサーバ20の2台に限定されない。例えば、アプリケーションサーバの台数は、10台程度で分散されていればよい。
【0041】
Webサーバ30は、アプリケーションサーバ10、及びアプリケーションサーバ20と接続されている。Webサーバ30は、汎用的なコンピュータシステムであり、図示しない構成として、CPU(Central Processing Unit)、RAM(Random Access Memory)、ROM(Read Only Memory)、及び不揮発性記憶装置を備える。Webサーバ30は、CPUがRAM、ROM,又は不揮発性記憶装置に格納されたOS(Operating System)、WEBサーバプログラムを読み込み、実行する。これにより、Webサーバ30は、WEBサーバとして動作するものである。
【0042】
また、Webサーバ30は、端末50からのサービス提供要求を受信し、アプリケーションサーバ10、及びアプリケーションサーバ20のいずれかへ当該サービス提供要求を送信し、当該サービス提供要求の返信内容を端末50へ返信する。ここで、Webサーバ30は、予め、アプリケーションサーバ10、及びアプリケーションサーバ20へマルチキャスト配信により応答要求を送信し、最初に応答のあったアプリケーションサーバ10に対して以後の当該サービス提供要求を送信するものとする。また、最初に応答のあったアプリケーションサーバ10が何らかの障害により、当該サービス提供要求に応答ができない場合、Webサーバ30は、再度、マルチキャスト配信により応答要求を送信し、応答するアプリケーションサーバ20に対して、当該サービス提供要求を再送することで、当該サービスの提供を維持するものとする。
【0043】
アプリケーションサーバ10は、プロキシプロセス11と、アプリケーション121と、アプリケーション122と、管理情報記憶部13とを備える。また、アプリケーションサーバ20は、アプリケーションサーバ10と同等の機能を有するアプリケーションサーバである。また、プロキシプロセス21、アプリケーション221、アプリケーション222、管理情報記憶部23は、それぞれプロキシプロセス11、アプリケーション121、アプリケーション122、管理情報記憶部13と同等の構成であるため、説明を省略する。尚、アプリケーションサーバ10、及びアプリケーションサーバ20で稼働するアプリケーションの数はこれに限定されない。例えば、アプリケーションサービス提供システム100では、10から20程度のアプリケーションを並列実行させてもよい。
【0044】
管理情報記憶部13は、プロセス情報131と、アプリケーション情報132とを記憶する記憶装置である。プロセス情報131は、後述するプロキシプロセス11に関する情報である。プロセス情報131とは、例えば、プロキシプロセス11の識別情報、プロキシプロセス11が稼働するアプリケーションサーバ10のネットワークアドレス等の接続情報であればよい。
【0045】
また、アプリケーション情報132は、後述するアプリケーション121、及びアプリケーション122に関する情報である。アプリケーション情報132とは、例えば、アプリケーション121、及びアプリケーション122の識別情報、管理するプロキシプロセス11の識別情報、又は、アプリケーション121、及びアプリケーション122への接続情報であればよい。尚、プロセス情報131、及びアプリケーション情報132の具体例については、図3で後述する。
【0046】
また、管理情報記憶部23に格納されたプロセス情報231は、プロキシプロセス21
に関する情報であり、アプリケーション情報232は、アプリケーション221、及びアプリケーション222に関する情報である。
【0047】
プロキシプロセス11は、アプリケーションサーバ10、及びアプリケーションサーバ20を代表してWebサーバ30からのサービス提供要求を受信し、管理情報記憶部13に格納されたプロセス情報131、及びアプリケーション情報132を参照し、アプリケーション121、及びアプリケーション122、並びに、後述するプリケーション221、及びアプリケーション222を実行させるWEBアプリケーションである。特に、プロキシプロセス11は、後述するプロキシプロセス21を介して、アプリケーション221、及びアプリケーション222を実行させる。また、プロキシプロセス11は、アプリケーション121、アプリケーション122、アプリケーション221、及びアプリケーション222の実行結果を集約して、Webサーバ30へ返信する。これにより、Webサーバ30は、プロキシプロセス11により、一つのアプリケーションサーバに対して、処理を依頼することで、複数台のアプリケーションサーバに対する処理を行わせることができる。
【0048】
また、プロキシプロセス11は、Webサーバ30からの応答要求に対して、応答する。これにより、Webサーバ30は、最初に応答したプロキシプロセス11をサービス提供要求の送信先として特定するため、複数のプロキシプロセスの中から当該サービス提供要求の窓口を一つに定めることができる。尚、ここでは、プロキシプロセス11が当該サービス提供要求に対する窓口であるが、プロキシプロセス21がWebサーバ30からの応答要求に対して最初に応答することで当該サービス提供要求に対する窓口となるが可能である。
【0049】
また、プロキシプロセス11は、他のプロキシプロセスであるプロキシプロセス21と相互に通信を行う。プロキシプロセス11、及びプロキシプロセス21は、お互いのプロセス情報、及びアプリケーション情報を交換し、登録することで、お互いのアプリケーションへのアクセスが可能である。例えば、プロキシプロセス11は、起動時に、管理情報記憶部13に格納されたプロセス情報131、及びアプリケーション情報132をプロキシプロセス21へ送信する。また、プロキシプロセス11は、管理情報記憶部23に格納されたプロセス情報231、及びアプリケーション情報232をプロキシプロセス21から受信し、管理情報記憶部13に登録する。さらに、プロキシプロセス11は、アプリケーション121、又はアプリケーション122の実行が中断、又は再開されたことを検知、又は通知を受信し、アプリケーション情報132を更新する。同時に、プロキシプロセス11は、更新されたアプリケーション情報132をプロキシプロセス21へ送信する。そして、プロキシプロセス21から更新されたアプリケーション情報232を受信した場合、管理情報記憶部13を更新する。このように、プロキシプロセスは、複数のプロキシプロセスの間で、自己のプロセス情報、及びアプリケーション情報と、他のプロセス情報、及びアプリケーション情報の同期を取ることができ、最新状態を共有することができる。
【0050】
尚、プロキシプロセス11は、WEBアプリケーションの起動時において、アプリケーションサーバ10に接続された他のアプリケーションサーバに対して、マルチキャスト通信により、管理情報記憶部13に格納されたプロセス情報131、及びアプリケーション情報132を配信する。これにより、予め通信相手のプロキシプロセスを登録しておく必要がなく、複数のプロキシプロセスと相互の通信が可能となる。また、プロキシプロセス11は、WEBアプリケーションの停止時に、プロキシプロセス11が停止する旨をプロキシプロセス21へ通知するようにしてもよい。また、プロキシプロセス11は、プロキシプロセス21からプロキシプロセス21が停止する旨を受信した場合、管理情報記憶部13に格納されたプロセス情報231、及びアプリケーション情報232を削除してもよい。これにより、管理情報記憶部13には、利用可能なプロキシプロセス、及びアプリケーションの情報が格納されることとなる。
【0051】
尚、プロキシプロセス11とプロキシプロセス21との間の通信は、例えば、RPC(Remote Procedure Call)や、RMI(Remote Method Invocation)などで実現すればよい。その場合、プロセス情報131、及びプロセス情報231に、RPC、又はRMIで必要とされるパラメータを含めて管理すればよい。
【0052】
アプリケーション121、及びアプリケーション122は、当該サービスを実現するアプリケーションソフトウェアであり、プロキシプロセス11により起動されるものである。また、アプリケーション121、及びアプリケーション122は、同様の機能であるため、分散して処理を実行することができる。
【0053】
尚、アプリケーションサーバ10の構成についての説明は、図2で詳述する。
【0054】
端末50は、ネットワーク40に接続された汎用的なコンピュータシステムであるクライアント端末である。端末50は、図示しない構成として、CPU、RAM、ROM、及び不揮発性記憶装置を備える。端末50は、CPUがRAM、ROM,又は不揮発性記憶装置に格納されたOS、WEBブラウザプログラムを読み込み、実行する。これにより、端末50は、Webサーバ30に対して、サービス提供要求を送信し、上述した複数のアプリケーションによる実行結果を受信することができる。
【0055】
図2は、本発明の実施の形態1にかかるアプリケーションサーバ10の構成を示すブロック図である。尚、アプリケーションサーバ20の構成は、図2と同様のため、図示、及び説明を省略する。アプリケーションサーバ10は、CPU14と、通信部15と、メモリ16と、不揮発性記憶装置17とを備える。
【0056】
メモリ16は、図1の管理情報記憶部13に相当し、プロセス情報テーブル161と、アプリケーション情報テーブル162という管理情報を記憶する揮発性の記憶装置である。尚、メモリ16は、図示しない構成として、OS、プロキシプロセスプログラム171、アプリケーションプログラム172を記憶している。メモリ16は、DRAM(Dynamic Random Access Memory)等の揮発性の記憶装置であればよい。また、図3は、本発明の実施の形態1にかかる管理情報の一例を示す図である。
【0057】
プロセス情報テーブル161は、図1のプロセス情報131を管理するための格納領域である。図3(a)は、プロセス情報テーブル161の構成例を示す図である。図3(a)に示すように、プロセス情報テーブル161は、プロキシプロセスの識別情報であるIDを示す属性と、当該プロキシプロセスが稼働するアプリケーションサーバのIPアドレスを示す属性とから構成される。これにより、プロキシプロセス11は、プロキシプロセス21を含む他のプロキシプロセスとの通信が可能となる。
【0058】
アプリケーション情報テーブル162は、図1のアプリケーション情報132を管理するための格納領域である。図3(b)は、アプリケーションテーブルの構成例を示す図である。図3(b)に示すように、アプリケーション情報テーブル162は、アプリケーションの識別情報であるIDを示す属性と、当該アプリケーションが所属する、すなわち、当該アプリケーションを管理するプロキシプロセスのIDを示す属性とから構成される。これにより、プロキシプロセス11は、各アプリケーションが所属するプロキシプロセスのIDを特定することができ、各プロキシプロセスに対して、所属するアプリケーションの実行を依頼することができる。
【0059】
尚、プロセス情報テーブル161、及びアプリケーション情報テーブル162の構成は図3に限定されない。例えば、プロセス情報テーブル161は、RPC、又はRMIで必要とされる接続情報をさらに管理してもよい。また、アプリケーション情報テーブル162は、プロキシプロセスのIDの代わりに、当該アプリケーションが稼働するアプリケーションサーバのIPアドレスを示す属性であってもよく、併せて、当該アプリケーションを実行させるための各種接続情報を管理してもよい。
【0060】
図2に戻って説明する。ハードディスク17は、プロキシプロセスプログラム171と、アプリケーションプログラム172とを記憶する不揮発性の記憶装置である。プロキシプロセスプログラム171は、図1のプロキシプロセス11の処理が記述された実行形式のプログラムコード(以下、実行コード)である。アプリケーションプログラム172は、図1のアプリケーション121の処理が記述された実行コードである。尚、メモリ16は、図示しない構成として、OS、アプリケーション122の実行コード、並びに、プロキシプロセスプログラム171、及びアプリケーションプログラム172のための設定パラメータファイル等を記憶している。尚、ハードディスク17は、フラッシュメモリ等の不揮発性の記憶装置であってもよい。
【0061】
制御部14は、アプリケーションサーバ10における各種処理、すなわち、各種プログラムの処理、通信部15、メモリ16、及びハードディスク17へのアクセス、等を制御する。通信部15は、Webサーバ30、及びアプリケーションサーバ20との間のデータの送受信等の通信を行う。
【0062】
図4は、プロキシプロセスによる管理情報の更新処理を示すシーケンス図である。ここでは、アプリケーションサーバ20においてプロキシプロセス21が稼働している状態で、アプリケーションサーバ10において、プロキシプロセス11が起動される場合における管理情報の初期登録の流れについて説明する。
【0063】
まず、プロキシプロセス11は、アプリケーションサーバ10において起動される(S101)。すなわち、アプリケーションサーバ10の制御部14は、ハードディスク17のプロキシプロセスプログラム171をメモリ16へ読み込む。これにより、アプリケーションサーバ10において、プロキシプロセス11として動作する。また、このとき、プロセス情報テーブル161には、プロキシプロセス11のプロセス情報131のみが格納され、アプリケーション情報テーブル162には、アプリケーション121、及びアプリケーション122のアプリケーション情報132のみが格納されている。尚、以下では、プロセス情報テーブル161、及びアプリケーション情報テーブル162を管理情報記憶部13として説明する。
【0064】
次に、プロキシプロセス11は、プロキシプロセス21へ自己のプロセス情報、及び自己のアプリケーションサーバのアプリケーション情報を通知する(S102)。すなわち、プロキシプロセス11は、管理情報記憶部13に格納されている自己のプロセス情報であるプロセス情報131、及び自己のアプリケーションであるアプリケーション情報132を読み出し、通信部15からマルチキャスト通信により、プロセス情報131、及びアプリケーション情報132の配信を行う。ここでは、アプリケーションサーバ10とアプリケーションサーバ20は接続されているため、アプリケーションサーバ10からプロキシプロセス21へプロセス情報131、及びアプリケーション情報132が送信される。
【0065】
続いて、プロキシプロセス21は、受信したプロセス情報131、及びアプリケーション情報132を登録する(S103)。すなわち、プロキシプロセス21は、プロキシプロセス11からプロセス情報131、及びアプリケーション情報132を受信し、管理情報記憶部23へ登録する。これにより、プロキシプロセス21は、プロキシプロセス11へアプリケーション121、及びアプリケーション122の実行依頼が可能となる。
【0066】
その後、プロキシプロセス21は、プロキシプロセス11へ自己のプロセス情報、及び自己のアプリケーションサーバのアプリケーション情報を通知する(S104)。すなわち、すなわち、プロキシプロセス21は、管理情報記憶部23に格納されているプロセス情報131を参照し、管理情報記憶部23に格納されている自己のプロセス情報であるプロセス情報231、及び自己のアプリケーションであるアプリケーション情報232を読み出し、プロセス情報231、及びアプリケーション情報232をプロキシプロセス11へ送信する。
【0067】
そして、プロキシプロセス11は、受信したプロセス情報231、及びアプリケーション情報232を登録する(S105)。すなわち、プロキシプロセス11は、プロキシプロセス21からプロセス情報231、及びアプリケーション情報232を受信し、管理情報記憶部13へ登録する。これにより、プロキシプロセス11は、プロキシプロセス21へアプリケーション221、及びアプリケーション222の実行依頼が可能となる。
【0068】
尚、ステップS104、及びS105は、ステップS103において、新規なプロセス情報が登録された場合のみ、行うようにしてもよい。これにより、冗長な通信を省略し、通信コストを下げることができる。
【0069】
また、図4の処理が終了した後、アプリケーションサーバ10において、メンテナンス作業、又は、障害対応により、アプリケーションの追加、入れ替え、又は削除の更新が発生した場合、ステップS102、及びS103により、更新されたアプリケーション情報のみを通知することにより、プロキシプロセス11からプロキシプロセス21へアプリケーション情報の更新処理が可能となる。さらに、アプリケーション121、又はアプリケーション122が中断、又は再開された場合も同様である。これにより、アプリケーションサーバ10のアプリケーションの状態管理が可能となる。
【0070】
また、プロキシプロセス11の停止においては、プロキシプロセス11の停止処理の直前に、プロキシプロセス11からプロキシプロセス21へプロセス情報131について停止される旨を通知することで、プロキシプロセス21において、管理情報記憶部23からプロセス情報131を削除等することにより、プロキシプロセスの状態管理を行うことも可能である。
【0071】
また、上述したことは、アプリケーションサーバ20における、プロキシプロセス21、アプリケーション221、及びアプリケーション222についても同様の処理により状態管理が行えるであることは勿論である。
【0072】
図5は、プロキシプロセスによるアプリケーション実行処理を示すフローチャート図である。ここでは、プロキシプロセス11がWebサーバ30からのサービス提供要求を受信するものとする。また、図4で示すようなプロキシプロセス11とプロキシプロセス21の間でプロセス情報、及びアプリケーション情報の同期が完了しているものとする。
【0073】
まず、プロキシプロセス11は、Webサーバ30からサービス提供要求を受信する(S11)。次に、プロキシプロセス11は、当該サービス提供要求に基づき、アプリケーション情報、及び他のプロセス情報を取得する(S12)。具体的には、プロキシプロセス11は、メモリ16からアプリケーション情報テーブル162に格納されたアプリケーション情報132、及びアプリケーション情報232を取得する。そして、プロキシプロセス11は、アプリケーション情報232に対応するプロキシプロセスのIDからプロセス情報231を取得する。
【0074】
その後、プロキシプロセス11はステップS13、及びS14を並行して行う。まず、プロキシプロセス11は、自己のアプリケーションを実行させる(S13)。すなわち、プロキシプロセス11は、アプリケーション情報132に基づき、アプリケーション121、及びアプリケーション122を並列実行させる。
【0075】
また、プロキシプロセス11は、他のプロキシプロセスが管理するアプリケーションについて、当該アプリケーションの実行依頼をする(S14)。すなわち、プロキシプロセス11は、アプリケーション情報232に基づき、アプリケーション221、及びアプリケーション222を並列実行させるように、プロセス情報231に基づき、プロキシプロセス21へ実行依頼を送信する。
【0076】
尚、ステップS14を受けて、プロキシプロセス21は、受信したアプリケーション情報232に基づき、アプリケーション221、及びアプリケーション222を並列実行させる。そして、プロキシプロセス21は、アプリケーション221、及びアプリケーション222の実行結果をプロキシプロセス11へ返信する。
【0077】
その後、プロキシプロセス11は、それぞれ実行させたアプリケーションからの実行結果を受信する(S15)。すなわち、プロキシプロセス11は、アプリケーション221、及びアプリケーション222からそれぞれの実行結果を受信し、プロキシプロセス21を介して、アプリケーション221、及びアプリケーション222の実行結果を受信する。
【0078】
そして、プロキシプロセス11は、実行結果を集約し、Webサーバ30へ返信する(S16)。
【0079】
これにより、本発明の実施の形態1にかかるプロキシプロセス11、及びプロキシプロセス21により、アプリケーションの分散実行が可能となる。
【0080】
このように、本発明の実施の形態1にかかるアプリケーションサービス提供システム100により、アプリケーションサーバ10、及びアプリケーションサーバ20で稼働するプロキシプロセス11、及びプロキシプロセス21のいずれかにより、サービス提供要求を処理することができる。また、プロキシプロセス11とプロキシプロセス21の間でプロセス情報、及びアプリケーション情報を同期できるため、アプリケーションサーバ10と同等の構成を有する他のアプリケーションサーバを追加、変更、削除した場合であっても、システムを止めることなく稼働することができる。そのため、本発明の実施の形態1により、システムの可用性を維持しつつ、複数のアプリケーションサーバ間のメンテナンスを容易とすることができる。
【0081】
発明の実施の形態2.
続いて、本発明の実施の形態2にかかるアプリケーション移行方法の実施例を以下に例示する。本発明の実施の形態2では、本発明の実施の形態1で例示したアプリケーションサービス提供システム100の変形例として、一つのサービス提供要求に対して実行されるアプリケーションがあるアプリケーションサーバにおいて当該アプリケーションが実行中であっても、他のアプリケーションサーバへ移行して継続して処理を実行するためのアプリケーション移行方法である。例えば、一つのサービス提供要求に対して複数の異なるアプリケーションを複数のアプリケーションサーバにおいて並列実行する場合、一方のアプリケーションサーバで実行されるアプリケーションは、他方のアプリケーションサーバには予め導入されているとは限らない。その場合、単に他方のアプリケーションサーバへ当該アプリケーションを導入するだけでは、実行中の当該アプリケーションの処理を継続することはできない。それは、アプリケーションサーバにおいて、当該アプリケーションの実行時にメモリ上に内部情報が生成されるためである。ここで、内部情報とは、例えば、当該アプリケーションの実行時の内部変数、一時的に保存するデータや、当該アプリケーション起動時のセッションID等の起動毎に異なる入力値等である。そこで、本発明の実施の形態2では、システムの可用性を確保しつつ、アプリケーションの実行時にメモリ上に生成される内部情報を含めて、他のアプリケーションサーバに移行する方法を示す。
【0082】
図6は、本発明の実施の形態2にかかるアプリケーションサービス提供システム200の構成の一例を示すブロック図である。アプリケーションサービス提供システム200は、図1に比べ、アプリケーションサーバ10、及びアプリケーションサーバ20が移行元アプリケーションサーバ10a、及び移行先アプリケーションサーバ20aに変更されたものである。そして、移行元アプリケーションサーバ10aは、アプリケーション123と、移行手段18を備え、移行先アプリケーションサーバ20aは、アプリケーション223と、移行手段28とを備える。尚、その他の構成については、図1と同様のため、説明を省略する。以下では、図1との違いについてのみ説明する。
【0083】
アプリケーション123は、アプリケーション223とは別機能のアプリケーションソフトウェアである。但し、アプリケーション123、及びアプリケーション223は、それぞれ起動時に当該アプリケーションのメモリ上の実行状態である内部情報がファイル出力された内部情報出力ファイルが存在する場合、当該内部情報出力ファイルを読み込み、実行することが可能である。また、アプリケーション123、及びアプリケーション223は、処理の中断指示を受け付け、中断時のメモリ上の内部情報をファイル出力することが可能である。
【0084】
アプリケーション123は、プロキシプロセス11により起動され、ここでは、アプリケーション情報132は、アプリケーション123に関する情報である。同様に、アプリケーション223は、プロキシプロセス21により起動され、ここでは、アプリケーション情報232は、アプリケーション223に関する情報である。尚、移行元アプリケーションサーバ10a、及び移行先アプリケーションサーバ20aで稼働するアプリケーションの数はこれに限定されない。
【0085】
移行手段18は、アプリケーション123の実行コード、設定パラメータファイル、内部情報ファイルを移行先アプリケーションサーバ20aへ送信する処理、及び、アプリケーション123の中断、又は再開の旨をプロキシプロセス11へ通知する処理を行うアプリケーションソフトウェアである。また、移行手段28は、移行手段18から送信された各種情報を受信する処理、及び、移行手段18と同様の通知する処理を行うアプリケーションソフトウェアである。尚、移行手段18、及び移行手段28は同機能のアプリケーションソフトウェアであればよい。
【0086】
図7は、本発明の実施の形態2にかかるアプリケーションサーバ10aの構成を示すブロック図である。尚、アプリケーションサーバ20aの構成は、図7と同様のため、図示、及び説明を省略する。移行元アプリケーションサーバ10aは、図2のアプリケーションサーバ10と比べ、メモリ16、及びハードディスク17がメモリ16a、及びハードディスク17aに置き換わったものである。尚、その他の構成については、図2と同様のため、説明を省略する。以下では、図2との違いについてのみ説明する。
【0087】
メモリ16aは、メモリ16と比べ、実行コード163と、パラメータ164と、実行中の内部情報165とをさらに記憶する揮発性の記憶装置である。また、ハードディスク17aは、ハードディスク17と比べ、アプリケーションプログラム172がアプリケーションプログラム172aに置き換わり、パラメータファイル173と、中断時の内部情報出力ファイル174と、移行プログラム175とをさらに記憶する不揮発性の記憶装置である。
【0088】
アプリケーションプログラム172aは、図6のアプリケーション123の処理が記述された実行コードである。また、パラメータファイル173は、アプリケーションプログラム172aの起動時の入力となる設定値の集合が記述されたファイルである。アプリケーションプログラム172a、及びパラメータファイル173は、制御部14によりハードディスク17aから読み込まれ、実行コード163、及びパラメータ164としてメモリ16aへ格納されることにより、アプリケーション123として実行される。このとき、アプリケーション123が実行されることにより、メモリ16aにアプリケーション123の実行状態を示す実行中の内部情報165が生成される。また、中断時の内部情報出力ファイル174は、アプリケーション123の中断時に実行中の内部情報165がメモリ16aからハードディスク17aへ出力されたものである。
【0089】
移行プログラム175は、図6の移行手段18の処理が記述された実行コードである。移行プログラム175は、制御部14によりハードディスク17aから読み込まれ、メモリ16aに格納されることにより、移行手段18として実行される。
【0090】
図8は、本発明の実施の形態2にかかるアプリケーションの処理を示すフローチャート図である。ここでは、移行元アプリケーションサーバ10aにおいて実行されるアプリケーション123について例示するが、移行先アプリケーションサーバ20aにおいて実行されるアプリケーション223についても同様の処理となる。
【0091】
まず、アプリケーション123は、起動時に、パラメータファイル173、及び中断時の内部情報出力ファイル174を入力とする(S21)。すなわち、制御部14は、ハードディスク17aからアプリケーションプログラム172aを読み込み、メモリ16aへ格納することで、アプリケーション123として起動する。そして、アプリケーション123は、ハードディスク17aに格納されたパラメータファイル173、及び中断時の内部情報出力ファイル174を入力として、初期化処理を行う。尚、中断時の内部情報出力ファイル174がハードディスク17aに存在しない場合は、アプリケーション123は、パラメータファイル173に含まれるデフォルト値を用いて初期処理を行う。
【0092】
次に、アプリケーション123は、メインのアプリケーションの処理を実行する(S22)。尚、ステップS22は、アプリケーション毎に処理内容が異なる。
【0093】
その後、アプリケーション123は、当該処理の中断するための中断指示の有無を確認する(S23)。すなわち、アプリケーション123は、外部からの中断指示の入力を受け付けるインタフェースを備えており、任意のタイミングで、当該中断指示の有無を確認する。中断指示がないと判定された場合、ステップS22へ戻り、中断指示があると判定された場合、ステップS24へ進む。
【0094】
アプリケーション123は、処理の中断を行う(S24)。例えば、プロキシプロセス11により実行中の処理に対して割り込みを発生させて、当該処理を中断する。
【0095】
その後、アプリケーション123は、中断時の内部情報をファイル出力する(S25)。すなわち、アプリケーション123は、メモリ16aに格納された実行中の内部情報165を読み出し、ハードディスク17aへ中断時の内部情報出力ファイル174として格納する。
【0096】
図9は、本発明の実施の形態2にかかるアプリケーション移行方法を示すシーケンス図である。ここでは、移行手段18、及び移行手段28により、移行元アプリケーションサーバ10aで実行中のアプリケーション123を移行先アプリケーションサーバ20aへ移行する例を説明する。
【0097】
まず、移行手段18は、アプリケーションプログラム172a、及びパラメータファイル173を移行手段28へ送信する(S201)。すなわち、移行手段18は、アプリケーション123が実行中の状態において、アプリケーション123の実行コード、及びパラメータであるアプリケーションプログラム172a、及びパラメータファイル173をハードディスク17aから読み出し、通信部15から移行先アプリケーションサーバ20aへ送信する。また、このとき、移行先アプリケーションサーバ20aでは、移行手段28がアプリケーションプログラム172a、及びパラメータファイル173を受信し、移行先アプリケーションサーバ20a内のハードディスク(不図示)へ格納する。
【0098】
次に、移行手段18は、実行中のアプリケーション123に中断指示を行う(S202)。このとき、アプリケーション123は、図8のステップS23により、中断指示ありと判定され、ステップS24によりアプリケーション123の処理が中断される。また、これにより、メモリ16a上の実行中の内部情報165の更新がなくなる。
【0099】
そして、移行手段18は、プロキシプロセス11へアプリケーション123の処理が中断した旨を通知する(S203)。このとき、プロキシプロセス11は、管理情報記憶部13に格納されたアプリケーション情報132を更新する。そのため、プロキシプロセス11は、以後のサービス提供要求に対して、アプリケーション123を実行させない。また、プロキシプロセス11は、更新されたアプリケーション情報132を他のプロキシプロセスへ通知する。これにより、以後のサービス提供要求において、プロキシプロセス11以外のプロキシプロセスが窓口となった場合でも、アプリケーション123が移行元アプリケーションサーバ10aにおいては実行できないことが伝わるため、アプリケーション123についての実行依頼はプロキシプロセス11には来ない。
【0100】
また、アプリケーション123は、中断時のアプリケーション123の内部情報をハードディスク17aへ保存する(S204)。すなわち、図8のステップS25と同様に、アプリケーション123は、メモリ16aに格納された実行中の内部情報165をハードディスク17aに中断時の内部情報出力ファイル174として格納する。尚、ステップS203、S204は、並列実行されて構わない。
【0101】
その後、移行手段18は、中断時の内部情報出力ファイル174を移行手段28へ送信する(S205)。すなわち、移行手段18は、アプリケーション123が中断後の状態において、アプリケーション123の内部情報である中断時の内部情報出力ファイル174をハードディスク17aから読み出し、通信部15から移行先アプリケーションサーバ20aへ送信する。また、このとき、移行先アプリケーションサーバ20aでは、移行手段28が中断時の内部情報出力ファイル174を受信し、移行先アプリケーションサーバ20a内のハードディスクへ格納する。これにより、移行先アプリケーションサーバ20aには、アプリケーション123を実行するための実行コード、パラメータ、及び内部情報が取得されたことになる。
【0102】
そして、移行手段28は、内部情報に基づいて、アプリケーションの実行を再開する(S206)。すなわち、図8のステップS21と同様にして、移行先アプリケーションサーバ20aにおいて、アプリケーション123が起動される。そして、このとき、移行元アプリケーションサーバ10aにおける中断時のメモリ16a内の実行中の内部情報165に相当する中断時の内部情報出力ファイル174を読み込み、中断時点の処理から継続して再開される。
【0103】
最後に、移行手段28は、プロキシプロセス21へアプリケーション123の処理が再開した旨を通知する(S207)。このとき、プロキシプロセス21は、管理情報記憶部23に格納されたアプリケーション情報132を更新する。そのため、プロキシプロセス21は、以後のサービス提供要求に対して、アプリケーション123を実行させることができる。また、プロキシプロセス21は、更新されたアプリケーション情報132を他のプロキシプロセスへ通知する。以後のサービス提供要求において窓口となったプロキシプロセスにも、アプリケーション123が移行先アプリケーションサーバ20aにおいて実行可能となったことが伝わる為、アプリケーション123についての実行依頼がプロキシプロセス21にされることとなる。
【0104】
このように、本発明の実施の形態2にかかるアプリケーション移行方法により、アプリケーション123の処理の中断を図9のステップS202乃至S206の期間とすることができる。
【0105】
一般的に、アプリケーションの実行環境としては、実行コード、パラメータ、及び内部情報が存在する。この中で、実行コードであるアプリケーションプログラム172a、及びパラメータであるパラメータファイル173は、アプリケーション123の起動前からハードディスク17aに格納済みであり、通常の実行においては更新されない。また、内部情報である実行中の内部情報165は、通常の実行においてメモリ16a上に生成、及び更新され、アプリケーション123の実行終了後は、メモリ16aから削除され、残されない。しかしながら、アプリケーション123の実行状態として必要なものであるため、実行中のアプリケーション123を移行するためには、併せて移行する必要がある。
【0106】
そのため、実行中のアプリケーション123の処理を継続したまま移行するためには、実行コード163、パラメータ164、及び実行中の内部情報165をセットにして、移行する必要がある。また、実行中の内部情報165は、アプリケーション123が中断した後でなければ、データ内容が確定できない。よって、本来であればアプリケーション123の中断後に、実行中の内部情報165をファイル出力し、これらをまとめて送信する必要がある。そのため、送信時間が長くなり、システムの中断時間も長くなり、可用性が低くなる。
【0107】
そこで、アプリケーション123の実行中であっても変更されないアプリケーションプログラム172a、及びパラメータファイル173については、図9のステップS201に示すように、アプリケーション123の中断前に、移行手段18により送信する。また、アプリケーション123の中断後でないとデータ内容が確定しない実行中の内部情報165については、図9のステップ202乃至S205に示すように、アプリケーション123の中断後に、中断時点での最新の内部情報をメモリ16aからハードディスク17aへファイル出力し、その後、送信することとした。これにより、実行コード、パラメータ、及び内部情報を併せて送信することに比べ、送信時間を短くすることができる。つまり、アプリケーションの中断時間を最小限に抑えることができる。
【0108】
また、本発明の実施の形態2により、高価なRAID(Redundant Arrays of Inexpensive Disks)ディスクや、専用の高速ネットワークを用いる必要がなく、システムの可用性を維持することができる。そのため、本発明の実施の形態2により、システムの可用性を維持しつつ、複数のアプリケーションサーバ間のメンテナンスを容易とすることができる。
【0109】
その他の発明の実施の形態.
本発明の実施の形態1にかかるアプリケーションサービス提供システム100では、各アプリケーションサーバが同等の機能を有するものとしたがこれに限定されない。例えば、窓口となる窓口プロキシプロセスが実行されるアプリケーションサーバ以外のアプリケーションサーバについては、当該窓口プロキシプロセスからの実行依頼を受け付けて自己のアプリケーションを実行する機能と、自己のアプリケーション情報を当該プロキシプロセスへ通知する機能を有する従属プロキシプロセスを備えるサーバが複数存在してもよい。この場合、当該サーバにおける追加、削除については、窓口プロキシプロセスが管理することができ、従属プロキシプロセスを備えるサーバを柔軟に増設が可能となり、システムの可用性を維持しつつ、複数のアプリケーションサーバ間のメンテナンスを容易とすることができる。
【0110】
さらに、本発明は上述した実施の形態のみに限定されるものではなく、既に述べた本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
【図面の簡単な説明】
【0111】
【図1】本発明の実施の形態1にかかるアプリケーションサービス提供システム100の構成の一例を示すブロック図である。
【図2】本発明の実施の形態1にかかるアプリケーションサーバ10の構成を示すブロック図である。
【図3】本発明の実施の形態1にかかる管理情報の一例を示す図である。(a)は、プロセステーブルの構成例を示す図である。(b)は、アプリケーションテーブルの構成例を示す図である。
【図4】プロキシプロセスによる管理情報の更新処理を示すシーケンス図である。
【図5】プロキシプロセスによるアプリケーション実行処理を示すフローチャート図である。
【図6】本発明の実施の形態2にかかるアプリケーションサービス提供システム200の構成の一例を示すブロック図である。
【図7】本発明の実施の形態2にかかるアプリケーションサーバ10aの構成を示すブロック図である。
【図8】本発明の実施の形態2にかかるアプリケーションプログラムの処理を示すフローチャート図である。
【図9】本発明の実施の形態2にかかるアプリケーション移行方法を示すシーケンス図である。
【符号の説明】
【0112】
100 アプリケーションサービス提供システム
10 アプリケーションサーバ
11 プロキシプロセス
121 アプリケーション
122 アプリケーション
13 管理情報記憶部
131 プロセス情報
132 アプリケーション情報
14 制御部
15 通信部
16 メモリ
161 プロセス情報テーブル
162 アプリケーション情報テーブル
17 ハードディスク
171 プロキシプロセスプログラム
172 アプリケーションプログラム
20 アプリケーションサーバ
21 プロキシプロセス
221 アプリケーション
222 アプリケーション
23 管理情報記憶部
231 プロセス情報
232 アプリケーション情報
30 Webサーバ
40 ネットワーク
50 端末
200 アプリケーションサービス提供システム
10a 移行元アプリケーションサーバ
123 アプリケーション
18 移行手段
20a 移行先アプリケーションサーバ
223 アプリケーション
28 移行手段
16a メモリ
163 実行コード
164 パラメータ
165 実行中の内部情報
17a ハードディスク
172a アプリケーションプログラム
173 パラメータファイル
174 中断時の内部情報出力ファイル
175 移行プログラム

【特許請求の範囲】
【請求項1】
ネットワークを介したサービスの提供要求に対して、第1のアプリケーションサーバが第1のアプリケーションを、第2のアプリケーションサーバが第2のアプリケーションをそれぞれ実行することにより当該サービスを提供するアプリケーションサービス提供システムであって、
前記第1のアプリケーションサーバは、
前記第1のアプリケーション及び第2のアプリケーションに関するアプリケーション情報を記憶する管理情報記憶部と、
前記第1のアプリケーションサーバ及び前記第2のアプリケーションサーバを代表して前記提供要求を受信し、前記第1のアプリケーション及び第2のアプリケーションを実行させる第1のプロキシプロセスとを備え、
前記第1のプロキシプロセスは、
前記第2のアプリケーションサーバから前記第2のアプリケーションに関するアプリケーション情報を受信し、前記管理情報記憶部へ登録する登録手段と、
前記提供要求を受信し、前記管理情報記憶部に格納された前記第2のアプリケーションに関するアプリケーション情報に基づいて前記第2のアプリケーションサーバへ前記第2のアプリケーションの実行を依頼する実行依頼手段とを備え、
前記第2のアプリケーションサーバは、
前記第2のアプリケーションに関するアプリケーション情報を前記第1のアプリケーションサーバに対して送信する管理情報送信手段と、
前記実行依頼手段による依頼に基づき前記第2のアプリケーションを実行する実行手段とを備えるアプリケーションサービス提供システム。
【請求項2】
前記第2のアプリケーションサーバは、
前記第1のアプリケーションサーバ及び前記第2のアプリケーションサーバを代表して前記提供要求を受信し、前記実行手段により前記第1のアプリケーション及び第2のアプリケーションを実行させる第2のプロキシプロセスをさらに備え、
前記管理情報送信手段は、前記第2のプロキシプロセスに関するプロセス情報を前記第1のプロキシプロセスへ送信し、
前記登録手段は、前記第2のプロキシプロセスから受信した前記プロセス情報を前記管理情報記憶部へ登録し、
前記実行依頼手段は、前記管理情報記憶部に格納された前記プロセス情報を参照し、前記第2のプロキシプロセスへ前記第2のアプリケーションの実行を依頼することを特徴とする、請求項1に記載のアプリケーションサービス提供システム。
【請求項3】
前記第1のプロキシプロセスは、前記登録手段により新規なプロセス情報が登録された場合、前記第2のプロキシプロセスへ前記第1のプロキシプロセスに関するプロセス情報、及び、前記第1のアプリケーションに関するアプリケーション情報を送信することを特徴とする、請求項2に記載のアプリケーションサービス提供システム。
【請求項4】
前記第1のプロキシプロセスは、
前記第1のアプリケーション又は前記第2のアプリケーションが起動又は中断する旨の通知を受信した場合、前記管理情報記憶部において前記第1のアプリケーション又は前記第2のアプリケーションに関するアプリケーション情報を更新する更新手段をさらに備え、
前記更新手段により前記第1のアプリケーションに関するアプリケーション情報が更新された場合、前記管理情報記憶部に格納された当該更新されたアプリケーション情報を前記第2のプロキシプロセスへ送信することを特徴とする、請求項3に記載のアプリケーションサービス提供システム。
【請求項5】
前記実行依頼手段は、前記提供要求を受信した場合、前記管理情報記憶部に格納された前記第1のアプリケーションに関するアプリケーション情報に基づいて前記第1のアプリケーションを実行させることを特徴とする、請求項1乃至4のいずれか1項に記載のアプリケーションサービス提供システム。
【請求項6】
前記第1のアプリケーションサーバは、
前記第1のアプリケーションの実行コード、及び設定パラメータを記憶するアプリケーション情報記憶部と、
前記第1のアプリケーションの処理を中断する前に、前記アプリケーション情報記憶部から前記第1のアプリケーションの実行コード、及び設定パラメータを取得し、前記第2のアプリケーションサーバへ送信する第1の送信手段と、
前記第1のアプリケーションの処理を中断した後に、前記第1のアプリケーションの実行状態を示す実行状態情報を前記第2のアプリケーションサーバへ送信する第2の送信手段と、をさらに備え、
前記第2のアプリケーションサーバは、
前記第1の送信手段から前記実行コード、及び前記設定パラメータを受信し、前記第2の送信手段から前記実行状態情報を受信し、前記実行状態情報に基づいて当該第1のアプリケーションの処理を再開する処理再開手段と、をさらに備える請求項1乃至5のいずれか1項に記載のアプリケーションサービス提供システム。
【請求項7】
ネットワークを介したサービスの提供要求に対して、第1のアプリケーションサーバ及び第2のアプリケーションサーバによってアプリケーションを実行することにより当該サービスを提供するアプリケーションサービス提供システムであって、
前記第1のアプリケーションサーバは、
前記アプリケーションの実行コード、及び設定パラメータを記憶するアプリケーション情報記憶部と、
前記アプリケーションの処理を中断する前に、前記アプリケーション情報記憶部から前記アプリケーションの実行コード、及び設定パラメータを取得し、前記第2のアプリケーションサーバへ送信する第1の送信手段と、
前記アプリケーションの処理を中断した後に、前記アプリケーションの実行状態を示す実行状態情報を前記第2のアプリケーションサーバへ送信する第2の送信手段と、を備え、
前記第2のアプリケーションサーバは、
前記第1の送信手段から前記実行コード、及び前記設定パラメータを受信し、前記第2の送信手段から前記実行状態情報を受信し、前記実行状態情報に基づいて当該アプリケーションの処理を再開する処理再開手段と、を備えるアプリケーションサービス提供システム。
【請求項8】
前記第1のアプリケーションサーバは、
前記アプリケーションの実行を管理する第1のプロキシプロセスと、
前記アプリケーションの処理を中断した旨を前記第1のプロキシプロセスへ通知する中断通知手段と、をさらに備え、
前記第2のアプリケーションサーバは、
前記アプリケーションの実行を管理する第2のプロキシプロセスと、
前記処理再開手段により当該アプリケーションの処理を再開した旨を前記第2のプロキシプロセスへ通知する再開通知手段と、をさらに備える請求項7に記載のアプリケーションサービス提供システム。
【請求項9】
前記第1のアプリケーションサーバは、
前記アプリケーションの処理を中断した後に、当該アプリケーションの実行状態情報を前記アプリケーション情報記憶部へ格納する実行状態情報格納手段をさらに備え、
前記第2の送信手段は、前記実行状態情報格納手段により格納された当該アプリケーションの実行状態情報を前記アプリケーション情報記憶部から取得して、前記第2のアプリケーションサーバへ送信することを特徴とする、請求項7又は8に記載のアプリケーションサービス提供システム。
【請求項10】
前記第1の送信手段は、前記アプリケーションを前記第2のアプリケーションサーバへ移行する指示に応じて実行されることを特徴とする、請求項7乃至9のいずれか1項に記載のアプリケーションサービス提供システム。
【請求項11】
ネットワークを介したサービスの提供要求に対して、第1のアプリケーションサーバが第1のアプリケーションを、第2のアプリケーションサーバが第2のアプリケーションをそれぞれ実行することにより当該サービスを提供するアプリケーションサービス提供方法であって、
前記第2のアプリケーションサーバから前記第1のアプリケーションサーバへ前記第2のアプリケーションに関するアプリケーション情報を送信する管理情報送信ステップと、
前記第1のアプリケーションサーバにおいて、前記送信するステップにより送信された前記第2のアプリケーションに関するアプリケーション情報を受信し、当該アプリケーション情報を管理情報記憶部へ登録する登録ステップと、
前記第1のアプリケーションサーバにおいて、前記第1のアプリケーションサーバ及び前記第2のアプリケーションサーバを代表して前記提供要求を受信し、前記管理情報記憶部に格納された前記第2のアプリケーションに関するアプリケーション情報に基づいて前記第2のアプリケーションサーバへ前記第2のアプリケーションの実行を依頼する実行依頼ステップと、
前記第2のアプリケーションサーバにおいて、前記実行依頼ステップによる依頼に基づき前記第2のアプリケーションを実行する実行ステップとを備えるアプリケーションサービス提供方法。
【請求項12】
前記管理情報送信ステップは、前記第2のアプリケーションサーバにおいて前記実行手段により前記第2のアプリケーションを実行させるプロキシプロセスに関するプロセス情報をさらに送信し、
前記登録ステップは、前記プロキシプロセスに関するプロセス情報を受信し、当該プロセス情報を前記管理情報記憶部へ登録し、
前記実行依頼ステップは、前記管理情報記憶部に格納された前記プロセス情報を参照し、前記プロキシプロセスへ前記第2のアプリケーションの実行を依頼することを特徴とする、請求項11に記載のアプリケーションサービス提供方法。
【請求項13】
前記登録ステップにより新規なプロセス情報が登録された場合、前記管理情報記憶部に格納された前記第1のアプリケーションサーバにおいて前記第1のアプリケーションを実行させるプロキシプロセスに関するプロセス情報、及び、前記第1のアプリケーションに関するアプリケーション情報を送信する送信ステップをさらに備える、請求項12に記載のアプリケーションサービス提供方法。
【請求項14】
前記第1のアプリケーション又は前記第2のアプリケーションが起動又は中断する旨の通知を受信した場合、前記管理情報記憶部において前記第1のアプリケーション又は前記第2のアプリケーションに関するアプリケーション情報を更新する更新ステップをさらに備え、
前記送信ステップは、前記更新ステップにより前記第1のアプリケーションに関するアプリケーション情報が更新された場合、前記管理情報記憶部に格納された当該更新されたアプリケーション情報を送信することを特徴とする、請求項13に記載のアプリケーションサービス提供方法。
【請求項15】
前記実行依頼ステップは、前記第1のアプリケーションサーバにおいて、前記提供要求を受信した場合、前記管理情報記憶部に格納された前記第1のアプリケーションに関するアプリケーション情報に基づいて前記第1のアプリケーションを実行させることを特徴とする、請求項11乃至14のいずれか1項に記載のアプリケーションサービス提供方法。
【請求項16】
ネットワークを介したサービスの提供要求に対して、第1のアプリケーションサーバ及び第2のアプリケーションサーバによってアプリケーションを実行することにより当該サービスを提供するアプリケーションサービス提供システムにおけるアプリケーション移行方法であって、
前記アプリケーションの処理を中断する前に、前記アプリケーションの実行コード、及び設定パラメータを前記第2のアプリケーションサーバへ送信する第1の送信ステップと、
前記アプリケーションの処理を中断した後に、前記アプリケーションの実行状態を示す実行状態情報を前記第2のアプリケーションサーバへ送信する第2の送信ステップと、
前記第1の送信ステップから前記実行コード、及び前記設定パラメータを受信し、前記第2の送信ステップから前記実行状態情報を受信し、前記実行状態情報に基づいて当該アプリケーションの処理を再開する処理再開ステップと、を備えるアプリケーション移行方法。
【請求項17】
前記アプリケーションの処理を中断した旨を前記第1のアプリケーションサーバにおいて前記アプリケーションの実行を管理するプロキシプロセスへ通知する中断通知ステップと、
前記処理再開ステップにより当該アプリケーションの処理を再開した旨を前記第2のアプリケーションサーバにおいて前記アプリケーションの実行を管理するプロキシプロセスへ通知する再開通知手段ステップと、をさらに備える請求項16に記載のアプリケーション移行方法。
【請求項18】
前記アプリケーションの処理を中断した後に、当該アプリケーションの実行状態情報をアプリケーション情報記憶部へ格納する実行状態情報格納ステップをさらに備え、
前記第2の送信ステップは、前記実行状態情報格納ステップにより格納された当該アプリケーションの実行状態情報を前記アプリケーション情報記憶部から取得して、前記第2のアプリケーションサーバへ送信することを特徴とする、請求項16又は17に記載のアプリケーション移行方法。
【請求項19】
前記第1の送信ステップは、前記アプリケーションを前記第2のアプリケーションサーバへ移行する指示に応じて実行されることを特徴とする、請求項16乃至18のいずれか1項に記載のアプリケーション移行方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate