(57)【要約】  仮想環境は、そこで実施される仮想マシンとアプリケーション・プログラムのライフ・サイクルを調整するよう構成することができる。１実装形態では、仮想環境はアプリケーション層と仮想マシン層を含む。アプリケーション層は仮想マシン層で通信を行い、アプリケーション・プログラムと連携して、仮想マシンの作成と削除を調整し指示する。例えば、アプリケーション層はアプリケーション・プログラムを開始するための要求を受け取る。アプリケーション層は、作成すべき仮想マシンの種類および／または数の関連するアプリケーションのプロパティを決定する。次にアプリケーション層は適切な仮想マシンの作成を（仮想マシン層を通じて）指示し、さらに要求されたアプリケーション・プログラムのインストールを指示する。作成された仮想マシンからアプリケーション・プログラムが除去されたことを検出した場合、アプリケーション層は自動的に対応する仮想マシンの除去または廃止を指示することができる。
2011524053.tif 000002
【特許請求の範囲】
【請求項１】
仮想マシン層（１０７）と、１つまたは複数の仮想マシン（１５０）で実行される１つまたは複数のアプリケーション・プログラム（１３５）とをさらに備えるコンピュータ化されたシステム（１００）のアプリケーション層（１０３）において、前記アプリケーション層が、前記仮想マシン層を通して前記１つまたは複数のアプリケーション・プログラムに対する１つまたは複数の仮想マシンの作成と操作を初期化し管理する方法であって、
アプリケーション層（１０３）において、アプリケーション・プログラム（１３５）を開始するための１つまたは複数の要求（１１３）を受け取るステップ（２００）と、
前記要求されたアプリケーション・プログラムの１つまたは複数のプロパティ（１３７）から、前記要求されたアプリケーション・プログラムを実行するために１つまたは複数の仮想マシン（１５０）のうちどれをデプロイすべきかを決定するステップ（２１０）と、
前記要求されたアプリケーション・プログラムに対して前記決定された１つまたは複数の仮想マシン（１５０）をデプロイするための１つまたは複数の仮想マシン命令（１４７）を前記アプリケーション層から仮想マシン層（１０７）に送るステップ（２２０）と、
前記要求されたアプリケーション・プログラムを前記デプロイした１つまたは複数の仮想マシンにインストールするステップ（２３０）と
を含む方法。
【請求項２】
前記アプリケーション層（１０３）が、前記アプリケーション・プログラムを開始するための前記要求（１１３）を受け取るエグゼクティブ・アプリケーション（１０５）を備え、
前記エグゼクティブ・アプリケーション（１０５）が、前記受け取ったプロパティ（１３７）を前記１つまたは複数の仮想マシン命令（１４７）に変換する
ことを特徴とする請求項１に記載の方法。
【請求項３】
前記仮想マシン層（１０７）が、前記１つまたは複数の仮想マシン命令（１４７）を前記エグゼクティブ・アプリケーション（１０５）から受け取る１つまたは複数の仮想マシン・マネージャ（１２０）を備えることを特徴とする請求項２に記載の方法。
【請求項４】
前記要求されたアプリケーション（１３５）に対応する前記プロパティ（１３７）が、前記要求されたアプリケーション・プログラム（１３５）に関連付けられた１つまたは複数の宣言的なモデル（１１５）を備え、
前記１つまたは複数の宣言的なモデルが、前記決定された仮想マシンに対する１つまたは複数の構成を備える
ことを特徴とする請求項２に記載の方法。
【請求項５】
前記要求されたアプリケーション（１３５）に対応する前記プロパティ（１３７）が、前記要求されたアプリケーション（１３５）をデプロイすべき１つまたは複数の物理ホスト（１３０）を示すことを特徴とする請求項４に記載の方法。
【請求項６】
前記要求されたアプリケーション（１３５）に対応する前記プロパティ（１３７）が、前記要求されたアプリケーション・プログラム（１３５）に対してデプロイすべき仮想マシン（１５０）の数と種類を示すことを特徴とする請求項４に記載の方法。
【請求項７】
前記仮想マシン（１５０）の前記数と種類の一部または全部が、前記要求されたアプリケーションのバージョンに依存することを特徴とする請求項６に記載の方法。
【請求項８】
前記要求されたアプリケーション・プログラムをインストールする前記動作（３３０）がさらに、前記アプリケーション層（１０３）が１つまたは複数の指示（１６０）を前記１つまたは複数のデプロイされた仮想マシン（１５０）の各々のドライバに送るステップを含むことを特徴とする請求項１に記載の方法。
【請求項９】
データ構造（１２３）を更新して、前記要求されたアプリケーションと、前記デプロイされた１つまたは複数の仮想マシン（１５０）の間の相関関係を示す動作をさらに備えることを特徴とする請求項１に記載の方法。
【請求項１０】
前記データ構造（１２３）を更新して、前記要求されたアプリケーション（１３５）が前記デプロイされた１つまたは複数の仮想マシン（１５０）に、および１つまたは複数の物理ホスト（１３０）に、インストールされたことを示す動作をさらに備えることを特徴とする請求項８に記載の方法。
【請求項１１】
前記要求されたアプリケーション（１３５）がアンインストールされたことを特定する動作をさらに含むことを特徴とする請求項９に記載の方法。
【請求項１２】
前記要求されたアプリケーション（１３５）がアンインストールされたことを決定する前に、
前記要求されたアプリケーション（１３５）を前記１つまたは複数のデプロイされた仮想マシンからアンインストールすべきことを特定し、
前記要求されたアプリケーション（１３５）をアンインストールするための１つまたは複数の指示を前記仮想マシン層（１０７）に送る
動作をさらに含むことを特徴とする請求項１１に記載の方法。
【請求項１３】
前記要求されたアプリケーション（１３５）をアンインストールすべきと特定する前記動作が、前記アプリケーション（１３５）がアンインストールまたは廃棄する準備ができていることを、前記要求されたアプリケーション（１３５）に対応する前記データ構造（１２３）内の１つまたは複数のプロパティ（１３７）から特定するステップを含むことを特徴とする請求項１２に記載の方法。
【請求項１４】
前記デプロイされた１つまたは複数の仮想マシン（１５０）を前記対応する物理ホストから削除する１つまたは複数の指示を前記アプリケーション層（１０３）から前記仮想マシン層（１０７）に送る動作をさらに含むことを特徴とする請求項１１に記載の方法。
【請求項１５】
前記データ構造（１２３）を更新して、前記以前にデプロイした１つまたは複数の仮想マシン（１５０）が前記対応する物理ホストから削除されたことを示す動作をさらに含むことを特徴とする請求項１４に記載の方法。
【請求項１６】
エグゼクティブ・アプリケーション（１０５）を備えるアプリケーション層（１０３）と、仮想マシン・マネージャ（１２０）を備える仮想マシン層（１０７）と、１つまたは複数の仮想マシン（１５０）上で実行される１つまたは複数のアプリケーション・プログラム（１３５）と、を備えるコンピュータ化された環境のコンピュータ化されたシステム（１００）において、前記アプリケーション層（１０３）と前記仮想マシン層（１０７）を通じて１つまたは複数の仮想マシンを前記１つまたは複数のアプリケーション・プログラムに沿って作成し、操作し、廃棄することを管理する方法であって、
アプリケーション・プログラム（１３５）を開始するための１つまたは複数の要求をアプリケーション層（１０３）で受け取るステップであって、前記要求されたアプリケーション・プログラムが、使用される仮想マシン（１５０ａ〜ｂ）の種類と数を示す１つまたは複数のプロパティ（１３７）を含む、ステップ（３００）と、
前記アプリケーション層（１０３）内の１つまたは複数のデータ構造（１２３）を検証して、前記コンピュータ化された環境内で利用可能な１つまたは複数の仮想マシン（１５０ａ〜ｄ）を特定するステップ（３１０）と、
仮想マシン層（１０７）に指示して、前記要求されたアプリケーション・プログラムを、１つまたは複数の物理ホスト（１３０）にインストールされた前記利用可能な仮想マシン（１５０ａ〜ｂ）のうち１つまたは複数にインストールするステップ（３２０）と、
前記データ構造（１２３）を通して、前期要求されたアプリケーション・プログラム（１３５）が仮想マシンからアンインストールされたことを特定すると、前記アプリケーション層（１０３）が自動的に、前記仮想マシン（１５０）を対応する物理ホスト（１３０）から削除するよう指示するステップ（３３０）と
を含む方法。
【請求項１７】
前記特定された１つまたは複数の仮想マシン（１５０）が、オペレーティング・システムのチェックポイントに対して設定された１つまたは複数の仮想マシン・テンプレートを備え、
前記仮想マシン（１５０）を前記対応する物理ホスト（１３０）から削除する動作（３３０）が、前記仮想マシン（１５０）を以前のチェックポイントに復帰させ、更新されたバージョンの前記仮想マシンが前記物理ホスト（１３０）から削除され、前記以前のチェックポイントに対応する以前のバージョンの前記仮想マシンが前記物理ホスト（１３０）に留まるようにする
ことを特徴とする請求項１６に記載の方法。
【請求項１８】
前記アプリケーション層（１０３）がさらに、前記アプリケーション層（１０３）または仮想マシン層（１０７）内の１つまたは複数のコンポーネントによって更新できる１つまたは複数のデータ構造（１２３）を備えることを特徴とする請求項１６に記載の方法。
【請求項１９】
前記データ構造が、前記システム（１００）内にデプロイされた全ての仮想マシン（１５０）と、前記仮想マシンにインストールされた全てのアプリケーション・プログラム（１３５）と、前記インストールされたアプリケーションおよびデプロイされた仮想マシンの各々に対する意図されたライフ・サイクルを示す１つまたは複数のプロパティ（１３７）と、を示すことを特徴とする請求項１６に記載の方法。
【請求項２０】
エグゼクティブ・アプリケーション（１０５）と、仮想マシン・マネージャ（１２０）を備える仮想マシン層（１０７）と、１つまたは複数の仮想マシン（１５０）上で実行される１つまたは複数のアプリケーション・プログラム（１３５）と、を備えるコンピュータ化された環境（１００）におけるアプリケーション層（１０３）において、実行時に、
アプリケーション・プログラム（１３５）を開始するための１つまたは複数の要求（１１３）をアプリケーション層（１０３）で受け取るステップ（３００）と、
前記要求されたアプリケーション・プログラムの１つまたは複数のプロパティ（１３７）から、前記要求されたアプリケーション・プログラムを実行するために１つまたは複数の仮想マシン（１５０）のうちどれをデプロイすべきかを決定するステップ（３１０）と、
前記要求されたアプリケーション・プログラムに対して前記決定された１つまたは複数の仮想マシン（１５０）をデプロイするための１つまたは複数の仮想マシン命令（１４７）を前記アプリケーション層から仮想マシン層（１０７）に送るステップ（３２０）と、
前記要求されたアプリケーション・プログラムを前記デプロイした１つまたは複数の仮想マシンにインストールする（３３０）ステップと
を含む方法をコンピュータ・システム内の１つまたは複数のプロセッサに実行させるコンピュータ実行可能命令を記憶したコンピュータ・プログラム記憶製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想マシンとアプリケーション・ライフ・サイクルの同期に関する。
【背景技術】
【０００２】
今や、従来型のコンピュータ・システムは、生産業向けや娯楽向け等であろうとなかろうと、広範囲な目的で一般的に使用されている。その１つの理由は、コンピュータ・システムにより作業の自動化がより効率的になりやすいだけでなく、時間とともにかかる作業に対してコンピュータ・システムを容易に構成および再構成できることである。例えば、１つまたは複数のアプリケーション・プログラムの実行が遅すぎることにユーザが気づいた場合、そのユーザがメモリ（例えば、ＲＡＭ）を増設し、１つまたは複数のプロセッサ（例えば、ＣＰＵ、ＧＰＵ、等）を増設または交換するのが比較的分かりやすい方法であろう。また、現在の記憶装置を追加もしくは改良すること、または、作業負荷を共有もしくは処理するために使用できる他の周辺機器を追加または交換することも分かりやすい方法であろう。同様に、ユーザが、オペレーティング・システムを含む様々なアプリケーション・プログラムをコンピュータにインストールするかまたはアップグレードすることも比較的分かりやすいであろう。これは、大型の企業規模にも理論上は当てはまる傾向にある。
【０００３】
しかし、実際には、単に物理的なコンピュータ・ハードウェアの追加または交換ということは、特に大規模な場合は、しばしば厄介である可能性があり、新しいコンピュータ・システムを配置し構成する（またはコンポーネントをアップグレードする）のに、数時間の余計な時間がかかることとなる。幸いなことに、仮想マシン（「ＶＭ」）技術における近年の発展により、この種の制約の多くは改善または排除された。例えば、別の物理ホスト・コンピュータ・システムの制約や資源上の制限においても、仮想マシンは、追加の一意なコンピュータ・システムとして動作する１組の電子ファイルを含む。
【０００４】
さらに、仮想マシンごとの１組のファイルは、資源へのアクセスという点で容易に構成および再構成できるので、単一の物理ホストにインストールされた幾つかの異なる仮想マシンが存在しうる。さらに、各仮想マシンは様々なレベルでホストの資源にアクセスできる。さらに、任意の所与のホスト・コンピュータ・システム上の仮想マシンの数、および仮想マシンごとの資源割当も、その時々に応じて比較的容易に変更することができる。しかし、各仮想マシンのユーザは、そのような変更に影響を受けず、一般に、様々な仮想マシンを、まるでそれ自身が資源を有する別々の独立した物理的なコンピュータ・システムであるかのようにアクセスし参照することができる。少なくともこれらの理由のために、企業はますます高い割合で仮想マシンの技術を用いている。
【０００５】
さらに、仮想システムの別の利点としては、管理者があるアプリケーション・プログラムを実行するためにほぼ必要な数の仮想マシンを即座に追加できるということである。例えばシステム管理者は、１つのネットワーク・ロケーションにおいてデータベース・アプリケーションを扱う１つまたは複数の仮想マシンを作成する必要性を何らかの時点で決定し、別のネットワーク・ロケーションでネットワークや電子メールのトラフィックを扱う別の１組の仮想マシンを作成する必要性を決定してもよい。決定すると、システム管理者は原則として必要に応じて仮想マシンを作成し、次いで、これらのアプリケーション向けに仮想マシンを構成する。かかる構成には、システム管理者（または、ある場合は、別のアプリケーション管理者）が関連アプリケーション・プログラムを新しい仮想マシンにインストールすることにより関与する。このようなプロビジョニングとインストールは全て、最初に必要性を決定してから、わずか数時間で実施することができる。
【０００６】
もちろん、管理者が容易に仮想マシンを確立しセットアップしてアプリケーションを扱うことができることは、仮想マシンの管理に限らずその上で実行されているアプリケーション・プログラムの管理についても、他の問題をもたらすことがある。具体的には、企業が追跡できるよりも速く企業が仮想マシンを作成し使用していることがよくあるという、ますます一般化している問題がある。仮想マシンは迅速に作成できるため、任意の所与の管理者は、どれだけ多くの仮想マシンが所与の時点で作成され、どの仮想マシンが任意の特定の物理ホストに対して作成されているかさえ気付いていないかもしれない。
【０００７】
同様に、どの仮想マシンが実行されているか、どのアプリケーションが仮想マシン上で実行されているかの特定において生ずる、記録の不連続性がしばしば存在する。一般に、かかる情報を追跡し続けるための従来のメカニズムとしては、管理者が、何を作成し、削除し、廃止したかについての（例えば、スプレッドシート上での）詳細なログを保持することがよくある。多数の仮想マシンおよびアプリケーション・プログラムがある場合に、この方法は非常に煩雑であるだけでなく、ある管理者が将来作成するものと、他の管理者がログに入力するものとの間に一貫性が欠如することがよくある。このようなことは、仮想マシンをインストールして使用している多数の管理者およびユーザを有する企業のシステムに関して特に当てはまる。
【０００８】
したがって、特に大企業では、あるシステム管理者が、１組の物理ホスト上で特定の１組の仮想マシンを追跡し続けているのに、これらの仮想マシンに他のアプリケーションを別の管理者がインストールしたことに気づかないということが稀ではない。最初に仮想マシンを作成した管理者が仮想マシンを削除または廃棄しようとした場合、その管理者は他のアプリケーションがその仮想マシンで実行されていることを示すエラーメッセージを受け取るかもしれない。すると、その最初の管理者は仮想マシンをそのままにしておくかもしれない。仮想マシンを削除できなかった原因である他のアプリケーション・プログラムを後に別の管理者が除去した場合でも、仮想マシンはシステム上にほぼ永久に残存するおそれがある。
【発明の概要】
【発明が解決しようとする課題】
【０００９】
その結果、所与のアプリケーション・プログラムのライフ・サイクルが、仮想マシンのライフ・サイクルと一致しないことがよくあることは理解されよう。この理由の１つとして、管理者がアプリケーション・プログラムをアンインストールし仮想マシンがもう必要でない場合に、管理者が仮想マシンを廃棄または除去することが保証される可能性がほとんどないことがある。これらおよびその他の理由により、仮想化技術を実現している企業が「仮想マシン・スプロール」（あるいは「ＶＭスプロール」）として一般に知られている問題に陥ることがよくある。
【００１０】
基本的には、仮想マシン・スプロールとは、企業が仮想マシンを継続的に作成できるが、仮想マシンがどのように使用されているか、および／または、誰が仮想マシンを使用しているかを追跡ができない状況のことをいう。仮想マシン・スプロールが企業の資源を不必要に流出させうることは理解されよう。少なくともこの流出が生ずる理由の１つとして、他の仮想マシンが使用できない様々なハードウェア資源を、削除されるべき仮想マシンが保持し続けることがある。この流出が生ずる理由のもう１つは、少なくとも、企業のスタッフがシステム内の各仮想マシンの詳細を正しく特定しどの仮想マシンが結局必要であるかを決定するために、多数の資源を拡張する必要があることである。
【００１１】
従って、企業内には、仮想マシンの管理に関して対処しうる幾つかの問題がある。かかる問題は、幾つかの異なる仮想マシン（および物理マシン）で実行している幾つかのコンポーネントを含む分散アプリケーション・プログラムを企業が使用している場合に、特に深刻となりうることは理解されよう。
【課題を解決するための手段】
【００１２】
本発明の実装形態により、企業における仮想マシンの作成、操作、および廃棄を効率的に管理するように構成されたシステム、方法、およびコンピュータ・プログラム製品に関する当分野における１つまたは複数の問題が克服される。例えば、１実装形態では、システムは、アプリケーション・プログラムをインストールまたはアンインストールする要求に応じて１つまたは複数の仮想マシン層を通じて仮想マシンの作成と削除を調整し指示するアプリケーション層を含む。アプリケーション層は、さらに、システム内で動作する他のエグゼクティブ・アプリケーションによって参照できる共通データ構造を通して、何がインストールおよび／またはアンインストールされているかを整理することができる。そのため、アプリケーション層は、仮想マシンとアプリケーション・プログラムのライフ・サイクルとを確実に一致させることができる。
【００１３】
例えば、本発明の方法は、アプリケーション層という観点からは、アプリケーション・プログラムを開始するための１つまたは複数の要求をアプリケーション層で受け取ることを含むことができる。また、この方法は、要求されたアプリケーション・プログラムの１つまたは複数のプロパティから、１つまたは複数の仮想マシンのうちどれをデプロイして要求されたアプリケーション・プログラムを実行すべきかを決定することも含むことができる。さらに、この方法は、１つまたは複数の仮想マシン命令をアプリケーション層から仮想マシン層に送信して、決定された１つまたは複数の仮想マシンを要求されたアプリケーション・プログラムに対してデプロイすることを含むことができる。さらに、この方法は、要求されたアプリケーション・プログラムを、デプロイされた１つまたは複数の仮想マシンにインストールすることを含むことができる。
【００１４】
上記に加えて、本発明の方法は、１つまたは複数の仮想マシンの作成、操作、および廃棄を管理するシステム全体の観点からは、アプリケーション・プログラムを開始するための１つまたは複数の要求をアプリケーション層（１０３）で受け取ることを含むことができる。要求されたアプリケーション・プログラムは、使用すべき仮想マシンの種類と数を示す１つまたは複数のプロパティを含む。また、この方法は、アプリケーション層における１つまたは複数のデータ構造を参照して、コンピュータ化した環境で利用可能な１つまたは複数の仮想マシンを特定することを含むことができる。さらに、この方法は、１つまたは複数の物理ホストでインストールされた１つまたは複数の利用可能な仮想マシンに、要求されたアプリケーション・プログラムをインストールするよう仮想マシン層に指示することを含むことができる。さらにこの方法では、要求されたアプリケーション・プログラムが仮想マシンからアンインストールされたことを、データ構造を通して特定すると、アプリケーション層が自動的に、仮想マシンを対応する物理ホストから除去することを指示することを含むことができる。
【００１５】
本要約は選択した概念を簡潔な形で導入するために与えた。これらの概念は以下の「発明を実施するための形態」でさらに詳細に説明する。本要約は、請求項に記載の主題の重要な特徴または本質的な特徴を特定することを意図していない。また、この概要は、請求項に記載の主題の範囲を決定する際の支援として使用することを意図しているものでもない。
【００１６】
本発明のさらなる特徴および利点は、以下の記載で説明され、その記載から部分的に明らかとなり、または、本発明を実施することで習得することができる。本発明の特徴および利点は、添付の特許請求の範囲で特に指摘した手段および組合せによって実現および取得することができる。本発明のこれらおよびその他の特徴は、以下の記載および添付の特許請求の範囲からより完全に明確となり、以降で説明する本発明を実施することによって習得することができる。
【００１７】
上述した本発明の利点および特徴ならびに他の利点および特徴を得ることができる方法を説明するために、上で簡潔に説明した発明のより具体的な説明を、添付の図面に示す具体的な実施形態を参照して行うこととする。これらの図面は本発明の典型的な実施形態を示すにすぎず、したがって本発明の範囲を限定するものとは考えられないことを理解して、添付の図面を参照して本発明をさらに具体的かつ詳細に記載し説明することとする。
【図面の簡単な説明】
【００１８】
【図１Ａ】本発明の実装形態に従って、アプリケーション層が、１つまたは複数のアプリケーションのインストール指示を仮想マシン層で実装する概略を示す図である。
【図１Ｂ】アプリケーション層が、仮想マシン層によってセットアップされた１つまたは複数の仮想マシンにおいて、要求されたアプリケーションをインストールまたは構成する図１Ａの略図である。
【図１Ｃ】以前にインストールされたアプリケーションがアンインストールされ、したがって対応する仮想マシンが除去されたことを、仮想マシン層を通してアプリケーション層が特定する概略を示す図である。
【図２】要求されたアプリケーションに対応する仮想マシンをインストールするための、アプリケーション層の観点からの流れ図である。
【図３】アプリケーションのライフ・サイクルを仮想マシンと調整するための、システム全体の観点からの方法の流れ図である。
【発明を実施するための形態】
【００１９】
本発明の実装形態は、企業において仮想マシンの作成、操作、および廃止を効率的に管理するように構成されたシステム、方法、およびコンピュータ・プログラム製品に拡張される。例えば、１実装形態では、システムは、アプリケーション・プログラムをインストールまたはアンインストールする要求に応じて１つまたは複数の仮想マシン層を通して仮想マシンの作成と削除を調整し指示するアプリケーション層を含む。アプリケーション層は、さらに、システム内で動作する他のエグゼクティブ・アプリケーションによって参照できる共通データ構造を通して、何がインストールおよび／またはアンインストールされているかを整理することができる。そのため、アプリケーション層は、仮想マシンとアプリケーション・プログラムのライフ・サイクルとを確実に一致させることができる。
【００２０】
本明細書からより完全に理解されるように、本発明の実装形態はこれらおよび他の目的を、アプリケーション層と仮想化管理層（または、「仮想マシン層」）を含むソフトウェア・システムで達成することができる。これらの２つの層は異なる責任を持ち、一意なダイアログを用いて相互に通信する。本明細書に記載されたこれらおよび他のコンポーネントが混合型の仮想および物理ハードウェア環境、ならびに提案するソフトウェア・スタック・アーキテクチャの具体的な実装に対するサポートを提供できることは理解されよう。特に、本発明の実装形態を使用して、連携する仮想マシン・マネージャに対して連携したアプリケーション・プラットフォームを提供することができる。次いで、この連携したアプリケーション・プラットフォームを、アプリケーションと仮想環境の宣言的モデルを示す１つまたは複数のデータ構造により駆動させることができる。
【００２１】
例えば、本発明の実装に従う少なくとも１つの方法は、アプリケーションの宣言的モデルに基づいて仮想環境を構築することを含む。さらに、本発明の実装形態に従う方法は、アプリケーション・ライフ・サイクルと調整された仮想環境における仮想マシンのライフ・サイクルを制御することを含むことができる。さらに、かかる方法は、宣言的モデルに基づく仮想環境内で実行されるアプリケーションを監視し管理することを含むことができる。本明細書で理解されるように、かかる方法を、オン・プレミスまたは「クラウド」（すなわち、ネットワークのどこか）で構築される仮想環境を含めて事実上任意の動作環境で実現することができ、またはアプリケーション・モジュールがオン・プレミスまたはクラウドで実行されるところで実現することができる。
【００２２】
図１Ａは、アプリケーション層１０３と仮想マシン層１０７を備えるシステム１００の全体図を示し、これらはアプリケーションと関連して仮想マシンをインストールし管理するために共に動作する。例えば、図１Ａは、アプリケーション層１０３が少なくともエグゼクティブ・アプリケーション１０５を含むことを示す。一般に、エグゼクティブ・アプリケーション１０５は、宣言的なモデル記述ワークフローを実行することにより様々な要求（例えば、アプリケーションをインストールすること）を行う１つまたは複数の組の実行可能命令を備える。以下でより完全に理解されるように、エグゼクティブ・アプリケーション１０５は、様々な宣言的モデル１１５から所与のアプリケーションに関する情報を受け取り、この情報を、様々な仮想マシンに送られる具体的な命令へと詳細化する。
【００２３】
例えば、図１Ａは、アプリケーション層１０３がアプリケーション・リポジトリ１１０を備えることを示す。アプリケーション・リポジトリ１１０はさらに、アプリケーションに対する様々な「意図」を含めた、様々なアプリケーション１３５を対応するプロパティ１３７と関連付ける１組の前述の宣言的モデル１１５を備える。宣言的モデル１１５内の係るアプリケーションの意図（すなわち、プロパティ１３７）は、アプリケーション１３５ごとの様々なハードウェアおよび仮想マシンの仕様、ならびにアプリケーション・ライフ・サイクルの情報を含むことができる。具体的には、アプリケーション・プログラムに対する所与の宣言的モデル１１５の意図は、使用できまたは使用すべき仮想マシンの数に加えて、実行すべき所与のアプリケーション１３５に対して要求されうる仮想マシン（例えば、特別に構成された仮想マシンのテンプレート、または既存の仮想マシン）の種類を含むことができる。例えば、要求されたアプリケーション１１５が分散アプリケーションであった場合は、宣言的な意図は幾つかの異なる仮想マシン（および仮想マシンの種類）、および分散アプリケーションのコンポーネントごとの幾つかの異なる物理ホスト（または物理ホストの種類）を指定することができる。係る宣言的モデルの意図はまた、インストール前にアプリケーションを実行できる最大のタイム・インターバルのような、所与のアプリケーション・プログラムに関する様々なライフ・サイクル情報を含むことができる。
【００２４】
さらに、図１Ａは、エグゼクティブ・アプリケーション１０５を介して、アプリケーション層１０３が１つまたは複数の共通のデータ構造１２３を備えうることを示す。一般に、（システム内の他のエグゼクティブ・アプリケーションを含む）様々な種類のコンポーネントによって１つまたは複数の共通データ構造１２３にアクセスすることができる。共通データ構造１２３は、システム１００内にインストールされたアプリケーションと仮想マシンに関する状態情報を格納し関連付けることができる。例えば、少なくとも１つの実装形態では、データ構造１２３は、いつどこで様々なアプリケーション・プログラムがインストールされたか（物理的な位置および／またはネットワーク上の位置）、ならびにいつどこで様々な仮想マシンがインストールされたか（物理的な位置および／またはネットワーク上の位置）を示す。前述のように、データ構造１２３はさらに、エグゼクティブ・アプリケーション１０５が宣言的モデル１１５から詳細化および決定した、アプリケーションおよび／または仮想マシンのライフ・サイクルに関する情報を含むことができる。一般にデータ構造１２３に多数のコンポーネントからアクセスすることができるので、データ構造１２３を、アプリケーション層１０３および仮想マシン層１０７の両方において幾つかの異なるコンポーネントによって参照し更新して、一貫性の保持を支援することができる。
【００２５】
再度図面を参照すると、図１Ａは、仮想マシン層１０７が１つまたは複数の仮想マシン・マネージャ１２０を備えうることを示す。仮想マシン・マネージャ１２０は、次いで、仮想マシンをインストールしアンインストールするための、ならびに仮想マシンの資源を所与のホストに割り当てるための、１つまたは複数の組の実行可能命令を備える。仮想マシン・マネージャ１２０はまた、物理ホスト上の各仮想マシンの性能を監視する。例えば、仮想マシン・マネージャ１２０は所与の仮想マシンをインストールするときに、仮想マシン・マネージャ１２０はまた、仮想マシン・マネージャ１２０にフィードバックを提供する１つまたは複数の監視エージェントをインストールする。係るフィードバックは、割り当てられた資源の使用量の性質（例えば、プロセッサおよびメモリの割当てが十分であるか否か）、ならびにインストールされた様々なアプリケーション・プログラムがどのように実行されているかの性質を含むことができる。
【００２６】
さらに、図１Ａは、仮想マシン・マネージャ１２０を、１つまたは複数の仮想マシン・ライブラリ１２５と通信するように構成できることを示す。一般に、仮想マシン・ライブラリ１２５は、それぞれが「ホット・スタンバイ」を表す１つまたは複数の仮想マシン・テンプレート１５０から構成され、仮想マシン・マネージャ１２０はそれらの仮想マシン・テンプレート１５０をコピーして所与の物理ホスト（例えば、１３０）にインストールすることができる。例えば、図１Ａは、仮想マシン・ライブラリ１２５が、仮想マシン「ＶＭ1」１５０ａ、仮想マシン「ＶＭ2」１５０ｂ、仮想マシン「ＶＭ3」１５０ｃ、仮想マシン「ＶＭ4」１５０ｄに対する記憶領域を備えることを示す。これらの仮想マシン１５０（ａ〜ｄ）の各々は、特定の種類のアプリケーションおよび特定のバージョンのアプリケーションと動作するように特別に構成することができる。例えば、仮想マシン１５０ａと１５０ｂを特定のバージョンのデータベース・アプリケーションと動作するように（資源割当て、資源要件の点で）特別に構成し、仮想マシン１５０ｃと１５０ｄを他のバージョンのデータベース・アプリケーション、または、インターネット・アプリケーションと動作するように（資源割当て、資源要件の点で）構成することができる。
【００２７】
何れの場合でも、システム１００内の上述のコンポーネントの各々は、アプリケーションと仮想マシンが同一のライフ・サイクルの一部として共にインストールされ共にアンインストールされることを保証するために協働するように構成される。少なくとも１つの実装形態では、この調整は一般にエグゼクティブ・アプリケーション１０５を介してアプリケーション層１０３を通じて扱われる。例えば、図１Ａは、アプリケーション層１０３が、アプリケーション（すなわち、アプリケーション１３５ａ）をインストールする１つまたは複数の要求／指示１１３を受け取り、この要求１１３がエグゼクティブ・アプリケーション１０５によって受け取られることを示す。それに応じて、エグゼクティブ・アプリケーション１０５は、その要求をどのように扱うべきかを決定するためのアプリケーション層１０３内の１つまたは複数の要求１４０を送信する。例えば、図１Ａは、エグゼクティブ・アプリケーション１０５が、意図したプロパティまたは関連する要求されたアプリケーションを特定する１つまたは複数の要求をアプリケーション・リポジトリ１１０に送信することを示す。具体的には、図１Ａは、エグゼクティブ・アプリケーション１０５が要求１４０を送信し、要求１４０は、アプリケーション１３５ａに関連付けられたプロパティを要求する。
【００２８】
アプリケーション・リポジトリ１１０は、次いで、要求されたアプリケーション１３５ａに関連付けられた１つまたは複数の宣言的モデル１１５を特定する。例えば、図１Ａは、アプリケーション・リポジトリ１１０が宣言的モデル１１５に対する記憶領域を含むことを示し、宣言的モデル１１５がプロパティ１３７ａと１３７ｂをアプリケーション１３５ａと１３５ｂに関連付ける。これらのプロパティは、各アプリケーション・プログラム１３５に関する様々な宣言的な意図を記述する。係る宣言的な意図は、アプリケーション・プログラムが実行すべき期間、アプリケーションを処理するためにインストールすべき仮想マシンの数および／または種類を含むことができる。係る宣言的な意図は、また、アプリケーション・プログラムを実行すべき様々なネットワーク位置（または物理的位置）のような情報を含むことができる。例えば、管理者は、幾つかのアプリケーションのみがセキュアなサーバ上および／またはセキュアなネットワーク位置内で実行されると指定することができる。
【００２９】
いずれの場合でも、要求１４０を受け取ると、アプリケーション・リポジトリ１１０が１つまたは複数のメッセージ１４５でエグゼクティブ・アプリケーション１０５に応答することを図１Ａは示す。エグゼクティブ・アプリケーション１０５は次いでリポジトリ１１０から受け取ったプロパティ１３７ａを解釈または「詳細化」して、プロパティ１３７ａを１組の対応する命令／指令として１つまたは複数の共通データ構造１２３の１つに格納することができる。一般に、この文脈での詳細化とは、例えばデータを（例えば、メッセージ１４５でプロパティ１３７ａから受け取った）宣言的モデルに追加し追加したデータをデータ構造１２３に書き込むことによって、リポジトリ１１０から受け取った情報から細部を漸進的に精緻化することを意味する。本明細書でより完全に理解されるように、詳細化では、宣言的モデルが理解され特定の仮想マシン・ドライバによって変換される程度に十分に具体化されるまで、細部を精緻化する。
【００３０】
少なくとも１つの実装形態では、アプリケーションの宣言的モデルに対応するプロパティ１３７は、特定のアプリケーション１３５ａが２つの異なる仮想マシンにインストールされるのが理想的であること、および、これらの仮想マシンがデータベースを利用するために構成されるべきであることを示す情報を含むこともある。そのため、図１Ａは、アプリケーション１３５ａを仮想マシン１５０ａと１５０ｂにインストールするという指示をデータ構造１２３が少なくとも含むことを示す。さらに、プロパティ１３７ａはまた、特定の物理ホスト上でアプリケーション・プログラム１３５ａを実行するための優先度を含むことができる。したがって、例えば、図１Ａは、アプリケーション１３５が物理ホスト１３０にインストールされるべきであることをデータ構造１２５が示すことも示している。
【００３１】
要求されたアプリケーション・プログラムに対する様々なプロパティと指示を決定すると、アプリケーション層１０３は、適切な仮想マシンをインストールするという１つまたは複数の指示を仮想マシン層１０７に送ることができる。例えば、図１Ａは、エグゼクティブ・アプリケーション１０５が、データ構造１２３に格納された詳細化した情報に対応する１つまたは複数の指示１４７を仮想マシン層１０７に送ることを示す。具体的には、図１Ａは、指示１４７が仮想マシン１５０ａ（「ＶＭ1」）と仮想マシン１５０ｂ（「ＶＭ2」）をインストールするという１つまたは複数の要求を含むこと、および、仮想マシン層１０７の中の仮想マシン・マネージャ１２０がこれらの指示を受けとることを示している。
【００３２】
次に、仮想マシン層１０７がそれらの要求を実行する。例えば、図１Ａは、仮想マシン・マネージャ１２０が仮想マシン・ライブラリ１２５と調整して、インストールすべき要求されたテンプレート、この場合は仮想マシン１５０ａと１５０ｂ、を特定することを示す。さらに、図１Ａは、仮想マシン・マネージャ１２０が、仮想マシン１５０ａと１５０ｂをインストールする１つまたは複数の要求１５５を物理ホスト１３０に送信することを示す。少なくとも１つの実装形態では、仮想マシン層１０７は（例えば、仮想マシン・マネージャ１２０を介して）さらに、仮想マシンのインストールおよび構成が今完了したこと示す１つまたは複数のメッセージ（図示せず）でアプリケーション層１０３（例えば、エグゼクティブ・アプリケーション１０５）と通信する。
【００３３】
例えば、仮想マシン・マネージャ１２０はインストール確認情報（図示せず）を直接データ構造１２３に渡すことができる。次に、エグゼクティブ・アプリケーション１０５は、定期的な検査の一部として、または、データ構造１２３が更新されたという何らかの信号へ応答して、データ構造１２３を読むことができる。次に、エグゼクティブ・アプリケーション１０５は、要求された仮想マシンがインストールを完了したことを確認する。他の場合では、仮想マシン・マネージャ１２０はこの情報を直接エグゼクティブ・アプリケーション１０５に渡し、次いでこの情報をデータ構造１２３に入力する。いずれの場合でも、仮想マシン・マネージャ１２０によって提供された情報は、ホスト１３０へインストールされたという単なる事実だけではなく、仮想マシンの名前およびネットワーク・アドレスのような他の関連情報も含むことができる。
【００３４】
要求された仮想マシンのインストール／デプロイを確認すると、アプリケーション層１０３は、要求されたアプリケーション（複数可）を、仮想マシン層１０７を介してインストールし、構成することができる。これを示すため、図１Ｂは、エグゼクティブ・アプリケーション１０５が、ホスト３０にデプロイされた仮想マシン１５０のドライバと直接通信することを示している。例えば、エグゼクティブ・アプリケーション１０５は、仮想マシン名およびネットワーク・アドレスのような仮想マシン・マネージャ１２０が提供した情報を用いて、適切な仮想マシン・ドライバを発見し、特定することができる。
【００３５】
さらに、図１Ｂは、アプリケーション層１０３が（エグゼクティブ・アプリケーション１０５を介して）１つまたは複数のメッセージ／指示１６０ａおよび１６０ｂを仮想マシン層１０７に送ることを示す。次に、対応して指定された仮想マシン１５０ａと１５０ｂのドライバは、メッセージ１６０ａおよび１６０ｂを物理ホスト１３０で受けとる。一般に、メッセージ１６０ａおよび１６０ｂは、要求されたアプリケーション１３５ａに対するアプリケーションのインストール指示だけでなく、アプリケーション・リポジトリ１１０から以前に受け取ったプロパティ１３７ａに関連した指示も含むことができる。例えば、メッセージ１６０ａおよび１６０ｂは特に、アプリケーションのライフ・サイクル、アプリケーションをどのように仮想マシン内で実行すべきか、および任意の監視情報、に関する変換／詳細化された宣言的な意図の情報を具体的な命令の形で含むことができる。
【００３６】
各仮想マシン１５０（ａ〜ｂ）に対するドライバは、次に、仮想マシン内の対応するアプリケーション・コンテナ（図示せず）に対するこれらの命令（１６０）を変換および／または実装する。具体的には、図示した仮想マシンのドライバは、十分に詳細化された宣言的なモデルを、仮想マシンで実行されるべき命令動作に変換する。これらの変換された指示は（例えば、プロパティ１３７を介して）、次いで、モデル内で宣言された意図に従って、インストールされた仮想マシン１５０内のアプリケーション・コンテナおよびアプリケーション・モジュールを制御し、構成する。
【００３７】
これらの流れに沿って、ドライバによる変換において、アプリケーション・コンテナの実装とその現在の構成との詳細に関する知識を考慮できることは理解されよう。したがって、１実装形態では、仮想マシンのドライバがさらに、エグゼクティブ・アプリケーション１０５と通信し、任意の追加のモデル・データ（例えば、データ構造１２３に格納できるモデル・データ）を要求することができる。例えば、仮想マシン１５０のドライバは、その変換作業に関連するモデル・データを、命令（複数可）を完了する前に限り、要求するかもしれない。仮想マシンのドライバはまた、アプリケーション・モジュールおよびそれらのアプリケーション・コンテナに、それらの動作と環境における変化とに関するイベントをモデル内で宣言するように発するよう指示することができる。
【００３８】
仮想マシンのドライバが提供した情報は、インストールされたアプリケーション１３５ａおよび／または仮想マシン１５０（ａ〜ｂ）に関する健全性情報だけでなく、アプリケーション終了イベントに関する情報も含むことができる。例えば、仮想マシンのドライバは、ホスト１３０でアプリケーションがアンインストールされているとき、ホスト１３０でアプリケーションがアンインストールされたとき、またはホスト１３０でアプリケーションがアンインストールされようとしているとき、１つまたは複数のメッセージをエグゼクティブ・アプリケーション１０５に送ることができる。次いで、仮想マシンのドライバが提供した情報を受け取り、データ構造１２３に格納することができる。例えば、仮想マシン１５０のドライバは、１つまたは複数の係るメッセージをデータ構造１２３、または、エグゼクティブ・アプリケーション１０５に直接送り、次いでエグゼクティブ・アプリケーション１０５がそれに応じてデータ構造１２３を更新する。何れの場合でも、アプリケーション層１０３は、エグゼクティブ・アプリケーション１０５を介して、対応する仮想マシン（複数可）をいつ廃止し始める必要があるかを特定することができる。
【００３９】
例えば、図１Ｃは特定のアプリケーション・プログラムが仮想マシン１５０からアンインストールされた場合に何が生じうるか示す。具体的には、アプリケーション・プログラムがアンインストールされた場合、図１Ｃは、仮想マシン層１０７が（例えば、物理ホスト１３０にあるドライバを介して）、アプリケーション１３５ａがアンインストールされること、またはアンインストールされたことを示す１つまたは複数のメッセージ１７０をアプリケーション層１０３に送ることを示す。前述したように、例えば、物理ホスト１３０はメッセージ１７０をデータ構造１２３に直接渡すことができ、代替的な実装形態では、物理ホスト１３０がメッセージ１７０をエグゼクティブ・アプリケーション１０５に直接送る。いずれの場合でも、データ構造１２３は、最終的にはアプリケーションの除去を反映するように更新される。例えば、図１Ｃは、データ構造１２３が、アプリケーション１３５ａが今アンインストールされたという情報を含むことを示す。この実施例では、アプリケーション１３５ａは、仮想マシン１５０ａと１５０ｂにインストールされた唯一のアプリケーションであるので、アプリケーション層１０３は、エグゼクティブ・アプリケーション１０５を介して、仮想マシン１５０ａと１５０ｂがもはや使用されていないからそれらを物理ホスト１３０から削除する必要があると判断する。
【００４０】
従って、図１Ｃは、エグゼクティブ・アプリケーション１０５を介して、アプリケーション層１０３が１つまたは複数のメッセージ１８０を仮想マシン層１０７に送ることを示す。次に、前と同様、仮想マシン・マネージャ１２０は仮想マシン層１０７においてメッセージ１８０を受け取る。図示した例では、メッセージ１８０は、仮想マシン１５０ａと１０５ｂ（すなわち、「ＶＭ1」と「ＶＭ2」）をそれらがインストールされている１つまたは複数の物理ホスト、この場合は物理ホスト１３０、から除去する指示を含む。それに応じて、仮想マシン層１０７は仮想マシンを除去しその除去の確認をするために必要な任意の動作を実行する。例えば、図１Ｃは、仮想マシン・マネージャ１２０が１つまたは複数の対応するメッセージ１９０を物理ホスト１３０に送り、それらのメッセージは、仮想マシン１５０ａと１５０ｂを除去するかまたはアンインストールするよう物理ホスト１３０に指示する。
【００４１】
仮想マシン（１５０ｂ）を「除去」または「廃止」するための幾つかの方法および機構があることは理解されよう。例えば、先行する「チェックポイント」に基づいて任意の所与の仮想マシンを設定または格納することができる。一般に、チェックポイントはオペレーティング・システム（または、仮想マシンにおける他の１組のファイル構造）の特定の時点における状態を示す。例えば、ユーザがオペレーティング・システムのパッチを仮想マシンに適用する都度、仮想マシン（または、仮想マシンを実行または格納している管理コンポーネント）は、この特定のファイル状態をチェックポイントとして保存することもある。
【００４２】
さらに、仮想マシン（または、仮想マシンを実行または格納している管理コンポーネント）は所与の仮想マシンに対して、幾つかの異なるチェックポイントを保持することもある。このように、例えば、仮想マシン・ライブラリ１２５内の仮想マシンの一部を、具体的なアプリケーション構成と関連しているだけでなく、オペレーティング・システムのパッチまたはアップグレードを適用するための様々なチェックポイントに基づいて、別々にセットアップすることができる。同様に、物理ホスト１３０にインストールされる仮想マシン１５０ａ〜ｂが幾つかの異なるチェックポイントの更新を受けた可能性もあり、そのうちの幾つかは実行されているアプリケーション１３５ａに対して特に適用可能であるかもしれない。
【００４３】
結果として、幾つかの場合では、仮想マシンを一緒に除去するかまたは単に仮想マシンを特定のチェックポイントの状態に戻すことによってアプリケーション１３５ａを除去するときに、管理者は物理ホスト１３０で特定のバージョンの仮想マシン１５０ａ〜ｂを「除去」または「廃止」することを選択することができる。かかる場合、仮想マシン１２０から送られた指令１９０は代替的または追加的に、物理ホスト１３０で後にインストールできる他のアプリケーション・プログラムに対してより広く適用可能な前のチェックポイントの状態に仮想マシン１５０ａ〜ｂを戻す指令を含むことができる。
【００４４】
以前のバージョンの仮想マシン１５０ａ〜ｂを物理ホスト１３０上で保持することにより、仮想マシン１５０全体をライブラリ１２５からもとの物理ホスト１３０にコピーするために後の時点で必要となりうる資源を節約できることは理解されよう。もちろん、どのように除去または廃棄（すなわち、完全な除去、または特定のチェックポイントへの復帰）しても、システム１００は、システム１００が特定の仮想マシンおよびアプリケーションの状態または存在を見失わないようにデータ構造１２３が関連情報を保持できることを保証するように構成される。
【００４５】
例えば、図１Ｃはさらに、仮想マシンを除去、廃棄、アンインストール、復帰する際に物理ホスト１３０が１つまたは複数の構成メッセージを送ることができる。具体的には、仮想マシン層１０７はアプリケーション１０３に対して、仮想マシンの除去（すなわち、削除、廃棄、または復帰）が完了したことを確認する。例えば、物理ホスト１３０は１つまたは複数の確認メッセージを元の仮想マシン・マネージャ１２０に送ることができ、仮想マシン・マネージャ１２０は次いでかかる情報をアプリケーション層１０３に送る。すなわち、仮想マシン・マネージャ１２０がデータ構造１２３を除去（削除または復帰）情報で更新することができ、または、そうでなければ対応する通信情報をエグゼクティブ・アプリケーション１０５に送ることができ、エグゼクティブ・アプリケーション１０５が次いで同じことに関してデータ構造１２３を更新する。追加のまたは代替的な実装形態では、物理ホスト１３０はデータ構造１２３および／またはエグゼクティブ・アプリケーション１０５と直接通信して、仮想マシン１５０（ａ〜ｂ）の除去（削除または復帰）を確認する。
【００４６】
従って、図１Ａから１Ｃは、仮想マシンからのアプリケーション・プログラムのライフ・サイクルを調整するための様々なコンポーネント、機構、および略図を示す。上述のプロセスの一部または全部を自動的に実施でき、従って仮想マシンとアプリケーション・プログラムの正確な記録保存と管理を最小限の管理オーバヘッドで達成できることは理解されよう。
【００４７】
上述したことに加えて、本発明の実装形態を、特定の結果を達成するための方法における１つまたは複数の動作を含む流れ図の観点で説明することもできる。例えば、図２は、単一のアプリケーションを用いて仮想マシンとアプリケーション・プログラムの両方を物理ホストにインストールするためのエグゼクティブ・アプリケーション１０５の観点から見た流れ図を示し、図３は、アプリケーション・プログラムと仮想マシンのインストールとライフ・サイクルを調整するためのシステム１００の観点から見た代替的な流れ図を示す。図２と図３の動作は、図１Ａから１Ｃのコンポーネントと図に関して以下でより完全に説明する。
【００４８】
例えば、図２は、エグゼクティブ・アプリケーション１０５の観点から見た方法が、アプリケーションを開始するための要求を受け取る動作２００を含むことができることを示す。動作２００は、アプリケーション・プログラムを開始するための１つまたは複数の要求をアプリケーション層で受け取ることを含む。例えば、図１Ａは、アプリケーション層１０３がエグゼクティブ・アプリケーション１０５を介してインストール命令１１３を受けとり、インストール命令１１３にはアプリケーション・プログラム１３５ａをインストールするための１つまたは複数の要求が含まれる。
【００４９】
図２はまた、この方法が、デプロイすべき仮想マシンを決定する動作２１０を含むことができることを示す。動作２１０は、要求されたアプリケーション・プログラムの１つまたは複数のプロパティから、１つまたは複数の仮想マシンのうちどれをデプロイして要求されたアプリケーション・プログラムを実行すべきかを決定することを含む。例えば、図１Ａは、エグゼクティブ・アプリケーション１０５が、アプリケーション・リポジトリ１１０と通信し、メッセージ１４０およびメッセージ１４５を交換して、要求されたアプリケーション１３５ａに対するプロパティを特定することを示す。これらのプロパティ１３７ａは、要求されたアプリケーション１３５ａに対応する宣言的モデル１１５の様々な宣言的な意図に関する。さらに、エグゼクティブ・アプリケーション１０５は、受け取ったプロパティ１３７ａを、データ構造１２３内でそのとき保持される具体的な指示に詳細化および／または変換する。１実装形態では、これらの命令の変換は、要求されたアプリケーション１３５ａを実施するためにインストールすべき仮想マシン１５０の数および種類を含む。
【００５０】
さらに、図２は、エグゼクティブ・アプリケーション１０５の観点からの方法が、適切な仮想マシンをデプロイする動作２２０を含むことができることを示す。動作２２０は、１つまたは複数の要求をアプリケーション層から仮想マシン層に送り、決定された１つまたは複数の仮想マシンを要求されたアプリケーション・プログラムに対してデプロイすることを含む。例えば、図１Ａは、アプリケーション層１０３内のエグゼクティブ・アプリケーション１０５が、１つまたは複数のメッセージ１４７を、仮想マシン層１０７内の仮想マシン・マネージャ１２０へ送ることを示す。図１Ａに示されているように、指示１４７が、特定された仮想マシン１５０ａと１５０ｂをインストールする１つまたは複数の要求を含む。
【００５１】
さらに、図２は、この方法は、要求されたアプリケーションを仮想マシンにインストールする動作２３０を含むことができることを示している。動作２３０は、デプロイされた１つまたは複数の仮想マシンのアプリケーション・プログラムをインストールすることを含む。例えば、図１Ｂに示すように、仮想マシンの１５０ａと１５０ｂが仮想マシン・マネージャ１２０によって物理ホスト１３０にインストールされると、エグゼクティブ・アプリケーション１０５を介して、アプリケーション層１０３が１つまたは複数のメッセージ１６０ａと１６０ｂを、仮想マシン１５０ドライバを介して、対応する仮想マシン層１０７に送る。仮想マシン・ドライバは、次いで、プロパティ１３７ａに従って、要求されたアプリケーション１３５ａのインストールおよび構成を指示する。
【００５２】
上記に加えて、図３は、本発明の実装形態に従うシステム１００全体の観点からの追加または代替の方法が、インストール要求に対してアプリケーション・プロパティを特定する動作３００を含むことができることを示す。動作３００は、アプリケーション・プログラムを開始するための１つまたは複数の要求をアプリケーション層で受け取ることを含み、要求されたアプリケーション・プログラムは、使用すべき仮想マシンの種類と数を示す１つまたは複数のプロパティを含む。例えば、図１Ａは、インストール要求１１３を受け取ると、アプリケーション層１０３内のエグゼクティブ・アプリケーション１０５とアプリケーション・リポジトリ１１０が通信して、要求されたアプリケーション１３５ａに関するプロパティ１３７ａを受け取ることを示す。前述のように、プロパティ１３７ａは、物理ホストの種類または位置、アプリケーション・プログラムを実行するために使用すべき仮想マシンの種類、数またはリソース要件のような、要求されたアプリケーション・プログラム１３５ａに関する様々な種類の情報を含むことができる。
【００５３】
また、図３は、エグゼクティブ・アプリケーション１０５の観点からの方法が、利用可能な仮想マシンに関するデータ構造を検証する動作３１０を含むことができることを示す。動作３１０は、アプリケーション層における１つまたは複数のデータ構造を検証して、コンピュータ化された環境で利用可能な１つまたは複数の仮想マシンを特定することを含む。例えば、図１Ａおよび図１Ｂは、アプリケーション層１０３におけるエグゼクティブ・アプリケーション１０５が、受け取ったプロパティ１３７ａを解釈しおよび／または詳細化して、ホスト１３０および２つの異なる仮想マシン、この場合は仮想マシン１５０ａと１５０ｂ、内にインストールすべきアプリケーション１３５ａを決定することを示す。
【００５４】
さらに、図３は、エグゼクティブ・アプリケーション１０５の観点からの方法が、アプリケーションを適切な仮想マシンにインストールする動作３２０を含むことができることを示す。動作３２０は、仮想マシン層に指示して、１つまたは複数の物理ホストにインストールされた１つまたは複数の利用可能な仮想マシンに、要求されたアプリケーション・プログラムをインストールすることを含む。例えば、図１Ａに示すように、エグゼクティブ・アプリケーション１０５を介して、アプリケーション層１０３が１つまたは複数のメッセージ１４７を、仮想マシン・マネージャ１２０を介して仮想マシン層１０７に送る。図示したメッセージ１４７は、仮想マシンの１５０ａと１５０ｂを物理ホスト１３０にインストールする指示を含む。図１Ａは、さらに、仮想マシン・マネージャ１２０が１つまたは複数の対応するメッセージ１５５を物理ホスト１３０に送るという点で、仮想マシン層１０７が要求に作用することを示す。メッセージ１５５は、次に、物理ホスト１３０に指示して、要求された仮想マシン１５０ａと１５０ｂをインストールする。
【００５５】
さらに、図３は、エグゼクティブ・アプリケーション１０５の観点から見た方法が、アプリケーションが除去されたときに仮想マシンを削除する動作３３０を含むことができることを示す。動作３３０は、要求されたアプリケーション・プログラムが仮想マシンからアンインストールされたことを、データ構造を通して特定すると、アプリケーション層が仮想マシンを対応する物理ホストから除去することを指示することを含む。例えば、図１Ｃに示すように、アプリケーション層１０３は、直接的にまたは最初に、エグゼクティブ・アプリケーション１０５を通してデータ構造１２３へのメッセージ１７０を受け取る。次に、エグゼクティブ・アプリケーション１０５は、アプリケーション１３５ａがアンインストールされ、仮想マシン１５０ａと１５０ｂを除去する（すなわち、物理ホスト１３０から削除するか、または、物理ホスト１３０の前のバージョンに復帰する）必要があることを特定する。従って、アプリケーション層１０３は、エグゼクティブ・アプリケーション１０５を介して、１つまたは複数のメッセージ１８０を仮想マシン層１０７に送り、仮想マシン１５０ａと１５０ｂをホスト１３０から除去する（すなわち、削除または復帰する）。
【００５６】
したがって、本発明の実装形態は、仮想マシン・スプロールを管理する一貫した効率的なアプローチを提供する。具体的には、多数の異なる一意な仮想マシン構成を複合型のアプリケーションとして抽象化し管理することによって、本明細書で説明した宣言的なモデル駆動型のアプローチは簡潔性（したがって、主として、管理コストの削減）をもたらす。具体的には、本明細書で説明したプラットフォーム／システムは、複合型のアプリケーションの宣言的なモデルを用いて、要求されたアプリケーションを実行し、仮想マシンのライフ・サイクルを管理するための、適切な仮想マシン構成を自動的に作成する。任意数の仮想マシンを動作可能なアプリケーションの減少として表すことで、仮想化の管理における大幅な効率性の増加がもたらされる。
【００５７】
さらに、本明細書で説明した仮想マシン層およびアプリケーション層の両方を構成して、オン・プレミスとクラウド両方のデプロイをサポートできることは理解されよう。このように、仮想マシンをオン・プレミスで実行するだけでなく、クラウド内でも実行することもでき、アプリケーション層は、任意の様々なウェブ・サービスまたはデータベース・アプリケーション・モジュールをオン・プレミスでデプロイし実行でき、または、アプリケーション・モジュールをクラウドでデプロイし実行することができる。係るアプローチにより、アジリティが可能となり、事実上どんな企業においても、実行されているビジネス・アプリケーションに関する管理コストが削減されることは理解されよう。
【００５８】
以下でさらに詳細に論ずるように、本発明の実施形態は、様々なコンピュータ・ハードウェアを含む特殊目的または汎用目的のコンピュータを備えることができる。本発明の範囲内の実施形態にはまた、コンピュータ実行可能命令またはデータ構造を保持または格納したコンピュータ読取可能媒体が含まれる。係るコンピュータ読取可能媒体は、汎用目的または特殊目的のコンピュータによってアクセスできる任意の利用可能な媒体であることができる。
【００５９】
限定ではなく例として、係るコンピュータ読取可能媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭもしくは他の光ディスク記憶、磁気ディスク記憶もしくは他の磁気記憶装置、または所望のプログラム・コード手段をコンピュータ実行可能命令もしくはデータ構造の形で運搬もしくは記憶するために使用でき且つ汎用目的もしくは特殊目的のコンピュータによってアクセスできる任意の他の媒体を備えることができる。情報をネットワークまたは別の通信接続(ハードワイヤード、無線、またはハードワイヤードもしくは無線の組合せ)を介してコンピュータに転送または提供する場合、コンピュータは当該接続を適切にコンピュータ読取可能媒体とみなす。したがって、任意の上記の接続を適切にコンピュータ読取可能媒体と称する。上記の組合せも、コンピュータ読取可能媒体の範囲に含まれるべきである。
【００６０】
コンピュータ実行可能命令は、例えば、汎用目的のコンピュータ、特殊目的のコンピュータ、または特殊目的の処理装置に特定の機能または機能群を実行させる命令およびデータを含む。主題を構造的な特徴および/または方法論的な動作に固有な言葉で説明したが、添付の特許請求の範囲で定義した主題は、必ずしも上述の特定の特徴または動作に限定されないことは理解されよう。そうではなく、上述した特定の特徴および動作は、特許請求の範囲を実装する形態の例として開示されている。
【００６１】
本発明は、その趣旨または本質的な特徴から逸脱することなく、他の特定の形態で具体化してもよい。説明した実施形態は、あらゆる面において限定的ではなく、例示にすぎないと解釈すべきである。したがって、本発明の範囲は、上述の説明ではなく、添付の特許請求の範囲によって画される。特許請求の範囲の意味および均等の範囲にあるあらゆる変更は、その範囲に包含される。
【図１Ａ】
2011524053.tif 000003
【図１Ｂ】
2011524053.tif 000004
【図１Ｃ】
2011524053.tif 000005
【図２】
2011524053.tif 000006
【図３】
2011524053.tif 000007
【国際調査報告】
2011524053.tif 000008
2011524053.tif 000009