(57)【要約】  サービスの主要位置のための復元サービスとして、代理位置を構成する。この代理位置は、フェイルオーバーの場合に主要位置と置き換わるように構成されたウォーム状態に維持されている。通常動作の間、代理位置は、実際にユーザー負荷にサービスを提供している主要位置の現状態を反映するために自動的に更新される。主要位置に対するコンテンツ変更は、代理位置に自動的に反映される。主要位置に適用されるシステム変更は、自動的に代理位置に適用される。例えば、マシンの削除／追加、マシン／役割割り当ての更新、データーベースの削除／追加は、代理位置が実質的に主要位置をミラーリングする(mirror)ように、代理位置に適用される。代理位置へのフェイルオーバーの後、代理位置が主要位置となり、実際にユーザー負荷にサービスを提供し始める。【選択図】図３
2014523563.tif 000002
【特許請求の範囲】
【請求項１】
サービスのために復元ネットワークを確立し維持する方法であって、
前記サービスの主要位置のために代理ネットワークとして作用するサービスの代理位置を展開するステップであって、前記代理位置が前記主要位置を実質的にミラーリングする、ステップと、
前記サービスの主要位置が前記実質的なミラーリングを維持するために、ユーザーからの要求を実際に受けている間に、前記サービスの主要位置に対して行われたコンテンツ変更およびシステム変更を、前記サービスの代理位置に自動的に適用するステップと、
前記サービスの主要位置の障害を検出するステップと、
前記障害に応答して、前記サービスの代理位置を前記主要位置として設定するステップと、
を備えている、方法。
【請求項２】
請求項１記載の方法において、コンテンツ変更およびシステム変更を自動的に適用するステップが、全体的バックアップと、前記全体的バックアップとトランザクション・ログとの間で作成される変更部分だけのバックアップとを作成するステップを含む、方法。
【請求項３】
請求項１記載の方法において、コンテンツ変更およびシステム変更を自動的に適用するステップが、
データーベースがアップグレードされたことに応答して前記主要位置においてトランザクション・ログを作成し、前記代理位置において対応するデーターベースを更新するために、前記トランザクション・ログを前記代理位置に複製するステップ、
前記主要位置において以下の動作、マシンの追加、マシンの削除、マシンの更新、役割の更新、割り当ての更新、データーベースの削除、データーベースの追加、データーベースの移動、１つのデーターベースから他のデーターベースへのコンテンツの移動、およびアップグレードの実行の内少なくとも１つが行われたときを判定し、前記主要位置において前記動作が行われたことに応答して、前記動作を自動的に前記代理位置に適用するステップ、ならびに
前記主要位置および代理位置において新たなファームを更新し、その後前記主要位置における新たなファームに要求を転送するステップ、
の内少なくとも１つを含む、方法。
【請求項４】
請求項３記載の方法において、前記アップグレードに応答して生成された前記トランザクション・ログの少なくとも一部を、前記データーベースが前記主要位置においてアップグレードされている間に、前記代理位置において再生する、方法。
【請求項５】
請求項１記載の方法であって、更に、前記主要位置および代理位置に適用された前記コンテンツ変更およびシステム変更を検証し、前記代理位置において格納されているデーターを用いて、前記代理位置のサイト・マップを自動的に更新するステップを備えている、方法。
【請求項６】
請求項１記載の方法であって、更に、前記主要位置において要求されたジョブに応答して、前記代理ネットワークにおいて対応するジョブを自動的に実行するステップを備えている、方法。
【請求項７】
サービスのために復元ネットワークを確立し維持するためのコンピューター実行可能命令を有するコンピューター読み取り可能記憶媒体であって、
主要位置の展開に応答して、サービスの代理位置を展開するステップであって、前記代理位置が、前記サービスの主要位置のために復元ネットワークとして作用し、前記主要位置を実質的にミラーリングする、ステップと、
前記サービスの主要位置が前記実質的なミラーリングを維持するために、ユーザーからの要求を実際に受けている間に、前記サービスの主要位置に対して行われたコンテンツ変更およびシステム変更を自動的に前記サービスの代理位置に適用するステップであって、コンテンツ変化およびシステム変化を自動的に適用するステップが、前記主要位置において行われた全体的バックアップ、変更部分のみのバックアップ、およびトランザクション・ログを自動的に前記代理位置に複製するステップを含む、ステップと、
前記サービスの主要位置の障害を検出するステップと、
前記障害に応答して、前記サービスの代理位置を前記主要位置として設定するステップと、
を備えている、コンピューター読み取り可能記憶媒体。
【請求項８】
サービスのために復元ネットワークを確立し維持するシステムであって、
プロセッサーおよびコンピューター読み取り可能媒体と、
前記コンピューター読み取り可能媒体上に格納され、前記プロセッサー上で実行する動作環境と、
主要位置の展開に応答して、前記サービスの主要位置のために復元ネットワークとして作用し、前記主要位置を実質的にミラーリングする代理位置を自動的に展開するアクション(action)と、
前記サービスの主要位置が前記実質的なミラーリングを維持するために、ユーザーからの要求を実際に受けている間に、前記サービスの主要位置に対して行われたコンテンツ変更およびシステム変更を自動的に前記サービスの代理位置に適用するアクションであって、コンテンツ変化およびシステム変化を自動的に適用するアクションが、前記主要位置において行われたバックアップおよびトランザクション・ログを自動的に前記代理位置に複製するアクションを含む、アクションと、
前記サービスの主要位置の障害を検出するアクションと、
前記障害に応答して、前記サービスの代理位置を前記主要位置として設定するアクションと、
を実行するように動作するクラウド・マネージャーと、
を備えている、システム。
【請求項９】
請求項８記載のシステムにおいて、コンテンツ変更およびシステム変更を自動的に適用するアクションが、 前記主要位置において以下の動作、マシンの追加、マシンの削除、マシンの更新、役割の更新、割り当ての更新、データーベースの削除、データーベースの追加、データーベースの移動、１つのデーターベースから他のデーターベースへのコンテンツの移動、およびアップグレードの実行の内少なくとも１つが行われたときを判定し、前記主要位置において行われたことに応答して、前記動作を自動的に前記代理位置に適用するアクションを含む、システム。
【請求項１０】
請求項８記載のシステムにおいて、前記サービスの主要位置に対して行われたコンテンツ変更およびシステム変更を自動的に前記代理位置に適用するアクションが、
データーベースがアップグレードされたことに応答して前記主要位置においてトランザクション・ログを作成し、前記代理位置において対応するデーターベースを更新するために、前記トランザクション・ログを前記代理位置に複製するアクションであって、前記データーベースが前記主要位置においてアップグレードされている間に、前記アップグレードに応答して生成された前記トランザクション・ログの少なくとも一部を前記代理位置において再生する、アクション、および
前記主要位置および代理位置において新たなファームを更新し、その後前記主要位置における新たなファームに要求を転送するアクション、
の内少なくとも１つを含む、システム。
【発明の詳細な説明】
【背景技術】
【０００１】
[0001]  ウェブ・ベース・サービスは、ウェブ・サーバー上に配置されているファイルを、データーベースに格納されているデーターと共に含む。例えば、このサービスに宛てられたトラフィックを扱う多数のサーバーがある。場合によっては、サーバーが破滅的に故障して、作業が失われることもある。処理(operation)新たなサービスに移行させるのは、費用や時間がかかるプロセスになる可能性がある。
【発明の概要】
【０００２】
[0002]  この摘要は、詳細な説明の章において以下で更に説明する概念から選択したものを簡略化された形式で紹介するために、設けられている。この摘要は、特許請求する主題の主要な特徴や必須の特徴を特定することを意図するのではなく、特許請求する主題の範囲を判断する際に補助として用いられることを意図するのでもない。
【０００３】
[0003]  サービスの主要位置(primary location)のための復元サービスとして、代理位置(secondary location)を構成する(configure)。この代理位置は、フェイルオーバーの場合に主要位置と置き換わるように構成されたウォーム状態(warm state)に維持されている。通常動作の間、実際にユーザー負荷にサービスしている主要位置の現状態を反映するために、代理位置は自動的に更新される。主要位置に対するコンテンツ変更は、代理位置に自動的に反映される。主要位置に適用されるシステム変更は、自動的に代理位置に適用される。例えば、マシンの削除／追加、マシン／役割割り当ての更新、データーベースの削除／追加は、代理位置が実質的に主要位置をミラーリングする(mirror)ように、代理位置に適用される。代理位置へのフェイルオーバーの後、代理位置が主要位置となり、実際にユーザー負荷にサービスし始める。
【図面の簡単な説明】
【０００４】
【図１】図１は、ネットワーク・サービスのために代理位置において復元ネットワークを含むクラウド管理システムを示す。
【図２】図２は、サービスの主要位置のために代理位置において復元ネットワークを含むシステムを示す。
【図３】図３は、代理位置においてサービスの主要位置をミラーリングするプロセスを示す。
【図４】図４は、コンテンツ・ファーム(content farm)のような新たなファームを展開およびアップグレードする(upgrade)プロセスを示す。
【図５】図５は、コンピューター・アーキテクチャー例を示す。
【発明を実施するための形態】
【０００５】
[0009]  これより図面を参照して、種々の実施形態について説明する。図面において、同様の番号は、同様の要素を表す。
[0010]  一般に、プログラム・モジュールは、ルーチン、プログラム、コンポーネント、データー構造、および他のタイプの構造を含み、これらは特定のジョブを実行するか、または特定の抽象データー型を実装する。他のコンピューター・システム構成を使用することもでき、ハンドヘルド・デバイス、マルチプロセッサー・システム、マイクロプロセッサー・ベースの電子機器またはプログラマブル消費者用電子機器、ミニコンピューター、メインフレーム・コンピューター等を含む。また、分散型計算環境も使用することができ、この場合、通信ネットワークを通じてリンクされている、リモート処理デバイスによってジョブが実行される。分散型計算環境では、プログラム・モジュールは、ローカルおよびリモート双方のメモリー記憶デバイスに配置することができる。
【０００６】
[0011]  図１は、サービスのために代理位置において復元ネットワークを含むクラウド管理システムを示す。システム１００は、クラウド・マネージャー１０５を示す。クラウド・マネージャー１０５は、潜在的に世界中に分散している異なるネットワークに接続され、これらを管理する。これらのネットワークの各々は、コンテンツ・サービスを１つ以上のテナント（例えば、クライアント、カストマー）に提供するように構成されている。これらのネットワークは、クラウド・サービス内部で、および／または宅内(on-premises)データー・センターにおいてホストすることができる。図示のように、各主要ネットワーク（ネットワーク１、ネットワーク２）は、代理位置において復元ネットワーク（代理ネットワーク１、代理ネットワーク２）を含む。クラウド・マネージャー１０５は、これらのネットワークを展開、構成、および管理するときに用いられる。クラウド・マネージャーは、間欠的なネットワーク障害に耐えることができる冪等(idempotent)および非同期アプリケーション・ウェブ・サービスのアプリケーション・プログラミング・インターフェース（ＡＰＩ）１５０を通じて、要求を受けるように構成されている。
【０００７】
[0012]  代理ネットワーク（例えば、代理ネットワーク１および代理ネットワーク２）は、サービスの主要位置（例えば、ネットワーク１およびネットワーク２）のための復元ネットワークとして機能するために設置されている。一実施形態によれば、代理位置は、ウォーム状態に維持され、フェイルオーバーの場合に主要位置と置き換わるように構成されている。通常動作の間、代理位置は、実際にユーザー負荷にサービスしている主要位置の現状態を反映するように、展開マネージャー２６を用いて自動的に更新される。主要位置に対するコンテンツ変更は、代理位置に自動的に反映される。主要位置に適用される管理面における変更およびトポロジーの変更は、自動的に代理位置に適用される。例えば、マシンの削除／追加、マシン／役割割り当ての更新、データーベースの削除／追加は、代理位置が実質的に主要位置をミラーリングするように、代理位置に自動的に適用される。代理位置へのフェイルオーバーの後、代理位置が主要位置となり、ユーザー負荷に実際にサービスし始める。
【０００８】
[0013]  図示のように、クラウド・マネージャー１０５は、作業マネージャー１１０、マシン・マネージャー１１５、特定用途マネージャー１２０、スクリプト１３０、展開マネージャー２６、およびデーター・ストア（１つまたは複数）１４０（例えば、データーベース）のような中央レポジトリーを備えている。図示するマネージャーの内の１つに含まれない機能は、クラウド・マネージャーの他のいずれかの位置に存在していればよい。一実施形態によれば、アプリケーション・マネージャー１２０は、SharePoint特定ロジックを備えているSharePointテナント・マネージャーである。
【０００９】
[0014]  一般に、クラウド・マネージャー１０５は、オンライン・コンテンツ管理サービスのように、オンライン・サービスのためにネットワークを展開および維持するときに補助する。クラウド・マネージャー・システムは、中央調整サービスであり、オンライン・サービスを提供するときに用いられるネットワークにおいてジョブを構成、更新、および実行することに関係する動作を行う要求を受ける。例えば、クラウド・マネージャーは、ネットワークの１つ以上の内部にあるアセット(asset)（例えば、サーバー、ファーム、ユーザー・プロパティ等）を管理するためにコールされることもある。アセットの管理は、マシンを展開すること、マシンを更新すること、マシンを削除すること、サーバー上で構成変更を実行すること、仮想マシン（ＶＭ）、復元ネットワークを確立および維持すること、更に管理に関係する他のジョブを実行することを含む場合がある。クラウド・マネージャーは、クラウド・マネージャーに対するアップグレード(upgrade)の最中であっても、配属されたネットワーク(attached network)にサービスを提供するように構成されている。クラウド・マネージャーは、信頼性があるネットワークを拠り所にすることができない冪等および非同期アプリケーション・プログラミング・インターフェース（ＡＰＩ）を通じて要求を受けるように構成されている。
【００１０】
[0015]  図示のように、ネットワーク１およびネットワーク２は、実際にユーザーにサービスを提供している稼働中の(live)主要ネットワークである。代理ネットワーク１および代理ネットワーク２は、対応する稼働中のネットワークのコンテンツおよび構成を実質的にミラーリングする代理ネットワークである。代理ネットワークは、主要ネットワークが動作している間は、実際にユーザーにサービスを提供しない。一実施形態によれば、代理ネットワークは、故障／災害／フェイルオーバーの場合に、主要ネットワークからのユーザー負荷を素早く代理ネットワークに切り替えることができるように、「ウォーム」状態に維持されている。
【００１１】
[0016]  主要ネットワークは、定常的にそして頻繁に行われるＳＱＬトランザクション・ログ・バックアップを含む、バックアップ（全体、変更部分のみ）を実行するように構成されている。一実施形態によれば、全体的バックアップは毎週行われ、変更部分のみの(incremental)バックアップは毎日行われ、トランザクション・ログは５分毎に更新される（他の時間を使用してもよい）。主要ネットワーク（例えば、ネットワーク１および２）からのバックアップは、これらが作成された後に（例えば、分散型ファイル・システム複製（ＤＦＳＲ：Distributed File System Replication））、代理ネットワーク（例えば、代理ネットワーク１および２）に複製される。一実施形態によれば、代理ネットワークは、トランザクション・ログを対応する主要ネットワークから受信するにつれてこれらを再生し、代理ネットワークの主要ネットワークに対する同期を時間的に近接して維持するのを補助する。稼働中の主要ネットワークにおいて行われる管理運営上の動作は、主要ネットワークおよび代理ネットワークが適時に同期され続けるように、対応するウォーム状態の代理ネットワーク上で自動的に再生される。
【００１２】
[0017]  作業マネージャー１１０は、ジョブの実行を管理し、より長く実行するジョブのスケジューリングおよび再試行を可能にする。作業マネージャー１１０は、ジョブ・キュー１１２に格納されているジョブを開始し、実行中のジョブを追跡する。所定の時間が経過したときに、作業マネージャー１１０は自動的にタスクを取り消し、そのタスクに関係する何らかの他の処理を実行することができる。一実施形態によれば、作業マネージャー１１０が１つ以上のスクリプト１３０を呼び出すことによって、ジョブ・キュー１１２におけるジョブを実行する。例えば、Microsoft社のPowerShell（登録商標）というようなスクリプティング言語を用いて、作業マネージャー１１０によって実行するジョブをプログラミングすることができる。各スクリプトは、新たなプロセスとして実行させることができる。各スクリプトを新たなプロセスとして実行すると、かなり高いCPUオーバーヘッドが生ずることがあるが、このシステムはスケーラブルであり、スクリプトの実行毎にクリーンな環境を確保することに加え、スクリプトが完了したときに完全なクリーンアップ(cleanup)を確保することに役立つ。
【００１３】
[0018]  ジョブを代理位置において提出しようとするとき（例えば、代理位置へのフェイルオーバーに応答して、主要ネットワークに対する構成変更があり、これを代理ネットワークにおいても反映させるとき）、提出すべきジョブを決定する際に、作業マネージャー１１０を用いることができる。例えば、作業マネージャー１１０は、サービスの主要位置において実行するために提出されるジョブを決定し、対応するジョブを代理位置に提出することができる。
【００１４】
[0019]  マシン・マネージャー１１５は、ネットワーク（例えば、ネットワーク１、ネットワーク２、代理ネットワーク１、代理ネットワーク２）における物理マシンを管理するように構成されている。一般に、マシン・マネージャー１１５は、ネットワーク、物理マシン、仮想マシン（ＶＭ）、ＶＭイメージ（ＶＨＤ）等を把握する。マシン・マネージャーは、ネットワーク内で実行している特定のサービスに対する強い結束(binding)を有さないが、「役割」に関してネットワークにおける種々のコンポーネントを追跡する。例えば、マシン・マネージャー１１５は、ＡＰＩ１５０を通じて、ネットワーク２上においてバージョン１２．３４．５６．７８を有するタイプ「Ｆｏｏ」のＶＭを展開する要求を受けることができる。クラウド・マネージャー１０５への要求に応答して、マシン・マネージャー１１５は、ネットワーク２上に配置されている適した物理マシンを突き止め、このＶＭの役割に関連するＶＭイメージにしたがってＶＭを構成する。この物理マシンには、バージョン１２．３４．５６．７８のＦｏｏタイプのＶＨＤが構成される(configure)。このＶＨＤは、データー・ストア１４０のようなデーター・ストア内に格納されている。また、代理ネットワークが実質的に主要ネットワーク２にミラーリングされたままでいるように、対応する変更は代理ネットワーク２にも行われる。ネットワーク内部で用いられるイメージは、ネットワークの１つ以上のためのローカル・データー・シェアのような、他の位置に格納することもできる。スクリプトは、物理マシンにおけるＶＨＤのインストールを実行するために、そして展開後のあらゆる構成を行うためにも実行することができる。マシン・マネージャー１１５は、各ネットワークのマシンの構成を追跡する。例えば、マシン・マネージャー１１５は、ＶＭの役割（ＶＭのタイプ）、ＶＭの状態（プロビジョニング、実行、停止、障害）、バージョン、およびＶＭが所与のファーム（これらのネットワークを内包する）に存在するか否かを追跡する。
【００１５】
[0020]  構成データーベース１１６は、ネットワークの各々のマップを収容する。例えば、構成データーベース１１６は、ネットワークのファーム、データーベース、サイト・コレクション(site collection)等の各々に関係する情報を含むことができる。構成データーベース１１６は、ネットワーク毎に、物理マシン、ＶＭ、ファーム等毎に１つの行を含むことができる。一実施形態によれば、１つのネットワーク内部にある各ＶＨＤ、ファーム、およびＶＭは、バージョン文字列が関連付けられている。一実施形態によれば、ネットワークの各々には構成ファイルが維持されており、このファイルは、そのネットワークに対するハードウェア特定設定値（例えば、ハードウェア名、ＩＰアドレス等）を含む。これらの設定ファイルは、手作業で／自動で修正することができる。例えば、許可を得たユーザーが主要ネットワークの構成をコピーし、このコピーを修正して、対応する代理ネットワークのために構成ファイルを作成することができる。
【００１６】
[0021]  スクリプト１３０は、クラウド・マネージャー１１５にローカルな作業を行い、更にネットワークの１つ以上においてリモートに作業を行うために実行されるスクリプトを格納するように構成されている。また、スクリプト１３０の内１つ以上を他の位置に格納することもできる。例えば、ネットワーク（例えば、ネットワーク１、ネットワーク２）において実行されるスクリプトを、そのネットワークにローカルに格納することができる。スクリプトは、多くの異なる目的のために用いることもできる。例えば、スクリプトは、ネットワークの１つ以上においてマシンの構成を行い、以前に構成されていたマシンの設定値を変更し、新たなＶＭを追加し、新たなデーターベースを追加し、１つのマシンから他のマシンにデーターを移動し、テナントを移動し、方式(schema)を変更する等のために用いることができる。主要ネットワークにおいて動作を実行するように構成されているスクリプトは、この主要ネットワークの代理ネットワークにおいて同じジョブを引き起こす(spawn)ように変更され、同じ変更／動作が主要ネットワークおよび代理ネットワークの双方に実行されるようになっている。例えば、マシンの削除／追加、マシン／役割割り当ての更新、データーベースの削除／追加というようなジョブは、このジョブが代理位置においても引き起こされるように、変更される。一実施形態によれば、これらのスクリプトは、Microsoft社のPowerShell（登録商標）のスクリプトである。他のプログラミングの実施態様を用いてもよい。例えば、機能を実現するために、コンパイル型プログラミング言語および／またはアーリーバウンド(early-bound)プログラミング言語を用いてもよい。しかしながら、スクリプティングは、実行すべきジョブの多くを表現するには非常に緻密な言語である。Ｃ＃のようなプログラミング言語で同等のことをプログラミングすると、遙かに多い冗長な実装(implementation)が必要になることが多い。また、これらのスクリプトはレートバウンド(late-bound)であり、これが意味するのは、異なるインターフェースＤＬＬに常にリンクする必要なく、基礎となるコード・ベースの多数のバージョンをターゲットにすることができるということである。PowerShellスクリプトを用いると、プロセスをローカルにクラウド・マネージャー１１５によって開始することが可能になり、次いでリモート・マシン（即ち、配属されたネットワークの１つにおける物理マシン）においてプロセスを開始することができる。リモート・マシンにおいてプロセスを開始するためには、Secure Shell（ＳＳＨ）等のような他の技法を用いてもよい。主要位置（例えば、ネットワーク１）においてスクリプトを実行するとき、このスクリプトを代理位置（例えば、代理ネットワーク２）においても実行すれば、主要および代理位置を同じように構成することができる。
【００１７】
[0022]  クラウド・マネージャー１０５が管理しているアプリケーション特定情報は、アプリケーション・マネージャー１２０によって実行される(performed)。一実施形態によれば、アプリケーション特定情報は、Microsoft社のSharePoint（登録商標）に関係する。したがって、アプリケーション・マネージャー１２０は、SharePointのテナント、サイト・コレクション等について判るように構成されている。
【００１８】
[0023]  各ネットワークは、テナントの専用ネットワークとして、および／または１つよりも多いクライアントにサービスする多重テナント・ネットワークとして構成することができる。ネットワークは、可変数の物理／仮想マシンを含むことができ、これらの構成も、展開後に変化する。一実施形態によれば、サービスの主要位置および代理位置を、同じように構成する。
【００１９】
[0024]  一般に、ネットワークは、ネットワーク接続の制限（例えば、負荷バランサおよびネットワーク交換機）を超過しない限り、成長し続けることができる。例えば、ネットワークが当初は１０台のサーバーで開始し、その後１００台以上のサーバーに拡大することもあり得る。主要ネットワークが変更する毎に、対応する代理ネットワークは自動的に、主要ネットワークに対して行われた変更を反映するために、変更される。ネットワーク内部にある物理マシンには、クラスまたはタイプを割り当てることができる。例えば、マシンの一部は計算マシン（ウェブ・フロント・エンドおよびアプリケーション・サーバーに用いられる）であり、他のマシンは、計算マシンよりも多いストレージをプロビジョニングされた記憶マシンであるのでもよい。一実施形態によれば、クラウド・マネージャー１０５は、ネットワーク内部にあるマシンに、多数のバージョンのイメージ・ファイルを設定する。一実施形態によれば、ファームは通常同じバージョンのイメージ・ファイルを有する。
【００２０】
[0025]  一実施形態によれば、マシンを仮想化し、ネットワーク内部で独立して動作する「ファーム」を管理することによって、ネットワーク内部におけるソフトウェア制限(software limits)をクラウド・マネージャー・システム１００によって管理する。各ネットワークは、１つ以上のファームを含むことができる（例えば、ネットワーク１参照）。一実施形態によれば、ネットワークは、１つ以上のＶＩＰ(仮想ＶＩＰ）を外部世界に露出し、そのトラフィックをネットワーク内部にあるマシンのいずれにでも導くことができる、ネットワーク負荷均衡マシンから成る１つのクラスターと見なされる。ネットワークにおけるこれらのマシンは、一般に、緊密に結合されており、最小限のレイテンシ（即ち、１ｍｓピング・レイテンシ）を有する。
【００２１】
[0026]  ファームは、緊密に結ばれた関係を必要とするアプリケーションを調整するために用いられるマシンの基本的な集合体である。例えば、コンテンツ・ファームは、Microsoft社のSharePoint（登録商標）のような、コンテンツ管理アプリケーションのために、ネットワークの各々の中に展開することができる。一般に、ファームの各々におけるマシンの集合は、一緒になって、ウェブ・サービスおよびアプリケーション・サーバー機能を設ける。通例、ファームの内側にあるマシンは、アプリケーション（例えば、SharePoint）の同じ構造部分(build)を実行しており、特定のテナントおよびサイト・コレクションに供出する(serve)ために共通の構成データーベースを共有している。
【００２２】
[0027]  ファームは、異質な仮想マシンの集合を収容することができる。クラウド・マネージャー１０５は、データー・ストア１４０内部に「ファーム・ゴール」(farm goal)を維持する。これは、ファーム毎に対する各役割のマシンの目標数である。役割の中には、コンテンツ・フロント・エンド、コンテンツ集中管理、コンテンツ・タイマ・サービス、統合集中管理、統合アプリケーション・サーバー等が含まれる。例えば、コンテンツ・ファームは、到来するカストマー要求を扱う基本的なSharePointファームである。統合サービス・ファームは、検索のような相互ファーム(cross farm)およびプロファイル・ストアを動作させることができるSharePointサービスを収容する。ファームは、大容量の公衆インターネット・サイトをホストするために用いることができる。一部のファームは、アクティブ・ディレクトリ・サーバーおよびプロビジョニング・デーモンのグループを収容することもできる。クラウド・マネージャー１０５は、定義された目標を満たすのを助けるために、ネットワークにおいて仮想マシンを自動的に展開および／または解除する。これらのファーム・ゴールは、自動的におよび／または手作業で構成することができる。例えば、ファーム・ゴールは、活動(activity)および容量の必要性の変化に応答するために、変化することができる。ネットワーク・ファームでは、ネットワーク毎に、全てのVM役割を収容する１つのネットワーク・ファームがあり、ネットワーク全体に対するリソースとして容易にスケール・アウト(scale out)することができる。
【００２３】
[0028]  クラウド・マネージャーのウェブ・サービスＡＰＩ１５０は、大規模にスケーラブルなグローバル・サービスのコンテキストで動作するように設計されている。これらのＡＰＩは、いずれかのネットワーク要求に障害が起こる、および／または途中で中断する虞れがあることを想定する。クラウド・マネージャー１０５へのコールは、冪等であるように構成される。言い換えると、成果を変更することなく、同じコールをクラウド・マネージャー１０５に多数回（パラメータが同一である限り）行うことができる。
【００２４】
[0029]  クラウド・マネージャー１０５は、サービスに対する現在の要求を追跡するためにレコードを維持する。例えば、クラウド・マネージャー１０５は、ローカル・データーベースにおけるレコードを更新し、必要であれば、もっと長大な活動(activity)を後に実行するために「ジョブ」をスケジューリングする。
【００２５】
[0030]  クラウド・マネージャー１０５は、ネットワーク内部において新たなマシンを展開するために用いられるテンプレートであるイメージ（仮想ディスク・イメージのような）を追跡する。イメージの参照を、データーベース１４０のようなデーターベース、および／または他のいずれかの位置に格納することができる。イメージは、当該イメージが展開されるネットワーク（１つまたは複数）にローカルな１つ以上の共有データー・ストアに格納することができる。一実施形態によれば、各イメージは、展開することができるＶＭのタイプ、使用するプロセッサーの数、割り当てられるＲＡＭの量、（相互データー−センター・リンクを跨いで繰り返しコピーされないように）近隣のインストール地点を発見するために用いられるネットワークＩＤ、および展開コードがＶＨＤにアクセスするために用いることができる共有パスを指定する仮想マシン（ＶＭ）役割タイプを含む。
【００２６】
[0031]  一般に、クラウド・システム１００によって管理されているネットワークにおけるマシンは、データーをダウンロードし、そのデーターをマシン上にある既存のソフトウェアに組み込むことによってという従前のやり方で更新されるのではない。代わりに、ＶＨＤを更新ＶＨＤと交換することによって、マシンを更新する。例えば、新たなバージョンのソフトウェアがファームに必要とされる場合、新たなバージョンがインストールされた新たなファームを展開する。この新たなファームが展開されると、古いファームから新しいファームにテナントが移動させられる。このように、アップグレードによる停止時間を最小限に抑え、ファームにおける各マシンは、検査が済んでいる同じバージョンを有することになる。仮想マシンをアップグレードする必要があるとき、そのマシン上にあるＶＭを削除し、所望のサービスを実行するように構成されているＶＭと交換すればよい。主要位置においてアップグレードが行われると、代理位置もアップグレードされる。代理位置をアップグレードするために異なる方法を用いてもよい。例えば、主要位置において実行した同じアップグレード・ステップを、代理位置で実行してもよい。主要位置におけるソフトウェア・アップグレードの場合、主要位置におけるアップグレードによって生成されるトランザクション・ログを、代理位置において、代理位置を更新するために再生する(replay)ことができる。
【００２７】
[0032]  既存のソフトウェアに対するアップグレードは最適ではないが、ネットワーク内部にあるサーバーの中には、適所アップグレード(in-place upgrade)という従前からの更新手順を利用するものもある。例えば、アクティブ・ディレクトリー・ドメイン・コントローラーをアップグレードするには、マシン上におけるイメージを完全に交換するのではなく、サーバー上の現行のソフトウェアを更新する。クラウド・マネージャーも、場合によっては、適所でアップグレードするのでもよい。
【００２８】
[0033]  一実施形態によれば、クラウド・マネージャーは、ウェブ・サービス・コール毎にログ・エントリーを記録するように構成されているロギング・システムを含む。必要なだけの機構(features)を含むロギング・システムを実装することができる。
【００２９】
[0034]  マッピング・テーブル１１４は、主要ネットワークと関連付けられているパラメーター（例えば、識別子および／またはシークレット(secret)）の代理ネットワークへのマッピングを備えている。例えば、ネットワーク・サービスの主要位置（例えば、主要ネットワーク１および２）と関連付けられているデーターベース、ファーム、およびネットワークと、ネットワーク・サービスの代理位置（例えば、代理ネットワーク１および２）と関連付けられている対応するデーターベース、ファーム、およびネットワークとの間のマッピングがある。
【００３０】
[0035]  展開マネージャー２６は、サービスの主要位置のために復元ネットワークとして作用するネットワークの代理位置を維持するときに補助するように構成されている。展開マネージャー２６は、クラウド・マネージャー内にあり、クラウド・システム内においてネットワークを展開および維持することに関係がある他のマネージャー（例えば、作業マネージャー１１０、マシン・マネージャー１１５、アプリケーション・マネージャー１２０）と共に作業するように構成されている。
【００３１】
[0036]  図２は、サービスの主要位置のために代理位置に復元ネットワークを含むシステムを示す。図示のように、システム２００は、主要サービス２１０、代理サービス２２０、クラウド・マネージャー２３０、および計算デバイス（１つまたは複数）２４０を含む。
[0037]  用いられる計算デバイスは、計算デバイスの使用に関係する動作を実行するように構成された計算デバイスであれば、いずれのタイプでもよい。例えば、計算デバイスの一部は、移動体計算デバイス（例えば、セルラ・フォン、タブレット、スマート・フォン、ラップトップ等）としてもよく、一部はデスクトップ計算デバイスとしてもよく、そして他の計算デバイスをサーバーとして構成してもよい。一部の計算デバイスは、オンライン・クラウド・ベース・サービス（例えば、サービス２１０およびサービス２２０）を提供するように構成することができ、一部はデーター記憶サービスを提供するデーター・シェアとして構成することができ、一部はローカル・ネットワーク内に配置することができ、一部は、インターネットを通じてアクセス可能なネットワーク内に配置することができる等である。
【００３２】
[0038]  計算デバイスは、インターネット２１８を通じて結合されている。一般に、インターネット２１８は、サービス２１０、サービス２２０、クラウド・マネージャー２３０、および計算デバイス（１つまたは複数）２４０間でデーターを送信するために用いられる。
【００３３】
[0039]  計算デバイス（１つまたは複数）２４０は、アプリケーション２４２、ウェブ・ブラウザー２４４、およびユーザー・インターフェース２４６を含む。図示のように、計算デバイス２４０は、サービス２１０のようなオンライン・サービスと対話処理するためにユーザーによって用いられる。一実施形態によれば、サービス２１０および２２０は、多重テナント・サービス(multi-tenancy service)である。一般に、多重テナントとは、カストマー間におけるデーターの分離（バックアップを含むこともある）、使用および管理運営を指す。言い換えると、１つのカストマー（テナント１）からのデーターは、テナントの各々からのデーターを同じデーター・ストア内部にある同じデーターベース内に格納することができても、他のカストマー（テナント２）によってアクセス可能ではない。
【００３４】
[0040]  ユーザー・インターフェース（ＵＩ）２４６は、計算デバイス２４０に対してローカル／非ローカルであることもできる種々のアプリケーションと相互作用するために用いられる。コンテンツと相互作用するために、１つ以上のタイプの１つ以上のユーザー・インターフェースを用いることもできる。例えば、ＵＩ２４６は、コンテキスト・メニューの使用、メニュー・バー内部にあるメニュー、リボン・ユーザー・インターフェースから選択されたメニュー項目、グラフィカル・メニュー等を含むことができる。一般に、ＵＩ２４６は、ユーザーがアプリケーションの機能と容易に対話処理できるように構成されている。例えば、ユーザーは、アクション(action)をサービスに要求するには、ＵＩ２４６内において単に選択肢を選択すればよい。
【００３５】
[0041]  図示のように、データー・ストア２１２および２１２’はテナント・データーと、アプリケーション・データーとを含む。テナント・データーは、異なるテナント毎に、対応するバックアップ・データーおよびログを含み、アプリケーション・データーは、サービスに関連がある異なるアプリケーション毎に、対応するバックアップ・データーおよびログを含む。データー・ストアは、テナント／アプリケーションのデーターの全部／一部を格納することができる。例えば、一部のテナント／アプリケーションは、１つよりも多いデーター・ストアを用いることがあるが、他のテナント／アプリケーションは、多くの他のテナント／アプリケーションとデーター・ストアを共有する。テナント／アプリケーションの対応するバックアップ・データーは同じデーター・ストア内に図示されているが、バックアップ・データーを他の位置に格納することもできる。例えば、テナント・データーを格納するために１つのデーター・ストアを用いることができ、対応するバックアップ・データーを格納するために１つ以上の他のデーター・ストアを用いることもできる。同様に、１つ以上のアプリケーションに対するバックアップおよびログを異なるデーター・ストアに格納することもできる。一般に、データー・ストア２１２’内のデーターは、データー・ストア２１２内のデーターをミラーリングする。
【００３６】
[0042]  主要サービス２１０と関連があるデーター（即ち、管理面の変更に関係するデーターおよびテナント・データー）に対して行われた変更は、代理サービス２２０にミラーリングされる。例えば、ファーム１およびファーム２がサービス２１０において展開されるとき、ファーム１’およびファーム２’が代理サービス２２０に展開される。一実施形態によれば、行われt変更を維持する際に、全体的なバックアップ（例えば、毎週）、変更部分のみのバックアップ（例えば、１時間毎、毎日）、およびトランザクション・ログを用いる。一実施形態によれば、代理サービスが実質的に主要サービスと同期されたままでいるように（例えば、５分、１０分以内）、主要サービスに対して行われる変更は、代理サービスに複製される。周期的に、代理サービスにコピーされたデーターを検証して、データーが正しく複製されたことを確認するのを補助する。この検証を行うためには、異なる方法を用いることができる（例えば、チェックサム、ハッシュ関数等）。データー・ストア２３６は、サービス（例えば、サービス２１０、サービス２２０）の動作および／または構成に関係するデーターを含む。例えば、データー・ストア２３６は、ジョブ・キュー、マッピング・テーブル、および／または構成データーベースを備えることができる。
【００３７】
[0043]  一実施形態によれば、主要サービス２１０からサービス２２０にコンテンツを自動的にコピーするために、ＤＦＳＲを用いる。ＤＳＦＲは、遠隔差分圧縮（ＲＤＣ：Remote Differential Compression）を用いる。一般に、ＲＤＣは、ファイルにおけるデーターの挿入、削除、および再配置を検出し、ＤＳＦＲが、ファイルを更新するときに、差分（変化）を複製することを可能にする。ＤＦＳＲサービスは、サーバー間で通信するためにＲＰＣを用いる。これは、複製されたフォルダー・パスによって定められるフォルダー範囲を複製する。複製に関与するコンピューターの集合は、接続のトポロジーを構成することによって定められ、複製グループと呼ばれる。複製グループには、多数の複製されたフォルダーを含むことができ、メンバーシップ(membership)が選択的に特定の複製フォルダーをイネーブルまたはディスエーブルする。ＤＦＳＲサービスは、Windows Management Instrumentation（ＷＭＩ）を用いて、サーバー規模のパラメーターを設定し(configure)、一方グローバル・パラメーターおよびある種の複製フォルダー特定パラメーターは、アクティブ・ディレクトリーを用いて設定される。また、ＤＦＳＲは、ＷＭＩを用いて、複製フォルダーおよび接続というような特定のオブジェクトに関する監視情報を露出する。一実施形態によれば、ＤＦＳＲは、大量のデーターを扱うようにサイズが決められたステージング・エリア(staging area)を有し、データーを一方向に主要サービス２１０から代理サービス２２０に移動させるように構成されている。主要位置および代理位置におけるファイル・シェアは、異なる名称を有することができる。
【００３８】
[0044]  一実施形態によれば、主要サービス２１０と代理サービス２２０との間でディレクトリー・サービスを同期させるためには、アクティブ・ディレクトリー（ＡＤ）複製が用いられる。ＤＦＳＲおよびＡＤの代わりに、他のファイル複製方法を用いてもよい。
【００３９】
[0045]  サービス２１０は、多数のテナントからのデーターとの相互作用を表示することに関係するサービスを提供するように構成されているオンライン・サービスのための主要位置として構成されている。サービス２１０は、複数のテナントに共有インフラストラクチャーを提供する。一実施形態によれば、サービス２１０は、Microsoft社のSHAREPOINT  ONLINEサービスである。異なるテナントが、そのウェブ・アプリケーション／サイト・コレクションを、サービス２１０を用いてホストすることができる。また、テナントは、それに専用であるサービスを用いることも、サービス２１０によって提供される他のテナント間で共有されるサービスを用いることもできる。サービス２２０は、実質的にサービス２１０のミラーであるサービスのための代理位置として構成されている。
【００４０】
[0046]  展開マネージャー２６は、動作を確立し、維持し、代理位置に移行させるときに補助するように構成されている。例えば、展開マネージャー２６は、主要サービス２１０と代理サービス２２０との間における同期の管理に用いることができる。展開サービス２６は、ログおよびバックアップが正しく転送され再生されることを確保するのに役立つ情報を格納する。例えば、この情報は、ログ／バックアップが行われた時刻（例えば、ＵＴＣ時刻）を含み、その時間にしたがってログおよびバックアップをソートし配列できるようにするとよい。また、この情報は、バックアップ／ログが作られたデーターベースの名称、および再試行の回数というような、他の情報も含むことができる。再試行の回数は、バックアップ／ログを再生／再現するために読み出したときに変化させる値である。例えば、再生するためにログにアクセスすると、展開マネージャー２６は、再試行回数の値を増やす。再試行回数が所定の値（例えば、２、３、４回の試み）を超えると、展開マネージャー２６は警告を発し、ログ／バックアップに伴う問題に取り組もうとすることができる。また、ログが適時に再生されることを確保するのに役立てるために、時間制限を用いることもできる。例えば、あるログがある時間量（例えば、５、１０、１５分）よりも古いとき、展開マネージャー２６は警告を発し、このログ／バックアップに伴う問題に取り組もうとすることができる。この情報は、異なる位置に格納することもできる。例えば、この情報は、バックアップ・フォルダー、および／または再生マネージャー２６によってアクセス可能な他のいずれかの位置に格納することもできる。一実施形態によれば、ログのファイル名は、ログおよびバックアップが正しく転送および再生されることを確保するのに役立つ情報の一部／全部を含むことができる。たとえば、ファイル名は、次の形態を取ることができる。
【００４１】
「データーベース＿年＿月＿日＿時＿分＿秒＿ｔｌｏｇ＿再試行回数」
[0047]  主要ネットワークに対して変更が行われると、この変更を代理位置にも適用することができる。主要ネットワークに行われる変更の中には、代理位置で実行しなくてもよいものもある。例えば、新たなフロント・エンドのファームへの追加は、代理位置において再生されなくてもよい。変更の大部分（即ち、マシンの削除／追加、マシン／役割割り当ての更新、データーベースの削除／追加、アップグレード）は、代理位置を主要位置に対する「ミラー」として維持するのを補助するために、自動的に代理位置に適用される。
【００４２】
[0048]  これより図３および図４を参照して、サービスの代理位置を維持し障害時に引き継ぐプロセスについて説明する。
[0049]  本明細書において紹介したルーチンの論述を読むと、種々の実施形態の論理動作は、（１）計算システム上で実行するコンピューター実施動作(act)またはプログラム・モジュールのシーケンスとして、および／または（２）計算システム内部において相互接続されたマシン論理回路または回路モジュールとして、実現されることが認められるはずである。実施態様は、本発明を実現する計算システムの性能要件に依存する選択事項である。したがって、例示する論理動作が、本明細書において説明した実施形態を構成するとき、処理(operation)、構造的デバイス、動作(act)、またはモジュールと、様々な呼び名がある。これらの処理、構造的デバイス、動作、およびモジュールは、ソフトウェア、ファームウェア、特殊目的ディジタル・ロジック、およびそのあらゆる組み合わせで実現することができる。
【００４３】
[0050]  図３は、代理位置においてサービスの主要位置をミラーリングするプロセスを示す。
[0051]  開始動作の後、プロセス３００は動作３１０に進み、代理ネットワークを展開する。代理ネットワークは、主要ネットワークが展開されたことに応答して自動的に展開することができ、または他のいずれかの時点において展開することもできる。例えば、フェイルオーバーに応答して主要ネットワークになった代理ネットワークに置き換わるために、他の代理ネットワークを展開することもできる。代理ネットワークの展開の一部／全部を自動化することもできる。一実施形態によれば、代理ネットワークの物理パラメーターを反映するために、主要ネットワークの構成ファイルのコピーを手作業で更新する。このプロセスを自動化するときに補助するために、マッピング方式を用いることもできる。先に論じたように、ネットワークを展開するために用いられるスクリプトは、主要位置のための展開における各動作を代理位置において実行するように構成されている。代理ネットワークは、主要ネットワークを実質的にミラーリングするように構成されている（例えば、同じまたはほぼ同じ数のマシン、同じ構成、同じデーターベース等）。
【００４４】
[0052]  動作３２０に移り、動作の間に主要ネットワークに対して行われた変更を代理位置において実行する。例えば、主要位置に対するマシンの削除／追加、マシン／役割割り当ての更新、データーベースの削除／追加は、自動的に代理位置に適用され、代理位置が実質的に主要位置をミラーリングするようにしている（図４および関係する論述は、ファームにおけるアップグレードおよび変更を説明する）。コンテンツの変更も代理位置に反映される。
【００４５】
[0053]  動作１３０に移り、主要位置においてバックアップおよびトランザクション・ログを作成する。一実施形態によれば、バックアップは、毎週行われる全体的バックアップ、毎日行われる変更部分のみのバックアップ、および５分毎のＳＱＬトランザクション・ログを含む（他の時間を用いてもよい）。一部のバックアップは、変更部分のみのバックアップおよび／またはログを含まないように構成されている場合もある。例えば、サービスによって提供されるアプリケーション／サービス（例えば、検索）は、バックアップが異なる時点において行われること、および／または前述したものよりも少ないバックアップ／ログを含むこともある。バックアップ／ログに関係する情報は、ログおよびバックアップが正しく転送および再生されるのを補助するために格納される。例えば、この情報は、ログ／バックアップが行われた時刻（例えば、ＵＴＣ時刻）を含むことができ、ログおよびバックアップがそれらの時刻にしたがってソートおよび配列されるようにすることができる。また、この情報は、バックアップ／ログが行われたデーターベースの名称、再試行回数というような、他の情報を含むこともできる。再試行回数は、バックアップ／ログを再生／再現するために読み出したときに変化させる値である。再試行回数は、再生するためにログにアクセスするときに更新される。
【００４６】
[0054]  動作３４０に移り、バックアップおよびログをサービスのための代理位置に複製し、再現／再生する。一実施形態によれば、バックアップおよびログは、終了すると直ちに、ＤＦＳＲおよびＡＤに基づくアルゴリズムを用いて、自動的に複製が行われる。バックアップは代理位置において再現され、ログは代理位置において再生される。一実施形態によれば、代理位置が主要位置と時間的に近接して同期され続けるように、ログが代理位置に複製されると直ちに再生される。
【００４７】
[0055]  動作３５０に進み、複製されたコンテンツ、および代理位置に対して行われた変更の有効性を確認する。コンテンツが正しく代理位置に複製されたことを確認するためには、異なる方法を用いることができる。例えば、コンテンツが正しく代理位置にコピーされたか否か判断するために、ハッシュ、ハッシュ＋ファイルのプロパティを用いることもできる。コンテンツの有効性が確認されない場合、代理位置に対してコンテンツを再度作成／コピーし直すことができる。同様に、ネットワークの変更（例えば、マシンを追加する、マシンの役割を変更する）が代理位置に適用されるときに、この変更の有効性を確認することができる。
【００４８】
[0056]  動作３６０に移り、代理ネットワーク特定のデーターを更新する。例えば、コンテンツ・データーベース内にあるデーターに応じて構成データーベースを更新するために、代理位置のサイト・マップを用いることができる。
【００４９】
[0057]  動作３７０に進み、フェイルオーバーを検出する。フェイルオーバーは、計画されているイベント／計画されていないイベントに応答して検出することができる。例えば、主要ネットワークにおける破滅的障害が原因でフェイルオーバーが行われることがあり、または主要ネットワークの使用を停止する決定が原因で行われることもある。フェイルオーバー・イベントは、手作業／自動的に始動することができる。例えば、許可されたユーザーが、主要ネットワークから代理ネットワークへのフェイルオーバーをトリガーすることができ、または１つ以上の条件（例えば、１つ以上のマシンの障害）の検出に基づいて、フェイルオーバーを自動的にトリガーすることもできる。
【００５０】
[0058]  動作３８０に進み、フェイルオーバーの後、代理位置を主要位置として設定する。一実施形態によれば、代理位置が主要位置と同期された後に、主要位置に宛てられた要求を代理位置が受ける。代理位置が主要位置になると、代理位置においてミラーリングが確定され(establish)、新たな主要位置のために、他の復元ネットワークを確立することができる。
【００５１】
[0059]  次いで、本プロセスは終了動作に移り、他のアクションの処理に戻る。
[0060]  図４は、コンテンツ・ファームのような、新たなファームを展開しアップグレードするプロセスを示す。
【００５２】
[0061]  開始動作の後、プロセス４００は動作４１０に進み、主要位置にファームを展開する決定を下す。このファームは、多くの異なる理由のために展開することができる。例えば、既存のファームとは異なるバージョンのソフトウェアを実行するために１つ以上のファームを展開することがあってもよく、新たなネットワークを展開することもでき、機器に障害が発生することもある等である。この決定は、前述したようなウェブ・サービスＡＰＩのようなＡＰＩを通じた要求によって行われる場合もあり、および／または自動的に決定することもできる。例えば、ファームの目標が変わったときに、新たなファームを手作業で／自動的に展開することもできる。
【００５３】
[0062]  動作４１５に移り、主要位置および代理位置の双方において、新たなファームを展開する。一実施形態によれば、マシン・マネージャーおよび展開マネージャーが他のアクションを実行し続けることができるように、マシンのプロビジョニングは非同期に行われる。ファームの展開は、多くの異なるステップを含むことがある。例えば、ファームの役割を与えるためにＶＨＤによって物理マシンをイメージする(image)には、インストールに対してあらゆるカスタム化を行い、マシンを起動する。また、コピー動作が、ネットワークを跨がるのではなく、ネットワーク内部で行われるように、ＶＨＤを使用しようとするネットワーク（１つまたは複数）にＶＨＤを移動させることができる。多層ファーム(multi-tier farm)を展開しようとするとき、各層を所定の順序で展開することができる。一実施形態によれば、データーベース（例えば、ＳＱＬ）ファームの前に展開される統合サービス・ファームの前に、コンテンツ・ファームを展開する。ファームのアップグレードを順序付けると、ファームのアップグレードの複雑さを減らすのに役立つことができる。例えば、コンテンツ・ファームの代わりにサービス・ファームに格納されているデーターを同時に全てのテナントに移動させる。サービス・ファームを最初にアップグレードしようとすると、コンテンツが古いコンテンツ・ファームから新しいコンテンツ・ファームに移動するに連れて、コンテンツに結び付けられたサービス・データーを常に移動またはリフレッシュすることが必要になる可能性がある。また、ファームを最初にアップグレードすると（例えば、コンテンツ・ファーム）、サービス・ファームよりもコンテンツ・ファームの方が多い場合に、スケーリングの改良に資することができる。
【００５４】
[0063]  動作４２０に移り、新たに展開したファームを、多層展開における他のファームに接続することができる。例えば、新たなコンテンツ・ファームを展開したとき、これを古い統合サービス・ファームに接続することができる。
【００５５】
[0064]  動作４２５に進み、古いファームからのデーター（例えば、データーベース）を、主要位置においてバックアップする。一実施形態によれば、このバックアップは全体的なバックアップである。古いファームにおけるデーターベースは、一度に１つずつおよび／または並列でバックアップすることができる。バックアップは、異なる時点において行うこともできる。例えば、新たなファームにおいてマシンをプロビジョニングしている間、新たなファームにおいてマシンをプロビジョニングした後等に行うことができる。主要位置は、バックアップ・プロセスの間読み出し／書き込み要求を受け続けることができる。
【００５６】
[0065]  動作４３０に移り、主要位置および代理位置の双方において、古いファームから新しいファームにバックアップをコピーする。アップグレードされる古いファームは、バックアップの複製中、読み出し／書き込み要求を受けて処理し続ける。バックアップは異なる時点でコピーすることもできる。例えば、一度に１つずつ、一度に２つずつ、全て一緒に等、バックアップを新たなファームの各々にコピーすることができる。また、テナント毎にデーターをコピーすることもできる。例えば、テナントが１つよりも多いデーターベースを占有するとき、このテナントが占有する各データーベースを並列にコピーすることもできる。また、コンテンツのタイプに基づいて、データーをコピーすることもできる。例えば、サービス・ファームにおけるデーターは一度に全てコピーすることができ、一方ＳＱＬデーターベースおよび／またはコンテンツ・ファームのデーターベースは、特定の順序でコピーすることもできる。データーベースのコピーの間、コピーされているデーターベースは、いずれの新たなテナントも追加することを制限される。
【００５７】
[0066]  動作４３５に移り、バックアップ（１つまたは複数）を新たなファームにおいて再現し（主要位置および代理位置）、新たなファームに配属する。
[0067]  動作４４０に移り、バックアップが最初に行われて以降に行われた古いファームに対するあらゆる変化を入手して、新たなファームにコピーするデーターに追加する。この動作の間、古いファーム上にあるデーターに、読み取り専用の印を付けて、短い時間期間中、移動されているファーム上のデーターに対する書き込みが許可されないようにする。全体的バックアップとトランザクション用バックアップとの間の時間期間は比較的短いので（例えば、数分）、データーベースが書き込みに利用できない時間期間も短い。
【００５８】
[0068]  動作４４５に進み、主要位置における新たなファームに対するあらゆるアップグレードを実行する。例えば、古いファームと比較して異なる動作を扱うために、新たなファームにおけるデーターベースを新たな方式バージョンにアップグレードすることができる。アップグレード・プロセスの間、新たなファームは要求を受けず処理しない。この時間中、古いファームは、ユーザーの要求を扱うために、読み取り専用モードのままになっている。このデーターベース内部における他の項目も変更／修正することができる。
【００５９】
[0069]  動作４５０に移り、新たなファームへのアップグレードの結果作成されたトランザクション・ログを、新たなファームの対応する代理位置にコピーする。トランザクション・ログは、アップグレード・プロセスの間および／または後の異なる時点においてコピーすることができる。例えば、トランザクション・ログが新たなファームにおけるアップグレードの間に作成されるに連れて、自動的に新たなファームの代理位置に複製することができる。このように、新たなファームの代理位置は、新たなファームの主要位置と一層緊密に同期され、次いで、アップグレードが完了するのを待ってから、トランザクション・ログを入手する。
【００６０】
[0070]  動作４５５に移り、新たなファームの代理位置において、トランザクション・ログを再生する。トランザクション・ログは、新たなファームの主要位置に対するアップグレードと並行して発生することができる。
【００６１】
[0071]  動作４６０に進み、新たなファームの展開およびアップグレードを検証して、プロセスが正しく行われたことを確認するのに役立てる。ファームの展開中に問題が検出された場合、古いファームを利用し続けることができる。更に、トラフィックも古いファームにリディレクトすることができる。
【００６２】
[0072]  動作４６５に移り、新たなファームのプロビジョニングおよび展開が成功した場合、古いファームからのトラフィックを新たなファームに導く。この時点で、新たに展開したファームを読み出し／書き込みモードに移行させ、これまでは古いファームに導かれていた要求の全てを受けて処理する。
【００６３】
[0073]  動作４７０に移り、主要位置および代理位置双方における古いファームを解放する(unprovision)。古いファームは、直ちに解放すること、または他の時点において解放することもできる。例えば、新たなファームが適正に動作していることを検証するために、ある時間期間を設定することができる。解放と同時におよび／または異なる時点に、データーベースを削除することができる。例えば、１日後、７日後、３０日後等にデーターベースを削除することができる。
【００６４】
[0074]  これより図５を参照して、種々の実施形態において利用するコンピューター５００の例示的なコンピューター・アーキテクチャーについて説明する。図５に示すコンピューター・アーキテクチャーは、サーバー、デスクトップ、または移動体コンピューターとして構成することができ、中央演算装置５（「ＣＰＵ」）、ランダム・アクセス・メモリー９（「ＲＡＭ」）およびリード・オンリー・メモリー（「ＲＯＭ」）１１を含むシステム・メモリー７、およびメモリーを中央演算装置（「ＣＰＵ」）５に結合するシステム・バス１２を含む。
【００６５】
[0075]  起動中のように、コンピューター内部にあるエレメント間で情報を転送するのに役立つ基本的なルーチンを収容する基本入力／出力システムが、ＲＯＭ１１に格納されている。更に、コンピューター５００は、オペレーティング・システム１６、アプリケーション・プログラム１０、データー・ストア２４、ファイル、ならびにクラウド・システム１００の実行およびこれとの相互作用に関係するクラウド・プログラム２５を格納する大容量記憶デバイス１４も含む。
【００６６】
[0076]  大容量記憶デバイス１４は、バス１２に接続されている大容量記憶コントローラー（図示せず）を介して、ＣＰＵ５に接続されている。大容量記憶デバイス１４およびそれに付随するコンピューター読み取り可能媒体は、コンピューター５００に不揮発性記憶機能を設ける。この中に収容されているコンピューター読み取り可能媒体の記述では、ハード・ディスクまたはＣＤ−ＲＯＭドライブのような大容量記憶デバイスに言及するが、コンピューター読み取り可能媒体は、コンピュー１００によってアクセスすることができる入手可能なあらゆる媒体とすることができる。
【００６７】
[0077]  一例として、そして限定ではなく、コンピューター読み取り可能媒体は、コンピューター記憶媒体および通信媒体を含むと考えられる。コンピューター記憶媒体は、揮発性および不揮発性、リムーバブルおよび非リムーバブル媒体を含み、コンピューター読み取り可能命令、データー構造、プログラム・モジュール、またはその他のデーターというような情報の記憶のためのいずれかの方法または技術で実現される。コンピューター記憶媒体は、ＲＡＭ、ＲＯＭ、消去可能プログラマブル・リード・オンリー・メモリー（「ＥＰＲＯＭ」）、電子的消去可能プログラマブル・リード・オンリー・メモリー（「ＥＥＰＲＯＭ」）、フラッシュ・メモリーまたは他のソリッド・ステート・メモリー技術、ＣＤ−ＲＯＭ、ディジタル・バーサタイル・メモリー（「ＤＶＤ」）、または他の光ストレージ、磁気カセット、磁気テープ、磁気ディスク・ストレージまたは他の磁気記憶デバイス、あるいは所望の情報を格納するために用いることができ、コンピューター５００によってアクセスすることができる他のあらゆる媒体を含むが、これらに限定されるのではない。
【００６８】
[0078]  種々の実施形態によれば、コンピューター５００は、インターネットのようなネットワーク１８を通じたリモート・コンピューターへの論理接続を用いて、ネットワーク接続環境において動作することもできる。コンピューター５００は、バス１２に接続されているネットワーク・インターフェース・ユニット２０を介してネットワーク１８に接続することができる。ネットワーク接続は、ワイヤレスおよび／または有線であってもよい。また、ネットワーク・インターフェース・ユニット２０は、他のタイプのネットワークおよびリモート・コンピューター・システムに接続するためにも利用することができる。また、コンピューター５００は、キーボード、マウス、または電子スタイラス（図５には示されていない）を含む多数の他のデバイスから入力を受け取り処理する入力／出力コントローラー２２も含むことができる。同様に、入力／出力コントローラー２２は、出力を表示画面２８、プリンター、または他のタイプの出力デバイスに供給することもできる。
【００６９】
[0079]  先に端的に述べたように、多数のプログラム・モジュールおよびデーター・ファイルを、コンピューター５００の大容量記憶デバイス１４およびＲＡＭ９に格納することができる。プログラム・モジュールには、ワシントン州RedmondのMICROSOFT CORPORATIONからのWINDOWS（登録商標）オペレーティング・システムのような、ネットワーク型コンピューターの動作を制御するのに適したオペレーティング・システム１６が含まれる。また、大容量記憶デバイス１４およびＲＡＭ９は、１つ以上のプログラム・モジュールも格納することができる。具体的には、大容量記憶デバイス１４およびＲＡＭ９は、クラウド・システムに関係するジョブを実行する、クラウド・プログラム２５のような、１つ以上のアプリケーション・プログラムを格納することができる。
【００７０】
[0080]  以上の明細書、例、およびデーターは、本発明の組成(composition)の製造および使用についての完全な説明を与える。本発明の多くの実施形態は、本発明の主旨および範囲から逸脱することなく形成することができるので、本発明は、以下に添付する特許請求の範囲に属するものとする。
【図１】
2014523563.tif 000003
【図２】
2014523563.tif 000004
【図３】
2014523563.tif 000005
【図４】
2014523563.tif 000006
【図５】
2014523563.tif 000007
【国際調査報告】
2014523563.tif 000008
2014523563.tif 000009