(57)【要約】【課題】システムのコストを低く抑えつつ、クラウドサービスを高稼動率で且つ高信頼性で適用できるようにする。【解決手段】実施形態によれば、サービス中継装置は、第１及び第２のコンピュータによってそれぞれ提供される等価なサービスである第１及び第２のクラウドサービスにインターネットを介して接続する。サービス中継装置の参照系トランザクション送信手段は、第１及び第２のクラウドサービスが正常状態にある第１の状態において、第３のコンピュータからの参照系トランザクション要求を、第１または第２のクラウドサービスのうち、処理コストがより安いクラウドサービスに送信する。更新系トランザクション送信手段は、第１の状態において、第３のコンピュータからの更新系トランザクション要求を第１及び第２のクラウドサービスに送信する。【選択図】      図１
2012203473.tif 000002
【特許請求の範囲】
【請求項１】
第１のサービス提供会社の第１のコンピュータによって提供される第１のクラウドサービスと第２のサービス提供会社の第２のコンピュータによって提供される、前記第１のクラウドサービスと等価な第２のクラウドサービスとにインターネットを介して接続し、前記第１のクラウドサービス及び前記第２のクラウドサービスをネットワークを介して第３のコンピュータに中継するサービス中継装置であって、
前記第１のクラウドサービス及び前記第２のクラウドサービスの両方が正常状態にある第１の状態において、前記第３のコンピュータからの参照系トランザクション要求を、前記第１のクラウドサービスまたは前記第２のクラウドサービスのうち、処理コストがより安いクラウドサービスに送信し、前記第１の状態以外で、前記第１のクラウドサービス及び前記第２のクラウドサービスのいずれか一方のクラウドサービスが正常状態にある第２の状態において、前記参照系トランザクション要求を、前記一方のクラウドサービスに送信する参照系トランザクション送信手段と、
前記第１の状態において、前記第３のコンピュータからの更新系トランザクション要求を、前記第１のクラウドサービス及び前記第２のクラウドサービスの双方に送信し、前記第１のクラウドサービス及び前記第２のクラウドサービスのいずれか一方のクラウドサービスが正常状態にあり、且つ他方のクラウドサービスが障害発生により停止している第１の障害状態または前記第１の障害状態から復帰して回復処理中の状態にある第３の状態と、前記一方のクラウドサービスが正常状態にあり、且つ前記他方のクラウドサービスが前記第１の障害状態から復帰不能な第２の障害状態にある第４の状態との各々において、前記更新系トランザクション要求を前記一方のクラウドサービスに送信する更新系トランザクション送信手段であって、前記第３の状態において、前記更新系トランザクション要求を更新系トランザクション記憶手段に時系列順に記憶する更新系トランザクション送信手段と、
前記他方のクラウドサービスが前記第１の障害状態から復帰した場合、前記他方のクラウドサービスに送信されなかった更新系トランザクション要求を前記更新系トランザクション記憶手段から時系列順に取り出して、当該時系列順に取り出された更新系トランザクション要求を前記復帰した他方のクラウドサービスに反映するための回復処理を行う回復処理手段と
を具備するサービス中継装置。
【請求項２】
前記第１のクラウドサービス及び前記第２のクラウドサービスを含む、中継されるべき複数のクラウドサービス各々の状態として、前記正常状態、前記第１の障害状態、前記回復処理中の状態、または前記第２の障害状態のいずれにあるかを検出する障害検出手段を更に具備する請求項１記載のサービス中継装置。
【請求項３】
前記更新系トランザクション記憶手段を更に具備する請求項２記載のサービス中継装置。
【請求項４】
前記サービス中継装置は、第３のサービス提供会社の第４のコンピュータによって提供される第３のクラウドサービスにも前記インターネットを介して接続しており、
前記更新系トランザクション記憶手段が前記第３のクラウドサービスに配置されている
請求項２記載のサービス中継装置。
【請求項５】
前記サービス中継装置は、第４のサービス提供会社の第５のコンピュータによって提供される第４のクラウドサービスにも前記インターネットを介して接続しており、
前記更新系トランザクション記憶手段が前記第４のクラウドサービスにも配置されており、
前記更新系トランザクション送信手段は、前記第３の状態において、前記第３のクラウドサービス及び前記第４のクラウドサービスが、前記正常状態または前記回復処理中の状態にあるならば、前記更新系トランザクション要求を、前記第３のクラウドサービスに配置されている前記更新系トランザクション記憶手段及び前記第４のクラウドサービスに配置されている前記更新系トランザクション記憶手段の双方に時系列順に記憶する
請求項４記載のサービス中継装置。
【請求項６】
前記回復処理手段は、前記他方のクラウドサービスが前記第１の障害状態から復帰した場合の前記回復処理のために、前記他方のクラウドサービスに送信されなかった更新系トランザクション要求を、前記第３のクラウドサービスに配置されている前記更新系トランザクション記憶手段または前記第４のクラウドサービスに配置されている前記更新系トランザクション記憶手段のいずれか一方から時系列順に取り出す請求項５記載のサービス中継装置。
【請求項７】
前記回復処理手段は、前記回復処理の進捗状況を示す進捗状況情報を記憶し、前記復帰した他方のクラウドサービスに反映済みの更新系トランザクション要求を、前記進捗状況情報に基づいて、前記第３のクラウドサービスに配置されている前記更新系トランザクション記憶手段及び前記第４のクラウドサービスに配置されている前記更新系トランザクション記憶手段の双方から削除する請求項６記載のサービス中継装置。
【請求項８】
第１のサービス提供会社の第１のコンピュータによって提供される第１のクラウドサービスと第２のサービス提供会社の第２のコンピュータによって提供される、前記第１のクラウドサービスと等価な第２のクラウドサービスとにインターネットを介して接続する、参照系トランザクション送信手段、更新系トランザクション送信手段及び回復処理手段を備えたサービス中継装置において、前記第１のクラウドサービス及び前記第２のクラウドサービスをネットワークを介して第３のコンピュータに中継するためのサービス中継方法であって、
前記第１のクラウドサービス及び前記第２のクラウドサービスの両方が正常状態にある第１の状態において、前記第３のコンピュータからの参照系トランザクション要求を、前記第１のクラウドサービスまたは前記第２のクラウドサービスのうち、処理コストがより安いクラウドサービスに、前記参照系トランザクション送信手段が送信するステップと、
前記第１の状態以外で、前記第１のクラウドサービス及び前記第２のクラウドサービスのいずれか一方のクラウドサービスが正常状態にある第２の状態において、前記参照系トランザクション要求を、前記参照系トランザクション送信手段が前記一方のクラウドサービスに送信するステップと、
前記第１の状態において、前記第３のコンピュータからの更新系トランザクション要求を、前記更新系トランザクション送信手段が前記第１のクラウドサービス及び前記第２のクラウドサービスの双方に送信するステップと、
前記第１のクラウドサービス及び前記第２のクラウドサービスのいずれか一方のクラウドサービスが正常状態にあり、且つ他方のクラウドサービスが障害発生により停止している第１の障害状態または前記第１の障害状態から復帰して回復処理中の状態にある第３の状態と、前記一方のクラウドサービスが正常状態にあり、且つ前記他方のクラウドサービスが前記第１の障害状態から復帰不能な第２の障害状態にある第４の状態との各々において、前記更新系トランザクション要求を前記更新系トランザクション送信手段が前記一方のクラウドサービスに送信するステップと、
前記第３の状態において、前記更新系トランザクション要求を前記更新系トランザクション送信手段が更新系トランザクション記憶手段に時系列順に記憶するステップと、
前記他方のクラウドサービスが前記第１の障害状態から復帰した場合、前記回復処理手段が、前記他方のクラウドサービスに送信されなかった更新系トランザクション要求を前記更新系トランザクション記憶手段から時系列順に取り出して、当該時系列順に取り出された更新系トランザクション要求を前記復帰した他方のクラウドサービスに反映するための回復処理を行うステップと
を具備するサービス中継方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、複数のインターネットサービスを多重化するサービス中継装置及びサービス中継方法に関する。
【背景技術】
【０００２】
近年、企業活動に利用される情報システムに、インターネット上のソフトウェアサービス（いわゆるクラウドサービス）を積極的に適用する流れがある。従来、社内システムとして構築されていた社内情報システムに関しても、クラウドサービスに移行される流れもある。クラウドサービスを適用するメリットは、主にシステムのＴＣＯ(Total Cost of Ownership:総所有コスト)の削減にある。特に運用管理コストが低減される点が注目される。また、システムの導入費用や更新費用等が社内で構築するシステムに比べて大幅に削減されることも魅力の１つである。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−１７６４７２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
情報システムにクラウドサービスを適用した場合、当該情報システムのシステム品質の相当の部分がクラウドサービスのサービス品質に依存することになる。クラウドサービスのサービス品質は、一般にサービス提供会社によって保証される。通常、クラウドサービスのサービス品質の保証の程度に関しては、ＳＬＡ(Service Level Agreement:サービス品質保証契約)として、サービス利用側とサービス提供側とで契約が取り交わされる。当然、高品質なＳＬＡを謳うサービスは高価になる傾向にあり、そうでない場合には比較的安価にサービスが提供される。
【０００５】
一方、企業活動に直接関係するような重要な情報システム（基幹システム等）をクラウドサービスで構築する場合、リスクの管理が重要である。具体的には、ＳＬＡで謳われるサービス品質のうち、サービスの稼動率（可用性）やデータバックアップ等の信頼性にかかわる部分が特に重要になってくる。また、そもそもＳＬＡが守られるのかという点、つまりサービス提供会社そのものの信頼性もリスク要因である。さらに言えば、サービス提供会社が事業を継続できない事態になった場合などもリスクとして想定するべきである。
【０００６】
そこで、クラウドサービスを適用して情報システムを構築する場合において、システムのＴＣＯを低く抑える一方で、信頼性に関するサービス品質やサービス提供会社の信頼性やその事業の安定性などのリスク要因を低減して、クラウドサービスを高稼動率で且つ高信頼性で適用する要求がある。
【０００７】
本発明が解決しようとする課題は、システムのコストを低く抑えつつ、クラウドサービスを高稼動率で且つ高信頼性で適用できる、サービス中継装置及びサービス中継方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
実施形態によれば、第１のサービス提供会社の第１のコンピュータによって提供される第１のクラウドサービスと第２のサービス提供会社の第２のコンピュータによって提供される、前記第１のクラウドサービスと等価な第２のクラウドサービスとにインターネットを介して接続し、前記第１のクラウドサービス及び前記第２のクラウドサービスをネットワークを介して第３のコンピュータに中継するサービス中継装置が提供される。このサービス中継装置は、参照系トランザクション送信手段と、更新系トランザクション送信手段と、回復処理手段とを具備する。前記参照系トランザクション送信手段は、前記第１のクラウドサービス及び前記第２のクラウドサービスの両方が正常状態にある第１の状態において、前記第３のコンピュータからの参照系トランザクション要求を、前記第１のクラウドサービスまたは前記第２のクラウドサービスのうち、処理コストがより安いクラウドサービスに送信し、前記第１の状態以外で、前記第１のクラウドサービス及び前記第２のクラウドサービスのいずれか一方のクラウドサービスが正常状態にある第２の状態において、前記参照系トランザクション要求を、前記一方のクラウドサービスに送信する。前記更新系トランザクション送信手段は、前記第１の状態において、前記第３のコンピュータからの更新系トランザクション要求を、前記第１のクラウドサービス及び前記第２のクラウドサービスの双方に送信し、前記第１のクラウドサービス及び前記第２のクラウドサービスのいずれか一方のクラウドサービスが正常状態にあり、且つ他方のクラウドサービスが障害発生により停止している第１の障害状態または前記第１の障害状態から復帰して回復処理中の状態にある第３の状態と、前記一方のクラウドサービスが正常状態にあり、且つ前記他方のクラウドサービスが前記第１の障害状態から復帰不能な第２の障害状態にある第４の状態との各々において、前記更新系トランザクション要求を前記一方のクラウドサービスに送信する。前記更新系トランザクション送信手段はまた、前記第３の状態において、前記更新系トランザクション要求を更新系トランザクション記憶手段に時系列順に記憶する。前記回復処理手段は、前記他方のクラウドサービスが前記第１の障害状態から復帰した場合、前記他方のクラウドサービスに送信されなかった更新系トランザクション要求を前記更新系トランザクション記憶手段から時系列順に取り出して、当該時系列順に取り出された更新系トランザクション要求を前記復帰した他方のクラウドサービスに反映するための回復処理を行う。
【図面の簡単な説明】
【０００９】
【図１】第１の実施形態に係るサービス中継装置を含む情報システムの構成を示すブロック図。
【図２】図１に示される障害状態記憶部によって管理される、クラウドサービス毎の、４種の状態間の関係を表す状態遷移図。
【図３】同第１の施形態における参照系トランザクション送信部の動作を説明するためのフローチャート。
【図４】同第１の実施形態における更新系トランザクション送信部の動作を説明するためのフローチャート。
【図５】第２の実施形態に係るサービス中継装置を含む情報システムの構成を示すブロック図。
【図６】第３の実施形態に係るサービス中継装置を含む情報システムの構成を示すブロック図。
【図７】同第３の実施形態における更新系トランザクション記憶部の２重化に関する動作を説明するための図。
【図８】第４の実施形態に係るサービス中継装置を含む情報システムの構成を示すブロック図。
【発明を実施するための形態】
【００１０】
以下、実施の形態につき図面を参照して説明する。  
［第１の実施形態］
図１は第１の実施形態に係るサービス中継装置を含む情報システムの構成を示すブロック図である。
【００１１】
図１に示す情報処理システムは、例えば、コンピュータ１０ａ及び１０ｂと、コンピュータ２０-1〜２０-nと、サービス中継装置１００とを備えている。コンピュータ１０ａ及び１０ｂとサービス中継装置１００とは、第１のネットワーク、例えばインターネット３０に接続されている。コンピュータ２０-1〜２０-nとサービス中継装置１００とは、第２のネットワーク、例えばＬＡＮ（ローカルエリアネットワーク）４０に接続されている。
【００１２】
コンピュータ（第１のコンピュータ）１０ａは、サービス提供会社Ａに属しており、クラウドサービス（インターネットサービス）ａを提供する。つまりクラウドサービスａはサービス提供会社Ａによって提供される。コンピュータ１０ｂ（第２のコンピュータ）は、サービス提供会社Ｂに属しており、クラウドサービスｂを提供する。つまりクラウドサービスｂはサービス提供会社Ｂによって提供される。コンピュータ１０ａ及び１０ｂは、クラウドサービスに関し、サーバ（クラウドサービス提供サーバ）として機能する。
【００１３】
第１の実施形態においてクラウドサービスａ及びｂは、データを蓄積し、且つデータを検索・参照・更新するサービスである。このようなクラウドサービスａ及びｂの典型的な例として、Ｗｅｂデータベースサービスが挙げられる。なお、Ｗｅｂデータベースサービスに限らず、例えば顧客管理サービス、販売管理サービスのような特定用途に特化したサービスも、データを蓄積し、データを検索・参照・更新するサービスである。このようなサービスは、データの参照に関連する処理とデータの更新に関連する処理とに大別される。
【００１４】
ここで、クラウドサービスａ及びｂのサービス単位となる処理、またその要求と応答をトランザクションと呼ぶことにする。この場合、クラウドサービスａ及びｂのトランザクションは、データの参照に関連するトランザクション（以下、参照系トランザクションと称する）と、データの更新に関連するトランザクション（以下、更新系トランザクションと称する）とに分類される。
【００１５】
参照系トランザクションは、クラウドサービス内のデータの検索または参照のみをもっぱら行うものである。参照系トランザクションは、当該参照系トランザクションの結果としてクラウドサービス内のデータが変更されないことで特徴付けられる。一方、更新系トランザクションは、クラウドサービス内のデータの追加、変更または削除を行うものである。更新系トランザクションは、当該更新系トランザクションの結果としてクラウドサービス内のデータが変更されることで特徴付けられる。なお、更新系トランザクションの処理の中でデータの検索または参照が行われることはあり得る。
【００１６】
第１の実施形態において、クラウドサービスａ及びｂの機能は等価である。つまりコンピュータ１０ｂは、コンピュータ１０ａが提供するクラウドサービスａと機能において同等のクラウドサービスｂを提供する。クラウドサービスａ及びｂはインタフェース仕様が同一であることが望ましいが、信頼性等に関係するＳＬＡについては必ずしも同等である必要はない。同様に、クラウドサービスａ及びｂの価格（提供価格）についても必ずしも同等である必要はない。一方、サービス提供会社Ａとサービス提供会社Ｂとは異なっていることが望ましい。
【００１７】
コンピュータ（第３のコンピュータ）２０-1〜２０-nは、クラウドサービスを利用する、パーソナルコンピュータ（ＰＣ）のようなコンピュータ（情報処理機器）である。つまりコンピュータ２０-1〜２０-nは、クラウドサービスに関し、当該クラウドサービスを利用するクライアント（クライアントコンピュータ）として機能する。コンピュータ２０-1〜２０-n及びＬＡＮ４０は、例えば社内システムを構成している。コンピュータ２０-1〜２０-nの一部は社内システムのサーバ（つまり社内サーバ）であり、コンピュータ２０-1〜２０-nの他の一部は社内システムの端末（社内端末）である。この端末には、例えばタブレット端末を用いることも可能である。
【００１８】
システムの運用開始の初期状態では、クラウドサービスａ及びｂに蓄積されている双方のデータは同等であり、当該クラウドサービスａ及びｂは共に正常に稼働しているものとする。サービス中継装置１００は、クラウドサービスａ及びｂを２重化して、クラウドサービスａまたはｂをコンピュータ２０-i（ｉ＝１〜ｎ）に中継する。つまりコンピュータ２０-iがクラウドサービスａまたはｂを利用する際には、当該クラウドサービスａまたはｂはサービス中継装置１００を経由する。サービス中継装置１００は、クラウドサービスａ及びｂがいずれも正常状態にあるときの更新は、両サービスａ及びｂに対して行う。つまりサービス中継装置１００は、クラウドサービスａ及びｂに関するデータの内容が常に同一となるように制御する。またサービス中継装置１００は、更新を伴わないクラウドサービスａまたはｂの利用については、課金の少ない方のサービスのみが使用されるように中継する。これによって、クラウドサービスの利用コストを削減することができる。
【００１９】
サービス中継装置１００は、クラウドサービスａ及びｂの一方のサービスが一時的な障害状態（第１の障害状態）にある場合、正常状態にある方のクラウドサービスを中継（使用）すると共に、コンピュータ２０-iによって要求された更新に関する情報（ここでは、後述する更新系トランザクション要求）を後述する更新系トランザクション記憶部１０６に時系列順に記憶する。サービス中継装置１００は、その後、障害状態にあったクラウドサービスが復帰したときに、更新系トランザクション記憶部１０６に記憶されている更新に関する情報を、復帰したクラウドサービスに時系列順に反映する回復処理を行う。つまりサービス中継装置１００は、クラウドサービスａ及びｂの両方で扱われるデータの内容が同一になるように制御する。なお、一方のクラウドサービスが復帰不能な障害状態（第２の障害状態）になった場合、サービス中継装置１００は、コンピュータ２０-iによって要求された更新に関する情報を更新系トランザクション記憶部１０６に記憶することを止め、正常状態にある方のクラウドサービスのみを使用する。
【００２０】
サービス中継装置１００、上述の機能を実現するために、トランザクション受信部１０１、更新系トランザクション送信部１０２、参照系トランザクション送信部１０３、障害検出部１０４、障害状態記憶部１０５、更新系トランザクション記憶部１０６、及び回復処理部１０７を備えている。
【００２１】
トランザクション受信部１０１は、コンピュータ２０-iからのクラウドサービスａまたはｂの利用に関するトランザクション要求（更新系トランザクション要求または参照系トランザクション要求）を受信する。トランザクション受信部１０１は、更新系トランザクション要求を受信した場合には、当該更新系トランザクション要求を更新系トランザクション送信部１０２に送出する。トランザクション受信部１０１はまた、参照系トランザクション要求を受信した場合には、当該参照系トランザクション要求を参照系トランザクション送信部１０３に送出する。
【００２２】
更新系トランザクション送信部１０２は、トランザクション受信部１０１から更新系トランザクション要求を受信した場合、当該更新系トランザクション要求をクラウドサービスａ及び／またはｂ（クラウドサービスａを提供するコンピュータ１０ａ及び／またはクラウドサービスｂを提供するコンピュータ１０ｂ）にインターネット３０を介して送信する。参照系トランザクション送信部１０３は、トランザクション受信部１０１から参照系トランザクション要求を受信した場合、当該参照系トランザクション要求をクラウドサービスａまたはｂ（クラウドサービスａを提供するコンピュータ１０ａまたはクラウドサービスｂを提供するコンピュータ１０ｂ）にインターネット３０を介して送信する。
【００２３】
障害検出部１０４は、クラウドサービスａまたはｂの障害の発生を検出する。また障害検出部１０４は、クラウドサービスａまたはｂの障害からの復帰を検出する。障害状態記憶部１０５は、クラウドサービスａ及びｂの障害の状態を記憶する。
【００２４】
更新系トランザクション記憶部１０６は、２つのＦＩＦＯ(First In First Out:先入れ先出し)バッファ１０６ａ及び１０６ｂから構成される。つまり更新系トランザクション記憶部１０６は第１の記憶領域及び第２の記憶領域を有しており、第１の記憶領域はＦＩＦＯバッファ１０６ａに割り当てられ、第２の記憶領域はＦＩＦＯバッファ１０６ｂに割り当てられる。ＦＩＦＯバッファ１０６ａは、クラウドサービスｂで処理される更新系トランザクション要求を時系列順に記憶し、対応する更新トランザクションをクラウドサービスａに反映させるために、その記憶順に出力する。ＦＩＦＯバッファ１０６ｂは、クラウドサービスａで処理される更新系トランザクション要求を時系列順に記憶し、対応する更新トランザクションをクラウドサービスｂに反映させるために、その記憶順に出力する。
【００２５】
回復処理部１０７は、障害状態記憶部１０５に記憶されているクラウドサービスａまたはｂの障害状態と、ＦＩＦＯバッファ１０６ａまたは１０６ｂに記憶されている更新に関する情報（更新系トランザクション要求）とに基づいて、クラウドサービスａまたはｂの状態を障害状態から回復させる。
【００２６】
次に、図１の情報システムにおけるサービス中継装置１００を中心とする動作の概要について、典型的なトランザクションの流れを例に説明する。  
今、コンピュータ２０-1によってトランザクション要求が発行されたものとする。コンピュータ２０-1によって発行されたトランザクション要求は、ＬＡＮ４０を介してサービス中継装置１００に送信され、当該サービス中継装置１００のトランザクション受信部１０１で受信される。
【００２７】
トランザクション受信部１０１は、コンピュータ２０-1からのトランザクション要求を受信すると、当該トランザクション要求の内容に基づき、当該トランザクション要求が、参照系トランザクション要求であるか、或いは更新系トランザクション要求であるかを判定する。即ちトランザクション受信部１０１は、トランザクション要求が、クラウドサービス内のデータの検索または参照のための参照系トランザクション要求であるか、或いはクラウドサービス内のデータの追加、変更または削除のための更新系トランザクション要求であるかを判定する。
【００２８】
参照系トランザクション要求の場合、トランザクション受信部１０１は、当該参照系トランザクション要求を参照系トランザクション送信部１０３に送出する。すると参照系トランザクション送信部１０３は参照系トランザクション要求を受信して、当該参照系トランザクション要求を、クラウドサービスａまたはクラウドサービスｂ（クラウドサービスａを提供するコンピュータ１０ａまたはクラウドサービスｂを提供するコンピュータ１０ｂ）のいずれに送出するかを決定する。この決定手法については後述する。参照系トランザクション送信部１０３は、参照系トランザクション要求を、決定したサービスにインターネット３０を介して送出する。
【００２９】
これに対して更新系トランザクション要求の場合、トランザクション受信部１０１は、当該更新系トランザクション要求を更新系トランザクション送信部１０２に送出する。すると更新系トランザクション送信部１０２は更新系トランザクション要求を受信して、当該更新系トランザクション要求を、クラウドサービスａ及びｂの双方にインターネット３０を介して送出する。
【００３０】
なお、コンピュータ２０-1からのトランザクション要求を、トランザクション受信部１０１が更新系トランザクション送信部１０２及び参照系トランザクション送信部１０３の両方に送出しても構わない。この場合、参照系トランザクション送信部１０３は、トランザクション要求が参照系トランザクション要求であるかを判定し、参照系トランザクション要求である場合に、当該参照系トランザクション要求をインターネット３０を介してクラウドサービスａまたはｂに送出すればよい。同様に、参照系トランザクション送信部１０３は、トランザクション要求が更新系トランザクション要求であるかを判定し、更新系トランザクション要求である場合に、当該更新系トランザクション要求をインターネット３０を介してクラウドサービスａ及びｂに送出すればよい。
【００３１】
参照系トランザクション送信部１０３または更新系トランザクション送信部１０２によってインターネット３０を介して送出された、コンピュータ２０-1からのトランザクション要求（参照系トランザクション要求または更新系トランザクション要求）は、宛先のクラウドサービス、つまり、コンピュータ１０ａが提供するクラウドサービスａまたはコンピュータ１０ｂが提供するクラウドサービスｂに到達する。クラウドサービスａまたはｂ（より詳細には、クラウドサービスａを提供するコンピュータ１０ａまたはクラウドサービスｂを提供するコンピュータ１０ｂ）は、コンピュータ２０-1からのトランザクション要求を受け取ると、当該トランザクション要求を処理し、当該トランザクション要求に対するコンピュータ２０-1宛ての応答（トランザクション応答）を返す。このトランザクション応答は、対応するトランザクション要求とは逆の経路で、更新系トランザクション送信部１０２または参照系トランザクション送信部１０３と、トランザクション受信部１０１と、ＬＡＮ４０とを介して、コンピュータ２０-1に到達する。つまり、トランザクション応答に関し、更新系トランザクション送信部１０２及び参照系トランザクション送信部１０３は受信部として機能し、トランザクション受信部１０１は送信部として機能する。
【００３２】
次に、サービス中継装置１００の動作の詳細を、以下に示す５つのケースのそれぞれについて順に説明する。  
第１のケース（以下、ケースＲ１と称する）は、コンピュータ２０-1からのトランザクション要求が参照系トランザクション要求であり、且つクラウドサービスａ及びｂの両方が正常状態にある場合である。クラウドサービスａ及びｂの両方が正常状態にある状態を第１の状態と呼ぶ。第２のケース（以下、ケースＵ１と称する）は、コンピュータ２０-1からのトランザクション要求が更新系トランザクション要求であり、且つクラウドサービスａ及びｂの両方が正常状態にある場合である。
【００３３】
第３のケース（以下、ケースＲ２と称する）は、コンピュータ２０-1からのトランザクション要求が参照系トランザクション要求であり、且つ上記第１の状態以外で、クラウドサービスａが正常状態にある場合である。上記第１の状態以外で、クラウドサービスａが正常状態にある状態を、第２の状態と呼ぶ。第２の状態では、クラウドサービスｂは、正常状態になく、障害状態、当該障害状態から復帰不能な障害状態、または回復処理中の状態のいずれかの状態にある。但し、以下のケースＲ２の説明では、クラウドサービスｂが障害状態にあるものとする。
【００３４】
第４のケース（以下、ケースＵ２と称する）は、コンピュータ２０-1からのトランザクション要求が更新系トランザクション要求であり、且つクラウドサービスａが正常状態にあり、クラウドサービスｂが障害状態または回復処理中の状態にある場合である。クラウドサービスａが正常状態にあり、クラウドサービスｂが障害状態または回復処理中の状態にある状態を第３の状態と呼ぶ。以下のケースＵ２の説明では、クラウドサービスｂが障害状態にあるものとする。
【００３５】
第５のケース（以下、ケースＵ３と称する）は、コンピュータ２０-1からのトランザクション要求が更新系トランザクション要求であり、且つクラウドサービスａが正常状態にあり、クラウドサービスｂが復帰不能な障害状態にある場合である。クラウドサービスａが正常状態にあり、クラウドサービスｂが復帰不能な障害状態にある状態を第４の状態と呼ぶ。障害状態（第１の障害状態）及び復帰不能な障害状態（第２の障害状態）の詳細については後述する。
【００３６】
（ケースＲ１）
まず、ケースＲ１におけるサービス中継装置１００の動作の詳細について説明する。コンピュータ２０-1からのトランザクション要求が参照系トランザクション要求であり、且つクラウドサービスａ及びｂが正常状態にあるケースＲ１において、当該参照系トランザクションは、クラウドサービスａまたはｂのどちらか一方で処理される。つまりコンピュータ２０-1からの参照系トランザクション要求は、ＬＡＮ４０、サービス中継装置１００のトランザクション受信部１０１、サービス中継装置１００の参照系トランザクション送信部１０３、及びインターネット３０の経路を通って、クラウドサービスａまたはｂのいずれかに到達する。
【００３７】
これにより、コンピュータ２０-1からの参照系トランザクション要求が到達したクラウドサービスで、当該コンピュータ２０-1から要求された参照系トランザクションの処理（つまり、対応するクラウドサービス内のデータの検索または参照を伴う処理）が行われる。参照系トランザクション要求に対するクラウドサービスａまたはｂからのトランザクション応答は、当該参照系トランザクション要求とは逆の経路でコンピュータ２０-1に到達する。
【００３８】
ここで、参照系トランザクション送信部１０３は、トランザクション受信部１０１から参照系トランザクション要求を受信した際に、当該参照系トランザクション要求をクラウドサービスａまたはｂのいずれに送出するかを、次のように決定する。まず、参照系トランザクション送信部１０３は、クラウドサービスａ及びｂが共に正常状態にあるかを、障害状態記憶部１０５の内容に基づいて判定する。この例のように、クラウドサービスａ及びｂが共に正常状態にあるならば、参照系トランザクション送信部１０３は、送出されるべき参照系トランザクション要求の示すトランザクションに関し、サービスコストが安い方のクラウドサービスを選択する。つまり参照系トランザクション送信部１０３は、クラウドサービスａまたはｂのうち、サービスコストが安い方のサービスを、参照系トランザクション要求の送出先として選択する。
【００３９】
（ケースＵ１）
次に、ケースＵ１におけるサービス中継装置１００の動作の詳細について説明する。コンピュータ２０-1からのトランザクション要求が更新系トランザクション要求であり、且つクラウドサービスａ及びｂが正常状態にあるケースＵ１において、当該更新系トランザクションは、クラウドサービスａ及びｂの両方で処理される。つまりコンピュータ２０-1からの更新系トランザクション要求は、ＬＡＮ４０、トランザクション受信部１０１、更新系トランザクション送信部１０２、インターネット３０の経路を通って、クラウドサービスａ及びｂの両方に到達する。これにより、クラウドサービスａ及びｂの両方で、コンピュータ２０-1から要求された更新系トランザクションの処理（つまり、対応するクラウドサービス内のデータの追加、変更または削除を伴う更新）が行われる。
【００４０】
ここで、コンピュータ２０-1からの更新系トランザクション要求に応じたクラウドサービスａ及びｂの両方の処理、つまり更新は、一貫性を保って行われる。一般に一貫性を保つ更新の方法として、２フェーズコミットによって行う方法、或いは特許４１７７３３９号公報に記載の方法など従来から様々な方法が知られており、いずれを適用しても構わない。更新系トランザクション要求に対するトランザクション応答は、当該更新系トランザクション要求とは逆の経路でコンピュータ２０-1に到達する。
【００４１】
なお、トランザクションが分割可能な場合、当該トランザクションを例えばトランザクション受信部１０１にて複数のトランザクションに分割して、分割されたトランザクションが参照系トランザクション送信部１０３または更新系トランザクション送信部１０２によって、クラウドサービスに送出される構成とすることも可能である。つまり、トランザクションを分割して処理することも可能である。  
上述したケースＲ１及びＵ１の説明は、クラウドサービスａ及びｂがいずれも正常状態にあることを前提としている。
【００４２】
次に、クラウドサービスａまたはｂのいずれか一方、例えばクラウドサービスｂに障害が発生した、上記ケースＲ２及びＵ２のそれぞれについて説明する。ここでは、クラウドサービスａは正常な状態にある。
【００４３】
クラウドサービスの障害とは、システムに不測の事故が起きて当該クラウドサービスを正常に提供できない場合の他に、当該クラウドサービスの計画停止や、サービス提供会社の事業の継続の打ち切りなども含まれる。ケースＲ２及びＵ２では、クラウドサービスｂに障害が発生した場合を想定している。しかしクラウドサービスａ及びｂの役割は対称である。したがって、クラウドサービスａに障害が発生した場合、以下の説明において、ａとｂを読み替えればよい。
【００４４】
サービス中継装置１００の障害検出部１０４は、クラウドサービスｂに障害が発生したこと、更にはクラウドサービスｂが障害から復帰したことを検出する。このような、クラウドサービスの障害発生、更には障害からの復帰を検出する方法として、従来から様々な方法が知られている。例えば、ハートビート通信を用いて検出する方法、更新系トランザクション送信部１０２または参照系トランザクション送信部１０３でのタイムアウト（トランザクション要求に対するトランザクション応答が一定時間内に返らないタイムアウト）によって検出する方法、サービス提供会社からの通知によって検出する方法、これらを組み合わせた方法が挙げられる。いずれの方法を適用しても構わない。
【００４５】
今、障害検出部１０４が、クラウドサービスｂに障害が発生したことを、上述した方法のいずれかで検出したものとする。この障害検出部１０４によるクラウドサービスｂの障害の検出は、障害状態記憶部１０５に反映されて管理される。第１の実施形態において、障害状態記憶部１０５は、クラウドサービス毎に、対応するクラウドサービスの状態を記憶する。つまり障害状態記憶部１０５は、クラウドサービス毎に、対応するクラウドサービスが正常状態にあるか否かを記憶すると共に、正常状態にない場合には、対応するクラウドサービスが障害状態にあるか、障害状態から復帰して回復処理の実行中であるか、或いは復帰不能な障害状態にあるかを記憶する。
【００４６】
第１の実施形態において、障害状態記憶部１０５によって記憶され、且つ管理されるクラウドサービスの状態は、正常状態、障害状態（第１の障害状態）、回復処理中、復帰不能な障害状態（第２の障害状態）の４種類である。図２は、障害状態記憶部１０５によって管理される、クラウドサービス毎の、４種の状態間の関係を表す状態遷移図である。
【００４７】
図２に示す状態遷移図によれば、例えばクラウドサービスｂが正常状態２０１にあるときに、当該クラウドサービスｂの障害が検出された場合、クラウドサービスｂの状態は、正常状態２０１から障害状態２０２に遷移する。次に、障害状態２０２にあるクラウドサービスｂの当該障害状態２０２からの復帰（が可能であること）が検出されると、クラウドサービスｂの状態は、障害状態２０２から、回復処理中２０３に遷移する。回復処理が完了すると、クラウドサービスｂの状態は、回復処理中２０３から正常状態２０１に遷移する。一方、障害状態２０２にあるクラウドサービスｂが、復帰不能な障害状態にあることが検出されると、クラウドサービスｂの状態は、障害状態２０２から復帰不能な障害状態２０４に遷移する。
【００４８】
（ケースＲ２）
ここで、ケースＲ２におけるサービス中継装置１００の動作の詳細について説明する。コンピュータ２０-1からのトランザクション要求が参照系トランザクション要求であり、且つクラウドサービスｂが障害状態２０２（回復処理中２０３または復帰不能な障害状態２０４でも構わない）にあるケースＲ２において、当該参照系トランザクションは、正常状態にあるクラウドサービスａのみで処理される。このように、参照系トランザクション要求は、ケースＲ１とは異なり、クラウドサービスａ及びｂのサービスコストに無関係に、正常状態にあるクラウドサービスａに送出される。つまりケースＲ２において、コンピュータ２０-1からの参照系トランザクション要求は、ＬＡＮ４０、トランザクション受信部１０１、参照系トランザクション送信部１０３及びインターネット３０の経路を通って、クラウドサービスａに到達する。参照系トランザクション要求に対するクラウドサービスａからのトランザクション応答は、当該参照系トランザクション要求とは逆の経路でコンピュータ２０-1に到達する。
【００４９】
（ケースＵ２）
次に、ケースＵ２におけるサービス中継装置１００の動作の詳細について説明する。コンピュータ２０-1からのトランザクション要求が更新系トランザクション要求であり、且つクラウドサービスｂが障害状態２０２にあるケースＵ２において、当該更新系トランザクション要求で示される更新系トランザクションは、クラウドサービスａで処理されると同時に、当該更新系トランザクション要求が更新系トランザクション記憶部１０６のＦＩＦＯバッファ１０６ｂに順に記憶される。つまりケースＵ２において、コンピュータ２０-1からの更新系トランザクション要求は、ＬＡＮ４０、トランザクション受信部１０１、更新系トランザクション送信部１０２及びインターネット３０の経路を通って、クラウドサービスａに到達する。この更新系トランザクション要求はまた、更新系トランザクション送信部１０２から更新系トランザクション記憶部１０６に到達する。
【００５０】
更新系トランザクション記憶部１０６に到達した更新系トランザクション要求は、当該更新系トランザクション記憶部１０６のＦＩＦＯバッファ１０６ｂに到達順に記憶される。つまり、更新系トランザクション要求は、ＦＩＦＯバッファ１０６ｂに時系列順に記憶される。一方、更新系トランザクション要求に対するクラウドサービスａからのトランザクション応答は、当該更新系トランザクション要求とは逆の経路でコンピュータ２０-1に到達する。ここで、クラウドサービスａ及び更新系トランザクション記憶部１０６（ＦＩＦＯバッファ１０６ｂ）の両方の更新は一貫性を保って行われる。一般に一貫性を保つ更新の方法には、ケースＵ１と同様に従来から様々な方法が知られており、いずれを適用しても構わない。
【００５１】
（回復処理ＲＰ）
次に、障害中であったクラウドサービスｂが復帰した場合の回復処理（回復処理ＲＰ）について説明する。前述したように、第１の実施形態においてクラウドサービスａ及びｂの役割は対称である。したがって、クラウドサービスａが障害中であり、当該障害中であったクラウドサービスａが復帰した場合には、以下の説明において、ａとｂを読み替えればよい。
【００５２】
クラウドサービスｂが障害から復帰したことは障害検出部１０４によって検出される。すると、障害状態記憶部１０５で管理されるクラウドサービスｂの状態は障害状態２０２から回復処理中２０３に遷移する。この遷移に伴い、回復処理部１０７は、以下の回復処理を開始する。
【００５３】
回復処理部１０７は、更新系トランザクション記憶部１０６（ＦＩＦＯバッファ１０６ｂ）に記憶されている、クラウドサービスａで処理されたのと同一の更新系トランザクション要求を時系列順に取り出し、当該時系列順に取り出した更新系トランザクション要求でクラウドサービスｂを順に更新するための回復処理を行う。つまり回復処理部１０７は、時系列順に取り出した更新系トランザクション要求をクラウドサービスｂに反映するための回復処理を行う。この回復処理により、クラウドサービスｂのデータがクラウドサービスａのデータに一致化される。ここで、更新系トランザクション要求に従ってクラウドサービスａにおいて既に実施済みの更新系トランザクションの処理で更新されたデータが、回復処理でクラウドサービスａからクラウドサービスｂに読み出される訳でない点に注意すべきである。
【００５４】
回復処理が完了すると、回復処理部１０７は、障害状態記憶部１０５で管理されているクラウドサービスｂの状態を回復処理中２０３から正常状態２０１に遷移する。クラウドサービスａが正常状態２０１にあり、クラウドサービスｂが回復処理中２０３にある状態は、クラウドサービスｂが障害状態２０２にある状態と同様に、ケースＲ２またはケースＵ２に該当する。したがって、クラウドサービスｂの状態が回復処理中２０３の場合、参照系トランザクションは上述したケースＲ２のときと同様に処理され、更新系トランザクションは上述したケースＵ２のときと同様に処理される。
【００５５】
（ケースＵ３）
次に、ケースＵ３におけるサービス中継装置１００の動作の詳細について説明する。クラウドサービスｂが復帰不能な障害状態２０４にあるときに、コンピュータ２０-1から更新系トランザクション要求が送出されたケースＵ３において、当該更新系トランザクションは、クラウドサービスａで処理される。つまりケースＵ３において、コンピュータ２０-1からの更新系トランザクション要求は、ＬＡＮ４０、トランザクション受信部１０１、更新系トランザクション送信部１０２及びインターネット３０の経路を通って、クラウドサービスａに到達する。更新系トランザクション要求に対するクラウドサービスａからのトランザクション応答は、当該更新系トランザクション要求とは逆の経路でコンピュータ２０-1に到達する。ここでは、ケースＵ２で行われるような更新系トランザクション記憶部１０６（ＦＩＦＯバッファ１０６ｂ）の更新を行う必要はない。  
上述したケースＲ２，Ｕ２及びＵ３の説明は、クラウドサービスａが正常状態にあることを前提としている。
【００５６】
次に、クラウドサービスｂだけでなく、クラウドサービスａも正常状態２０１にない場合について説明する。  
今、正常状態２０１にないクラウドサービスａ及びｂのいずれかが回復処理中２０３であるものとする。この場合、更新系トランザクション送信部１０２または参照系トランザクション送信部１０３は、回復処理の完了を待ち合わせて、トランザクションの処理を継続する。もし、正常状態２０１にないクラウドサービスａ及びｂの両方が回復処理中２０３でないか、或いは回復処理が完了せずに、障害状態２０２または復帰不能な障害状態２０４に遷移したならば、更新系トランザクション送信部１０２または参照系トランザクション送信部１０３は、対応する更新系トランザクション要求または参照系トランザクション要求をアボートする。
【００５７】
次に、上述のサービス中継装置１００の動作のうち、参照系トランザクション送信部１０３の動作について、図３のフローチャートを参照して説明する。  
参照系トランザクション送信部１０３は、トランザクション受信部１０１から参照系トランザクション要求を受信すると（ステップＳ１）、当該参照系トランザクション要求の送出先となるクラウドサービスを、次のように選択（決定）する。まず、参照系トランザクション送信部１０３は、障害状態記憶部１０５に記憶されているクラウドサービスａ及びｂの状態に基づいて、当該クラウドサービスａ及びｂが共に正常状態にあるかを判定する（ステップＳ２）。もし、クラウドサービスａ及びｂが共に正常状態である（第１の状態）ならば（ステップＳ２のＹＥＳ）、つまりケースＲ１であるならば、参照系トランザクション送信部１０３は、送出されるべき参照系トランザクション要求の示すトランザクションに関し、クラウドサービスａまたはｂのいずれの方がサービスコストが安いかを比較して、サービスコストが安い方のクラウドサービスを当該参照系トランザクション要求の送出先として選択する（ステップＳ３）。
【００５８】
これに対し、クラウドサービスａ及びｂの少なくとも一方が正常状態にない（第１の状態以外）ならば（ステップＳ２のＮＯ）、参照系トランザクション送信部１０３は、クラウドサービスａまたはｂのいずれか一方は正常状態にあるかを判定する（ステップＳ４）。もし、クラウドサービスａまたはｂのいずれか一方が正常状態にある（第２の状態）ならば（ステップＳ４のＹＥＳ）、つまりケースＲ２に相当するならば、参照系トランザクション送信部１０３は、正常状態にある方のクラウドサービスを参照系トランザクション要求の送出先として選択する（ステップＳ５）。
【００５９】
これに対し、クラウドサービスａ及びｂが共に正常状態にないならば（ステップＳ４のＮＯ）、参照系トランザクション送信部１０３は、クラウドサービスａまたはｂのいずれかが回復処理中２０３であるかを判定する（ステップＳ６）。もし、クラウドサービスａまたはｂのいずれかが回復処理中２０３であるならば（ステップＳ６のＹＥＳ）、参照系トランザクション送信部１０３は、当該回復処理中２０３のクラウドサービスの回復処理の完了を待ち合わせ（ステップＳ７）、ステップＳ２に戻る。一方、クラウドサービスａ及びｂのいずれも回復処理中２０３でないならば、参照系トランザクション送信部１０３は、受信した参照系トランザクション要求の示すトランザクションをエラーとして終了する（ステップＳ８）。
【００６０】
次に、上述のサービス中継装置１００の動作のうち、更新系トランザクション送信部１０２の動作について、図４のフローチャートを参照して説明する。  
更新系トランザクション送信部１０２は、トランザクション受信部１０１から更新系トランザクション要求を受信すると（ステップＳ１１）、当該更新系トランザクション要求の送出先となるクラウドサービスを、次のように選択（決定）する。まず、更新系トランザクション送信部１０２は、障害状態記憶部１０５に記憶されているクラウドサービスａ及びｂの状態に基づいて、当該クラウドサービスａ及びｂが共に正常状態にあるかを判定する（ステップＳ１２）。もし、クラウドサービスａ及びｂが共に正常状態にある（第１の状態）ならば（ステップＳ１２のＹＥＳ）、つまりケースＵ１であるならば、更新系トランザクション送信部１０２は、更新系トランザクション要求をクラウドサービスａ及びｂの両方に送出し、当該クラウドサービスａ及びｂを一貫性を保って更新する（ステップＳ１３）。
【００６１】
これに対し、クラウドサービスａ及びｂの少なくとも一方が正常状態にないならば（ステップＳ１２のＮＯ）、更新系トランザクション送信部１０２は、クラウドサービスａまたはｂのいずれか一方は正常状態にあるかを判定する（ステップＳ１４）。もし、クラウドサービスａまたはｂのいずれか一方が正常状態にあるならば（ステップＳ１４のＹＥＳ）、つまりケースＵ２に相当するならば、更新系トランザクション送信部１０２は、正常状態にない方のクラウドサービスが復帰不能な障害状態２０４にあるかを判定する（ステップＳ１５）。もし、正常状態にない方のクラウドサービスが復帰不能な障害状態２０４にある（第４の状態）ならば（ステップＳ１５のＹＥＳ）、更新系トランザクション送信部１０２は、更新系トランザクション要求を正常状態にある方のクラウドサービスに送出し、当該正常状態にある方のクラウドサービスを更新する（ステップＳ１６）。
【００６２】
これに対し、正常状態にない方のクラウドサービスが復帰不能な障害状態２０４にないならば（ステップＳ１５のＮＯ）、つまり障害状態２０２または回復処理中２０３の状態（第３の状態）にあるならば、更新系トランザクション送信部１０２はステップＳ１７に進む。ステップＳ１７において更新系トランザクション送信部１０２は、更新系トランザクション要求を、正常状態にある方のクラウドサービス及び更新系トランザクション記憶部１０６（より詳細には、更新系トランザクション記憶部１０６のＦＩＦＯバッファ１０６ａ及び１０６ｂのうちの対応するＦＩＦＯバッファ）に送出し、正常状態にある方のクラウドサービス及び更新系トランザクション記憶部１０６（対応するＦＩＦＯバッファ）の双方を一貫性を保って更新する。
【００６３】
一方、クラウドサービスａ及びｂのいずれも正常状態にないならば（ステップＳ１４のＮＯ）、更新系トランザクション送信部１０２は、クラウドサービスａまたはｂのいずれかが回復処理中２０３であるかを判定する（ステップＳ１８）。もし、クラウドサービスａまたはｂのいずれかが回復処理中２０３であるならば（ステップＳ１８のＹＥＳ）、更新系トランザクション送信部１０２は、当該回復処理中２０３のクラウドサービスの回復処理の完了を待ち合わせ（ステップＳ１９）、ステップＳ１２に戻る。一方、クラウドサービスａ及びｂのいずれも回復処理中２０３でないならば、更新系トランザクション送信部１０２は、受信した更新系トランザクション要求の示すトランザクションをエラーとして終了する（ステップＳ２０）。
【００６４】
更新系トランザクション記憶部１０６のＦＩＦＯバッファ１０６ａ及び１０６ｂは同時に使用されることはない。したがって、更新系トランザクション記憶部１０６の記憶領域を、更新系トランザクション記憶部１０６ａ及び１０６ｂとして共有して使用することも可能である。
【００６５】
第１の実施形態によれば、コンピュータ２０-1からＬＡＮ４０上にトランザクション要求が送出された場合、クラウドサービスａまたはｂのどちらかが稼動していれば、サービス中継装置１００はコンピュータ２０-1からのトランザクション要求に対応するサービスを当該コンピュータ２０-1に中継することが可能となる。したがって、サービス中継装置１００がサービスを中継できる稼動率は、クラウドサービスａ及びｂの各々の稼動率よりも高くなる。例えば、クラウドサービスａ及びｂの稼動率がそれぞれ９５％であるものとすると、クラウドサービスａ及びｂが共に稼動できない確率は、（１−０．９５）×（１−０．９５）×１００％＝０．２５％である。この場合、サービス中継装置１００がサービスを中継できる稼動率は、１００％−０．２５％＝９９．７５％、つまり９９％以上となる。したがって、システム全体の稼動率が向上し、信頼性を高めることができる。
【００６６】
また、クラウドサービスａまたはｂのどちらかが復帰不能な障害状態になった場合や、どちらかのサービス提供会社がサービスの継続をできなくなった場合でも、同様にサービス中継装置１００はサービスを継続して中継することができる。したがって、サービス提供会社の信頼性やその事業の安定性に関するリスクを低減することができる。
【００６７】
また、クラウドサービスａ及びｂが、比較的信頼性が低いがサービスコストも低いものとする。このような場合、２つのクラウドサービスａ及びｂを上記の実施形態のように２重化することにより、十分な信頼性があり、且つコスト（ＴＣＯ）が低いシステムを構築することが可能となり、更なるコスト削減が可能となる。例えば、クラウドサービスｃの稼動率が９９％でサービスコストが１００万円／月であるのに対して、クラウドサービスａ及びｂの稼動率がそれぞれ９５％でサービスコストが３０万円／月であるとする。この場合、後者のクラウドサービスａ及びｂを２重化した場合、稼動率は上述のように９９％以上となり、サービスコストは「６０万円／月」＋「サービス中継装置１００のコスト」となり、クラウドサービスｃを単独で利用するよりもコストが安くなる可能性がある。
【００６８】
また参照が多い利用形態の場合、比較的信頼性が低いがサービスコストも低いクラウドサービス（例えばクラウドサービスａ）と、比較的信頼性が高いが従量制でサービスコストも高いクラウドサービス（例えばクラウドサービスｂ）とを２重化することにより、更なるなるコスト削減が可能となる。なぜなら、第１の実施形態では、参照に関しては、サービスコストの低い方のサービスのみを使うからである。
【００６９】
次に上述のような第１の実施形態の効果について、従来技術と比較して説明する。  
一般にクラウドサービスにおいては、従量制により課金するサービスが主流である。特に、データの取り出し（読み出し）の量に課金するサービスも少なからずある。また従来技術において、サービスを２重化する構成を適用することも考えられる。このような２重化構成においては、障害復帰時のデータ一致化のため、一方のサービスから他方のサービスへの全データの読み出しが発生する。その結果、相当量のコストが発生することになる。一方、第１の実施形態においては、回復処理において余分なデータの読み出しは発生せず、結果として余計なコストが発生しないという特徴がある。
【００７０】
また第１の実施形態は、システムの運用開始の初期状態で、クラウドサービスａ及びｂに蓄積されている双方のデータが同等であることを前提とするものであるが、データが何も蓄積されていない状態を初期状態として運用を開始する場合には、一致化するデータが無いので初期一致化のためのコストは特段かからない。
【００７１】
サービス提供会社がクラウドサービス内での二重化構成をＳＬＡとして約束している場合もある。しかし、その場合では稼動率に関するリスクは低減されても、サービス提供会社の信頼性やその事業の安定性に関するリスクを低減できない。一方、第１の実施形態では、利用するクラウドサービスａ及びｂの間で直接の連携関係は必要なく、２重化によってサービス提供会社の信頼性やその事業の安定性に関するリスクを低減できる。第１の実施形態においては、サービス提供会社Ａ及びＢの間で全く提携関係等がない場合を想定している。これとは逆に、サービス提供会社Ａ及びＢの間で提携関係があるものとすると、２つのサービスの間に共通部分がある可能性が比較的大きくなり、２重化の効果が低減する恐れがある。例えば、２つのサービスが同一のデータセンターに置かれているとか、システムの下請け会社や運用会社が同一であるなどの可能性は、サービス提供会社の信頼性やその事業の安定性に関する２重化の効果を低減させる要因になる。
【００７２】
［第２の実施形態］
次に第２の実施形態について説明する。  
図５は第２の実施形態に係るサービス中継装置を含む情報システムの構成を示すブロック図である。図５において、図１と等価な部分には同一符号を付してある。
【００７３】
図５に示す情報システムの特徴は、更新系トランザクション記憶部１０６が、専用のクラウドサービスｕの中に配置される点にある。このため、図５に示す情報システムでは、図１に示すサービス中継装置１００に代えて、更新系トランザクション記憶部１０６を持たないサービス中継装置１１０が用いられる。クラウドサービスｕは、例えば、サービス提供会社Ｕに属するコンピュータ（第４のコンピュータ）１０ｕによって提供されるものとする。
【００７４】
第２の実施形態における基本的な動作は、第１の実施形態と同様である。但し、第２の実施形態では、更新系トランザクション記憶部１０６は、サービス中継装置１１０の外部のクラウドサービスｕ内に配置される。クラウドサービスｕは、障害で停止する可能性がある。そこで、クラウドサービスｕが障害で停止した場合の第２の実施形態の動作について説明する。
【００７５】
第１の実施形態の動作から明らかなように、クラウドサービスａ及びｂが共に正常状態にある間は、更新系トランザクション記憶部１０６は使用されない。つまり、更新系トランザクション記憶部１０６が配置されたクラウドサービスｕは使用されない。このため、クラウドサービスｕが障害で停止したとしても、中継装置１１０の動作には影響ない。また、クラウドサービスｕと同様の別のクラウドサービスｕ’が存在するならば、クラウドサービスｕが復帰不能な障害状態となった場合には、当該別のクラウドサービスｕ’に切り替えることも可能である。
【００７６】
一方、参照系トランザクションに関しては、更新系トランザクション記憶部１０６は使用されず、したがってクラウドサービスｕも使用されない。このため、クラウドサービスｕが障害で停止したとしても中継装置１１０の動作には影響ない。
【００７７】
次に、クラウドサービスａまたはｂのどちらかが障害状態または回復処理中に、クラウドサービスｕが停止したものとする。このような状況は、いわゆる２点障害であり、実際に起きる可能性は低い。この場合、中継装置１１０の更新系トランザクション送信部１０２は、更新系トランザクション要求をアボートして終了する。その後、クラウドサービスｕが復帰したならば、中継装置１１０はトランザクションを中継できるようになる。
【００７８】
次に、クラウドサービスａまたはｂのどちらかが障害状態または回復処理中に、クラウドサービスｕが復帰不能な障害状態となったものとする。この場合、中継装置１１０の回復処理部１０７は、クラウドサービスａまたはｂの正常状態にない方を復帰不能な障害状態であるとして強制的に切り離す。これにより、中継装置１１０はトランザクションを中継できるようになる。
【００７９】
第２の実施形態によれば、更新系トランザクション記憶部１０６を含めて、全てののデータがクラウドサービス上に配置される。このように社内システム内にデータが蓄積されないため、第２の実施形態によれば、前述のような第１の実施形態での効果に加えて、社内システムを簡素化することができる。クラウドサービスｕは、クラウドサービスａまたはｂのいずれかが障害となったときに初めて使用される。このため、例えばクラウドサービスｕを従量制で契約しておけば、通常時はコストがかからない。極論すれば、クラウドサービスａまたはｂのいずれかに障害が発生してからクラウドサービスｕを契約してもよい。
【００８０】
［第３の実施形態］
次に第３の実施形態について説明する。  
図６は第３の実施形態に係るサービス中継装置を含む情報システムの構成を示すブロック図である。図６において、図１または図５と等価な部分には同一符号を付してある。
【００８１】
図６に示す情報システムの特徴は、更新系トランザクション記憶部を、更新系トランザクション記憶部１０６ｕ及び１０６ｖにより２重化して、更新系トランザクション記憶部１０６ｕ及び１０６ｖを、それぞれ専用のクラウドサービスｕ及びｖに配置する構成を適用した点にある。第３の実施形態において、クラウドサービスｖは、例えば、サービス提供会社Ｖに属するコンピュータ（第５のコンピュータ）１０ｖによって提供されるものとする。
【００８２】
第３の実施形態における動作は、更新系トランザクション記憶部の二重化に関する動作を除き、第１の実施形態と同様である。そこで、図６に示す情報システムにおける更新系トランザクション記憶部の２重化に関する動作について、図７の動作説明図を参照して説明する。
【００８３】
上述したように、更新系トランザクション記憶部は、クラウドサービスｕ及びｖで２重化されている。つまり、図１または図５に示す更新系トランザクション記憶部１０６に相当する更新系トランザクション記憶部は、クラウドサービスｕ及びｖ内にそれぞれ配置された更新系トランザクション記憶部１０６ｕ及び１０６ｖにより２重化されている。図７に示すように、更新系トランザクション記憶部１０６ｕは、２つのＦＩＦＯバッファ１０６ｕａ及び１０６ｕｂから構成され、更新系トランザクション記憶部１０６ｖは、２つのＦＩＦＯバッファ１０６ｖａ及び１０６ｖｂから構成される。この点で、更新系トランザクション記憶部１０６ｕ及び１０６ｖは、図１に示す更新系トランザクション記憶部１０６と同様の構成を有している。
【００８４】
以下、第３の実施形態において第１の実施形態と相違する動作について、第１の実施形態におけるケースＵ２、回復処理ＲＰに相当するケースＵ２’、回復処理ＲＰ’を例に説明する。  
（ケースＵ２’）
まず、コンピュータ２０-1からのトランザクション要求が更新系トランザクション要求であり、且つクラウドサービスａが正常状態にあり、クラウドサービスｂが障害状態にあるケースＵ２’におけるサービス中継装置１００の動作について説明する。
【００８５】
コンピュータ２０-1からの更新系トランザクション要求で示される更新系トランザクションは、正常状態にあるクラウドサービスａで処理されると同時に、当該更新系トランザクション要求が、クラウドサービスｕ内の更新系トランザクション記憶部１０６ｕのＦＩＦＯバッファ１０６ｕｂ及クラウドサービスｖ内の更新系トランザクション記憶部１０６ｖのＦＩＦＯバッファ１０６ｖｂに順に記憶される。このときの更新系トランザクション要求の流れは、次の通りとなる。
【００８６】
まず、更新系トランザクション要求は、コンピュータ２０-1からＬＡＮ４０、サービス中継装置１００のトランザクション受信部１０１を通って、サービス中継装置１００の更新系トランザクション送信部１０２に到達する。更新系トランザクション送信部１０２に到達した更新系トランザクション要求は、インターネット３０を通ってクラウドサービスａに到達する。
【００８７】
また、更新系トランザクション送信部１０２に到達した更新系トランザクション要求は、インターネット３０を通って、図７において矢印７０１ｕ及び７０１ｖで示すように、クラウドサービスｕ及びｖにも到達し、更新系トランザクション記憶部１０６ｕのＦＩＦＯバッファ１０６ｕｂ及び更新系トランザクション記憶部１０６ｖのＦＩＦＯバッファ１０６ｖｂに記憶される。更新系トランザクション要求に対するトランザクション応答は、当該更新系トランザクション要求とは逆の経路てコンピュータ２０-1に到達する。
【００８８】
ここで、クラウドサービスａ、更新系トランザクション記憶部１０６ｕ（ＦＩＦＯバッファ１０６ｕｂ）及び更新系トランザクション記憶部１０６ｖ（ＦＩＦＯバッファ１０６ｖｂ）の３つの更新は一貫性を保って行われる。一般に一貫性を保つ更新の方法として、ケースＵ１についての説明で挙げたように様々な方法が知られており、いずれを適用しても構わない。
【００８９】
（回復処理ＲＰ’）
次に、障害状態２０２にあったクラウドサービスｂが復帰した場合の回復処理（回復処理ＲＰ’）について説明する。
【００９０】
回復処理部１０７は、更新系トランザクション記憶部１０６ｕ（ＦＩＦＯバッファ１０６ｕｂ）及び更新系トランザクション記憶部１０６ｖ（ＦＩＦＯバッファ１０６ｖｂ）に記憶されている、クラウドサービスａで処理されたのと同一の更新系トランザクション要求を時系列順に、それぞれ図７において矢印７０２ｕ及び７０２ｖで示すように取り出す。但し、更新系トランザクション記憶部１０６ｕ及び１０６ｖには同一の更新系トランザクション要求の系列が記憶されている。このため、更新系トランザクション要求の取り出しは、更新系トランザクション記憶部１０６ｕまたは１０６ｖのいずれか一方のみから行えば十分である。この場合、もう一方の更新系トランザクション記憶部に記憶されている更新系トランザクション要求の系列を削除すればよい。
【００９１】
回復処理部１０７は、更新系トランザクション記憶部１０６ｕまたは１０６ｖから取り出した更新系トランザクション要求に基づき、図７において矢印７０３で示すように、クラウドサービスｂを順に更新していく。回復処理部１０７による回復処理の進捗状況は、当該回復処理部１０７内部に記憶される。回復処理部１０７による回復処理が完了すると、障害状態記憶部１０５で管理されるクラウドサービスｂの状態は回復処理中２０３から正常状態２０１に遷移する。
【００９２】
次にクラウドサービスｕまたはｖのいずれか一方が障害となった場合について説明する。クラウドサービスａ及びｂが共に正常状態にある間は、クラウドサービスｕ及びｖは共に使用されない。このため、クラウドサービスｕまたはｖの一方が障害で停止したとしても中継装置１１０の動作には影響ない。
【００９３】
一方、参照系トランザクションに関しては、クラウドサービスｕ及びｖは共に使用されない。このため、クラウドサービスｕまたはｖの一方が障害で停止したとしても中継装置１１０の動作には影響ない。
【００９４】
次に、クラウドサービスａまたはｂのどちらかが障害状態または回復処理中に、クラウドサービスｕまたはｖが停止したものとする。このような状況は、いわゆる２点障害であり、実際に起きる可能性は低い。この場合、中継装置１１０の更新系トランザクション送信部１０２は、更新系トランザクション要求をアボートして終了する。
【００９５】
クラウドサービスａまたはｂのどちらかが回復処理中に、クラウドサービスｕまたはｖの一方が停止したものとする。この場合、中継装置１１０の回復処理部１０７は回復処理を継続することができるので、まずその回復処理を完了させる。回復処理が完了することでクラウドサービスａ及びｂの両方が正常状態になる場合には、更新トランザクションは正常に処理可能となる。
【００９６】
次に、クラウドサービスｕまたはｖが復帰した場合について説明する。この場合、回復処理部１０７は、既に回復処理されたところまで更新系トランザクション要求を更新系トランザクション記憶部１０６ｕまたは１０６ｖから取り出して、当該取り出した更新系トランザクション要求を、復帰したクラウドサービスに反映させることによって、クラウドサービスｕ及びｖの内容を一致化させることができる。この一致化処理は、クラウドサービスｕまたはｖが停止中に上述の回復処理が行われた可能性があるために必要な処理である。
【００９７】
ここで、回復処理の進捗状況は回復処理部１０７内部に記憶されている。このため、クラウドサービスｕ及びｖの両方が停止していたとしても、一致化処理は実行可能である。また、一致化処理は復帰時点で直ちに行う必要はなく、回復処理を実行する時点で行ってもよい。
【００９８】
次に、クラウドサービスｕまたはｖの一方、例えばクラウドサービスｖが復帰不能な状態になったものとする。この時点で、回復処理部１０７は、復帰不能な状態になったクラウドサービスｖを切り離す。このクラウドサービスｖが切り離された後の情報システムは、第２の実施形態に係る図５に示す情報システムと同様の構成になり、第２の実施形態と同様な動作によってシステムの運用を継続できる。またその後、別のクラウドサービスｗを導入し、回復処理部１０７が、稼動中のクラウドサービスｕから当該クラウドサービスｕに配置されている更新系トランザクション記憶部１０６ｕの内容をクラウドサービスｗにコピーして一致化してもよい。これにより、クラウドサービスｖが切り離された状態の情報システムを、再び図６に示す情報システムと等価な構成に戻すことが可能である。
【００９９】
第３の実施形態によれば、更新系トランザクション記憶部をクラウドサービスｕ及びＶに２重化して配置することにより、前述したような第２の実施形態での効果に加えて、更新系トランザクション記憶部の耐障害性を向上することができる。特に第３の実施形態によれば、クラウドサービスｕまたはｖのいずれか一方が復帰不能な状態になった場合でも、システム全体としての復元率を高めることができる。
【０１００】
［第４の実施形態］
次に第４の実施形態について説明する。  
図８は第４の実施形態に係るサービス中継装置を含む情報システムの構成を示すブロック図である。図８において、図１と等価な部分には同一符号を付してある。
【０１０１】
図８に示す情報システムの特徴は、サービス中継装置が２重化されている点にある。このため、図８に示す情報システムでは、図１に示すサービス中継装置１００に代えて、クラスタマネージャ１０８を備えたサービス中継装置１２０-1及び１２０-2が用いられる。なお、図８では、インターネット３０を介してサービス中継装置１２０-1及び１２０-2に接続されるコンピュータ１０ａ（クラウドサービスａ）及びコンピュータ１０ｂ（クラウドサービスｂ）と、ＬＡＮ４０を介してサービス中継装置１２０-1及び１２０-2に接続されるコンピュータ２０-1〜２０-5は省略されている。
【０１０２】
第４の実施形態では、サービス中継装置１２０-1及び１２０-2は、図１に示すサービス中継装置１００と異なり、障害状態記憶部１０５及び更新系トランザクション記憶部１０６を備えていない。障害状態記憶部１０５及び更新系トランザクション記憶部１０６は、記憶装置１３０に配置される。また、回復処理部１０７による回復処理の進捗状況も、当該回復処理部１０７ではなくて、記憶装置１３０に記憶される。
【０１０３】
サービス中継装置１２０-1及び１２０-2は、周知のクラスタシステムを構成しており、記憶装置１３０を共有する。サービス中継装置１２０-1及び１２０-2の一方は例えば稼動系として動作し、他方は待機系として動作する。サービス中継装置１２０-1及び１２０-2のクラスタマネージャ１０８は、従来から知られている種々の方法のいずれかによって、それぞれサービス中継装置１２０-2及び１２０-1の障害を検出する。ここでは、サービス中継装置１２０-1及び１２０-2のクラスタマネージャ１０８は、経路５０を介して相互に通信することにより、通信相手のサービス中継装置１２０-2及び１２０-1の障害を検出する。
【０１０４】
もし、待機系のサービス中継装置が稼動系のサービス中継装置の障害を検出した場合、待機系のサービス中継装置が稼動系に切り替わって、障害となったサービス中継装置の処理を引き継ぐ。例えば、稼動系に切り替わったサービス中継装置は、記憶装置１３０に配置されている障害状態記憶部１０５及び更新系トランザクション記憶部１０６と、当該記憶装置１３０に記憶されている回復処理の進捗状況を参照することで、障害となったサービス中継装置の処理を正しく引き継ぐことができる。
【０１０５】
以上説明した少なくとも１つの実施形態によれば、システムのコスト（ＴＣＯ）を低く抑えつつ、クラウドサービスを高稼動率で且つ高信頼性で適用できる、複数のインターネットサービスを多重化するサービス中継装置及びサービス中継方法を提供できる。
【０１０６】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１０７】
１０ａ…第１のコンピュータ，１０ｂ…第２のコンピュータ、１０ｕ…第４のコンピュータ、１０ｖ…第５のコンピュータ、２０-1〜２０-n…コンピュータ（第３のコンピュータ）、３０…インターネット、４０…ＬＡＮ（ネットワーク）、１００，１１０，１２０-1，１２０-2…サービス中継装置、１０１…トランザクション受信部、１０２…更新系トランザクション送信部、１０３…参照系トランザクション送信部、１０４…障害検出部、１０５…障害状態記憶部、１０６，１０６ｕ，１０６ｖ…更新系トランザクション記憶部、１０６ａ，１０６ｂ，１０６ｕａ，１０６ｕｂ，１０６ｖａ，１０６ｖｂ…ＦＩＦＯバッファ、１０７…回復処理部、１０８…クラスタマネージャ、１３０…記憶装置。
【図１】
2012203473.tif 000003
【図２】
2012203473.tif 000004
【図３】
2012203473.tif 000005
【図４】
2012203473.tif 000006
【図５】
2012203473.tif 000007
【図６】
2012203473.tif 000008
【図７】
2012203473.tif 000009
【図８】
2012203473.tif 000010