説明

ソフトウェア・コンポーネントの再開可能なプロビジョニングのためのシステムおよび方法

【課題】ソフトウェア・コンポーネントの再開可能なプロビジョニングのシステムおよび方法を提供する。
【解決手段】状態と、分散型システムとを関連付け、コンポーネント状態を、遷移試行を取り消す回復を用いて遷移させるシステムおよび方法は、システムに関与する複数のコンポーネントの全体的なプロビジョニング状態を表すグローバル状態を定義することを含み、グローバル状態のセットが、プロビジョニング・チェックポイントとして用いられる。1つの状態から別の状態に遷移するための個別のソフトウェア・コンポーネント・メソッドが定義される。個別の状態が、グローバル状態に関連付けられる。障害が発生した場合に、ロールバック・メソッドによって目標のグローバル状態が前のグローバル状態にロールバックされることが可能な、該ロールバック・メソッドが定義される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピュータ・ネットワーク管理に関し、特に、ソフトウェア・コンポーネントの再開可能なプロビジョニングを提供するシステムおよび方法に関する。
【背景技術】
【0002】
データ・センタにおいてソリューションを展開するには、複数層にわたっていくつかのソフトウェア・コンポーネントをインストールおよび構成することが要求される。各ソフトウェア・コンポーネントが独立してインストールおよび構成される必要がある。このタスクは通常、手動で行われるか、または自動プロビジョニング用の、IBMのTivoli(IBM社の登録商標)Provisioning Manager(商標)などのツールを使用して行われる。いずれかのコンポーネントのインストール/構成中に障害が発生すると、そのプロビジョニング実行が破棄され、プロビジョニングが再開されることになる。これは、個別のコンポーネントが各構成を通してリンクし合っていることが多く、このことが選択的な構成解除/アンインストールを難しくするためである。
【0003】
単一プロセス・コンポーネントのチェックポイント/再開に対する従来の取り組みは、単一ノード環境内における、1つ以上の関連コンポーネントのインストールおよび障害回復に焦点を当てている。さらに、いくつかの関連技術の特許には、次のものが含まれる。「Apparatus and methods for controlling restart conditions of a faulted process」という題の米国特許第6,453,430号は、複数の多様な回復手順による、単一ノード内での処理障害の回復戦略に焦点を当てている。「Restart and recovery of OMG−compliant transaction systems」という題の米国特許第5,923,833号は、トランザクション・システムにおける再開および回復技術に焦点を当てている。「Scheme for restarting processes at distributed checkpoints in client−server computer system」という題の米国特許第6,026,499号は、1つのノードで障害が発生した場合に、複数のノードにわたってプロセスを再開する分散型の方法に焦点を当てており、プロビジョニング、グローバル状態(global state)の捕捉、またはロールバック機能の提供のプロセスは検討されていない。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】米国特許第6,453,430号
【特許文献2】米国特許第5,923,833号
【特許文献3】米国特許第6,026,499号
【発明の概要】
【発明が解決しようとする課題】
【0005】
障害の処理および再開可能性に対する従来の手法は、少なくとも、当該方法において一貫性のある分散したチェックポイントをとることが実行可能でないことが理由で、うまく作用しない。
【課題を解決するための手段】
【0006】
状態と、分散型システムとを関連付け、コンポーネント状態(component state)を、遷移試行(transitioning attempt)を取り消す回復を用いて遷移させるシステムおよび方法は、システムに関与する複数のコンポーネントの全体的なプロビジョニング状態を表すグローバル状態を定義することを含み、グローバル状態のセットが、プロビジョニング・チェックポイント(provisioning checkpoint)として用いられる。1つの状態から別の状態に遷移するための個別のソフトウェア・コンポーネント・メソッド(software component method)が定義される。個別の状態がグローバル状態に関連付けられる。障害が発生した場合に、ロールバック・メソッド(rollback method)によって目標のグローバル状態が前のグローバル状態にロールバックされることが可能な、該ロールバック・メソッドが定義される。
【0007】
これらの特徴および利点、ならびに他の特徴および利点が、その実例としての、以下の実施形態の詳細な説明から明らかとなる。この説明は添付の図面と併せて読むものとする。
【0008】
本開示は、以下の好適な実施形態の説明において、次の図面を参照しながら詳説を提供する。
【図面の簡単な説明】
【0009】
【図1】本原理による例示実施形態を実装するのに使用されるとよいネットワーク・データ処理システムを示すブロック図である。
【図2】本原理による例示実施形態を実装するのに使用されるとよいデータ処理システムのブロック図である。
【図3】本原理による例示実施形態を実装するのに使用されるとよいサービス配信環境の概略図である。
【図4】本原理による例示実施形態を実装するのに使用されるとよい多層モデルの例を示すブロック図である。
【図5】本原理による、関与するソフトウェア・コンポーネントの基本状態で構成されるグローバル状態を、1つのグローバル状態から次へ移行するコンポーネント・レベルの状態遷移およびロールバック・パターンとともに示す図である。
【図6】例示実施形態による、障害が発生したステップの回復ステップを含む複数のシステム状態を経て進行することで、分散型コンピューティング・ネットワークにおいてソフトウェア・コンポーネントをプロビジョニングするシステム/方法を示すブロック/フロー図である。
【図7】本原理による、関与するソフトウェア・コンポーネントの複数のコンポーネント状態または基本状態(elemental state)で構成されているグローバル状態のセットを管理する状態管理を、1つのグローバル状態から次へ移行するためのコンポーネント・レベルの状態遷移およびロールバック・パターンとともに示す図である。
【図8】本原理による、図5のグローバル状態を、複数のグローバル状態間を移行するためのコンポーネント・レベルの状態遷移およびロールバック遷移とともに示す別の図である。
【発明を実施するための形態】
【0010】
分散型コンピューティング・ネットワークにおけるコンピューティング・リソースの自動プロビジョニングのシステムおよび方法が提供される。これにはグローバル状態チェックポイントの使用が含まれ、障害が発生した場合にプロビジョニングの制御されたロールバックを行うことが可能になる。グローバル状態は、プロビジョニングに関与している複数のソフトウェア・コンポーネントの個別の状態を含む。1つのチェックポイントから次へ移行するプロビジョニング試行中に障害が発生した場合に、前のグローバル状態チェックポイントへ逆行するために必要なロールバック手順(単数または複数)が、各グローバル状態に関連付けられている。
【0011】
例示実施形態によれば、分散型コンピューティング・ネットワークにおけるコンピューティング・リソースの自動プロビジョニングの一方法は、自動プロビジョニング・プロセスの現行の状態を表す単一のグローバル状態の生成を含む。グローバル状態は、分散型コンピューティング・ネットワーク内のソフトウェア・コンポーネントの個別の状態を含む。グローバル状態は、分散型システム内の個別のソフトウェア・コンポーネントのインクリメンタル・プロビジョニング・ステップを通して1つの状態から次へ遷移する。各状態にはロールバック手順が関連付けられている。プロビジョニングで障害が発生した場合には、システムを前のシステム状態に戻すために、この関連付けられているロールバック手順を使用可能である。
【0012】
当然のことながら、本願明細書に記載される本発明の例示実施形態は、様々な形態のハードウェア、ソフトウェア、ファームウェア、専用プロセッサ、またはその組み合わせにおいて実装され得る。本発明の例示実施形態は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態、またはハードウェアおよびソフトウェア構成要素の両方を含む実施形態という形態をとり得る。
【0013】
さらに、本発明は、コンピュータもしくは任意の命令実行システムにより使用されるかまたはそれと関連して使用されるプログラム・コードを提供する、コンピュータ使用可能媒体またはコンピュータ可読媒体からアクセス可能な、コンピュータ・プログラム製品という形態をとることができる。本記載では、コンピュータ使用可能媒体またはコンピュータ可読媒体は、命令実行システム、装置もしくはデバイスによって、またはそれと関連して使用されるプログラムを、含むこと、格納すること、伝達すること、伝播させること、または移送することができる任意の装置とすることができる。媒体は、電子、磁気、光学、電磁気、赤外線または半導体のシステム(もしくは装置もしくはデバイス)または伝搬媒体とすることができる。コンピュータ可読媒体の例には、半導体または固体メモリ、磁気テープ、取り外し可能コンピュータ・ディスケット、ランダム・アクセス・メモリ(RAM:random access memory)、読み取り専用メモリ(ROM:read−only memory)、リジッド磁気ディスク、および光学ディスクが含まれる。光学ディスクの現時点における例には、コンパクト・ディスク読み取り専用メモリ(CD−ROM:compact disk−read only memory)、コンパクト・ディスク読み取り/書き込み(CD−R/W:compact disk−read/write)、およびDVD(digital versatile disc:デジタル多目的ディスク)が含まれる。
【0014】
例示実施形態は、例えば、コンピュータなど、命令のプログラムを実行することができるマシンにより読み取り可能なコンピュータのハード・ディスク・ドライブ、CD−ROM(コンパクト・ディスク読み取り専用メモリ)ドライブ、ならびに、CD、DVD(デジタル多目的ディスクまたはデジタル・ビデオ・ディスク(digital video disc))、ユニバーサル・シリアル・バス(USB:Universal Serial Bus)ドライブ、フレキシブル・ディスク、ディスケットおよびテープなどの取り外し可能な媒体など1つ以上のプログラム記憶デバイス上で有形に具現化されたアプリケーション・プログラムとして、ソフトウェア媒体において実装されてもよい。任意の適切なアーキテクチャを含む命令実行システム、装置またはデバイスにアプリケーション・プログラムがアップロードされること、およびそれによってアプリケーション・プログラムが実行されることが可能である。さらに、当然のことながら、添付の図面に示されている本発明の例示実施形態は、ソフトウェアにおいて実装され得るため、システム・コンポーネント間の実際の接続(またはプロセス・ステップのフロー)は、アプリケーションがプログラムされている様式次第で異なってもよい。好適な実施形態では、本発明はソフトウェアにおいて実装され、ソフトウェアは、次に限定されるものではないが、ファームウェア、常駐ソフトウェア、マイクロコードなどを含み得る。
【0015】
プログラム・コードの格納または実行あるいはその両方に適したデータ処理システムには、システム・バスを介してメモリ素子に直接または間接的に結合された少なくとも1つのプロセッサが含まれると考えられる。メモリ素子は、プログラム・コードを実際に実行する間に用いられるローカル・メモリ、大容量記憶装置、および、実行中にコードが大容量記憶装置から読み出される回数を減らすために少なくとも一部のプログラム・コードの一時的な記憶装置となるキャッシュ・メモリを含み得る。入出力、すなわちI/O(Input/Output)デバイス(限定されるものではないが、キーボード、ディスプレイ、ポインティング・デバイスなどを含む)は、直接、または介在するI/Oコントローラを介して、システムに結合されているとよい。
【0016】
さらにネットワーク・アダプタがシステムに結合され、データ処理システムが、介在する私設または公衆ネットワークを介して他のデータ処理システムまたはリモート・プリンタまたは記憶デバイスに結合できるようにするとよい。モデム、ケーブル・モデムおよびイーサネット(R)カードが、現在利用可能な種類のネットワーク・アダプタのごく一部である。
【0017】
以下、図面を参照するが、図面では、同じ数字は同じ構成要素または類似した構成要素を表している。まず図1を参照する。本発明の例示実施形態を実装するのに使用されるとよいネットワーク・データ処理システム100が、例示的に示されている。ネットワーク・データ処理システム100は、適切な任意のコンピュータを使用して実装できるコンピュータ104、106、110、112、114…のネットワークを含む。ネットワーク・データ処理システム100は、例えば、パーソナル・コンピュータ、ワークステーション、またはメインフレームを含むとよい。ネットワーク・データ処理システム100は、ネットワーク上の各コンピュータまたはプロセスがクライアントまたはサーバのいずれかであるクライアント−サーバ・ネットワーク・アーキテクチャを採用するとよい。
【0018】
ネットワーク・データ処理システム100は、ネットワーク・データ処理システム100内の様々なデバイスおよびコンピュータ間の通信リンクを提供するために使用される媒体であるネットワーク102を含む。ネットワーク102は、ワイヤ、ワイヤレス通信リンク、光ファイバ・ケーブル、電話による接続、または他の通信リンク、あるいはそのいずれかの組み合わせなど、様々な接続を含み得る。
【0019】
様々なサーバ、クライアント、およびその他のデバイスが、ネットワーク102に接続できる。例えば、図1に示されているように、記憶ユニット108ならびにクライアント110、112、および114に加えて、サーバ104およびサーバ106が、ネットワーク102に接続されているとよい。記憶ユニット108は、例えば、コンピュータのハード・ディスク・ドライブ、CD−ROMドライブ、または取り外し可能な媒体、あるいはそのいずれかの組み合わせなど、様々な種類の記憶媒体を含むとよく、取り外し可能な媒体とは、例えばCD、DVD、USBドライブ、フレキシブル・ディスク、ディスケット、またはテープあるいはそのいずれかの組み合わせなどである。クライアント110、112および114は、例えば、パーソナル・コンピュータまたはネットワーク・コンピュータ、あるいはその両方とするとよい。
【0020】
クライアント110は、パーソナル・コンピュータとしてもよい。クライアント110は、処理ユニットおよびメモリ・デバイスを含むシステム・ユニットと、ビデオ・ディスプレイ端末と、キーボードと、フレキシブル・ディスク・ドライブおよびその他の種類の常設または取り外し可能な記憶媒体などの記憶デバイスと、マウスなどのポインティング・デバイスとを含むとよい。例えばジョイスティック、タッチパッド、タッチスクリーン、トラックボール、マイクロホン、および同様のものなど、さらなる入力デバイスがクライアント110に含まれていてもよい。
【0021】
クライアント110、112、および114は、例えば、サーバ104に対するクライアントとしてもよい。サーバ104は、ブート・ファイル、オペレーティング・システム・イメージ、およびアプリケーションなどのデータをクライアント110、112、および114に提供するとよい。ネットワーク・データ処理システム100は、図示されていない他のデバイスを含んでもよい。
【0022】
ネットワーク・データ処理システム100は、インターネットを含むことができ、例えば、ネットワーク102は、伝送制御プロトコル/インターネット・プロトコル(TCP/IP:Transmission Control Protocol/Internet Protocol)スイートのプロトコルを使用して相互通信するネットワークおよびゲートウェイの世界的規模の集合を表す。インターネットは、データおよびメッセージをルーティングする多数の商用、政府機関用、教育関連、およびその他のコンピュータ・システムを含む主要ノードまたはホスト・コンピュータ間の、高速データ通信回線のバックボーンを含む。
【0023】
ネットワーク・データ処理システム100は、例えばイントラネット、ローカル・エリア・ネットワーク(LAN:local area network)、または広域ネットワーク(WAN:wide area network)、あるいはそのいずれかの組み合わせなど、適切な任意の種類のネットワークとして実装されるとよい。図1のネットワーク・データ処理構成要素は、例示を意図したものであり、本発明の実施形態のアーキテクチャを制限するものではない。
【0024】
図2を参照する。例示実施形態を実装するために使用されるとよいデータ処理システム200のブロック図が、例示的に示されている。データ処理システム200は、図1のサーバ104またはクライアント110などのコンピュータの例であり、ここに本原理によるプロセスを実装するコンピュータ使用可能コードまたは命令があるとよい。
【0025】
この例では、データ処理システム200は、ノース・ブリッジおよびメモリ・コントローラ・ハブ(NB/MCH:north bridge and memory controller hub)202ならびにサウス・ブリッジおよび入出力(I/O)コントローラ・ハブ(SB/ICH:south bridge and input/output(I/O)controller hub)204を含むハブ・アーキテクチャを採用している。1つ以上のプロセッサを含むとよい処理ユニット206、メイン・メモリ208、およびグラフィックス・プロセッサ210が、ノース・ブリッジおよびメモリ・コントローラ・ハブ202に結合されている。グラフィックス・プロセッサ210は、アクセラレーテッド・グラフィックス・ポート(AGP:accelerated graphics port)を介してNB/MCH202に結合されてもよい。データ処理システム200は、例えば、処理ユニット206内に複数のプロセッサを含む対称型マルチプロセッサ(SMP:symmetric multiprocessor)システムとしてもよい。データ処理システム200は、単一プロセッサ・システムとしてもよい。
【0026】
ローカル・エリア・ネットワーク(LAN)アダプタ212が、サウス・ブリッジおよびI/Oコントローラ・ハブ204に結合されている。オーディオ・アダプタ216、キーボードおよびマウス・アダプタ220、モデム222、読み出し専用メモリ(ROM)224、ユニバーサル・シリアル・バス(USB)ポートおよびその他の通信ポート232、ならびにPCI/PCIe(PCI Express)デバイス234が、バス238を介してサウス・ブリッジおよびI/Oコントローラ・ハブ204に結合され、ハード・ディスク・ドライブ(HDD:hard disk drive)226ならびにCD−ROMドライブ230が、バス240を介してサウス・ブリッジおよびI/Oコントローラ・ハブ204に結合されている。
【0027】
PCI/PCIeデバイスの例には、イーサネット(R)アダプタ、アドイン・カード、およびノートブック・コンピュータ用のPCカードがある。一般に、PCIはカード・バス・コントローラを使用するが、PCIeはカード・バス・コントローラを使用しない。ROM224は、例えばフラッシュ・バイナリ入出力システム(BIOS:binary input/output system)としてもよい。ハード・ディスク・ドライブ226およびCD‐ROMドライブ230は、例えば、統合ドライブ・エレクトロニクス(IDE:integrated drive electronics)またはシリアル・アドバンスト・テクノロジ・アタッチメント(SATA:serial advanced technology attachment)インターフェースを使用してもよい。スーパーI/O(SIO:super I/O)デバイス236が、サウス・ブリッジおよびI/Oコントローラ・ハブ204に結合されているとよい。
【0028】
オペレーティング・システムは、処理ユニット206上で実行されるとよく、データ処理システム200内の様々なコンポーネントを連携させ、その制御を実現する。例えば、オペレーティング・システムは、Microsoft(R)Windows(R)XP(MicrosoftおよびWindowsは、Microsoft Corporationの商標または登録商標)などの市販のオペレーティング・システムとするとよい。
【0029】
Java(商標)プログラミング・システムなどのオブジェクト指向プログラミング・システムが、オペレーティング・システムとともに実行されてもよく、データ処理システム200上で実行されているJavaプログラムまたはアプリケーションからオペレーティング・システムへのコールを実現する(JavaおよびJavaに基づくすべての商標は、Sun Microsystems,Inc.の商標または登録商標である)。
【0030】
オペレーティング・システム、オブジェクト指向プログラミング・システム、およびアプリケーションの命令、または命令のプログラム、あるいはそのいずれかの組み合わせは、例えばハード・ディスク・ドライブ226などの記憶デバイスにあり、処理ユニット206による実行のためにメイン・メモリ208にロードされるとよい。例示実施形態のプロセスは、コンピュータ使用可能プログラム・コードを使用して処理ユニット206により実行されるとよく、コードは、例えばメイン・メモリ208、読み出し専用メモリ224などのメモリまたは1つ以上の周辺デバイスにあるとよい。
【0031】
当然のことながら、図1および2に示されているハードウェアは、実装に応じて異なってもよい。フラッシュ・メモリ、等価な不揮発性メモリ、もしくは光ディスク・ドライブおよび同様のものなど、他の内部ハードウェアまたは周辺デバイスが、示されているハードウェアに加えて、またはその代わりに使用されてもよい。本原理による実施形態のプロセスは、マルチプロセッサ・データ処理システムに適用されてもよい。
【0032】
データ処理システム200は、様々な形態をとり得る。例えば、データ処理システム200は、タブレット・コンピュータ、ラップトップ・コンピュータ、または電話機としてもよい。データ処理システム200は、例えば携帯情報端末(PDA:personal digital assistant)としてもよい。PDAは、オペレーティング・システム・ファイルまたはユーザ生成データ、あるいはその両方を格納する不揮発性メモリを提供するフラッシュ・メモリを備えた構成であるとよい。データ処理システム200内のバス・システムは、システム・バス、I/Oバス、およびPCIバスなど、1つ以上のバス238、240を含むとよい。当然のことながら、バス・システムは、通信構造またはアーキテクチャに結合された種々のコンポーネントまたはデバイス間のデータ転送を提供する、任意の種類の通信構造またはアーキテクチャを使用して実装されるとよい。通信ユニットは、モデム222またはネットワーク・アダプタ212など、データの送受信に使用される1つ以上のデバイスを含むとよい。メモリは、例えば、メイン・メモリ208、ROM224、またはノース・ブリッジおよびメモリ・コントローラ・ハブ202にあるようなキャッシュとしてもよい。処理ユニット206は、1つ以上のプロセッサ、すなわちCPUを含むとよい。
【0033】
例示実施形態による自動プロビジョニングの方法は、図1に示されているデータ処理システム100または図2に示されているデータ処理システム200などのデータ処理システムにおいて実行されるとよい。
【0034】
命令のプログラムの格納または実行あるいはその両方に適しているデータ処理システムは、システム・バスによってメモリ素子に直接または間接的に結合された1つ以上のプロセッサを含み得る。メモリ素子は、プログラム・コードを実際に実行する間に用いられるローカル・メモリと、大容量記憶装置と、実行中に大容量記憶装置からコードを読み出さなければならない回数を減らすために少なくとも一部のプログラム・コードの一時的な記憶装置となるキャッシュ・メモリとを含むことができる。
【0035】
データ処理システム200は、例えばキーボード、ディスプレイ、およびポインティング・デバイスなどの入出力(I/O)デバイスを含むとよく、これは、直接または介在するI/Oコントローラを介してシステムに結合されているとよい。さらにネットワーク・アダプタがシステムに結合され、データ処理システムが、介在する私設または公衆ネットワークを介して他のデータ処理システムまたはリモート・プリンタまたは記憶デバイスに結合できるようにするとよい。ネットワーク・アダプタは、限定されるものではないが、モデム、ケーブル・モデムおよびイーサネット(R)カードを含む。
【0036】
図3を参照する。一例示実施形態を実装するために使用されるとよいサービス配信環境300の略図が、例示的に示されている。サービス配信環境300は、複数の物理サーバのファーム(farm)302、DMZ(demilitarized zone:非武装地帯)306、および複数の管理サーバ312を含む。「非武装地帯」という用語、または「DMZ」という頭字語は、組織の内部ネットワークと、インターネットなどの外部ネットワークとの間に位置するネットワーク領域を指す。
【0037】
インターネットまたはイントラネットからのユーザ・リクエストは、ルータ・デバイスによって受信される。例えば、ルータ・デバイスは、DMZ306内にあってもよい。ルータ・デバイスは、IBMのWebSeal(商標)製品などのリバース・プロキシによって実装されてもよい。
【0038】
ユーザ・リクエストは、ネットワーク308を介して、サーバ・ファーム(server farm)302上で実行されている実または仮想マシン310の集合でホストされているプロビジョニング・ソリューションへ送られるとよい。サーバ・ファーム302の管理に使用可能な管理サーバ312が、ネットワーク308を介して物理サーバ302に結合されている。管理サーバ312は、システム・アドミニストレータ304によって、サーバ・ファームの管理および監視に使用されるとよい。管理サーバ312上で実行されているソフトウェアが、ソフトウェア・メータリング、アプリケーション・プロビジョニング、すべての(または選択された)アプリケーションの監視、およびサーバ・ファームの問題判別などの様々なタスクを支援するとよい。
【0039】
本原理による例示実施形態を実装するために使用されるとよい多層システムの例を示すブロック/フロー図である図4を参照する。示されているモデルは3層モデル400である。各層は、それ自体が多層であってもよい(その場合、全体的なアーキテクチャが「n層アーキテクチャ」と呼ばれる)。ロジック層を様々な形で物理的に実装することができる。例えば、3層すべてが別々のサーバに物理的に実装されてもよく、これにより、拡張性の向上、および同時により多くのクライアント・リクエストを処理する能力をもたらすことができる。
【0040】
第1層402は、プレゼンテーションまたはウェブ層であり、ユーザ向けに様々な形式でコンテンツを動的に生成する。プレゼンテーション層402は、ユーザとビジネス層404との間のインタラクションを処理するコンポーネントを含む。プレゼンテーション層402とのユーザ・インタラクションは、ウェブ・ブラウザを介するとよい。例えば、HTMLベースのフロント・エンドをサポートするウェブ・ブラウザがウェブ・サーバと通信して、ウェブ・サーバが、変更されたウェブ・ページまたは新たなウェブ・ページをユーザに対し送り返す。当然のことながら、ウェブ・サーバは、様々な手法を用いてユーザ・リクエストに応じることができる。当該手法には、次に限定されるものではないが、共通ゲートウェイ・インターフェース(CGI:Common Gateway Interface)、Microsoftのアクティブ・サーバ・ページ(ASP:Active Server Page)、およびJavaサーバ・ページ(JSP:Java Server Page)がある。プレゼンテーション層(402)のコンポーネントには、HTMLページと、イメージと、ポートレットまたはサーブレットあるいはその両方などのHTMLページを表示および処理するためのコンピュータ可読コードとが含まれるとよい。
【0041】
第2層404は、アプリケーションまたはビジネス層である。ビジネス層404のコンポーネントは、クライアント・リクエストを処理し、アプリケーションのビジネス・ロジックを提供する。ビジネス・ロジックは、特定のアプリケーション・ドメインに機能性を提供するコンピュータ可読コードを含む。ビジネス・ロジックは、実際のJ2EE(Java 2 Platform,Enterprise Edition:Java2プラットフォーム・エンタープライズ・エディション)アプリケーション、またはプロビジョニング・ソリューションに特有の機能性を実行するビジネス・プロセスによって具現化されるとよい。
【0042】
第3層406はデータベース層である。データベース層406は、データと、データベース管理ソフトウェアなど、データへのアクセスを管理および提供するコンポーネントとを含む。
【0043】
図5を参照する。本原理による、個別の複数ソフトウェア・コンポーネント状態で構成されたグローバル状態の例が例示的に示されている。グローバル状態502は、一組のコンポーネント状態508、510、および512で構成されている。システムのプロビジョニングには、各コンポーネントの、508から514へ、510から516へ、および512から518への個別の状態遷移によって、状態502から状態504にグローバル状態を移行させることが含まれる。508および510から新たなグローバル状態504へと遷移するコンポーネントCとCとの間の順序依存性が原因で、コンポーネントC1Bは、中間状態(C1B’)506を経て移行する。
【0044】
実際には、例示の方法は、複数の個別コンポーネント状態を表す組として、コンポーネント状態を捕捉する。有効な状態の例示のセットには、NotInstalled、Installed、Started、Phase<n>、Completedが含まれると考えられ、Phase<n>はコンポーネント特有である。図5では、コンポーネント[C,C,C]のグローバル状態B(502)は、[Installed,Installed,NotInstalled]であり得る。Cの部分的遷移によって表される中間状態(506)は、[Started,Installed,NotInstalled]であり得る。最後のグローバル状態C(504)は、[Phase1,Phase1,Installed]であり得る。
【0045】
図6は、例示実施形態による、分散型コンピューティング・ネットワークにおけるコンピューティング・リソースの自動プロビジョニングの方法を示すフロー図である。
【0046】
図6を参照する。プロビジョニング・リクエストが、ブロック602で受信される。ブロック604は、システムを構成する各コンポーネントの現在の状態を検査することによって、システムの初期グローバル状態を確立する。例えば、個別のソフトウェア・コンポーネントは、プロビジョニング・リクエストの前に展開および構成されているとよい。ブロック606は、システム内の各ソフトウェア・コンポーネントの現在の状態を調べて、次のグローバル状態に移行するのに必要な個別のステップと、当該ステップ間の順序依存性とを特定する。
【0047】
ブロック608は、ブロック606で特定された実際のプロビジョニング・ステップを開始する。このステップは、状態遷移方法で定義された任意の順序依存性を保持しながら、順次実行されても、または並行して実行されてもよい。ブロック610は、個別のコンポーネント状態遷移の成功を調べ、新たなグローバル状態が実現されたかどうかを判断する。
【0048】
いずれかのブロックで障害が発生すると、グローバル状態遷移全体が失敗したということであり、ロールバック手順の開始が必要となる。ロールバック手順はブロック616から始まる。ブロック616は、試行された、ロールバックが必要な個別のコンポーネント状態遷移を特定する。ブロック618は、ブロック616で特定された、前のグローバル状態チェックポイントへと逆行するために必要なロールバック・ステップを開始する。
【0049】
既知状態にロールバックした後、障害の原因が、プロビジョニング・プロセスの外部での手動または自動介入によって修正されるとよい。ブロック620は、問題が修正されたかどうかの判断である。修正されていない場合、ブロック622に示されているように、システムは、既知の障害状態のままとなる。問題が修正されている場合には、制御はブロック606に戻る。
【0050】
ブロック610で、状態遷移分析が成功すると、ブロック612で、プロビジョニング・リクエストのさらなる評価が行われ、別のグローバル状態遷移が必要であるかどうかが判断されることになる。別のグローバル状態遷移が必要であれば、制御はブロック606に返される。ブロック612で、さらなる状態遷移が必要でなければ、ブロック614に表されているように、システムのプロビジョニングが成功したことになる。
【0051】
実際には、例示の方法は、対象の環境を検査することによって、初期のコンポーネント状態を特定する。プロビジョニング・ロジックは、グローバル状態の定義と、遷移ステップのセットとを、メタデータ定義によって組み込む。プロビジョニング・ロジックは、初期コンポーネント状態を所与として、次のグローバル状態を判断する。その状態に達するために必要な各遷移ステップが開始される。すべてのステップが成功すれば、新たなグローバル状態に達する。残っているグローバル状態があれば、このパターンが繰り返される。ステップが失敗した場合、そのグローバル状態遷移に関連付けられているロールバック・ステップが開始される。障害の原因の自動修正によって、プロビジョニング・プロセスが、前のグローバル状態から再開可能となる。原因が修正されなければ、前のグローバル状態にて、プロビジョニング全体が失敗状態のままとなる。
【0052】
以下、本原理による、より詳しい例を提示する。個別のソフトウェア・コンポーネントの状態がプロビジョニング・プロセスの単一のグローバル状態にリンクされる、状態に基づく手法について記載する。ソリューションのプロビジョニングは、プロビジョニングが進むにつれて1つの状態から別の状態へ遷移する。ソフトウェア・コンポーネントの各状態には、自動回復に使用されるロールバック手順が関連付けられている。
【0053】
障害が発生すると、分散型システムの状態は、グローバル状態によって表される各ソフトウェア・コンポーネントに関連付けられている「アンドゥ」手順を実行することによって、前の一貫した状態にロールバックされる。グローバル状態は、手動での回復のためにソフトウェア・コンポーネントの現在の状態を理解する手がかりとなる。
【0054】
図7を参照する。実例としての実施形態による状態管理が示されている。各グローバル状態702は、そのサブコンポーネントCの複合状態である。例えば、初期状態(702)は、状態C10およびC20に2つのサブコンポーネントを含む。
【0055】
実線矢印704は、1つのグローバル状態から別のグローバル状態へ、および各サブコンポーネント状態から別のサブコンポーネント状態への状態遷移を示している。ラベルがある破線706は、1つのサブコンポーネントの状態を前の状態にロールバックする回復手順を示す。例えば、手順proc2は、コンポーネントCの状態を、状態C1BからC1Aにロールバックする。
【0056】
1つのグローバル状態から別のグローバル状態への遷移中に障害が発生した場合、プロビジョニング・サブシステムは、個別のコンポーネントの状態を前のコンポーネント状態にロールバックするアンドゥ手順を自動実行する。「アンドゥ」手順は、次の状態に移動した、または移動する途中のコンポーネントに対してのみ実行される。
【0057】
すべてのサブコンポーネントが、次の状態に同時に遷移する必要はない。次の状態への遷移に関連するタスクを完了するのに必要なプロビジョニング・ステップに基づき、特有の順序依存性、すなわちコンポーネントおよび手順両方の依存性がある可能性がある。さらに、すべてのコンポーネントが、グローバル状態が変化するにつれて次の状態に遷移する必要はない。例えば、図7では、コンポーネントCの状態は、グローバル状態が状態Aから状態Bに遷移するとき、C3Aのままである。
【0058】
図8を参照する。状態遷移中の順序依存性の例が例示的に示されている。コンポーネントCは、手順(a)実行の結果、中間状態C1B’に遷移する。次に、コンポーネントCは、手順(b)実行の結果、状態C2BからC2Cに遷移する。この遷移が完了した後、コンポーネントCは、手順(c)実行の結果、中間状態C1B’からC1Cに遷移する。コンポーネントCは、手順(d)実行の結果、C3AからC3Cに遷移する。ステップ(a)〜(d)のうちいずれかが失敗すると、前のグローバル状態に達するよう、個別のロールバック手順(例えばproc1’、proc1’’、proc23、proc33)が、逆の順序で実行される。
【0059】
ソフトウェア・コンポーネントの再開可能なプロビジョニングのシステムおよび方法の好適な実施形態(実例となるものであり、制限的ではないもとする)について記載してきたが、当業者によって、上記の教示を踏まえて変更が加えられること、および変形物がつくられることが可能であることに留意されたい。したがって、当然のことながら、添付の特許請求の範囲によって示される本発明の範囲および意図の範囲内で、開示された特定の実施形態に変更が加えられてもよい。このように、本発明の各側面について、特許法により要求される細目および詳細事項とともに記載してきたが、特許請求され、特許証による保護が望まれる範囲は、添付の特許請求の範囲に記載されている。

【特許請求の範囲】
【請求項1】
状態と、分散型システムとを関連付け、コンポーネント状態を、遷移試行を取り消す回復能力を用いて遷移させる方法であって、
分散型システムに関与する複数のコンポーネントの全体的なプロビジョニング状態を表すグローバル状態を定義するステップであって、グローバル状態のセットが、プロビジョニング・チェックポイントとして用いられる、前記ステップと、
1つの状態から別の状態に遷移するための個別のソフトウェア・コンポーネント・メソッドを定義するステップと、
前記コンポーネントの個別の状態と、グローバル状態とを関連付けるステップと、
障害が発生した場合に、ロールバック・メソッドによって目標のグローバル状態が前のグローバル状態にロールバックされることが可能な、前記ロールバック・メソッドを定義するステップと、
を含む方法。
【請求項2】
ロールバック・メソッドを定義するステップは、前記障害が発生した遷移において開始された個別のコンポーネント遷移すべてをロールバックする単一プロセスを定義するステップを含む、請求項1に記載の方法。
【請求項3】
ロールバック・メソッドを定義するステップは、コンポーネント・レベルでの個別の状態遷移アクティビティに関連付けられた個別のロールバック手順を定義するステップを含む、請求項1に記載の方法。
【請求項4】
初期のグローバル状態から次のグローバル状態に直接、単一ステップでコンポーネントを遷移させるステップをさらに含む、請求項1に記載の方法。
【請求項5】
いずれのグローバル状態チェックポイントの一部でもない中間のコンポーネント・レベル状態にコンポーネントを遷移させるステップをさらに含む、請求項1に記載の方法。
【請求項6】
1つのグローバル状態チェックポイントから別のグローバル状態チェックポイントに移行するコンポーネント間に何らの順序依存性も保持せずに、前記コンポーネントを遷移させるステップをさらに含む、請求項1に記載の方法。
【請求項7】
1つのグローバル状態チェックポイントから別のグローバル状態チェックポイントに移行するコンポーネント間に順序依存性を保持しながら、前記コンポーネントを遷移させるステップをさらに含む、請求項1に記載の方法。
【請求項8】
障害の原因を判断するステップ
をさらに含み、
障害の前記原因が判断されれば、状態間の遷移を継続し、
判断されなければ、前記システムは既知の障害状態のままとなる、
請求項1に記載の方法。
【請求項9】
状態と、分散型システムとを関連付け、コンポーネント状態を、遷移試行を取り消す回復を用いて遷移させるコンピュータ可読プログラムを含むコンピュータ可読媒体であって、前記コンピュータ可読プログラムは、コンピュータ上で実行されると、前記コンピュータに、
分散型システムに関与する複数のコンポーネントの全体的なプロビジョニング状態を表すグローバル状態を定義するステップであって、グローバル状態のセットが、プロビジョニング・チェックポイントとして用いられる、前記ステップと、
1つの状態から別の状態に遷移するための個別のソフトウェア・コンポーネント・メソッドを定義するステップと、
前記コンポーネントの個別の状態と、グローバル状態とを関連付けるステップと、
障害が発生した場合に、ロールバック・メソッドによって目標のグローバル状態が前のグローバル状態にロールバックされることが可能な、前記ロールバック・メソッドを定義するステップと、
を実行させる、コンピュータ可読媒体。
【請求項10】
ロールバック・メソッドを定義するステップは、前記障害が発生した遷移において開始された個別のコンポーネント遷移すべてをロールバックする単一プロセスを定義することを含む、請求項9に記載のコンピュータ可読媒体。
【請求項11】
ロールバック・メソッドを定義するステップは、コンポーネント・レベルでの個別の状態遷移アクティビティに関連付けられた個別のロールバック手順を定義することを含む、請求項9に記載のコンピュータ可読媒体。
【請求項12】
初期のグローバル状態から次のグローバル状態に直接、単一ステップでコンポーネントを遷移させることをさらに含む、請求項9に記載のコンピュータ可読媒体。
【請求項13】
いずれのグローバル状態チェックポイントの一部でもない中間のコンポーネント・レベル状態にコンポーネントを遷移させることをさらに含む、請求項9に記載のコンピュータ可読媒体。
【請求項14】
1つのグローバル状態チェックポイントから別のグローバル状態チェックポイントに移行するコンポーネント間に何らの順序依存性も保持せずに、前記コンポーネントを遷移させることをさらに含む、請求項9に記載のコンピュータ可読媒体。
【請求項15】
1つのグローバル状態チェックポイントから別のグローバル状態チェックポイントに移行するコンポーネント間に順序依存性を保持しながら、前記コンポーネントを遷移させることをさらに含む、請求項9に記載のコンピュータ可読媒体。
【請求項16】
障害の原因を判断すること
をさらに含み、
障害の前記原因が判断されれば、状態間の遷移を継続し、
判断されなければ、前記システムは既知の障害状態のままとなる、
請求項9に記載のコンピュータ可読媒体。
【請求項17】
分散型コンピューティング・ネットワークにおけるコンピューティング・リソースのプロビジョニングのための自動プロビジョニング・システムであって、
複数のグローバル状態であって、グローバル状態はそれぞれ、分散型システムに関与する複数のコンポーネントの全体的なプロビジョニング状態を表し、グローバル状態のセットが、プロビジョニング・チェックポイントとして用いられる、前記グローバル状態と、
複数の個別の状態であって、個別の状態はそれぞれ、グローバル状態と関連付けられ、個別のソフトウェア・コンポーネント・メソッドを有し、前記個別のソフトウェア・コンポーネント・メソッドは、前記個別の状態の1つの状態から別の状態への遷移を可能にするよう構成されている、前記個別の状態と、
障害が発生した場合に、ロールバック・メソッドによって目標のグローバル状態が前のグローバル状態にロールバックされることが可能な、前記ロールバック・メソッドと、
を含むシステム。
【請求項18】
前記ロールバック・メソッドは、前記障害が発生した遷移において開始された個別のコンポーネント遷移すべてをロールバックする単一プロセスを含む、請求項17に記載のシステム。
【請求項19】
前記ロールバック・メソッドは、コンポーネント・レベルでの個別の状態遷移アクティビティに関連付けられた個別のロールバック手順を含む、請求項17に記載のシステム。
【請求項20】
前記複数のコンポーネントは、初期のグローバル状態から次のグローバル状態に直接、単一ステップで遷移させられるように構成されているコンポーネントを含む、請求項17に記載のシステム。
【請求項21】
前記複数のコンポーネントは、いずれのグローバル状態チェックポイントの一部でもない中間のコンポーネント・レベル状態において遷移させられるよう構成されているコンポーネントを含む、請求項17に記載のシステム。
【請求項22】
前記複数のコンポーネントは、1つのグローバル状態チェックポイントから別のグローバル状態チェックポイントに移行するコンポーネント間に何らの順序依存性も保持せずに遷移させられるよう構成されている前記コンポーネントを含む、請求項17に記載のシステム。
【請求項23】
前記複数のコンポーネントは、1つのグローバル状態チェックポイントから別のグローバル状態チェックポイントに移行するコンポーネント間に順序依存性を保持しつつ遷移させられるよう構成されている前記コンポーネントを含む、請求項17に記載のシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公表番号】特表2011−510381(P2011−510381A)
【公表日】平成23年3月31日(2011.3.31)
【国際特許分類】
【出願番号】特願2010−542361(P2010−542361)
【出願日】平成21年1月9日(2009.1.9)
【国際出願番号】PCT/US2009/030530
【国際公開番号】WO2009/089408
【国際公開日】平成21年7月16日(2009.7.16)
【出願人】(390009531)インターナショナル・ビジネス・マシーンズ・コーポレーション (4,084)
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MASCHINES CORPORATION
【Fターム(参考)】