(57)【特許請求の範囲】
【請求項１】
サービスに対するリクエストに関連する情報と、前記リクエストに対応するアプリケーションプログラムおよびそのバージョンとの関係を表すルールを記憶するルール記憶部と、
前記リクエストを受け付ける通信部と、
前記通信部によって受け付けられたリクエストについて前記ルールを適用することにより、前記リクエストに応答するアプリケーションプログラムおよびそのバージョンを決定するバージョン決定部と、
前記バージョン決定部によって決定されたバージョンのアプリケーションプログラムが前記リクエストに応答するよう制御する応答制御部と、
を備え、
前記ルールは、前記リクエストの受付時期に関する条件と、前記バージョンとの関係を表す情報を含むことを特徴とする情報処理装置。
【請求項２】
前記ルール記憶部は、前記サービスの種類毎に前記ルールを記憶し、
前記バージョン決定部は、前記通信部によって受け付けられたリクエストが要求するサービスの種類に応じたルールから、前記リクエストに関連する情報に応じたルールを適用することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記ルールは、前記リクエストに関連するユーザ情報に関する条件と、前記バージョンとの関係を表す情報を含むことを特徴とする請求項１または請求項２に記載の情報処理装置。
【請求項４】
前記ルールは、該ルールに含まれるバージョンのアプリケーションプログラムの実行パスを表す情報を含み、
前記応答制御部は、前記バージョン決定部によって用いられたルールに含まれる実行パスを起動することにより、決定されたバージョンのアプリケーションプログラムが前記リクエストに応答するよう制御することを特徴とする請求項１から請求項３のいずれか１項に記載の情報処理装置。
【請求項５】
前記ルールは、該ルールに含まれるバージョンのアプリケーションプログラムが起動中の実行環境における通信先を表す情報を含み、
前記応答制御部は、前記バージョン決定部によって用いられたルールの示す実行環境における通信先に前記リクエストを転送することにより、決定されたバージョンのアプリケーションプログラムが前記リクエストに応答するよう制御することを特徴とする請求項１から請求項３のいずれか１項に記載の情報処理装置。
【請求項６】
サービスに対するリクエストに関連する情報と、前記リクエストに対応するアプリケーションプログラムおよびそのバージョンとの関係を表すルールを記憶するルール記憶部を用いて、
前記リクエストを受け付け、
受け付けたリクエストについて前記ルールを適用することにより、前記リクエストに応答するアプリケーションプログラムおよびそのバージョンを決定し、
決定したバージョンのアプリケーションプログラムが前記リクエストに応答するよう制御し、
前記ルールに、前記リクエストの受付時期に関する条件と、前記バージョンとの関係を表す情報を含ませる情報処理方法。
【請求項７】
サービスに対するリクエストに関連する情報と、前記リクエストに対応するアプリケーションプログラムおよびそのバージョンとの関係を表すルールを記憶するルール記憶部を用いて、
前記リクエストを受け付ける通信ステップと、
前記通信ステップで受け付けられたリクエストについて前記ルールを適用することにより、前記リクエストに応答するアプリケーションプログラムおよびそのバージョンを決定するバージョン決定ステップと、
前記バージョン決定ステップで決定されたバージョンのアプリケーションプログラムが前記リクエストに応答するよう制御する応答制御ステップと、
前記ルールに、前記リクエストの受付時期に関する条件と、前記バージョンとの関係を表す情報を含ませるステップと
をコンピュータ装置に実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システムにおいて提供されるサービスのバージョンを管理する技術に関する。
【背景技術】
【０００２】
情報処理システムにおいて提供されるサービスには、高い可用性を求められるものがある。例えば、ウェブサービスやメールサービスなど、ネットワークを介して公開されるサービスは、利用者からのアクセスに常時対応する必要がある。したがって、このようなサービスには、高い可用性が求められる。高可用性が求められるサービスを提供するアプリケーションプログラムに対するバージョン管理は、サービスを停止せずに行われる必要がある。
【０００３】
例えば、このようなサービスを提供するアプリケーションプログラムは、連携する外部環境の変化への追随、セキュリティ脆弱性への対応、ソフトウェア自身のバグの改修等のため、頻繁にバージョンアップされる。この場合、高可用性を確保するため、サービスを停止することなくアプリケーションプログラムをバージョンアップすることが必要となる。このような場合、一般的には、バージョンアップ前後のアプリケーションプログラムがそれぞれインストールされた複数のサーバを用いて、ネットワークロードバランサによる通信制御によってバージョンアップが行われる。この場合、用意される複数のサーバは、１つのオペレーティングシステム上で稼働する複数の仮想マシンにより実現される場合もある。
【０００４】
また、ＳａａＳ（Software as a Service）のようなサービスは、１つの情報処理システム上で、複数のテナントに分かれて提供されることがある。このような情報処理システムは、テナントによって異なるバージョンのサービスを提供したいことがある。例えば、あるテナントのユーザに対しては、サービスのバージョン１．１を提供したいが、他のテナントのユーザに対しては、バージョン１．２を提供したい、といったケースである。このような場合、一般的には、異なるバージョンのアプリケーションプログラムがそれぞれインストールされた複数のサーバを用いて、異なるバージョンのサービスが提供される。
【０００５】
このようなサービスのバージョン管理に関連する技術の一例が、特許文献１に記載されている。特許文献１に記載された関連技術では、デバイスを含むクライアントが、デバイス情報とクライアント情報とをサーバに送信し、サーバが、デバイス情報に対応するアプリケーションプログラムをクライアントに送信する。このとき、この関連技術は、サーバにおいて、ユーザ毎に、デバイス情報に対応して利用可能なアプリケーションプログラムのバージョンリストを記憶しておく。そして、この関連技術は、サーバまたはクライアントに、利用可能なアプリケーションプログラムのバージョンリストを表示する。これにより、サーバは、サーバまたはクライアントにより選択されたバージョンのアプリケーションプログラムを、クライアントに送信する。
【０００６】
また、このようなサービスのバージョン管理に関連する他の技術の一例が、特許文献２に記載されている。特許文献２に記載された関連技術では、作業ユニットの少なくとも一部の構成要素が更新されると、更新された構成要素は、作業ユニットの残りの構成要素が更新されるまで、更新される前の古いバージョンの構成要素をエミュレートする。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００８−７２４２７号公報
【特許文献２】特開２００１−１３４４５４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、上述の関連技術には、以下の課題がある。
【０００９】
まず、アプリケーションプログラムのバージョン管理のために複数のサーバを用意する一般的な手法は、複数のサーバの構築・運用にコストがかかるという課題がある。
【００１０】
また、特許文献１に記載された関連技術は、ユーザ毎に適切なバージョンのアプリケーションプログラムによりサービスを提供するために、あらかじめユーザ毎に、利用可能なバージョンリストを記憶しておく必要がある。このため、この関連技術は、事前準備にコストがかかるという課題がある。また、この関連技術では、アプリケーションプログラムは、クライアント側で実行されることが前提となっている。そのため、この関連技術は、適切なバージョンのアプリケーションプログラムを、サーバからクライアントに送信する。したがって、この関連技術を、サービスを提供するサーバ上で稼働するアプリケーションプログラムのバージョン管理に適用することは難しい。
【００１１】
また、特許文献２に記載された関連技術は、古いバージョンをエミュレートできるアプリケーションプログラムであることが前提となる。そのため、この関連技術は、古いバージョンをエミュレートできないアプリケーションプログラムのバージョン管理に適していない。
【００１２】
本発明は、上述の課題を解決するためになされたものである。すなわち、本発明は、サービスを提供するアプリケーションプログラムのバージョン管理を、高可用性を確保しながらより低コストで実現する技術を提供することを目的とする。
【課題を解決するための手段】
【００１３】
本発明の情報処理装置は、サービスに対するリクエストに関連する情報と、前記リクエストに対応するアプリケーションプログラムおよびそのバージョンとの関係を表すルールを記憶するルール記憶部と、前記リクエストを受け付ける通信部と、前記通信部によって受け付けられたリクエストについて前記ルールを適用することにより、前記リクエストに応答するアプリケーションプログラムおよびそのバージョンを決定するバージョン決定部と、前記バージョン決定部によって決定されたバージョンのアプリケーションプログラムが前記リクエストに応答するよう制御する応答制御部と、を備える。
【００１４】
また、本発明の情報処理方法は、サービスに対するリクエストに関連する情報と、前記リクエストに対応するアプリケーションプログラムおよびそのバージョンとの関係を表すルールを記憶するルール記憶部を用いて、前記リクエストを受け付け、受け付けたリクエストについて前記ルールを適用することにより、前記リクエストに応答するアプリケーションプログラムおよびそのバージョンを決定し、決定したバージョンのアプリケーションプログラムが前記リクエストに応答するよう制御する。
【００１５】
また、本発明のプログラムは、サービスに対するリクエストに関連する情報と、前記リクエストに対応するアプリケーションプログラムおよびそのバージョンとの関係を表すルールを記憶するルール記憶部を用いて、前記リクエストを受け付ける通信ステップと、前記通信ステップで受け付けられたリクエストについて前記ルールを適用することにより、前記リクエストに応答するアプリケーションプログラムおよびそのバージョンを決定するバージョン決定ステップと、前記バージョン決定ステップで決定されたバージョンのアプリケーションプログラムが前記リクエストに応答するよう制御する応答制御ステップと、をコンピュータ装置に実行させる。
【発明の効果】
【００１６】
本発明は、サービスを提供するアプリケーションプログラムのバージョン管理を、高可用性を確保しながらより低コストで実現する技術を提供することができる。
【図面の簡単な説明】
【００１７】
【図１】本発明の第１の実施の形態としての情報処理装置の構成を示すブロック図である。
【図２】本発明の第１の実施の形態としての情報処理装置のハードウェア構成の一例を示す図である。
【図３】本発明の第１の実施の形態としての情報処理装置の動作を説明するフローチャートである。
【図４】本発明の第２の実施の形態としての情報処理装置の構成を示すブロック図である。
【図５】本発明の第２の実施の形態においてルール記憶部に記憶されるルールの一例を示す図である。
【図６】本発明の第２の実施の形態としての情報処理装置の動作を説明するフローチャートである。
【図７】本発明の第３の実施の形態としての情報処理装置の構成を示すブロック図である。
【図８】本発明の第３の実施の形態においてルール記憶部に記憶されるルールの一例を示す図である。
【図９】本発明の第３の実施の形態としての情報処理装置の動作を説明するフローチャートである。
【発明を実施するための形態】
【００１８】
以下、本発明の実施の形態について、図面を参照して詳細に説明する。
【００１９】
（第１の実施の形態）
本発明の第１の実施の形態としての情報処理装置１の機能ブロック構成を図１に示す。図１において、情報処理装置１は、ルール記憶部１１と、通信部１２と、バージョン決定部１３と、応答制御部１４とを備える。また、情報処理装置１は、ネットワークを介してクライアント９０に接続される。情報処理装置１は、クライアント９０からのリクエストに応じて、サービスを提供する。また、情報処理装置１は、サービスを提供するための１つ以上のバージョンのアプリケーションプログラムを含む。各アプリケーションプログラムは、クライアント９０からのリクエストに応じた応答をクライアント９０に対して送信する機能を有する。
【００２０】
ここで、情報処理装置１は、図２に示すようなハードウェア要素によって構成可能である。図２において、情報処理装置１は、ＣＰＵ（Central Processing Unit）１００１、メモリ１００２、出力装置１００３、入力装置１００４、および、ネットワークインタフェース１００５を含む。メモリ１００２は、ＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）、補助記憶装置（ハードディスク等）等によって構成される。出力装置１００３は、ディスプレイ装置やプリンタ等のように、情報を出力する装置によって構成される。入力装置１００４は、キーボードやマウス等のように、ユーザ操作の入力を受け付ける装置によって構成される。ネットワークインタフェース１００５は、インターネット、ＬＡＮ（Local Area Network）、公衆回線網、無線通信網またはこれらの組合せ等によって構成されるネットワークに接続するインタフェースである。この場合、情報処理装置１の各機能ブロックは、メモリ１００２に格納されるコンピュータ・プログラムを読み込んで実行するとともに他の各部を制御するＣＰＵ１００１によって構成される。なお、情報処理装置１およびその各機能ブロックのハードウェア構成は、上述の構成に限定されない。
【００２１】
ルール記憶部１１は、サービスに対するリクエストに関連する情報と、リクエストに対応するアプリケーションプログラムおよびそのバージョンとの関係を表すルールを記憶する。
【００２２】
通信部１２は、クライアント９０からのリクエストを受け付ける。具体的には、通信部１２は、情報処理装置１のネットワークポートを監視することにより、ネットワークポートに届くリクエストを受け付ければよい。
【００２３】
バージョン決定部１３は、通信部１２によって受け付けられたリクエストについて上述のルールを適用することにより、リクエストに応答するアプリケーションプログラムおよびそのバージョンを決定する。
【００２４】
応答制御部１４は、バージョン決定部１３によって決定されたバージョンのアプリケーションプログラムがリクエストに応答するよう制御する。例えば、応答制御部１４は、決定されたバージョンのアプリケーションプログラムを起動してリクエストに応答させてもよい。
【００２５】
以上のように構成された情報処理装置１の動作について、図３を参照して説明する。
【００２６】
図３では、まず、通信部１２は、クライアント９０からのリクエストを受け付ける（ステップＳ１）。
【００２７】
次に、バージョン決定部１３は、ルール記憶部１１に記憶されたルールのうち、受け付けられたリクエストに関連する情報に適合するルールを検索する（ステップＳ２）。
【００２８】
次に、バージョン決定部１３は、適合するルールの示すアプリケーションプログラムおよびそのバージョンを決定する（ステップＳ３）。
【００２９】
次に、応答制御部１４は、ステップＳ３で決定したバージョンのアプリケーションプログラムが、ステップＳ１で受け付けたリクエストに応答するよう制御する（ステップＳ４）。
【００３０】
以上で、情報処理装置１は動作を終了する。
【００３１】
次に、本発明の第１の実施の形態の効果について述べる。
【００３２】
本発明の第１の実施の形態としての情報処理装置は、サービスを提供するアプリケーションプログラムのバージョン管理を、高可用性を確保しながらより低コストで実現する。
【００３３】
その理由について述べる。本実施の形態は、ルール記憶部に、サービスに対するリクエストに関連する情報と、リクエストに対応するアプリケーションプログラムおよびそのバージョンとの関係を表すルールを記憶しておく。そして、通信部によりクライアントからのリクエストが受け付けられると、バージョン決定部が、受け付けられたリクエストに上述のルールを適用することにより、リクエストに応答するアプリケーションプログラムおよびそのバージョンを決定する。これにより、応答制御部が、決定されたバージョンのアプリケーションプログラムを、リクエストに応答させるよう制御するからである。例えば、応答制御部は、決定されたバージョンのアプリケーションプログラムを起動してリクエストに応答させるからである。
【００３４】
これにより、本実施の形態は、リクエストに関連する情報に応じたバージョンのアプリケーションプログラムでリクエストに常時応答することを、１つのオペレーティングシステム上で、仮想マシンを用いることなく実現できる。したがって、本実施の形態は、複数のバージョンのアプリケーションプログラムのいずれかによる常時応答のために、複数のサーバを用意してそれぞれに異なるバージョンのアプリケーションプログラムを起動させる必要がない。また、本実施の形態は、複数のバージョンのアプリケーションプログラムのいずれかによる常時応答のために、クライアント毎にバージョンリストをあらかじめ記憶しておく必要がない。また、本実施の形態は、複数のバージョンのアプリケーションプログラムのいずれかによる常時応答のために、新しいバージョンのアプリケーションプログラムにより古いバージョンをエミュレートする必要がない。したがって、本実施の形態は、リクエストに関連する情報に応じたバージョンのアプリケーションプログラムによりリクエストに常時応答することを、低コストで実現できる。
【００３５】
（第２の実施の形態）
次に、本発明の第２の実施の形態について図面を参照して詳細に説明する。なお、本実施の形態の説明において参照する各図面において、本発明の第１の実施の形態と同一の構成および同様に動作するステップには同一の符号を付して本実施の形態における詳細な説明を省略する。
【００３６】
本実施の形態としての情報処理装置２は、１種類以上のサービスをクライアント９０に対して提供する。具体的には、情報処理装置２は、ネットワークポートに届くリクエストに対して、ポート番号に応じた種類のサービスを提供する。サービスとしては、例えば、メールサービスや、ウェブサービス等が挙げられる。ただし、情報処理装置２が提供するサービスの種類はこれらに限らない。また、情報処理装置２は、これらの各サービスを提供するアプリケーションプログラムを含む。１種類のサービスにつき、１つ以上のバージョンのアプリケーションプログラムが含まれる場合がある。各アプリケーションプログラムは、クライアント９０からのリクエストに応じた応答をクライアント９０に対して送信する機能を有する。また、クライアント９０は、ネットワークを介して情報処理装置２にリクエストを発行することにより、情報処理装置２からサービスを受ける。クライアント９０上では、提供されるサービスに応じたクライアントプログラムが動作する。クライアントプログラムとしては、例えば、メールサービスにアクセスするメールクライアントや、ウェブサービスにアクセスするブラウザなどが挙げられる。ただし、クライアント９０で動作するクライアントプログラムの種類はこれらに限らない。
【００３７】
まず、情報処理装置２の機能ブロック構成を図４に示す。図４において、情報処理装置２は、本発明の第１の実施の形態としての情報処理装置１に対して、ルール記憶部１１に替えてルール記憶部２１と、バージョン決定部１３に替えてバージョン決定部２３と、応答制御部１４に替えて応答制御部２４とを備える点が異なる。ここで、情報処理装置２およびその各機能ブロックは、図２を参照して説明した本発明の第１の実施の形態としての情報処理装置１と同一のハードウェア要素によって構成可能である。なお、情報処理装置２およびその各機能ブロックのハードウェア構成は、上述の構成に限定されない。
【００３８】
ルール記憶部２１は、サービスに対するリクエストに関連する情報と、リクエストに対応するアプリケーションプログラムおよびそのバージョンとの関係を表すルールを記憶する。詳細には、ルールは、リクエストに関連するユーザ情報に関する条件と、アプリケーションプログラムのバージョンとの関係を表す情報を含む。また、ルールは、リクエストの受付時期に関する条件と、アプリケーションプログラムのバージョンとの関係を表す情報を含む。また、ルールは、そのルールに含まれるバージョンのアプリケーションプログラムの実行パスを表す情報を含む。
【００３９】
また、ルール記憶部２１は、上述のようなルールとして、サービスの種類毎にあらかじめ定められたルールを記憶する。
【００４０】
ルール記憶部２１に記憶される情報の一例を図５に示す。図５において、ルールは、ポート番号・ルール判定モジュール対応表と、条件・バージョン対応表と、バージョン・実行パス対応表とからなる。
【００４１】
ポート番号・ルール判定モジュール対応表は、ポート番号と、ルール判定モジュールとの対応関係を表す。ルール判定モジュールは、ポート番号に対応するサービスの種類に応じたルールを検索する機能を持つ。このポート番号・ルール判定モジュール対応表により、ルール記憶部２１は、サービスの種類毎にあらかじめ定められたルールを呼び出す。例えば、図５では、ポート番号１４３に対して、ルール判定モジュール「IMAP4.lib」が対応付けられている。なお、図５において、ＩＭＡＰ４は、ＩＭＡＰ（Internet Message Access Protocol）４に基づくメール管理サービスを表す。また、ＰＯＰ３は、ＰＯＰ（Post Office Protocol）３に基づくメール受信サービスを表す。また、ＳＭＴＰは、ＳＭＴＰ（Simple Mail Transfer Protocol）に基づくメール転送サービスを表す。また、ＨＴＴＰは、ＨＴＴＰ（Hypertext Transfer Protocol）に基づくウェブデータ転送サービスを表す。また、ＨＴＴＰＳは、ＨＴＴＰＳ（Hypertext Transfer Protocol Secure）に基づくウェブデータ転送サービスを表す
また、条件・バージョン対応表は、リクエストに関連するユーザ情報に関する条件１と、リクエストの受付時期に関する条件２と、バージョンとの対応関係を表す。条件・バージョン対応表は、ルール判定モジュール毎に用意される。図５に示した条件・バージョン対応表は、ルール判定モジュール「IMAP4.lib」によって用いられる対応表の一例である。また、リクエストに関連するユーザ情報とは、例えば、リクエスト受付時の認証処理により得られるユーザのメールアドレスであってもよい。例えば、図５では、ユーザ情報が正規表現「*.nec.co.jp」にマッチするという条件１に対して、バージョン「１．０．０」が対応付けられている。また、例えば、上述の条件１と、２０１５年１月１日０時０分以降であることを表す「From 2015/1/1 0:00」という条件２との組合せに対して、バージョン「１．０．１」が対応付けられている。
【００４２】
また、バージョン・実行パス対応表は、ルール判定モジュールによって決定されたバージョンと、そのバージョンのアプリケーションプログラムの実行パスとの対応関係を表す。例えば、図５では、ルール判定モジュール「IMAP4.lib」によって決定されたバージョン「１．０．０」に対して、実行パス「/mail/bin/imapd」が対応付けられている。また、この例では、バージョンに対して、実行パスに加えて、起動時のオプションを表す情報も対応付けられている。
【００４３】
バージョン決定部２３は、通信部１２によって受け付けられたリクエストについて、リクエストに関連するユーザ情報、および、リクエストの受付時期に基づいて、ルール記憶部１１から適合するルールを検索する。そして、バージョン決定部２３は、適合するルールの示すアプリケーションプログラムおよびそのバージョンを決定する。
【００４４】
例えば、図５に示した情報がルール記憶部２１に記憶されているとする。この場合、バージョン決定部２３は、受け付けられたリクエストが届いたポート番号に対応するルール判定モジュールを、ポート・ルール判定モジュール対応表から求める。そして、バージョン決定部２３は、該当するルール判定モジュールに対応する条件・バージョン対応表において、リクエストに関連するユーザ情報およびルール受付時期が合致する条件１および条件２に対応付けられたバージョンを決定すればよい。なお、図５において、条件１または条件２が空欄の行は、ユーザ情報または受付時期に関する条件が設定されていない（どのようなユーザ情報または受付情報でも合致する）ことを表す。そして、バージョン決定部２３は、バージョン・実行パス対応表において、適用したルール判定モジュールおよび決定したバージョンに対応する実行パスおよびオプションを求めればよい。
【００４５】
応答制御部２４は、バージョン決定部２３によって決定されたバージョンのアプリケーションプログラムがリクエストに応答するよう制御する。具体的には、応答制御部２４は、バージョン決定部２３によって求められた実行パスの示すアプリケーションプログラムを起動する。そして、応答制御部２４は、起動したアプリケーションプログラムに、リクエストを渡せばよい。
【００４６】
なお、通信部１２、バージョン決定部２３、および、応答制御部２４は、例えば、ｉｎｅｔｄ（アイネットディー）に代表されるスーパーサーバ型デーモンを拡張することにより実現されてもよい。ただし、これらの機能ブロックの実現するために採用可能なベース技術を限定するものではない。
【００４７】
以上のように構成された情報処理装置２の動作について、図６を参照して説明する。
【００４８】
図６では、まず、通信部１２は、ネットワークポートを監視することにより、クライアント９０からのリクエストを受付ける（ステップＳ２１）。
【００４９】
次に、バージョン決定部２３は、受け付けられたリクエストが要求するサービスの種類に応じたルールから、リクエストに関連するユーザ情報およびリクエスト受付時期が適合するルールを検索する（ステップＳ２２）。
【００５０】
例えば、前述のように、バージョン決定部２３は、図５に示したポート番号・ルール判定モジュール対応表に基づいて、リクエストが届いたネットワークポートのポート番号に対応するルール判定モジュールを特定する。そして、バージョン決定部２３は、特定したルール判定モジュールに応じた条件・バージョン対応表を用いて、リクエストに関連するユーザ情報およびリクエスト受付時期が適合するルールを検索すればよい。
【００５１】
次に、バージョン決定部２３は、適合するルールに基づいて、リクエストに応答するアプリケーションプログラムのバージョンを決定する（ステップＳ２３）。
【００５２】
次に、バージョン決定部２３は、適合するルールに基づいて、決定されたバージョンのアプリケーションプログラムに対応する実行パスを求める（ステップＳ２４）。
【００５３】
前述のように、このとき、バージョン決定部２３は、起動時に指定するオプションを表す情報を併せて取得してもよい。
【００５４】
次に、応答制御部２４は、求められた実行パスを用いて、決定されたバージョンのアプリケーションプログラムを実行する（ステップＳ２５）。
【００５５】
もし、ステップＳ２４でオプションを表す情報が取得されている場合、応答制御部２４は、実行パスにオプションを付加して実行すればよい。
【００５６】
次に、応答制御部２４は、起動したアプリケーションプログラムに、リクエストを渡すことにより応答させる（ステップＳ２６）。
【００５７】
以上で、情報処理装置２は、動作を終了する。
【００５８】
次に、情報処理装置２の動作を具体例で示す。ここでは、ルール記憶部２１に、図５に示した情報が記憶されているとする。また、ステップＳ２１において、ポート１４３にリクエストが届いたとする。
【００５９】
そこで、バージョン決定部２３は、ポート番号・ルール判定モジュール対応表から、ポート番号１４３に対応するルール判定モジュール「IMAP4.lib」を特定する。そして、バージョン決定部２３は、ルール判定モジュール「IMAP4.lib」に対応する条件・バージョン対応表を用いて検索を行う。
【００６０】
ここで、リクエストに関連するユーザ情報（認証したユーザのメールアドレス）が、正規表現“*.nec.co.jp”にマッチする場合について説明する。この場合、バージョン決定部２３は、条件１が適合するルールとして、ルールＩＤ１およびルールＩＤ２を候補とする。この場合、次に、バージョン決定部２３は、条件２を判定する。もし、リクエスト受付時期が２０１５年１月１日０：００より前であれば、バージョン決定部２３は、条件１に加えて条件２が適合するルールとして、ルールＩＤ１を選択する（ステップＳ２２）。その結果、バージョン決定部２３は、バージョン１．０．０を決定する（ステップＳ２３）。一方、リクエスト受付時期が２０１５年１月１日０：００以降であれば、バージョン決定部２３は、条件１に加えて条件２が適合するルールとして、ルールＩＤ２を選択する（ステップＳ２２）。その結果、バージョン決定部２３は、バージョンとして１．０．１を決定する（ステップＳ２３）。
【００６１】
また、リクエストに関連するユーザ情報が、正規表現“*.nec.com”にマッチする場合について説明する。この場合、バージョン決定部２３は、条件１が適合するルールとして、ルールＩＤ３を適用する（ステップＳ２２）。その結果、バージョン決定部２３は、バージョン２．０．０を決定する（ステップＳ２３）。
【００６２】
また、リクエストに関連するユーザ情報が、条件・バージョン対応表に示したいずれの条件１にも該当しない場合について説明する。この場合、バージョン決定部２３は、ルールＩＤ４を適用する（ステップＳ２２）。その結果、バージョン決定部２３は、バージョン２．０．０を決定する（ステップＳ２３）。
【００６３】
そして、バージョン決定部２３は、バージョン・実行パス対応表から、ルール判定モジュールおよび決定したバージョンに対応する実行パスおよびオプションを求める。もし、ステップＳ２２でルールＩＤ３またはルールＩＤ４が適用されていた場合、決定されたバージョンは２．０．０である。そこで、この場合、バージョン決定部２３は、ルール判定モジュール「IMAP4.lib」およびバージョン「２．０．０」に対応する実行パス「/V2/mail/bin/imapd」およびオプション無しとの情報を求める（ステップＳ２４）。
【００６４】
次に、応答制御部２４は、実行パス「/V2/mail/bin/imapd」を、オプション指定無しで起動する（ステップＳ２５）。そして、応答制御部２４は、起動した「/V2/mail/bin/imapd」のプロセスにリクエストを渡す。これにより、「/V2/mail/bin/imapd」のプロセスは、リクエストに対する応答をクライアント９０に送信する（ステップＳ２６）。
【００６５】
以上で、具体例の説明を終了する。
【００６６】
次に、本発明の第２の実施の形態の効果について述べる。
【００６７】
本発明の第２の実施の形態としての情報処理装置は、サービスを提供するアプリケーションプログラムのバージョン管理を、高可用性を確保しながらより低コストで実現する。
【００６８】
その理由について述べる。本実施の形態は、ルール記憶部に、リクエストに関連するユーザ情報に関する条件と、リクエスト受付時期に関する条件と、リクエストに対応するバージョンのアプリケーションプログラムの実行パスとの関係を表すルールを記憶しておく。また、本実施の形態は、ルール記憶部に、そのようなルールを、サービスの種類毎に記憶しておく。そして、通信部によりクライアントからのリクエストが受け付けられると、バージョン決定部が、リクエストが要求するサービスの種類に応じたルールから、そのリクエストに関連するユーザ情報および受付時期に適合するルールを検索する。そして、バージョン決定部は、適合するルールの示すアプリケーションプログラムおよびそのバージョンを決定し、その実行パスを得る。これにより、応答制御部が、決定されたバージョンのアプリケーションプログラムの実行パスを起動し、起動したアプリケーションプログラムに、リクエストに応答させるからである。
【００６９】
これにより、本実施の形態は、ユーザ条件と、提供するアプリケーションプログラムとして適切なバージョンとを紐づけることができる。そのため、本実施の形態は、１つのオペレーティングシステム上で、複数のバージョンのアプリケーションプログラムを管理しながら、サービスを停止することなく、ユーザ条件に応じた適切なバージョンのアプリケーションプログラムを提供することができる。
【００７０】
また、これにより、本実施の形態は、リクエストの受付時期と、提供するアプリケーションプログラムとして適切なバージョンとを紐づけることができる。つまり、本実施の形態は、１つのオペレーティングシステム上で、サービスを停止することなく、条件として設定した新バージョン適用時期に、アプリケーションプログラムのバージョンアップを行うことができる。
【００７１】
また、これにより、本実施の形態は、ユーザ条件に応じて提供バージョンを管理することができる。その結果、本実施の形態は、１つのオペレーティングシステム上で、異なる契約形態のサービスを提供することができる。
【００７２】
（第３の実施の形態）
次に、本発明の第３の実施の形態について図面を参照して詳細に説明する。なお、本実施の形態の説明において参照する各図面において、本発明の第１または第２の実施の形態と同一の構成および同様に動作するステップには同一の符号を付して本実施の形態における詳細な説明を省略する。
【００７３】
ここで、前述の本発明の第２の実施の形態では、リクエストに応答するバージョンのアプリケーションプログラムをその都度起動していた。これに対して、本実施の形態は、アプリケーションプログラムの各バージョンを常時起動しておくケースに対応する。このような環境は、アプリケーションプログラムを実行単位で仮想化するコンテナ型仮想化技術を用いて実現可能である。コンテナ型仮想化とは、オペレーティングシステム環境全体を仮想化するのではなく、アプリケーションプログラムの実行環境単位で仮想化を行う技術である。この技術により、１つのオペレーティングシステム上で複数バージョンのアプリケーションプログラムの実行環境を実現することができる。１つのアプリケーションプログラムの実行環境は、「コンテナ」と呼ばれる。
【００７４】
まず、本発明の第３の実施の形態としての情報処理装置３の構成を図７に示す。図７において、情報処理装置３は、本発明の第２の実施の形態としての情報処理装置２に対して、ルール記憶部２１に替えてルール記憶部３１と、バージョン決定部２３に替えてバージョン決定部３３と、応答制御部２４に替えて応答制御部３４とを備える点が異なる。ここで、情報処理装置３およびその各機能ブロックは、図２を参照して説明した本発明の第１の実施の形態としての情報処理装置１と同一のハードウェア要素によって構成可能である。なお、情報処理装置３およびその各機能ブロックのハードウェア構成は、上述の構成に限定されない。
【００７５】
また、情報処理装置３は、図７に示すように、１つ以上のコンテナを含む。各コンテナ上では、クライアント９０に対してサービスを提供する任意のアプリケーションプログラムの任意のバージョンが稼働中である。１つのコンテナ上で稼働するアプリケーションプログラムは、１つ以上あってもよい。ただし、１つのコンテナ上では、１種類のサービスについて１つのバージョンのアプリケーションプログラムが稼働する。
【００７６】
ルール記憶部３１は、本発明の第２の実施の形態のルール記憶部２１と略同様のルールを記憶する。ただし、ルール記憶部３１は、ルールに、該当するバージョンのアプリケーションプログラムの実行パスを含む代わりに、該当するバージョンのアプリケーションプログラムに対応するコンテナにおける通信先を表す情報を含む。例えば、ルール記憶部３１は、該当するバージョンのアプリケーションプログラムに対応するコンテナによってリクエストが受け付けられるポート番号を含んでいてもよい。
【００７７】
例えば、ルール記憶部３１は、図５に示したポート番号・ルール判定モジュール対応表、条件・バージョン対応表、および、バージョン・実行パス対応表のうち、バージョン・実行パス対応表に替えて、バージョン・コンテナ対応表を記憶してもよい。バージョン・コンテナ対応表の一例を図８示す。図８において、例えば、ルール判定モジュール「IMAP4.lib」およびバージョン「１．０．０」に対しては、コンテナ１．０．０のポート「５０１４３」が対応付けられている。なお、図８に示すように、異なる種類のサービスであれば、同一のコンテナの異なるポートで対応可能である。
【００７８】
バージョン決定部３３は、本発明の第２の実施の形態のバージョン決定部２３と略同様に機能するよう構成される。ただし、バージョン決定部３３は、リクエストに応答するバージョンのアプリケーションプログラムについて、その実行パスを決定する代わりに、そのコンテナにおける通信先（ポート番号）を決定する。例えば、バージョン決定部３３は、上述のバージョン・コンテナ対応表を参照することにより、該当するコンテナにおける通信先を決定すればよい。
【００７９】
応答制御部３４は、バージョン決定部３３によって求められたコンテナにおける通信先に、リクエストを転送する。例えば、応答制御部３４は、ＮＡＰＴ（Network Address Port Translation)技術を用いて、リクエストを転送してもよい。
【００８０】
以上のように構成された情報処理装置３の動作について、図９を参照して説明する。
【００８１】
図９に示すように、情報処理装置３は、ステップＳ２１〜Ｓ２３まで、本発明の第２の実施の形態と同様に動作して、リクエストに応答するアプリケーションプログラムのバージョンを決定する。
【００８２】
次に、バージョン決定部３３は、決定したバージョンのアプリケーションプログラムに対応するコンテナにおける通信先を求める（ステップＳ３４）。
【００８３】
前述のように、例えば、バージョン決定部３３は、バージョン・コンテナ対応表を参照することにより、該当するコンテナにおける通信先を決定すればよい。
【００８４】
次に、応答制御部３４は、コンテナにおける通信先に、リクエストを転送する（ステップＳ３５）。これにより、該当するコンテナで稼働する該当バージョンのアプリケーションプログラムは、リクエストに対する応答をクライアント９０に送信する。
【００８５】
以上で、情報処理装置３は、動作を終了する。
【００８６】
次に、本発明の第３の実施の形態の効果について述べる。
【００８７】
本発明の第３の実施の形態としての情報処理装置は、サービスを提供するアプリケーションプログラムのバージョン管理を、高可用性を確保しながらより低コストで実現する。
【００８８】
その理由について述べる。本実施の形態は、ルール記憶部に、本発明の第２の実施の形態と同様な構成のルールのうち、実行パスを表す情報に替えて、該当するバージョンのアプリケーションプログラムのコンテナにおける通信先を表す情報を含めて記憶しておく。そして、バージョン決定部が、リクエストに関連する情報が適合するルールの示すバージョンのアプリケーションプログラムについて、そのコンテナにおける通信先を表す情報を求める。そして、応答制御部が、リクエストを、コンテナにおける通信先に転送する。
【００８９】
これにより、本実施の形態では、複数のバージョンのアプリケーションプログラムがコンテナにより同時に稼働中の環境においても、ユーザ条件やリクエスト受付時期に応じて適切なバージョンのアプリケーションプログラムが、リクエストに応答可能となる。例えば、本実施の形態は、あるコンテナにおいてサービスを提供中のアプリケーションプログラムのバージョンアップを行う際、次のように対応可能となる。すなわち、本実施の形態は、バージョンアップしたアプリケーションプログラムを稼働させるコンテナを起動し、旧コンテナから新コンテナへの切り替え時期を条件に設定したルールを記憶しておけばよい。これにより、本実施の形態は、クライアントからの通信を、バージョンアップに伴い旧コンテナから新コンテナへつなぎ直す必要がない。このように、本実施の形態は、サービスを提供中のクライアントとの通信に影響なく、バージョンアップを行うことができる。
【００９０】
なお、本発明の第２および第３の実施の形態において、サービスの種類として、ＩＭＡＰ４、ＰＯＰ３、ＳＭＴＰ、ＨＴＴＰ、ＨＴＴＰＳ等の例を挙げて説明したが、サービスの種類はこれらに限定されない。
【００９１】
また、本発明の第２および第３の実施の形態において、ルールが、ポート番号・ルール判別モジュール対応表、条件・バージョン対応表、および、バージョン・実行パス対応表またはバージョン・コンテナ対応表からなる例を中心に説明した。ただし、ルールのデータ構造はこれらに限らない。ルールは、リクエストに関連する情報と、アプリケーションプログラムおよびそのバージョンとの関係を表す情報であれば、その他のデータ構造であってもよい。また、ルールは、サービスの種類に応じたルールを特定可能であれば、その他のデータ構造であってもよい。また、ルールは、アプリケーションプログラムのバージョンと、実行パスまたはコンテナとの関係を表す情報を含んでいれば、その他のデータ構造であってもよい。
【００９２】
また、本発明の第２および第３の実施の形態において、ルールが、リクエストに関連するユーザ情報およびリクエスト受付時期にそれぞれ関する条件を含む例を中心に説明した。これに限らず、ルールは、これらの条件に替えて、あるいは、これらの条件に加えて、リクエストに関連するその他の情報に関する条件を含んでいてもよい。
【００９３】
また、本発明の第２および第３の実施の形態において、バージョン決定部は、複数の条件が全て満たされるルールを適用する例を中心に説明した。これに限らず、バージョン決定部は、複数の条件のいずれかが満たされるルールを適用するようにしてもよい。その他、バージョン決定部は、複数の条件のその他の論理的な組合せが満たされるか否かにより、そのルールを適用するか否かを判定してもよい。
【００９４】
また、上述した本発明の各実施の形態において、情報処理装置の各機能ブロックが、記憶装置またはＲＯＭに記憶されたコンピュータ・プログラムを実行するＣＰＵによって実現される例を中心に説明した。これに限らず、各機能ブロックの一部、全部、または、それらの組み合わせが専用のハードウェアにより実現されていてもよい。
【００９５】
また、上述した本発明の各実施の形態において、情報処理装置の機能ブロックは、複数の装置に分散されて実現されてもよい。
【００９６】
また、上述した本発明の各実施の形態において、各フローチャートを参照して説明した情報処理装置の動作を、本発明のコンピュータ・プログラムとしてコンピュータの記憶装置（記憶媒体）に格納しておく。そして、係るコンピュータ・プログラムを当該ＣＰＵが読み出して実行するようにしてもよい。そして、このような場合において、本発明は、係るコンピュータ・プログラムのコードあるいは記憶媒体によって構成される。
【００９７】
また、上述した各実施の形態は、適宜組み合わせて実施されることが可能である。
【００９８】
また、本発明は、上述した各実施の形態に限定されず、様々な態様で実施されることが可能である。
【符号の説明】
【００９９】
１、２、３    情報処理装置
１１、２１、３１    ルール記憶部
１２    通信部
１３、２３、３３    バージョン決定部
１４、２４、３４    応答制御部
９０    クライアント
１００１    ＣＰＵ
１００２    メモリ
１００３    出力装置
１００４    入力装置
１００５    ネットワークインタフェース
【図１】
0006443059.tif 000002
【図２】
0006443059.tif 000003
【図３】
0006443059.tif 000004
【図４】
0006443059.tif 000005
【図５】
0006443059.tif 000006
【図６】
0006443059.tif 000007
【図７】
0006443059.tif 000008
【図８】
0006443059.tif 000009
【図９】
0006443059.tif 000010