(57)【要約】  コンピューティングシステムを、ユーザ要件に基づいて動的に構成し、割り当て、展開することができる。例えば、ユーザは、動的な構成、割当て、および展開のために複数のサーバーを要求することができる。実施形態は、サーバーのクラスタなどの１つまたは複数のコンピューティングシステムを使用して、ユーザが、コードおよびプログラムをテストし、コードおよびプログラムをデバッグし、および／または、他の構成オペレーションおよびテストオペレーションを実行するためのすばやく効率的な方法を提供する。予約済みシステムは、ユーザ要求による必要なコードおよび／またはコンテンツを用いて動的に構成される。システムの予約されたクラスタは、予約が満了すると使用可能プールに返され、返されたシステムを後続の予約に使用することが可能になる。
2010503074.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク内の１つまたは複数のコンピューティングシステムを動的に展開するシステムであって、
複数のストアドプロシージャと、構成状況、可用性状況、および展開状況のうちの少なくとも１つを含む情報とを含む、データベースコンポーネントと、
実行する１つまたは複数のタスクに関して前記データベースコンポーネントと通信する、オペレーティングシステムサービスコンポーネントと、
前記データベースコンポーネントと前記オペレーティングシステムサービスコンポーネントとの間の通信インターフェースを提供するウェブサービスコンポーネントと
を備え、
該コンポーネントは、前記１つまたは複数のコンピューティングシステムを構成し、割り当てることを含め、前記１つまたは複数のコンピューティングシステムを展開するためにともに動作することを特徴とするシステム。
【請求項２】
データベースは、展開構成に関連付けられた情報を含み、前記情報は、システムの役割およびシステムのタイプのうちの少なくとも１つをさらに含むことを特徴とする請求項１に記載のシステム。
【請求項３】
データベースは、テスト構成およびデバッグ構成のうちの少なくとも１つに関連付けられた情報を含むことを特徴とする請求項２に記載のシステム。
【請求項４】
前記システムのタイプは、基本、オフィス、プライベートリリース、および複製クラスタのうちの少なくとも１つから選択されることを特徴とする請求項２に記載のシステム。
【請求項５】
１つまたは複数の構成プロシージャ、割当てプロシージャ、および展開プロシージャを実行するスクリプトコンポーネントをさらに含み、前記スクリプトコンポーネントは、少なくとも１つのイベントに関連付けられた少なくとも１つのスクリプトを含み、前記少なくとも１つのスクリプトは、少なくとも１つのイベントの発生に関連して実行されることを特徴とする請求項１に記載のシステム。
【請求項６】
前記少なくとも１つのスクリプトは、オペレーティングシステム（ＯＳ）インストールスクリプト、デバッギングツールインストールスクリプト、タイプスクリプト、および役割スクリプトのうちの少なくとも１つから選択されることを特徴とする請求項５に記載のシステム。
【請求項７】
前記オペレーティングシステムサービスは、さらに、前記展開が完了して使用の準備ができていることの電子通知を、少なくとも１人のユーザに提供するように構成されることを特徴とする請求項１に記載のシステム。
【請求項８】
複数のサーバーの共通プール、および予約アルゴリズムをさらに含み、サーバープールの少なくとも１つのサーバーは、前記予約アルゴリズムに部分的に基づいて予約されることを特徴とする請求項１に記載のシステム。
【請求項９】
前記予約アルゴリズムは、空きサーバーと、該空きサーバーが使用不能であるときは予約された複数のサーバー間の時間の長さとのうち少なくとも１つに基づいて、前記少なくとも１つのサーバーを割り当てるように構成されることを特徴とする請求項８に記載のシステム。
【請求項１０】
実行されると、
展開タイプ、展開開始時刻、および展開終了時刻のうちの少なくとも１つを含む展開入力を使用して、サーバープールの少なくとも１つのサーバーを構成することと、
前記展開入力に部分的に基づいて前記少なくとも１つのサーバーの可用性を判定することと、
前記サーバープールの前記少なくとも１つのサーバーが使用可能である場合は、前記展開入力を格納することと、
前記少なくとも１つのサーバーの前記可用性に部分的に基づいて、前記展開入力に従って前記少なくとも１つのサーバーを動的に構成することを含め、前記サーバープールの前記少なくとも１つのサーバーを展開することと
によって前記サーバープールから前記少なくとも１つのサーバーを割り当てる、実行可能命令を含むことを特徴とするコンピューター読取可能媒体。
【請求項１１】
前記命令は、実行されると、展開タイプ入力を使用することによってサーバープールから少なくとも１つのサーバーを割り当て、前記展開タイプ入力は、基本タイプ、オフィスタイプ、プライベートリリースタイプ、および複製クラスタタイプのうちの少なくとも１つから選択されることを特徴とする請求項１０に記載のコンピューター読取可能媒体。
【請求項１２】
前記命令は、実行されると、前記展開タイプのサーバーの数に関連する数の入力を使用することによって、サーバープールから少なくとも１つのサーバーを割り当てることを特徴とする請求項１１に記載のコンピューター読取可能媒体。
【請求項１３】
前記命令は、実行されると、少なくとも１つのサーバーの展開が成功であったかどうかを判定することによって、サーバープールから少なくとも１つのサーバーを割り当てることを特徴とする請求項１０に記載のコンピューター読取可能媒体。
【請求項１４】
前記命令は、実行されると、少なくとも１つのサーバーの前記展開が不成功であった場合は関連するマシンファイルを評価することによって、サーバープールから少なくとも１つのサーバーを割り当てることを特徴とする請求項１３に記載のコンピューター読取可能媒体。
【請求項１５】
前記命令は、実行されると、少なくとも１つのサーバーの成功した展開の後に通知を送信することによって、サーバープールから少なくとも１つのサーバーを割り当てることを特徴とする請求項１０に記載のコンピューター読取可能媒体。
【請求項１６】
前記命令は、実行されると、前記展開の終了時刻が満了した後に、割当てから少なくとも１つのサーバーを解放することによって、サーバープールから少なくとも１つのサーバーを割り当てることを特徴とする請求項１０に記載のコンピューター読取可能媒体。
【請求項１７】
前記命令は、実行されると、展開を延長することによってサーバープールから少なくとも１つのサーバーを割り当てることを特徴とする請求項１０に記載のコンピューター読取可能媒体。
【請求項１８】
コンピューティングシステムのプールにおいて複数のコンピューティングシステムを動的に構成する方法であって、
前記複数のコンピューティングシステムの展開の構成に関連付けられた入力であって、前記複数のコンピューティングシステムの展開のタイプと前記複数のコンピューティングシステムの展開の時間期間とを含む入力を受け取ることと、
前記時間期間に前記複数のコンピューティングシステムの可用性に部分的に基づいて前記複数のコンピューティングシステムを割り当てることと、
前記複数のコンピューティングシステムが前記時間期間に使用可能である場合は、前記展開のタイプに従って前記複数のコンピューティングシステムを自動的に構成することを含めて、前記時間期間に前記複数のコンピューティングシステムを展開することと
を含むことを特徴とする方法。
【請求項１９】
前記複数のコンピューティングシステムの前記展開についてユーザに自動的に通知することをさらに含むことを特徴とする請求項１８に記載の方法。
【請求項２０】
前記展開することは、ＯＳ、ミドルウェア、ならびに、１つまたは複数のテストビットのうちの少なくとも１つを前記複数のコンピューティングシステムに自動的にインストールすることを含むことを特徴とする請求項１８に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピューティングシステムの動的な構成、割当て、および展開に関する。
【背景技術】
【０００２】
テクノロジは、ほとんどではないとしても多くのビジネスモデルの日常業務における不可欠な部分になってきている。一部のビジネスモデルは、日常業務において多数のコンピューティングシステムに依存し、しばしば、エンタープライズセッティング（ｅｎｔｅｒｐｒｉｓｅ  ｓｅｔｔｉｎｇ）と呼ばれる。現在、多数の管理者および関連サポートは、各コンピューティングシステムを構成して展開するのに、難しく、しばしば長期にわたるに仕事を課せられている。例えば、管理者およびサポートスタッフは、ある組織のサーバーファームをセットアップし、構成するのに長い時間を費やすことがある。さらに、ある種の状況では、以前に構成されたコンピューティングシステムを、特定の目的のために再構成する必要が生じることがある。この再構成は、最初の展開と比較して同程度、またはそれより長い時間を要する可能性がある。これは、非効率的でコストのかかるプロセスである。
【０００３】
ある例を用いて、複数のコンピューティングシステムを構成して展開する、非効率的でコストがかかり、多くの場合に面倒なプロセスを説明する。この例では、あるテスタが、コンテンツテストを実行するのにサーバークラスタを複製することを必要とする。このテスタは、まず、複製要求をコールインするか電子メールで送る必要がある。その要求を受け取った後に、システムエンジニアが、該要求を満たす使用可能なサーバーを探す。要求された数のサーバーが使用可能である場合は、システムエンジニアは、構成要求に従ってサーバーを再構築し、関連する当事者に状況についての電子メールを送信する（または電話をかける）。
【０００４】
次に、システムエンジニアは、新しいサーバー名を追加することを含め、新しいｍａｃｈｉｎｅ．ｘｍｌファイルを手動で作成しなければならない。システムエンジニアは、次いで、特定のクラスタのシップメントファイル（ｓｈｉｐｍｅｎｔ  ｆｉｌｅ）をプルする。シップメントファイルは、特定のクラスタおよび／または環境に展開されなければならないコードおよびコンテンツジョブを含むファイルまたはプログラムということができる。システムエンジニアは、次いで、展開ツール（ｄｅｐｌｏｙｍｅｎｔ  ｔｏｏｌ）（例えば、コマンドラインディスパッチ）を使用して、サーバー上の関連するビットを展開する。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
各サーバーの構成と展開が成功すると、システムエンジニアは、関連する当事者に、それらのサーバーがもはや必要とされないときは該エンジニアに通知される要求を含め、確認の電子メールを送信するか電話をかける。この問題をさらに難しくすることに、システムエンジニアは、特定の構成および展開に関連する情報の全てを追跡する簡単な方法を有しない。したがって、複数のコンピューティングシステムの構成および展開に関する現在の状態は、典型的に、多くの工数を必要とし、コストが高くエラーの多いプロセスである。
【課題を解決するための手段】
【０００６】
この「課題を解決するための手段」を、以下の「発明を実施するための形態」でさらに説明される概念の選択を、簡略化された形式で紹介するために提供する。この「課題を解決するための手段」は、請求される主題の主要な特徴または本質的特徴を特定することを意図されたものではなく、請求される主題の範囲を決定する際の助けとして意図されたものでもない。
【０００７】
ユーザの要件および／または入力に基づいて、１つまたは複数のコンピューティングシステムを動的に構成し、割り当て、および／または展開することに関する諸実施形態を提供する。予約済みシステム（ｒｅｓｅｒｖｅｄ  ｓｙｓｔｅｍｓ）は、ユーザの要件に従って、必要なコードおよび／またはコンテンツを用いて動的に構成されることができる。例えば、複数のサーバーを、ユーザ要求に従って動的に構成し、割り当て、展開することができる。動的に展開されたサーバーを使用して、コードおよびプログラムをすばやく効率的にテストし、コードおよびプログラムをデバッグし、ならびに／あるいは、他の構成オペレーションおよびテストオペレーションを実行することができる。
【０００８】
システムの予約済みクラスタは、予約が満了すると使用可能プールに返されることが可能であるため、返されたシステムを後続の予約のために再構成し、再割当てし、および／または再展開することが可能になる。例えば、サーバーを、ある構成から異なる構成に再構成することができる。また、サーバーを、あるサービスタイプから異なるサービスタイプに再割当てすることもできる。様々な実施形態において、例えばサーバーなどのコンピューティングシステムを、特定の使用要件および／または指定の時間の間に予約することができる。予約要件に基づいて、コンピューティングシステムを動的に構成し、予約期間を通じて特定の構成を維持することができる。
【０００９】
上記および他の特徴および利益は、次の詳細な説明を読み、関連する図面を再検討することから明らかになるであろう。前述の全般的な説明および次の詳細な説明の両方とも、例示にすぎず、特許請求される発明を限定するものではないことを理解されたい。
【図面の簡単な説明】
【００１０】
【図１】コンピューティングネットワークを示すブロック図である。
【図２】複数のテーブルを示す図である。
【図３Ａ】１つまたは複数のサービングコンピューターの構成、割当て、および展開を示す流れ図である。
【図３Ｂ】１つまたは複数のサービングコンピューターの構成、割当て、および展開を示す流れ図である。
【図４Ａ】ネットワークと、１つまたは複数のサービングコンピューターの構成、割当て、および展開とを示す機能ブロック図である。
【図４Ｂ】ネットワークと、１つまたは複数のサービングコンピューターの構成、割当て、および展開とを示す機能ブロック図である。
【図４Ｃ】ネットワークと、１つまたは複数のサービングコンピューターの構成、割当て、および展開とを示す機能ブロック図である。
【図４Ｄ】ネットワークと、１つまたは複数のサービングコンピューターの構成、割当て、および展開とを示す機能ブロック図である。
【図４Ｅ】ネットワークと、１つまたは複数のサービングコンピューターの構成、割当て、および展開とを示す機能ブロック図である。
【図４Ｆ】ネットワークと、１つまたは複数のサービングコンピューターの構成、割当て、および展開とを示す機能ブロック図である。
【図４Ｇ】ネットワークと、１つまたは複数のサービングコンピューターの構成、割当て、および展開とを示す機能ブロック図である。
【図４Ｈ】ネットワークと、１つまたは複数のサービングコンピューターの構成、割当て、および展開とを示す機能ブロック図である。
【図４Ｉ】ネットワークと、１つまたは複数のサービングコンピューターの構成、割当て、および展開とを示す機能ブロック図である。
【図５Ａ】ユーザインターフェースの例を示す図である。
【図５Ｂ】ユーザインターフェースの例を示す図である。
【図５Ｃ】ユーザインターフェースの例を示す図である。
【図６】複数のテーブルを示す図である。
【図７】本明細書で説明される様々な実施形態を実装するコンピューティング環境を示すブロック図である。
【発明を実施するための形態】
【００１１】
ネットワーク内で１つまたは複数のコンピューティングシステムを動的に構成し、割り当て、および／または展開することに関する諸実施形態を提供する。一実施形態では、ユーザは、サーバーのクラスタを予約することができ、クラスタは、ユーザの要件に従って動的に構成され、割り当てられ、展開される。諸実施形態は、サーバーのクラスタなど、１つまたは複数のコンピューティングシステムを使用して、ユーザがコードおよびプログラムをテストし、コードおよびプログラムをデバッグし、ならびに／あるいは他の構成オペレーションおよびテストオペレーションを実行するための、すばやく効率的な方法を提供する。例えば、複数のサーバーを、所望の実装に従って特定の展開の詳細について、予約または要求することができる。その複数のサーバーを、共通プール（ｃｏｍｍｏｎ  ｐｏｏｌ）から割り当てることができる。その複数のサーバーが割り当てられると、要求された展開の詳細に従ってオペレーティングシステム（ＯＳ）、ミドルウェア、および／またはテストビットをインストールすることによって、その複数のサーバーを構成することができる。構成されたサーバーを、予約の開始と同時に間に合うように展開することができる。必要な全ての通知および状況情報を、予約されたクラスタとの対話が成功する（例えば、テストのため、デバッグのためなど）ことができるように、自動的に１人または複数のユーザに提供する。
【００１２】
図１は、一実施形態にかかるコンピューティングネットワーク１００の図である。以下で説明されるように、コンピューティングネットワーク１００のコンポーネントは、該ネットワーク１００または別のネットワーク内の１つまたは複数のコンピューティングシステムを動的に構成し、割り当て、および／または展開するように構成され、それらを行うように動作することができる。例えば、コンピューティングネットワーク１００のコンポーネントは、該ネットワーク１００内の或るシステムプール（例えば、システムプール１０２、システムプール１０４）の１つまたは複数のシステムを動的に構成し、割り当て、かつ／または展開するように構成され、それらを行うように動作することができる。さらに、これらのコンポーネントを使用して、１つまたは複数のタスクのために、所望の時間の間、１つまたは複数のコンピューティングシステムを予約することができる。
【００１３】
コンピューティングネットワーク１００のコンポーネントは、さらに、該ネットワーク１００または別のネットワーク内の１つまたは複数のコンピューティングシステムを動的に再構成し、再割当てし、および／または再展開するように構成され、それらを行うように動作することができる。本明細書で使用されるときに、コンピューティングシステムは、サーバー、デスクトップ、ハンドヘルド、ラップトップ、ならびに他のコンピューティングデバイスおよびコンピューティングシステムを含む全てのコンピューティングデバイスまたはコンピューティングシステムを指す。本明細書で使用されるときに、用語「ネットワーク」は、情報を転送し、操作し、有線ネットワーク、無線ネットワーク、および／または有線ネットワークと無線ネットワークの組合せとして実装することができる、コンピューティングデバイスの任意の構成を含む。図１は、あるネットワーク化された構成を示すが、他の構成も使用可能である。
【００１４】
図１に示されているように、ネットワーク１００は、ネットワークＡおよびネットワークＢを含む。以下で説明されるように、１つまたは複数のウェブコンポーネントおよび他のコンポーネントは、ネットワークＡおよびネットワークＢを含むネットワーク１００に関連付けられる。ネットワークＡおよびネットワークＢは、サーバープールからの１つまたは複数のサーバーなど、１つまたは複数のシステムプール１０２および１０４からの複数のコンピューティングシステムの動的な構成、割当て、および／または展開を提供するように構成される、複数のコンポーネントを含む。様々なコンポーネントが、ネットワーク１００に含まれるように図示されているが、これらの様々なコンポーネントを、他の方法で配置し、および／または、１つまたは複数のネットワークの間で共有することができる。さらに、ネットワーク１００は、より多数またはより少数のコンポーネントを含むことができる。
【００１５】
一実施形態で、ネットワークＡおよびネットワークＢは、ストレージエリアネットワーク（ＳＡＮ）を介して通信している。このＳＡＮは、ソフトウェアライブラリ共有を同期状態に保つように構成される。ＳＡＮは、データおよび他の情報ストレージをコンピューティングシステム（例えば、サーバー）から切り離し、ネットワーク１００に直接に接続することができるように構成される。ネットワーク１００上でストレージを共有することによって、ＳＡＮは、非常にスケーラブルで柔軟なストレージリソースの割当て、非常に効率的なバックアップソリューション、および、より良いストレージ利用を可能にする。
【００１６】
ネットワークＡおよびネットワークＢは、それぞれ、ソフトウェアライブラリ１０６および１０８を含む。一実施形態で、ソフトウェアライブラリ１０６および１０８は、コンピューティングシステムを構成するためにアクセスし、使用することができる、ファイル、パッケージ、バージョン、および／または他のデータ／情報を含む。すなわち、ソフトウェアライブラリは、コンピューティングシステムを構成するためにアクセスできる中央リポジトリまたはリファレンスとして構成されるが、それには限定されない。ネットワークＡおよびネットワークＢは、それぞれ、オペレーティングシステムサービス１１０および１１２をも含む。オペレーティングシステムサービス１１０および１１２は、以下で説明されるように、様々な時点で様々なタスクを実行するように構成される。例えば、オペレーティングシステムサービス１１０および１１２は、展開ステップを実行し、システムメンテナンスを行い、予約状況を追跡し、サーバーをサーバープールに返し、構成ステップを開始して継続し、通知を送信するように構成される。
【００１７】
一実施形態で、オペレーティングシステムサービス１１０および１１２は、要求された通りに１つまたは複数の展開ステップ（以下で説明する）を実行するように構成される。オペレーティングシステムサービス１１０および１１２は、複数の展開ステップの第１の数について、データベース１２２および１２６内のストアドプロシージャへの呼出しを行う。オペレーティングシステムサービス１１０および１１２は、残りの展開ステップ（例えば、Ｄｉｓｐａｔｃｈ（ディスパッチ）およびＡＤＤ  Ｕｓｅｒｓ（ユーザの追加））を実行する機能を含む。オペレーティングシステムサービス１１０および１１２はまた、Ｒｅｓｅｒｖａｔｉｏｎ  Ｓｔａｔｕｓ（予約状況）、Ｄｅｐｌｏｙｍｅｎｔ  Ｓｔａｔｕｓ（展開状況）、Ａｖａｉｌａｂｉｌｉｔｙ  Ｓｔａｔｕｓ（可用性状況）を管理し、データベース１１４内の状態変化（例えば、予約の満了、新たな予約が行われたこと、展開ステップの終了など）を追跡する、プロキシ呼出しを行う。オペレーティングシステムサービス１１０および１１２は、さらに、以下の通知を送信するように構成される。すなわち該通知には、予約の開始、予約まで２４時間または予約の満了、予約に対する展開の開始、完了、またはエラーの発生、新たなビルドリリース（例えば、ＯＦＦＩＣＥビルドリリース）をソフトウェアライブラリ１０８にプッシュすること、データベース１１４内のビルドに関するエントリを維持すること、ならびにファイル共有に関連するｍａｃｈｉｎｅ．ｘｍｌファイルおよびシップメントファイルの蓄積をクリーンアップすることなどが含まれるが、これらには限定されない。
【００１８】
オペレーティングシステムサービス１１０および１１２は、さらに、データベース１１４などのデータベースを周期的に照会することによって、タスクを実行すべきどうかを判定するように構成される。オペレーティングシステムサービス１１０および１１２は、これらの照会を、例えばプロキシクラスを使用して、ウェブサービス１１６を介して実行する。オペレーティングシステムサービス１１０および１１２は、ウェブサービス１１６を介してデータベース１１４内のデータおよび他の情報を修正することもできる。ウェブサービスは、オペレーティングシステムサービス１１０および１１２とデータベース１１４との間など、ネットワーク１００の様々なコンポーネント間の通信を処理するように構成される。ウェブサービス１１６は、ネットワークＡおよびネットワークＢと通信するように図示されているが、これに限定されるものではない。
【００１９】
一実施形態で、ウェブサービス１１６は、次の機能を含むが、これに限定されるものではない。
【００２０】
DoDeploymentSteps(int iResvID, int iDeploymentStepFlags )  −  ｐｒｃ＿ｄｏ＿ｄｅｐｌ＿ｓｔｅｐｓを呼び出して、予約についての未決の展開ステップをセットし、そのＲｅｓｅｒｖａｔｉｏｎ  Ｓｔａｔｕｓ（予約状況）をＤｅｐｌｏｙｉｎｇ（展開中）にセットする。
【００２１】
ScheduleEvent( string strTestServerName, string strEventName )  −  ｓｐ＿ｉｎｓ＿ｅｖｅｎｔ＿ｓｃｈｅｄｕｌｅ＿ＩＰＯを呼び出すことによってＥｖｅｎｔ（イベント）をスケジューリングする。
【００２２】
CreateResv( ... )  −  ｐｒｃ＿ｃｒｅａｔｅ＿ｒｅｓｖを呼び出すことによって新しい予約を作成する。入力は、ｐｒｃ＿ｃｒｅａｔｅ＿ｒｅｓｖのパラメータに対応する。新しく作成された予約のＩＤを返す。
【００２３】
IsClusterAvailNow( int ResvID )  −  ｐｒｃ＿ｉｓ＿ｃｌｕｓｔｅｒ＿ａｖａｉｌ＿ｎｏｗを呼び出すことによって、当該予約の展開をすぐに開始できるかどうかを示すブール値を返す。入力は、当該予約のＩＤである。
【００２４】
CancelResv( int ResvID )  −  ｐｒｃ＿ｃａｎｃｅｌ＿ｒｅｓｖを呼び出すことによって予約を取り消す。入力は、取り消される予約のＩＤである。
【００２５】
GetResvInfo( int ResvID )  −  ｐｒｃ＿ｇｅｔ＿ｒｅｓｖ＿ｉｎｆｏを呼び出すことによって予約に関する情報を返す。返されるレコードセット内のフィールドは、ｔｂｌＲｅｓｖｓの列に対応する。入力は、当該予約のＩＤである。
【００２６】
UpdateResvInfo( intResvID, ... )  −  ｐｒｃ＿ｕｐｄａｔｅ＿ｒｅｓｖ＿ｉｎｆｏを呼び出すことによって、ｔｂｌＲｅｓｖｓ内の予約に関する情報を更新する。入力は、当該予約のＩＤであり、ｔｂｌＲｅｓｖｓ内の列に対応する。
【００２７】
GetServerAvailCount( int iDomainID, DateTime dtStart, DateTime dtEnd )  −  
ｐｒｃ＿ｇｅｔ＿ｓｅｒｖｅｒ＿ａｖａｉｌ＿ｃｏｕｎｔ＿ｉｎｆｏを呼び出すことによって日付範囲の間にドメイン内で使用可能なサーバープールサーバーの数を返す。入力は、当該ドメインのドメインＩＤ、日付範囲の始め、および日付範囲の終りである。
【００２８】
GetShipmentFileList()  −  ＣＭＤＢを照会することによって、ｄｉｓｐａｔｃｈ．ｅｘｅによって使用するための、使用可能なシップメントファイルのレコードセットを返す。
【００２９】
GetOfficeBuilds()  −  ｐｒｃ＿ｇｅｔ＿ｏｆｆｉｃｅ＿ｂｕｉｌｄｓを呼び出すことによって、予約済みクラスタへの展開に使用可能なパブリックＯＦＦＩＣＥビルドのリストを返す。
【００３０】
GetExpiredResvs()  −  ｐｒｃ＿ｇｅｔ＿ｅｘｐｉｒｅｄ＿ｒｅｓｖｓを呼び出すことによって、満了した予約ＩＤのリストを得る。
【００３１】
GetNewResvs()  −  ｐｒｃ＿ｇｅｔ＿ｎｅｗ＿ｒｅｓｖｓを呼び出すことによって、新しい予約ＩＤのリストを得る。
【００３２】
図１の参照を続けると、ウェブサービス１１６は、ユーザインターフェース１１８を含んでいる。ユーザインターフェース１１８を使用して、ネットワーク１００のコンポーネントと対話することができる。例えば、ユーザは、ユーザインターフェース１１８およびウェブサービス１１６を使用して、予約の作成および管理のためにデータベース１１４内の様々なプロシージャにアクセスし、予約および可用性状況を見ることができる。一実施形態で、ユーザインターフェース１１８は、３つのページ、すなわち、Ｈｏｍｅ  Ｐａｇｅ（ホームページ）、Ｎｅｗ  Ｒｅｓｅｒｖａｔｉｏｎ／Ｅｄｉｔ  Ｒｅｓｅｒｖａｔｉｏｎ  Ｐａｇｅ（新規予約／予約編集ページ）、およびＭｙ  Ｒｅｓｅｒｖａｔｉｏｎｓ／Ａｄｍｉｎｉｓｔｒａｔｉｏｎ  Ｐａｇｅ（私の予約／管理ページ）（図５Ａ−５Ｃを参照されたい）からなる。ユーザインターフェース１１８は、ウェブサービス１１６への呼出しを介してデータを照会し、修正するように構成される。ユーザインターフェース１１８を使用してユーザによって提示されたデータは、データベース１１４に格納される。
【００３３】
データベース１１４は、例えば複数のテストサーバーの構成、割当て、および展開など、１つまたは複数のコンピューティングシステムの構成、割当て、および／または展開を完了するのに必要な情報を含む。データベース１１４には、以下でさらに説明される、予約の詳細および状況、展開の詳細および状況、可用性の詳細および状況などを含めることができる。例えば、データベース１１４には、サーバープール内のサーバーの数、サーバー名、サーバーのタイプ、サーバーの役割、サーバーの予約開始／終了時刻、過去の予約、サーバー展開オプション、および他の関連する情報などの情報を含めることができる。データベース１１４は、ネットワークＡの一部として含まれているように図示されているが、代替実施形態では、ネットワークＢにも同様のデータベースを含めることができる。
【００３４】
図１の参照を続けると、ネットワークＡは、複数のスクリプト１２０および関連するデータベース１２２を含む。ネットワークＢも、複数のスクリプト１２４および関連するデータベース１２６を含む。システムプール１０２および１０４内の各サーバーも、以下で説明されるように、複数のスクリプトを含むことができる。これらのスクリプトは、以下で説明されるように、１つまたは複数の展開プロシージャまたはステップを実行するバッチスクリプトを含む。例えば、各スクリプトを、１つのイベントに関連付けることができる。関連付け（associations）および他のイベントデータを、データベース１２２および１２６に格納することができる。あるイベントのスケジューリングされた時間になると、そのイベントに関連付けられたスクリプトを実行することができる。
【００３５】
一実施形態で、スクリプトは、以下のものを含むが、これらに限定されない。
【００３６】
ＯＳインストールスクリプト（ＩｎｓｔａｌｌＯＳ．ｂａｔ）  
ＯＳをインストールし、サーバーをドメインに参加させる。ＩＮＥＴＮＵＫＥ１．ｂａｔおよびＩＮＥＴＮＵＫＥ２．ｂａｔからコードを共有することができる。
【００３７】
デバッギングツールインストールスクリプト（ＩｎｓｔａｌｌＤｅｂｕｇｇｉｎｇＴｏｏｌｓ．ｂａｔ）  
予約に関するデバッギングツールをインストールする。
【００３８】
タイプスクリプト（Ｔｙｐｅ  Ｓｃｒｉｐｔ）は、次を含む。  
１．ＩＩＳ．ｂａｔ  −  ウェブサーバーを作成するために、ソフトウェアをインストールし、構成セッティングをセットする。  
２．ＳＱＬ．ｂａｔ  −  ＳＱＬサーバーを作成するために、ソフトウェアをインストールし、構成セッティングをセットする。  
３．ＳＥＡ．ｂａｔ  −  検索サーバー（Ｓｅａｒｃｈ  Ｓｅｒｖｅｒ）を作成するために、ソフトウェアをインストールし、構成セッティングをセットする。  
４．ＣＤＳ．ｂａｔ  −  コンテンツサーバー（Ｃｏｎｔｅｎｔ  Ｓｅｒｖｅｒ）を作成するために、ソフトウェアをインストールし、構成セッティングをセットする。
【００３９】
役割スクリプト（Ｒｏｌｅ  Ｓｃｒｉｐｔ）は、次のものを含む。  
１．ＩＩＳ−ＡＷＳ１．ｂａｔ  −  匿名アクセスを用いるＡＷＳウェブサービスのために、ＩＩＳボックス上でソフトウェアをインストールし、構成セッティングをセットする。  
２．ＩＩＳ−ＡＷＳ２．ｂａｔ  −  Ｐａｓｓｐｏｒｔ（パスポート）認証を用いるＡＷＳサービスのために、ＩＩＳサーバー上でソフトウェアをインストールし、構成セッティングをセットする。  
３．ＩＩＳ−Ｒｅｄｉｒ．ｂａｔ  −  ＯＦＦＩＣＥリダイレクトサービスおよびクライアント／サーバーリダイレクトサービスのために、ＩＩＳサーバー上でソフトウェアをインストールし、構成セッティングをセットする。  
４．ＩＩＳ−Ｒ＆Ｒ．ｂａｔ  −  ＯＦＦＩＣＥ  Ｒｅｓｅａｒｃｈ  ＆  Ｒｅｆｅｒｅｎｃｅサービスのために、ＩＩＳサーバー上でソフトウェアをインストールし、構成セッティングをセットする。  
５．ＳＱＬ−ＡＷＳ．ｂａｔ  −  ＡＷＳサービスのために、ＳＱＬサーバー上でソフトウェアをインストールし、構成セッティングをセットする。  
６．ＣＤＳ−Ｒ＆Ｒ．ｂａｔ  −  Ｒ＆Ｒサービスのために、ＣＤＳサーバー上でソフトウェアをインストールし、構成セッティングをセットする。  
７．ＣＤＳ−Ｓｅａｒｃｈ．ｂａｔ  −  ＡＷＳサービスのために、ＣＤＳサーバー上でソフトウェアをインストールし、構成セッティングをセットする。  
８．ＩＩＳ−ＩＰＯＴｏｏｌ．ｂａｔ  −  ＩＰＯツールフロントエンドのために、ＩＩＳサーバー上でソフトウェアをインストールし、構成セッティングをセットする。  
９．ＩＩＳ−ＩＰＯｓｅｒｖｉｃｅ．ｂａｔ  −  ＩＰＯツールサービスのために、ＩＩＳサーバー上でソフトウェアをインストールし、構成セッティングをセットする。  
１０．ＳＱＬ−ＩＰＯＴｏｏｌｓ．ｂａｔ  −  ＩＰＯツールのために、ＳＱＬサーバー上でソフトウェアをインストールし、構成セッティングをセットする。
【００４０】
複数のコンピューティングシステム（例えば、データセンタサービングコンピューター）が、タイプに基づいて異なるハードウェア構成を有することは、めずらしくない。例えば、ＳＱＬサーバーは、典型的に、ウェブサーバーと比べて大きなハードドライブを有する。異なるハードウェア構成は、例えばパーティションのセッティングなど、セットアップ中に異なる構成を必要とする可能性がある。これらのハードウェアの相違に部分的に起因して、あるタイプのハードウェア構成を有するシステムを別のタイプのシステムとして使用することが難しい可能性がある。したがって、一実施形態では、同様のハードウェア構成を有する複数のシステムが、システムプール１０２および１０４内で区別され、集約される。
【００４１】
一実施形態で、これらのシステムを、要求されたタイプに従って構成することができる。例えば、一般的なサーバーのタイプには、ＳＱＬサーバー、コンテンツサーバー、およびウェブサーバーが含まれる。セットアッププロセス中に、同一タイプのシステムが、ホスティングされるサービスに部分的に起因して、異なるミドルティアソフトウェアをインストールすることがある。例えば、あるタイプのＡＷＳウェブフロントエンドは、Ｐａｓｓｐｏｒｔをインストールするが、別のＡＷＳウェブサーバーは、Ｐａｓｓｐｏｒｔを必要としない。したがって、動的サーバーの割当ておよびセットアッププロセス（例えば、ＮＮＰプロセス）は、関連する予約のホスティングサービスに従って、同一タイプのシステムに異なるミドルティアコンポーネントを適用することができる。
【００４２】
本明細書で使用されるとき、「タイプ（ｔｙｐｅ）」とは、コンピューティングシステムにインストールできるプラットフォームソフトウェアの種類を指す。「役割（ｒｏｌｅ）」は、関連するコンピューティングシステムの機能を指す。例示的な役割には、匿名アクセスを用いるＡＷＳウェブサービスのフロントエンドサーバーを指すＦＥ−ＡＷＳ１、Ｐａｓｓｐｏｒｔ認証を用いるＡＷＳサービスのフロントエンドサーバーを指すＦＥ−ＡＷＳ２、ＯＦＦＩＣＥリダイレクトサービスおよびクライアント／サーバーリダイレクトサービスのフロントエンドサーバーを指すＦＥ−Ｒｅｄｉｒ、ＯＦＦＩＣＥ  Ｒｅｓｅａｒｃｈ  ＆  Ｒｅｆｅｒｅｎｃｅサービスのフロントエンドサーバーを指すＦＥ−Ｒ＆Ｒ、ＡＷＳサービスのバックエンドＳＱＬサーバーを指すＳＱＬ−ＡＷＳ、Ｒ＆Ｒサービスのコンテンツサーバーを指すＣＤＳ−Ｒ＆Ｒ、ＡＷＳサービスの検索サーバーを指すＣＤＳ−Ｓｅａｒｃｈ、ＩＰＯツールのウェブサーバーを指すＦＥ−ＩＰＯＴｏｏｌ、ＩＰＯツールのサーバーを指すＦＥ−ＩＰＯｓｅｒｖｉｃｅ、およびＩＰＯツールのＳＱＬサーバーを指すＳＱＬ−ＩＰＯＴｏｏｌｓが含まれるが、これらには限定されない。
【００４３】
役割の第１の部分（ハイフンの前）は、タイプであり、第２の部分（ハイフンの後）は、それがホスティングできるサービスを示す。ＮＮＰスクリプトを、各サーバータイプおよび各サーバー役割について調節することができる。したがって、各役割を、タイプ（例えば、ＩＩＳ（ウェブ）、ＳＱＬ（データベース）、ＣＤＳ（コンテンツ）、ＳＥＡ（検索））に関連付けることができる。さらに、コンピューティングシステムは、２つ以上の役割を担うことができるが、ある場合においては、そのような役割のそれぞれを、同一タイプの役割とすることができる。例えば、テストコンピューティングシステムは、ＳＱＬ−ＡＷＳ１の役割とＳＱＬ−ＡＷＳ２の役割を担うことはあるが、ＩＩＳ−ＡＷＳ１の役割とＳＱＬ−ＡＷＳ１の役割との両方は担わないことがある。
【００４４】
動的構成および割当てとは、同様のタイプのコンピューティングシステムを使用して、例えばＯＦＦＩＣＥサービスなど、異なるサービスをインストールすることができる状況を指す可能性もある。さらに、コンピューティングシステムの役割は、異なる予約について時々変化する可能性があり、その動的な構成および割当てに依存する可能性がある。例をあげると、フロントエンドサーバーは、ある予約においてＡＷＳサービスをホスティングすることができ、別の予約においてはＲ＆Ｒサーバーとして動作することができる。ｍａｃｈｉｎｅ．ｘｍｌファイルを、そのような展開をサポートすることができるように修正することができる。ｍａｃｈｉｎｅ．ｘｍｌファイルは、どのマシンがどのパッケージおよび特定のサービス構成を受け取るかを定義する、ＸＭＬフォーマットファイルとして記述することができる。以下で説明されるように、ｍａｃｈｉｎｅ．ｘｍｌファイルを、ディスパッチコンポーネントによって使用して、所望の実装にかかる展開を実行することができる。ディスパッチコンポーネントは、１つまたは複数のリモートサーバーなど、リモートコンピューティングシステムにおけるパッケージおよびサービスのインストールと、ランタイムパラメータの構成とを制御するように構成される。したがって、役割を使用して、予約に従ってコンピューティングシステムのタイプに適用する必要がある構成およびコード（例えば、ＯＦＦＩＣＥ）を示すことができる。
【００４５】
一実施形態に従って、タイプおよび役割の概念を使用すると、コンピューティングシステムへの展開において７つのステップがある。この７つのステップには、１．ＯＳのインストール（ＯＳ  Ｉｎｎｓｔａｌｌａｔｉｏｎ）、２．デバッギングツールのインストール（Ｄｅｂｕｇｇｉｎｇ  Ｔｏｏｌｓ  Ｉｎｓｔａｌｌａｔｉｏｎ）、３．タイプ適用（Ｔｙｐｅ  Ａｐｐｌｉｃａｔｉｏｎ）、４．役割適用（Ｒｏｌｅ  Ａｐｐｌｉｃａｔｉｏｎ）、５．ホットフィックス適用（ＨｏｔＦｉｘ  Ａｐｐｌｉｃａｔｉｏｎ）、６．ディスパッチ（Ｄｉｓｐａｔｃｈ）、７．ユーザの追加（Ａｄｄ  Ｕｓｅｒ）が含まれるが、これらには限定されない。展開ステップのそれぞれは、追加の展開ステージを含め、対応する展開ステージを有する。この展開ステージには、０．未開始（Ｎｏｔ  Ｙｅｔ  Ｓｔａｒｔｅｄ）、１．ＯＳのインストール、２．デバッギングツールのインストール、３．タイプ適用、４．役割適用、５．ホットフィックス適用、６．ディスパッチ、７．ユーザの追加、８．終了（Ｆｉｎｉｓｈｅｄ）が含まれるが、これらには限定されない。
【００４６】
展開ステップは、複数の展開フラグを用いて追跡することができる。一実施形態では、展開フラグの値は、２の最初の７乗に対応する。次の表に、展開フラグの値、および対応する展開ステップを示す。
【００４７】
【表１】
2010503074.tif 000003
【００４８】
上述したように、各コンピューティングシステムは、必ずしも７つ全ての展開ステップを経るとは限らない。複数の展開フラグを使用して、予約においてコンピューティングシステムに適用される全ての展開ステップを単一の値で示すことができる。例えば、７つ全ての展開ステップを、７つ全ての展開ステップに対応するフラグを加算すること、すなわち、１＋２＋４＋８＋１６＋３２＋６４＝１２７で示すことができる。デバッギングツールインストールステップが不要な場合は、これを、値１＋４＋８＋１６＋３２＋６４＝１２５で示すことができる。
【００４９】
一実施形態で、展開ステップに対応する様々な種類のスクリプトがあり、このスクリプトには、次のものが含まれるが、これらには限定されない。１．ＯＳインストールスクリプトは、予約内の各コンピューティングシステム上でコードを実行するのに使用される。２．デバッギングツールインストールスクリプトは、予約内の各コンピューティングシステム上でコードを実行するのに使用される。３．タイプ適用スクリプトは、各タイプに従って異なるコードを実行するスクリプトに対応する。４．役割適用スクリプトは、各役割に従って異なるコードを実行するスクリプトに対応する。５．ホットフィックス適用スクリプトは、予約内の各コンピューティングシステム上でコードを実行するのに使用される。
【００５０】
さらに、上述したように、各スクリプトを、データベース１２２および１２６において、あるイベントに関連付けることができる。イベントは、オペレーティングシステムサービス１１０または１１２によって、特定のコンピューティングシステムについてスケジューリングされることができる。オペレーティングシステムサービス１１０または１１２は、それぞれデータベース１２２および１２６内のストアドプロシージャを呼び出して、関連付けられたイベントをスケジューリングするように構成される。スケジューリングされたイベントの時刻に達すると、そのイベントに関連付けられたスクリプトが、オペレーティングシステムサービス１１０または１１２によって、ターゲットのコンピューティングシステムにプッシュされ、実行される。すなわち、各スクリプトは、そのスクリプトが展開されるコンピューティングシステム上でローカルに実行されるように構成される。スケジューリングされたイベントに関連付けられたスクリプトが実行されるとき、スクリプトの実行開始時刻、終了時刻、成功／失敗状況、エラーコードなどを、関連するデータベース１２２または１２６に書き込むことができる。その後、スクリプト実行データは、オペレーティングシステムサービス１１０または１１２によって、ウェブサービス１１６のプロキシによってデータベース１１４にプッシュされる。
【００５１】
上述したように、データベース１１４は、１つまたは複数のコンピューティングシステムの構成、割当て、および／または展開に関連付けられた情報のリポジトリとして機能する。一実施形態で、データベース１１４は、テストサーバークラスタの動的な展開を提供するのに必要な予約情報を格納する。以下で説明されるように、データベース１１４は、これらに限定されるものではないが、予約全体に関する予約状況、予約内の各コンピューティングシステムに関する展開状況、システムプール内の各コンピューティングシステムの可用性状況など、複数の状況識別子も維持する。
【００５２】
予約情報は、予約の開始および終了の日付、予約タイプ（例えば、Ｂａｓｉｃ（基本）、ＯＦＦＩＣＥ  Ｂｕｉｌｄ（ＯＦＦＩＣＥビルド）、Ｐｒｉｖａｔｅ  Ｒｅｌｅａｓｅ（プライベートリリース）、Ｄｕｐｌｉｃａｔｅ  Ｃｌｕｓｔｅｒ（複製クラスタ））、クラスタ予約内のシステムの数、予約内の各システムの役割およびタイプ、ある予約に関連付けられた全てのｍａｃｈｉｎｅ．ｘｍｌファイルおよびシップメントファイルの位置、ならびに予約のフレンドリ名および目的を含むが、これらには限定されない。一実施形態で、予約情報は、データベース１１４の予約テーブルに格納される。図２は、一実施形態の予約テーブルの構造を含め、複数のテーブルを示す図である。上述したように、展開ステップは、展開タイプによって変化する可能性があり、ＤｅｐｌＳｔｅｐｓフィールド内に格納することができる。ＤｅｐｌＳｔｅｐｓフィールド値は、特定の予約に必要な展開ステップを表す展開ステップフラグの組合せである。
【００５３】
図２の参照を続けると、予約の状況、すなわちＲｅｓｅｒｖａｔｉｏｎ  Ｓｔａｔｕｓ（予約状況）は、ＲｅｓｖＳｔａｔｕｓＩＤフィールドに格納される。ＲｅｓｖＳｔａｔｕｓＩＤフィールドは、ＲｅｓｖＳｔａｔｕｓＩＤ＿ＲｅｓｅｒｖａｔｉｏｎＳｔａｔｕｓＮａｍｅテーブルに結合される。Ｒｅｓｅｒｖａｔｉｏｎ  Ｓｔａｔｕｓには、Ｎｏｔ  Ｙｅｔ  Ｂｅｇｕｎ（未開始）、Ｄｅｐｌｏｙｉｎｇ（展開中）、Ｒｅａｄｙ（準備完了）、Ｅｘｐｉｒｉｎｇ（満了）、Ａｒｃｈｉｖｅｄ（アーカイブ済み）が含まれる。新しい予約が作成されると、Ｒｅｓｅｒｖａｔｉｏｎ  Ｓｔａｔｕｓに、Ｎｏｔ  Ｙｅｔ  Ｂｅｇｕｎ（未開始）がセットされる。予約の開始日付に達したとき、ユーザが予約を再展開するとき、および／または管理者もしくはＯＰＭが予約に対してアクションを行うとき、Ｒｅｓｅｒｖａｔｉｏｎ  Ｓｔａｔｕｓに、Ｄｅｐｌｏｙｉｎｇ（展開中）がセットされる。予約の最終展開ステップが終了すると、Ｒｅｓｅｒｖａｔｉｏｎ  Ｓｔａｔｕｓに、Ｒｅａｄｙ（準備完了）がセットされる。予約の時間が満了したとき、またはユーザが予約を満了させるとき（例えば、サインオフ）、Ｒｅｓｅｒｖａｔｉｏｎ  Ｓｔａｔｕｓに、Ｅｘｐｉｒｉｎｇ（満了）がセットされる。予約が満了すると、予約されたコンピューティングシステム全てが解放されて、Ｒｅｓｅｒｖａｔｉｏｎ  Ｓｔａｔｕｓに、Ａｒｃｈｉｖｅｄ（アーカイブ済み）がセットされる。
【００５４】
展開の状況、すなわちＤｅｐｌｏｙｍｅｎｔ  Ｓｔａｔｕｓ（展開状況）は、Ｒｅｓｖｓ＿Ｓｅｒｖｅｒｓテーブルに格納される。Ｒｅｓｖｓ＿Ｓｅｒｖｅｒｓテーブルは、３つのフィールドを含む。すなわち、該テーブルは、展開ステージフィールド（ＤｅｐｌＳｔａｇｅＩＤ）と、３つの値、すなわち、Ｒｕｎｎｉｎｇ（動作中）、Ｅｒｒｏｒ（エラー）、またはＤｏｎｅ（完了）のうちの１つを含むフィールド（ＤｅｐｌＳｔａｔｕｓＶａｌｕｅＩＤ）と、エラーコードフィールド（ＤｅｐｌＳｔａｔｕｓＥｒｒｏｒ）とを含む。ＤｅｐｌＳｔａｔｕｓＶａｌｕｅＩＤがＥｒｒｏｒではない場合、この値は０になる。新しい予約が作成されると、予約内の各コンピューティングシステムのＤｅｐｌｏｙｍｅｎｔ  Ｓｔａｔｕｓフィールドの値には、Ｎｏｔ  Ｙｅｔ  Ｓｔａｒｔｅｄ（未開始）、Ｄｏｎｅ（完了）、および０がセットされる。展開ステップが開始されると、ＤｅｐｌＳｔａｇｅＩＤ、ＤｅｐｌＳｔａｔｕｓＶａｌｕｅＩＤ、およびＤｅｐｌＳｔａｔｕｓＥｒｒの値には、それぞれ展開ステップに対応するＤｅｐｌｏｙｍｅｎｔ  Ｓｔａｇｅ  ＩＤ、Ｒｕｎｎｉｎｇ（動作中）、および０がセットされる。展開ステップでエラーがある場合、ＤｅｐｌＳｔａｔｕｓＶａｌｕｅＩＤおよびＤｅｐｌＳｔａｔｕｓＥｒｒの値には、それぞれＥｒｒｏｒおよびエラーコードがセットされる。展開ステップがエラーなしで完了する場合、ＤｅｐｌＳｔａｔｕｓＶａｌｕｅＩＤの値には、Ｄｏｎｅ（完了）がセットされる。最後の展開ステップが終了すると、Ｄｅｐｌｏｙｍｅｎｔ  Ｓｔａｔｕｓフィールドの値には、Ｒｅａｄｙ（準備完了）、Ｄｏｎｅ（完了）、および０がセットされる（また、上述したように、予約の最後の展開ステップが終了すると、Ｒｅｓｅｒｖａｔｉｏｎ  ＳｔａｔｕｓにＲｅａｄｙ（準備完了）がセットされる）。
【００５５】
コンピューティングシステムの可用性（例えば、サーバーの可用性）すなわちＡｖａｉｌａｂｉｌｉｔｙ  Ｓｔａｔｕｓは、図２のＳｅｒｖｅｒｓテーブルのＳｒｖＡｖａｉｌＳｔａｔｕｓＩＤフィールドに格納される。ＳｒｖＡｖａｉｌＳｔａｔｕｓＩＤフィールドは、ＳｒｖＡｖａｉｌＳｔａｔｕｓＩＤ＿ＳｒｖＡｖａｉｌＳｔａｔｕｓＮａｍｅテーブルに結合される。このテーブルは、３つのＡｖａｉｌａｂｉｌｉｔｙ  Ｓｔａｔｕｓｅｓ、すなわち、Ｕｎｒｅｓｅｒｖｅｄ（未予約）、Ｒｅｓｅｒｖｅｄ（予約済み）、およびＩｎ  Ｕｓｅ（使用中）を定義する。初期システムセットアップ中に、全てのコンピューティングシステムのＡｖａｉｌａｂｉｌｉｔｙ  Ｓｔａｔｕｓに、Ｕｎｒｅｓｅｒｖｅｄ（未予約）がセットされる。新しい予約が作られると、その予約内のコンピューティングシステムのＡｖａｉｌａｂｉｌｉｔｙ  Ｓｔａｔｕｓには、Ｒｅｓｅｒｖｅｄ（予約済み）がセットされる。予約が開始されると、その予約内のコンピューティングシステムのＡｖａｉｌａｂｉｌｉｔｙ  Ｓｔａｔｕｓに、Ｉｎ  Ｕｓｅ（使用中）がセットされる。予約を、ある特定の状況においてＡｒｃｈｉｖｅｄ（アーカイブ済み）にすることもできる。コンピューティングシステムが、そのＲｅｓｅｒｖａｔｉｏｎ  ＳｔａｔｕｓがＮｏｔ  Ｙｅｔ  Ｓｔａｒｔｅｄ（未開始）である別の予約に割り当てられている場合には、Ａｖａｉｌａｂｉｌｉｔｙ  ＳｔａｔｕｓにＲｅｓｅｒｖｅｄ（予約済み）がセットされ、そうでない場合には、Ａｖａｉｌａｂｉｌｉｔｙ  ＳｔａｔｕｓにＵｎｒｅｓｅｒｖｅｄ（未予約）がセットされる。
【００５６】
上述したように、図２に示されたテーブルに関連する複数のストアドプロシージャがある。一実施形態で、テーブル内の情報の操作は、これらのストアドプロシージャを介して達成される。ストアドプロシージャは、予約の新規作成、予約データ（Ｂｅｇｉｎ  Ｄａｔｅ（開始日付）、Ｅｎｄ  Ｄａｔｅ（終了日付）、Ｒｅｓｅｒｖａｔｉｏｎ  Ｔｙｐｅ（予約タイプ）、Ｄｅｐｌｏｙｍｅｎｔ  Ｓｔｅｐｓ（展開ステップ）など）の取得／セット、Ｒｅｓｅｒｖａｔｉｏｎ  Ｓｔａｔｕｓの取得／セット、どのシステムが予約に関連するかの取得／セット、予約のシステムのタイプおよび役割の取得／セット、予約内のシステムで実行すべき展開ステップの取得／セット、次の展開ステップを実行しなければならないシステムのリストの取得（例えば、Ｂｅｇｉｎ  Ｄａｔｅ（開始日付）に達したばかりの予約）、システムの次の展開ステップの取得、満了した予約のリストの取得、Ｄｅｐｌｏｙｍｅｎｔ  Ｓｔａｔｕｓの取得／セット、およびＡｖａｉｌａｂｉｌｉｔｙ  Ｓｔａｔｕｓの取得／セットを含むが、これらには限定されない。
【００５７】
一実施形態で、データベース１１４内の複数のストアドプロシージャは、次のものを含むが、これらには限定されない。
【００５８】
prc_create_resv( ... )   −  ｔｂｌＲｅｓｖｓ内に行を新規作成することによって、Ｎｅｗ  Ｒｅｓｅｒｖａｔｉｏｎ  ／  Ｅｄｉｔ  Ｒｅｓｅｒｖａｔｉｏｎページへのユーザ入力に基づいて予約を新規作成する。入力は、ｔｂｌＲｅｓｖｓ内の列に対応する。新規作成された予約のＩＤを返す。
【００５９】
prc_is_cluster_avail_now( ResvID )  −  当該の予約の展開をすぐに開始できるかどうかを示すブール値を返す。入力は、当該予約のＩＤである。
【００６０】
prc_do_depl_steps( ResvID, DeplStepFlags )  −  予約のＤｅｐｌＳｔｅｐｓ値にＤｅｐｌＳｔｅｐＦｌａｇｓをセットし、その後、そのＲｅｓｅｒｖａｔｉｏｎ  ＳｔａｔｕｓにＤｅｐｌｏｙｉｎｇをセットする。オペレーティングシステムサービスは、ウェイクアップするときに、展開ステップの実行を開始する。
【００６１】
prc_set_depl_steps( ResvID, DeplStepFlags )  −  予約のＤｅｐｌＳｔｅｐｓ値にＤｅｐｌＳｔｅｐＦｌａｇｓをセットする。
【００６２】
prc_cancel_resv( ResvID )  −  Ｒｅｓｅｒｖａｔｉｏｎｓテーブル内でアーカイブ済みとしてマークすることによって予約を取り消す。入力は、取り消される予約のＩＤである。
【００６３】
prc_get_resv_info( iResvID )  −  予約に関する情報を返し、返されるレコードセット内のフィールドは、Ｒｅｓｅｒｖａｔｉｏｎｓテーブル内の列に対応する。入力は、当該予約のＩＤである。
【００６４】
prc_update_resv_info( ResvID, ... )  −  Ｒｅｓｅｒｖａｔｉｏｎｓテーブル内の予約に関する情報を更新する。入力は、当該予約のＩＤであり、その後は、ｔｂｌＲｅｓｖｓ内の列に対応する。
【００６５】
prc_add_user( UserName, ResvID )  −  新しいユーザを、Ｒｅｓｅｒｖａｔｉｏｎｓテーブル内のＵｓｅｒｓフィールドに追加することによって、予約に関連付ける。入力は、追加されるユーザのＩＤおよび予約のＩＤである。
【００６６】
prc_get_servers_by_ResvID( ResvID )  −  Ｒｅｓｖｓ＿Ｓｅｒｖｅｒｓを照会することによって、予約に関連付けられたサーバーを返す。入力は、当該予約のＩＤである。
【００６７】
prc_get_expired_resvs( Date )  −  Ｒｅｓｅｒｖａｔｉｏｎｓテーブルを照会することによって、ある日付の終りに満了する予約のＩＤを返す。入力は、当該日付である。
【００６８】
prc_get_new_resvs( Date )  −  Ｒｅｓｅｒｖａｔｉｏｎｓテーブルを照会することによって、ある日付の始めに開始される予約のＩＤを返す。入力は、当該日付である。
【００６９】
prc_release_servers( ResvID )  −  予約の終りに使用される。予約ＩＤに関連するサーバーのＳｅｒｖｅｒｓテーブル内の可用性状況をリセットする。入力は、当該予約のＩＤである。
【００７０】
prc_get_dispatch_info( ResvID )  −  Ｒｅｓｅｒｖａｔｉｏｎｓテーブルを照会することによって、ディスパッチ実行に必要な情報を返す。入力は、当該予約のＩＤである。
【００７１】
prc_get_users_by_ResvID( ResvID )  −  Ｒｅｓｅｒｖａｔｉｏｎｓテーブルを照会することによって、予約に関連するユーザの名前を返す。入力は、当該予約のＩＤである。
【００７２】
prc_get_server_avail_count_info( iDomainID, iStart, iEnd )  −  日付範囲の間にドメイン内で使用可能なサーバーの数を返す。入力は、当該ドメインのドメインＩＤ、日付範囲の始め、および日付範囲の終りである。
【００７３】
prc_get_office_builds()  −  ＯｆｆｉｃｅＢｕｉｌｄｓテーブルから、予約されたクラスタへの展開に使用可能なパブリックＯＦＦＩＣＥビルドのリストを返す。
【００７４】
データベース１２２および１２６も、複数のストアドプロシージャを含む。該ストアドプロシージャには以下のものが含まれるが、これらには限定されない。
CREATE procedure sp_ins_event_schedule_IPO
@event_id         int,
@name      varchar(64),
@next_task_seq    int = 0,
@defer_mins int = 1
as
declare @schedule_id int
declare @schedule_id2 int
declare @computer_id int
select @computer_id = computer_id
from computer
where name = @name
exec @schedule_id = sp_get_next_system_id 'EVENT_SCHEDULE_ID'
exec @schedule_id2 = sp_del_event_schedule_comp_event @computer_id, @event_id
begin transaction
insert into event_schedule
(schedule_id, computer_id, event_id, start_time, next_task_seq, defer_mins)
Values
( @schedule_id, @computer_id, @event_id, GetDate(), @next_task_seq, @defer_mins )
if (@@error != 0)
begin
rollback transaction
return 1
end
commit transaction
select @schedule_id as schedule_id
GO
【００７５】
一実施形態によれば、予約アルゴリズムは、ユーザインターフェース１１８を使用するユーザ入力に基づいて、システムプール１０２および１０４の１つまたは複数のコンピューティングシステムを予約するように構成される。一実施形態で、予約アルゴリズムは、まず、コンピューティングシステムが現在予約を有しない場合には、そのコンピューティングシステムを割り当てる。予約アルゴリズムが、既に予約を有するコンピューティングシステムを割り当てなければならない場合には、コンピューティングシステムは、既存の予約と新しい予約との間の最大の時間ギャップに基づいて選択される。予約データを、順序付けるか他の方法で構造化することができるため（例えば、テーブルまたはビューフォーマット）、予約アルゴリズムを単純化し、効率化することが可能になる。予約アルゴリズムは、予約の開始日付および終了日付を使用して、以下で説明されるテーブルを作成する。このデータを、新しい予約が要求されるたびに生成することができる。
【００７６】
一実施形態で、このテーブルは３つのフィールドを有する。すなわち、ＣｏｍｐｕｔｅｒＮａｍｅは、コンピューティングシステム名を指し、ＬａｔｅｓｔＬａｓｔＥｎｄは、要求された予約の開始日付の最も直前の予約の終了日付を指し、ＥａｒｌｉｅｓｔＮｅｘｔＳｔａｒｔは、要求された予約の終了日付の最も直後の予約の開始日付を指す。ＬａｔｅｓｔＬａｓｔＥｎｄ、およびＥａｒｌｉｅｓｔＮｅｘｔＳｔａｒｔは、ヌル（ｎｕｌｌ）であることがあり得る。そのような状況では、これらに、任意の日付をセットすることができる。テーブルの日付は、Ｒｅｓｅｒｖａｔｉｏｎｓテーブル内の全ての非Ａｒｃｈｉｖｅｄ予約をＲｅｓｖｓ＿Ｓｅｒｖｅｒｓテーブルに結合することによって入手可能である。ある特定の状況では、いくつかのサーバーが、２つ以上の予約に予約されていることがあるため、結果の結合が、サーバーあたり２つ以上のエントリを有することがある。
【００７７】
予約アルゴリズムの一実施形態は、次の通りである。  
ｎは、予約に必要なサーバーの数である。  
ＲｅｓｖＩＤは、新しい予約についての一意の予約ｉｄである。  
ＳｔａｒｔＤａｔｅおよびＥｎｄＤａｔｅは、要求された予約の開始日付および終了日付である。  
予約に十分なサーバーを割り当てることができたかどうかを返す。  
【００７８】
【表２】
2010503074.tif 000004
【００７９】
ここで図３Ａ〜３Ｂを参照すると、フロー図は、一実施形態にかかる、１つまたは複数のサービングコンピューターまたはサーバーの構成、割当て、および展開を図示している。３００で、ユーザが、ウェブクライアントまたはブラウザを使用して、予約を要求するためにユーザインターフェース１１８にアクセスする。３０２で、ユーザは、ユーザインターフェース１１８を使用して、予約に関連付けられたタイムスロットを選択する。３０４で、ユーザは、展開のタイプを選択することができる。ユーザが、サーバーセットアップのみを選択する場合、フローは３０６に進む。ユーザがシップメントファイルインストールを選択する場合、フローは３０８に進む。そうでない場合、フローは３１０に進み、ＯＦＦＩＣＥビルド／ＰＲインストールを行う。３１２で、ユーザがシップメントファイルインストールオプション、またはＯＦＦＩＣＥビルド／ＰＲインストールオプションを選択した場合、ユーザは、例えばＸＭＬファイルテンプレートなど、インストールに関連付けられたファイルテンプレートを選択することができる。
【００８０】
３１４で、ユーザは、サーバーのタイプおよび役割を選択することができる。３１６で、ユーザは、各サーバータイプに関連付けられたサーバーの数を選択することができる。３１８で、要求されたサーバーが、１つまたは複数のサーバープール内で使用可能であるかどうかを判定する。サーバーが使用可能ではない場合は、３２０で、ユーザは、異なるタイムスロットを選択および／または異なる数のサーバーを要求する、オプションを有する。要求されたサーバーが使用可能である場合は、３２２で、ｍａｃｈｉｎｅ．ｘｍｌファイルを生成して、フローは３２４に進む。
【００８１】
図３Ｂを参照すると、３２４で、現在の予約に関連付けられた情報を、データベース１１４に保存する。３２６で、ユーザ要求に関連するサーバーの構成（例えば、タイプ／役割）を含めて、展開が開始する。３２８で、要求された展開が成功したかどうかを判定する。展開が成功しなかった場合は、３３０で、ｍａｃｈｉｎｅ．ｘｍｌファイルが不成功な展開を引き起こしたかどうかを判定する。ｍａｃｈｉｎｅ．ｘｍｌファイルが不成功な展開を引き起こした原因でない場合は、３３２で、通知をＳＥおよび予約に関連するユーザに送信する。３３４で、トラブルシューティングプロシージャを実施して、トラブルシューティングプロシージャが完了するとフローは３２６に戻る。
【００８２】
しかしながら、ｍａｃｈｉｎｅ．ｘｍｌファイルが不成功な展開の原因であった場合は、３３６で、通知をユーザおよび／またはＯＰＭに送信する。３３８で、ｍａｃｈｉｎｅ．ｘｍｌファイルを訂正し、フローは３２６に戻る。一方、３２８で展開が成功であった場合は、フローは３４０に進み、全てのアクセス情報（例えば、ユーザ名、パスワードなど）を含め、成功の展開についての通知をユーザに送信する。３４２で、展開されたサーバーを、上記ユーザおよび任意の他の許可されたユーザが、テストおよび他の目的で使用することができる。３４２で、ユーザは、３４４でテスト期間を延長すること、または３４６でクラスタの再展開を要求することなどの、複数のオプションを有する。
【００８３】
ユーザが、延長されたテスト期間を要求する場合は、３４８で、その要求を満たすのに使用可能なサーバーがあるかどうかを判定する。その要求を満たすのに使用可能なサーバーがない場合、フローは３５０に進み、ここで、上記ユーザおよび任意の他のユーザは、テストを終了し、サインアウトすることができる。その後、フローは３５４に進み、サーバーをサーバープールに戻して解放する。３４８で使用可能なサーバーがある場合は、３５２で予約情報を更新して、フローは３４２に進む。ユーザが、要求されたサーバーの再展開を要求した場合は、３５６で、ｍａｃｈｉｎｅ．ｘｍｌファイルを変更するか更新し、フローは３２６に戻る。そうでない場合は、フローは３５４に進み、サーバーをサーバープールに戻して解放する。
【００８４】
図４Ａ〜４Ｉは、ネットワーク４００と、１つまたは複数のサーバープール４０２および４０４の１つまたは複数のテストサーバーなどの１つまたは複数のコンピューティングシステムの構成、割当て、および展開のための様々なコンポーネントとについての機能ブロック図を示す。図２の要素に、次の説明で言及する。図４Ｂに示されているように、Ｉ．ａで、オペレーティングシステムサービス４０６は、ウェイクアップし、プロキシによってウェブサービス４０８を呼び出して、テストサーバーのリストおよび各テストサーバーにおいて必要とされる次の展開ステップを取得する。Ｉ．ｂで、ウェブサービス４０８は、Ｄｅｐｌｏｙｉｎｇ（展開中）またはＥｘｐｉｒｉｎｇ（満了）のＲｅｓｅｒｖａｔｉｏｎ  Ｓｔａｔｕｓを有する予約についてデータベース４１０を照会する。
【００８５】
ウェブサービス４０８はまた、そのＲｅｓｖｓ＿Ｓｅｒｖｅｒｓテーブル内のＤｅｐｌＳｔａｔｕｓＶａｌｕｅＩＤがＤｏｎｅ（完了）に対応する、予約内のテストサーバーを見つける。これらのサーバーについて、ウェブサービス４０８は、Ｒｅｓｅｒｖａｔｉｏｎｓテーブルから予約ＤｅｐｌＳｔｅｐｓ値を取得し、展開ステップフラグについてその値を解析する。次いで、この展開ステップフラグを、テストサーバーのＤｅｐｌＳｔａｔｕｓＳｔａｇｅＩＤ値と比較して、次の展開ステップを判定する。Ｉ．ｃで、ウェブサービス４０８は、テストサーバー／次の展開ステップのペアをオペレーティングシステムサービス４０６に返す。
【００８６】
次に図４Ｃを参照すると、Ｉ．ｄで、オペレーティングシステムサービス４０６は、返されたテストサーバー／次の展開ステップのペアを通して反復する。次の展開ステップが、展開ステップ１から５である場合は、Ｉ．１−５で、オペレーティングシステムサービス４０６は、ストアドプロシージャへの呼出しを行って、ステップに対応するＥｖｅｎｔ（イベント）をスケジューリングする。Ｉ．ｆで、オペレーティングシステムサービス４０６は、プロキシによってＵｐｄａｔｅ  Ｄｅｐｌｏｙｍｅｎｔ  Ｓｔａｔｕｓを呼び出して、展開状況を更新する。Ｉ．ｇで、ウェブサービス４０８は、ストアドプロシージャを使用して、テストサーバーのＤｅｐｌＳｔａｇｅＩＤに、展開ステップに対応するＤｅｐｌｏｙｍｅｎｔ  Ｓｔａｇｅをセットし、ＤｅｐｌＳｔａｔｕｓＶａｌｕｅＩＤにＲｕｎｎｉｎｇ（動作中）をセットする。
【００８７】
図４Ｄを参照すると、次の展開ステップがＤｉｓｐａｃｈ（ディスパッチ）である場合は、Ｉ．ｅ．ｉ．６で、オペレーティングシステムサービス４０６は、プロキシによってウェブサービス４０８を呼び出して、マシンおよびシップメントファイルの位置について照会する。次の展開ステップがＡｄｄ  Ｕｓｅｒ（ユーザの追加）である場合は、Ｉ．ｅ．ｉ．７で、オペレーティングシステムサービス４０６は、プロキシによってウェブサービス４０８を呼び出して、予約ユーザについて照会する。Ｉ．ｅ．ｉｉで、ウェブサービス４０８は、情報についてデータベース４１０を照会する。次の展開ステップがＤｉｓｐａｃｈ（ディスパッチ）である場合は、Ｉ．ｅ．ｉｉｉ．６で、オペレーティングシステムサービス４０６は、プロセスを作成し、予約に対するＤｉｓｐａｃｈ（ディスパッチ）を開始する。次の展開ステップがＡｄｄ  Ｕｓｅｒ（ユーザの追加）である場合は、Ｉ．ｅ．ｉｉｉ．７で、オペレーティングシステムサービス４０６は、プロセスを作成し、テストサーバーに対してＡｄｄ  Ｕｓｅｒ（ユーザの追加）を開始する。Ｉ．ｆで、オペレーティングシステムサービス４０６は、ウェブサービス４０８を呼び出して、展開状況を更新する（Ｕｐｄａｔｅ  Ｄｅｐｌｏｙｍｅｎｔ  Ｓｔａｔｕｓ）。Ｉ．ｇで、ウェブサービス４０８は、データベース４１０内のストアドプロシージャを使用して、テストサーバーのＤｅｐｌＳｔａｇｅＩＤに、展開ステップに対応するＤｅｐｌｏｙｍｅｎｔ  Ｓｔａｇｅをセットし、ＤｅｐｌＳｔａｔｕｓＶａｌｕｅＩＤにＲｕｎｎｉｎｇ（動作中）をセットする。
【００８８】
図４Ｅを参照すると、ＩＩ．ａ．ｉ．１−５で、関連するスクリプトが実行されると、スクリプト実行状況がデータベース４１２に書き込まれる。ＩＩ．ａ．ｉｉ．１−５で、オペレーティングシステムサービス４０６がウェイクアップし、データベース４１２から、実行中のＥｖｅｎｔｓ（イベント）の状況を取得する。ＩＩ．ａ．ｉｉｉ．１−５で、オペレーティングシステムサービス４０６は、ウェブサービス４０８をプロキシによって呼び出して、その状況をデータベース４１０にプッシュする。ＩＩ．ａ．６−７で、Ｄｉｓｐａｃｈ（ディスパッチ）展開ステップ、またはＡｄｄ  Ｕｓｅｒ（ユーザの追加）展開ステップが実行されると、オペレーティングシステムサービス４０６は、ウェブサービス４０８をプロキシによって呼び出して、Ｄｅｐｌｏｙｍｅｎｔ  Ｓｔａｔｕｓを更新する。展開ステップが終了するか、エラーを発生する場合は、ＩＩ．ｂで、オペレーティングシステムサービス４０６は、ストアドプロシージャを呼び出し、ＤｅｐｌＳｔａｔｕｓＶａｌｕｅＩＤ値をＲｕｎｎｉｎｇ（動作中）からＤｏｎｅ（完了）またはＥｒｒｏｒ（エラー）のいずれかにリセットする。
【００８９】
ＤｅｐｌＳｔａｔｕｓＶａｌｕｅＩＤはＤｏｎｅ（完了）であるが、ＤｅｐｌＳｔａｇｅＩＤが、予約のＤｅｐｌＳｔｅｐｓで示された最後の展開ステップを表していない場合、オペレーティングシステムサービス４０６は、上述したように、次にウェイクアップするときに次の展開を開始することになる。ＤｅｐｌＳｔａｔｕｓＶａｌｕｅＩＤがＤｏｎｅ（完了）であり、ＤｅｐｌＳｔａｇｅＩＤが、予約のＤｅｐｌＳｔｅｐｓで示された最後の展開ステップを表している場合、予約のＲｅｓｅｒｖａｔｉｏｎ  ＳｔａｔｕｓがＤｅｐｌｏｙｉｎｇ（展開）であれば、Ｒｅｓｅｒｖａｔｉｏｎ  Ｓｔａｔｕｓは、Ｒｅａｄｙ（準備完了）にリセットされる。予約のＲｅｓｅｒｖａｔｉｏｎ  ＳｔａｔｕｓがＥｘｐｉｒｉｎｇ（満了）であれば、Ｒｅｓｅｒｖａｔｉｏｎ  Ｓｔａｔｕｓは、Ａｒｃｈｉｖｅｄ（アーカイブ済み）にリセットされ、その予約内の全てのサーバーのＡｖａｉｌａｂｉｌｉｔｙ  Ｓｔａｔｕｓは、Ｉｎ  Ｕｓｅ（使用中）からＲｅｓｅｒｖｅｄ（予約済み）またはＵｎｒｅｓｅｒｖｅｄ（未予約）のいずれかにリセットされる。
【００９０】
図４Ｆを参照すると、ユーザは、予約を新規作成する。ＩＩＩ．ａで、Ｒｅｓｅｒｖａｔｉｏｎ  ＴｙｐｅがＰｒｉｖａｔｅ  Ｒｅｌｅａｓｅ（ＰＲ）である場合、ユーザは、そのＰＲをソフトウェアライブラリ４１４に保存する。ＩＩＩ．ｂで、ユーザは、新しい予約情報を、ユーザインターフェース４１６を使用して提示する。ＩＩＩ．ｃで、データベース４１０は、ストアドプロシージャおよびウェブサービス４０８を使用して、提示された予約データをデータベース４１０に書き込む。これらのプロシージャによって、Ｒｅｓｅｒｖａｔｉｏｎ  Ｓｔａｔｕｓセットに、Ｎｏｔ  Ｙｅｔ  Ｂｅｇｕｎ（未開始）がセットされ、予約内の各テストサーバーのＤｅｐｌｏｙｍｅｎｔ  Ｓｔａｔｕｓフィールドに、Ｎｏｔ  Ｙｅｔ  Ｓｔａｒｔｅｄ（未開始）、Ｄｏｎｅ（完了）、および０がセットされ、予約内の各テストサーバーのＳｅｒｖｅｒ  Ａｖａｉｌａｂｉｌｉｔｙ  Ｓｔａｔｕｓに、Ｒｅｓｅｒｖｅｄ（予約済み）がセットされ、Ｒｅｓｅｒｖａｔｉｏｎ  Ｔｙｐｅに必要な展開ステップごとにＤｅｐｌｏｙｍｅｎｔ  Ｓｔｅｐ  Ｆｌａｇを含むように（例えば、Ｒｅｓｅｒｖａｔｉｏｎ  ＴｙｐｅがＢａｓｉｃである場合は、役割適用ステップは不要である）、予約のＤｅｐｌＳｔｅｐｓ値がセットされることになる。
【００９１】
図４Ｇを参照すると、新しい予約が開始する。ＩＶ．ａで、オペレーティングシステムサービス４０６は、ウェイクアップし、ウェブサービス４０８プロキシクラスを使用して、展開を開始すべきである新しい予約についてデータベース４１０を照会する。ＩＶ．ｂで、ウェブサービス４０８は、データベース４１０内のストアドプロシージャを使用して、これらの予約について照会し、これらのストアドプロシージャは、各予約に対応するＲｅｓｅｒｖａｔｉｏｎ  ＩＤを返す。この新しい予約について継続して図４Ｈを参照すると、ＩＶ．ｃで、ウェブサービス４０８は、予約詳細についてＲｅｓｅｒｖａｔｉｏｎ  ＩＤによってデータベース４１０を照会する。Ｒｅｓｅｒｖａｔｉｏｎ  ＴｙｐｅがＤｕｐｌｉｃａｔｅ  Ｃｌｕｓｔｅｒである場合は、ＩＶ．ｄで、ウェブサービス４０８は、シップメントファイルについてＣＭＤＢウェブサービス４１８を照会し、シップメントファイルをＦｉｌｅ  Ｓｈａｒｅ（ファイル共有）にコピーする。
【００９２】
ユーザがｍａｃｈｉｎｅ．ｘｍｌファイルをアップロードしていない場合は、ＩＶ．ｅで、ウェブサービス４０８は、ｍａｃｈｉｎｅ．ｘｍｌテンプレートに基づいてｍａｃｈｉｎｅ．ｘｍｌファイルを生成し、そのｍａｃｈｉｎｅ．ｘｍｌファイルをＦｉｌｅ  Ｓｈａｒｅ（ファイル共有）にコピーする。ＩＶ．ｆで、新しい予約の展開が、開始の準備ができる。Ｒｅｓｅｒｖａｔｉｏｎ  ＩＤおよびデータベース４１０内のストアドプロシージャを使用して、ウェブサービス４０８は、予約のＲｅｓｅｒｖａｔｉｏｎ  ＳｔａｔｕｓをＮｏｔ  Ｙｅｔ  Ｂｅｇｕｎ（未開始）からＤｅｐｌｏｙｉｎｇ（展開中）にリセットし、予約内の各テストサーバーのＳｅｒｖｅｒ  Ａｖａｉｌａｂｉｌｉｔｙ  Ｓｔａｔｕｓを、Ｒｅｓｅｒｖｅｄ（予約済み）からＩｎ  Ｕｓｅ（使用中）にリセットする。Ｒｅｓｅｒｖａｔｉｏｎ  ＳｔａｔｕｓがＤｅｐｌｏｙｉｎｇ（展開中）であり、予約内の各テストサーバーのＤｅｐｌｏｙｍｅｎｔ  ＳｔａｔｕｓがＮｏｔ  Ｙｅｔ  Ｓｔａｒｔｅｄ（未開始）、Ｄｏｎｅ（完了）、および０であるため、オペレーティングシステムサービス４０６は、上述したように、次にウェイクアップしたときに、予約の展開ステップを開始し始める。
【００９３】
図４Ｉを参照すると、Ｖ．ａで、ユーザは、ユーザインターフェース４１０の「Ｍｙ  Ｒｅｓｅｒｖａｔｉｏｎ」ページを使用してサインオフし、これによって予約が満了する。Ｖ．ｂ．で、ウェブサービス４０８は、ＯＳインストール展開ステップフラグだけを含むように予約のＤｅｐｌＳｔｅｐｓ値をセットし、予約内の全てのテストサーバーのＤｅｐｌｏｙｍｅｎｔ  ＳｔａｔｕｓフィールドにＮｏｔ  Ｙｅｔ  Ｓｔａｒｔｅｄ（未開始）、Ｄｏｎｅ（完了）、および０をセットし、Ｒｅｓｅｒｖａｔｉｏｎ  ＳｔａｔｕｓにＥｘｐｉｒｉｎｇ（満了）をセットする。オペレーティングシステムサービス４０６は、次にウェイクアップするとき、上述したように、予約内の全てのテストサーバー上でＯＳインストール展開ステップを開始する。ＯＳインストールは、ＤｅｐｌＳｔｅｐｓ値で示される唯一のステップなので、予約内の全てのテストサーバーにおいてＯＳインストールステップを終了すると、最後の展開ステップが完了する。上述したように、オペレーティングシステムサービス４０６は、ここで、Ｒｅｓｅｒｖａｔｉｏｎ  Ｓｔａｔｕｓをリセットする。Ｒｅｓｅｒｖａｔｉｏｎ  Ｓｔａｔｕｓが、Ｅｘｐｉｒｉｎｇ（満了）であるので、オペレーティングシステムサービス４０６は、Ｒｅｓｅｒｖａｔｉｏｎ  ＳｔａｔｕｓをＡｒｃｈｉｖｅｄ（アーカイブ済み）にリセットし、予約内の全てのテストサーバーのＡｖａｉｌａｂｉｌｉｔｙ  Ｓｔａｔｕｓをリセットする。
【００９４】
図５Ａ〜５Ｃは、ユーザが新規予約を作成すること、および／または既存の予約を管理すること（これらには限定されない）を可能にするユーザインターフェース５００の様々な例を示す。一例として、ユーザは、ユーザインターフェース５００を使用して、特定のテスト目的で複数のサーバーを予約することができる。次に、ユーザインターフェース５００は、所与のドメイン内のサーバープールのサーバー可用性情報をレンダリングする。ある要求が提示されると、上で説明したコンポーネントは、ユーザ要求に従って、複数のサーバーを動的に構成し、割り当て、および／または展開するように動作する。上述したように、ユーザは、要求が満たされて、サーバーが構成され、割り当てられ、展開されると、通知（例えば、電子メール）を受け取る。図５Ａに示されているように、ユーザインターフェース５００は、ユーザに警告し、通知するように機能する、様々な情報を表示するためのアナウンスメント（ａｎｎｏｕｎｃｅｍｅｎｔ）エリア５０２を含む。ユーザインターフェース５００は、複数のオプションがユーザによる対話のために提示されるナビゲーションエリア５０４を含む。
【００９５】
ユーザインターフェース５００は、ユーザが、ある時間期間（例えば、デイリー、ウィークリーなど）の間のサーバーの可用性を見ることができるカレンダエリア５０６も含む。例えば、ユーザが、あるテストのために、２台のサーバーを必要とする新規予約を作成したいと仮定する。このユーザは、ユーザインターフェース５００を使用して、Ｒｅｄｍｏｎｄ位置が５４台のサーバーをサーバープール内に有し、一方Ｏｆｆ−Ｒｅｄｍｏｎｄ位置は２６台のサーバーをサーバープール内に有することを見ることができる。このユーザは、ユーザインターフェース５００を使用して、他のユーザの予約も見ることができる。例えば、このユーザは、９台のサーバーが２００４年１月２７日から２００４年１月
２８日まで予約され、５台のサーバーが２００４年１月２８日から２００４年１月２９日まで予約され、３台のサーバーが２００４年１月２８日から２００４年１月３１日まで予約されていることを見ることができる。
【００９６】
図５Ｂを参照すると、ユーザは、ナビゲーションエリア５０４からＮｅｗ  Ｒｅｓｅｒｖａｔｉｏｎ（新規予約）を選択している。Ｎｅｗ  Ｒｅｓｅｒｖａｔｉｏｎ情報は、Ｇｅｎｅｒａｌ  Ｉｎｆｏ（全般的情報）エリア５０８を含む。Ｇｅｎｅｒａｌ  Ｉｎｆｏエリア５０８は、Ｃｕｒｒｅｎｔ  ｕｓｅｒ（現在のユーザ）、Ａｄｄｉｔｉｏｎａｌ  Ｕｓｅｒｓ（追加ユーザ）、Ｒｅｓｅｒｖａｔｉｏｎ  Ｐｕｒｐｏｓｅ（予約の目的）、ＯＰＭ、サーバー指定、およびデバッギングツールクエリを含む。Ｎｅｗ  Ｒｅｓｅｒｖａｔｉｏｎ情報は、Ｒｅｓｅｒｖａｔｉｏｎ  ｔｉｍｅ（予約時間）エリア５１０を含む。ユーザは、ドロップダウンカレンダを使用するか日付を入力することによって、開始日付および終了日付を選択することができる。Ｒｅｓｅｒｖａｔｉｏｎ  ｔｉｍｅエリア５１０は、ユーザが好ましい開始日付および終了日付を入力すると、ある時間期間の間に使用可能なサーバーの数についての通知を含む。Ｎｅｗ  Ｒｅｓｅｒｖａｔｉｏｎ情報は、Ｄｅｐｌｏｙｍｅｎｔ  Ｉｎｆｏ（展開情報）エリア５１２も含む。Ｄｅｐｌｏｙｍｅｎｔ  Ｉｎｆｏエリア５１２は、Ｄｅｐｌｏｙｍｅｎｔ  ｔｙｐｅ（展開タイプ）、Ｂｕｉｌｄ  Ｎｕｍｂｅｒ（ビルド番号）、Ｓｅｒｖｉｃｅｓ（サービス）、Ｓｈｉｐ  ｂｕｉｌｄオプションまたはＤｅｂｕｇ  ｂｕｉｌｄオプション、ｍａｃｈｉｎｅ．ｘｍｌテンプレートオプション、カスタムｍａｃｈｉｎｅ．ｘｍｌオプション、およびタイプ／役割オプションを含む。図５Ｂに示されているように、ユーザは、２台のＦＥ−ＡＷＳ１サーバー、１台のＳＱＬ−ＡＷＳサーバー、および１台のＣＤＳ−ＡＷＳサーバーを要求している。上で説明したように、ユーザ入力は、様々なコンポーネントによって、要求されたアイテムを構成し、割り当て、展開するのに使用される。
【００９７】
図５Ｃは、ユーザがナビゲーションエリア５０４からＭｙ  ｒｅｓｅｒｖａｔｉｏｎｓを選択した後のユーザインターフェース５００を示す。図５Ｃに示されているように、ユーザは、様々な予約に関連付けられた、関連する詳細の全てを再検討することができる。ユーザは、予約の編集、予約の取り消し、サーバーをサーバープールに返すこと、予約の延長、および特定の展開の再実行など、複数の使用可能なオプションを有する。本明細書で説明されるユーザインターフェース５００を、所望のプリファレンスに従って構成することができ、本発明は、本明細書で説明される特定の例および／または実施形態に限定されることを意図されていない。
【００９８】
図５Ｃに示されているように、ユーザインターフェース５００は、「ｃｕｒｒｅｎｔ  ｓｔａｔｕｓ（現在の状況）」フィールドを含む。一実施形態で、「ｃｕｒｒｅｎｔ  ｓｔａｔｕｓ」フィールドは、次のような複数の値を含むことができる。すなわち、「Ｎｏｔ  ｓｔａｒｔｅｄ  ｙｅｔ」（展開が、予約されたマシン上で開始されていない）、「Ｄｅｐｌｏｙｉｎｇ」（展開プロセス中にある）、「Ｃｏｍｐｌｅｔｅ」（展開が成功裏に完了し、ユーザは現在そのマシンを使用することができる）、「ＸＭＬ  ｆｉｌｅ  ｅｒｒｏｒ」（使用されたｍａｃｈｉｎｅ  ｘｍｌファイルのエラー。ユーザまたはＯＰＭがｍａｃｈｉｎｅ  ｘｍｌファイルを訂正する必要がある）、および「Ｓｙｓｔｅｍ  ｅｒｒｏｒ」（展開プロセスに関する問題）などの、複数の値を含むことができる。
【００９９】
このユーザインターフェースを使用するテスタの例は、次の通りである。このテスタは、デベロッパがコードをチェックインし、ＭＳＩパッケージをＳＨ／ＳＴクラスタに追加できるようになる前に、ＯＦＦＩＣＥ  ＡＷＳウェブサイト内で１つの特徴を検証することを必要とする。このテスタは、ウェブブラウザを使用して、ユーザインターフェース５００をロードする。ユーザインターフェース５００を使用して、このテスタは、翌日にＡＷＳタイプのクラスタを予約する。また、このテスタは、ユーザインターフェース５００を使用してｍａｃｈｉｎｅ．ｘｍｌファイルを編集して、新しいパッケージを追加し、ＰＲドロップのパスを指定する。このテスタは、翌朝、入力された情報ごとに予約されたクラスタ内のサーバーをリストして展開が完了したことを示す、電子メール通知を受信する。このテスタは、そのクラスタに対して任意のテストを実行することができると同時に、様々な機能をチェックするためにサーバーにローカルにログインすることもできる。全てがＯＫであることを検証した後、このテスタは、コードをチェックインするためにデベロッパに電子メールを送信する。このテスタは、Ｍｙ  Ｒｅｓｅｒｖａｔｉｏｎｓからサインアウトすることができ、これによって予約が満了する。
【０１００】
デバッギングの例を下に示す。デベロッパは、ＡＷＳチームの一部である。ある機能が、不可解なことに、あるインテグレーションクラスタ上でエラーになる。デベロッパは、インテグレーション環境内で直接にデバッグすることはできない。これは、クラスタ全体および他のサービスに影響する可能性があるからである。デベロッパは、ユーザインターフェース５００を使用してＡＷＳタイプクラスタを予約し、インテグレーションから最新のシップメントファイルを選択する。この入力に基づいて、正確なコンテンツおよびコードは、本明細書で説明されるように、選択されたシップメントファイルに従って、予約されたクラスタにインストールされる。デベロッパは、元のインテグレーションクラスタに影響されずに、デバッギング用の類似する環境を有する。
【０１０１】
図６は、一実施形態にかかる、様々なスクリプトおよび対応するイベントに関連付けられた複数のイベントおよびスクリプトのテーブルを示す。各スクリプトは、対応するイベントエントリをイベントテーブル内に有しており、図６に示されるように、各イベントを、ｓｃｒｉｐｔ＿ｔａｓｋテーブル内のエントリによって、対応するスクリプトにリンクすることができる。イベントが、例えばテストサーバーなどのコンピューティングシステムについてスケジューリングされると、新しいエントリが、コンピューティングシステムおよびイベントへの参照を含んでいるｅｖｅｎｔ＿ｓｃｈｅｄｕｌｅテーブル内に作成される。スケジューリングされたイベントのスケジューリングされた時刻に達すると、スクリプトの実行状況が、コンピューティングシステム上でｅｖｅｎｔ＿ｓｃｈｅｄｕｌｅテーブル内の他のフィールド、すなわち、ｓｔａｒｔ＿ｔｉｍｅ、ｅｎｄ＿ｔｉｍｅ、ｓｔａｔｕｓ、ｓｔａｔｕｓ＿ｃｏｄｅ（例えば、エラーコード用）などに書き込まれる。
【０１０２】
様々な展開構成が、上述した様々なコンポーネントを使用して使用可能である。複数の展開可能性を以下で提示する。
【０１０３】
開放されたＯＦＦＩＣＥビルドインストールは、オフィシャルＯＦＦＩＣＥビルドを使用することによってサーバーのクラスタをセットアップする。ユーザは、まずビルドを決定し、その後、使用するｍａｃｈｉｎｅ．ｘｍｌファイルテンプレートを選択することができる。上述したように、ユーザは、アップロードし、チェックする必要がある、カスタムｍａｃｈｉｎｅ．ｘｍｌファイルテンプレートを使用することもできる。マシンタイプのリストが、テンプレート内で定義されたサーバー役割に従って、インストールに関してリストされる。
【０１０４】
ユーザは、サーバー役割ごとに必要なサーバーの数を決定することもできる。必要な数のサーバーが、サーバープールから自動的に選択され、ｍａｃｈｉｎｅ．ｘｍｌファイルが、サーバープールの選択されたサーバーからのサーバー名を使用して生成される。ユーザは、必要な場合は手動更新を含め、このｍａｃｈｉｎｅ．ｘｍｌファイルをレビューすることができる。この更新されたバージョンを提示して保存し、その結果、この更新されたバージョンを、展開に使用することができる。構文およびタグは、保存される前に、更新されたｍａｃｈｉｎｅ．ｘｍｌファイルにおいて自動的に検証される。
【０１０５】
インストールは、複数のサービスをサポートすることができ、この複数のサービスには、共有コンポーネント（Ｓｈａｒｅｄ  ｃｏｍｐｏｎｅｎｔ）、ＵＬＳ、ＡＷＳ、リダイレクトサービス、Ｒ＆Ｒ、ワトソン（Ｗａｔｓｏｎ）、ＩＰＯツール、Ｖｉｓｉｏが含まれるが、これらには限定されない。ユーザインターフェースには、サービスによってグループ化された複数の予め定義されたｘｍｌテンプレートが含まれる。サービスごとに複数のテンプレートがあり、該テンプレートは、サービスごとに共通のインストールシナリオを定義する（例えば、共有サーバー上に全ての可能なコンポーネントをインストールするコンパクトインストール、コンテンツを有する、または有さないビルドなど）。ある特定の環境について全てのサービスが現在インストールされているテンプレートもある（例えば、ＴＣ５、インテグレーションなど）。
【０１０６】
シップメントファイルインストールは、クラスタまたは環境に現在展開されている全てのジョブ（例えば、コードおよびコンテンツ）を含む。既存クラスタを、シップメントファイルインストールを使用することによってすばやく複製することができる。このインストールは、ある特定の環境をシミュレートする必要があるデバッギングまたはテストに有用である。シップメントファイルに基づく展開は、対応するコンテンツとともにコードをインストーする効率的な方法でもある。一部のシップメントファイルは、Ｓｅｌｆｈｏｓｔ、Ｓｅｌｆｔｅｓｔ、インテグレーションなどを含む。ジョブがこれらのクラスタに展開されるたびに、これらの特定のクラスタについてのシップメントファイルが更新され、ＣＭＤＢサービスに保存される。以前のシップメントファイルは、アーカイブ済みとしてマークされる。コードの最新ビルドも、シップメントファイルに含まれる。
【０１０７】
ユーザがシップメントファイルを選択した後に、そのユーザは、使用するｍａｃｈｉｎｅ  ｘｍｌファイルテンプレートを選択することもできる。異なるｍａｃｈｉｎｅ．ｘｍｌファイルを使用することによって、ユーザは、展開されたコンテンツをカスタマイズすることができる。例えば、ユーザは、全ての言語ではなく英語をインストールすることを選択することができる。必要なサーバー役割は、ｍａｃｈｉｎｅ．ｘｍｌファイルに含まれる情報に基づいて自動的に決定される。ユーザは、サーバー役割ごとにサーバーの数を決定することができ、予約されたサーバー名が、自動的に追加され、正しいｍａｃｈｉｎｅ．ｘｍｌファイルが生成される。
【０１０８】
ＰＲインストールは、開放されたＯＦＦＩＣＥビルドインストール同様である。しかしながら、オフィシャルのＯＦＦＩＣＥビルドを使用する代わりに、ユーザは、既存サービスまたは新規サービスのＰＲビルドを要求する。ユーザは、ＰＲ位置の指定を与えることによってＰＲビットをインストールする。新しいサービス（例えば、新しいジュークボックスプロパティの追加など）のためなど、他の変更を要求することもできる。
【０１０９】
基本的なサーバーセットアップインストールは、セットアップ中にＯＦＦＩＣＥコードを適用しない。ユーザは、サーバータイプを選択し、その後、サーバーの数を決定することができる。基本的なサーバーセットアップインストールは、ＯＳと共通構成アイテムとを、予約されたサーバーにインストールする。基本的なサーバーセットアップインストールは、複数のクリーンサーバーをすばやくセットアップすることによって、ＯＦＦＩＣＥサーバーセットアップに使用することができる。他のステップを追加して、他のサーバーコンポーネントをインストールすることができる。
【０１１０】
例えば、サービスがホスティングされ、統合され、最終的にリリースされる前に、サーバークラスタを動的に構成し、割り当て、および／または展開して、そのサービスをテストすることができる。さらなる例として、ユーザは、所望のときに（例えば、デイリーベースで）サーバーのクラスタを直接に予約することができる。サーバーの予約されたクラスタを、ユーザの要求に従って、必要なコードおよび／またはコンテンツとともに動的に構成することができる。さらに、ユーザを、予約コンテンツに基づいてアクセス許可を用いて指定することができる。その後、１人または複数のユーザが、テストならびに他の実行シナリオおよび構成シナリオを、サーバーの割り当てられたクラスタ上で実行することができる。予約が満了すると、サーバーのクラスタを、サーバーの使用可能プールに返すことができ、解放されたサーバーを、後続の予約に使用することができる。諸実施形態は、一般的ではない目的のために特別なクラスタを構成するように構成されることもある。例えば、大きいクラスタは、典型的に、パフォーマンステストに必要である。全ての使用可能なサーバーを１つの大きいクラスタにグループ化することによって、大きいクラスタを構成し、割り当て、および／または展開することができる。
【０１１１】
例示的オペレーティング環境
次に図７を参照する。次の議論は、本発明の諸実施形態を実装できる適切なコンピューティング環境についての簡潔で一般的な説明を提供することを意図されたものである。本発明を、パーソナルコンピューター上のオペレーティングシステムにおいて動作するプログラムモジュールと共に実行される、プログラムモジュールの一般的なコンテキストで説明するが、当業者には、本発明を、他のタイプのコンピューターシステムおよびプログラムモジュールとの組合せで実装することもできることが認識されよう。
【０１１２】
一般に、プログラムモジュールは、特定のタスクを実行するか特定の抽象データ型を実装する、ルーチン、プログラム、コンポーネント、データ構造、および他のタイプの構造を含む。さらに、本発明を、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースまたはプログラマブルな家庭用電化製品、ミニコンピューター、メインフレームコンピューターなどを含む、他のコンピューターシステム構成を用いて実施することができることを、当業者は認識されよう。本発明は、通信ネットワークを介してリンクされるリモート処理デバイスによってタスクが実行される、分散コンピューティング環境において実施することもできる。分散コンピューティング環境では、プログラムモジュールを、ローカルメモリストレージデバイスとリモートメモリストレージデバイスの両方に配置することができる。
【０１１３】
ここで図７を参照して、本発明の諸実施形態に関する例示的なオペレーティング環境を説明する。図７に示されているように、コンピューター２は、汎用デスクトップ、ラップトップ、ハンドヘルド、あるいは、１つまたは複数のアプリケーションプログラムを実行できる他のタイプのコンピューターを含む。コンピューター２は、少なくとも１つの中央処理ユニット８（「ＣＰＵ」）、ランダムアクセスメモリ１８（「ＲＡＭ」）および読み取り専用メモリ（「ＲＯＭ」）２０を含むシステムメモリ１２、ならびにメモリをＣＰＵ８に結合するシステムバス１０を含む。スタートアップ中などにコンピューター内の要素間で情報を転送するのを助ける基本ルーチンを含む基本入出力システムが、ＲＯＭ  ２０に格納される。コンピューター２は、さらに、オペレーティングシステム３２、アプリケーションプログラム、および他のプログラムモジュールを格納する大容量記憶装置１４を含む。
【０１１４】
大容量記憶装置１４は、システムバス１０に結合された大容量記憶コントローラ（図示せず）を介してＣＰＵ８に接続される。大容量記憶装置１４およびそれに関連するコンピューター読取可能媒体は、コンピューター２の不揮発性ストレージを提供する。本明細書に含まれるコンピューター読取可能媒体についての記述は、ハードディスクまたはＣＤ−ＲＯＭドライブなどの大容量記憶装置に言及しているが、当業者は、コンピューター読取可能媒体を、コンピューター２によってアクセス可能または利用可能な任意の使用可能な媒体とすることができることを理解されたい。
【０１１５】
限定ではなく例として、コンピューター読取可能媒体は、コンピューター記憶媒体および通信媒体を含むことができる。コンピューター記憶媒体は、コンピューター読取可能命令、データ構造、プログラムモジュール、または他のデータなどの情報の記憶のための任意の方法またはテクノロジで実装される、揮発性および不揮発性、リムーバブルおよび非リムーバブルの媒体を含む。コンピューター記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリまたは他の半導体メモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（「ＤＶＤ」）または他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気記憶装置、あるいは所望の情報を格納するのに使用可能でありコンピューター２がアクセス可能な任意の他の媒体を含むが、これらには限定されない。
【０１１６】
本発明の様々な実施形態によると、コンピューター２は、例えばローカルネットワーク、インターネットなどのネットワーク４を介してリモートコンピューターとの論理接続を使用して、ネットワーク化された環境で動作することができる。コンピューター２は、バス１０に接続されたネットワークインターフェースユニット１６を介してネットワーク４に接続することができる。ネットワークインターフェースユニット１６を利用して、他のタイプのネットワークおよびリモートコンピューティングシステムに接続することもできることを理解されたい。コンピューター２は、キーボード、マウスなど（図示せず）を含め、複数の他のデバイスからの入力を受け取って、処理する、入出力コントローラ２２を含むことができる。同様に、入出力コントローラ２２は、ディスプレイ画面、プリンタ、または他のタイプの出力デバイスに出力を提供することができる。
【０１１７】
上記で簡潔に述べたように、本件出願人である米国ワシントン州レッドモンドのＭＩＣＲＯＳＯＦＴ  ＣＯＲＰＯＲＡＴＩＯＮによるＷＩＮＤＯＷＳ（登録商標）ＸＰオペレーティングシステムなど、ネットワーク化されたパーソナルコンピューターの動作を制御するのに適したオペレーティングシステム３２を含め、複数のプログラムモジュールおよびデータファイルを、コンピューター２の大容量記憶装置１４およびＲＡＭ１８に格納することができる。大容量記憶装置１４およびＲＡＭ１８は、１つまたは複数のプログラムモジュールを格納することもできる。具体的には、大容量記憶装置１４およびＲＡＭ１８は、ワードプロセッシングアプリケーション２８、スプレッドシートアプリケーション３０、電子メールアプリケーション３４、ドローイングアプリケーションなどのアプリケーションプログラムを格納することができる。
【０１１８】
本発明の様々な実施形態を、（１）コンピューターシステム上で動作するコンピューターで実施されるアクトのシーケンスもしくはプログラムモジュールとして、および／または（２）コンピューターシステム内の相互接続された機械論理回路もしくは回路モジュールとして、実施することができることを理解されたい。実装は、本発明を実装するコンピューティングシステムのパフォーマンス要件に依存する選択の問題である。したがって、関連するアルゴリズムを含む論理的なオペレーションを、オペレーション、構造的デバイス、アクト、またはモジュールとして様々に称することがある。添付の特許請求の範囲に記載された本発明の精神および範囲から逸脱することなく、これらのオペレーション、構造的デバイス、アクト、およびモジュールを、ソフトウェア、ファームウェア、特殊目的デジタルロジック、およびこれらの任意の組合せで実装することができることを当業者は理解されよう。
【０１１９】
本発明を、様々な例示的実施形態に関して説明してきたが、当業者は、添付の特許請求の範囲の範囲内でこれらに多くの変更を行うことができることを理解されよう。したがって、本発明の範囲は、決して上記の説明によって限定されるものではなく、添付の特許請求の範囲を参照することのみによってその全体が判断されることが意図されている。
【０１２０】
次の付録ＡおよびＢは、一実施形態の下で複数のコンピューティングシステムを動的に構成し、割り当て、展開する際に使用される代表的なスキーマファイルを示すものである。
【０１２１】
付録Ａ
【０１２２】
【表３−１】
2010503074.tif 000005
【０１２３】
【表３−２】
2010503074.tif 000006
【０１２４】
【表３−３】
2010503074.tif 000007
【０１２５】
【表３−４】
2010503074.tif 000008
【０１２６】
付録Ｂ
【０１２７】
【表４−１】
2010503074.tif 000009
【０１２８】
【表４−２】
2010503074.tif 000010
【０１２９】
【表４−３】
2010503074.tif 000011
【０１３０】
【表４−４】
2010503074.tif 000012
【０１３１】
【表４−５】
2010503074.tif 000013
【０１３２】
【表４−６】
2010503074.tif 000014
【０１３３】
【表４−７】
2010503074.tif 000015
【０１３４】
【表４−８】
2010503074.tif 000016
【０１３５】
【表４−９】
2010503074.tif 000017
【０１３６】
【表４−１０】
2010503074.tif 000018
【０１３７】
【表４−１１】
2010503074.tif 000019
【０１３８】
【表４−１２】
2010503074.tif 000020
【０１３９】
【表４−１３】
2010503074.tif 000021
【０１４０】
【表４−１４】
2010503074.tif 000022
【０１４１】
【表４−１５】
2010503074.tif 000023
【０１４２】
【表４−１６】
2010503074.tif 000024
【０１４３】
【表４−１７】
2010503074.tif 000025
【０１４４】
【表４−１８】
2010503074.tif 000026
【０１４５】
【表４−１９】
2010503074.tif 000027
【０１４６】
【表４−２０】
2010503074.tif 000028
【０１４７】
【表４−２１】
2010503074.tif 000029
【０１４８】
【表４−２２】
2010503074.tif 000030
【０１４９】
【表４−２３】
2010503074.tif 000031
【０１５０】
【表４−２４】
2010503074.tif 000032
【０１５１】
【表４−２５】
2010503074.tif 000033
【０１５２】
【表４−２６】
2010503074.tif 000034
【０１５３】
【表４−２７】
2010503074.tif 000035
【０１５４】
【表４−２８】
2010503074.tif 000036
【０１５５】
【表４−２９】
2010503074.tif 000037
【０１５６】
【表４−３０】
2010503074.tif 000038
【０１５７】
【表４−３１】
2010503074.tif 000039
【０１５８】
【表４−３２】
2010503074.tif 000040
【０１５９】
【表４−３３】
2010503074.tif 000041
【０１６０】
【表４−３４】
2010503074.tif 000042
【０１６１】
【表４−３５】
2010503074.tif 000043
【０１６２】
【表４−３６】
2010503074.tif 000044
【０１６３】
【表４−３７】
2010503074.tif 000045
【０１６４】
【表４−３８】
2010503074.tif 000046
【０１６５】
【表４−３９】
2010503074.tif 000047
【０１６６】
【表４−４０】
2010503074.tif 000048
【０１６７】
【表４−４１】
2010503074.tif 000049
【０１６８】
【表４−４２】
2010503074.tif 000050
【０１６９】
【表４−４３】
2010503074.tif 000051
【０１７０】
【表４−４４】
2010503074.tif 000052
【０１７１】
【表４−４５】
2010503074.tif 000053
【０１７２】
【表４−４６】
2010503074.tif 000054
【０１７３】
【表４−４７】
2010503074.tif 000055
【０１７４】
【表４−４８】
2010503074.tif 000056
【０１７５】
【表４−４９】
2010503074.tif 000057
【０１７６】
【表４−５０】
2010503074.tif 000058
【０１７７】
【表４−５１】
2010503074.tif 000059
【０１７８】
【表４−５２】
2010503074.tif 000060
【０１７９】
【表４−５３】
2010503074.tif 000061
【０１８０】
【表４−５４】
2010503074.tif 000062
【０１８１】
【表４−５５】
2010503074.tif 000063
【０１８２】
【表４−５６】
2010503074.tif 000064
【０１８３】
【表４−５７】
2010503074.tif 000065
【０１８４】
【表４−５８】
2010503074.tif 000066
【０１８５】
【表４−５９】
2010503074.tif 000067
【０１８６】
【表４−６０】
2010503074.tif 000068
【０１８７】
【表４−６１】
2010503074.tif 000069
【０１８８】
【表４−６２】
2010503074.tif 000070
【０１８９】
【表４−６３】
2010503074.tif 000071
【０１９０】
【表４−６４】
2010503074.tif 000072
【０１９１】
【表４−６５】
2010503074.tif 000073
【０１９２】
【表４−６６】
2010503074.tif 000074
【０１９３】
【表４−６７】
2010503074.tif 000075
【０１９４】
【表４−６８】
2010503074.tif 000076
【０１９５】
【表４−６９】
2010503074.tif 000077
【０１９６】
【表４−７０】
2010503074.tif 000078
【０１９７】
【表４−７１】
2010503074.tif 000079
【０１９８】
【表４−７２】
2010503074.tif 000080
【０１９９】
【表４−７３】
2010503074.tif 000081
【０２００】
【表４−７４】
2010503074.tif 000082
【０２０１】
【表４−７５】
2010503074.tif 000083
【０２０２】
【表４−７６】
2010503074.tif 000084
【０２０３】
【表４−７７】
2010503074.tif 000085
【０２０４】
【表４−７８】
2010503074.tif 000086
【０２０５】
【表４−７９】
2010503074.tif 000087
【０２０６】
【表４−８０】
2010503074.tif 000088
【０２０７】
【表４−８１】
2010503074.tif 000089
【０２０８】
【表４−８２】
2010503074.tif 000090
【０２０９】
【表４−８３】
2010503074.tif 000091
【０２１０】
【表４−８４】
2010503074.tif 000092
【０２１１】
【表４−８５】
2010503074.tif 000093
【０２１２】
【表４−８６】
2010503074.tif 000094
【０２１３】
【表４−８７】
2010503074.tif 000095
【０２１４】
【表４−８８】
2010503074.tif 000096
【０２１５】
【表４−８９】
2010503074.tif 000097
【０２１６】
【表４−９０】
2010503074.tif 000098
【０２１７】
【表４−９１】
2010503074.tif 000099
【０２１８】
【表４−９２】
2010503074.tif 000100
【図１】
2010503074.tif 000101
【図２】
2010503074.tif 000102
【図３Ａ】
2010503074.tif 000103
【図３Ｂ】
2010503074.tif 000104
【図４Ａ】
2010503074.tif 000105
【図４Ｂ】
2010503074.tif 000106
【図４Ｃ】
2010503074.tif 000107
【図４Ｄ】
2010503074.tif 000108
【図４Ｅ】
2010503074.tif 000109
【図４Ｆ】
2010503074.tif 000110
【図４Ｇ】
2010503074.tif 000111
【図４Ｈ】
2010503074.tif 000112
【図４Ｉ】
2010503074.tif 000113
【図５Ａ】
2010503074.tif 000114
【図５Ｂ】
2010503074.tif 000115
【図５Ｃ】
2010503074.tif 000116
【図６】
2010503074.tif 000117
【図７】
2010503074.tif 000118
【国際調査報告】
2010503074.tif 000119
2010503074.tif 000120