(57)【特許請求の範囲】
【請求項１】
サービスのネットワークにおいてジョブを再生するコンピューターによって実行される方法であって、該方法は、
前記サービスの第１場所から、前記サービスの前記第１場所と実質的に同じ構成とされる前記サービスの第２場所へ、オペレーションを移動するために、フェールオーバー・イベントが生じたときに検出を行うステップと、
前記サービスの第２場所が、前記サービスの第１場所と同期した状態にとどまるよう前記フェールオーバー・イベントの前に、前記サービスの前記第１場所からのトランザクションログを前記サービスの前記第２場所で再生するステップと、
前記サービスの前記第１場所からジョブを得るステップと、
得られた前記ジョブを前記サービスの前記第２場所で投入するステップと、
第１場所パラメーターの第２場所パラメーターへのマッピングを得ることにより、得られた前記ジョブを第２場所パラメーターと適合するよう更新するステップと
を含み、前記第２場所は前記フェールオーバー・イベントの後にサービスの第１場所になる方法。
【請求項２】
請求項１に記載の方法であって、前記サービスの前記第１場所からジョブを得る前記ステップは、前記フェールオーバー・イベントから所定時間内に前記第１場所へ投入されたジョブのそれぞれを得るステップを含む、方法。
【請求項３】
請求項２に記載の方法であって、得られた前記ジョブは、前記フェールオーバー・イベントの前及び後でサービスの前記第１場所へ投入されたジョブを含む、方法。
【請求項４】
請求項１に記載の方法であって、得られた前記ジョブを前記サービスの前記第２場所で投入する前記ステップは、各ジョブが、フェールオーバー・フラグを設定するステップを含む、方法。
【請求項５】
請求項１に記載の方法であって、各ジョブは、前記第１場所と前記第２場所との間でのマッピングを決定するために中央サービスへクエリを行う、方法。
【請求項６】
請求項１に記載の方法であって、前記第１場所の同期時間を所定の時間だけロールバックし、前記第１場所を前記第２場所と再同期させるステップを更に含む方法。
【請求項７】
請求項１に記載の方法であって、得られた前記ジョブを前記サービスの前記第２場所で投入する前記ステップは、投入されたジョブのネットワーク識別子を、前記サービスの前記第２場所を反映するように変更するステップを含む、方法。
【請求項８】
請求項１に記載の方法であって、得られた前記ジョブを前記サービスの前記第２場所で投入する前記ステップは、各ジョブが、そのジョブのリクエストを投入するステップを含む、方法。
【請求項９】
請求項１に記載の方法であって、中央サービスから前記マッピングを得るステップをさらに含む、方法。
【請求項１０】
サービスのネットワークにおいてジョブを再生するためのコンピューター実行可能命令を有するコンピューター読取可能記録媒体であって、
前記サービスの第１場所から、前記サービスの前記第１場所と実質的に同じ構成とされる前記サービスの第２場所へ、オペレーションを移動するために、フェールオーバー・イベントが生じたときに決定を行うことと、
前記サービスの第２場所が、前記サービスの第１場所と同期した状態にとどまるよう前記フェールオーバー・イベントの前に、前記サービスの前記第１場所からのトランザクションログを前記サービスの前記第２場所で再生することと、
前記サービスの前記第１場所からジョブを得ることと、
第１場所パラメーターの第２場所パラメーターへのマッピングを用いて、前記サービスの前記第１場所の物理的特性に依存するジョブ内でパラメーターをサービスの第２場所に変更することにより、第２場所パラメーターと適合するよう得られた前記ジョブを更新することと
得られた前記ジョブを前記サービスの第２場所で投入することと、
のコンピューター実行可能命令を含む、
コンピューター読取可能記録媒体。
【請求項１１】
請求項１０記載のコンピューター読取可能記録媒体であって、前記サービスの第１場所から前記ジョブを得ることは、前記フェールオーバー・イベントから所定の時間内に実行されるべき投入されたジョブの各々を得ることを含む、コンピューター読取可能記録媒体。
【請求項１２】
請求項１１記載のコンピューター読取可能記録媒体であって、前記第２の場所で投入されたジョブは、何れのオペレーションも実行されるべきではないことを判定することに応答して自動的に終了する、コンピューター読取可能記録媒体。
【請求項１３】
請求項１０記載のコンピューター読取可能記録媒体であって、前記サービスの第２場所において前記得られたジョブを投入することは、前記ジョブのそれぞれにおいてフェールオーバー・フラグを設定することを含む、コンピューター読取可能記録媒体。
【請求項１４】
請求項１０記載のコンピューター読取可能記録媒体であって、第１場所における識別子と、前記第２場所における対応する識別子とのマッピングを提供することをさらに含む、コンピューター読取可能記録媒体。
【請求項１５】
請求項１０記載のコンピューター読取可能記録媒体であって、同期時間を所定の時間だけロールバックすることを更に含むコンピューター読取可能記録媒体。
【請求項１６】
サービスのネットワークにおいてジョブを再生するためのシステムであって、
プロセッサおよびコンピューター読取可能媒体と、
前記コンピューター読取可能媒体に格納され、前記プロセッサで実行される動作環境と、
アクションを行うように動作するクラウド・マネージャーと
を含み、前記アクションは、
前記サービスの第１場所から、前記サービスの前記第１場所と実質的に同じ構成とされる前記サービスの第２場所へ、オペレーションを移動するために、フェールオーバー・イベントが生じたときに決定を行うことと、
前記サービスの第２場所が、前記サービスの第１場所と同期した状態にとどまるよう前記フェールオーバー・イベントの前に、前記サービスの前記第１場所からのトランザクションログを前記サービスの前記第２場所で再生することと、
前記サービスの前記第１場所からジョブを得ることと、
前記サービスの前記第１場所の物理的特性に依存するジョブ内の識別子を、前記サービスの前記第２場所に変更することを含む、第１場所パラメーターの第２場所パラメーターへのマッピングを得ることにより、第２場所パラメーターと適合するよう得られた前記ジョブを更新することと、
得られた前記ジョブを前記サービスの前記第２場所で投入することと
を含む、
システム。
【請求項１７】
請求項１６記載のシステムであって、前記サービスの第１場所からジョブを得ることは、前記フェールオーバー・イベントから所定の時間内に実行されるべき投入された前記ジョブの各々を得ることを含む、システム。
【請求項１８】
請求項１６記載のシステムであって、前記サービスの第２場所において前記得られたジョブを投入することは、前記ジョブのそれぞれにおいてフェールオーバ−・フラグを設定することを含む、システム。
【請求項１９】
請求項１６記載のシステムであって、第１場所における識別子と第２場所における対応する識別子とのマッピングを提供することをさらに含む、システム。
【請求項２０】
請求項１６に記載のシステムであって、同期時間を所定の時間だけロールバックさせることを更に含むシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
[0001]  ウェブ・ベースのサービスは、データベースに格納されたデータと共に、ウェブ・サーバーに位置するファイルを含む。例えば、サービスへ向けられたトラフィックを処理するための多数のサーバーがある。時には、サービスが大失敗し、それにより作業が失われることがある。新たなサービスへオペレーションを移行するプロセスは、費用よび時間がかかり得る。
【発明の概要】
【０００２】
[0002]  この概要は、以下の詳細な説明で更に説明するものを簡素化した形で、選択した概念を紹介するものである。この概要は、特許請求の範囲に記載の主題事項の鍵となる特徴や本質的な特徴を特定することを意図しておらず、また、特許請求の範囲に記載の主題事項の範囲を決定する際の支援として用いることを意図していない。
【０００３】
[0003]  フェールオーバー・イベント（fail-over event）の前および／または後の期間内にサービスの第１場所へ提出されたジョブが決定され、サービスの第２場所へ再提出される。例えば、フェールオーバー・イベントの１５分前に提出されたジョブと、第２場所に対してのフェールオーバーが完了する前に第１ネットワークへ提出されたジョブとは、第２場所で再提出される。フェールオーバー・イベントが発生した後、ジョブは、サービスの第１場所に代わる第２ネットワークにより更新される。第１場所から第２場所へのジョブ入力パラメーター（例えば、識別子や秘密）のマッピングは、ジョブが第２場所へ提出されたときに、それらのジョブにより用いられる。各ジョブは、ジョブ・リクエストに対してどのような変更が行われるかを、フェールオーバー・イベントの発生に起因して再提出されたジョブに基づいて決定する。例えば、幾つかのジョブは、再提出される必要がないことを決定し、別の幾つかのジョブは、単に、同じジョブを第２場所へ提出する。
【図面の簡単な説明】
【０００４】
【図１】図１は、サービスの第２場所でジョブを再生するためのクラウド管理システムを示す。
【図２】図２は、サービスの第２場所でジョブを再生するためのシステムを示す。
【図３】図３は、例示的なジョブ・レコードを示す。
【図４】図４は、第２ネットワークにおいてジョブを再生するプロセスを示す。
【図５】図５は、例示的なコンピューター・アーキテクチャーを示す。
【発明を実施するための形態】
【０００５】
[0009]  ここで図面を参照すると、様々な実施形態が説明されており、これらの図面では、同じ番号は同じエレメントを表す。
[0010]  一般に、プログラム・モジュールは、ルーチン、プログラム、コンポーネント、データ構造、および特定のジョブを行ったり特定の抽象データ型を実施したりする他のタイプの構造を含む。他のコンピューター・システム構成（configuration）も使用することができ、それらは、手持ち型デバイス、マルチプロセッサー・システム、マイクロプロセッサー・ベースまたはプログラマブルの消費者用電子機器、マイクロコンピューター、メインフレーム・コンピューターなどを含む。分散型コンピューティング環境を使用することもでき、その場合、ジョブは、通信ネットワークを通じてリンクされるリモート・プロセッシング・デバイスにより行われる。分散型コンピューティング環境では、プログラム・モジュールは、ローカルおよびリモートの双方のメモリ・ストレージ・デバイスに配されることができる。
【０００６】
[0011]  図１は、サービスの第２場所でジョブを再生するためのクラウド管理システムを示す。システム１００はクラウド・マネージャー１０５を示し、クラウド・マネージャー１０５は、可能性としては世界中に分散された様々なネットワークへ接続され、それらを管理する。ネットワークのそれぞれは、１以上のテナント（例えば、クライアント、顧客）へコンテンツ・サービスを提供するように構成される。ネットワークは、クラウド・サービス内および／または社内データ・センターにおいて、ホストされることができる。クラウド・マネージャー１０５は、ネットワークの配置（deploying）、構成（configuring）、および管理（managing）において用いられる。クラウド・マネージャーは、ベキ等(idempotent)および非同期のアプリケーションのウェブ・サービス・アプリケーション・プログラミング・インターフェイス（ＡＰＩ）１５０を通じてリクエストを受信するように構成され、このＡＰＩは間欠的なネットワーク障害を許容することができる。
【０００７】
[0012]  示されているように、クラウド・マネージャー１０５は、ワーク・マネージャー１１０と、マシン・マネージャー１１５と、アプリケーション固有マネージャー１２０と、スクリプト１３０と、再生マネージャー２６と、データ・ストア（１以上）１４０（例えば、データベース）などのような中央リポジトリとを含む。示したマネージャーのうちの１つのものに含まれていない機能は、クラウド・マネージャーの他の幾つかの位置に在るようにできる。１つの実施形態に従うと、アプリケーション・マネージャー１２０は、ＳｈａｒｅＰｏｉｎｔ（登録商標）テナント・マネージャーであり、ＳｈａｒｅＰｏｉｎｔ（登録商標）固有ロジックを含む。
【０００８】
[0013]  一般に、クラウド・マネージャー１０５は、オンライン・コンテンツ管理サービスなどのようなオンライン・サービスのためのネットワークの配置および管理の援助を行う。クラウド管理システムは、中央調整サービスであり、オンライン・サービスの提供に使用されるネットワークにおけるジョブの構成、更新、および実行と関連するオペレーションを行うためのリクエストを受信する。例えば、クラウド・マネージャーは、１以上のネットワーク内の資産（例えば、サーバー、ファーム、ユーザー・プロパティなど）を管理するために呼び出される。資産の管理は、サーバーや仮想マシン（ＶＭ）でのマシンの配置、マシンの更新、マシンの除去、構成変更の実行や、管理に関する他のジョブを行うことを含み得る。クラウド・マネージャーは、クラウド・マネージャーに対しての更新中であっても、接続されたネットワークに対してのサービスを提供するように構成される。クラウド・マネージャーは、信頼性のあるネットワークをあてにできない、ベキ等および非同期のアプリケーション・プログラミング・インターフェイス（ＡＰＩ）を通じて、リクエストを受信するように構成される。
【０００９】
[0014]  示されているように、ネットワーク１およびネットワーク２は、ユーザに対してアクティブにサービスを行っている生きたネットワークである。第２ネットワーク１および第２ネットワーク２は、対応する生きたネットワークのコンテンツおよび構成をミラーする第２ネットワークである。第２ネットワークは、ユーザーに対してアクティブにサービスを行っていないが、第１ネットワークはアクティブである。１つの実施形態によると、第２ネットワークは「ウォーム(warm)」に維持され、停止や災害やフェールオーバーの場合に、第１ネットワークからのユーザー・ロードを、第２ネットワークへ迅速に切り換えることができる。
【００１０】
[0015]  第１ネットワークは、バックアップ（全体的、増分的）を行うように構成され、バックアップはＳＱＬトランザクション・ログ・バックアップを含み、これは、定期的および頻繁に行われる（例えば、少なくとも１時間に数回）。第１ネットワーク（例えば、ネットワーク１および２）からのバックアップは、それを作った後に第２ネットワーク（例えば、第２ネットワーク１および２）へコピーされる。１つの実施形態によると、第２ネットワークは、対応する第１ネットワークからトランザクション・ログを受信すると、それらのトランザクション・ログを再生する。生きた第１ネットワークで生じる管理操作は、対応するウォームな第２ネットワークで自動的に再生され、第１ネットワークと第２ネットワークとが同期した状態にとどまる。
【００１１】
[0016]  ワーク・マネージャー１１０は、ジョブの実行を管理し、実行の長いジョブのスケジューリングと再試行とを可能とする。ワーク・マネージャー１１０は、ジョブ・キュー１１２に格納されたジョブを開始し、ジョブの実行を追跡する。所定の時間が経過すると、ワーク・マネージャー１１０は、タスクを自動的にキャンセルし、そのタスクと関連する何らかの他の処理を行う。１つの実施形態によると、ジョブ・キュー１１２内のジョブは、ワーク・マネージャー１１０により、１以上のスクリプト１３０を呼び出すことにより、実行される。例えば、マイクロソフト（登録商標）のＰｏｗｅｒＳｈｅｌｌ（登録商標）のようなスクリプト言語を、ワーク・マネージャー１１０により実行されるジョブをプログラムするために用いることができる。各スクリプトは、新たなプロセスとして実行することができる。各スクリプトを新たなプロセスとして実行することは、ＣＰＵのオーバーヘッドをかなり高くすることになり得るが、このシステムは、スケーラブルであり、各スクリプトの実行のためのクリーンな環境と、スクリプトが完了したときの完全なクリーンアップとを保証することを手助けする。
【００１２】
[0017]  ジョブが第２場所で再提出されるとき（例えば、第２場所に対してのフェールオーバーに応答して）、ワーク・マネージャー１１０は、再提出するジョブを決定する際に用いられる。例えば、ワーク・マネージャー１１０は、フェールオーバー・イベントの前から、ジョブ・リクエストが第２場所で処理されるまでの時間窓内で、サービスの第１場所で行われるように提出されたジョブを決定することができる。
【００１３】
[0018]  マシン・マネージャー１１５は、ネットワーク内（例えば、ネットワーク１、ネットワーク２、第２ネットワーク１、第２ネットワーク２）の物理マシンを管理するように構成される。一般に、マシン・マネージャー１１５は、ネットワーク、物理マシン、仮想マシン（ＶＭ）、ＶＭイメージ（ＶＨＤ）などを理解する。マシン・マネージャーは、ネットワーク内で実行される特定のサービスに対しての強いバインドを有さないが、「役割」に関してネットワーク内の様々なコンポーネントを追跡する。例えば、マシン・マネージャー１１５は、ＡＰＩ１５０を通じて、ネットワーク２でバージョン１２．３４．５６．７８の「Ｆｏｏ」型のＶＭを配置することを、要求され得る。クラウド・マネージャー１０５へのリクエストに応答して、マシン・マネージャー１１５は、ネットワーク２に配置されている適切な物理マシンを見つけ、ＶＭの役割と関連するＶＭイメージに従ってＶＭを構成する。物理マシンは、データ・ストア１４０などのようなデータ・ストア内に格納されているバージョン１２．３４．５６．７８のＦｏｏ型のＶＨＤを用いて構成される。第２ネットワーク２に対して、対応する変更が行われる。また、ネットワーク内で使用されたイメージは、１以上のネットワークに対してのローカル・データシェアなどのような、他の位置へ格納することもできる。スクリプトは、物理マシンへのＶＨＤのインストレーションを行うように、および配置後の構成を行うように、実行することができる。マシン・マネージャー１１５は、各ネットワークのマシンの構成を追跡する。例えば、マシン・マネージャー１１５は、ＶＭの役割（ＶＭのタイプ）、ＶＭの状態（プロビジョニング、実行、停止、失敗）、バージョン、および（それらのネットワークを暗示する）ＶＭが所与のファームに存在するかを追跡することができる。
【００１４】
[0019]  構成データベース１１６は、各ネットワークのマップを含む。例えば、構成データベース１１６は、ネットワークのファーム、データベース、サイト・コレクション（site collections）などのそれぞれと関連する情報を含むことができる。構成データベース１１６は、各ネットワークについてのそれぞれの物理マシン、ＶＭ、ファームなどの行を含むことができる。１つの実施形態によると、ネットワーク内のそれぞれのＶＨＤ、ファーム、およびＶＭは、関連するバージョン文字列を有する。
【００１５】
[0020]  スクリプト１３０は、クラウド・マネージャー１０５のためにローカルで、および１以上のネットワークにおいてリモートでの双方で作業を行うために実行されるスクリプトを格納するように、構成される。また、１以上のスクリプト１３０を別の位置に格納することもできる。例えば、ネットワーク（例えば、ネットワーク１、ネットワーク２）で実行されるスクリプトは、そのネットワークへローカルに格納することができる。スクリプトは、多くの様々な目的に使用することができる。例えば、スクリプトは、１以上のネットワーク内のマシンの構成、以前に構成されたマシンの設定の変更、新たなＶＭの付加、新たなデータベースの付加、或るマシンから別のマシンへのデータの移動、テナントの移動、スキーマの変更などを行うために使用することができる。１つの実施形態によると、スクリプトは、マイクロソフト（登録商標）のＰｏｗｅｒＳｈｅｌｌ（登録商標）スクリプトである。他のプログラミング実装を用いることもできる。例えば、コンパイルされたおよび／または初期にバインドされたプログラミング言語を用いて、機能を実装することがでる。しかしながら、スクリプティングは、行われる多くのジョブを表すためのかなり簡潔な言語である。同等のものをＣ＃などのようなプログラミング言語でプログラミングするには、より多くの詳細の実装を必要とする場合が多い。また、スクリプトは遅延バインディング（late-bound）であり、これは、様々なインターフェイスＤＬＬへ常にリンクすることを必要とせずに、基になるコードベースの複数のバージョンのものがターゲットにされることを、意味する。ＰｏｗｅｒＳｈｅｌｌ（登録商標）スクリプトを用いることにより、クラウド・マネージャー１０５によりローカルにプロセスを開始することが可能とされ、クラウド・マネージャー１０５は、次に、リモート・マシン（即ち、接続されたネットワークの１つにおける物理マシン）でプロセスを開始させる。また、Ｓｅｃｕｒｅ  Ｓｈｅｌｌ（ＳＳＨ）などのような他の技術を用いて、リモート・マシンでプロセスを開始することもできる。スクリプトが第１場所（例えば、ネットワーク１）で実行されるとき、そのスクリプトはまた、第２場所（例えば、第２ネットワーク２）で実施され、第１場所と第２場所とは同様に構成される。
【００１６】
[0021]  クラウド・マネージャー１０５が管理しているアプリケーション固有情報は、アプリケーション・マネージャー１２０により実行される。１つの実施形態によると、アプリケーション固有情報は、マイクロソフト（登録商標）ＳｈａｒｅＰｏｉｎｔ（登録商標）と関連する。従って、アプリケーション・マネージャー１２０は、ＳｈａｒｅＰｏｉｎｔ（登録商標）テナント、サイト・コレクションなどについて知るように、構成される。
【００１７】
[0022]  各ネットワークは、テナントのための専用ネットワーク、および／または１より多くのクライアントに対してサービスを行うマルチテナント・ネットワークとして構成することができる。ネットワークは、数が変わる物理／仮想マシンと、配置後に代わるそれらの構成とを含むことができる。１つの実施形態によると、サービスの第１場所と第２場所とは、同様に構成される。
【００１８】
[0023]  一般に、ネットワークは、ネットワークの制限（例えば、ロード・バランサーおよびネットワーク・スイッチ）を超えないかぎり、成長を続ける。例えば、ネットワークは、１０個のサーバーから開始して、後に、１００個以上のサーバーへと拡張する。第１ネットワークが変更されると、対応する第２ネットワークは、自動的に変更されて、第１ネットワークに対してなされた変更を反映する。ネットワーク内の物理マシンには、クラスまたはタイプが割り当てられる。例えば、マシンの幾つかは、計算マシン（ウェブ・のフロント・エンドおよびアプリケーション・サーバーで使用される）であり、別のマシンは、計算マシンよりも多くのストレージを与えられるストレージ・マシンである。１つの実施形態によると、クラウド・マネージャー１０５は、複数のバージョンのイメージ・ファイルを用いてネットワーク内のマシンを構成する。１つの実施形態によると、ファームは、通常、同じバージョンのイメージ・ファイルを有する。
【００１９】
[0024]  １つの実施形態によると、ソフトウェアの制限は、ネットワーク内のクラウド・マネージャー・システム１００により、マシンを仮想化し、ネットワーク内の独立的に動作する「ファーム」を管理することにより、管理される。各ネットワークは、１以上のファームを含むことができる（例えば、ネットワーク１を参照）。１つの実施形態によると、ネットワークは、ネットワーク負荷分散マシン（network load balanced machines）の１クラスタとして考慮され、ネットワーク負荷分散マシンは、１以上のＶＩＰ（Virtual IP）を外の世界へ露出させるものであり、そのトラフィックをネットワーク内の何れのマシンへもルーティングできるものである。ネットワーク内のマシンは、一般に、密に結合され、レイテンシは最小（即ち、＜１ミリ秒ｐｉｎｇの待ち時間）である。
【００２０】
[0025]  ファームは、密にバインドされた関係を必要とするアプリケーションを調整するために使用されるマシンの基本的なグループである。例えば、コンテンツ・ファームは、マイクロソフト（登録商標）のＳｈａｒｅＰｏｉｎｔ（登録商標）などのようなコンテンツ管理アプリケーションのために各ネットワーク内に配置することができる。一般に、各ファーム内のマシンの組は、ウェブ・サービスとアプリケーション・サーバー機能とを共に提供する。典型的には、ファーム内のマシンは、特定のテナントおよびサイト・コレクションへのサービスを行うために、アプリケーション（即ち、ＳｈａｒｅＰｏｉｎｔ（登録商標））の同じビルドを実行しており、共通の構成データベースを共有している。
【００２１】
[0026]  ファームは、仮想マシンの異種の組を含むことができる。クラウド・マネージャー１０５は、データ・ストア１４０内に「ファーム・ゴール」を維持しており、これは、各ファームについての各役割のマシンのターゲット数である。幾つかの役割は、コンテンツ・フロント・エンド（Content Front End）、コンテンツ全体管理（Content Central Admin）、コンテンツ・タイマー・サーバー（Content Timer Server）、フェデレーション全体管理（Federated Central Admin）、フェデレーション・アプリケーション・サーバー（Federated App Server）などを含む。例えば、コンテンツ・ファームは、入来する顧客リクエストに対処する基本的なＳｈａｒｅＰｏｉｎｔ（登録商標）ファームである。フェデレーション・サービス・ファームは、サーチやプロフィール・ストアなどのような、ファーム間で動作できるＳｈａｒｅＰｏｉｎｔ（登録商標）サービスを含む。ファームは、大容量のパブリック・インターネット・サイトをホストするために使用できる。幾つかのファームは、アクティブ・ディレクトリ・サーバーのグループとプロビジョニング・デーモンとを含むことができる。クラウド・マネージャー１０５は、定められたターゲットに会うことの助けとなるように、ネットワーク内の仮想マシンを自動的に配置および／または使用停止する。これらのファーム・ゴールは、自動および／または手動で構成することができる。例えば、ファーム・ゴールは、活動および容量の要求における変更に応答するように、変更することができる。ネットワーク・ファーム  −  ネットワーク全体に対するリソースとして、容易にスケール・アウトするＶＭ役割の全てを含む、１つのネットワークに対して１つのネットワーク・ファームがある。
【００２２】
[0027]  クラウド・マネージャー・ウェブ・サービスＡＰＩ１５０は、大規模なスケーラブルなグローバル・サービスのコンテキストにおいて働くように設計される。ＡＰＩは、何れのネットワーク・リクエストも輸送中に失敗および／またはハングし得る、ということを仮定している。クラウド・マネージャー１０５へのコールは、ベキ等となるように構成される。換言すると、結果を変更することなく、複数回の同じコールがクラウド・マネージャー１０５に対して行われる（パラメータが同一であるかぎり）。
【００２３】
[0028]  クラウド・マネージャー１０５は、サービスに対する現在のリクエストを追跡するためにレコードを維持する。例えば、クラウド・マネージャー１０５は、ローカル・データベースのレコードを更新し、必要であれば、後に長い活動を行うために「ジョブ」のスケジュールを行う。
【００２４】
[0029]  クラウド・マネージャー１０５は、ネットワーク内で新たなマシンを配置するために使用されるテンプレートであるイメージ（バーチャル・ディスク・イメージなど）を追跡する。イメージのリファレンスは、データベース１４０などのようなデータベースに、および／または別の場所に格納することができる。イメージは、それらイメージが配置されるネットワーク（１以上）に位置する１以上の共有データ・ストアに格納することもできる。１つの実施形態によると、各イメージは、配置できる仮想マシン（ＶＭ）のタイプを指定する仮想マシン役割タイプ、使用すべきプロセッサーの数、割り当てられるＲＡＭの量、近くのインストール・ポイントを見つけるために使用されるネットワークＩＤ（これにより、データセンター・リンク間で反復してコピーがなされない）、および配置コードがＶＨＤへアクセスするために使用できる共有パス（share path）とを含む。
【００２５】
[0030]  一般に、クラウド・システム１００により管理されているネットワーク内のマシンは、データをダウンロードしてそのデータをマシンに存在するソフトウェアへ組み込むことによる従来の様式でアップグレードされない。それに代えて、マシンは、ＶＨＤを、更新されたＶＨＤと置換することにより更新される。例えば、ファームが新たなバージョンのソフトウェアを必要とするとき、その新たなバージョンがインストールされた新たなファームが配置される。新たなファームが配置されると、テナントは、古いファームから新たなファームへ移動する。このようにして、アップグレードに起因するダウンタイムは最小化され、ファーム内の各マシンは、テスト済みの同じバージョンを有する。仮想マシンをアップグレードする必要があるとき、マシン上のＶＭを削除して、望まれるサービスを実行するように構成されたＶＭと置換することができる。
【００２６】
[0031]  存在しているソフトウェアに対するアップグレードは最適ではないが、ネットワーク内の幾つかのサーバーは、インプレース（in-place）・アップグレードの従来の更新手順を用いる。例えば、アクティブ・ディレクトリー・ドメイン・コントローラーは、マシン上のイメージを完全に置換せずに、サービスの現在のソフトウェアを更新することによりアップグレードされる。クラウド・マネージャーもまた、幾つかの場合にはインプレースでアップグレードされ得る。
【００２７】
[0032]  １つの実施形態によると、クラウド・マネージャーは、各ウェブ・サービス・コールに対するログ・エントリを記録するように構成されるロギング・システムを含む。ロギング・システムは、説明した機能の多数／少数のものを含むものとして実装できる。
【００２８】
[0033]  再生マネージャー２６は、ジョブを第２ネットワークへ再提出するように構成される。フェールオーバー・イベントが発生したとき、フェールオーバー・イベントの前および／または後の期間内のサービスの第１場所でのジョブが、再生マネージャー２６により決定され、サービスの第２場所で再提出される。例えば、フェールオーバー・イベントの１５分前にネットワーク１へ提出されたジョブと、第２ネットワークに対してのフェールオーバーが完了する前に第１ネットワークへ提出された任意のジョブとは、第２場所で再提出される。フェールオーバー・イベントが発生した後、再生マネージャー２６は、第２ネットワークが第１ネットワークの代わりとなっていることを、ジョブに伝える。
【００２９】
[0034]  また、再生マネージャー２６は、マッピング・テーブル１１４を維持するように構成される。マッピング・テーブル１１４は、識別子および／または秘密などのようなジョブ入力パラメーターのマッピングを含み、それらのパラメーターは第１ネットワークと第２ネットワークとで関連付けられている。例えば、サービスの第１場所（例えば、第１ネットワーク１および２）と関連するデータベース、ファーム、およびネットワークと、サービスの第２場所（例えば、第２ネットワーク１および２）と関連する対応するデータベース、ファーム、およびネットワークとの間でのマッピングがある。
【００３０】
[0035]  １つの実施形態によると、各ジョブは、第２ネットワークへのジョブ・リクエストに対してどのような変更が行われるかを決定し、それは、第１場所で生じるフェールオーバー・イベントに基づくものである。例えば、幾つかのジョブは、それらが再提出される必要がないことを決定し、別のジョブは、単に、第２場所へ同じジョブを再提出する。
【００３１】
[0036]  図２は、サービスの第２場所でジョブを再生するシステムを示す。示されているように、システム２００は、第１サービス２１０、第２サービス２２０、クラウド・マネージャー２３０、およびコンピューティング・デバイス（１以上）２４０を含む。
【００３２】
[0037]  使用されるコンピューティング・デバイスは、コンピューティング・デバイスの使用と関連する動作を行うように構成された任意のタイプのコンピューティング・デバイスとすることができる。例えば、幾つかのコンピューティング・デバイスとしてモバイル・コンピューティング・デバイス（例えば、セルラ電話、タブレット、スマートフォン、ラップトップなど）があり、幾つかはデスクトップ・コンピューティング・デバイスとすることができ、別のコンピューティング・デバイスはサーバーとして構成することができる。幾つかのコンピューティング・デバイスは、オンラインのクラウド・ベースのサービス（例えば、サービス２１０およびサービス２２０）を提供するように配することができ、幾つかは、データ・ストレージ・サービスを提供するデータ・シェアとして配することができ、幾つかは、ローカル・ネットワークに配することができ、幾つかは、インターネットなどを通じてアクセスできるネットワークに配することができる。
【００３３】
[0038]  コンピューティング・デバイスはインターネット１８を通じて結合される。一般に、インターネット１８は、サービス２１０、サービス２２０、クラウド・マネージャー２３０、およびコンピューティング・デバイス（１以上）２４０などのようなコンピューティング・デバイス間でデータを送るために用いられる。
【００３４】
[0039]  コンピューティング・デバイス（１以上）２４０は、アプリケーション２４２、ウェブ・ブラウザー２４４、およびユーザー・インターフェイス２４６を含む。示されているように、コンピューティング・デバイス２４０は、サービス２１０などのようなオンライン・サービスと対話するために、ユーザにより使用される。１つの実施形態によると、サービス２１０およびサービス２２０は、マルチテナント・サービスである。一般に、マルチテナントは、顧客間でのデータ（バックアップを含む場合もある）、使用、および管理（administration）の分離と関連している。言い換えると、たとえそれぞれのテナントからのデータが同じデータ・ストア内の同じデータベース内に格納されているとしても、１つの顧客（テナント１）からのデータに、別の顧客（テナント２）はアクセスできない。
【００３５】
[0040]  ユーザー・インターフェイス（ＵＩ）２４６は、コンピューティング・デバイス２４０から見てローカルのおよび／またはローカルではない様々なアプリケーションと対話するために用いられる。１以上のタイプの１以上のユーザー・インターフェイスを用いて、コンテンツと対話することができる。例えば、ＵＩ２４６は、コンテキスト・メニュー、メニュー・バー内のメニュー、リボン・ユーザー・インターフェイスから選択されたメニュー・アイテム、グラフィカル・メニューなどの使用を含むことができる。一般に、ＵＩ２４６は、ユーザーがアプリケーションの機能と容易に対話できるように構成される。例えば、ユーザーは、クラウド・マネージャー２３０へジョブを提出するために、単に、ＵＩ２４６内のオプションを選択する。
【００３６】
[0041]  示されているように、データ・ストア２１２および２１２’は、様々なテナントに対して、対応するバックアップ・データを含むテナント・データを含む。データ・ストアは、テナントのデータの全部／一部を格納することができる。例えば、幾つかのテナントは１より多くのデータ・ストアを用い、別のテナントは多くの他のテナントとデータ・ストアを共有する。テナントに関して対応するバックアップ・データが、同じデータ・ストア内に示されているが、バックアップ・データは、別の場所へ格納することもできる。例えば、１つのデータ・ストアを、テナント・データを格納するために使用し、１以上の他のデータ・ストアを、対応するバックアップ・データを格納するために使用することができる。一般に、データ・ストア２１２’内のデータはデータ・ストア２１２内のデータのミラーである。第１サービス２１０と関連するデータ（即ち、管理用の変更およびテナント・データと関連するデータ）に対して行われた変更は、第２サービス２２０へミラーされる。１つの実施形態によると、行われた変更を維持する際に、完全バックアップ（例えば、週毎）、増分型バックアップ（例えば、時間毎、日毎）、およびトランザクション・ログが用いられる。１つの実施形態によると、第１サービスに対してなされた変更は第２サービスへコピーされ、第２サービスは第１サービスと実質的に同期した状態にとどまる（例えば、５分内、１０分内）。周期的に、第２サービスへコピーされたデータは検証され、この検証は、そのデータが正しくコピーされたことを保証する助けとなる。検証を行うために様々な方法（例えば、チェックサム、ハッシュ関数など）を用いることができる。データ・ストア２３６は、サービス（例えば、サービス２１０、サービス２２０）の演算および／または構成と関連するデータを含む。例えば、データ・ストア２３６は、ジョブ・キュー、マッピング・テーブル、および／または構成データベースを含むことができる。
【００３７】
[0042]  サービス２１０は、オンライン・サービスのための第１場所として構成され、これは、複数のテナントからのデータとの対話を表示することと関連するサービスを提供するように構成される。サービス２１０は、複数のテナントに対しての共有インフラストラクチャを提供する。１つの実施形態によると、サービス２１０は、マイクロソフト（登録商標）のＳＨＡＲＥＰＯＩＮＴ  ＯＮＬＩＮＥサービスである。様々なテナントが、サービス２１０を用いて、それらのウェブ・アプリケーション／サイト・コレクションをホストすることができる。また、テナントは、専用の単独のものを用いるか、またはサービス２１０により提供されるサービスと組み合わせて用いる。サービス２２０は、サービスのための第２場所として構成され、これは実質的にはサービス２１０のミラーである。
【００３８】
[0043]  第１サービス２１０で生じるフェールオーバー・イベントの後、失敗した第１サービス・ネットワークで以前に作業していた各ジョブは、再生マネージャー２６により第２ネットワークへ向けられ、そのジョブが、第１ネットワーク内で作業していたタスクを完了できるようにする。１つの実施形態によると、第２場所で再生される各ジョブは、そのジョブが第２場所で行うオペレーションを決める。一般に、３つのカテゴリーのジョブがあり、それらは、第２ネットワークに対する無演算命令（no-op）であるジョブと、ベキ等であり、単に開始点から開始できるジョブと、クリーンアップを計算し、新たなクリーンアップされた入力パラメーターを用いてジョブ自体のインスタンス再作成（reinstantiate）を行うジョブとを含む。
【００３９】
[0044]  サービスにより実行できる多くの異なるタイプのジョブがある。１つの実施形態によると、ジョブのタイプは、無演算命令ジョブ、アップグレード・ジョブ、テナント・プロビジョニング、サイト・    プロビジョニング、ベキ等ジョブ、およびデータ移行ジョブを含む。無演算命令ジョブは、失敗したネットワークに対して非常に固有なアクションを行うジョブのタイプであり、一般に、それらのアクションは、第２ネットワークでは再生されない。アップグレード・ジョブは、長いプロセスであり得、アップグレードのロールバックをトリガすることができ、アップグレードが信頼性をもって行われるようにする。テナント・プロビジョニングは、テナントを準備するためのジョブである。サイト・プロビジョニング・ジョブは、システムの状態を検査し、基になるオブジェクトの状態を開始時へ戻すようにセットし、ジョブを、フェールオーバー・イベントの直前の点から再試行／再実行する。ベキ乗ジョブは、ジョブが何回実行されようとも状態が変更されないので、再実行されることができる。データ移行ジョブは、移行が完了したか否かを決定するために、再実行および／またはチェックする。
【００４０】
[0045]  再生マネージャー２６は、何れのジョブが第２ネットワークで再生されるかを決定するために、ジョブ・ログ２３２内のジョブを検査するように構成される。例えば、第１場所へ送られているが実行されていない何れのジョブも、第２場所で再生されるように選択される。フェールオーバー・イベントの所定の時間内（例えば、５分、１０分、１５分、３０分、１時間、・・・）に第１場所をターゲットとしたジョブも、再生されるものとして選択される。１つの実施形態によると、フェールオーバー・イベントの時間は協定世界時間（ＵＴＣ）を用いて決定され、各ネットワークは同じ時間を参照する。
【００４１】
[0046]  再生マネージャー２６は、第２場所において再生されたジョブにフェールオーバー・フラグを含むように構成され、これは、フェールオーバー・イベントに起因してジョブが再提出されていることを識別する。フェールオーバー・フラグを用い、ジョブは、フェールオーバー・イベントに応答して行うアクションを決定することができる。例えば、フェールオーバー・フラグの検査に応答して、ジョブは、第１ネットワーク・パラメーターに固有であった何れのパラメーターも、新たな第２ネットワークへ再マップすることができる。１つの実施形態によると、ジョブは、クラウド・マネージャーに対してコールを行い、新たなマッピング情報を決定する。例えば、再生マネージャー２６は、マッピング・テーブル２３４へアクセスし、第２ネットワークへのジョブの移動の影響を受けるパラメーター（例えば、データベース、ファーム、および任意のネットワークのＩＤ）を決定する。ジョブは、マッピングを得るために、失敗したネットワークの識別子および要求されたパラメーターのタイプを提供することができる（例えば、Ｇｅｔ−ＧｒｉｄＦａｉｌＯｖｅｒＭａｐｐｉｎｇ  −ＦａｉｌｉｎｇＮｅｔｗｏｒｋＩＤ  ＃  −ＳｏｕｒｃｅＩＤ”−Ｔｙｐｅ  ＜Ｎｅｔｗｏｒｋ｜Ｆａｒｍ｜Ｄａｔａｂａｓｅ＞）。幾つかのジョブは、実行されるときには毎回同じように動作するので、フェールオーバー・フラグを検査しない。
【００４２】
[0047]  また、再生マネージャー２６は、第２ネットワークにおいてファームへ適用される何れの秘密も更新することができ、秘密（例えば、パスワード）が関係するオペレーションが第２場所で行われるようにする。
【００４３】
[0048]  以下は、フェールオーバー・イベントが生じる前に第１ネットワークで実行されているジョブの例である。説明のため（限定を意図するものではない）、ジョブが、第１ネットワークへ提出されたときに以下のパラメーター（ＪｏｂＴｙｐｅ：ＤｅｐｌｏｙＳｉｔｅ；ＮｅｔｗｏｒｋＩＤ：１２；ＪｏｂＤａｔａ：ＩＤ＝２３４；Ｓｅｃｒｅｔｓ：１５；Ｓｔａｔｅ：Ｅｘｅｃｕｔｉｎｇ；Ｓｔｅｐ：２；Ｆａｉｌ−Ｏｖｅｒ：Ｎｕｌｌ（ジョブタイプ：配置サイト；ネットワークＩＤ：１２；ジョブデータ：ＩＤ＝２３４；秘密：１５；状態：実行中；ステップ：２；フェールオーバー：ヌル））を有すると仮定する。フェールオーバーが生じると、ジョブは、クラウド・マネージャーにより中断状態に置かれ、次に、以下の情報（ＪｏｂＴｙｐｅ：ＤｅｐｌｏｙＳｉｔｅ；ＮｅｔｗｏｒｋＩＤ：２２；ＪｏｂＤａｔａ：ＩＤ；Ｓｅｃｒｅｔｓ：２５；Ｓｔａｔｅ：Ｅｘｅｃｕｔｉｎｇ；Ｓｔｅｐ：２；Ｆａｉｌ−Ｏｖｅｒ：１２（ジョブタイプ：配置サイト；ネットワークＩＤ：２２；ジョブデータ：ＩＤ；秘密：２５；状態：実行中；ステップ：２；フェールオーバー：１２））とともに第２ネットワークへ再提出される。ここに見られるように、ネットワークＩＤパラメーターは１２から２２へと更新され、秘密パラメーターは１５から２５へと変更され、フェールオーバー・フラグはＮｕｌｌ（ヌル）から１２へと変更されている。
【００４４】
[0049]  一般に、ジョブが再提出されるとき、そのジョブは様々なアクションを行う。１つの実施形態によると、第２ネットワークで再生される各ジョブは、フェールオーバーが発生したかを見るために、チェックを行うことができる（例えば、Ｆａｉｌ−Ｏｖｅｒ！＝Ｎｕｌｌ）。フェールオーバーが発生していた場合、ジョブは、以下の、現在のジョブを終了させる（クリアする）アクション、ジョブ・コマンド・ラインを翻訳するアクション、次の実行するステップを決定するアクション、基になるオブジェクトの状態を変更するアクション、および新たなジョブを作るアクションのうちのゼロ以上のアクションを行う。
【００４５】
[0050]  一般に、現在のジョブを終了させる（クリアする）ことは、ジョブが、失敗したネットワークと対話することに非常に集中しており、そのジョブが、第２ネットワークにおいて無演算命令であるときに、そのジョブにより行われる。これらの場合、ジョブは、更なるアクションを行わず、そのジョブ自体をキューからクリアする。
【００４６】
[0051]  ジョブは、ジョブ・コマンド・ラインを翻訳することができる。１つの実施形態によると、各ジョブは一意のコマンド・ラインを有する。このコマンド・ラインは、データベース、ネットワーク、およびファームに対する特定のＩＤを含む。各ジョブは、様々なパラメーターの使用および命名を行うことができる（例えば、ＩＤ＝１２は、様々な異なるアイテムと関連し得る）。
【００４７】
[0052]  ジョブは、次の実行するステップを決定することができる。ジョブは、フェールオーバーの前にそのジョブが作業を行っていたステップを知っているが、フェールオーバー・イベントが生じる前にその作業が第２ネットワークへ複製された確信はない。従って、ジョブは、現在のジョブ・ステップまでに行われた作業の現在の状態を検査し、それに従って次のステップの値を設定する。ジョブ・ステップは、１以上のステップを戻して設定され得る。幾つかの場合には、ジョブは、このケースに対処するためにベキ乗に依存して、次のステップを１に戻すようにリセットし、作業を再実行する。
【００４８】
[0053]  ジョブは、基になるオブジェクトの状態を変更することができる。多くのジョブは実装された性能最適化を有し、それにより、オブジェクトが特定の状態にある場合にジョブが作業をスキップすることを可能とする。幾つかの場合（例えば、ＤｅｐｌｏｙＳｉｔｅ）、オブジェクトの状態は、「開始（starting）」状態へ戻るようにセットされ、それにより何れの最適化もスキップされる。従って、基になるオブジェクトは、全状態遷移サイクル（full state transition cycle）を通っていくことになる。
【００４９】
[0054]  ジョブは、新たなジョブを作ることができる。多くの場合、ジョブにとっては、単に、翻訳されたパラメーターを持ち第２ネットワークをターゲットとする新たなジョブを生成し、存在しているジョブを終了（クリア）するほうが容易である。
【００５０】
[0055]  再生マネージャー２６はまた、同期点を適切な時点へロール・バックする。同期点を適切な時点へとロール・バックすることは、災害の時のあたりの新たなテナント・プロビジョニングのための全てのジョブを再び生成する。これは、フェールオーバー中に作られた新たなテナントがスタック状態（stuck state）に入らないことを確実にすることの助けとなる。しかし、これは、新たなサイト（エンド・ユーザによりトリガされる）および他のＯＰのトリガしたジョブを配置するためのかなりの量の他の作業をカバーしない。１つの実施形態によると、同期は、ジョブが第２ネットワークで再生された後に、適切な時点へ戻してセットされる。
【００５１】
[0056]  図３は、例示的なジョブ・レコードを示す。示されているように、レコード３００は、ジョブ識別子３０２、タイプ３０４、データ３０６、オーナー３０８、ステップ３１０、最後の実行３１２、有効期限切れ時間３１４、次回３１６、状態３１８、ステータス３２０、秘密３２２、フェールオーバー３２４、フェールオーバー時間３２６、およびネットワークＩＤ３２８を含む。
【００５２】
[0057]  一般に、行うことを要求された各ジョブ／タスクに対して、クラウド・マネージャーはデータベース３５０にレコードを作る（例えば、図１のジョブ・キュー）。
[0058]  ジョブ識別子３０２は、要求されたタスクに対する一意の識別子を指定するために使用される。
【００５３】
[0059]  タイプ３０４は、行うタスクを指定する。例えば、タイプは、実行されるスクリプトの名前を含むことができる。例えば、タスクが、「ＤｅｐｌｏｙＶＮ．ｐｓ１」という名前のスクリプトを実行するものであるとき、データ３０６は識別子（例えば、「−ＶＭＩＤ  １２３」）を含むことができる。これにより、システムのコンパイルされた部分または他のバイナリ部分への変更を必要とせずに、システムへ新たなタスク・タイプが付加されることが可能となる。
【００５４】
[0060]  データ３０６は、タスクと関連するデータを格納するために用いられる。例えば、データは、タスクが行われるテナント、マシン、ネットワーク、ＶＭなどに対してセットされる。また、データ３０６は１以上の値を格納し、それに対してはデータベース内の値がセットされている。タスクを実行するプロセスは、ジョブ・レコードを見て、望まれるマシンの数がどの値にセットされているかを調べる。スクリプトは、データベース内の値を用いてオペレーションを行う。
【００５５】
[0061]  オーナー３０８は、プロセスを実行しているプロセス／マシンを指定する。例えば、クラウド・マネージャー・マシンがジョブの実行を開始すると、そのマシンは、レコードのオーナー３０８の部分を、そのマシンのＩＤを用いて更新する。
【００５６】
[0062]  ステップ３１０は、現在のスクリプトのステップの表示（indication）を提供する。例えば、スクリプトは、タスクを任意の数のステップに分割する。プロセスがスクリプトの１つのステップを完了すると、ステップ３１０は更新される。また、プロセスはステップ３１０を見て、スクリプトにおいて実行するステップを決定し、以前に完了したステップを再実行することを避ける。
【００５７】
[0063]  最後の実行３１２は、スクリプトが最後に開始された時間を提供する。スクリプトが開始される毎に、最後の実行の時間は更新される。
[0064]  有効期限切れ時間３１４は、プロセスを終了すべきときを示す時間である。１つの実施形態によると、有効期限切れ時間は、プロセスが開始されてからの予め定めた時間量（例えば、５分、１０分、・・・）である。有効期限切れ時間は、ウェブ・サービスＡＰＩを通じて、要求を行うプロセスにより更新することができる。
【００５８】
[0065]  次回３１６は、タスクが次に実行されるべきときを示す時間である。例えば、プロセスは、１つのステップの完了後に停止され、処理を再開するために指定された次回３１６まで待つことを命令される。
【００５９】
[0066]  状態３１８は、現在の状態を示す。
[0067]  ステータス３２０は、ジョブのステータスを示す（例えば、生成された、中断された、再開された、実行中、削除された）。
【００６０】
[0068]  秘密３２２は、マシン／ネットワーク上でオペレーションを行う際に用いられる情報を含む。例えば、秘密３２２は、パスワード情報、マシン情報などを含むことができる。
【００６１】
[0069]  フェールオーバー・フラグ３２４は、ネットワークでフェールオーバー・イベントが生じたときを示す。１つの実施形態によると、フェールオーバー・フラグがＮｕｌｌ（ヌル）のとき、失敗は起きていない。フェールオーバー・フラグがＮｅｔｗｏｒｋＩＤ（ネットワークＩＤ）にセットされているとき、そのフェールオーバー・フラグは、失敗したネットワークを識別する。この情報は、ジョブ・リクエストが第２ネットワークで再生されるときにそのジョブ・リクエストで用いられるマッピングを決定するために、用いることができる。
【００６２】
[0070]  フェールオーバー時間３２６は、失敗の時間である。１つの実施形態によると、失敗の時間はＵＴＣ時刻である。
[0071]  ネットワークＩＤ３２８は、ジョブが提出されたネットワークを識別する。
【００６３】
[0072]  データベース内の重複する行は、同じタスク・タイプおよびデータ値を有する場合には、それらが行われる前に除去することができる。例えば、データベースの複数の行に格納されている同じタスクを行うために、複数のリクエストが行われる場合がある。
【００６４】
[0073]  ジョブは、それと関連する１以上のロック３５５を有することができる。ロックが使用可能ではない場合、ジョブは、ロックが使用可能になるまで、実行するようにスケジュールされない。ロックは、多くの異なる方法で構成することができる。例えば、ロックは、ミューテックス、セマフォなどに基づくことができる。一般に、ミューテックスは、コードが１より多くのスレッドにより同時に実行されないようにし、セマフォは、共有リソースの同時使用の数を最大数までに制限する。１つの実施形態によると、ロックは、リソースを表す文字列である。リソースは、任意のタイプのリソースとすることができる。例えば、ロックは、ファーム、マシン、テナントなどである。一般に、ロックは、１以上のジョブの実行を遅延させるために用いられる。各ジョブは、実行の前に必要な１以上のロックを指定することができる。ジョブは、動作中の任意の時にロックを解放することができる。ロックがあるとき、ジョブはスケジュールされない。１より多くのロックを必要とするジョブは、必要とする全てのロックを一度に要求する。例えば、１つのロックを既に有するジョブは、更なるロックを要求しない場合がある。このようなスキームは、複数のジョブ間での循環ロック依存（circular lock dependencies）により生じる、考えられ得るデッドロック状況を避けることの助力となる。
【００６５】
[0074]  様々なジョブは、そのジョブの必要に応じて様々なフィールドを用いることができる。
[0075]  ここで図４を参照し、第２ネットワークでジョブを再生するプロセスを説明する。
【００６６】
[0076]  ここで提示するルーチンの説明を読むとき、様々な実施形態の論理演算は、（１）コンピューターで実施される行為のシーケンスまたはコンピューティング・システムで実行されるプログラム・モジュールとして、および／または（２）コンピューティング・システム内の相互接続されたマシン・ロジック回路または回路モジュールとして実施されることを、理解すべきである。実装は、本発明を実装するコンピューティング・システムの性能の要求に応じた選択の問題である。従って、例示され、ここで説明される実施形態を構成する論理演算は、オペレーション、構造デバイス、行為、モジュールなどのように様々に呼ばれる。これらのオペレーション、構造デバイス、行為、およびモジュールは、ソフトウェア、ファームウェア、特定用途向けデジタル・ロジック、およびこれらの任意の組み合わせにより実装できる。
【００６７】
[0077]  スタート・オペレーションの後、プロセス４００はオペレーション４１０へ進み、そこで、フェールオーバー・イベントが検出される。フェールオーバー・イベントは、計画された／計画されていないイベントに応答して検出することができる。例えば、フェールオーバー・イベントは、第１ネットワークでの破滅的な失敗や、第１ネットワークの使用を停止する決定が原因である場合がある。フェールオーバー・イベントは、手動／自動で開始され得る。例えば、許可されたユーザーが第１ネットワークから第２ネットワークへフェールオーバーをトリガするようにでき、また、１以上の状態（例えば、１以上のマシンの失敗）の検出に基づいてフェールオーバーが自動的にトリガされるようにできる。
【００６８】
[0078]  オペレーション４２０へ進むと、失敗したネットワークから、第２ネットワークで再生するジョブが得られる。１つの実施形態によると、第１ネットワークから得たジョブは、フェールオーバー・イベントの前の期間（例えば、１５分）に提出されたジョブ、および第２ネットワークに対するフェールオーバーが完了するまで第１ネットワークへ提出されたジョブを含む。
【００６９】
[0079]  オペレーション４３０へ進むと、得られたジョブは、第２ネットワークと、第１ネットワークでのフェールオーバーの発生とを反映するように、更新される。１つの実施形態によると、ジョブは、失敗したネットワークのＩＤ、フェールオーバー・イベントの時間、第２ネットワークのＩＤ、および新たなジョブにより使用される秘密を用いて、更新される。
【００７０】
[0080]  オペレーション４４０へ移行すると、ジョブが実行されているネットワークに固有のパラメーター（例えば、識別子）が更新される。例えば、ジョブは、第１ネットワークにおいて１２というＩＤを有し、第２ネットワークにおいて２６というＩＤを有する特定のデータベースをターゲットにしている場合がある。１つの実施形態によると、ジョブは、そのジョブのための望ましいマッピング情報を受け取るために、クラウド・マネージャーへクエリを提出する。
【００７１】
[0081]  オペレーション４５０へ進むと、ジョブが第２ネットワークで提出される。ジョブは、第２ネットワークで提出されると、様々なアクションを行うことができる。例えば、ジョブは、それ自体を終了させること、そのコマンド・ラインのパラメーターを翻訳すること、次の実行するステップを決定すること、オブジェクトの状態を変更すること、新たなジョブを作ることなどのアクションを行うことができる。１つの実施形態によると、ジョブは、スクリプトを実行することにより開始される。スクリプトを実行することは、スクリプトを開始するためにリモート・コールを呼び出す、および／またはリモート・マシンで他のタスクを行う。
【００７２】
[0082]  次に、プロセスはエンド・オペレーションへ進み、他のアクションの処理に戻る。
[0083]  ここで図５を参照し、様々な実施形態で使用されるコンピューター５００の例示的なコンピューター・アーキテクチャーを説明する。図５に示すコンピューター・アーキテクチャーは、サーバーやデスクトップやモバイル・コンピューターとして構成することができ、中央処理装置（ＣＰＵ）５と、ランダム・アクセス・メモリ（ＲＡＭ）９およびリード・オンリ・メモリ（ＲＯＭ）１１を含むシステム・メモリ７と、メモリと中央処理装置（ＣＰＵ）５とを結合するシステム・バス１２とを含む。
【００７３】
[0084]  スタートアップのときなどにコンピューター内のエレメント間での情報の転送を手助けする基本ルーチンを含むベーシック入出力システムは、ＲＯＭ１１に格納される。コンピューター５００は、更に、オペレーティング・システム１６を格納する大容量記憶装置１４と、アプリケーション・プログラム１０と、データ・ストア２４と、ファイルと、クラウド・システム１００との対話の実行と関連するクラウド・プログラム２５とを含む。
【００７４】
[0085]  大容量記憶装置１４は、バス１２へ接続された大容量記憶装置コントローラー（示さず）を介してＣＰＵ５と接続される。大容量記憶装置１４およびそれと関連するコンピューター読取可能媒体は、コンピューター５００のための不揮発性ストレージを提供する。ここに含まれるコンピューター読取可能媒体の説明は、ハード・ディスクやＣＤ−ＲＯＭなどのような大容量記憶装置に言及するが、コンピューター読取可能媒体は、コンピューター１００がアクセスできる任意の使用可能な媒体とすることができる。
【００７５】
[0086]  限定ではなく、コンピューター読取可能媒体は、例えば、コンピューター・ストレージ媒体および通信媒体を含むことができる。コンピューター・ストレージ媒体は、コンピューター読取可能命令やデータ構造やプログラム・モジュールや他のデータなどのような情報を格納するための、任意の方法や技術で実現される揮発性および不揮発性の、取り外し可能および取り外し不可能な媒体を含む。コンピューター・ストレージ媒体は、ＲＡＭ、ＲＯＭ、消去可能プログラマブル・リード・オンリ・メモリ（ＥＰＲＯＭ）、電気的消去可能プログラマブル・リード・オンリ・メモリ（ＥＥＰＲＯＭ）、フラッシュ・メモリまたは他のソリッド・ステート・メモリ技術、ＣＤ−ＲＯＭ、デジタル・バーサタイル・ディスク（ＤＶＤ）、または他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、または他の磁気記憶装置、または望まれる情報を記憶するために使用でき且つコンピュータ５００によりアクセスできる他の任意の媒体を含むが、これらには限定されない。
【００７６】
[0087]  様々な実施形態によると、コンピューター５００は、ネットワーク化された環境において、インターネット１８などのようなネットワークを通じてのリモート・コンピューターへの論理接続を用いて動作することができる。コンピューター５００は、バス１２と接続されたネットワーク・インターフェイス・ユニット２０を通じて、インターネット１８へ接続することができる。ネットワーク接続は、無線および／または有線とすることができる。また、ネットワーク・インターフェイス・ユニット２０は、他のタイプのネットワークやリモート・コンピューター・システムへ接続するために使用されることもできる。また、コンピューター５００は、キーボードやマウスや電子スタイラス（図５に示さず）を含む多数の他のデバイスからの入力を受信および処理するための入力／出力コントローラー２２を含む。同様に、入力／出力コントローラー２２は、ディスプレイ・スクリーン２８やプリンターや他のタイプの出力デバイスへ、出力を提供することができる。
【００７７】
[0088]  上記で簡単に述べたように、多数のプログラム・モジュールやデータ・ファイルを、コンピューター５００の大容量記憶装置１４およびＲＡＭ９に格納することができ、格納されるものには、ネットワーク化されたコンピューターの動作の制御に適切なオペレーティング・システム１６、例えば、ワシントン州レドモンドのマイクロソフト（登録商標）・コーポレーションのＷＩＮＤＯＷＳ（登録商標）オペレーティング・システムが含まれる。また、大容量記憶装置１４およびＲＡＭ９は、１以上のプログラム・モジュールを格納する。特に、大容量記憶装置１４およびＲＡＭ９は、クラウド・システムと関連するジョブを行うクラウド・プログラム２５などのような、１以上のアプリケーション・プログラムを格納する。
【００７８】
[0089]  上記の仕様、例、およびデータは、本発明の構成物の製造および使用のための完全な説明を提供する。本発明の精神および範囲から離れずに本発明の多くの実施形態を作成することができ、本発明は添付の特許請求の範囲の中にある。
【図１】
0005984918.tif 000002
【図２】
0005984918.tif 000003
【図３】
0005984918.tif 000004
【図４】
0005984918.tif 000005
【図５】
0005984918.tif 000006