(57)【要約】分散コンピューティング環境内のアプリケーションによって使用されるコンポーネントを更新するシステム、方法およびコンピュータ読取可能媒体。分散コンピューティング環境内のアプリケーションが依拠するコンポーネントのインベントリを作成および維持して、ある特定のコンポーネントを使用するアプリケーションの識別を容易にする。インベントリから、ある特定のコンポーネントを使用するアプリケーションの判定が行われる。その特定のコンポーネント向けに更新が利用可能であるという指示が受信される。特定のコンポーネントを使用するアプリケーション用のアプリケーションイメージは、分離コンピューティング環境内でブートされ、コンポーネントが更新されることを可能にする。更新されたコンポーネントを反映する、アプリケーションの新規イメージが作成される。アプリケーションの開発者などのユーザに、アプリケーションの将来のインスタンスのために新規イメージが利用可能であることが通知される。
2013522769.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサおよびメモリを有するコンピューティングシステムによって実行されると、前記コンピューティングシステムに、アプリケーションイメージをコンポーネントで更新する方法を実行させるコンピュータ実行可能命令を具備したコンピュータ記憶媒体であって、前記方法は、
分散コンピューティング環境を通してアクセス可能なサービスによって前記コンポーネントが使用されることを自動的に判定するステップであって、前記サービスは、前記アプリケーションイメージによって表されるアプリケーションのインスタンスである、ステップと、
前記コンポーネント向けの更新が利用可能であるという指示を受信するステップと、
前記アプリケーションイメージが前記コンポーネントを使用していることを識別するステップと、
前記分散コンピューティング環境の分離コンピューティング環境において前記アプリケーションイメージを自動的に実行して、前記コンポーネントを更新するステップと、
前記分散コンピューティング環境内に、更新された前記コンポーネントを有する前記アプリケーションを反映する新規アプリケーションイメージを格納するステップと
を含むことを特徴とするコンピュータ記憶媒体。
【請求項２】
コンポーネントの判定は、前記アプリケーションの開発者によって提供されるインベントリであることを特徴とする請求項１に記載の方法。
【請求項３】
前記アプリケーションイメージが前記コンポーネントを使用していることを識別するステップは、ユーザによる介入なしで行われることを特徴とする請求項１に記載の方法。
【請求項４】
前記アプリケーションイメージが前記コンポーネントを使用していることを識別するステップは、前記アプリケーションによって使用されるコンポーネントのインベントリを参照することを含むことを特徴とする請求項１に記載の方法。
【請求項５】
前記分離コンピューティング環境は、前記分散コンピューティング環境内の定義されたネットワーク接続を有する仮想マシンであることを特徴とする請求項１に記載の方法。
【請求項６】
前記分離コンピューティング環境は、前記アプリケーションのユーザによって制御されない、前記分散コンピューティング環境内のリソースであることを特徴とする請求項１に記載の方法。
【請求項７】
前記新規アプリケーションイメージは、前記アプリケーションイメージに特有のカスタマイズ特徴を保持することを特徴とする請求項１に記載の方法。
【請求項８】
前記新規アプリケーションイメージを格納するステップに続いて、前記アプリケーションイメージを維持するステップをさらに含むことを特徴とする請求項１に記載の方法。
【請求項９】
前記アプリケーションのユーザに、前記新規アプリケーションイメージが前記分散コンピューティング環境に格納されたことを通知するステップをさらに含むことを特徴とする請求項１に記載の方法。
【請求項１０】
前記アプリケーションの新規インスタンスのために前記新規アプリケーションイメージをインスタンス化する指示を、前記ユーザから受信するステップをさらに含むことを特徴とする請求項９に記載の方法。
【請求項１１】
前記アプリケーションの新規インスタンスのために前記新規アプリケーションイメージの代わりに前記アプリケーションイメージをインスタンス化する指示を、前記ユーザから受信するステップをさらに含むことを特徴とする請求項９に記載の方法。
【請求項１２】
アプリケーションイメージのコンポーネントを更新する方法を実施するコンピュータシステムであって、前記コンピュータシステムは、コンピュータ記憶媒体に結合されたプロセッサを備え、前記コンピュータ記憶媒体は、前記プロセッサによって実行可能な複数のコンピュータソフトウェアを格納し、前記コンピュータソフトウェアは、
分散コンピューティング環境において１つまたは複数のアプリケーションによって使用されるコンポーネントに対する更新を受信する、受信サービスと、
前記１つまたは複数のアプリケーションのうちのあるアプリケーションについて、前記コンポーネントを使用するアプリケーションイメージを自動的に識別する、コンポーネント更新サービスと、
前記分散コンピューティング環境内の分離コンピューティング環境である仮想マシンにおいて前記アプリケーションイメージを実行する前記コンポーネント更新サービスと、
前記分離コンピューティング環境内で前記コンポーネントに前記更新を適用して、更新エージェントを容易にする前記コンポーネント更新サービスと、
前記アプリケーションの新規イメージの格納を容易にする前記コンポーネント更新サービスと
を備えることを特徴とするコンピュータシステム。
【請求項１３】
前記仮想マシン内での前記アプリケーションイメージの実行は、人間の介入なしで動作することを特徴とする請求項１２に記載のシステム。
【請求項１４】
前記新規イメージは、前記アプリケーションイメージに特有の特徴を自動的に維持することを特徴とする請求項１２に記載のシステム。
【請求項１５】
プロセッサおよびメモリを有するコンピューティングシステムによって実行されると、前記コンピューティングシステムに、アプリケーションイメージをコンポーネントで更新する方法を実行させるコンピュータ実行可能命令を具備したコンピュータ記憶媒体であって、前記方法は、
アプリケーションイメージによって表されるアプリケーションによって使用される複数のコンポーネントを判定するステップと、
前記複数のコンポーネントをインベントリとして記録するステップと、
前記複数のコンポーネントのうち、あるコンポーネント向けの更新の指示を受信するステップと、
前記インベントリから、前記アプリケーションイメージが前記コンポーネントを使用すると自動的に識別するステップと、
前記アプリケーションイメージを、前記分散コンピューティングシステムの分離コンピューティング環境において実行するステップと、
前記分離コンピューティング環境において前記コンポーネント向けの前記更新を受信するステップと、
前記分離コンピューティング環境における前記コンポーネントの更新を容易にするステップと、
前記コンポーネントが前記分離コンピューティング環境内で更新されることを確認するステップと、
前記更新されたコンポーネントを使用して、前記アプリケーションの新規アプリケーションイメージを作成するステップと、
前記新規アプリケーションイメージを前記分散コンピューティング環境において格納するステップと、
前記アプリケーションのユーザに、前記新規アプリケーションイメージが前記分散コンピューティング環境内で利用可能であることを通知するステップと
を含むことを特徴とするコンピュータ記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想マシンイメージ更新サービスに関する。
【背景技術】
【０００２】
分散コンピューティングシステムが、アプリケーションを稼働し、データを維持するための様々な設定において利用される。例えば、従来はパーソナルコンピュータに格納および維持されていた、１つまたは複数の所望の機能を実行するためのアプリケーションは、分散コンピューティングシステムにおいて実行されると、パーソナルコンピュータにあるアプリケーションの個々のコピーに関連付けられたローカルリソース、維持、および他の負担を必要することなく、同様の機能性を提供することができる。
【０００３】
分散コンピューティングシステム（環境）を通してアクセス可能なアプリケーションは、ある特定のユーザグループに特有の特徴を含み得る。特定のユーザグループに特有のこうした特徴は、アプリケーションによって使用されるコンポーネントに対する従来の更新の自動化を妨げる。従来、分散コンピューティングシステムアプリケーションを更新するとき、そのプロセスは面倒であり、結果として、更新より前の、アプリケーションにとって独自の特徴の多くを回復するのに、手動介入が行われる。したがって、アプリケーションの開発者などのユーザは、更新プロセスを開始して、特徴と、アプリケーション内のコンポーネントの更新の前に存在していたカスタマイズとを展開し直す。
【０００４】
さらに、アプリケーションによって使われるコンポーネントの更新を開始するユーザは従来、そのコンポーネントが、ある特定のアプリケーションによって使われること、およびコンポーネント向けの更新が存在することを知っている必要がある。その結果、分散コンピューティング環境にわたるコンポーネントの更新は、システム規模でコンポーネントの更新の集中および自動化がなされないことによって妨げられる。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
したがって、アプリケーションのコンポーネントを更新するための現在のプロセスは、ユーザが、更新が利用可能であることを手動で識別し、アプリケーションを構築し直すことに依拠するのだが、アドホックな解決策であり、労働集約的であり、エラーが起こりやすい。さらに、こうした解決策は、アプリケーションで使用される複数のコンポーネントを有する複数のアプリケーションを提供する分散コンピューティング環境にわたって適用し、および更新が利用可能であることを識別するのには、スケーラブルでない。
【課題を解決するための手段】
【０００６】
本発明の実施形態は、分散コンピューティング環境内のアプリケーションによって使用されるコンポーネントを更新するシステム、方法およびコンピュータ記憶媒体に関する。分散コンピューティング環境内のアプリケーションが依拠するコンポーネントのインベントリが、作成および維持されて、ある特定のコンポーネントを使用するアプリケーションの識別を容易にする。ある特定のコンポーネントを使用するアプリケーションの判定が行われる。その特定のコンポーネント向けに更新が利用可能であるという指示が受信される。特定のコンポーネントを使用するアプリケーション用のアプリケーションイメージが、コンポーネントを更新させるように、分離コンピューティング（isolated computing）環境内でブートされる。更新されたコンポーネントを反映するアプリケーションの新規イメージが作成される。例示的な実施形態では、アプリケーションの開発者などのユーザに、その新規イメージがそのアプリケーションの今後のインスタンス化に利用可能であることが通知される。
【０００７】
本概要は、「発明を実施するための形態」において後でさらに説明する概念の選択を、簡略化した形で紹介するためのものである。本概要は、特許請求の対象の主要な特徴または本質的な特徴を識別することは意図しておらず、特許請求の対象の範囲を決定する際の助けとして使用されることも意図していない。
【０００８】
本発明の例示的実施形態について、参照によって本明細書に組み込まれている、添付の図面を参照して後で詳しく説明する。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施形態の実装に適した例示的なコンピューティングデバイスを示す図である。
【図２】本発明の実施形態が利用され得る例示的なアプリケーション配布システムを示すブロック図である。
【図３】本発明の実施形態が利用され得る例示的な分散コンピューティング環境を示すブロック図である。
【図４】本発明の実施形態による例示的な分散コンピューティング環境を示す図である。
【図５】本発明の実施形態による分散コンピューティング環境において、コンポーネントを用いてアプリケーションイメージを更新する方法を示すフロー図である。
【図６】本発明の実施形態による分散コンピューティング環境において、コンポーネントを用いてアプリケーションイメージを更新する方法を示す別のフロー図である。
【発明を実施するための形態】
【００１０】
法的要件を満たすように、本発明の実施形態の主題を本明細書において具体的に説明する。ただし、この説明自体は、本特許の範囲を限定することを意図していない。そうではなく、本発明者は、特許請求の対象が、本文書において説明されるものと類似した、異なるステップまたはステップの組合せを含むように、現在または将来の他の技術とともに、他の方法でも実施されることを企図している。
【００１１】
本発明の実施形態は、分散コンピューティング環境内のアプリケーションによって使用されるコンポーネントを更新するシステム、方法およびコンピュータ記憶媒体に関する。分散コンピューティング環境内のアプリケーションが依拠するコンポーネントのインベントリが作成および維持されて、ある特定のコンポーネントを使用するアプリケーションの識別を容易にする。ある特定のコンポーネントを使用するアプリケーションの判定が行われる。その特定のコンポーネント向けに更新が利用可能であるという指示が受信される。特定のコンポーネントを使用するアプリケーション用のアプリケーションイメージが、分離コンピューティング環境内でブートされ、コンポーネントを更新するのを可能にする。更新されたコンポーネントを反映するように、アプリケーションの新規イメージが作成される。例示的な実施形態では、アプリケーションの開発者などのユーザに、アプリケーションの今後のインスタンス化に新規イメージが利用可能であることが通知される。
【００１２】
したがって、一態様では、本発明は、プロセッサおよびメモリを有するコンピューティングシステムによって実行されると、コンピューティングシステムに、アプリケーションイメージをコンポーネントで更新する方法を実行させるコンピュータ実行可能命令を具備するコンピュータ記憶媒体を提供する。この方法は、分散コンピューティング環境を通してアクセス可能なサービスによってコンポーネントが使用されることを自動的に判定することを含み、サービスは、アプリケーションイメージによって表されるアプリケーションをインスタンス化したものである。この方法は、コンポーネント向けの更新が利用可能であるという指示を受信することも含む。さらに、この方法は、アプリケーションイメージがコンポーネントを使用中であることを識別することを含む。さらに、この方法は、分散コンピューティング環境の分離コンピューティング環境において、アプリケーションイメージを自動的に実行して、コンポーネントを更新することを含む。この方法は、分散コンピューティング環境において、更新されたコンポーネントを有するアプリケーションを反映する新規アプリケーションイメージを格納することも含む。
【００１３】
別の態様では、本発明は、アプリケーションイメージのコンポーネントを更新する方法を実行するためのコンピュータシステムを提供し、コンピュータシステムは、コンピュータ記憶媒体に結合されたプロセッサを備え、コンピュータ記憶媒体は、プロセッサによって実行可能な複数のコンピュータソフトウェアを格納する。コンピュータソフトウェアは、分散コンピューティング環境において１つまたは複数のアプリケーションによって使用されるコンポーネントに対する更新を受信する受信サービスを含む。コンピュータソフトウェアは、コンポーネントを使用して、１つまたは複数のアプリケーションのうち、あるアプリケーション用のアプリケーションイメージを自動的に識別するコンポーネント更新サービスも含む。コンポーネント更新サービスは、分散コンピューティング環境内の分離コンピューティング環境である仮想マシンにおいてアプリケーションイメージを実行する。さらに、コンポーネント更新サービスは、分離コンピューティング環境内でコンポーネントに更新を適用することにより、更新エージェントを助けるように機能する。コンポーネント更新サービスは、アプリケーションの新規イメージの格納を容易にする。
【００１４】
本発明の第３の態様は、プロセッサおよびメモリを有するコンピューティングシステムによって実行されると、コンピューティングシステムに、アプリケーションイメージをコンポーネントで更新する方法を実施させるコンピュータ実行可能命令を具備したコンピュータ記憶媒体を提供する。この方法は、アプリケーションイメージによって表されるアプリケーションによって使用される複数のコンポーネントを判定することを含む。この方法は、複数のコンポーネントをインベントリとして記録することも含む。さらに、この方法は、複数のコンポーネントのうち、あるコンポーネント向けの更新の指示を受信することを含む。さらに、この方法は、インベントリから、アプリケーションイメージがコンポーネントを使用することを自動的に識別することを含む。この方法は、分散コンピューティングシステムの分離コンピューティング環境内でアプリケーションイメージを実行することも含む。この方法は、分離コンピューティング環境においてコンポーネント向けの更新を受信することをさらに含む。この方法は、分離コンピューティング環境内でのコンポーネントの更新を容易にすることも含む。この方法は、コンポーネントが分離コンピューティング環境内で更新されることを確認することをさらに含む。この方法は、更新されたコンポーネントを使用して、アプリケーションの新規アプリケーションイメージを作成することも含む。この方法は、分散コンピューティング環境内で新規アプリケーションイメージを格納することも含む。さらに、この方法は、アプリケーションのユーザに、分散コンピューティング環境内で新規アプリケーションイメージが利用可能であることを通知することを含む。
【００１５】
本発明の実施形態の概要を簡単に説明したが、本発明の実施形態の実装に適した例示的な動作環境について、以下に記載する。
【００１６】
図面全体を参照するが、最初は特に図１を参照すると、本発明の実施形態を実装するのに適した例示的な動作環境が示されており、全体がコンピューティングデバイス１００（コンピューティング環境）と指定されている。コンピューティングデバイス１００は、適切なコンピューティング環境の一例に過ぎず、本発明の用途または機能性の範囲に関していかなる限定を示唆することも意図していない。コンピューティングデバイス１００は、図示するモジュール／コンポーネントのいずれか１つまたはその組合せに関するいかなる依存または要件を有するように解釈されるべきでもない。
【００１７】
実施形態は、コンピュータまたは携帯情報端末もしくは他のハンドヘルドデバイスなどの他のマシンによって実行されるプログラムモジュールなど、コンピュータ実行可能命令を含むコンピュータコードまたはマシン使用可能命令という一般的コンテキストで記載され得る。概して、ルーチン、プログラム、オブジェクト、モジュール、データ構造などを含むプログラムモジュールは、特定のタスクを実施し、または特定の抽象データタイプを実装するコードを指す。実施形態は、ハンドヘルドデバイス、家電製品、汎用コンピュータ、特殊コンピューティングデバイス、クラウドコンピューティング環境、サーバ、ノードなどを含む、様々なシステム構成で実施することができる。本発明の実施形態は、通信ネットワークを介してリンクされるリモート処理デバイスによってタスクが実施される分散コンピューティング環境において実施することもできる。
【００１８】
図１の参照を続けると、コンピューティングデバイス１００は、メモリ１１２、１つまたは複数のプロセッサ１１４、１つまたは複数の提示モジュール（presentation module）１１６、入出力（Ｉ／Ｏ）ポート１１８、Ｉ／Ｏモジュール１２０、および例示的電源１２２というデバイスを直接または間接的に結合するバス１１０を含む。バス１１０は、１つまたは複数のバスが何（アドレスバス、データバス、またはその組合せなど）であり得るかを表す。図１の様々なブロックは、分かりやすくするために線で示してあるが、実際には、様々なモジュールの線引きはあまり明確でなく、例えて言うと、その線はより正確にはグレーであり曖昧であろう。例えば、ディスプレイデバイスなどの提示モジュールを、Ｉ／Ｏモジュールであるとみなすことができる。また、プロセッサはメモリを有する。本発明者は、このようなことが当該分野の性質であると認識しており、図１の線図は、１つまたは複数の実施形態に関連して使うことができる例示的なコンピューティングデバイスを例示するに過ぎないことを繰り返しておく。「ワークステーション」、「サーバ」、「ラップトップ」、「ハンドヘルドデバイス」のようなカテゴリはすべて、図１の範囲内であることが企図されており、「コンピュータ」または「コンピューティングデバイス」を指すので、こうしたカテゴリの間は区別されない。
【００１９】
コンピューティングデバイス１００は典型的に、様々なコンピュータ読取可能媒体を含む。限定ではなく例として、コンピュータ読取可能媒体は、ＲＡＭ（ランダムアクセスメモリ）、ＲＯＭ（読み取り専用メモリ）、ＥＥＰＲＯＭ（電子的消去可能プログラム可能読み取り専用メモリ）、フラッシュメモリもしくは他のメモリ技術、ＣＤＲＯＭ、ＤＶＤ（デジタル多用途ディスク）または他の光もしくはホログラフメディア、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶デバイスなどのコンピュータ記憶媒体、あるいは所望の情報をエンコードするのに使うことができ、コンピューティングデバイス１００によってアクセスすることができる他の任意の媒体を備えることができる。
【００２０】
メモリ１１２は、揮発性および／または不揮発性メモリの形のコンピュータ記憶媒体を含む。メモリは、取外し可能、取外し不可能、またはその組合せとすることができる。例示的なハードウェアデバイスは、半導体メモリ、ハードドライブ、光ディスクドライブなどを含む。コンピューティングデバイス１００は、メモリ１１２やＩ／Ｏモジュール１２０など、様々なエンティティからデータを読み取る１つまたは複数のプロセッサを含む。提示モジュール（複数可）１１６は、ユーザまたは他のデバイスにデータ指示を提示する。例示的な提示モジュールは、ディスプレイデバイス、スピーカ、印刷モジュール、振動モジュールなどを含む。Ｉ／Ｏポート１１８は、コンピューティングデバイス１００を、その一部が内蔵型とすることができるＩ／Ｏモジュール１２０を含む他のデバイスに論理的に結合させる。例示的モジュールは、マイクロホン、ジョイスティック、ゲームパッド、衛星パラボラアンテナ、スキャナ、プリンタ、無線デバイスなどを含む。
【００２１】
図２を参照すると、本発明の実施形態を用いることができる例示的なアプリケーション配布システム２００を示すブロック図が提供されている。本明細書に記載するこの配置および他の配置は、単に例として説明されることを理解されたい。図示してあるものに加え、またはその代わりに、他の配置および要素（例えば、マシン、インターフェイス、イメージ、コンポーネント、およびアプリケーションなど）を使用することもでき、一部の要素は完全に省いてもよい。
【００２２】
アプリケーション配布システム２００を、分散コンピューティングシステムの一部として用いることができる。分散コンピューティングシステムの例は、クラウドコンピューティングシステムなどを含む。例えば、クラウドコンピューティングシステムとは、インフラストラクチャ（例えば、処理能力、メモリ、リソース）を、「クラウド」内でエンドユーザからプロバイダにシフトさせる、インターネットベースのコンピューティングシステムである。クラウドという用語は、インターネットを表す比喩として使用され得る。したがって、クラウドコンピューティングは、ある実施形態では、コンピューティングリソースと基礎の技術アーキテクチャ（例えば、サーバ、ストレージ、ネットワーク）との間の抽象化を提供するコンピューティング能力を表し、最低限の管理作業またはサービスプロバイダ対話を用いた迅速なプロビジョニングおよびリリースが可能な構成可能コンピューティングリソースの共有プールへの、便利なオンデマンドネットワークアクセスを可能にする。
【００２３】
アプリケーション配布システム２２０は、アプリケーション２０２からなる。アプリケーション２０２は、クラウドアプリケーションなど、例示的なアプリケーションである。アプリケーションは、ソフトウェアアーキテクチャにおいてクラウドコンピューティングを使用して、エンドユーザのコンピュータ上でアプリケーションをインストールし、かつ／または稼働する必要性を、削減するか潜在的には除去する。したがって、アプリケーション配布システム２００を通して配信されるアプリケーションは、エンドユーザのソフトウェア維持、継続操作およびサポートの負担を軽減することができる。アプリケーション２０２の例は、アプリケーションコードの少なくとも一部と、エンドユーザによって使用されるコンピューティングデバイスとは別個のインフラストラクチャとを維持しながら、エンドユーザによって、コンピューティングタスクを実施するのに用いられるサービスを含む。
【００２４】
アプリケーション２０２は、複数のコンポーネントからなる。例えば、コンポーネント１  ２０４、コンポーネント２、２０６、およびコンポーネントＮ  ２０８である。コンポーネントは、例示的な実施形態において、アプリケーションに機能性を提供する、アプリケーションのコードの目立たない部分（discreet portion）である。コンポーネントは、少なくとも一部の実施形態において、他のコンポーネントと組み合わされると、アプリケーションによって提供される最終的な機能性を作成するビルディングブロックとみなすことができる。したがって、アプリケーション２０２は、複数のコンポーネント（すなわち、コンポーネント１  ２０４、コンポーネント２、２０６、およびコンポーネントＮ  ２０８）から構築され、これらのコンポーネントはそれぞれ、単独または組み合わせで、アプリケーション２０２のサービスによって提供される様々な機能を担う。
【００２５】
例示的な実施形態では、エラー、欠陥、新規機能性、追加リソース、追加オプション、リソースの変更などに応答してアプリケーションが更新されると、アプリケーションの１つまたは複数のコンポーネントは、アプリケーションにおいて所望の変更が実装されやすくなるように更新される。その結果、アプリケーションは、該アプリケーションが使用する１つまたは複数のコンポーネントを更新することによって更新され得る。したがって、アプリケーションを表すコードをすべて更新するのではなく、アプリケーションのいくつかの部分またはコンポーネントを更新して、更新に必要とされるリソースを削減することができる。本明細書で使用する「コンポーネント」とは、クラウドコンピューティングシステムなどの分散コンピューティングシステムにおいて、機能性を提供するアプリケーションの一部分または全体であることが理解されよう。
【００２６】
アプリケーション２０２などのアプリケーションは、開発者によって開発される。開発者は、ときには、アプリケーションの所有者と呼ばれ、アプリケーションが提供することを意図している機能性を識別し、単独または組み合わせて使われると、アプリケーションの機能性をユーザに提供するコンポーネントを作成、調整、および／または識別する。開発者は、アプリケーションによって提供される機能性の更新を望む場合もある。機能性を更新しやすくするために、アプリケーションの開発者は、１つまたは複数のコンポーネントに更新を提供すればよい。
【００２７】
同様に、アプリケーションによって使用されるコンポーネントは、第三者の開発者によって開発され得る。第三者の開発者は、コンポーネントを更新し、次いで、更新されたコンポーネントを、アプリケーションによる使用のために提供することができる。例示的な実施形態では、開発者が、いくつかのコンポーネントからなるアプリケーションを開発する。アプリケーションを備えるコンポーネントは、開発者によって部分的に開発され、第三者の開発者によってやはり部分的に開発されてもよい。第三者の開発者によって開発されたアプリケーションのコンポーネントに関して、第三者の開発者は、ある特定のコンポーネントに対する更新を開発者に通知すればよい。別の実施形態では、第三者の開発者は、更新されたコンポーネントを開発者に通知しなくてよく、その代わり、開発者が自力で更新を発見するのに頼ってよい。したがって、開発者は、この例では、コンポーネントを使用するある特定のアプリケーション用に、コンポーネント更新が利用可能であると識別する責任がある。開発者が手動でのコンポーネント更新の識別を担っていないとき、管理およびリソースコストの削減を実現され得る。
【００２８】
図２の参照を続けると、アプリケーションイメージなどのイメージ２１０は、マシン内のアプリケーションの状態のスナップショットである。例えば、イメージは、仮想マシン内のアプリケーションのスナップショットを含む。スナップショットは、変数、プログラムカウンタ、メモリ状態などを含み得る。イメージ２１０などのイメージは、サービス２１２、サービス２１４、またはサービス２１６などのサービスを要求側ユーザに提供するようにインスタンス化され得る。例示的な実施形態では、イメージ２１０は、分散コンピューティング環境の仮想マシン内で動作しているアプリケーション２０２のスナップショットである。
【００２９】
マシン１  ２１８、マシン２  ２２０、およびマシンＮ  ２２２は、分散コンピューティング環境内で動作するマシンである。例示的な実施形態では、マシン１  ２１８、マシン２  ２２０、およびマシンＮ  ２２２は、それぞれのサービスにリソースを提供するように機能する仮想マシンである。上で論じたように、サービスとは、イメージをインスタンス化したものである。したがって、マシン１  ２１８は、この例では、サービス２１２によって要求される、必要なリソースを提供する。仮想マシンとは、物理マシンであるかのようにコンピューティングコードを実行するマシン（例えば、コンピューティングデバイス）の実装である。したがって、クラウドコンピューティング環境において、仮想マシンは、最低限の手動リソースが消費されるような拡張および削減を助けるフレームワークを提供する。
【００３０】
例示的な実施形態では、アプリケーション２０２の開発者は、コンポーネント１  ２０４など、複数のコンポーネントを含むアプリケーション２０２を提供する。分散コンピューティング環境は、アプリケーション２０２からイメージ２１０を生成するように機能する、ワシントン州レドモンドのマイクロソフトコーポレーションから販売されているＷＩＮＤＯＷＳ（登録商標）  ＡＺＵＲＥなどの動作環境を含み得る。イメージ２１０は、仮想マシンなどのマシン内のアプリケーション２０２のスナップショットである。イメージ２１０によって提供されるサービスが要求されると、イメージ２１０は、マシン１  ２１８などのマシンのリソースを使用するサービス２１２などのサービスとして、動作環境によってインスタンス化される。
【００３１】
図２に関連して挙げた様々な実施形態および例は、本質的に例示的であって、包括的ではない。分散コンピューティング環境内におけるアプリケーションの配布を達成するために追加プロセス、サービス、マシン、ネットワークアプリケーションなどを実装することができることが理解されよう。
【００３２】
さらに、本明細書に記載する要素の多くは、離散もしくは分散コンポーネントとして、または他のコンポーネントとともに、適切な任意の組合せおよび場所で実装することができる機能的エンティティである。１つまたは複数のエンティティによって実施されるものとして本明細書に記載する様々な機能は、ハードウェア、ファームウェア、および／またはソフトウェアによって実施され得る。例えば、メモリに格納された命令を実行するプロセッサによって、様々な機能が実施され得る。
【００３３】
図３を参照すると、本発明の実施形態を用いることができる例示的な分散コンピューティング環境３００を示すブロック図が提供されている。本明細書に記載するこの配置および他の配置は、例として説明されるだけであることを理解されたい。図示してあるものに加え、またはその代わりに、他の配置および要素（例えば、マシン、インターフェイス、イメージ、コンポーネント、およびアプリケーションなど）を使用することもでき、一部の要素は完全に省いてもよい。
【００３４】
図示していない他のコンポーネントの中で、環境３００は、更新サービスマシン３０２、イメージストア３０４、コンポーネント情報マシン３１０、分離環境マシン３１２、インベントリ３１４、ユーザマシン３１６、マシン１  ３１８、マシン２、３２０、およびマシンＮ  ３２２を含み得る。図３に示すユニットはそれぞれ、例えば、図１を参照して記載したコンピューティングデバイス１００など、任意のタイプのコンピューティングデバイスとすることができる。コンポーネントは、限定はしないが、１つもしくは複数のＬＡＮ（ローカルエリアネットワーク）および／またはＷＡＮ（ワイドエリアネットワーク）を含み得るネットワーク（図示せず）を介して互いと通信することができる。このようなネットワーク接続環境は、オフィス、企業規模のコンピュータネットワーク、イントラネット、およびインターネットにおいてよく見られる。任意の数のマシンおよびストアが、本発明の範囲内である環境３００において利用され得ることを理解されたい。さらに、図示していない他のユニットも環境３００に含まれ得る。
【００３５】
更新サービスマシン３０２は、仮想的または実際に、他の責務の中でも特にイメージの更新を管理および容易にするマシンである。例示的な実施形態では、更新サービスマシンは、クラウドコンピューティング環境において動作する仮想マシンである。イメージストア３０４は、イメージ３０６および新規イメージ３０８など、１つまたは複数のイメージを維持するように機能するコンピュータ読取可能媒体である。更新サービスマシン３０２およびイメージストア３０４は、インターネットなど、１つまたは複数のネットワークにより通信する。同様に、例示的な分散コンピューティング環境３００の他のマシンおよびストアは、１つまたは複数のネットワークにより通信する。
【００３６】
ユーザマシン３１６は、ユーザ、開発者、および／または第三者の開発者によって使用される、コンピューティングデバイスなどのマシンである。例えば、開発者は、分散コンピューティング環境３００内で使用するために開発者によって開発されたアプリケーションに、ユーザマシン３１６によりアクセスすることができる。追加の実施形態では、ユーザマシン３１６、同様に分散コンピューティング環境３００のすべてのマシンは、仮想マシンとすることができる。
【００３７】
コンポーネント情報マシン３１０は、分散コンピューティング環境３００内で動作するアプリケーションによって使用されるコンポーネントを識別および判別するように機能する、コンピューティングデバイス、仮想マシン、プロセス、アプリケーション、エージェントなどのマシンである。例えば、ユーザマシン３１６を使って開発者によって提供されるアプリケーションは、コンポーネント情報マシン３１０によって分析されて、アプリケーションによって使用される複数のコンポーネントを識別し、判別する。したがって、コンポーネント情報マシン３１０は、この例では、識別されたコンポーネントのリストを、インベントリとしてインベントリ３１４内で維持する。
【００３８】
インベントリ３１４は、例示的な実施形態では、分散コンピューティング環境３００内で動作する１つまたは複数のアプリケーションによって使用されるコンポーネントのリストまたはインベントリを維持するデータストアである。例えば、インベントリ３１４は、コンピューティングデバイスとともに、アプリケーションが依拠するコンポーネントのインベントリを維持し、監視するコンピュータ読取可能媒体とすることができる。
【００３９】
分離環境マシン３１２は、分散コンピューティング環境３００内の分離コンピューティング環境である。例えば、分離コンピューティング環境とは、例示的な実施形態では、限られたリソースおよび接続を有する仮想マシンである。この例では、分離コンピューティング環境は、クラウドコンピューティング環境内での衝突を防止するように設計され、分散コンピューティング環境内でのサービス中断を防止する。分散コンピューティング環境内の分離コンピューティング環境の足跡（footprint）を限定するように、リソース、接続、パラメータ、アクセス、および他の制御を制限することによって、衝突を防止することができる。分散コンピューティング環境内の衝突は、更新プロセスにおいて、分離コンピューティング環境が、コンポーネントに関連付けられた様々なリソースをブロードキャストする（例えば、伝達する）のを禁止または防止することによって、回避することができる。マシン１  ３１８、マシン２  ３２０、およびマシンＮ  ３２２は、イメージ（すなわち、イメージ３０６、新規イメージ３０８）のインスタンス化などのサービスによって使用するためのリソースを提供するように機能する、仮想的または物理的なマシンである。
【００４０】
例示的な実施形態では、コンポーネント情報マシン３１０は、インベントリ３１４において、イメージ３０６中で使用される全てのコンポーネントのインベントリを作成し、維持する。したがって、開発者、第三者の開発者などが、ある特定のコンポーネント向けの更新の指示を与えると、更新サービスマシン３０２は、この指示を受信し、インベントリ３１４にアクセスして、そのコンポーネントを使用するアプリケーションイメージを識別する。本例示的実施形態では、更新サービスマシン３０２は、更新されたコンポーネントを含むか使用するものとして、イメージ３０６を識別する。
【００４１】
この例を続けると、更新サービスマシンは、分離環境マシン３１２内でイメージ３０６をブートし、または実行する。先に論じたように、分離環境マシン３１２は、分散コンピューティング環境３００内での可能性のある衝突を防止するように、分散コンピューティング環境３００内で、限られたリソースおよび接続を有する。例えば、イメージ３０６のインスタンス化は、（例えば）更新サービスマシン３０２がイメージ３０６を更新しようと試みているのと同時に、マシン１  ３２０上で稼働中である場合がある。したがって、マシン１  ３１８上で動作するサービスが、分離環境マシン３１２内でイメージ３０６の並列リソースがブートされるときにそのリソースに「気づく」または依拠するのを防止するために、分離環境マシンのリソースおよび接続は、潜在的な衝突を防止するように制御され、制限される。
【００４２】
例に戻ると、分散コンピューティング環境のファブリック層に関連付けられるか、その一部とすることができる更新サービスマシン３０２が、分離環境マシン３１２内でイメージ３０６を実行させると、コンポーネントに対する更新が適用される。特定の実施形態では、更新の指示は、更新サービスマシン３０２によって受信される。したがって、更新サービスマシン３０２は、イメージ３０６に適用されるべき更新を取得する。追加の実施形態では、更新は、更新サービスマシン（または信頼できないコンピューティング環境の他のユニット）によって、受信される指示の一部として受信される。
【００４３】
一実施形態では、更新は、更新エージェントを含む。更新エージェントは、コンポーネントの更新を制御および／または管理するために、開発者、第三者の開発者などによって提供される。追加の実施形態では、更新エージェントは、分散コンピューティング環境３００によって使用されるファブリックコントローラまたは他のオペレーティングプラットフォームによって提供され得る。更新エージェントは、一実施形態において、結果的に生じるイメージの機能性を維持できるだけでなく、ある特定のコンポーネントが更新されるのも可能にするように、分離環境マシン内のコンポーネントの更新を整理する。
【００４４】
さらにこの例を続けると、イメージ３０６は、分離環境マシン上において、更新されたコンポーネントを用いて更新される。更新されたイメージのスナップショットをキャプチャして、イメージストア３０４に格納される新規イメージ３０８を生成することができる。新規イメージ３０８は、イメージ３０６に類似し、基礎のアプリケーションの状態のスナップショットである。ただし、新規イメージ３０８は、イメージ３０６とは異なり、更新されたコンポーネントの使用を反映する。例示的な実施形態では、イメージ３０６および新規イメージ３０８は双方とも、イメージストア３０４内で維持される。さらに、例示的な実施形態では、イメージ３０６は、新規イメージ３０８がユーザ、開発者などによって認証されるまで、様々なマシン（例えば、マシン１  ３１８）においてサービスを提供するように、継続してインスタンス化される。追加の例示的実施形態では、新規イメージ３０８は、サービスをインスタンス化するために自動的に使用され、イメージ３０６は、ロールバックの目的で維持される。
【００４５】
例示的な実施形態では、コンポーネントが更新されると、確認（verification）が実施される。確認は、分離環境マシン３１２または分散コンピューティング環境３００の別のマシンによって実施され得る。確認は、更新がコンポーネントに適用済みであることを保証するために、更新を列挙することを含み得る。追加の確認には、正しく適用された更新のファイル名、拡張、ログまたは他の指示を識別することを含めることができる。
【００４６】
新規イメージ３０８がイメージストア３０４に格納されると、例示的な実施形態では、影響を受けるアプリケーションの開発者、所有者、制御者などに通知が与えられる。この通知は、どのような更新が適用されたか、いつ適用されたか、更新とともに何が含まれていたか、更新により何が影響を受けるか、および更新されたコンポーネントを反映する新規イメージが利用可能であることを示す詳細を提供する。この例では、この通知の受信エンティティは、追加確認を実施し、またはイメージ３０６の代わりに新規イメージ３０８の使用を開始するためのコマンドを与え得る。または、先に示したように、例示的な実施形態では、新規イメージ３０８を使用して、イメージ３０６のサービスを自動的にリブートする。
【００４７】
したがって、本発明の実施形態の範囲内の所望の機能性を達成するのに、任意の数のユニット、マシン、およびストアが利用され得る。図３の様々なユニットは、分かりやすくするために線で示してあるが、実際には、様々なコンポーネントの線引きはそれほど明らかではなく、比喩的には、線は、より正確にはグレーまたは曖昧であろう。さらに、図３の一部のユニットは、単一ブロックとして示してあるが、こうした図示は性質および数において例示的であり、限定的であることは企図していない。
【００４８】
本発明の実施形態による例示的な分散コンピューティング環境４００を示す図４に移る。分散コンピューティング環境４００は、少なくとも部分的に、プロセッサ４０２、コンピュータ読取可能媒体４０４、仮想マシン４１２、およびストア４１４からなる。コンピュータ読取可能媒体４０４は、少なくとも部分的に、受信サービス４０６、コンポーネント更新サービス４０８、および更新エージェント４１０に関連付けられた機能を実施するコードからなる。図４を参照して本明細書に示し論じる要素は、本質的に例示的であり、本発明の範囲に関して限定的ではない。追加要素、マシン、媒体、コード、サービスなどが、分散コンピューティング環境４００内で実装され得ることが理解されよう。例えば、単一の仮想マシン４１２のみを視覚的に示してあるが、現実には、複数の仮想マシンを、分散コンピューティング環境４００内でいつでも使用することができる。
【００４９】
プロセッサ４０２は、コンピューティングプロセッサである。例示的な実施形態では、プロセッサ４０２は、図１を参照して先に論じたプロセッサ（複数可）１１４と本質的に同様である。
【００５０】
コンピュータ読取可能媒体４０４は、分散コンピューティング環境４００内で使用するためのコンピュータ読取可能媒体である。コンピュータ読取可能媒体４０４は、例示的な実施形態では、１つまたは複数のコンポーネント、アプリケーション、サービス、および他の機能性を維持するために機能し、プロセッサ４０２によって実行されると、分散コンピューティング環境４００内でデータ、情報、および他の入力の変換を起こす。
【００５１】
受信サービス４０６は、例示的な実施形態では、分散コンピューティング環境内の１つまたは複数のアプリケーションによって使用されるコンポーネントに対する更新を受信するように機能する。例えば、アプリケーションのコンポーネントは、コンポーネント内部での既知の衝突またはエラーにパッチをあてるように、コンポーネントの開発者によって更新することができる。更新の可用性の指示は、開発者から分散コンピューティング環境４００に伝えられる。この指示は、電子メッセージとすることができ、この例では、受信サービス４０６によって受信される。指示の受信に応答して、受信サービス４０６または分散コンピューティング環境４００の他の要素によって更新が自動的に要求され得る。追加の例では、指示を受信すると、受信サービス４０６は、分散コンピューティング環境４００内にある、またはそこで動作するアプリケーションに更新が適しているかどうか判定するための指示または指示の派生物を、分散コンピューティング環境４００の１つまたは複数の他のサービス／マシンに渡すことができる。
【００５２】
さらに、受信サービス４０６は、更新の指示を受信するのとは反対に、コンポーネント更新を受信するように機能する。例えば、コンポーネントの開発者は、コンポーネントの既知のユーザ、加入者、および／またはサービスに更新を「プッシュする」ことができる。この例では、受信サービス４０６は、更新を受信し、分散コンピューティング環境４００の１つまたは複数のサービス／マシンに更新を使用させ、例えば関連コンポーネントを更新させるように機能する。したがって、例示的な実施形態では、受信サービス４０６は、プロセッサによって実行されると、更新または更新の指示の受信を可能にするサービスである。
【００５３】
コンポーネント更新サービス４０８は、他の責務の中でも特に、アプリケーション内のコンポーネントを識別し、コンポーネントをインベントリし、コンポーネントを有するアプリケーションをインベントリから識別し、更新によるコンポーネントの更新を容易にするように機能する。例示的な実施形態では、コンポーネント更新サービス４０８は、プロセッサ４０２によって実行されると、分散コンピューティング環境４００内のアプリケーションによって使用されるコンポーネントの更新を容易にするコンピュータコードである。例示的な実施形態では、コンポーネント更新サービス４０８は、図３を参照して先に論じた更新サービスマシン３０２と機能的に等価である。したがって、先に論じたように、更新サービスマシン３０２は、分散コンピューティング環境内で動作するサービスを行う仮想マシンとすることができる。
【００５４】
例示的な実施形態では、コンポーネント更新サービス４０８は、更新用に利用可能なコンポーネントを使用し、またはコンポーネントに依拠するアプリケーションイメージ（またはアプリケーション）を自動的に識別するように機能する。本明細書で使用するように、アプリケーションイメージおよびアプリケーションは、それぞれが理解される抽象化のレベルに依存して、互換的に使うことができる。例示的な実施形態では、アプリケーションは概念的には、分散コンピューティングシステム内で１つまたは複数の機能を実現させるための一連のコードを構築するレシピまたは青写真と考えることができる。アプリケーションイメージは、例示的な実施形態では、概念的にはマシン（例えば、仮想マシン）内で実行／構造化されるアプリケーションのスナップショットと思われ得る。したがって、例示的な実施形態では、アプリケーションのコンポーネントの更新は、アプリケーションの「レシピ」において要求されていた可能性がある以前の（すなわち、古くなった）コンポーネントとは反対に、更新されたコンポーネントを含むように、マシン内のアプリケーションをリブートすることに過ぎない。
【００５５】
さらに、例示的な実施形態では、コンポーネント更新サービス４０８は、分散コンピューティング環境において仮想マシン内でアプリケーションイメージを実行するように機能する。先に論じたように、コンポーネントを更新する目的でのアプリケーションイメージの実行は、限られたネットワーク接続、リソース、および／またはアクセスを有する分離コンピューティング環境において行われ得る。例示的な実施形態では、コンポーネントを更新する目的のための、仮想マシンにおけるアプリケーションイメージの実行は、アプリケーションの開発者にとって、開発者の直接の制御下で、更新されたコンポーネント向けのアプリケーションをコンピューティングデバイスから構成することとは大きく異なる。例えば、分散コンピューティング環境の分離コンピューティング環境においてアプリケーションイメージを実行することは、更新目的でアプリケーションイメージを実行させるための第三者（例えば、開発者）による介入を必要としない。さらに、分離コンピューティング環境内でアプリケーションイメージを自動的に実行することにより、第三者によってそれ以外の方法では実現することができない、分散コンピューティング環境によるリソースの最適化が可能になる。さらに、アプリケーションイメージが分散コンピューティング環境の分離環境においてブートされるためには、第三者ではなく、コンポーネント更新サービス４０８が、アプリケーションイメージを、更新されるべきコンポーネントに依拠し、またはコンポーネントを使用するものとして識別する。
【００５６】
更新エージェント４１０は、アプリケーションを更新するように機能する。例えば、イメージは、仮想マシンにおいて実行することもブートすることもできる。更新エージェント４１０は、更新されるべきアプリケーションにおいて使用されているある特定のコンポーネントに対する更新を可能にする情報を含む。先に論じたように、更新エージェントは、アプリケーションの開発者、コンポーネントの開発者（例えば、第三者の開発者）、分散コンピューティング環境のオペレーティングシステム／制御ソフトウェアなどによって提供され得る。さらに、更新エージェントは、アプリケーションの更新を容易にするように組み合わせて使うことができる、命令、アプリケーションプログラムインターフェイス、サービス、コンピュータアプリケーションなどの組合せであることが企図される。
【００５７】
例示的な実施形態では、コンポーネント更新サービス４０８は、分離コンピューティング環境におけるある特定のアプリケーションおよび／またはコンポーネント向けの更新プロセスを先導するための更新エージェント４１０を利用する（すなわち、呼び出す）ことによって、コンポーネントの更新を容易にする。例えば、コンポーネント更新サービス４０８は、更新エージェント４１０を呼び出し、またはエージェント４１０に、コンポーネントの更新を開始させることができる。追加の実施形態では、更新サービス４０８は、更新エージェント４１０がコンポーネントの更新を進めるのに必要なリソースを予約し、または呼び出すことができる。さらに、コンポーネント更新サービス４０８に依存しない第三者によって更新エージェント４１０が提供されることが企図される。この例では、コンポーネント更新サービス４０８は、コンポーネントに対する更新が開始され得る更新エージェント４１０を呼び出し、または通知することによって、コンポーネントの更新を容易にする。
【００５８】
仮想マシン４１２は、少なくとも部分的に、分散コンピューティング環境４００内で動作する仮想マシンである。例示的な実施形態では、仮想マシン４１２は、アプリケーションイメージをブートし、コンポーネントを更新し、更新されたコンポーネントを反映するように新規アプリケーションイメージを構成する分離コンピューティング環境である。追加の例示的実施形態では、仮想マシン４１２は、アプリケーションイメージの１つまたは複数のインスタンスが分散コンピューティング環境４００のユーザ向けのサービスとしてその中で動作しているコンピューティングデバイスである。先に論じたように、分散コンピューティング環境内でアプリケーションのコンポーネントを更新するとき、仮想マシン４１２など、複数の仮想マシンが使われることが企図される。
【００５９】
ストア４１４は、アプリケーションイメージを維持するデータストアである。例えば、ストア４１４は、分散ストレージプラットフォームに組み込まれ、アプリケーションイメージと、コンポーネントの更新後のアプリケーションを反映する新規アプリケーションイメージとの双方を格納するように機能し得る。例示的な実施形態では、コンポーネント更新サービス４０８は、ストア４１４に、コンポーネントの更新後の「新規」アプリケーションイメージを格納することを容易にする。
【００６０】
例示的な実施形態では、分散コンピューティング環境４００において、アプリケーションが利用可能である。コンポーネント更新サービス４０８は、アプリケーションによって使用されるコンポーネントを判定し、こうしたコンポーネントのインベントリを生成する。受信サービス４０６は、分散コンピューティング環境４００内で使用中であるコンポーネント向けの更新が利用可能であるという指示を第三者の開発者から受信する。コンポーネント更新サービスは、インベントリに問い合わせて、アプリケーションにおいてコンポーネントが要求されることを識別する。したがって、受信サービス４０６は、第三者の開発者に更新を要求して受信する。更新を受信すると、コンポーネント更新サービス４０８は、仮想マシン４１２によって提供される分離コンピューティング環境においてアプリケーションイメージを実行させる。分離コンピューティング環境におけるブートは、更新エージェント４１０が、分散コンピューティング環境４００全体を通じて潜在的な衝突を生じさせることなく、コンポーネントを更新させるのを可能にする。コンポーネントの更新の後、コンポーネント更新サービス４０８は、コンポーネントが更新されたことを確認する。コンポーネント更新サービス４０８は、更新されたアプリケーションのスナップショットを生成させ、その結果、サービスがインスタンス化され得る「新規」アプリケーションイメージが生じる。この新規アプリケーションイメージは次いで、サービスの今後のインスタンスを実装するため、アプリケーションの開発者／制御者によるアクセスのためにストア４１４に格納される。
【００６１】
例示的な実施形態では、分離コンピューティング環境におけるアプリケーションのブートは、人間の介入なしで起こる。例えば、コンポーネントを更新し、または新規アプリケーションイメージを取り込む目的でアプリケーションイメージのブートを開始し、または承認するのに、ユーザは必要とされない。同様に、例示的な実施形態では、コンポーネント更新サービスに関して本明細書で論じた機能性を起こさせ、または実現させるのに、人間の介入は必要とされない。その結果、コンポーネントの更新の前のアプリケーション特有の特徴を維持したまま、アプリケーションによって使用されるコンポーネントの更新を自動化することができる。
【００６２】
図３に関して述べたのと同様に、本発明の実施形態の範囲内の所望の機能性を達成するのに、任意の数のユニット、マシン、サービス、およびストアが利用され得る。図４の様々なユニットは、分かりやすくするために線で示してあるが、実際には、様々なコンポーネントの線引きはそれほど明らかではなく、比喩的には、線は、より正確にはグレーまたは曖昧であろう。さらに、図４の一部のユニットは、単一ブロックとして示してあるが、こうした図示は性質および数において例示的であり、限定的であることは企図していない。
【００６３】
図５は、本発明の実施形態による分散コンピューティング環境において、アプリケーションイメージをコンポーネントで更新する方法５００を示すフロー図を示す。
【００６４】
ブロック５０２において、コンポーネントが、分散コンピューティング環境を通してアクセス可能なサービスによって使用されるものと自動的に判定される。コンポーネントは、基礎のアプリケーションが、１つまたは複数の機能性を関連アプリケーションのインスタンス化によって達成するために、そのコンポーネントの使用を要求するときに、サービスによって使用される。先に論じたように、アプリケーションイメージのインスタンス化の結果、分散コンピューティング環境内でサービスが実施されて、１つまたは複数の所望の機能を実施することができる。コンポーネントの自動判定により、分散コンピューティングシステムは、アプリケーションを更新する目的で、手動介入から独立したままである。したがって、更新プロセスにおける効率が実現され利用可能である。
【００６５】
ブロック５０４において、コンポーネント向けの更新が利用可能であるという指示を受信する。例示的な実施形態では、この指示は、更新または更新の少なくとも一部分（例えば、コード、コードセグメント）の受信である。追加の例示的実施形態では、指示は、システム内で使用されるコンポーネントのインベントリが評価されることを自動的に求める通知である。さらに、指示は、キューに入れられ、所定の閾値に達する（例えば、複数のコンポーネントが更新に利用可能であること、期間の経過、利用可能なリソースのレベル）と直ちに、更新プロセスを開始させる通知である。
【００６６】
さらに、コンポーネント向けに更新が利用可能であるという指示の受信は、例示的な実施形態において、開発者の要求で、コンポーネントの追加または除去を容易にすることを含むことができる。例えば、コンポーネントを含んでいるか、または含むことになるイメージを更新することを望む開発者は、「更新」が利用可能であるという指示を提供する。この例では、コンポーネントに対する「更新」は、コンポーネントを、アプリケーションイメージに／から全体的または部分的に追加し、および／または除去することを含む。したがって、開発者は、ある特定のコンポーネントに対する更新が利用可能であるという指示を送ることにより、そのコンポーネントがアプリケーションイメージに／から追加され、または除去されることを要求することができる。したがって、例示的な実施形態において、更新の指示を受信することは、コンポーネントをアプリケーションイメージに追加すべきこと、およびまたはアプリケーションイメージから除去すべきであることの指示を受信することを含むことが理解されよう。
【００６７】
ブロック５０６において、更新すべきコンポーネントを使用しているアプリケーションイメージが識別される。例示的な実施形態では、複数のアプリケーションによって使用されるコンポーネントの予め生成されたインベントリを参照して、これら複数のアプリケーションのうちのいずれのアプリケーションが、更新を受信したコンポーネントに依拠するかを識別する。アプリケーションイメージの識別は、いずれのアプリケーションがコンポーネントを使用するかを識別することによって遂行することができ、その結果、アプリケーションに対する関連アプリケーションイメージが識別される。例示的な実施形態では、アプリケーションイメージは、更新すべきコンポーネントの分離環境においてブートされるが、追加実施形態では、アプリケーションは、分離環境において復元されて、更新されたコンポーネントを反映する新規アプリケーションイメージとなる。
【００６８】
ブロック５０８において、ブロック５０６において識別されたアプリケーションイメージが、分離コンピューティング環境において自動的に実行される。アプリケーションまたはアプリケーションイメージを自動的に実行することにより、基礎のアプリケーションの開発者または所有者に対するリソースの要求で、コンポーネントを更新させるために手動介入することが回避される。したがって、更新指示の受信と、分離環境におけるアプリケーションイメージの実際のブートとの間の時間の削減などの効率を達成することができる。さらに、コンポーネントは、コンポーネント更新の結果として、以前に適用されたカスタマイズが開発者によって手動で適用し直されることを求めることなく、アプリケーション内で更新することができる。例えば、アプリケーション用の汎用ベースイメージを更新し、開発者がアプリケーションにカスタマイズ特徴（例えば、アプリケーションイメージに特有の特徴）および要素を適用することを求めるのではなく、既存のアプリケーションイメージを自動的にブートすることによって、コンポーネントの更新を内部で続けながら、アプリケーション向けの予め適用されたカスタマイズが維持または保存され得る。
【００６９】
ブロック５１０において、更新されたコンポーネントを有するアプリケーションを反映する、新規アプリケーションイメージが格納される。例示的な実施形態では、アプリケーションイメージは、ブロック５０８において示したように、分離コンピューティング環境においてブート／実行される。コンポーネント向けの更新は、分離コンピューティング環境内のコンポーネントに適用され、その後、更新は、適用済みであると確認され得る。
【００７０】
例示的な実施形態では、新規アプリケーションイメージは、分散コンピューティング環境において、規定の命名規則に従う一意の名前とともに格納される。この例では、コンポーネントアップグレードに先立つアプリケーションイメージと、コンポーネントアップグレードの事後のアプリケーションとの双方が、システム内で維持される。新規アプリケーションイメージが利用可能であることと、承認によりアプリケーションの将来のインスタンスが新規イメージに基づくものとなることとを示す通知が、アプリケーションの開発者などのユーザに送られる。規定の命名規則により、ユーザは、アプリケーションの将来のインスタンスのために新しいアプリケーションイメージが使用されるべきかどうかを判定するとき、そのイメージを容易に識別することができる。
【００７１】
図６は、本発明の実施形態による、アプリケーションイメージをコンポーネントで更新する方法６００を示すブロック図を示す。
【００７２】
ブロック６０２において、アプリケーションイメージによって表されるアプリケーションによって使用される複数のコンポーネントが判定される。例えば、様々なコンポーネントを呼び出すアプリケーションの検討に基づいて、こうしたコンポーネントは、ブロック６０４において示されるように、インベントリとして記録される。コンポーネントのインベントリは、リソース、許可、制約などのような付加情報を含み得る。例示的な実施形態では、インベントリは、様々なコンポーネントを使用するアプリケーションおよびアプリケーションイメージの識別を容易にする、電子的に検索可能なフォーマットとして維持される。
【００７３】
ブロック６０６において、コンポーネント向けの更新の指示が受信される。先に論じたように、この指示は、更新が利用可能であるという通知でよい。または、追加の例示的実施形態では、アップグレードの指示は、コンポーネントの更新が起こるのに必要なコードを含む。指示は、コードがどのコンポーネントに関連付けられるかについての識別を含む。例えば、指示は、ファイル名、コード、または一般的に使われる別の命名規則によってコンポーネントを識別することができる。
【００７４】
ブロック６０８において、コンポーネントを使用するアプリケーションが、インベントリから自動的に識別される。例えば、ブロック６０４で論じたインベントリへの記録に基づいて、アプリケーションおよびアプリケーションイメージが、アプリケーションの既知のコンポーネントと、受信した指示に関連付けられたコンポーネントとの間の相関に基づいて識別可能である。
【００７５】
ブロック６１０において、識別されたアプリケーションイメージが、分離コンピューティング環境において実行される。分離コンピューティング環境は、例示的な実施形態では、仮想マシンは、限られた接続およびリソースを有するクラウドコンピューティング環境内の仮想マシンである。
【００７６】
ブロック６１２において、ブロック６０６において受信した指示に関連付けられた更新が受信される。この例示的実施形態において、更新の受信は、エンティティ（例えば、開発者）による「プッシュ」、あるいは分散コンピューティング環境の１つまたは複数のサービスおよびマシンによる「プル」の結果とすることができる。
【００７７】
ブロック６１４において、コンポーネントの更新が容易にされる。例示的な実施形態では、コンポーネントの更新を容易にすることは、開発者によって提供された更新エージェントに、アプリケーションまたはコンポーネントへのパッチを適用させることによって達成される。例示的な実施形態では、更新を容易にすることは、更新を起こさせるリソースを獲得し、または予約することを含む。さらに、更新を容易にすることは、実際に更新を起こさせることを含む。
【００７８】
ブロック６１６において、コンポーネントが更新されたことの確認が行われる。先に論じたように、この確認は、結果として得られたアプリケーションのインスタンスによって使用されている、ある特定の新たなファイル名の拡張（例えば、＊．ｄｌｌ）などを識別することを含み得る。
【００７９】
ブロック６１８において、更新されたコンポーネントを使用して、アプリケーションの新規アプリケーションイメージが作成される。新規アプリケーションイメージの作成は、例示的な実施形態では、アプリケーションを実行している間に、分離コンピューティング環境の状態のスナップショットを生成することを含む。
【００８０】
ブロック６２０において、新規アプリケーションイメージが、分散コンピューティング環境内で格納される。先に論じたように、アプリケーションイメージおよび新規アプリケーションイメージは双方とも、ロールバックおよび他のトラブルシューティングプロセスを容易にするために、分散コンピューティング環境において維持することができる。アプリケーションによって定義されたサービスが要求されると、新規アプリケーションイメージをインスタンス化して、要求されたサービスの新規インスタンスを提供することができる。
【００８１】
ブロック６２２において、アプリケーションのユーザに、新規アプリケーションイメージが利用可能であることが通知される。例えば、アプリケーションの開発者は、例示的な実施形態において、アプリケーションのユーザである。同様に、所有者、制御者、および他の関係者は、例示的な実施形態において、アプリケーションのユーザである。
【００８２】
さらに、ある実施形態では、ユーザに与えられる通知は、新規アプリケーションが利用可能であり、新規アプリケーションがどこで維持されるか示す指示を含む。同様に、通知は、コンポーネントおよび／または新規アプリケーションイメージに適用される更新に関連した詳細も含むことができる。さらに、通知は、新規アプリケーションイメージがサービスのインスタンス化に使用されている実施形態では、コンポーネントの更新より前の、以前のアプリケーションイメージへのロールバックに使用可能な情報を含む。
【００８３】
この通知に応答して、ユーザは、サービスのインスタンス化のために、ある特定のアプリケーションイメージが請願されるべきであるという応答を与えることができる。したがって、関連サービスのインスタンス化にどのイメージが請願されるべきであるかに関するユーザ選択が、分散コンピューティング環境によって受信され、これにより、１つまたは複数のエンティティへの関連サービスの提供が容易になる。
【００８４】
図示した様々なコンポーネントの異なる多くの配置、ならびに図示していないコンポーネントは、本発明の精神および範囲から逸脱することなく可能である。本発明の実施形態は、制限的ではなく例示的であることを意図して記載されている。本発明の範囲から逸脱しない代替的実施形態が、当業者には明らかであろう。当業者は、本発明の範囲から逸脱することなく、上述した改善を実装する代替手段を開発することができる。
【００８５】
特定のいくつかの特徴およびサブコンビネーションは有用であり、他の特徴およびサブコンビネーションと関係なく利用されてよく、特許請求の範囲内で企図されることが理解されよう。様々な図面に列挙したすべてのステップを、必ずしも記載した具体的順序で実施する必要はない。
【図１】
2013522769.tif 000003
【図２】
2013522769.tif 000004
【図３】
2013522769.tif 000005
【図４】
2013522769.tif 000006
【図５】
2013522769.tif 000007
【図６】
2013522769.tif 000008
【国際調査報告】
2013522769.tif 000009
2013522769.tif 000010