(57)【特許請求の範囲】
【請求項１】
状態と、分散型システムとを関連付け、ソフトウェア・コンポーネント状態を、遷移試行を取り消す回復能力を用いて遷移させる方法であって、コンピュータが、
分散型システムに関与する複数のソフトウェア・コンポーネントの全体的なプロビジョニング状態を表すグローバル状態を定義するステップであって、グローバル状態のセットが、プロビジョニング・チェックポイントとして用いられる、前記ステップと、
１つの状態から別の状態に遷移するための個別のソフトウェア・コンポーネント・メソッドを定義するステップと、
前記ソフトウェア・コンポーネントの個別の状態と、グローバル状態とを関連付けるステップと、
ソフトウェア・コンポーネントの状態遷移において障害が発生した場合に、ロールバック・メソッドによって目標のグローバル状態が前のグローバル状態にロールバックされることが可能な、前記ロールバック・メソッドを定義するステップと、
を含む方法。
【請求項２】
ロールバック・メソッドを定義するステップは、前記障害が発生した遷移において開始された個別のソフトウェア・コンポーネント遷移すべてをロールバックする単一プロセスを定義するステップを含む、請求項１に記載の方法。
【請求項３】
ロールバック・メソッドを定義するステップは、ソフトウェア・コンポーネント・レベルでの個別の状態遷移アクティビティに関連付けられた個別のロールバック手順を定義するステップを含む、請求項１に記載の方法。
【請求項４】
前記コンピュータが初期のグローバル状態から次のグローバル状態に直接、単一ステップでソフトウェア・コンポーネントを遷移させるステップをさらに含む、請求項１に記載の方法。
【請求項５】
前記コンピュータがいずれのグローバル状態チェックポイントの一部でもない中間のソフトウェア・コンポーネント・レベル状態にソフトウェア・コンポーネントを遷移させるステップをさらに含む、請求項１に記載の方法。
【請求項６】
前記コンピュータが１つのグローバル状態チェックポイントから別のグローバル状態チェックポイントに移行するソフトウェア・コンポーネント間に何らの順序依存性も保持せずに、前記ソフトウェア・コンポーネントを遷移させるステップをさらに含む、請求項１に記載の方法。
【請求項７】
１つのグローバル状態チェックポイントから別のグローバル状態チェックポイントに移行するソフトウェア・コンポーネント間に順序依存性を保持しながら、前記ソフトウェア・コンポーネントを遷移させるステップをさらに含む、請求項１に記載の方法。
【請求項８】
前記コンピュータが障害の原因を判断するステップ
をさらに含み、
障害の前記原因が判断されれば、状態間の遷移を継続し、
判断されなければ、前記システムは既知の障害状態のままとなる、
請求項１に記載の方法。
【請求項９】
状態と、分散型システムとを関連付け、ソフトウェア・コンポーネント状態を、遷移試行を取り消す回復能力を用いて遷移させるコンピュータ可読プログラムを記憶するコンピュータ可読媒体であって、前記コンピュータ可読プログラムは、コンピュータ上で実行されると、前記コンピュータに、
分散型システムに関与する複数のソフトウェア・コンポーネントの全体的なプロビジョニング状態を表すグローバル状態を定義するステップであって、グローバル状態のセットが、プロビジョニング・チェックポイントとして用いられる、前記ステップと、
１つの状態から別の状態に遷移するための個別のソフトウェア・コンポーネント・メソッドを定義するステップと、
前記ソフトウェア・コンポーネントの個別の状態と、グローバル状態とを関連付けるステップと、
ソフトウェア・コンポーネントの状態遷移において障害が発生した場合に、ロールバック・メソッドによって目標のグローバル状態が前のグローバル状態にロールバックされることが可能な、前記ロールバック・メソッドを定義するステップと、
を実行させる、コンピュータ可読媒体。
【請求項１０】
ロールバック・メソッドを定義するステップは、前記障害が発生した遷移において開始された個別のソフトウェア・コンポーネント遷移すべてをロールバックする単一プロセスを定義することを含む、請求項９に記載のコンピュータ可読媒体。
【請求項１１】
ロールバック・メソッドを定義するステップは、ソフトウェア・コンポーネント・レベルでの個別の状態遷移アクティビティに関連付けられた個別のロールバック手順を定義することを含む、請求項９に記載のコンピュータ可読媒体。
【請求項１２】
初期のグローバル状態から次のグローバル状態に直接、単一ステップでソフトウェア・コンポーネントを遷移させることをさらに含む、請求項９に記載のコンピュータ可読媒体。
【請求項１３】
いずれのグローバル状態チェックポイントの一部でもない中間のソフトウェア・コンポーネント・レベル状態にソフトウェア・コンポーネントを遷移させることをさらに含む、請求項９に記載のコンピュータ可読媒体。
【請求項１４】
１つのグローバル状態チェックポイントから別のグローバル状態チェックポイントに移行するソフトウェア・コンポーネント間に何らの順序依存性も保持せずに、前記ソフトウェア・コンポーネントを遷移させることをさらに含む、請求項９に記載のコンピュータ可読媒体。
【請求項１５】
１つのグローバル状態チェックポイントから別のグローバル状態チェックポイントに移行するソフトウェア・コンポーネント間に順序依存性を保持しながら、前記ソフトウェア・コンポーネントを遷移させることをさらに含む、請求項９に記載のコンピュータ可読媒体。
【請求項１６】
障害の原因を判断すること
をさらに含み、
障害の前記原因が判断されれば、状態間の遷移を継続し、
判断されなければ、前記システムは既知の障害状態のままとなる、
請求項９に記載のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ・ネットワーク管理に関し、特に、ソフトウェア・コンポーネントの再開可能なプロビジョニングを提供するシステムおよび方法に関する。
【背景技術】
【０００２】
データ・センタにおいてソリューションを展開するには、複数層にわたっていくつかのソフトウェア・コンポーネントをインストールおよび構成することが要求される。各ソフトウェア・コンポーネントが独立してインストールおよび構成される必要がある。このタスクは通常、手動で行われるか、または自動プロビジョニング用の、ＩＢＭのＴｉｖｏｌｉ（ＩＢＭ社の登録商標）Ｐｒｏｖｉｓｉｏｎｉｎｇ  Ｍａｎａｇｅｒ（商標）などのツールを使用して行われる。いずれかのコンポーネントのインストール／構成中に障害が発生すると、そのプロビジョニング実行が破棄され、プロビジョニングが再開されることになる。これは、個別のコンポーネントが各構成を通してリンクし合っていることが多く、このことが選択的な構成解除／アンインストールを難しくするためである。
【０００３】
単一プロセス・コンポーネントのチェックポイント／再開に対する従来の取り組みは、単一ノード環境内における、１つ以上の関連コンポーネントのインストールおよび障害回復に焦点を当てている。さらに、いくつかの関連技術の特許には、次のものが含まれる。「Ａｐｐａｒａｔｕｓ  ａｎｄ  ｍｅｔｈｏｄｓ  ｆｏｒ  ｃｏｎｔｒｏｌｌｉｎｇ  ｒｅｓｔａｒｔ  ｃｏｎｄｉｔｉｏｎｓ  ｏｆ  ａ  ｆａｕｌｔｅｄ  ｐｒｏｃｅｓｓ」という題の米国特許第６，４５３，４３０号は、複数の多様な回復手順による、単一ノード内での処理障害の回復戦略に焦点を当てている。「Ｒｅｓｔａｒｔ  ａｎｄ  ｒｅｃｏｖｅｒｙ  ｏｆ  ＯＭＧ−ｃｏｍｐｌｉａｎｔ  ｔｒａｎｓａｃｔｉｏｎ  ｓｙｓｔｅｍｓ」という題の米国特許第５，９２３，８３３号は、トランザクション・システムにおける再開および回復技術に焦点を当てている。「Ｓｃｈｅｍｅ  ｆｏｒ  ｒｅｓｔａｒｔｉｎｇ  ｐｒｏｃｅｓｓｅｓ  ａｔ  ｄｉｓｔｒｉｂｕｔｅｄ  ｃｈｅｃｋｐｏｉｎｔｓ  ｉｎ  ｃｌｉｅｎｔ−ｓｅｒｖｅｒ  ｃｏｍｐｕｔｅｒ  ｓｙｓｔｅｍ」という題の米国特許第６，０２６，４９９号は、１つのノードで障害が発生した場合に、複数のノードにわたってプロセスを再開する分散型の方法に焦点を当てており、プロビジョニング、グローバル状態（ｇｌｏｂａｌ  ｓｔａｔｅ）の捕捉、またはロールバック機能の提供のプロセスは検討されていない。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許第６，４５３，４３０号
【特許文献２】米国特許第５，９２３，８３３号
【特許文献３】米国特許第６，０２６，４９９号
【発明の概要】
【発明が解決しようとする課題】
【０００５】
障害の処理および再開可能性に対する従来の手法は、少なくとも、当該方法において一貫性のある分散したチェックポイントをとることが実行可能でないことが理由で、うまく作用しない。
【課題を解決するための手段】
【０００６】
状態と、分散型システムとを関連付け、コンポーネント状態（ｃｏｍｐｏｎｅｎｔ  ｓｔａｔｅ）を、遷移試行（ｔｒａｎｓｉｔｉｏｎｉｎｇ  ａｔｔｅｍｐｔ）を取り消す回復を用いて遷移させるシステムおよび方法は、システムに関与する複数のコンポーネントの全体的なプロビジョニング状態を表すグローバル状態を定義することを含み、グローバル状態のセットが、プロビジョニング・チェックポイント（ｐｒｏｖｉｓｉｏｎｉｎｇ  ｃｈｅｃｋｐｏｉｎｔ）として用いられる。１つの状態から別の状態に遷移するための個別のソフトウェア・コンポーネント・メソッド（ｓｏｆｔｗａｒｅ  ｃｏｍｐｏｎｅｎｔ  ｍｅｔｈｏｄ）が定義される。個別の状態がグローバル状態に関連付けられる。障害が発生した場合に、ロールバック・メソッド（ｒｏｌｌｂａｃｋ  ｍｅｔｈｏｄ）によって目標のグローバル状態が前のグローバル状態にロールバックされることが可能な、該ロールバック・メソッドが定義される。
【０００７】
これらの特徴および利点、ならびに他の特徴および利点が、その実例としての、以下の実施形態の詳細な説明から明らかとなる。この説明は添付の図面と併せて読むものとする。
【０００８】
本開示は、以下の好適な実施形態の説明において、次の図面を参照しながら詳説を提供する。
【図面の簡単な説明】
【０００９】
【図１】本原理による例示実施形態を実装するのに使用されるとよいネットワーク・データ処理システムを示すブロック図である。
【図２】本原理による例示実施形態を実装するのに使用されるとよいデータ処理システムのブロック図である。
【図３】本原理による例示実施形態を実装するのに使用されるとよいサービス配信環境の概略図である。
【図４】本原理による例示実施形態を実装するのに使用されるとよい多層モデルの例を示すブロック図である。
【図５】本原理による、関与するソフトウェア・コンポーネントの基本状態で構成されるグローバル状態を、１つのグローバル状態から次へ移行するコンポーネント・レベルの状態遷移およびロールバック・パターンとともに示す図である。
【図６】例示実施形態による、障害が発生したステップの回復ステップを含む複数のシステム状態を経て進行することで、分散型コンピューティング・ネットワークにおいてソフトウェア・コンポーネントをプロビジョニングするシステム／方法を示すブロック／フロー図である。
【図７】本原理による、関与するソフトウェア・コンポーネントの複数のコンポーネント状態または基本状態（ｅｌｅｍｅｎｔａｌ  ｓｔａｔｅ）で構成されているグローバル状態のセットを管理する状態管理を、１つのグローバル状態から次へ移行するためのコンポーネント・レベルの状態遷移およびロールバック・パターンとともに示す図である。
【図８】本原理による、図５のグローバル状態を、複数のグローバル状態間を移行するためのコンポーネント・レベルの状態遷移およびロールバック遷移とともに示す別の図である。
【発明を実施するための形態】
【００１０】
分散型コンピューティング・ネットワークにおけるコンピューティング・リソースの自動プロビジョニングのシステムおよび方法が提供される。これにはグローバル状態チェックポイントの使用が含まれ、障害が発生した場合にプロビジョニングの制御されたロールバックを行うことが可能になる。グローバル状態は、プロビジョニングに関与している複数のソフトウェア・コンポーネントの個別の状態を含む。１つのチェックポイントから次へ移行するプロビジョニング試行中に障害が発生した場合に、前のグローバル状態チェックポイントへ逆行するために必要なロールバック手順（単数または複数）が、各グローバル状態に関連付けられている。
【００１１】
例示実施形態によれば、分散型コンピューティング・ネットワークにおけるコンピューティング・リソースの自動プロビジョニングの一方法は、自動プロビジョニング・プロセスの現行の状態を表す単一のグローバル状態の生成を含む。グローバル状態は、分散型コンピューティング・ネットワーク内のソフトウェア・コンポーネントの個別の状態を含む。グローバル状態は、分散型システム内の個別のソフトウェア・コンポーネントのインクリメンタル・プロビジョニング・ステップを通して１つの状態から次へ遷移する。各状態にはロールバック手順が関連付けられている。プロビジョニングで障害が発生した場合には、システムを前のシステム状態に戻すために、この関連付けられているロールバック手順を使用可能である。
【００１２】
当然のことながら、本願明細書に記載される本発明の例示実施形態は、様々な形態のハードウェア、ソフトウェア、ファームウェア、専用プロセッサ、またはその組み合わせにおいて実装され得る。本発明の例示実施形態は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態、またはハードウェアおよびソフトウェア構成要素の両方を含む実施形態という形態をとり得る。
【００１３】
さらに、本発明は、コンピュータもしくは任意の命令実行システムにより使用されるかまたはそれと関連して使用されるプログラム・コードを提供する、コンピュータ使用可能媒体またはコンピュータ可読媒体からアクセス可能な、コンピュータ・プログラム製品という形態をとることができる。本記載では、コンピュータ使用可能媒体またはコンピュータ可読媒体は、命令実行システム、装置もしくはデバイスによって、またはそれと関連して使用されるプログラムを、含むこと、格納すること、伝達すること、伝播させること、または移送することができる任意の装置とすることができる。媒体は、電子、磁気、光学、電磁気、赤外線または半導体のシステム（もしくは装置もしくはデバイス）または伝搬媒体とすることができる。コンピュータ可読媒体の例には、半導体または固体メモリ、磁気テープ、取り外し可能コンピュータ・ディスケット、ランダム・アクセス・メモリ（ＲＡＭ：ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）、読み取り専用メモリ（ＲＯＭ：ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、リジッド磁気ディスク、および光学ディスクが含まれる。光学ディスクの現時点における例には、コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ：ｃｏｍｐａｃｔ  ｄｉｓｋ−ｒｅａｄ  ｏｎｌｙ  ｍｅｍｏｒｙ）、コンパクト・ディスク読み取り／書き込み（ＣＤ−Ｒ／Ｗ：ｃｏｍｐａｃｔ  ｄｉｓｋ−ｒｅａｄ／ｗｒｉｔｅ）、およびＤＶＤ（ｄｉｇｉｔａｌ  ｖｅｒｓａｔｉｌｅ  ｄｉｓｃ：デジタル多目的ディスク）が含まれる。
【００１４】
例示実施形態は、例えば、コンピュータなど、命令のプログラムを実行することができるマシンにより読み取り可能なコンピュータのハード・ディスク・ドライブ、ＣＤ−ＲＯＭ（コンパクト・ディスク読み取り専用メモリ）ドライブ、ならびに、ＣＤ、ＤＶＤ（デジタル多目的ディスクまたはデジタル・ビデオ・ディスク（ｄｉｇｉｔａｌ  ｖｉｄｅｏ  ｄｉｓｃ））、ユニバーサル・シリアル・バス（ＵＳＢ：Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）ドライブ、フレキシブル・ディスク、ディスケットおよびテープなどの取り外し可能な媒体など１つ以上のプログラム記憶デバイス上で有形に具現化されたアプリケーション・プログラムとして、ソフトウェア媒体において実装されてもよい。任意の適切なアーキテクチャを含む命令実行システム、装置またはデバイスにアプリケーション・プログラムがアップロードされること、およびそれによってアプリケーション・プログラムが実行されることが可能である。さらに、当然のことながら、添付の図面に示されている本発明の例示実施形態は、ソフトウェアにおいて実装され得るため、システム・コンポーネント間の実際の接続（またはプロセス・ステップのフロー）は、アプリケーションがプログラムされている様式次第で異なってもよい。好適な実施形態では、本発明はソフトウェアにおいて実装され、ソフトウェアは、次に限定されるものではないが、ファームウェア、常駐ソフトウェア、マイクロコードなどを含み得る。
【００１５】
プログラム・コードの格納または実行あるいはその両方に適したデータ処理システムには、システム・バスを介してメモリ素子に直接または間接的に結合された少なくとも１つのプロセッサが含まれると考えられる。メモリ素子は、プログラム・コードを実際に実行する間に用いられるローカル・メモリ、大容量記憶装置、および、実行中にコードが大容量記憶装置から読み出される回数を減らすために少なくとも一部のプログラム・コードの一時的な記憶装置となるキャッシュ・メモリを含み得る。入出力、すなわちＩ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）デバイス（限定されるものではないが、キーボード、ディスプレイ、ポインティング・デバイスなどを含む）は、直接、または介在するＩ／Ｏコントローラを介して、システムに結合されているとよい。
【００１６】
さらにネットワーク・アダプタがシステムに結合され、データ処理システムが、介在する私設または公衆ネットワークを介して他のデータ処理システムまたはリモート・プリンタまたは記憶デバイスに結合できるようにするとよい。モデム、ケーブル・モデムおよびイーサネット（Ｒ）カードが、現在利用可能な種類のネットワーク・アダプタのごく一部である。
【００１７】
以下、図面を参照するが、図面では、同じ数字は同じ構成要素または類似した構成要素を表している。まず図１を参照する。本発明の例示実施形態を実装するのに使用されるとよいネットワーク・データ処理システム１００が、例示的に示されている。ネットワーク・データ処理システム１００は、適切な任意のコンピュータを使用して実装できるコンピュータ１０４、１０６、１１０、１１２、１１４…のネットワークを含む。ネットワーク・データ処理システム１００は、例えば、パーソナル・コンピュータ、ワークステーション、またはメインフレームを含むとよい。ネットワーク・データ処理システム１００は、ネットワーク上の各コンピュータまたはプロセスがクライアントまたはサーバのいずれかであるクライアント−サーバ・ネットワーク・アーキテクチャを採用するとよい。
【００１８】
ネットワーク・データ処理システム１００は、ネットワーク・データ処理システム１００内の様々なデバイスおよびコンピュータ間の通信リンクを提供するために使用される媒体であるネットワーク１０２を含む。ネットワーク１０２は、ワイヤ、ワイヤレス通信リンク、光ファイバ・ケーブル、電話による接続、または他の通信リンク、あるいはそのいずれかの組み合わせなど、様々な接続を含み得る。
【００１９】
様々なサーバ、クライアント、およびその他のデバイスが、ネットワーク１０２に接続できる。例えば、図１に示されているように、記憶ユニット１０８ならびにクライアント１１０、１１２、および１１４に加えて、サーバ１０４およびサーバ１０６が、ネットワーク１０２に接続されているとよい。記憶ユニット１０８は、例えば、コンピュータのハード・ディスク・ドライブ、ＣＤ−ＲＯＭドライブ、または取り外し可能な媒体、あるいはそのいずれかの組み合わせなど、様々な種類の記憶媒体を含むとよく、取り外し可能な媒体とは、例えばＣＤ、ＤＶＤ、ＵＳＢドライブ、フレキシブル・ディスク、ディスケット、またはテープあるいはそのいずれかの組み合わせなどである。クライアント１１０、１１２および１１４は、例えば、パーソナル・コンピュータまたはネットワーク・コンピュータ、あるいはその両方とするとよい。
【００２０】
クライアント１１０は、パーソナル・コンピュータとしてもよい。クライアント１１０は、処理ユニットおよびメモリ・デバイスを含むシステム・ユニットと、ビデオ・ディスプレイ端末と、キーボードと、フレキシブル・ディスク・ドライブおよびその他の種類の常設または取り外し可能な記憶媒体などの記憶デバイスと、マウスなどのポインティング・デバイスとを含むとよい。例えばジョイスティック、タッチパッド、タッチスクリーン、トラックボール、マイクロホン、および同様のものなど、さらなる入力デバイスがクライアント１１０に含まれていてもよい。
【００２１】
クライアント１１０、１１２、および１１４は、例えば、サーバ１０４に対するクライアントとしてもよい。サーバ１０４は、ブート・ファイル、オペレーティング・システム・イメージ、およびアプリケーションなどのデータをクライアント１１０、１１２、および１１４に提供するとよい。ネットワーク・データ処理システム１００は、図示されていない他のデバイスを含んでもよい。
【００２２】
ネットワーク・データ処理システム１００は、インターネットを含むことができ、例えば、ネットワーク１０２は、伝送制御プロトコル／インターネット・プロトコル（ＴＣＰ／ＩＰ：Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）スイートのプロトコルを使用して相互通信するネットワークおよびゲートウェイの世界的規模の集合を表す。インターネットは、データおよびメッセージをルーティングする多数の商用、政府機関用、教育関連、およびその他のコンピュータ・システムを含む主要ノードまたはホスト・コンピュータ間の、高速データ通信回線のバックボーンを含む。
【００２３】
ネットワーク・データ処理システム１００は、例えばイントラネット、ローカル・エリア・ネットワーク（ＬＡＮ：ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋ）、または広域ネットワーク（ＷＡＮ：ｗｉｄｅ  ａｒｅａ  ｎｅｔｗｏｒｋ）、あるいはそのいずれかの組み合わせなど、適切な任意の種類のネットワークとして実装されるとよい。図１のネットワーク・データ処理構成要素は、例示を意図したものであり、本発明の実施形態のアーキテクチャを制限するものではない。
【００２４】
図２を参照する。例示実施形態を実装するために使用されるとよいデータ処理システム２００のブロック図が、例示的に示されている。データ処理システム２００は、図１のサーバ１０４またはクライアント１１０などのコンピュータの例であり、ここに本原理によるプロセスを実装するコンピュータ使用可能コードまたは命令があるとよい。
【００２５】
この例では、データ処理システム２００は、ノース・ブリッジおよびメモリ・コントローラ・ハブ（ＮＢ／ＭＣＨ：ｎｏｒｔｈ  ｂｒｉｄｇｅ  ａｎｄ  ｍｅｍｏｒｙ  ｃｏｎｔｒｏｌｌｅｒ  ｈｕｂ）２０２ならびにサウス・ブリッジおよび入出力（Ｉ／Ｏ）コントローラ・ハブ（ＳＢ／ＩＣＨ：ｓｏｕｔｈ  ｂｒｉｄｇｅ  ａｎｄ  ｉｎｐｕｔ／ｏｕｔｐｕｔ（Ｉ／Ｏ）ｃｏｎｔｒｏｌｌｅｒ  ｈｕｂ）２０４を含むハブ・アーキテクチャを採用している。１つ以上のプロセッサを含むとよい処理ユニット２０６、メイン・メモリ２０８、およびグラフィックス・プロセッサ２１０が、ノース・ブリッジおよびメモリ・コントローラ・ハブ２０２に結合されている。グラフィックス・プロセッサ２１０は、アクセラレーテッド・グラフィックス・ポート（ＡＧＰ：ａｃｃｅｌｅｒａｔｅｄ  ｇｒａｐｈｉｃｓ  ｐｏｒｔ）を介してＮＢ／ＭＣＨ２０２に結合されてもよい。データ処理システム２００は、例えば、処理ユニット２０６内に複数のプロセッサを含む対称型マルチプロセッサ（ＳＭＰ：ｓｙｍｍｅｔｒｉｃ  ｍｕｌｔｉｐｒｏｃｅｓｓｏｒ）システムとしてもよい。データ処理システム２００は、単一プロセッサ・システムとしてもよい。
【００２６】
ローカル・エリア・ネットワーク（ＬＡＮ）アダプタ２１２が、サウス・ブリッジおよびＩ／Ｏコントローラ・ハブ２０４に結合されている。オーディオ・アダプタ２１６、キーボードおよびマウス・アダプタ２２０、モデム２２２、読み出し専用メモリ（ＲＯＭ）２２４、ユニバーサル・シリアル・バス（ＵＳＢ）ポートおよびその他の通信ポート２３２、ならびにＰＣＩ／ＰＣＩｅ（ＰＣＩ  Ｅｘｐｒｅｓｓ）デバイス２３４が、バス２３８を介してサウス・ブリッジおよびＩ／Ｏコントローラ・ハブ２０４に結合され、ハード・ディスク・ドライブ（ＨＤＤ：ｈａｒｄ  ｄｉｓｋ  ｄｒｉｖｅ）２２６ならびにＣＤ−ＲＯＭドライブ２３０が、バス２４０を介してサウス・ブリッジおよびＩ／Ｏコントローラ・ハブ２０４に結合されている。
【００２７】
ＰＣＩ／ＰＣＩｅデバイスの例には、イーサネット（Ｒ）アダプタ、アドイン・カード、およびノートブック・コンピュータ用のＰＣカードがある。一般に、ＰＣＩはカード・バス・コントローラを使用するが、ＰＣＩｅはカード・バス・コントローラを使用しない。ＲＯＭ２２４は、例えばフラッシュ・バイナリ入出力システム（ＢＩＯＳ：ｂｉｎａｒｙ  ｉｎｐｕｔ／ｏｕｔｐｕｔ  ｓｙｓｔｅｍ）としてもよい。ハード・ディスク・ドライブ２２６およびＣＤ‐ＲＯＭドライブ２３０は、例えば、統合ドライブ・エレクトロニクス（ＩＤＥ：ｉｎｔｅｇｒａｔｅｄ  ｄｒｉｖｅ  ｅｌｅｃｔｒｏｎｉｃｓ）またはシリアル・アドバンスト・テクノロジ・アタッチメント（ＳＡＴＡ：ｓｅｒｉａｌ  ａｄｖａｎｃｅｄ  ｔｅｃｈｎｏｌｏｇｙ  ａｔｔａｃｈｍｅｎｔ）インターフェースを使用してもよい。スーパーＩ／Ｏ（ＳＩＯ：ｓｕｐｅｒ  Ｉ／Ｏ）デバイス２３６が、サウス・ブリッジおよびＩ／Ｏコントローラ・ハブ２０４に結合されているとよい。
【００２８】
オペレーティング・システムは、処理ユニット２０６上で実行されるとよく、データ処理システム２００内の様々なコンポーネントを連携させ、その制御を実現する。例えば、オペレーティング・システムは、Ｍｉｃｒｏｓｏｆｔ（Ｒ）Ｗｉｎｄｏｗｓ（Ｒ）ＸＰ（ＭｉｃｒｏｓｏｆｔおよびＷｉｎｄｏｗｓは、Ｍｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎの商標または登録商標）などの市販のオペレーティング・システムとするとよい。
【００２９】
Ｊａｖａ（商標）プログラミング・システムなどのオブジェクト指向プログラミング・システムが、オペレーティング・システムとともに実行されてもよく、データ処理システム２００上で実行されているＪａｖａプログラムまたはアプリケーションからオペレーティング・システムへのコールを実現する（ＪａｖａおよびＪａｖａに基づくすべての商標は、Ｓｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓ，Ｉｎｃ．の商標または登録商標である）。
【００３０】
オペレーティング・システム、オブジェクト指向プログラミング・システム、およびアプリケーションの命令、または命令のプログラム、あるいはそのいずれかの組み合わせは、例えばハード・ディスク・ドライブ２２６などの記憶デバイスにあり、処理ユニット２０６による実行のためにメイン・メモリ２０８にロードされるとよい。例示実施形態のプロセスは、コンピュータ使用可能プログラム・コードを使用して処理ユニット２０６により実行されるとよく、コードは、例えばメイン・メモリ２０８、読み出し専用メモリ２２４などのメモリまたは１つ以上の周辺デバイスにあるとよい。
【００３１】
当然のことながら、図１および２に示されているハードウェアは、実装に応じて異なってもよい。フラッシュ・メモリ、等価な不揮発性メモリ、もしくは光ディスク・ドライブおよび同様のものなど、他の内部ハードウェアまたは周辺デバイスが、示されているハードウェアに加えて、またはその代わりに使用されてもよい。本原理による実施形態のプロセスは、マルチプロセッサ・データ処理システムに適用されてもよい。
【００３２】
データ処理システム２００は、様々な形態をとり得る。例えば、データ処理システム２００は、タブレット・コンピュータ、ラップトップ・コンピュータ、または電話機としてもよい。データ処理システム２００は、例えば携帯情報端末（ＰＤＡ：ｐｅｒｓｏｎａｌ  ｄｉｇｉｔａｌ  ａｓｓｉｓｔａｎｔ）としてもよい。ＰＤＡは、オペレーティング・システム・ファイルまたはユーザ生成データ、あるいはその両方を格納する不揮発性メモリを提供するフラッシュ・メモリを備えた構成であるとよい。データ処理システム２００内のバス・システムは、システム・バス、Ｉ／Ｏバス、およびＰＣＩバスなど、１つ以上のバス２３８、２４０を含むとよい。当然のことながら、バス・システムは、通信構造またはアーキテクチャに結合された種々のコンポーネントまたはデバイス間のデータ転送を提供する、任意の種類の通信構造またはアーキテクチャを使用して実装されるとよい。通信ユニットは、モデム２２２またはネットワーク・アダプタ２１２など、データの送受信に使用される１つ以上のデバイスを含むとよい。メモリは、例えば、メイン・メモリ２０８、ＲＯＭ２２４、またはノース・ブリッジおよびメモリ・コントローラ・ハブ２０２にあるようなキャッシュとしてもよい。処理ユニット２０６は、１つ以上のプロセッサ、すなわちＣＰＵを含むとよい。
【００３３】
例示実施形態による自動プロビジョニングの方法は、図１に示されているデータ処理システム１００または図２に示されているデータ処理システム２００などのデータ処理システムにおいて実行されるとよい。
【００３４】
命令のプログラムの格納または実行あるいはその両方に適しているデータ処理システムは、システム・バスによってメモリ素子に直接または間接的に結合された１つ以上のプロセッサを含み得る。メモリ素子は、プログラム・コードを実際に実行する間に用いられるローカル・メモリと、大容量記憶装置と、実行中に大容量記憶装置からコードを読み出さなければならない回数を減らすために少なくとも一部のプログラム・コードの一時的な記憶装置となるキャッシュ・メモリとを含むことができる。
【００３５】
データ処理システム２００は、例えばキーボード、ディスプレイ、およびポインティング・デバイスなどの入出力（Ｉ／Ｏ）デバイスを含むとよく、これは、直接または介在するＩ／Ｏコントローラを介してシステムに結合されているとよい。さらにネットワーク・アダプタがシステムに結合され、データ処理システムが、介在する私設または公衆ネットワークを介して他のデータ処理システムまたはリモート・プリンタまたは記憶デバイスに結合できるようにするとよい。ネットワーク・アダプタは、限定されるものではないが、モデム、ケーブル・モデムおよびイーサネット（Ｒ）カードを含む。
【００３６】
図３を参照する。一例示実施形態を実装するために使用されるとよいサービス配信環境３００の略図が、例示的に示されている。サービス配信環境３００は、複数の物理サーバのファーム（ｆａｒｍ）３０２、ＤＭＺ（ｄｅｍｉｌｉｔａｒｉｚｅｄ  ｚｏｎｅ：非武装地帯）３０６、および複数の管理サーバ３１２を含む。「非武装地帯」という用語、または「ＤＭＺ」という頭字語は、組織の内部ネットワークと、インターネットなどの外部ネットワークとの間に位置するネットワーク領域を指す。
【００３７】
インターネットまたはイントラネットからのユーザ・リクエストは、ルータ・デバイスによって受信される。例えば、ルータ・デバイスは、ＤＭＺ３０６内にあってもよい。ルータ・デバイスは、ＩＢＭのＷｅｂＳｅａｌ（商標）製品などのリバース・プロキシによって実装されてもよい。
【００３８】
ユーザ・リクエストは、ネットワーク３０８を介して、サーバ・ファーム（ｓｅｒｖｅｒ  ｆａｒｍ）３０２上で実行されている実または仮想マシン３１０の集合でホストされているプロビジョニング・ソリューションへ送られるとよい。サーバ・ファーム３０２の管理に使用可能な管理サーバ３１２が、ネットワーク３０８を介して物理サーバ３０２に結合されている。管理サーバ３１２は、システム・アドミニストレータ３０４によって、サーバ・ファームの管理および監視に使用されるとよい。管理サーバ３１２上で実行されているソフトウェアが、ソフトウェア・メータリング、アプリケーション・プロビジョニング、すべての（または選択された）アプリケーションの監視、およびサーバ・ファームの問題判別などの様々なタスクを支援するとよい。
【００３９】
本原理による例示実施形態を実装するために使用されるとよい多層システムの例を示すブロック／フロー図である図４を参照する。示されているモデルは３層モデル４００である。各層は、それ自体が多層であってもよい（その場合、全体的なアーキテクチャが「ｎ層アーキテクチャ」と呼ばれる）。ロジック層を様々な形で物理的に実装することができる。例えば、３層すべてが別々のサーバに物理的に実装されてもよく、これにより、拡張性の向上、および同時により多くのクライアント・リクエストを処理する能力をもたらすことができる。
【００４０】
第１層４０２は、プレゼンテーションまたはウェブ層であり、ユーザ向けに様々な形式でコンテンツを動的に生成する。プレゼンテーション層４０２は、ユーザとビジネス層４０４との間のインタラクションを処理するコンポーネントを含む。プレゼンテーション層４０２とのユーザ・インタラクションは、ウェブ・ブラウザを介するとよい。例えば、ＨＴＭＬベースのフロント・エンドをサポートするウェブ・ブラウザがウェブ・サーバと通信して、ウェブ・サーバが、変更されたウェブ・ページまたは新たなウェブ・ページをユーザに対し送り返す。当然のことながら、ウェブ・サーバは、様々な手法を用いてユーザ・リクエストに応じることができる。当該手法には、次に限定されるものではないが、共通ゲートウェイ・インターフェース（ＣＧＩ：Ｃｏｍｍｏｎ  Ｇａｔｅｗａｙ  Ｉｎｔｅｒｆａｃｅ）、Ｍｉｃｒｏｓｏｆｔのアクティブ・サーバ・ページ（ＡＳＰ：Ａｃｔｉｖｅ  Ｓｅｒｖｅｒ  Ｐａｇｅ）、およびＪａｖａサーバ・ページ（ＪＳＰ：Ｊａｖａ  Ｓｅｒｖｅｒ  Ｐａｇｅ）がある。プレゼンテーション層（４０２）のコンポーネントには、ＨＴＭＬページと、イメージと、ポートレットまたはサーブレットあるいはその両方などのＨＴＭＬページを表示および処理するためのコンピュータ可読コードとが含まれるとよい。
【００４１】
第２層４０４は、アプリケーションまたはビジネス層である。ビジネス層４０４のコンポーネントは、クライアント・リクエストを処理し、アプリケーションのビジネス・ロジックを提供する。ビジネス・ロジックは、特定のアプリケーション・ドメインに機能性を提供するコンピュータ可読コードを含む。ビジネス・ロジックは、実際のＪ２ＥＥ（Ｊａｖａ  ２  Ｐｌａｔｆｏｒｍ，Ｅｎｔｅｒｐｒｉｓｅ  Ｅｄｉｔｉｏｎ：Ｊａｖａ２プラットフォーム・エンタープライズ・エディション）アプリケーション、またはプロビジョニング・ソリューションに特有の機能性を実行するビジネス・プロセスによって具現化されるとよい。
【００４２】
第３層４０６はデータベース層である。データベース層４０６は、データと、データベース管理ソフトウェアなど、データへのアクセスを管理および提供するコンポーネントとを含む。
【００４３】
図５を参照する。本原理による、個別の複数ソフトウェア・コンポーネント状態で構成されたグローバル状態の例が例示的に示されている。グローバル状態５０２は、一組のコンポーネント状態５０８、５１０、および５１２で構成されている。システムのプロビジョニングには、各コンポーネントの、５０８から５１４へ、５１０から５１６へ、および５１２から５１８への個別の状態遷移によって、状態５０２から状態５０４にグローバル状態を移行させることが含まれる。５０８および５１０から新たなグローバル状態５０４へと遷移するコンポーネントＣ１とＣ２との間の順序依存性が原因で、コンポーネントＣ１Ｂは、中間状態（Ｃ１Ｂ’）５０６を経て移行する。
【００４４】
実際には、例示の方法は、複数の個別コンポーネント状態を表す組として、コンポーネント状態を捕捉する。有効な状態の例示のセットには、ＮｏｔＩｎｓｔａｌｌｅｄ、Ｉｎｓｔａｌｌｅｄ、Ｓｔａｒｔｅｄ、Ｐｈａｓｅ＜ｎ＞、Ｃｏｍｐｌｅｔｅｄが含まれると考えられ、Ｐｈａｓｅ＜ｎ＞はコンポーネント特有である。図５では、コンポーネント［Ｃ１，Ｃ２，Ｃ３］のグローバル状態Ｂ（５０２）は、［Ｉｎｓｔａｌｌｅｄ，Ｉｎｓｔａｌｌｅｄ，ＮｏｔＩｎｓｔａｌｌｅｄ］であり得る。Ｃ１の部分的遷移によって表される中間状態（５０６）は、［Ｓｔａｒｔｅｄ，Ｉｎｓｔａｌｌｅｄ，ＮｏｔＩｎｓｔａｌｌｅｄ］であり得る。最後のグローバル状態Ｃ（５０４）は、［Ｐｈａｓｅ１，Ｐｈａｓｅ１，Ｉｎｓｔａｌｌｅｄ］であり得る。
【００４５】
図６は、例示実施形態による、分散型コンピューティング・ネットワークにおけるコンピューティング・リソースの自動プロビジョニングの方法を示すフロー図である。
【００４６】
図６を参照する。プロビジョニング・リクエストが、ブロック６０２で受信される。ブロック６０４は、システムを構成する各コンポーネントの現在の状態を検査することによって、システムの初期グローバル状態を確立する。例えば、個別のソフトウェア・コンポーネントは、プロビジョニング・リクエストの前に展開および構成されているとよい。ブロック６０６は、システム内の各ソフトウェア・コンポーネントの現在の状態を調べて、次のグローバル状態に移行するのに必要な個別のステップと、当該ステップ間の順序依存性とを特定する。
【００４７】
ブロック６０８は、ブロック６０６で特定された実際のプロビジョニング・ステップを開始する。このステップは、状態遷移方法で定義された任意の順序依存性を保持しながら、順次実行されても、または並行して実行されてもよい。ブロック６１０は、個別のコンポーネント状態遷移の成功を調べ、新たなグローバル状態が実現されたかどうかを判断する。
【００４８】
いずれかのブロックで障害が発生すると、グローバル状態遷移全体が失敗したということであり、ロールバック手順の開始が必要となる。ロールバック手順はブロック６１６から始まる。ブロック６１６は、試行された、ロールバックが必要な個別のコンポーネント状態遷移を特定する。ブロック６１８は、ブロック６１６で特定された、前のグローバル状態チェックポイントへと逆行するために必要なロールバック・ステップを開始する。
【００４９】
既知状態にロールバックした後、障害の原因が、プロビジョニング・プロセスの外部での手動または自動介入によって修正されるとよい。ブロック６２０は、問題が修正されたかどうかの判断である。修正されていない場合、ブロック６２２に示されているように、システムは、既知の障害状態のままとなる。問題が修正されている場合には、制御はブロック６０６に戻る。
【００５０】
ブロック６１０で、状態遷移分析が成功すると、ブロック６１２で、プロビジョニング・リクエストのさらなる評価が行われ、別のグローバル状態遷移が必要であるかどうかが判断されることになる。別のグローバル状態遷移が必要であれば、制御はブロック６０６に返される。ブロック６１２で、さらなる状態遷移が必要でなければ、ブロック６１４に表されているように、システムのプロビジョニングが成功したことになる。
【００５１】
実際には、例示の方法は、対象の環境を検査することによって、初期のコンポーネント状態を特定する。プロビジョニング・ロジックは、グローバル状態の定義と、遷移ステップのセットとを、メタデータ定義によって組み込む。プロビジョニング・ロジックは、初期コンポーネント状態を所与として、次のグローバル状態を判断する。その状態に達するために必要な各遷移ステップが開始される。すべてのステップが成功すれば、新たなグローバル状態に達する。残っているグローバル状態があれば、このパターンが繰り返される。ステップが失敗した場合、そのグローバル状態遷移に関連付けられているロールバック・ステップが開始される。障害の原因の自動修正によって、プロビジョニング・プロセスが、前のグローバル状態から再開可能となる。原因が修正されなければ、前のグローバル状態にて、プロビジョニング全体が失敗状態のままとなる。
【００５２】
以下、本原理による、より詳しい例を提示する。個別のソフトウェア・コンポーネントの状態がプロビジョニング・プロセスの単一のグローバル状態にリンクされる、状態に基づく手法について記載する。ソリューションのプロビジョニングは、プロビジョニングが進むにつれて１つの状態から別の状態へ遷移する。ソフトウェア・コンポーネントの各状態には、自動回復に使用されるロールバック手順が関連付けられている。
【００５３】
障害が発生すると、分散型システムの状態は、グローバル状態によって表される各ソフトウェア・コンポーネントに関連付けられている「アンドゥ」手順を実行することによって、前の一貫した状態にロールバックされる。グローバル状態は、手動での回復のためにソフトウェア・コンポーネントの現在の状態を理解する手がかりとなる。
【００５４】
図７を参照する。実例としての実施形態による状態管理が示されている。各グローバル状態７０２は、そのサブコンポーネントＣの複合状態である。例えば、初期状態（７０２）は、状態Ｃ１０およびＣ２０に２つのサブコンポーネントを含む。
【００５５】
実線矢印７０４は、１つのグローバル状態から別のグローバル状態へ、および各サブコンポーネント状態から別のサブコンポーネント状態への状態遷移を示している。ラベルがある破線７０６は、１つのサブコンポーネントの状態を前の状態にロールバックする回復手順を示す。例えば、手順ｐｒｏｃ２は、コンポーネントＣ１の状態を、状態Ｃ１ＢからＣ１Ａにロールバックする。
【００５６】
１つのグローバル状態から別のグローバル状態への遷移中に障害が発生した場合、プロビジョニング・サブシステムは、個別のコンポーネントの状態を前のコンポーネント状態にロールバックするアンドゥ手順を自動実行する。「アンドゥ」手順は、次の状態に移動した、または移動する途中のコンポーネントに対してのみ実行される。
【００５７】
すべてのサブコンポーネントが、次の状態に同時に遷移する必要はない。次の状態への遷移に関連するタスクを完了するのに必要なプロビジョニング・ステップに基づき、特有の順序依存性、すなわちコンポーネントおよび手順両方の依存性がある可能性がある。さらに、すべてのコンポーネントが、グローバル状態が変化するにつれて次の状態に遷移する必要はない。例えば、図７では、コンポーネントＣ３の状態は、グローバル状態が状態Ａから状態Ｂに遷移するとき、Ｃ３Ａのままである。
【００５８】
図８を参照する。状態遷移中の順序依存性の例が例示的に示されている。コンポーネントＣ１は、手順（ａ）実行の結果、中間状態Ｃ１Ｂ’に遷移する。次に、コンポーネントＣ２は、手順（ｂ）実行の結果、状態Ｃ２ＢからＣ２Ｃに遷移する。この遷移が完了した後、コンポーネントＣ１は、手順（ｃ）実行の結果、中間状態Ｃ１Ｂ’からＣ１Ｃに遷移する。コンポーネントＣ３は、手順（ｄ）実行の結果、Ｃ３ＡからＣ３Ｃに遷移する。ステップ（ａ）〜（ｄ）のうちいずれかが失敗すると、前のグローバル状態に達するよう、個別のロールバック手順（例えばｐｒｏｃ１’、ｐｒｏｃ１’’、ｐｒｏｃ２３、ｐｒｏｃ３３）が、逆の順序で実行される。
【００５９】
ソフトウェア・コンポーネントの再開可能なプロビジョニングのシステムおよび方法の好適な実施形態（実例となるものであり、制限的ではないもとする）について記載してきたが、当業者によって、上記の教示を踏まえて変更が加えられること、および変形物がつくられることが可能であることに留意されたい。したがって、当然のことながら、添付の特許請求の範囲によって示される本発明の範囲および意図の範囲内で、開示された特定の実施形態に変更が加えられてもよい。このように、本発明の各側面について、特許法により要求される細目および詳細事項とともに記載してきたが、特許請求され、特許証による保護が望まれる範囲は、添付の特許請求の範囲に記載されている。
【図１】
0005476316.tif 000002
【図２】
0005476316.tif 000003
【図３】
0005476316.tif 000004
【図４】
0005476316.tif 000005
【図５】
0005476316.tif 000006
【図６】
0005476316.tif 000007
【図７】
0005476316.tif 000008
【図８】
0005476316.tif 000009