(57)【特許請求の範囲】
【請求項１】
１又は複数のサーバを有し、各クライアントから要求されるトランザクションを処理するトランザクション制御システムであって、
前記トランザクションを処理する１又は複数の処理部と、
前記処理部を起動し、該処理部に関する第１情報を付与する管理部と、
前記クライアントからトランザクションのルーティングに関する第２情報とともにトランザクションの処理要求を受け付け、前記第２情報及び前記管理部から通知された前記第１情報に基づいて決定した処理部に、前記トランザクションをルーティングするルーティング部と、
を備え、
前記ルーティング部は、
機能ごとにキューを有し、所定の機能を示す第２情報とともにトランザクションをクライアントから受け付けた場合、前記第１情報及び前記第２情報に基づいて、該第２情報が示す所定の機能に対応するキューに関連付けられた前記処理部の群の中から、ルーティングする処理部を決定する、トランザクション制御システム。
【請求項２】
前記第１情報は、前記処理部のバージョン情報である、請求項１記載のトランザクション制御システム。
【請求項３】
前記ルーティング部は、
前記管理部から、前記第２情報は同じであるが前記バージョン情報が異なる処理部への切り替えと、該処理部の異なるバージョン情報が通知された場合、前記クライアントからトランザクションとともに前記第２情報を取得すると、前記異なるバージョン情報の処理部に切り替えて前記トランザクションをルーティングする、請求項２記載のトランザクション制御システム。
【請求項４】
前記第１情報は、クライアントアプリケーションの審査又は本番を示す情報である、請求項１記載のトランザクション制御システム。
【請求項５】
前記ルーティング部は、
前記管理部から、前記審査を示す第１情報が通知された場合、前記クライアントからトランザクションとともに前記第２情報を取得すると、該トランザクションを前記審査に対応する処理部にルーティングし、
前記管理部から、前記本番を示す第１情報が通知された場合、前記クライアントからトランザクションとともに前記第２情報を取得すると、該トランザクションを前記本番に対応する処理部にルーティングする、請求項４記載のトランザクション制御システム。
【請求項６】
１又は複数のサーバを有し、各クライアントから要求されるトランザクションを処理するトランザクション制御システムにおいて、前記トランザクション制御システムに含まれる処理装置が行うトランザクション制御方法であって、
前記トランザクションを処理する１又は複数の処理部が起動された場合、該処理部に関する第１情報を取得する取得ステップと、
前記クライアントからトランザクションとともに処理部へのルーティングに関する第２情報を受け付ける受付ステップと、
受け付けられた前記第２情報と、取得された前記第１情報とに基づいて決定した処理部に、前記トランザクションをルーティングするルーティングステップと、
を有し、
前記ルーティングステップは、
機能ごとにキューを有し、所定の機能を示す第２情報とともにトランザクションをクライアントから受け付けた場合、前記第１情報及び前記第２情報に基づいて、該第２情報が示す所定の機能に対応するキューに関連付けられた前記処理部の群の中から、ルーティングする処理部を決定する、トランザクション制御方法。
【請求項７】
請求項６に記載のトランザクション制御方法を処理装置に実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、トランザクション制御システム、トランザクション制御方法及びプログラムに関する。
【背景技術】
【０００２】
従来、仮想化技術は、物理的には一台のコンピュータを、仮想的に複数台のコンピュータとして利用することを可能としている。つまり、仮想化技術によって、ハードウェアをソフトウェア化することが可能となり、サーバイメージをコピーして、必要なサーバ数を確保することができるようになっている。
【０００３】
他方、一台の大きなサーバではなく、複数の小さなサーバに処理を分担させることにより性能を上げていく分散システムが、大量データを高速に保管・検索できる仕組みや、大規模なバッチシステムを分散して性能を上げていく仕組みなど、様々な分野で実用化されている。このような分散システムは、従来システムが一か所で行っていた機能を、複数のコンピュータで分散させながら、あたかも一台のコンピュータのように動作する。
【０００４】
このような仮想化技術や大規模分散技術等をベースにして、近年クラウドと総称されるサービスが、ネットワーク上で提供されている。主なクラウドサービスとして、例えば、Ａｍａｚｏｎ  Ｗｅｂ  Ｓｅｒｖｉｃｅｓ（商標）などが知られている（非特許文献１参照）。
【０００５】
また、大規模分散技術で求められる負荷分散について、ロードバランサを用いて、処理装置１台あたりの負荷を抑えることが知られている（非特許文献２参照）。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】「Ａｍａｚｏｎ  Ｗｅｂ  Ｓｅｒｖｉｃｅｓ」、［ｏｎｌｉｎｅ］、［平成２６年１２月１９日検索］、インターネット＜ＵＲＬ：http://aws.amazon.com/jp/＞
【非特許文献２】「ＩＴ用語辞典  ｅ−Ｗｏｒｄｓ」、［ｏｎｌｉｎｅ］、［平成２６年１２月１９日検索］、インターネット＜ＵＲＬ：http://e-words.jp/w/E383ADE383BCE38389E38390E383A9E383B3E382B5.html＞
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ところで、クラウド環境では、クライアントのニーズに合わせて、小規模から大規模までのトランザクションに対応可能なサーバシステムを実現することが求められている。
【０００８】
他方、クラウド環境において、サーバを切り替えたり、追加したりする際に、クラウド環境で提供しているサービスを停止させないことが求められる。上述のロードバランサでは、サーバを装置単位で切り替えてサービスを停止させないことは可能であるが、小規模のトランザクションを処理する処理部単位での切り替えは困難である。
【０００９】
そこで、本発明は、かかる実情に鑑み、小規模から大規模までのトランザクションに対応可能であり、サービスが停止しないような運用を実現することができるトランザクション制御システム、トランザクション制御方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明の一態様によるトランザクション制御システムは、１又は複数のサーバを有し、各クライアントから要求されるトランザクションを処理するトランザクション制御システムであって、前記トランザクションを処理する１又は複数の処理部と、前記処理部を起動し、該処理部に関する第１情報を付与する管理部と、前記クライアントからトランザクションのルーティングに関する第２情報とともにトランザクションの処理要求を受け付け、前記第２情報及び前記管理部から通知された前記第１情報に基づいて決定した処理部に、前記トランザクションをルーティングするルーティング部と、を備える。
【００１１】
また、前記第１情報は、前記処理部のバージョン情報であってもよい。
【００１２】
また、前記ルーティング部は、前記管理部から、第２情報は同じであるが前記バージョン情報が異なる処理部への切り替えと、該処理部の異なるバージョン情報が通知された場合、前記クライアントからトランザクションとともに前記第２情報を取得すると、前記異なるバージョン情報の処理部に切り替えて前記トランザクションをルーティングしてもよい。
【００１３】
また、前記第１情報は、クライアントアプリケーションの審査又は本番を示す情報であってもよい。
【００１４】
また、前記ルーティング部は、前記管理部から、前記審査を示す第１情報が通知された場合、前記クライアントからトランザクションとともに前記第２情報を取得すると、該トランザクションを前記審査に対応する処理部にルーティングし、前記管理部から、前記本番を示す第１情報が通知された場合、前記クライアントからトランザクションとともに前記第２情報を取得すると、該トランザクションを前記本番に対応する処理部にルーティングしてもよい。
【００１５】
また、前記ルーティング部は、機能ごとにキューを有し、所定の機能におけるトランザクションをクライアントから要求された場合、該所定の機能に対応するキューに関連付けられた前記処理部の群の中から、前記第１情報及び前記第２情報に基づいてルーティングする処理部を決定してもよい。
【００１６】
また、本発明の一態様によるトランザクション制御方法は、１又は複数のサーバを有し、各クライアントから要求されるトランザクションを処理するトランザクション制御システムにおいて、前記トランザクション制御システムに含まれる処理装置が行うトランザクション制御方法であって、前記トランザクションを処理する１又は複数の処理部が起動された場合、該処理部に関する第１情報を取得する取得ステップと、前記クライアントからトランザクションとともに処理部へのルーティングに関する第２情報を受け付ける受付ステップと、受け付けられた前記第２情報と、取得された前記第１情報とに基づいて決定した処理部に、前記トランザクションをルーティングするルーティングステップと、を有する。
【００１７】
また、本発明の一態様によるプログラムは、前記トランザクション制御方法をコンピュータに実行させる。
【発明の効果】
【００１８】
本発明によれば、小規模から大規模までのトランザクションに対応可能であり、サービスが停止しないような運用を実現することができる。
【図面の簡単な説明】
【００１９】
【図１】クラウドコンピューティング環境の概略構成を示す図である。
【図２】仮想化技術及び分散化技術の概要を示す図である。
【図３】実施形態におけるコンピュータ装置の概略ハードウェア構成の一例を示すブロック図である。
【図４】実施形態によるトランザクション制御システムの概略機能構成の一例を示すブロック図である。
【図５】実施形態におけるトランザクションの割り振り処理の一例を示すシーケンス図である。
【図６】実施形態におけるバージョン切り替え処理の一例を示すシーケンス図である。
【図７】実施形態における審査時の切り替え処理の一例を示すシーケンス図である。
【発明を実施するための形態】
【００２０】
以下、本発明の実施の形態について図面を参照しつつ詳細に説明する。なお、同一の要素には同一の符号を付し、重複する説明を省略する。また、以下の実施の形態は、本発明を説明するための例示であり、本発明をその実施の形態のみに限定する趣旨ではない。さらに、本発明は、その要旨を逸脱しない限り、さまざまな変形が可能である。
【００２１】
＜クラウド環境＞
図１は、本発明によるトランザクション制御システム１の前提となるクラウドコンピューティング環境（クラウド環境）の概略構成を示す図である。同図に示すように、クラウドコンピューティング環境においては、ユーザ端末装置１２がネットワークＮを介してクラウド１０に接続される。
【００２２】
クラウド１０は、ソフトウェアやハードウェア、データ保管領域などのコンピューティングリソースの利用を、ネットワークＮを通じてサービスとして利用者に提供するシステムの総称であり、一般的には、大規模なデータセンターや、その中で運用されている複数のサーバ装置などを含む。
【００２３】
ＡＳＰサービスやユーティリティコンピューティング、グリッドコンピューティング、ＳａａＳ、ＰａａＳ、又はＢａａＳなどを包含した、より包括的な概念であるともいえる。ユーザ端末装置１２の側から見れば、クラウド１０は、ネットワークＮの向こう側にあり、ユーザ端末装置１２に何らかのサービスを提供するコンピュータリソースの総称であるともいえる。本実施形態は、パブリッククラウド、プライベートクラウド、ハイブリッドクラウドを含む、あらゆるクラウド環境に適用可能である。
【００２４】
好適には、クラウド１０内のネットワーク上に分散して存在する物理的なディスクや物理的なサーバは、仮想化して論理的に管理される。さらに、仮想化して管理されるリソースのうち、稼動していないものはリソースプールに登録しておき、トランザクション制御システム１は、変動する要求を予め予測し、リソースプールから適切にリソースを割当てる。そして、トランザクション制御システム１は、タスクを割り振って、スケーラブルなサービス提供を保障する。
【００２５】
ユーザ端末装置１２は、利用者がクラウド１０を利用するための端末装置であり、ネットワークＮへの接続環境とユーザ端末装置１２上で動くブラウザを含む。このようなユーザ端末装置１２としては、パーソナルコンピュータ（ＰＣ）、携帯情報端末装置（ＰＤＡ）、タブレット型端末装置、携帯電話機、スマートフォンなどを含む。
【００２６】
ネットワークＮは、クラウド１０とユーザ端末装置１２との間でデータ等を送受信するための通信回線である。例えば、インターネット、ＬＡＮ、専用線、パケット通信網、電話回線、企業内ネットワーク、その他の通信回線、それらの組み合わせ等のいずれであってもよく、有線であるか無線であるかを問わない。
【００２７】
図２は、本発明によるトランザクション制御システム１の前提となる仮想化技術及び分散化技術の概要を示す図である。同図に示すように、物理的なコンピュータ装置２０の群は、分散化技術により、コンピュータ装置２０の群で機能や処理を分散させながら、あたかも一台のコンピュータ２２のように動作する。例えば、コンピュータ装置２０の群は、ネットワーク２２１を通じて、仮想的な１台のハードウェア２２２の上でオペレーティング・システム（ＯＳ）２２３が動いているように動作する。
【００２８】
また、仮想化技術により、一台のコンピュータ２２のように動作するコンピュータ装置２０の群を、仮想的に複数のコンピュータ（サーバを含む）２４として利用することができる。つまり、ハードウェアのソフトウェア化である。この仮想化技術によって、仮想化されたサーバ２４をコピーすれば、同じサーバのレプリケーション（複製）を作成できるため、サーバイメージをコピーすることによって、必要なサーバ数を確保することができるようになる。
【００２９】
また、サーバ数を減らす場合は、サーバイメージを削除すればよい。仮想化の一例としては、図２に示すように、ＫＶＭ（Ｋｅｒｎｅｌ−ｂａｓｅｄ Ｖｉｒｔｕａｌ Ｍａｃｈｉｎｅ）と呼ばれる仮想化ソフト２２４上でＯＳ２２５が動く。そのＯＳ２２５の上では、Ｊａｖａ Ｖｉｒｔｕａｌ Ｍａｃｈｉｎｅ（ＪＶＭ。なお、Ｊａｖａは登録商標。）のような別の仮想化環境２２６が動き、その上でミドルウェア２２７があり、アプリケーション２２８が動く。
【００３０】
＜ハードウェア構成＞
図３は、実施形態におけるコンピュータ装置２０の概略ハードウェア構成の一例を示すブロック図である。図３に示すように、コンピュータ装置２０は、ＣＰＵ（Central Processing Unit）３０２と、ＲＡＭ（Random Access Memory）３０４と、ＲＯＭ（Read only Memory）３０６と、ドライブ装置３０８と、ネットワークＩ／Ｆ（Interface）３１０と、入力装置３１２と、を有する。これら各構成は、バスを介して相互にデータ送受信可能に接続されている。
【００３１】
ＣＰＵ３０２は、コンピュータ装置の中で、各装置の制御やデータの演算、加工を行う制御部である。また、ＣＰＵ３０２は、ＲＡＭ３０４又はＲＯＭ３０６に記憶されたプログラムを実行する演算装置である。
【００３２】
ＲＡＭ３０４は、例えば主記憶部などである。ＲＡＭ３０４は、ＣＰＵ３０２が実行する基本ソフトウェアであるＯＳ（Operating System）やアプリケーションソフトウェアなどのプログラムやデータを記憶又は一時保存する記憶装置である。
【００３３】
ＲＯＭ３０６は、例えばアプリケーションソフトウェアなどに関連するデータを記憶する記憶装置である。
【００３４】
ドライブ装置３０８は、記録媒体３１６、例えばＣＤ−ＲＯＭやＳＤカードなどからプログラムやデータを読み出し、記憶装置にインストールしたりダウンロードしたりする。
【００３５】
また、記録媒体３１６に、所定のプログラムを格納し、この記録媒体３１６に格納されたプログラムはドライブ装置３０８を介してコンピュータ装置２０にインストールされる。インストールされた所定のプログラムは、コンピュータ装置２０により実行可能となる。
【００３６】
ネットワークＩ／Ｆ３１０は、通信機能を有する周辺機器とコンピュータ装置２０とのインターフェースである。また、ネットワークＩ／Ｆ３１０は、例えば、有線及び／又は無線回線などのデータ伝送路により構築されたＬＡＮ（Local Area Network）、ＷＡＮ（Wide Area Network）などのネットワークを介して接続される。
【００３７】
入力装置３１２は、カーソルキー、数字入力及び各種機能キー等を備えたキーボード等を有する。
【００３８】
以上のように、コンピュータ装置２０は、コンピュータの動作や処理を制御するためのＣＰＵなどの処理装置、データの格納や処理の作業領域として機能するメモリや記憶装置、入出力インターフェース、通信インターフェース、及びこれらを結ぶバスを含むことが好ましい。
【００３９】
また、コンピュータ装置２０の群は、単一のコンピュータより構成されるものであっても、ネットワーク上に分散した複数のコンピュータより構成されるものであってもよい。各コンピュータは、処理装置がメモリまたは記憶装置などに記憶された所定のプログラムを実行することにより、各種機能実現手段として各コンピュータを機能させる。
【００４０】
＜機能構成＞
図４は、実施形態によるトランザクション制御システム１の概略機能構成の一例を示すブロック図である。図４に示すように、トランザクション制御システム１は、ルーティン部４０２、認証部４０４、処理部４０６Ａ、４０６Ｂ、ＤＢ４０８、管理部４１０等を有する。処理部について、それぞれの区別が必要ない場合は、符号４０６が用いられる。
【００４１】
それぞれの機能は、各コンピュータ装置２０に実装されてもよいし、複数の機能が１つのコンピュータ装置２０に実装されてもよい。例えば、処理部４０６Ａ、４０６Ｂは、１つのコンピュータ装置２０に実装されてもよい。また、各部は、例えばコンピュータ装置２０のＣＰＵ３０２やＲＡＭ３０４、ＲＯＭ３０６などにより実現されうる。
【００４２】
トランザクション制御システム１は、ユーザ端末装置（以下、クライアントとも言う。）１２Ａ〜Ｃのブラウザではなく、所定のアプリケーションからの要求に基づいて動作する。そのため、トランザクション制御システム１は、クライアント１２Ａ〜Ｃとの間において、アプリケーションに必要な情報のやり取りを行う。クライアントについて、それぞれを区別する必要がない場合は、符号１２が用いられる。
【００４３】
クライアント１２は、例えばウェアラブル端末や、パソコンやタブレットやスマートフォンのアプリケーション、又は車載組み込み機器などである。これらのクライアント１２は、インストールされたアプリケーションなどからトランザクションを要求する。このとき、クライアント１２は、トランザクションのルーティングに関するルーティングキー（Routing Key）をトランザクションに付与して要求する。以下、ルーティングキーは、第２情報とも称す。
【００４４】
ルーティング部４０２は、トランザクションルーター（Transaction Router）としての機能を有する。ルーティング部４０２は、クライアント１２からの要求を受け付ける。このとき、ルーティング部４０２は、第２情報をトランザクションの要求と合わせて受け付ける。
【００４５】
ルーティング部４０２は、所定のクライアントから第２情報を取得すると、この第２情報と、後述する管理部４１０により付与された第１情報とに基づいて、トランザクションが割り振られる処理部４０６を決定し、トランザクションをルーティングする。この制御を行うことで、トランザクション制御システム１は、稼働中の処理部に適切にルーティングすることができ、無停止状態のサービスを提供することが可能になる。
【００４６】
ルーティング部４０２は、トランザクションの結果を、このトランザクションを要求した所定のクライアントに通知する。
【００４７】
ルーティング部４０２は、機能ごとに対応するキュー（Queue）を有する。このキューには、そのキューに対応する機能を実行する処理部４０６の群が関連付けられる。この場合、ルーティング部４０２は、機能を示す第２情報とトランザクションとをクライアント１２から取得し、機能に対応するキューにトランザクションを入れる。キューから出されるトランザクションは、そのキューに対応する処理部４０６にルーティングされる。このときの第２情報は、トランザクションの機能を示す情報であってもよい。
【００４８】
ここで、ルーティング部４０２の割り振り先について具体的に説明する。例えば、ルーティング部４０２は、単純なクラウド系トランザクションを、直接ＤＢ４０８に割り振る。これにより、セーブデータの保存、検索などの単純なデータアクセスは、ノンプログラミングで実現することができるだけではなく、レイテンシを最小化させることができる。
【００４９】
また、ルーティング部４０２は、サーバ側ロジックと連携するため、処理部４０６にトランザクションを割り振る。このとき、クライアント１２からは、割り振って欲しい処理部を識別するために、第２情報が指定される。
【００５０】
ルーティング部４０２は、この第２情報を基に、トランザクションを適切な処理部４０６に割り振る。アクセスの集中が予測される機能の場合には、事前に同じ第２情報で動作する処理部４０６が複数用意されることで、スループットを上げることができる。
【００５１】
さらに、ルーティング部４０２は、クライアント間通信をサポートする。ルーティング部４０２は、クライアント間通信に対して、１：Ｎの同報通信をサポートし、チャットやＭＭＯ（Massively Multiplayer Online）などの同期型アプリケーションをサポートする。
【００５２】
なお、ルーティング部４０２は、他のルーティング部と連携することも可能である。これにより、ルーティング部同士を複数組み合わせることで、遠隔地にあるルーティング部同士の連携や、特別な機能を持つ処理部の群やダイレクトＤＢ機能との連携を行うことができる。
【００５３】
認証部４０４は、ユーザ認証を行い、認証については、例えばＯＡｕｔｈ２により行われる。また、認証部４０４は、ソーシャルネットワークなどとの連携を行い、ユーザ登録をすることなく、内部的にPlayerID、端末IDを自動発行するとともにPlayerIDと端末IDとの紐付登録を行うことで、異なるデバイス間でセーブデータの共有を行うことができる。また、認証部４０４は、なりすまし防止として、例えばＸ．５０９証明書を使い、改ざん防止を行う。
【００５４】
処理部４０６は、ワーカー（Worker）とも呼ばれ、クライアント１２が要求したトランザクションを処理する。処理部４０６には、ルーティングに関する第２情報が付与されている。処理部４０６は、トランザクション制御システム１に登録されれば実現される。この処理部４０６の作成は、開発者のローカル端末で行うことでき、トランザクション制御システム１に登録することができる。
【００５５】
処理部４０６が登録された後、処理部４０６の数と稼働させるインスタンスが指定されると、トランザクション制御システム１と処理部４０６とが接続され、クライアント１２からのトランザクションが流れる。処理部４０６には、それぞれ第２情報が与えられており、同じ第２情報を持つ処理部４０６に対して、ルーティング部４０２は、順番にトランザクションを割り振る。よって、同じソースコードの処理部４０６だけではなく、異なるソースコードの処理部４０６であっても、第２情報が同じであれば、順番にトランザクションが割り振られる。
【００５６】
なお、処理部４０６は、ＳＤＫ（Software Development Kit）が提供され、ＳＤＫには処理部４０６を実行するためのライブラリやトランザクション制御システム１にデプロイするためのツールが含まれる。処理部４０６を実行するために必要なモジュール類は、処理部４０６の実行環境であるコンテナにインストールしておくことで、デプロイ後すぐに処理部４０６が実行可能となる。
【００５７】
処理部４０６のバージョン管理について、トランザクション制御システムにデプロイされた処理部４０６は、コンテナは、内部でバージョン管理される。後述するように、このバージョン切り替えは、無停止で実行することができる。
【００５８】
処理部４０６は、それぞれ分離されたコンテナで動作するため、同じインスタンスを共有しつつ相互に隔離された環境で動作する。これにより、処理部４０６は、必要最低限のインスタンスで動作させることが可能になる。
【００５９】
ＤＢ４０８は、サービスに関するデータを保持するデータベースである。ＤＢ４０８は、このＤＢに対するアクセス制御をユーザごとに指定することができる。ＤＢ４０８は、例えばＣｌｏｕｄ  Ｄａｔａｓｔｏｒｅ、Ｃｌｏｕｄ  ＳＱＬ（登録商標）、ＢｉｇＱｕｅｒｙ（登録商標）、ＭｏｎｇｏＤＢ（登録商標）、ｒｅｄｉｓ、ＭｙＳＱＬ（登録商標）などである。
【００６０】
管理部４１０は、処理部４０６の起動、停止を制御し、処理部４０６に関する第１情報を付与する。例えば、第１情報とは、バージョンを示すバージョン情報や、クライアントアプリケーションの審査又は本番を示す情報などである。審査とは、例えば、アプリケーション提供側が行う審査であり、市場に提供するに値するか否かの審査である。本番とは、例えば市場にアプリケーションを提供した後の処理である。
【００６１】
管理部４１０は、処理部４０６のバージョン切り替えが行われる場合、旧バージョンの処理部４０６に停止指示を出し、これらの処理部４０６が全て停止したかどうかを確認する。
【００６２】
管理部４１０は、トランザクションの割り振り停止を予測した後、旧バージョンの処理部４０６に関連づけられているキューの状況とルーティングキーとを使って、停止を指示するトランザクションを、キュー経由で旧バージョンの処理部４０６に投入する。これにより、旧バージョンの処理部４０６が停止する。
【００６３】
次に、エンドノード間の同報通信について説明する。トランザクション制御システム１におけるエンドノードとは、処理部４０６とクライアント１２である。このエンドノード間でＰｕｂ／Ｓｕｂ型の効率のよい同報通信が行われる。
【００６４】
同報通信は、ルーティングキーをベースにグループ化される。そのため、トランザクション制御システム１内で接続されたエンドノード同士で、仮想的に複数のチャネルを設定して通信することができる。
【００６５】
ルーティング部４０２は、管理部４１０から、第２情報は同じであるがバージョン情報が異なる処理部４０６への切り替えと、処理部４０６の異なるバージョン情報が通知された場合、クライアント１２からトランザクションとともに第２情報を取得すると、トランザクションを、異なるバージョン情報の処理部４０６に切り替えてルーティングする。
【００６６】
これにより、バージョン切り替えが行われる際に、無停止状態でのバージョン切り替えが可能となる。
【００６７】
また、ルーティング部４０２は、管理部４１０から、審査を示す第１情報が通知された場合、クライアント１２からトランザクションとともに第２情報を取得すると、このトランザクションを、審査に対応する処理部４０６にルーティングする。
【００６８】
また、ルーティング部４０２は、管理部４１０から、本番を示す第１情報が通知された場合、クライアント１２からトランザクションとともに第２情報を取得すると、トランザクションを、本番に対応する処理部４０６にルーティングする。
【００６９】
これにより、アプリケーションの審査用のトランザクションを処理する処理部と、実際に運用が開始された後の本番で処理される処理部とを適切に切り分けることができる。よって、アプリケーションが市場に提供された後に審査が必要になった場合でも、本番の処理は実行しつつも、審査の処理を実行することが可能となるので、無停止状態を維持することができる。
【００７０】
さらに、ルーティング部４０２は、所定の機能におけるトランザクションをクライアント１２から要求された場合、この所定の機能に対応するキューに関連付けられた処理部４０６の群の中から、第１情報及び第２情報に基づいてルーティングする処理部４０６を決定する。
【００７１】
これにより、機能別の処理部４０６の群が適切なキューに接続されているので、同じキューに接続された処理部４０６は、必ずしも同じプログラムである必要がなくなる。これを利用すると、トランザクション制御システム１は、ランダムに動作するアルゴリズムを変える仕組みを提供することも可能になる。
【００７２】
＜動作＞
次に、実施形態におけるトランザクション制御システム１の動作について説明する。
【００７３】
≪トランザクションの割り振り≫
図５は、実施形態におけるトランザクションの割り振り処理の一例を示すシーケンス図である。図５に示すステップＳ１０２で、クライアント１２は、機能Ａのトランザクションをルーティング部４０２に要求する。ルーティング部４０２では、機能ごとに個別のキューを有する。
【００７４】
ステップＳ１０４で、ルーティング部４０２は、機能Ａのキューにトランザクションを入れ、機能Ａのキューに関連付けられた機能Ａを処理する処理部４０６Ａにトランザクションを割り振り、ルーティングする。
【００７５】
ステップＳ１０６で、処理部４０６Ａは、トランザクションの処理結果をルーティング部４０２に返す。
【００７６】
ステップＳ１０８で、ルーティング部４０２は、トランザクションの処理結果をクライアント１２に返す。
【００７７】
ステップＳ１１０で、クライアント１２は、機能Ｂのトランザクションをルーティング部４０２に要求する。
【００７８】
ステップＳ１１２で、ルーティング部４０２は、機能Ｂのキューにトランザクションを入れ、機能Ｂのキューに関連付けられた機能Ｂを処理する処理部４０６Ｂにトランザクションを割り振り、ルーティングする。
【００７９】
ステップＳ１１４で、処理部４０６Ｂは、トランザクションの処理結果をルーティング部４０２に返す。
【００８０】
ステップＳ１１６で、ルーティング部４０２は、トランザクションの処理結果をクライアント１２に返す。
【００８１】
ステップＳ１１８で、クライアント１２は、機能Ｂのトランザクションをルーティング部４０２に要求する。
【００８２】
ステップＳ１２０で、ルーティング部４０２は、機能Ｂのキューにトランザクションを入れ、機能Ｂのキューに関連付けられた機能Ｂを処理する処理部４０６Ｂ’にトランザクションを割り振り、ルーティングする。このとき、機能Ｂのキューには複数の処理部４０６が関連づけられており、ステップＳ１２０では、ステップＳ１１２とは異なる処理部に割り振られる。異なる処理部に割り振る理由は、負荷分散等を考慮し、順番に各処理部に処理させるためである。
【００８３】
ステップＳ１１４で、処理部４０６Ｂ’は、トランザクションの処理結果をルーティング部４０２に返す。
【００８４】
ステップＳ１１６で、ルーティング部４０２は、トランザクションの処理結果をクライアント１２に返す。
【００８５】
以上より、ルーティング部４０２は、最終的な割り振りは、第２情報を使って処理部４０６の種別をさらに細かく行うことができる。また、ルーティング部４０２は、処理部４０６に関する第１情報を用いることで、ユースケースに沿ったクライアントのOS毎やさらに細かいルーティングを行うことができる。
【００８６】
≪バージョン切り替え≫
図６は、実施形態におけるバージョン切り替え処理の一例を示すシーケンス図である。図６に示すステップＳ２０２で、クライアント１２は、第２情報とともにトランザクションをルーティング部４０２に要求する。
【００８７】
ステップＳ２０４で、ルーティング部４０２は、管理部４１０から予め通知されている第１情報をもとに、処理部４０６Ａにトランザクションを割り振る。ルーティング部４０２は、第１情報を第２情報に付与してルーティングしてもよい。ルーティング部４０２は、処理部４０６Ａに対応する第１情報が管理部４１０から通知されている。
【００８８】
ステップＳ２０６で、処理部４０６Ａは、トランザクションの処理結果をルーティング部４０２に返す。
【００８９】
ステップＳ２０８で、ルーティング部４０２は、トランザクションの処理結果をクライアント１２に返す。
【００９０】
ステップＳ２１０で、管理部４１０は、管理者等から指定された個数分新たな処理部４０６Ｂを起動させる。このとき、管理部４１０は、新たな処理部４０６Ｂにバージョン情報（ｖ２：第１情報）を付与する。
【００９１】
ステップＳ２１２で、処理部４０６Ｂは、起動が完了した旨の通知を管理部４１０に返す。
【００９２】
ステップＳ２１４で、管理部４１０は、処理部の切り替えと、新たな処理部４０６Ｂに付与されたバージョン情報を、ルーティング部４０２に通知する。このとき、管理部４１０は、処理部４０６Ｂが使うべきキューを通知する。
【００９３】
ステップＳ２１６で、ルーティング部４０２は、バージョン切り替えが完了すると、切替完了を管理部４１０に通知する。同時に、ルーティング部４０２は、旧バージョンの処理部４０６Ａにトランザクションの割り振りを行わず、新しいバージョンに割当を行う。
【００９４】
ステップＳ２１８で、クライアント１２は、従前の第２情報とともにトランザクションをルーティング部４０２に要求する。
【００９５】
ステップＳ２２０で、ルーティング部４０２は、従前の第２情報を有するトランザクションについて、（管理部４１０から通知されたキューにトランザクションを入れ、このキューに関連付けられた処理部４０６Ｂにトランザクションを割り振る。このとき、ルーティング部４０２は、第１情報を第２情報に付与してルーティングしてもよい。
【００９６】
ステップＳ２２２で、処理部４０６Ｂは、トランザクションの処理結果をルーティング部４０２に返す。
【００９７】
ステップＳ２２４で、ルーティング部４０２は、トランザクションの処理結果をクライアント１２に返す。
【００９８】
ステップＳ２２８で、管理部４１０は停止指示を処理部４０６Ａに通知する。停止指示を受けた処理部４０６Ａは処理中のトランザクションがあれば処理を終えた後に停止する。
【００９９】
以上の処理により、クライアント１２のＯＳごとや、クライアントプログラムのバージョンごとに割り振る処理部４０６を変えたり、処理部４０６のバージョンアップ時にクライアントプログラムを変更することなく、無停止にサーバーロジックの切り替えを行ったりすることができる。
【０１００】
≪審査時の切り替え≫
図７は、実施形態における審査時の切り替え処理の一例を示すシーケンス図である。図７に示すステップＳ３０２で、クライアントアプリケーションを審査に出す場合、管理部４１０は、審査用の処理部４０６Ａのキューと、第２情報と、トランザクションの関連付けに関する情報とを含む第１情報を、ルーティング部４０２に指示する。
【０１０１】
ステップＳ３０４で、ルーティング部４０２は、審査対応が可能であることを管理部４１０に通知する。
【０１０２】
ステップＳ３０６で、クライアント１２は、第２情報とともにトランザクションをルーティング部４０２に要求する。
【０１０３】
ステップＳ３０８で、ルーティング部４０２は、審査用を示す第１情報と、第２情報と基づきキューにトランザクションを入れ、このキューに関連付けられた処理部４０６Ａにトランザクションを割り振る。
【０１０４】
ステップＳ３１０で、処理部４０６Ａは、トランザクションの処理結果をルーティング部４０２に返す。
【０１０５】
ステップＳ３１２で、ルーティング部４０２は、トランザクションの処理結果をクライアント１２に返す。
【０１０６】
ステップＳ３１４で、クライアントアプリケーションを本番の市場に出す場合、管理部４１０は、本番用の処理部４０６Ｂのキューと、トランザクションの関連付けに関する情報とを含む第１情報を、ルーティング部４０２に指示する。本番のキューを示す情報を第１情報とすれば、ルーティング部４０２は、第１情報から本番用のキューを把握することができるので、審査用から本番用に適切に切り替えることができる。
【０１０７】
ステップＳ３１６で、ルーティング部４０２は、本番対応が可能であることを管理部４１０に通知する。
【０１０８】
ステップＳ３１８で、クライアント１２は、第２情報とともにトランザクションをルーティング部４０２に要求する。
【０１０９】
ステップＳ３２０で、ルーティング部４０２は、本番用を示す第１情報と、第２情報と基づくキューにトランザクションを入れ、このキューに関連付けられた処理部４０６Ｂにトランザクションを割り振る。
【０１１０】
ステップＳ３２２で、処理部４０６Ｂは、トランザクションの処理結果をルーティング部４０２に返す。
【０１１１】
ステップＳ３２４で、ルーティング部４０２は、トランザクションの処理結果をクライアント１２に返す。
【０１１２】
以上の処理により、トランザクション制御システム１は、クライアントアプリケーションの審査時には審査用処理部に割り振りを行い、本番切り替え時には切替を指示することで、本番用に適切に切り替えることができる。
【０１１３】
なお、本発明は、上記した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内において、他の様々な形で実施することができる。このため、上記実施形態はあらゆる点で単なる例示にすぎず、限定的に解釈されるものではない。例えば、上述の各処理ステップは処理内容に矛盾を生じない範囲で任意に順番を変更して又は並列に実行することができる。
【符号の説明】
【０１１４】
１  トランザクション制御システム
１０  クラウド
１２  ユーザ端末装置（クライアント）
２０  コンピュータ装置
３０２  ＣＰＵ
３０４  ＲＡＭ
３０６  ＲＯＭ
４０２  ルーティング部
４０４  認証部
４０６  処理部
４０８  ＤＢ
４１０  管理部
【図１】
0006478618.tif 000002
【図２】
0006478618.tif 000003
【図３】
0006478618.tif 000004
【図４】
0006478618.tif 000005
【図５】
0006478618.tif 000006
【図６】
0006478618.tif 000007
【図７】
0006478618.tif 000008