(57)【要約】【課題】複数サーバのアプリケーションプログラムを更新する場合のシステムの安定性を向上させる。【解決手段】複数のサーバは、それぞれに搭載される所定プログラムの更新を要求に応じて実行する更新実行部をそれぞれ備える。制御装置において、要求部は、実行時間を指定して複数のサーバに対して要求を行う。判定部は、複数のサーバそれぞれの所定プログラムのバージョンを確認し、複数のサーバそれぞれについて、バージョンが更新後のバージョンであるか否かを判定する。サーバ制御部は、複数のサーバのうち判定部により所定プログラムのバージョンが更新後のバージョンではないと判定されたサーバに対して、所定プログラムの起動を停止させる。【選択図】図４
2019164531.tif 000002
【特許請求の範囲】
【請求項１】
複数のサーバと、制御装置とを含む情報処理システムであって、
前記複数のサーバは、
それぞれに搭載される所定プログラムの更新を要求に応じて実行する更新実行部をそれぞれ備え、
前記制御装置は、
実行時間を指定して前記複数のサーバに対して前記要求を行う要求部と、
前記複数のサーバそれぞれの前記所定プログラムのバージョンを確認し、該複数のサーバそれぞれについて、該バージョンが更新後のバージョンであるか否かを判定する判定部と、
前記複数のサーバのうち前記判定部により前記所定プログラムの前記バージョンが前記更新後のバージョンではないと判定されたサーバに対して、該所定プログラムの起動を停止させるサーバ制御部と、
を備える情報処理システム。
【請求項２】
前記サーバ制御部は、
前記複数のサーバに含まれるサーバ数を負荷に応じて変更し、
前記判定部は、
前記複数のサーバに含まれるサーバ数が増加された場合に、増加されたサーバに搭載される前記所定プログラムの前記バージョンを確認し、該バージョンが更新後のバージョンであるか否かを判定する
請求項１に記載の情報処理システム。
【請求項３】
複数のサーバと、制御装置とを含む情報処理システムにおける情報処理方法であって、
前記複数のサーバそれぞれが、それぞれに搭載される所定プログラムの更新を要求に応じて実行する更新実行ステップと、
実行時間を指定して前記複数のサーバに対して前記要求を行う要求ステップと、
前記複数のサーバそれぞれの前記所定プログラムのバージョンを確認し、該複数のサーバそれぞれについて、該バージョンが更新後のバージョンであるか否かを判定する判定ステップと、
前記複数のサーバのうち前記判定ステップにより前記所定プログラムの前記バージョンが前記更新後のバージョンではないと判定されたサーバに対して、該所定プログラムの起動を停止させるサーバ制御ステップと、
を有する情報処理方法。
【請求項４】
複数のサーバと、制御装置とを含む情報処理システムにおける該制御装置に実行させるための情報処理プログラムであって、
前記複数のサーバそれぞれに対し、それぞれに搭載される所定プログラムの更新を、実行時間を指定して要求する要求ステップと、
前記複数のサーバそれぞれの前記所定プログラムのバージョンを確認し、該複数のサーバそれぞれについて、該バージョンが更新後のバージョンであるか否かを判定する判定ステップと、
前記複数のサーバのうち前記判定ステップにより前記所定プログラムの前記バージョンが前記更新後のバージョンではないと判定されたサーバに対して、該所定プログラムの起動を停止させるサーバ制御ステップと、
を前記制御装置に実行させるための情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システム、情報処理方法および情報処理プログラムに関する。
【背景技術】
【０００２】
従来から、休止すること無く連続してサービスを提供可能に構成されたシステムが知られている。このようなシステムにおける、ユーザが利用するアプリケーションプログラムの更新などの処理は、稼働中のサービスを停止すること無く実行されることが望ましい。例えば、単一のサーバに対してアプリケーションプログラムをデプロイする仕組みとして、アプリケーションプログラムを１つのファイルのパッケージングし、そのファイルをコピーしてインストールする方法が従来から知られている。
【０００３】
また、特許文献１には、単一のサーバにアプリケーションプログラムをデプロイする場合において、外部からの指示に応じて、セッションの切れ目でアプリケーションプログラムを差し替えるようにした構成が開示されている。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、上述のサービスを連続して提供可能なシステムにおいて、サーバの負荷を分散させるために、同一のアプリケーションプログラムが搭載されたサーバを複数、稼働させるようにした構成が知られている。この複数サーバを稼働させるシステムにおいて、１度に複数のサーバにおいてアプリケーションプログラムの更新を実行した場合、システムが不安定な状態に陥るおそれがあるという問題点があった。
【０００５】
例えば、システムを利用するユーザは、バージョンアップ前後のアプリケーションプログラムの機能を混在して利用可能である。この場合、システムから見ると、バージョンアップ前後のアプリケーションプログラムが混在して実行されることにより不整合データが発生する可能性があり、これにより、その後のシステム処理が正常に実行されなくなる事態が発生し得る。
【０００６】
本発明は、上記に鑑みてなされたものであって、複数サーバのアプリケーションプログラムを更新する場合のシステムの安定性を向上させることを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決し、目的を達成するために、本発明は、複数のサーバと、制御装置とを含む情報処理システムであって、複数のサーバは、それぞれに搭載される所定プログラムの更新を要求に応じて実行する更新実行部をそれぞれ備え、制御装置は、実行時間を指定して複数のサーバに対して要求を行う要求部と、複数のサーバそれぞれの所定プログラムのバージョンを確認し、複数のサーバそれぞれについて、バージョンが更新後のバージョンであるか否かを判定する判定部と、複数のサーバのうち判定部により所定プログラムのバージョンが更新後のバージョンではないと判定されたサーバに対して、所定プログラムの起動を停止させるサーバ制御部と、を備える。
【発明の効果】
【０００８】
本発明によれば、複数サーバのアプリケーションプログラムを更新する場合のシステムの安定性を向上させることが可能となるという効果を奏する。
【図面の簡単な説明】
【０００９】
【図１】図１は、第１の実施形態に適用可能な情報処理システムの一例の構成を示すブロック図である。
【図２】図２は、第１実施形態に適用可能な管理サーバの一例の構成を示すブロック図である。
【図３】図３は、第１の実施形態に適用可能な各仮想サーバの一例の構成を示すブロック図である。
【図４】図４は、第１の実施形態に係る管理サーバの機能を説明するための一例の機能ブロック図である。
【図５】図５は、第１の実施形態に係る仮想サーバの機能を説明するための一例の機能ブロック図である。
【図６】図６は、第１の実施形態に適用可能な、アプリケーションの更新および更新のトリガの例を示す図である。
【図７】図７は、第１の実施形態に係るアプリケーションの更新処理を説明するための図である。
【図８】図８は、既存の技術に係る、各仮想サーバにおいて、更新後サービスと更新前サービスとが混在することを説明するための図である。
【図９】図９は、第１の実施形態に係る、各仮想サーバにおいて、更新後サービスと更新前サービスとが混在しないことを説明するための図である。
【図１０】図１０は、第１の実施形態に係るサーバ装置におけるアプリケーションの更新処理を示す一例のシーケンス図である。
【図１１】図１１は、第１の実施形態に係る、各仮想サーバにおけるアプリケーションの入替え処理を示す一例のフローチャートである。
【図１２】図１２は、第１の実施形態に係る、デプロイ指示後にスケールアウトが実行された場合の処理を示す一例のシーケンス図である。
【図１３】図１３は、第２の実施形態に係る画像検索システムの一例の構成を示すブロック図である。
【発明を実施するための形態】
【００１０】
［第１の実施形態］
以下に添付図面を参照して、情報処理システム、情報処理方法および情報処理プログラムの実施形態を詳細に説明する。図１は、第１の実施形態に適用可能な情報処理システムの一例の構成を示すブロック図である。図１において、情報処理システム１は、例えばインターネットであるネットワーク２に接続されるサーバ装置１０を含み、サーバ装置１０において提供されるサービスは、端末装置３０、３０、…からネットワーク２を介して利用できる。
【００１１】
サーバ装置１０は、ロードバランサ１００と、複数の仮想サーバと、操作端末１３０と、を含む。複数の仮想サーバは、所定のアプリケーションプログラムによるサービスを提供する仮想サーバ１２０1、１２０2、…、１２０Nと、これら仮想サーバ１２０1、１２０2、…、１２０Nの管理を行う管理サーバ１１０と、を含む。これら管理サーバ１１０、および、各仮想サーバ１２０1、１２０2、…、１２０Nは、それぞれＣＰＵ(Central  Processing  Unit)、ＲＡＭ(Random  Access  Memory)、ストレージを含むハードウェアとして構成される。管理サーバ１１０は、各仮想サーバ１２０1、１２０2、…、１２０Nの動作を制御する制御装置と見做すことができる。
【００１２】
これらのうち、各仮想サーバ１２０1、１２０2、…、１２０Nは、共通のアプリケーションプログラム（以下、アプリケーション）が搭載され、それぞれ当該アプリケーションによるサービスを提供する。以下では、仮想サーバ１２０1、１２０2、…、１２０Nにより提供されるサービスを、適宜、サービス＃１、＃２、…、＃Ｎと呼ぶ。
【００１３】
操作端末１３０は、ＣＰＵ、ＲＡＭ、ストレージ、データ入出力を行うためのデータＩ／Ｆ、などを含み、一般的なコンピュータと同等の構成にて実現できる。また、操作端末１３０は、ユーザ入力を受け付ける入力デバイスと、情報を表示するための表示デバイスと、を接続することができる。操作端末１３０は、入力デバイスに対するユーザ入力に応じて管理サーバ１１０に指示を出し、管理サーバ１１０から出力された情報に基づき、表示デバイスに対し、例えばサーバ装置１０の状態に関する情報を表示させる。また、操作端末１３０は、外部から入力されたデータ、ストレージに記憶されるデータを、管理サーバ１１０に対して出力することができる。
【００１４】
ここで、各端末装置３０、３０、…は、各仮想サーバ１２０1、１２０2、…、１２０Nに共通に搭載されるアプリケーションに対応するクライアントアプリケーションが搭載される。ロードバランサ１００は、各端末装置３０、３０、…からサーバ装置１０に送信された、当該クライアントアプリケーションによるリクエストを、各仮想サーバ１２０1、１２０2、…、１２０Nに振り分ける。このとき、例えばある端末装置３０から送信されたリクエストが、ロードバランサ１００により、各仮想サーバ１２０1、１２０2、…、１２０Nのうちどの仮想サービスに振り分けられるかは、不定である。
【００１５】
なお、図１の例では、ロードバランサ１００が独立したハードウェアとして示されているが、これはこの例に限定されず、例えば管理サーバ１１０がロードバランサ１００の機能を含んでいてもよい。
【００１６】
サーバ装置１０は、外部から各仮想サーバ１２０1、１２０2、…、１２０Nの負荷を監視される。管理サーバ１１０は、各仮想サーバ１２０1、１２０2、…、１２０Nの負荷に応じて、各仮想サーバ１２０1、１２０2、…、１２０Nの数を変更することができる。例えば、サーバ装置１０は、（Ｎ＋１）台以上の仮想サーバを備え、図１の例では、この（Ｎ＋１）台以上の仮想サーバのうち、仮想サーバ１２０1、１２０2、…、１２０NのＮ台の仮想サーバが起動されている。
【００１７】
なお、起動される仮想サーバ１２０1、１２０2、…、１２０Nの数を増加させることをスケールアウト、減少させることをスケールインと呼ぶ。
【００１８】
第１の実施形態では、このような情報処理システム１において、仮想サーバ１２０1、１２０2、…、１２０Nに共通に搭載されるアプリケーションを更新（バージョンアップ）する際の処理を制御し、各端末装置３０、３０、…から見て、仮想サーバ１２０1、１２０2、…、１２０Nにバージョンの異なるアプリケーションが混在しないようにする。
【００１９】
より具体的には、管理サーバ１１０は、仮想サーバ１２０1、１２０2、…、１２０Nに対して、処理を実行する時間を指定して、同時にデプロイ要求を行う。この要求に応じて、各仮想サーバ１２０1、１２０2、…、１２０Nは、能動的にデプロイ処理を実行する。このデプロイ処理は、例えば、更新前のアプリケーション（旧アプリケーション）を更新後のアプリケーション（新アプリケーション）に入れ替えるための一連の処理を含む。このとき、各仮想サーバ１２０1、１２０2、…、１２０Nにおいて並列的に、この新旧アプリケーションの入れ替えが実行される。
【００２０】
管理サーバ１１０は、この新旧アプリケーションの入れ替えに伴い、各仮想サーバ１２０1、１２０2、…、１２０Nに対して当該アプリケーションのバージョンの確認を行い、各仮想サーバ１２０1、１２０2、…、１２０Nのうち、当該アプリケーションのバージョンが更新前のバージョンとなっている仮想サーバに対して、当該アプリケーションの起動停止を行う。
【００２１】
このように、第１の実施形態に係る情報処理システム１では、各仮想サーバ１２０1、１２０2、…、１２０Nのうち、搭載されるアプリケーションのバージョンが一致しない（更新されていない）仮想サーバにおける当該アプリケーションの起動を停止している。そのため、複数サーバにアプリケーションをデプロイする場合のシステムの安定性を向上させることができる。
【００２２】
［第１の実施形態のより具体的な構成］
図２は、第１実施形態に適用可能な管理サーバ１１０の一例の構成を示すブロック図である。図２において、管理サーバ１１０は、それぞれバス１１０６に接続される、ＣＰＵ１１００と、ＲＯＭ(Read  Only  Memory)１１０１と、ＲＡＭ１１０２と、ストレージ１１０３と、通信インタフェース（Ｉ／Ｆ）１１０４と、データＩ／Ｆ１１０５と、を含む。
【００２３】
ストレージ１１０３は、不揮発にデータを記憶する記憶媒体であって、ハードディスクドライブや、フラッシュメモリを適用できる。ＣＰＵ１１００は、ストレージ１１０３やＲＯＭ１１０１に記憶されるプログラムに従い、ＲＡＭ１１０２をワークメモリとして用いて、この管理サーバ１１０の全体の動作を制御する。
【００２４】
通信Ｉ／Ｆ１１０４は、ＣＰＵ１１００の制御により、各仮想サーバ１２０1、１２０2、…、１２０Nとの通信を実行する。通信Ｉ／Ｆ１１０４は、さらに、ＣＰＵ１１００の制御により、ネットワーク２を介した通信も実行する。データＩ／Ｆ１１０５は、外部の機器とデータの入出力を行う。管理サーバ１１０は、例えばこのデータＩ／Ｆ１１０５を介して操作端末１３０と接続される。
【００２５】
図３は、第１の実施形態に適用可能な各仮想サーバ１２０1、１２０2、…、１２０Nの一例の構成を示すブロック図である。各仮想サーバ１２０1、１２０2、…、１２０Nは、共通の構成にて実現可能であるので、ここでは、仮想サーバ１２０1の構成を、各仮想サーバ１２０1、１２０2、…、１２０Nを代表させて示している。また、以下では、仮想サーバ１２０1、１２０2、…、１２０Nを区別する必要が無い場合には、仮想サーバ１２０1、１２０2、…、１２０Nを仮想サーバ１２０1で代表させて説明を行う。
【００２６】
図３に示されるように、仮想サーバ１２０1は、それぞれバス１２０５に接続される、ＣＰＵ１２００と、ＲＯＭ１２０１と、ＲＡＭ１２０２と、ストレージ１２０３と、通信Ｉ／Ｆ１２０４と、を含み、管理サーバ１１０と略同様の構成を備える。
【００２７】
ストレージ１２０３は、不揮発にデータを記憶する記憶媒体であって、ハードディスクドライブや、フラッシュメモリを適用できる。ＣＰＵ１２００は、ストレージ１２０３やＲＯＭ１２０１に記憶されるプログラムに従い、ＲＡＭ１２０２をワークメモリとして用いて、この仮想サーバ１２０1の全体の動作を制御する。通信Ｉ／Ｆ１２０４は、ＣＰＵ１２００の制御に従い、ネットワーク２を介した通信を実行する。なお、仮想サーバ１２０1は、例えば図２のデータＩ／Ｆ１１０５を加えて、管理サーバ１１０と同様の構成としてもよい。
【００２８】
図４は、第１の実施形態に係る管理サーバ１１０の機能を説明するための一例の機能ブロック図である。図４において、管理サーバ１１０は、制御部１１１と、通信部１１２と、データ入力部１１３と、データ記憶部１１４と、通知部１１５と、を含む。
【００２９】
これら制御部１１１、通信部１１２、データ入力部１１３、データ記憶部１１４および通知部１１５は、ＣＰＵ１１００上で動作する情報処理プログラムが実行されることで実現される。これに限らず、これら制御部１１１、通信部１１２、データ入力部１１３、データ記憶部１１４および通知部１１５の一部または全部を、互いに協働して動作するハードウェア回路により構成してもよい。
【００３０】
通信部１１２は、各仮想サーバ１２０1、１２０2、…、１２０Nとの通信を制御する。また、通信部１１２は、ネットワーク２を介した通信の制御も行う。データ入力部１１３は、例えば操作端末１３０から出力されたデータを取得する。データ記憶部１１４は、データ入力部１１３により取得されたデータを、例えばストレージ１１０３に格納する。通知部１１５は、各仮想サーバ１２０1、１２０2、…、１２０N上で稼働されるサービスから、対象となるサービスを検出する。
【００３１】
制御部１１１は、要求部１１１０と、判定部１１１１と、サーバ制御部１１１２と、を含む。要求部１１１０は、各仮想サーバ１２０1、１２０2、…、１２０Nに対して、共通して搭載されるアプリケーションの更新処理を、実行時間を指定して要求する。判定部１１１１は、各仮想サーバ１２０1、１２０2、…、１２０Nに共通して搭載されるアプリケーションに対して、バージョンに基づく判定処理を行う。サーバ制御部１１１２は、判定部１１１１の判定結果に基づき、各仮想サーバ１２０1、１２０2、…、１２０Nにおける当該アプリケーションの起動を制御する。
【００３２】
第１の実施形態に係る処理を実行するための情報処理プログラムは、インストール可能な形式または実行可能な形式のファイルでＣＤ(Compact  Disk)、ＤＶＤ(Digital  Versatile  Disk)などのコンピュータで読み取り可能な記録媒体に記録して提供される。これに限らず、第１の実施形態に係る処理を実行するための情報処理プログラムを、インターネット（例えばネットワーク２）などの通信ネットワークに接続されたコンピュータ上に格納し、通信ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、第１の実施形態に係る処理を実行するための情報処理プログラムを、インターネットなどの通信ネットワーク経由で提供または配布するように構成してもよい。
【００３３】
第１の実施形態に係る処理を実行するための情報処理プログラムは、例えば、上述した各部（制御部１１１、通信部１１２、データ入力部１１３、データ記憶部１１４および通知部１１５）を含むモジュール構成となっており、実際のハードウェアとしてはＣＰＵ１１００が例えばストレージから当該情報処理プログラムを読み出して実行することにより上記各部が主記憶装置（例えばＲＡＭ１１０２）上にロードされ、各部が主記憶装置上に生成されるようになっている。
【００３４】
図５は、第１の実施形態に係る仮想サーバ１２０1の機能を説明するための一例の機能ブロック図である。図５において、仮想サーバ１２０1は、更新実行部１２１と、通信部１２２と、サービス実行部１２３と、を含む。
【００３５】
これら更新実行部１２１、通信部１２２およびサービス実行部１２３は、ＣＰＵ１２００上でプログラムが動作することで実現される。これに限らず、更新実行部１２１、通信部１２２およびサービス実行部１２３の一部または全部を、互いに協働して動作するハードウェア回路により構成してもよい。
【００３６】
通信部１２２は、ネットワーク２を介した通信を制御する。また、通信部１２２は、管理サーバ１１０との通信の制御も行う。サービス実行部１２３は、所定のアプリケーションを実行することで、当該アプリケーションに対応するクライアントアプリケーションを搭載する各端末装置３０、３０、…に、当該アプリケーションによりサービスを提供する。
【００３７】
この例では、サービス実行部１２３は、各仮想サーバ１２０1、１２０2、…、１２０Nに共通して搭載されるアプリケーションによるサービスを、各端末装置３０、３０、…に提供するものとする。また、特に記載の無い限り、以下では、「アプリケーション」は、この各仮想サーバ１２０1、１２０2、…、１２０Nに共通して搭載されるアプリケーションを指すものとする。
【００３８】
更新実行部１２１は、取込制御部１２１０と、入替制御部１２１１と、を含み、仮想サーバ１２０1に搭載されるアプリケーションの更新（バージョンアップ）を実行する。更新実行部１２１において、取込制御部１２１０は、データ記憶部１１４から、アプリケーションに関するデータを取り込んで管理する。取込制御部１２１０は、例えば当該アプリケーションのソースコードをデータ記憶部１１４から取り込んで、当該仮想サーバ１２０1のストレージ１２０３に格納する。また、取込制御部１２１０は、入替制御部１２１１に対して、アプリケーションの更新を行う時間を指定する。入替制御部１２１１は、取込制御部１２１０に指定された時間に従ったタイミングで、取込制御部１２１０が管理しているアプリケーションの更新を行う。
【００３９】
［第１の実施形態に係る処理の詳細］
次に、第１の実施形態に係る、アプリケーションの更新処理について、より詳細に説明する。図６は、第１の実施形態に適用可能な、アプリケーションの更新および更新のトリガの例を示す図である。図６において、非公開リポジトリ３００および公開リポジトリ３０１は、管理サーバ１１０に対して設定される。
【００４０】
なお、リポジトリは、プロジェクトに関連する一連のデータ（ソースコード、ドキュメント、各種のデータファイルなど）を一元的に管理する格納場所を指す。例えば、管理サーバ１１０において、管理サーバ１１０が備えるストレージ１１０３の所定記憶領域に、リポジトリを設定することができる。
【００４１】
また、上述したように、各仮想サーバ１２０1、１２０2、…、１２０Nは、共通のアプリケーションによるサービス（サービス＃１、＃２、…、＃Ｎ）をそれぞれ提供する。ここで、非公開アプリケーション３１０は、例えば当該サービスの提供元や開発元が試験的に実行するためのアプリケーションである。これに対して、公開アプリケーション３１１は、これらサービスの提供先である一般ユーザが実行可能とされたアプリケーションである。
【００４２】
非公開リポジトリ３００は、非公開アプリケーション３１０に関する一連のデータが格納され、非公開アプリケーション３１０は、非公開リポジトリ３００の内容に基づき形成される。同様に、公開リポジトリ３０１は、公開アプリケーション３１１に関する一連のデータが格納され、公開アプリケーション３１１は、公開リポジトリ３０１の内容に基づき形成される。
【００４３】
例えばサービスの提供者により、操作端末１３０から管理サーバ１１０に対して、非公開アプリケーション３１０を公開アプリケーション３１１に切り換える切り換え処理を実行するよう、指示される。管理サーバ１１０は、各仮想サーバ１２０1、１２０2、…、１２０Nに対して、非公開リポジトリ３００の内容を取得するよう指示すると共に、当該切り換え処理を実行する時間を通知する。各仮想サーバ１２０1、１２０2、…、１２０N  は、指示に応じて非公開リポジトリ３００を取得し、取得した非公開リポジトリ３００の内容に基づき非公開アプリケーション３１０を形成し起動させる。
【００４４】
指定された時間になったことをトリガとして、管理サーバ１１０は、非公開リポジトリ３００の内容を公開リポジトリ３０１に反映し、各仮想サーバ１２０1、１２０2、…、１２０Nは、非公開アプリケーション３１０を公開アプリケーション３１１に切り換える。公開アプリケーション３１１は、切り換え処理前の公開アプリケーション３１１が非公開アプリケーション３１０で置き換えられたものとなる。これにより、公開アプリケーション３１１のバージョンアップが行われる。
【００４５】
図７は、第１の実施形態に係るアプリケーションの更新処理を説明するための図である。より具体的には、図７は、第１の実施形態に係る、リポジトリからアプリケーションファイルへの変換と、非公開状態のリポジトリおよびアプリケーションの、公開状態のリポジトリおよびアプリケーションへの非公開状態から公開状態への反映と、を模式的に示している。図７に示されるように、非公開アプリケーション３１０は、デプロイ時に、非公開リポジトリ３００から当該非公開アプリケーション３１０のアプリケーションファイルに変換されることで形成される。一方、公開アプリケーション３１１は、当該公開アプリケーション３１１の起動時に、公開リポジトリ３０１から当該公開アプリケーション３１１のアプリケーションファイルに変換されることで形成される。
【００４６】
また、非公開リポジトリ３００および公開リポジトリ３０１、ならびに、非公開アプリケーション３１０および公開アプリケーション３１１は、それぞれ、リンク変数により管理される。図７の例では、非公開リポジトリ３００が非公開リポジトリリンク変数３０２により管理され、公開リポジトリ３０１が公開リポジトリリンク変数３０３により管理される。同様に、非公開アプリケーション３１０が非公開アプリケーションリンク変数３１２により管理され、公開アプリケーション３１１が公開アプリケーションリンク変数３１３により管理される。
【００４７】
非公開リポジトリ３００の内容の公開リポジトリ３０１への反映は、公開リポジトリリンク変数３０３の値を非公開リポジトリ３００を示す値に書き換えることで実行される。同様に、非公開アプリケーション３１０の公開アプリケーション３１１への反映は、公開アプリケーションリンク変数３１３の値を非公開アプリケーション３１０を示す値に書き換えることで実行される。
【００４８】
図８は、既存の技術に係る、各仮想サーバ１２０1、１２０2、…、１２０Nにおいて、更新されたアプリケーションによる各サービス（更新後サービスと呼ぶ）と、更新前のアプリケーションによる各サービス（更新前サービスと呼ぶ）とが混在することを説明するための図である。図８において、左から右方向に時間が経過する様子が示されている。
【００４９】
期間ｔ1は、各仮想サーバ１２０1、１２０2、…、１２０Nにおいて、アプリケーションの更新が行われていない期間を示す。この期間ｔ1では、各仮想サーバ１２０1、１２０2、…、１２０Nは、何れも更新前サービス４０を提供する。端末装置３０は、クライアントアプリケーション取得要求（ステップＳ２０ａ）により更新前サービス４０によるクライアントアプリケーション（更新前クライアントアプリケーションと呼ぶ）を取得する。この更新前クライアントアプリケーションは、データ更新要求により更新前サービス４０によるデータを取得する（ステップＳ２１ａ）ことになり、更新前クライアントアプリケーションと取得データとの間には不整合は生じない。
【００５０】
期間ｔ2は、各仮想サーバ１２０1、１２０2、…、１２０Nにおいてアプリケーションの更新が実行されている期間を示す。各仮想サーバ１２０1、１２０2、…、１２０Nは、管理サーバ１１０から非公開リポジトリ３００を取得し、この非公開リポジトリ３００に基づき形成した非公開アプリケーション３１０に対する非公開アプリケーションリンク変数３１２を公開アプリケーションリンク変数３１３に書き換えることで、アプリケーションの更新を行う。
【００５１】
このとき、各仮想サーバ１２０1、１２０2、…、１２０Nにおいて、例えば管理サーバ１１０から非公開リポジトリ３００を取得するために要する時間が異なる場合、期間ｔ2において、更新前サービス４０と、更新後サービス４１とが混在する場合が発生し得る。この場合、端末装置３０は、クライアントアプリケーション取得要求（ステップＳ２０ｂ）により、更新前サービス４０による更新前クライアントアプリケーションと、更新後サービス４１による更新後クライアントアプリケーションの何れかを取得することになる。また、端末装置３０は、取得した更新前クライアントアプリケーションまたは更新後クライアントアプリケーションにより、更新前サービス４０および更新後サービス４１の何れかによるデータを取得する（ステップＳ２１ｂ）ことになる。
【００５２】
この場合、表１に示されるように、端末装置３０において更新後クライアントアプリケーションにより、更新前サービス４０によるデータを取得した場合に、不整合が発生する。一方、端末装置３０において更新後クライアントアプリケーションにより更新後サービス４１によるデータを取得した場合、および、更新前クライアントアプリケーションにより更新前サービス４０によるデータを取得した場合は、不整合は、発生しない。また、この例では、端末装置３０において更新前クライアントアプリケーションにより更新後サービス４１によるデータを取得した場合にも、不整合が発生しないとされている。
【００５３】
【表１】
2019164531.tif 000003
【００５４】
期間ｔ3は、各仮想サーバ１２０1、１２０2、…、１２０Nにおいて、アプリケーションの更新が完了した後の期間を示す。この期間ｔ3では、各仮想サーバ１２０1、１２０2、…、１２０Nは、何れも更新後サービス４１を提供する。端末装置３０は、クライアントアプリケーション取得要求（ステップＳ２０ｃ）により更新後サービス４１による更新後クライアントアプリケーションを取得する。この更新後クライアントアプリケーションは、データ更新要求により更新後サービス４１によるデータを取得する（ステップＳ２１ｃ）ことになり、更新後クライアントアプリケーションと取得データとの間には不整合は生じない。
【００５５】
図９は、第１の実施形態に係る、各仮想サーバ１２０1、１２０2、…、１２０Nにおいて、更新後サービスと、更新前サービスとが混在しないことを説明するための図である。図９において、図８と同様に、左から右方向に時間が経過する様子が示されている。
【００５６】
期間ｔ1は、各仮想サーバ１２０1、１２０2、…、１２０Nにおいて、アプリケーションの更新が行われていない期間を示す。この期間ｔ1は、図８の期間ｔ1と同様であるので、ここでの詳細な説明を省略する。
【００５７】
第１の実施形態では、図９の時間ｔchangeにおいて、各仮想サーバ１２０1、１２０2、…、１２０Nにおいて一斉に、非公開アプリケーションリンク変数３１２の公開アプリケーションリンク変数３１３への書き換えを実行する。これにより、図８において期間ｔ2で示したような、更新前サービス４０と、更新後サービス４１とが混在する期間が発生しない。したがって、更新前サービス４０と、更新後サービス４１とが混在することによる取得データの不整合は、発生しない。
【００５８】
期間ｔ3は、各仮想サーバ１２０1、１２０2、…、１２０Nにおいて、アプリケーションの更新が完了した後の期間を示す。この期間ｔ3は、図８の期間ｔ3と同様であるので、ここでの詳細な説明を省略する。
【００５９】
図１０は、第１の実施形態に係るサーバ装置１０におけるアプリケーションの更新処理を示す一例のシーケンス図である。なお、図１０において、上述した図１と共通する部分には同一の符号を付して、詳細な説明を省略する。
【００６０】
例えばサービスの提供者により操作端末１３０が操作され、アプリケーションに関するデプロイが指示される（ステップＳ１００）。このデプロイ指示は、例えば、非公開アプリケーション３１０を公開アプリケーション３１１へと入れ替えることで公開アプリケーション３１１のバージョンアップを行う処理に関するデプロイを指示する。サービス提供者は、例えば、非公開アプリケーション３１０を形成するための、バージョン管理された一連のデータを操作端末１３０に対して入力し、デプロイを指示する。また、サービス提供者は、バージョンアップを実行する時間を操作端末１３０に入力して時間指定を行うと共に、バージョン情報を操作端末１３０に入力する。
【００６１】
以下では、特に記載の無い限り、「非公開アプリケーション３１０を形成するための、バージョン管理された一連のデータ」を、「非公開アプリケーション３１０に係る一連のデータ」と呼ぶ。
【００６２】
操作端末１３０は、管理サーバ１１０に対して、サービスの提供者により入力された、非公開アプリケーション３１０に係る一連のデータを送り、非公開リポジトリ３００の登録を要求する（ステップＳ１０１）。この要求は、データ入力部１１３に受け取られる。データ入力部１１３は、この要求に応じて、操作端末１３０から受け取った、非公開アプリケーション３１０に係る一連のデータをデータ記憶部１１４に渡す（ステップＳ１０２）。
【００６３】
データ記憶部１１４は、受け取った非公開アプリケーション３１０に係る一連のデータを非公開リポジトリ３００として例えばストレージ１１０３に格納し、非公開リポジトリ３００の登録を行う。データ記憶部１１４は、非公開リポジトリ３００の登録を行った旨をデータ入力部１１３を介して操作端末１３０に通知する（ステップＳ１０３、ステップＳ１０４）。
【００６４】
操作端末１３０は、非公開リポジトリ３００が登録された旨が管理サーバ１１０から通知されると、管理サーバ１１０に対して、ステップＳ１００で入力された時間指定およびバージョン情報を送り、非公開アプリケーション３１０のデプロイを指示する（ステップＳ１０５）。この指示は、管理サーバ１１０において制御部１１１に受け取られる。制御部１１１は、受け取った指示に応じて、各仮想サーバ１２０1、１２０2、…、１２０Nに対して、非公開リポジトリ３００から非公開アプリケーション３１０に係る一連のデータを取得するよう、指示する（ステップＳ１０６）。
【００６５】
管理サーバ１１０から送信された取得指示は、各仮想サーバ１２０1、１２０2、…、１２０Nに受信され、各仮想サーバ１２０1、１２０2、…、１２０Nの取込制御部１２１０に渡される。以下、各仮想サーバ１２０1、１２０2、…、１２０Nを区別する必要が無い場合には、仮想サーバ１２０1、１２０2、…、１２０Nを仮想サーバ１２０1により代表させて説明を行う。
【００６６】
各仮想サーバ１２０1、１２０2、…、１２０Nにおいて、取込制御部１２１０は、管理サーバ１１０から受信した取得指示に従い、データ記憶部１１４から、非公開リポジトリ３００に格納される、非公開アプリケーション３１０に係る一連のデータを取得する（ステップＳ１０７、ステップＳ１０８）。各仮想サーバ１２０1、１２０2、…、１２０Nの取込制御部１２１０は、取得した当該データを、例えばストレージ１２０３に格納し、当該データに基づき非公開アプリケーション３１０を形成し起動させる（ステップＳ１０９）。
【００６７】
ここで、当該データは、一般的にはデータ量が大きいデータとなる。したがって、各仮想サーバ１２０1、１２０2、…、１２０Nにおいて、取込制御部１２１０による当該データに係る処理が失敗するおそれがある。例えば、データの取得開始から所定の時間が経過してもデータの取得が完了しない場合に、当該処理が失敗したと判定できる。また、当該データに基づく非公開アプリケーション３１０の形成および起動が所定時間経過しても完了しない場合も、当該処理に失敗したと判定できる。
【００６８】
各取込制御部１２１０は、当該データの取得など、当該データに係る処理に成功した場合、公開アプリケーションリンク変数３１３の値に、バージョンアップした新アプリケーション、すなわち、非公開アプリケーション３１０を示す値をセットする。一方、各取込制御部１２１０は、当該データに係る処理に失敗したと判定した場合、公開アプリケーションリンク変数３１３の値に、非公開アプリケーション３１０を示す値をセットすることができない。この場合、当該データに係る処理に失敗した取込制御部１２１０は、同じ仮想サーバに含まれる入替制御部１２１１に対して警告を通知する。
【００６９】
制御部１１１は、また、操作端末１３０から受け取った時間指定に従い、要求部１１１０により、デプロイを開始する時間を設定する（ステップＳ１１０）。制御部１１１は、要求部１１１０により、設定された時間を、各仮想サーバ１２０1、１２０2、…、１２０Nに同時に送信する（ステップＳ１１１）。
【００７０】
管理サーバ１１０から送信されたデプロイ開始時間は、各仮想サーバ１２０1、１２０2、…、１２０Nにおいて入替制御部１２１１に受け取られる。各仮想サーバ１２０1、１２０2、…、１２０Nの入替制御部１２１１は、管理サーバ１１０から受信したデプロイ開始時間を、バージョンアップを行うためのプログラム（バージョンアッププログラムと呼ぶ）の起動時間として設定する。すなわち、このデプロイ開始時間に従い開始されるデプロイ処理は、このバージョンアッププログラムにより実行される。入替制御部１２１１は、このバージョンアッププログラムによる機能を含むことができる。
【００７１】
制御部１１１は、操作端末１３０に対して、デプロイ開始時間が各仮想サーバ１２０1、１２０2、…、１２０Nに通知された旨を通知する（ステップＳ１１２）。
【００７２】
管理サーバ１１０および各仮想サーバ１２０1、１２０2、…、１２０Nは、それぞれ時間を計測し、現在時刻が操作端末１３０から指定されたデプロイ開始時間になったか否かを判定する。
【００７３】
管理サーバ１１０において、制御部１１１は、現在時刻が指定されたデプロイ開始時間になったと判定した場合（ステップＳ２００）、リポジトリの入替え処理を実行する（ステップＳ２０１）。
【００７４】
リポジトリの入替え処理において、制御部１１１は、データ入力部１１３に対して、リポジトリの入替えを要求する（ステップＳ２０２）。データ入力部１１３は、この要求に応じて、データ記憶部１１４に対して、公開リポジトリリンク変数３０３の値の書き換えを要求する（ステップＳ２０３）。データ記憶部１１４は、この要求に応じて、公開リポジトリリンク変数３０３の値を、公開リポジトリ３０１を示す値から非公開リポジトリ３００を示す値に書き換える。これにより、非公開リポジトリ３００が公開リポジトリ３０１に入れ替わる。
【００７５】
データ記憶部１１４は、公開リポジトリリンク変数３０３の値の書き換えが終了すると、その旨をデータ入力部１１３を介して制御部１１１に通知する（ステップＳ２０４、ステップＳ２０５）。
【００７６】
一方、各仮想サーバ１２０1、１２０2、…、１２０Nにおいて、入替制御部１２１１は、現在時刻が指定されたデプロイ開始時間になったと判定した場合（ステップＳ２００’）、アプリケーションの切り換え処理を実行する（ステップＳ２１０）。このステップＳ２００’および上述のステップＳ２００の時間が、図９を用いて説明した時間ｔchangeに対応する。
【００７７】
図１１は、第１の実施形態に係る、各仮想サーバ１２０1、１２０2、…、１２０Nにおけるアプリケーションの入替え処理を示す一例のフローチャートである。この図１１のフローチャートによる処理は、ステップＳ２００’で現在時刻が指定されたデプロイ開始時間になったことをトリガとして、各仮想サーバ１２０1、１２０2、…、１２０Nにおいて並列的に実行される。
【００７８】
ここでは、各仮想サーバ１２０1、１２０2、…、１２０Nを、仮想サーバ１２０1で代表させて説明を行う。以下に説明する、仮想サーバ１２０1における処理は、他の仮想サーバ１２０2、…、１２０Nについても、それぞれ同様に適用できる。
【００７９】
仮想サーバ１２０1において、入替制御部１２１１は、上述したステップＳ１０７、ステップＳ１０８の処理（図１０参照）において、当該仮想サーバ１２０1における取込制御部１２１０が非公開アプリケーション３１０に係る一連のデータの取得に失敗した旨を示す警告の有無を判定する。入替制御部１２１１は、警告が無いと判定した場合（ステップＳ１０、「無し」）、処理をステップＳ１１に移行させる。
【００８０】
ステップＳ１１で、入替制御部１２１１は、公開アプリケーションリンク変数３１３の値を、新しいアプリケーションのリンク変数、すなわち、非公開アプリケーションリンク変数３１２の値に書き換える。
【００８１】
次のステップＳ１２で、入替制御部１２１１は、実行プロセスを新しいアプリケーションのプロセスに切り換える。より具体的には、ステップＳ１２で、入替制御部１２１１は、ステップＳ１１で書き換えられたリンク変数に従い、非公開アプリケーション３１０のプロセスを、新たな公開アプリケーション３１１のプロセスとする。
【００８２】
次のステップＳ１３で、入替制御部１２１１は、古いアプリケーションのプロセスに終了指示を送る。より具体的には、ステップＳ１３で、入替制御部１２１１は、当該仮想サーバ１２０1においてステップＳ１２の処理以前から起動されている公開アプリケーション３１１のプロセスに終了指示を送る。
【００８３】
次のステップＳ１４で、入替制御部１２１１は、図１０のステップＳ１１０で管理サーバ１１０から送信されたデプロイ開始時間の通知に従ったバージョンアッププログラムの起動時間の設定を解除する。この、バージョンアッププログラムの起動時間の設定解除により、仮想サーバ１２０1におけるアプリケーションの入替え処理が完了し、図１１のフローチャートによる一連の処理が終了される。
【００８４】
一方、入替制御部１２１１は、ステップＳ１０で、非公開アプリケーション３１０に係る一連のデータの取得に失敗した旨を示す警告を受けていると判定した場合（ステップＳ１０、「有り」）、処理をステップＳ１５に移行させる。ステップＳ１５で、入替制御部１２１１は、対象の仮想サーバにおけるサービスを再起動させ、図１１のフローチャートによる一連の処理を終了させる。
【００８５】
このように、第１の実施形態に係る情報処理システム１では、各仮想サーバ１２０1、１２０2、…、１２０Nは、非公開アプリケーション３１０の公開アプリケーション３１１への入れ替え処理を、リンク変数の書き換えにより指定の時間において同時に実施する。それと共に、各仮想サーバ１２０1、１２０2、…、１２０Nは、非公開アプリケーション３１０を形成するための非公開リポジトリ３００を、当該指定の時間以前に予め取得しておく。そのため、端末装置３０から見た場合の、各仮想サーバ１２０1、１２０2、…、１２０Nにおける、バージョンアップ前後のアプリケーションの混在の発生が抑制され、システムの安定性が向上される。
【００８６】
さらに、第１の実施形態に係る情報処理システム１では、非公開アプリケーション３１０の公開アプリケーション３１１への入れ替え処理の際に、各仮想サーバ１２０1、１２０2、…、１２０Nのうち、公開アプリケーションリンク変数３１３に、非公開アプリケーション３１０を示す値が設定されていない仮想サーバによるサービスを再起動している。そのため、端末装置３０から見た場合の、各仮想サーバ１２０1、１２０2、…、１２０Nにおける、バージョンアップ前後のアプリケーションの混在の発生を、より確実に抑制でき、システムの安定性をより向上させることができる。
【００８７】
［第１の実施形態に係る、仮想サーバのスケールアウトに対する処理］
次に、サーバ装置１０において、仮想サーバ１２０1、１２０2、…、１２０Nの数を増加させるスケールアウトを実行した場合について説明する。以下では、Ｎ台の仮想サーバ１２０1、１２０2、…、１２０Nに対して、（Ｎ＋１）台目の仮想サーバ１２０N+1を追加した場合について説明する。
【００８８】
第１の実施形態では、公開リポジトリリンク変数３０３の値を非公開リポジトリリンク変数３０２の値に書き換えることで、スケールアウトにより起動される新たな仮想サーバ１２０N+1において実行されるサービス＃（Ｎ＋１）が、新たなアプリケーション（非公開アプリケーション３１０）を取り込むことができる。
【００８９】
ここで、仮想サーバ１２０1、１２０2、…、１２０Nにおける負荷が高くなると自動でサービス（仮想サーバ）が追加されるシステムにおいて、所定の例外ケースを考慮しない場合、アプリケーションの確実なバージョンアップが困難となる。この例外ケースの１つとして、図１０のステップＳ１０５によるデプロイ指示後にスケールアウトが実行された場合が考えられる。この場合、スケールアウトにより追加された仮想サーバ１２０N+1に対して、ステップＳ１１０によるデプロイ開始時間の指定を実行できない。これは、管理サーバ１１０において制御部１１１は、起動中のサービスは、デプロイの対象となる対象サービスとしては検出できないからである。
【００９０】
図１２は、第１の実施形態に係る、デプロイ指示後にスケールアウトが実行された場合の処理を示す一例のシーケンス図である。なお、図１２において、上述した図４および図１０と共通する部分には同一の符号を付して、詳細な説明を省略する。
【００９１】
サーバ装置１０において起動されるサービス＃１、＃２、…、＃Ｎの負荷が、例えば外部サービスにより監視され、当該負荷が所定以上になった場合について考える。この場合、管理サーバ１１０は、仮想サーバ１２０1、１２０2、…、１２０Nに対して新たな仮想サーバ１２０N+1を追加して起動させる（ステップＳ３００）。
【００９２】
追加起動された仮想サーバ１２０N+1は、管理サーバ１１０のデータ入力部１１３に対して、公開リポジトリ３０１の取得を要求する（ステップＳ３０１）。データ入力部１１３は、この要求に応じて、データ記憶部１１４から公開リポジトリ３０１を取得し（ステップＳ３０２、ステップＳ３０３）、取得した公開リポジトリ３０１を仮想サーバ１２０N+1に送信する。仮想サーバ１２０N+1は、管理サーバ１１０のデータ入力部１１３から送信された公開リポジトリ３０１を受信し（ステップＳ３０４）、受信した公開リポジトリ３０１に基づき公開アプリケーション３１１を起動させる（ステップＳ３０５）。
【００９３】
一方、管理サーバ１１０において、制御部１１１は、現在時刻が指定されたデプロイ開始時間になったと判定した場合（ステップＳ２００、図１０参照）、判定部１１１１により、仮想サーバ１２０N+1に対してリリースチェックを実行する（ステップＳ３１１）。判定部１１１１は、このリリースチェックを、各仮想サーバ１２０1、１２０2、…、１２０Nに対しても同時に実行する。
【００９４】
ここで、スケールアウトにより追加されて起動された仮想サーバ１２０N+1は、上述したステップＳ１１０によるデプロイの開始時間の設定が行われていないため、デプロイが実行されていない状態となっている。
【００９５】
ステップＳ３１１のリリースチェックは、サービスが正常に提供可能か否かを、新旧アプリケーションの入れ替え時（図１０のステップＳ２０１およびステップＳ２１０参照）に確認する処理である。管理サーバ１１０において、制御部１１１において、判定部１１１１は、リリースチェックにより、仮想サーバ１２０N+1上で起動された公開アプリケーション３１１のバージョンを取得する（ステップＳ３１２）。
【００９６】
制御部１１１において、判定部１１１１は、ステップＳ３１３で、取得したバージョンと、例えば図１０のステップＳ１０５で操作端末１３０から送信されたバージョンとに基づく判定処理を実行する。制御部１１１において、判定部１１１１により、この判定処理の結果、仮想サーバ１２０N+1から取得したバージョンが、ステップＳ１０５で送信されたバージョンより低いバージョンであると判定された場合、サーバ制御部１１１２は、仮想サーバ１２０N+1に対し、起動中のサービスを停止させる指示を出す（ステップＳ３１４）。
【００９７】
この結果、外部サービスの負荷の検出結果に基づき管理サーバ１１０により仮想サーバのスケールアウトがなされ、スケールアウトで追加された仮想サーバにより、新たなアプリケーション、すなわち、非公開アプリケーション３１０に入れ替えられることで更新された公開アプリケーション３１１が起動される。
【００９８】
なお、上述したように、ステップＳ３１１のリリースチェックは、スケールアウト以前に起動されてる各仮想サーバ１２０1、１２０2、…、１２０Nについても実行される。これら各仮想サーバ１２０1、１２０2、…、１２０Nでは、図１１のフローチャートにおけるステップＳ１０の判定により、公開アプリケーションリンク変数３１３の値に、非公開アプリケーション３１０を示す値がセットされていないとされた場合に、サービスの再起動が実行されている。そのため、各仮想サーバ１２０1、１２０2、…、１２０Nにおいて起動されているサービスについては、その公開アプリケーション３１１のバージョンは、図１０のステップＳ１０５で操作端末１３０から送信されたバージョンと一致している。
【００９９】
このように、第１の実施形態に係る情報処理システム１では、スケールアウトにより追加された仮想サーバ１２０N+1上で実行されるサービス＃（Ｎ＋１）が、非公開アプリケーション３１０に入れ替えられる以前のバージョンの公開アプリケーション３１１によるサービスである場合に、仮想サーバ１２０N+1にて実行されるサービス＃（Ｎ＋１）が停止される。そのため、スケールアウトにより仮想サーバ１２０N+1が追加された場合であっても、端末装置３０から見た場合の、各仮想サーバ１２０1、１２０2、…、１２０N、１２０N+1における、バージョンアップ前後のアプリケーションの混在の発生が抑制される。
【０１００】
［第１の実施形態の変形例］
上述した第１の実施形態では、図１に示したように、操作端末１３０がサーバ装置１０に含まれるように説明したが、これはこの例に限定されない。例えば、操作端末１３０をサーバ装置１０に対する外部装置として構成してもよい。例えば、操作端末１３０は、ネットワーク２を介して、ロードバランサ１００を通さずに管理サーバ１１０と直接的に接続されるように構成できる。この場合、管理サーバ１１０は、図３に示した各仮想サーバ１２０1、１２０2、…、１２０Nと同等の構成を適用できる。その際、通信Ｉ／Ｆ１２０４は、図２に示したデータＩ／Ｆ１１０５の代替として動作させることになる。
【０１０１】
［第２の実施形態］
次に、第２の実施形態について説明する。第２の実施形態は、上述した第１の実施形態に係るアプリケーションの更新方法を、撮像画像に基づく画像検索に応じて連携情報を出力する画像検索システムに適用した例である。
【０１０２】
図１３は、第２の実施形態に係る画像検索システムの一例の構成を示すブロック図である。図１３において、画像検索システム５は、公開サービス部５０と、登録サービス部６０と、を含む。
【０１０３】
第２の実施形態に係る画像検索システム５において、当該画像検索システム５のサービス提供者は、特定の契約を交わした者あるいは組織体に対して、画像検索の対象となる画像と、当該画像に関連付けられる連携情報の、公開用のデータベースへの登録を許可する。以下、サービス提供者と特定の契約を交わした者あるいは組織体を、事業者と呼ぶ。サービス提供者は、事業者の依頼に応じて、事業者から提供された画像および連携情報を公開用のデータベースに登録する。
【０１０４】
画像検索システム５において、公開サービス部５０は、一般ユーザからの検索要求に応じて参照される、公開用のデータベースを含む。一方、画像検索システム５において、登録サービス部６０は、事業者が画像および連携情報を公開用のデータベースに登録する前に、試用にて画像および連携情報を登録する、試用のデータベースを含む。試用のデータベースに登録された画像および連携情報は、サービス提供者により、公開用のデータベースにアップロードされる。
【０１０５】
公開サービス部５０は、画像検索サーバ５００と、ＤＢ（データベース）管理サーバ５０１と、画像検索用ＤＢ５０２と、インタフェース部５０３と、ログ収集サーバ５０４と、を含む。
【０１０６】
インタフェース部５０３は、公開サービス部５０の各部、および、登録サービス部６０とに対するインタフェースである。インタフェース部５０３は、Ｗｅｂアプリに対するインタフェースを含み、例えば検索端末７０に搭載される、この画像検索システム５による画像検索機能を利用するための、Ｗｅｂアプリとして構成される検索アプリと協働して、検索端末７０と画像検索サーバ５００およびＤＢ管理サーバ５０１との間の通信を行う。
【０１０７】
画像検索用ＤＢ５０２は、上述した公開用のデータベースであって、画像と、連携情報とが関連付けられて登録される。画像検索用ＤＢ５０２は、画像を、例えば、画像の特徴を抽出した特徴情報として登録する。連携情報は、例えばＵＲＬ(Uniform  Resource  Locator)である。
【０１０８】
ＤＢ管理サーバ５０１は、ＤＢ管理用アプリケーションプログラム（以下、ＤＢ管理用アプリケーション）が搭載され、このＤＢ管理用アプリケーションにより、画像検索用ＤＢ５０２に登録される特徴情報および連携情報の管理を行う。ＤＢ管理サーバ５０１は、ＤＢ管理用アプリケーションにより、例えば、後述するインタフェース部５０３からの要求に応じて、画像検索用ＤＢ５０２に登録される特徴情報および連携情報を更新する。また、ＤＢ管理サーバ５０１は、ＤＢ管理用アプリケーションにより、後述する画像検索サーバ５００の要求に応じて、画像検索用ＤＢ５０２に登録される特徴情報を参照して、画像検索サーバ５００に返す。
【０１０９】
画像検索サーバ５００は、検索端末７０により被写体７１が撮像された撮像画像と、この撮像画像に基づく画像検索を要求する検索要求とがインタフェース部５０３を介して渡される。画像検索サーバ５００は、インタフェース部５０３から渡された検索要求に従い、撮像画像を解析して特徴情報を抽出する。画像検索サーバ５００は、抽出した特徴情報に基づき、ＤＢ管理サーバ５０１に対して画像検索用ＤＢ５０２に登録される特徴情報の参照を要求し、当該登録される特徴情報から、抽出した特徴情報に対する類似度が高い特徴情報を検索する。
【０１１０】
画像検索サーバ５００は、ＤＢ管理サーバ５０１に対して、検索結果の特徴情報に関連付けられて画像検索用ＤＢ５０２に登録される連携情報を要求する。ＤＢ管理サーバ５０１は、この要求に応じて画像検索用ＤＢ５０２から連携情報を取り出し、画像検索サーバ５００に渡す。画像検索サーバ５００は、ＤＢ管理サーバ５０１から渡された連携情報を、インタフェース部５０３から検索端末７０に返す。
【０１１１】
ログ収集サーバ５０４は、例えば検索端末７０からインタフェース部５０３のアクセスに応じたログ情報を収集し、収集したログ情報を後述するステータスＤＢ６１４に登録する。
【０１１２】
登録サービス部６０は、画像検索サーバ６００と、ＤＢ管理サーバ６０１と、画像検索用ＤＢ６０２と、インタフェース部６０３と、を含む。これら画像検索サーバ６００、ＤＢ管理サーバ６０１および画像検索用ＤＢ６０２は、公開サービス部５０に含まれる画像検索サーバ５００、ＤＢ管理サーバ５０１および画像検索用ＤＢ５０２と同等の機能を有する。ここで、画像検索用ＤＢ６０２は、上述した試用のデータベースである。
【０１１３】
例えば、ＤＢ管理サーバ６０１は、上述したＤＢ管理サーバ５０１と同等のＤＢ管理用アプリケーションが搭載され、当該ＤＢ管理用アプリケーションにより、画像検索用ＤＢ６０２に登録される画像（特徴情報）および連携情報の管理を行う。
【０１１４】
事業者は、検索端末７０を用いて被写体７１を撮像し、撮像画像および検索要求をインタフェース部６０３に送信する。これにより、事業者は、画像検索用ＤＢ６０２に登録された画像を撮像画像に基づき参照し、当該画像に関連付けられて画像検索用ＤＢ６０２に登録された連携情報を取得し、画像検索用ＤＢ６０２に登録された画像および連携情報を確認することができる。
【０１１５】
登録サービス部６０は、さらに、インタフェース部６１０と、ユーザ管理サーバ６１１と、ユーザＤＢ６１２と、ログ管理サーバ６１３と、ステータスＤＢ６１４と、を含む。ユーザ管理サーバ６１１は、ユーザＤＢ６１２に登録されるユーザ情報を管理する。ログ管理サーバ６１３は、ステータスＤＢ６１４に格納されるログ情報を管理する。
【０１１６】
インタフェース部６０３および６１０は、Ｗｅｂアプリに対応するインタフェースを含む。インタフェース部６０３は、例えば編集端末８１に搭載される、提供者が画像検索用ＤＢ６０２に対する画像（特徴情報）の登録、当該画像に関連付けられる連携情報の設定などを行うための、Ｗｅｂアプリとして構成される編集ツールと協働して、編集端末８１と画像検索サーバ６００およびＤＢ管理サーバ６０１との間の通信を行う。
【０１１７】
インタフェース部６１０は、編集端末８１に搭載される、提供者がユーザ管理サーバ６１１によるユーザ情報の管理を行うための、Ｗｅｂアプリとして構成される管理ツールと協働して、編集端末８１とユーザ管理サーバ６１１との間の通信を行う。なお、編集端末８１は、ログ管理サーバ６１３とは、直接的に通信を行い、ステータスＤＢ６１４に格納されるログ情報を閲覧することが可能である。
【０１１８】
メンテナンス用端末８０は、画像検索用ＤＢ５０２に登録される画像（特徴情報）および連携情報のメンテナンスを行う。また、メンテナンス用端末８０は、画像検索用ＤＢ６０２に登録される画像（特徴情報）および連携情報を、公開サービス部５０内の画像検索用ＤＢ５０２にアップロードする。このアップロードの際に、メンテナンス用端末８０は、ＤＢ管理サーバ５０１に搭載されるＤＢ管理用アプリケーションを、ＤＢ管理サーバ６０１に搭載されるＤＢ管理用アプリケーションに基づき更新する。この、メンテナンス用端末８０による画像および連携情報のアップロード、および、ＤＢ管理用アプリケーションの更新は、例えば、バッチ処理により、開始時間を夜間に指定して実行される。
【０１１９】
ここで、画像検索システム５において、ＤＢ管理サーバ５０１は、多数の一般ユーザによる撮像画像および検索要求にそれぞれ対応する必要がある。同様に、ＤＢ管理サーバ６０１は、多数の事業者による撮像画像および検索要求にそれぞれ対応する必要がある。
【０１２０】
したがって、ＤＢ管理サーバ５０１および６０１は、図１などを用いて説明したサーバ装置１０と同様に、それぞれ、管理サーバ１１０と、複数の仮想サーバ１２０1、１２０2、…、１２０Nと、を含み、これら各仮想サーバ１２０1、１２０2、…、１２０Nにおいて、ＤＢ管理用アプリケーションが起動される構成となっている。管理サーバ１１０は、例えばＤＢ管理サーバ６０１に含まれる。また、ＤＢ管理サーバ５０１および６０１は、起動される仮想サーバ１２０1、１２０2、…、１２０Nの数を、負荷に応じて変更できる。
【０１２１】
上述した第１の実施形態に係るアプリケーションの更新方法は、ＤＢ管理サーバ５０１および６０１に対して適用される。より具体的には、メンテナンス用端末８０のバッチ処理により、画像検索用ＤＢ６０２の登録内容が画像検索用ＤＢ５０２にアップロードされ、それに伴い、ＤＢ管理サーバ５０１に搭載されるＤＢ管理用アプリケーションがＤＢ管理サーバ６０１に搭載されるＤＢ管理用アプリケーションの内容を反映させてアップデートされる処理に、第１の実施形態に係るアプリケーションの更新方法が適用される。
【０１２２】
図７を参照し、例えば、公開リポジトリ３０１および公開アプリケーション３１１がＤＢ管理サーバ５０１に含まれ、非公開リポジトリ３００および非公開アプリケーション３１０がＤＢ管理サーバ６０１に、それぞれ含まれる構成とすることができる。例えば、メンテナンス用端末８０は、バッチ処理により、画像検索用ＤＢ６０２に登録される画像および連携情報を、インタフェース部６０３および５０３を介して画像検索用ＤＢ５０２にアップロードおよび登録する。また、メンテナンス用端末８０は、バッチ処理により、例えば図１０に示した操作端末１３０による処理を自動実行する。
【０１２３】
このように、第２の実施形態では、公開サービス部５０および登録サービス部６０を含む画像検索システム５に対して、第１の実施形態に係るアプリケーションの更新方法を適用している。そのため、多数の一般ユーザが、各自の検索端末７０に搭載される検索アプリを利用して、公開サービス部５０に対して画像検索を要求した場合であっても、ＤＢ管理サーバ５０１に搭載されるＤＢ管理アプリケーションにおける新旧バージョンの混在によるデータ不整合を抑制でき、システムの安定性を向上させることができる。
【０１２４】
なお、上述の各実施形態は、本発明の好適な実施の例ではあるがこれに限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変形による実施が可能である。
【符号の説明】
【０１２５】
１  情報処理システム
２  ネットワーク
５  画像検索システム
１０  サーバ装置
３０  端末装置
５０  公開サービス部
６０  登録サービス部
７０  検索端末
８０  メンテナンス用端末
８１  編集端末
１１０  管理サーバ
１１１  制御部
１１３  データ入力部
１１４  データ記憶部
１２０1，１２０2，…，１２０N，１２０N+1  仮想サーバ
１２１  更新実行部
１３０  操作端末
３００  非公開リポジトリ
３０１  公開リポジトリ
３０２  非公開リポジトリリンク変数
３０３  公開リポジトリリンク変数
３１０  非公開アプリケーション
３１１  公開アプリケーション
３１２  非公開アプリケーションリンク変数
３１３  公開アプリケーションリンク変数
５００，６００  画像検索サーバ
５０１，６０１  ＤＢ管理サーバ
５０２，６０２  画像検索用ＤＢ
１１１０  要求部
１１１１  判定部
１１１２  サーバ制御部
１２１０  取込制御部
１２１１  入替制御部
【先行技術文献】
【特許文献】
【０１２６】
【特許文献１】特許第４５３２９４６号公報
【図１】
2019164531.tif 000004
【図２】
2019164531.tif 000005
【図３】
2019164531.tif 000006
【図４】
2019164531.tif 000007
【図５】
2019164531.tif 000008
【図６】
2019164531.tif 000009
【図７】
2019164531.tif 000010
【図８】
2019164531.tif 000011
【図９】
2019164531.tif 000012
【図１０】
2019164531.tif 000013
【図１１】
2019164531.tif 000014
【図１２】
2019164531.tif 000015
【図１３】
2019164531.tif 000016