(57)【特許請求の範囲】
【請求項１】
少なくとも２つのコンピューティングデバイス（１０１、１０２）と、
少なくとも１つの第１のコンピューティングデバイス（１０２）内で実行された少なくとも１つのマシンインスタンス（１２２）と、
前記マシンインスタンス内で実行された監視サービス（１３１）であって、
前記マシンインスタンス内で実行されている少なくとも１つのアプリケーションを識別するデータを生成する論理を備え、
前記データは前記少なくとも１つのアプリケーションと関連付けられたプロセス識別を含む、
監視サービスと、
少なくとも１つの第２のコンピューティングデバイス（１０１）内で実行可能なインベントリサービスであって、
前記監視サービスから前記データを取得する論理、及び
前記データ内に含まれた前記プロセス識別の関数として前記少なくとも１つのアプリケーションを識別する論理、
を備える、インベントリサービスと、
を備える、システム。
【請求項２】
前記監視サービスは、
前記マシンインスタンス内で実行された少なくとも１つのプロセスの名前を決定する論理と、
前記名前の関数として前記少なくとも１つのアプリケーションを識別する論理と、
をさらに備え、
前記データは、前記識別の関数として生成される、
請求項１に記載の前記システム。
【請求項３】
前記データは、前記マシンインスタンスと関連付けられたユーザ選好の関数として生成される、請求項１に記載の前記システム。
【請求項４】
前記インベントリサービスは、前記データをセキュリティポリシーまたはベストプラクティスポリシーのうちの少なくとも１つと比較する論理をさらに備える、請求項１に記載の前記システム。
【請求項５】
前記監視サービスは、
前記少なくとも１つのアプリケーションのバージョン番号を決定する論理をさらに備え、
前記データは、バージョン番号をさらに含む、
請求項１に記載の前記システム。
【請求項６】
前記インベントリサービスは、
前記アプリケーションの更新がバージョン番号の関数として利用可能であるかどうかを決定する論理と、
前記更新を示す通知を前記マシンインスタンスと関連付けられた顧客へ通信する論理と、
をさらに備える、
請求項５に記載の前記システム。
【請求項７】
前記インベントリサービスは、
前記データをデータ集約に追加する論理と、
前記データ集約の関数として分析報告を生成する論理と、
をさらに備える、
請求項１に記載の前記システム。
【請求項８】
前記分析報告は、分散型データセンタの地域、アカウント識別子、または前記少なくとも１つのマシンインスタンスの識別子に関してアプリケーション使用分布を具体化する、請求項７に記載の前記システム。
【請求項９】
システムは、ウェブサービス呼び出しを有効にするアプリケーションプログラムインターフェースを公開して、前記少なくとも１つのマシンインスタンスと関連付けられたメタデータを返す論理を備える、前記少なくとも２つのコンピューティングデバイス内で実行可能なインスタンスメタデータサービスをさらに備える、請求項１に記載の前記システム。
【請求項１０】
少なくとも１つの第１のコンピューティングデバイス内で、第１のサービスによって、前記第１のコンピューティングデバイス内で実行された少なくとも１つのアプリケーションと関連付けられた少なくとも１つのプロセス識別子を取得するステップと、
前記第１のコンピューティングデバイス内で、前記第１のサービスによって、前記少なくとも１つのプロセス識別子の関数として前記少なくとも１つのアプリケーションの識別を生成するステップと、
前記第１のコンピューティングデバイスによって、前記識別を前記第１のサービスから、少なくとも１つの第２のコンピューティングデバイス内で実行された第２のサービスに通信するステップと、
を含み、
前記第２のコンピューティングデバイス内で、ウェブサービス呼び出しを有効にするマシンインスタンスメタデータサービスを実行して、前記第１のコンピューティングデバイスと関連付けられたメタデータを取得することと、
前記第１のコンピューティングデバイス内で、前記第１のサービスによって、前記ウェブサービス呼び出しに問い合わせて、前記メタデータを取得することと、
をさらに含み、
前記識別は、前記メタデータをさらに含む、
方法。
【請求項１１】
前記第２のコンピューティングデバイス内で、前記識別を識別集約に追加することと、
前記第２のコンピューティングデバイス内で、前記識別集約の関数として分析報告を生成することと、
をさらに含む、請求項１０に記載の前記方法。
【請求項１２】
前記方法は、前記第２のコンピューティングデバイス内で、前記識別をセキュリティポリシーまたはベストプラクティスポリシーのうちの少なくとも１つと比較することをさらに含む、請求項１０に記載の前記方法。
【請求項１３】
メタデータは、前記第１のコンピューティングデバイスの一意識別子または前記第１のコンピューティングデバイスと関連付けられたアカウント識別子のうちの少なくとも１つを含む、請求項１０に記載の前記方法。
【発明の詳細な説明】
【技術分野】
【０００１】
分散インフラストラクチャのインベントリサービスに関する。
【背景技術】
【０００２】
分散型コンピューティングインフラストラクチャにより、様々なサービス及びアプリケーションはマシンインスタンス内で実行されることができる。どのサービス及びアプリケーションがマシンインスタンス内で現在実装されているかを決定することをできることが有益であろう。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
マシンインスタンス内で実装されているアプリケーションを決定する。
【課題を解決するための手段】
【０００４】
態様の一つは、システムであって、少なくとも１つのコンピューティングデバイスと、前記少なくとも１つのコンピューティングデバイス内で実行された少なくとも１つのマシンインスタンスと、前記マシンインスタンス内で実行された監視サービスであって、前記マシンインスタンス内で実行されている少なくとも１つのアプリケーションを識別するデータを生成する論理を備える、監視サービスと、前記少なくとも１つのコンピューティングデバイス内で実行可能なインベントリサービスであって、前記監視サービスから前記データを取得する論理を備える、インベントリサービスと、を備える。
【発明の効果】
【０００５】
マシンインスタンス内で実装されているアプリケーションを決定する。
【図面の簡単な説明】
【０００６】
【図１】本開示の様々な実施形態によるネットワーク化環境の図である。
【図２Ａ】本開示の様々な実施形態による例示的な地域レベルのデータセンタアーキテクチャの図である。
【図２Ｂ】本開示の様々な実施形態による例示的なデータセンタレベルのデータセンタアーキテクチャの図である。
【図２Ｃ】本開示の様々な実施形態による例示的なラックレベルのデータセンタアーキテクチャの図である。
【図２Ｄ】本開示の様々な実施形態による例示的なサーバレベルのデータセンタアーキテクチャの図である。
【図３Ａ】本開示の様々な実施形態による図１のネットワーク化環境においてクライアントによってレンダリングされたユーザインターフェースの一実施例の図である。
【図３Ｂ】本開示の様々な実施形態による図１のネットワーク化環境においてクライアントによってレンダリングされたユーザインターフェースの一実施例の図である。
【図４】本開示の様々な実施形態による図１のネットワーク化環境においてコンピューティング環境で実行されたインベントリアプリケーションの一部として実装された機能性の一実施例を図解するフローチャートである。
【図５】本開示の様々な実施形態による図１のネットワーク化環境においてコンピューティング環境で実行されたインベントリアプリケーションの一部として実装された機能性の一実施例を図解するフローチャートである。
【図６】本開示の様々な実施形態による図１のネットワーク化環境で利用されるコンピューティング環境の一実施例の図解を提供する概略ブロック図である。
【発明を実施するための形態】
【０００７】
本開示の多くの態様は、添付の図面を参照してより良く理解され得る。図面内の構成要素は、必ずしも一定の比率の縮尺ではなく、その代わりに本開示の原理を明確に図解することに重点が置かれている。さらに、図面では、同様の参照番号は、いくつかの図全体にわたって対応する部分を指定する。
【０００８】
分散型コンピューティングインフラストラクチャにより、顧客はコンピューティングデバイスの動作をシミュレーションするマシンインスタンスを実装することができる。顧客は、マシンインスタンスにおいて顧客の選択のオペレーティングシステム及びアプリケーションスイートを実装することが許される。多くの場合、分散型コンピューティングインフラストラクチャは、分割されたセキュリティモデルを用いてモデル化され、そこで顧客がマシンインスタンスのルート機能性への排他アクセスを有するが、サービスプロバイダは、インフラストラクチャ機能性への排他アクセスを有する。これにより、サービスプロバイダ及び顧客がそれぞれのサービスの動作を妨げることを防ぎ、サービスの維持及び構成に対する責任をそれぞれの管理者に置いている。
【０００９】
サービスプロバイダがマシンインスタンスへのルートアクセスを有しないとき、どのアプリケーションがマシンインスタンス内で実行されているかを決定することが難しい。このような情報は、製品のより良いマーケティングを容易にするために独立系ソフトウェアベンダにとって有用であろう。このような情報はまた、ソフトウェアの更新、ベストプラクティスの順守、セキュリティの脆弱性、または他の情報を顧客に知らせるためにマシンインスタンスを実装する顧客に有用であろう。
【００１０】
マシンインスタンスとは別々に実行されたインベントリアプリケーションは、マシンインスタンスの各々内で実行された監視サービスと通信する。監視アプリケーションは、それぞれのマシンインスタンス内で実行されたプロセスの名前を決定する。次に、実行されたアプリケーションは、プロセス名を用いて識別される。実行されたアプリケーションのバージョンはまた、プロセス名から決定され得る。監視サービスはまた、インスタンスメタデータサービスと通信して、インベントリアプリケーションへの通信のためにメタデータを取得する。次に、実行されたアプリケーション及びメタデータの識別は、監視サービスによってインベントリアプリケーションに通信され、分析の生成または別の目的のための情報を記憶する。
【００１１】
以下の説明では、システム及びその構成要素の概要が提供され、その後、それらの動作の説明が続く。
【００１２】
図１を参照すると、様々な実施形態によるネットワーク化環境１００が示される。ネットワーク化環境１００は、コンピューティング環境１０１と、コンピューティング環境１０２と、クライアント１０４とを含み、これらは、ネットワーク１０７を介して互いにデータ通信している。ネットワーク１０７としては、例えば、インターネット、イントラネット、エクストラネット、広域ネットワーク（ＷＡＮ）、ローカルエリアネットワーク（ＬＡＮ）、有線ネットワーク、無線ネットワーク、もしくは他の好適なネットワークなど、または２つ以上のこのようなネットワークの任意の組み合わせが挙げられる。
【００１３】
コンピューティング環境１０１または１０２は、例えば、サーバコンピュータまたは計算能力を提供する任意の他のシステムを備えることができる。あるいは、コンピューティング環境１０１または１０２は、複数のコンピューティングデバイスを利用することができ、このコンピューティングデバイスは、例えば、１つ以上のサーババンクもしくはコンピュータバンクまたは他の構成で配列されるコンピューティングデバイスを利用され得る。このようなコンピューティングデバイスは、単独のインストールであり得るか、または多くの異なる地理的な位置間に分布され得る。例えば、コンピューティング環境１０１または１０２は、クラウドコンピューティングリソース、グリッドコンピューティングリソース、及び／または任意の他の分散型コンピューティング構成をともに備え得る複数のコンピューティングデバイスを含み得る。場合によっては、コンピューティング環境１０１または１０２は、割り当てられた処理能力、ネットワーク、ストレージ、または他のコンピューティング関連リソースが時間とともに変化し得る弾性のコンピューティングリソースに対応することができる。コンピューティング環境１０１及び１０２は、別個のコンピューティング環境１０１及び１０２として示されるが、いくつかの実施形態では、コンピューティング環境１０１及び１０２は、組み合わされたコンピューティング環境１０１または１０２として実装され得る。
【００１４】
様々なアプリケーション及び／または他の機能性が様々な実施形態によるコンピューティング環境１０１または１０２で実行され得る。同様に、様々なデータは、コンピューティング環境１０１にアクセス可能なデータストア１１１に記憶される。データストア１１１は、理解され得るように複数のデータストア１１１を表すことができる。データストア１１１に記憶されたデータは、例えば、後述される様々なアプリケーション及び／または機能エンティティの動作と関連付けられる。
【００１５】
コンピューティング環境１０１で実行された構成要素は、例えば、インベントリアプリケーション１１７、インスタンスメタデータサービス１２１、及び本明細書に詳細に論じられていない他のアプリケーション、サービス、プロセス、システム、エンジン、または機能性を含む。コンピューティング環境１０２で実行された構成要素は、例えば、マシンインスタンス１２２、及び本明細書に詳細に論じられていない他のアプリケーション、サービス、プロセス、システム、エンジン、または機能性を含む。マシンインスタンス１２２は、１つ以上のアプリケーション１２４の実行を容易にするオペレーティングシステムの仮想化インスタンスを含む。マシンインスタンス１２２がコンピューティングデバイス内で実行されたオペレーティングシステムの仮想化インスタンスとして論じられるが、コンピューティングデバイスによるオペレーティングシステムの専用の実行もまた、マシンインスタンス１２２の代わりに使用され得ることが理解される。
【００１６】
アプリケーション１２４の各々は、マシンインスタンス１２２のオペレーティングシステム内で実行されるとき、プロセス名１２７と関連付けられる。プロセス名１２７は、プロセス名、識別番号、または理解され得るようないくつかの他の一意識別子などの英数字列を含み得る。
【００１７】
同様に、監視サービス１３１がマシンインスタンス１２２内で実行されて、対応するマシンインスタンス１２２内で現在実行されているアプリケーション１２４のプロセス名１２７を決定する。監視サービス１３１は、マシンインスタンス１２２と関連付けられたクライアント１０４によって手動でインストールされるか、新たに開始されたマシンインスタンス１２２内に自動的に含まれるか、または別の手法によってインストールされ得る。
【００１８】
いくつかの実施形態では、対応するマシンインスタンス１２２内で現在実行されているアプリケーション１２４のプロセス名１２７を決定することは、マシンインスタンス１２２内で実行されたタスクマネージャと通信することを含み得る。他の実施形態では、これは、マシンインスタンス１２２のオペレーティングシステムで実装されたアプリケーションプログラムインターフェース（ＡＰＩ）呼び出しを実行することを含み得る。アプリケーション１２４のプロセス名１２７を決定することが、対応するマシンインスタンス１２２内で現在実行されている。
【００１９】
いくつかの実施形態では、監視アプリケーション１２４は、アプリケーション１２４と関連付けられたベンダ、名前、バージョン、または他の情報を決定することによってプロセス名１２７のうちの１つに対応する実行されたアプリケーション１２４を識別することができる。いくつかの実施形態では、これは、コンピューティング環境１０１で実行されたウェブサービスまたはＡＰＩと通信することを含むことができ、このコンピューティング環境は、プロセス名１２７とアプリケーション１２４との関係を定義するアプリケーションルックアップテーブル１３４にアクセスする。他の実施形態では、これは、アプリケーションルックアップテーブル１３４、またはマシンインスタンス１２２内でローカルに具体化された他のデータにアクセスすることを含み得る。アプリケーション１２４を識別することはまた、別の手法によって実施され得る。
【００２０】
いくつかの実施形態では、監視サービス１３１は、インスタンスメタデータサービス１２１と通信して、それぞれのマシンインスタンス１２２と関連付けられたメタデータ１３５を取得する。インスタンスメタデータサービス１２１は、それぞれのマシンインスタンス１２２のメタデータ１３５を取得することを容易にするウェブサービスまたはＡＰＩを公開することができる。メタデータ１３５は、一意のマシンインスタンス１２２識別子、マシンインスタンス１２２と関連付けられた顧客アカウントの識別、または他のデータを含み得る。次に、監視サービス１３１は、プロセス名１２７、アプリケーション１２４の識別、メタデータ１３５、及び潜在的に他のデータをインベントリアプリケーション１１７に通信することができる。
【００２１】
インベントリアプリケーション１１７は、マシンインスタンス１２２内で実行された監視サービス１３１からデータを取得して、マシンインスタンス１２２のそれぞれの１つで実行されたアプリケーション１２４の識別を容易にする。この目的のために、インベントリアプリケーション１１７は、データ集約モジュール１３７を実装して、プロセス名１２７、アプリケーション１２４の識別、メタデータ１３５、及び潜在的に他のデータを取得することを容易にする。いくつかの実施形態では、これは、監視サービス１３１にアクセス可能なＡＰＩまたはウェブサービスを公開して、プロセス名１２７、アプリケーション１２４の識別、メタデータ１３５、及び潜在的に他のデータの通信を容易にすることを含む。データを取得してアプリケーション１２４の識別を容易にすることはまた、別の手法によって実施され得る。
【００２２】
監視サービス１３１がそれぞれのマシンインスタンス１２２内で実行されたアプリケーション１２４を識別しない実施形態では、インベントリアプリケーション１１７は、プロセス名１２７、メタデータ１３５、または監視サービス１３１に関して上述されるような手法によって監視サービス１３１から取得された他のデータの関数としてアプリケーション１２４を識別することができる。例えば、これは、アプリケーションルックアップテーブル１３４を参照すること、または別の手法を含み得る。
【００２３】
加えて、監視サービス１３１がインスタンスメタデータサービス１２１と通信せず、それぞれのマシンインスタンス１２２のメタデータ１３５を取得する実施形態では、インベントリアプリケーション１１７は、インスタンスメタデータサービス１２１と通信して、監視サービス１３１に関して上述される手法によって、関連のメタデータ１３５を取得することができる。
【００２４】
マシンインスタンス１２２のそれぞれ１つ内で実行されたアプリケーション１２４の識別を取得または生成した後、データ集約モジュール１３７は次に、マシンインスタンス１２２に関してアプリケーションプロファイル１４１を記憶することができる。アプリケーションプロファイル１４１は、どのアプリケーション１２４が特定のマシンインスタンス１２２内で実行されているかを示すデータを具体化する。アプリケーションプロファイル１４１は、プロセス名１２７、アプリケーション１２４の識別、マシンインスタンス１２２またはアカウント識別子に対応する一意識別子等のメタデータ１３５、及び潜在的に他のデータを含み得る。
【００２５】
インベントリアプリケーション１１７はまた、報告モジュール１４４を実装して、記憶されたアプリケーションプロファイル１４１の関数として報告１４７を生成することができる。例えば、報告モジュール１４４は、使用率、採用率、インストール率、または特定のアプリケーション１２４、アプリケーション１２４の群のベンダ、もしくは他のデータに関する他の集約データを計算することができる。加えて、報告１４７はまた、競合するアプリケーション１２４に関して特定のアプリケーション１２４の使用と関連付けられたデータを含み得る。報告１４７で具体化されたデータは、１つ以上の特定のアプリケーション１２４、アプリケーション１２４のベンダ、マシンインスタンス１２２、マシンインスタンス１２２の顧客、データセンタの地域、または他の基準点に関して集約され得る。報告１４７はまた、理解され得るようなアプリケーションプロファイル１４１から得られた他のデータを具体化することができる。
【００２６】
報告モジュール１４４はまた、取得されたアプリケーションプロファイル１４１をセキュリティポリシー、ベストプラクティスポリシー、またはアプリケーション１２４の実装の他のガイドラインと比較することができる。例えば、報告モジュール１４４は、マシンインスタンス１２２がセキュリティポリシーで開示されるような既知のセキュリティの脆弱性でアプリケーション１２４のバージョンを実行しているかどうかを決定することができる。次に、報告モジュール１４４は、脆弱性を示すマシンインスタンス１２２と関連付けられた顧客への通知を通信することができる。報告モジュール１４４はまた、アプリケーションプロファイル１４１に関して他の機能を果たすことができる。
【００２７】
データストア１１１に記憶されたデータは、例えば、アプリケーションルックアップテーブル１３４、アプリケーションプロファイル１４１、及び潜在的に他のデータを含む。
【００２８】
クライアント１０４は、ネットワーク１０７に結合され得る複数のクライアントデバイスを表す。クライアント１０４は、例えば、コンピュータシステム等のプロセッサベースのシステムを含み得る。このようなコンピュータシステムは、デスクトップコンピュータ、ラップトップコンピュータ、携帯情報端末、携帯電話、スマートフォン、セットトップボックス、音楽プレーヤ、ウェブパッド、タブレットコンピュータシステム、ゲームコンソール、電子書籍リーダー、または同等の能力を有する他のデバイスの形態で具体化され得る。
【００２９】
クライアント１０４は、クライアントアプリケーション１５１及び／または他のアプリケーション等の様々なアプリケーションを実行するように構成され得る。クライアントアプリケーション１５１は、例えば、報告１４７等、コンピューティング環境１０１及び／または他のサーバによって提供されたネットワークコンテンツにアクセスするようにクライアント１０４において実行され得る。この目的のために、クライアントアプリケーション１５１は、例えば、ブラウザ、専用のアプリケーション等を含み得る。クライアント１０４は、電子メールアプリケーション、ソーシャルネットワーキングアプリケーション、ワードプロセッサ、表計算、及び／または他のアプリケーションなどのクライアントアプリケーション１５１を超えたアプリケーションを実行するように構成され得る。
【００３０】
次に、ネットワーク化環境１００の様々な構成要素の動作の概要が提供される。最初に、１つ以上のマシンインスタンス１２２がコンピューティング環境１０２で実行される。マシンインスタンス１２２の各々は、少なくとも１つのアプリケーション１２４及び監視サービス１３１を実行している。監視サービス１３１は、それぞれのマシンインスタンス１２２内で実行されたアプリケーション１２４のプロセス名１２７を決定する。いくつかの実施形態では、これは、タスクマネージャまたはマシンインスタンス１２２内で実行された他のアプリケーション１２４と通信することを含む。他の実施形態では、これは、マシンインスタンス１２２のオペレーティングシステムで実装されたＡＰＩを呼び出すことを含む。プロセス名１２７を決定することはまた、別の手法によって実施され得る。次に、プロセス名１２７は、ＡＰＩ、ウェブサービスによって、または別の手法によってインベントリアプリケーション１１７のデータ集約モジュール１３７に通信される。
【００３１】
いくつかの実施形態では、監視サービス１３１は、プロセス名１２７をアプリケーション１２４の識別と関連付けるアプリケーションルックアップテーブル１３４に問い合わせることによってプロセス名１２７と関連付けられたアプリケーション１２４を識別することができる。これは、マシンインスタンス１２２にアクセス可能なＡＰＩまたはウェブサービスを呼び出すこと、ローカルで維持されたアプリケーションルックアップテーブル１３４に問い合わせること、または別の手法を含み得る。次に、アプリケーション１２４の識別は、ＡＰＩ、ウェブサービスによって、または別の手法によってデータ集約モジュール１３７に通信され得る。
【００３２】
いくつかの実施形態では、監視サービス１３１は、コンピューティング環境１０１で実行されたインスタンスメタデータサービス１２１に問い合わせて、対応するマシンインスタンス１２２のメタデータ１３５を取得することができる。いくつかの実施形態では、インスタンスメタデータサービス１２１は、監視サービス１３１にアクセス可能なウェブサービスまたはＡＰＩを公開して、メタデータ１３５を取得することを容易にすることができる。メタデータ１３５はまた、別の手法によって取得され得る。次に、メタデータ１３５は、ＡＰＩ、ウェブサービスによって、または別の手法によってインベントリアプリケーション１１７のデータ集約モジュール１３７に通信され得る。
【００３３】
監視サービス１３１によるプロセス名１２７、アプリケーション１２４の識別、またはメタデータ１３５の通信は、マシンインスタンス１２２またはマシンインスタンス１２２と関連付けられた顧客アカウントに関して定義されたユーザまたは顧客選好の関数として実施され得る。例えば、ユーザ選好は、プロセス名１２７、アプリケーション１２４の識別、メタデータ１３５、または他のデータがデータ集約モジュール１３７に通信されてもよいか、または通信されなくてもよいアプリケーション１２４のサブセットを定義することができる。
【００３４】
次に、データ集約モジュール１３７は、マシンインスタンス１２２内で実行されたアプリケーション１２４を識別する。いくつかの実施形態では、これは、監視サービス１３１によって通信されたデータで具体化された識別を取得することを含む。他の実施形態では、これは、監視サービス１３１からプロセス名１２７を取得することと、アプリケーションルックアップテーブル１３４に問い合わせることとを含む。マシンインスタンス１２２内で実行されたアプリケーション１２４を識別することはまた、別の手法によって実施され得る。
【００３５】
いくつかの実施形態では、データ集約モジュール１３７はまた、それぞれのマシンインスタンス１２２と関連付けられたメタデータ１３５を生成することができる。いくつかの実施形態では、これは、対応するマシンインスタンス１２２の監視サービス１３１からメタデータ１３５を取得することを含む。他の実施形態では、これは、インスタンスメタデータサービス１２１と通信して、定義されたマシンインスタンス１２２のメタデータ１３５を取得することができる。メタデータ１３５はまた、別の手法によって生成され得る。次に、データ集約モジュール１３７は、プロセス名１２７、アプリケーション１２４の識別、メタデータ１３５、または潜在的に他のデータをマシンインスタンス１２２と関連付けられたアプリケーションプロファイル１４１として記憶することができる。
【００３６】
次に、報告モジュール１４４は、クライアント１０４への通信のためにアプリケーションプロファイル１４１の関数として報告１４７を生成することができる。報告１４７は、クライアント１０４から取得された要求に応答して生成されるか、所定の間隔で生成されるか、またはいくつかの他の条件に応答して生成され得る。報告１４７は、電子メールの添付ファイルとしてクライアント１０４に通信されるか、ブラウザのクライアントアプリケーション１５１によってレンダリングされたネットワークページで符号化されるか、専用のクライアントアプリケーション１５１によって、または別の手法によってレンダリングするためにデータとして符号化され得る。
【００３７】
例えば、報告モジュール１４４は、それらのアプリケーション１２４または競合するアプリケーションの使用統計を具体化するアプリケーション１２４のベンダと関連付けられたクライアント１０４への通信のために報告１４７を生成することができる。別の例として、報告モジュール１４４は、セキュリティポリシーまたはベストプラクティスポリシー及びマシンインスタンス１２２に関して順守を具体化するマシンインスタンス１２２の顧客と関連付けられたクライアント１０４に報告１４７を生成及び通信することができる。報告１４７はまた、別の手法によって生成及び通信され得る。
【００３８】
図２Ａ〜２Ｄは、様々な実施形態によるデータセンタアーキテクチャ２００の詳細の様々なレベルを表す。図２Ａ〜２Ｄに記載されるデータセンタアーキテクチャ２００の様々な構成要素、及び記載されるようなそれらの様々な副構成要素は、マシンインスタンス１２２（図１）の実行を容易にするコンピューティング環境１０１（図１）の例示的な実装形態を表す。
【００３９】
図２Ａは、様々な実施形態による例示的なデータセンタアーキテクチャ２００の地域レベルの図を表す。地域２０１ａ〜ｎは、複数の可用性区域２０４ａ〜ｎ及び２０５ａ〜ｎを含む複数の論理グループ化である。地域２０１ａ〜ｎは、地形、国境、論理もしくはグラフィックトポロジ、またはいくつかの他の手法の関数としてグループ化され得る。例えば、地域２０１ａ〜ｎは、南東部、中西部、北東部、または他の地域など、米国の地域によってグループ化され得る。他の手法もまた、地域２０１ａ〜ｎを定義するために使用され得る。
【００４０】
各地域２０１ａ〜ｎは、１つ以上の可用性区域２０４ａ〜ｎまたは２０５ａ〜ｎを含む。可用性区域２０４ａ〜ｎまたは２０５ａ〜ｎの各々は、１つ以上のデータセンタ２０７ａ〜ｎ、２０８ａ〜ｎ、２０９ａ〜ｎ、及び２１０ａ〜ｎを含む論理グループ化である。可用性区域２０４ａ〜ｎまたは２０５ａ〜ｎは、他の可用性区域２０４ａ〜ｎまたは２０５ａ〜ｎにおける故障から隔離され、かつ同じ地域２０１ａ〜ｎ内の他の可用性区域２０４ａ〜ｎまたは２０５ａ〜ｎへの接続性と関連付けられたレイテンシコストを最適化するように定義される。例えば、別個の可用性区域２０４ａ〜ｎまたは２０５ａ〜ｎは、別個のネットワーク、電力回路、発電機、または他の構成要素を含み得る。加えて、いくつかの実施形態では、単一のデータセンタ２０７ａ〜ｎ、２０８ａ〜ｎ、２０９ａ〜ｎ、または２１０ａ〜ｎは、複数の可用性区域２０４ａ〜ｎまたは２０５ａ〜ｎを含み得る。地域２０１ａ〜ｎは、ネットワーク１０７（図１）を通じて互いにデータ通信している。
【００４１】
図２Ｂは、例示的なデータセンタアーキテクチャ２００のデータセンタレベルの図を示す。データセンタレベルの図は、データセンタ２０７ａ〜ｎ、２０８ａ〜ｎ、２０９ａ〜ｎ、または２１０ａ〜ｎ内に実装されたアーキテクチャを表すことができる。データセンタ２０７ａは、少なくとも１つのラック集合体２１１ａ〜ｎを含み、各ラック集合体２１１ａ〜ｎは、対応する少なくとも１つのラック２１４ａ〜ｎまたは２１５ａ〜ｎを含む。データセンタ２０７ａはまた、マシンインスタンス１２２（図１）の実装を容易にするラック２１７ａ〜ｎを含む少なくとも１つのサービスラック集合体２１６を含み得る。
【００４２】
各ラック集合体２１１ａ〜ｎまたは２１６はまた、対応するグループ化またはラック２１４ａ〜ｎ、２１５ａ〜ｎ、もしくは２１７ａ〜ｎが接続される少なくとも１つの電力系統２１８ａ〜ｎまたは２１９を含む。電力系統２１８ａ〜ｎまたは２１９は、配線、スイッチ、バッテリ、無停電電源、発電機、またはラック２１４ａ〜ｎ、２１５ａ〜ｎ、もしくは２１７ａ〜ｎの電力供給を容易にするように実装された他の構成要素を含み得る。
【００４３】
各ラック集合体２１１ａ〜ｎまたは２１６は、ローカルネットワーク２２１ａ〜ｎまたは２２２に結合される。ローカルネットワーク２２１ａ〜ｎまたは２２２は、対応するラック集合体２１１ａ〜ｎまたは２１６の構成要素間のデータ通信を容易にするように実装される。ローカルネットワーク２２１ａ〜ｎまたは２２２はまた、対応するラック集合体２１１ａ〜ｎまたは２１６とネットワーク１０７との間のデータ通信を容易にすることができる。
【００４４】
図２Ｃは、様々な実施形態によるデータセンタアーキテクチャ２００のラック集合体レベルの実装形態を示す。ラック集合体レベルの実装形態は、ラック集合体２１１ａ〜ｎまたは２１６を表すことができる。例えば、ラック集合体２１１ａは、ラック２１４ａ〜ｇ及びラック２１４ｈ〜ｎのサブセットに細分された複数のラック２１４ａ〜ｎを含む。各ラック２１４ａ〜ｎは、複数のサーバ２２１ａ〜ｎ、２２２ａ〜ｎ、２２３ａ〜ｎ、または２２４ａ〜ｎ、及び潜在的に他の機能性を備える。各サーバ２２１ａ〜ｎ、２２２ａ〜ｎ、２２３ａ〜ｎ、または２２４ａ〜ｎは、共有または別個のハードウェア構成を含み得る。ラック２１４ａ〜ｎの各々はまた、対応するサーバ２２１ａ〜ｎ、２２２ａ〜ｎ、２２３ａ〜ｎ、または２２４ａ〜ｎが接続される少なくとも１つのスイッチ２２７ａ〜ｎを備える。ラック集合体２２１ａはまた、集約ルータ２３１ａ〜ｎの階層を含む。図２Ｃは、集約ルータ２３１ａ〜ｎの二段階層を示すが、集約ルータ２３１ａ〜ｎの１つ以上のレベルが実装され得ることが理解される。最高レベルの集約ルータ２３１ａ〜ｎは、外部ネットワーク１０７（図１）と通信している。
【００４５】
集約ルータ２３１ａ〜ｎは、サーバ２２１ａ〜ｎ、２２２ａ〜ｎ、２２３ａ〜ｎ、または２２４ａ〜ｎへのネットワーク通信のルーティングを容易にする。この目的のために、スイッチ２２７ａ〜ｎの各々は、集約ルータ２３１ａ〜ｎとデータ通信している。
【００４６】
図２Ｄは、データセンタアーキテクチャ２００で実装されるようなサーバ２２１ａを示す。図２Ｄは、サーバ２２１ａで描かれるが、図２Ｄは、任意のサーバ２２１ａ〜ｎ、２２２ａ〜ｎ、２２３ａ〜ｎ、または２２４ａ〜ｎを表し得ることが理解される。
【００４７】
１つ以上のマシンインスタンス１２２がサーバ２２１ａで実行される。マシンインスタンス１２２は、サービス、アプリケーション、または他の機能性の実行を容易にするオペレーティングシステムの仮想化インスタンスを含む。各マシンインスタンス１２２は、仮想化層２３７と通信する。仮想化層２２７は、実行されたマシンインスタンス１２２の各々によってハードウェア層２４１へのアクセスを制御する。仮想化層２３７は、特権ドメイン２４４をさらに備え得る。特権ドメイン２４４は、マシンインスタンス１２２、ハードウェア層２４１、または他の構成要素の間の対話を容易にするために、他の実行されたマシンインスタンス１２２に関して別個またはより高レベルのユーザ特権を有するマシンインスタンス１２２を含み得る。特権ドメイン２４４はまた、システム管理者等の承認されたユーザのサブセットへの特権ドメイン２４４のアクセス制限、限界操作を含み得る。特権ドメイン２４４は、マシンインスタンス１２２の作成及び管理を容易にすることができる。
【００４８】
ハードウェア層２４１は、マシンインスタンス２３４の動作及びそれらの関連の実行された機能性を容易にするように実装された様々なハードウェア構成要素を備える。ハードウェア層２４１は、ネットワークインターフェースカード、ネットワークルーティング構成要素、プロセッサ、メモリ、ストレージデバイス、または他の構成要素を備える。
【００４９】
次に図３Ａを参照すると、クライアント１０４（図１）への通信のために報告モジュール１４４（図１）によって符号化された例示的な報告１４７（図１）が示される。いくつかの実施形態では、図３Ａに示されるユーザインターフェースは、ブラウザクライアントアプリケーション１５１（図１）によるレンダリングのために符号化されたネットワークページを含む。別の方法では、ユーザインターフェースは、専用のクライアントアプリケーション１５１によってレンダリングするために符号化されたデータを含み得る。
【００５０】
項目３０１は、データセンタの地域及び個々のアプリケーション１２４によって分類されたマシンインスタンス１２２（図１）で実装されるような特定のベンダのアプリケーション１２４の使用を詳述する報告１４７を示す。項目３０４は、報告１４７を具体化するネットワークページに向けられたユニフォームリソースロケータ（ＵＲＬ）である。項目３０７は、報告１４７が生成されたことに関してベンダの名前に対応する文識別子である。項目３１１は、報告１４７で具体化されたデータを示す文識別子である。
【００５１】
項目３１４は、セルが、その行の他のセルが一致するデータセンタの地域を定義する表の列である。項目３１７は、セルがベンダによって販売された３つの異なるアプリケーション１２４を定義する表の列である。項目３２１は、対応するデータセンタの地域内の対応するアプリケーション１２４の使用率である。項目３２４は、対応するデータセンタの地域内の競合するアプリケーション１２４の使用率である。
【００５２】
次に図３Ｂを参照すると、クライアント１０４（図１）への通信のために報告モジュール１４４（図１）によって符号化された例示的な報告１４７（図１）が示される。いくつかの実施形態では、図３Ｂに示されるユーザインターフェースは、ブラウザクライアントアプリケーション１５１（図１）によってレンダリングするために符号化されたネットワークページを含む。別の方法では、ユーザインターフェースは、専用のクライアントアプリケーション１５１によってレンダリングするために符号化されたデータを含み得る。
【００５３】
項目３３１は、データセンタの地域及びアプリケーション１２４のベンダによって分類された米国東部のデータセンタの地域のマシンインスタンス１２２（図１）で実装されるようなアプリケーション１２４の使用を詳述する報告１４７を示す。項目３３４は、報告１４７を具体化するネットワークページに向けられたユニフォームリソースロケータ（ＵＲＬ）である。項目３３７は、報告１４７が生成されたことに関してデータセンタの地域の名前に対応する文識別子である。項目３４１は、報告１４７で具体化されたデータを示す文識別子である。
【００５４】
項目３４４は、セルが、アプリケーション１２４の使用データが一致するベンダを定義する表の列である。項目３４７は、セルが、対応するベンダに対する米国東部のデータセンタの地域でのアプリケーション１２４の使用を具体化する表の列である。項目３５１は、項目３４４及び３４７に記載されるデータを具体化するように生成された円グラフである。
【００５５】
図４に進むと、様々な実施形態による監視サービス１３１（図１）の一部の動作の一実施例を提供するフローチャートが示される。図４のフローチャートは単に、本明細書に記載されるような監視サービス１３１の一部の動作を実装するために利用され得る多くの異なる種類の機能的構成の一実施例を提供することが理解される。別の方法として、図４のフローチャートは、１つ以上の実施形態によるコンピューティング環境１０２（図１）で実装された方法のステップの一実施例を示すと見なされ得る。
【００５６】
ボックス４０１から開始すると、監視サービス１３１は、それぞれのマシンインスタンス１２２（図１）内で実行されているアプリケーション１２４（図１）に対応するプロセス名１２７（図１）を取得する。プロセス名１２７を取得することは、オペレーティングシステムで実行されたプロセス及びアプリケーション１２４を監視するタスクマネージャアプリケーション１２４またはサービスと通信することを含み得る。プロセス名１２７を取得することはまた、それぞれのマシンインスタンス１２２のオペレーティングシステムによって公開されたアプリケーションプログラムインターフェース呼び出しを実行することを含み得る。プロセス名１２７を取得することはまた、別の手法によって取得され得る。
【００５７】
プロセス名１２７を取得した後、ボックス４０４では、監視サービス１３１は次に、プロセス名１２７の各々に対応するアプリケーション１２４を識別する。いくつかの実施形態では、これは、プロセス名１２７及びアプリケーション１２４を関連付けるアプリケーションルックアップテーブル１３４に問い合わせることを含む。アプリケーションルックアップテーブル１３４は、マシンインスタンス１２２にローカルでアクセス可能であるか、またはコンピューティング環境１０１もしくは１０２に記憶され、かつＡＰＩ、ウェブサービス、または他の機能性を通じてアクセス可能であり得る。監視サービス１３１は、プロセス名１２７の他の手法の関数としてアプリケーション１２４を識別することができる。
【００５８】
次に、ボックス４０７では、監視サービス１３１は、インスタンスメタデータサービス１２１（図１）に問い合わせて、監視サービス１３１が実行されるマシンインスタンス１２２に対応するメタデータ１３５を取得する。メタデータ１３５は、ウェブサービス呼び出し、ネットワークページ要求、ＡＰＩ呼び出しに応答して、または別の手法によって取得され得る。メタデータ１３５を取得した後、ボックス４１１では、監視サービス１３１は次に、アプリケーション１２４の識別及びメタデータ１３５をインベントリアプリケーション１１７（図１）のデータ集約モジュール１３７（図１）に通信する。これは、それぞれのマシンインスタンス１２２と関連付けられたユーザ選好の関数、または通信される識別もしくはメタデータ１３５のサブセットを定義する顧客アカウントとして実施され得る。アプリケーション１２４の識別及びメタデータ１３５を通信した後、この過程は終了する。
【００５９】
図５に進むと、様々な実施形態によるインベントリアプリケーション１１７（図１）の一部の動作の一実施例を提供するフローチャートが示される。図５のフローチャートは単に、本明細書に記載されるようなインベントリアプリケーション１１７の一部の動作を実装するために利用され得る多くの異なる種類の機能的構成の一実施例を提供することが理解される。別の方法として、図５のフローチャートは、１つ以上の実施形態によるコンピューティング環境１０１（図１）で実装された方法のステップの一実施例を示すと見なされ得る。
【００６０】
ボックス５０１から開始すると、データ集約モジュール１３７（図１）は、コンピューティング環境１０２を動作するマシンインスタンス１２２内で実行された監視サービス１３１（図１）からアプリケーション１２４の識別及びマシンインスタンス１２２（図１）のメタデータ１３５を取得する。アプリケーション１２４の識別及びメタデータ１３５を取得することは、ウェブサービス、ＡＰＩ、もしくは監視サービス１３１に公開された他の機能性によって容易にされるか、または監視サービス１３１及びデータ集約モジュール１３７の両方にアクセス可能なデータストア１１１（図１）から取得され得る。アプリケーション１２４の識別及びメタデータ１３５はまた、別の手法によって取得され得る。
【００６１】
次に、ボックス５０４では、データ集約モジュール１３７は、アプリケーションプロファイル１４１（図１）のようなデータストア１１１内にアプリケーション１２４の識別及びメタデータ１３５を記憶する。これは、マシンインスタンス１２２でのアプリケーション１２４の使用を具体化するリレーショナルデータベースまたは他のデータ構造への入力としてアプリケーションプロファイル１４１を記憶することを含み得る。アプリケーションプロファイル１４１はまた、別の手法によって記憶され得る。
【００６２】
ボックス５０７では、インベントリアプリケーション１１７の報告モジュール１４４（図１）は、クライアント１０４（図１）からのクエリを取得して、ボックス５１１において記憶されたアプリケーションプロファイル１４１の関数として報告１４７（図１）を生成する。報告１４７は、報告１４７を要求するクライアント１０４、アプリケーション１２４のベンダ、マシンインスタンス１２２の顧客、または他の当事者に関して定義されたテンプレートまたは他のルールセットの関数として生成され得る。報告１４７は、例えば、アプリケーション１２４の使用もしくは採用データ、セキュリティポリシーもしくはベストプラクティスポリシーの順守、または他のデータを含み得る。
【００６３】
報告１４７が生成された後、ボックス５１４では、報告１４７は次に、報告モジュール１４４によってネットワーク１０７（図１）を介してクライアント１０４に通信される。報告１４７は、クライアント１０４にアクセス可能なデータストア１１１に記憶された、クライアントアプリケーション１５１（図１）によって、または別の手法によってレンダリングするために符号化された電子メールの添付ファイル、ネットワークページとして通信され得る。この過程は、報告１４７を通信した後に終了する。
【００６４】
図６を参照すると、本開示の一実施形態によるコンピューティング環境１０１の概略ブロック図が示される。コンピューティング環境１０１は、１つ以上のコンピューティングデバイス６０１を含む。各コンピューティングデバイス６０１は、例えば、プロセッサ６０２及びメモリ６０４を有する少なくとも１つのプロセッサ回路を含み、このプロセッサ及びメモリはともに、ローカルインターフェース６０７に結合される。この目的のために、各コンピューティングデバイス６０１は、例えば、少なくとも１つのサーバコンピュータまたは同様のデバイスを含み得る。ローカルインターフェース６０７は、例えば、理解され得るように、付随するアドレス／制御バスを有するデータバス、または他のバス構造を含み得る。
【００６５】
プロセッサ６０２によって実行可能なデータ及びいくつかの構成要素の両方がメモリ６０４に記憶される。具体的には、インベントリアプリケーション１１７、インスタンスメタデータサービス１２１、及び潜在的に他のアプリケーションがメモリ６０４に記憶され、プロセッサ６０２によって実行可能である。同様に、アプリケーションルックアップテーブル１３４、アプリケーションプロファイル１４１、及び他のデータを有するデータストア１１１がメモリ６０４に記憶され得る。加えて、オペレーティングシステムは、メモリ６０４に記憶され、プロセッサ６０２によって実行可能であり得る。
【００６６】
理解され得るように、メモリ６０４に記憶され、プロセッサ６０２によって実行可能な他のアプリケーションがあり得ることが理解される。本明細書に論じられる任意の構成要素がソフトウェアの形態で実装される場合、例えば、Ｃ、Ｃ＋＋、Ｃ＃、オブジェクティブＣ、Ｊａｖａ（登録商標）、ＪａｖａＳｃｒｉｐｔ（登録商標）、Ｐｅｒｌ、ＰＨＰ、Ｖｉｓｕａｌ  Ｂａｓｉｃ（登録商標）、Ｐｙｔｈｏｎ（登録商標）、Ｒｕｂｙ、Ｆｌａｓｈ（登録商標）、または他のプログラミング言語など、いくつかのプログラミング言語のうちのいずれか１つが利用され得る。
【００６７】
いくつかのソフトウェア構成要素がメモリ６０４に記憶され、プロセッサ６０２によって実行可能である。これに関して、用語「実行可能な」は、プロセッサ６０２によって最終的に動作され得る形態であるプログラムファイルを意味する。実行可能なプログラムの例は、例えば、メモリ６０４のランダムアクセス部分にロードされ、かつプロセッサ６０２によって動作され得る形態でマシンコードに変換され得るコンパイルしたプログラム、メモリ６０４のランダムアクセス部分にロードされ、かつプロセッサ６０２によって実行されることができるオブジェクトコード等の適切なフォーマットで表現され得るソースコード、またはプロセッサ６０２によって実行されるメモリ６０４のランダムアクセス部分で命令を生成するように別の実行可能なプログラムによって解釈され得るソースコードなどであり得る。実行可能なプログラムは、例えば、ランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、ハードドライブ、ソリッドステートドライブ、ＵＳＢフラッシュドライブ、メモリカード、コンパクトディスク（ＣＤ）もしくはデジタル多用途ディスク（ＤＶＤ）等の光学ディスク、フロッピー（登録商標）ディスク、磁気テープ、または他のメモリ構成要素を含む、メモリ６０４の任意の部分または構成要素に記憶され得る。
【００６８】
メモリ６０４は、揮発性及び不揮発性メモリの両方ならびにデータストレージ構成要素を含むように本明細書に定義される。揮発性構成要素は、電源喪失時にデータ値を保持しないものである。不揮発性構成要素は、電源喪失時にデータを保持するものである。したがって、メモリ６０４は、ランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、ハードディスクドライブ、ソリッドステートドライブ、ＵＳＢフラッシュドライブ、メモリカードリーダーを介してアクセスされたメモリカード、関連したフロッピーディスクドライブを介してアクセスされたフロッピーディスク、光学ディスクドライブを介してアクセスされた光学ディスク、適切なテープドライブを介してアクセスされた磁気テープ、及び／もしくは他のメモリ構成要素、またはこれらのメモリ構成要素のうちの任意の２つ以上の組み合わせを含み得る。加えて、ＲＡＭは、例えば、スタティックランダムアクセスメモリ（ＳＲＡＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、または磁気ランダムアクセスメモリ（ＭＲＡＭ）、及び他のこのようなデバイスを含み得る。ＲＯＭは、例えば、プログラマブル読み取り専用メモリ（ＰＲＯＭ）、消去可能なプログラマブル読み取り専用メモリ（ＥＰＲＯＭ）、電気的消去可能なプログラマブル読み取り専用メモリ（ＥＥＰＲＯＭ）、または他の同様のメモリデバイスを含み得る。
【００６９】
同様に、プロセッサ６０２は、複数のプロセッサ６０２、及び／または複数のプロセッサコアを表すことができ、メモリ６０４は、並列処理回路でそれぞれ動作する複数のメモリ６０４を表すことができる。このような場合、ローカルインターフェース６０７は、複数のプロセッサ６０２のうちのいずれか２つの間、いずれかのプロセッサ６０２とメモリ６０４のうちのいずれかとの間、またはメモリ６０４のうちのいずれか２つの間などでの通信を容易にする適切なネットワークであり得る。ローカルインターフェース６０７は、例えば、負荷バランシングを実施することを含む、この通信を調整するように設計された追加のシステムを含み得る。プロセッサ６０２は、電気的またはいくつかの他の利用可能な構築物であり得る。
【００７０】
インベントリアプリケーション１１７及び本明細書に記載される他の様々なシステムは、上述されるような汎用ハードウェアによって実行されたソフトウェアまたはコードで具体化され得るが、別の方法として、同じものもまた、専用のハードウェア、またはソフトウェア／汎用ハードウェアと専用のハードウェアとの組み合わせで具体化され得る。専用のハードウェアで具体化された場合、各々は、いくつかの技術のうちのいずれか１つまたはそれらの組み合わせを利用する回路または状態マシンとして実装され得る。これらの技術としては、これらに限定されないが、１つ以上のデータ信号の適用時に様々な論理関数を実装するための論理ゲートを有する個別論理回路、適切な論理ゲートを有する特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、または他の構成要素などが挙げられ得る。このような技術は一般に、当業者によって周知であり、それ故に本明細書に詳細に記載されない。
【００７１】
図４及び５のフローチャートは、監視サービス１３１及びインベントリアプリケーション１１７それぞれの一部の実装形態の機能性及び動作を示す。ソフトウェアで具体化された場合、各ブロックは、特定の論理機能（複数可）を実装するプログラム命令を含むモジュール、セグメント、またはコードの一部を表すことができる。プログラム命令は、コンピュータシステムまたは他のシステム内のプロセッサ６０２等の好適な実行システムによって認識可能な数値命令を含むプログラミング言語またはマシンコードで書かれた人間が読み取り可能な命令文を含むソースコードの形態で具体化され得る。マシンコードは、ソースコードなどから変換され得る。ハードウェアで具体化された場合、各ブロックは、特定の論理機能（複数可）を実装する回路またはいくつかの相互接続した回路を表すことができる。
【００７２】
図４及び５のフローチャートは、特定の実行の順序を示すが、実行の順序は、示される順序とは異なり得ることが理解される。例えば、２つ以上のブロックの実行の順序は、示される順序に対してスクランブルがかけられてもよい。同様に、図４及び５に連続して示される２つ以上のブロックは、同時または部分的に同時に実行されてもよい。さらに、いくつかの実施形態では、図４及び５に示されるブロックのうちの１つ以上は、飛ばされるか、または省略されてもよい。加えて、任意の数のカウンタ、状態変数、警告セマフォ、またはメッセージが、有用性の向上、会計、性能評価、またはトラブルシューティング支援の提供などの目的のために、本明細書に記載される論理フローに追加されてもよい。すべてのこのような変形は、本開示の範囲内であることが理解される。
【００７３】
同様に、ソフトウェアまたはコードを備えるインベントリアプリケーション１１７を含む、本明細書に記載される任意の論理またはアプリケーションは、例えば、コンピュータシステムまたは他のシステム内のプロセッサ６０２など、命令実行システムによって使用するために、またはそれに関連して任意の非一時的コンピュータ可読媒体で具体化され得る。この意味では、論理は、例えば、コンピュータ可読媒体からフェッチされ、かつ命令実行システムによって実行され得る命令及び宣言を含む命令文を含み得る。本開示の文脈において、「コンピュータ可読媒体」は、命令実行システムによって使用するために、またはそれに関連して本明細書に記載される論理またはアプリケーションを含み、記憶し、または維持し得る任意の媒体であり得る。
【００７４】
本開示の実施形態は、以下の付記を考慮して記載され得る。
１．少なくとも１つのコンピューティングデバイス内で実行可能なプログラムを具体化する非一時的コンピュータ可読媒体であって、
複数のマシンインスタンスを実行するコードと、
マシンインスタンス内で実行された第１のサービスによって、複数のプロセス識別子を取得するコードであって、プロセス識別子の各々が、マシンインスタンスのうちのそれぞれ１つ内で実行された複数のアプリケーションのうちの１つと関連付けられる、コードと、
第１のサービスによって、ウェブサービス呼び出しに問い合わせて、マシンインスタンスのうちのそれぞれ１つと関連付けられたメタデータを取得するコードと、
第１のサービスによって、プロセス識別子及びマシンインスタンスのうちのそれぞれ１つと関連付けられたユーザ選好の関数としてアプリケーションの複数の識別を生成するコードであって、識別が、アプリケーションのうちのそれぞれ１つに対応するバージョン番号を含む、コードと、
マシンインスタンス内で実行されない第２のサービスによってマシンインスタンスの各々から識別及びメタデータを取得するコードと、
識別及びメタデータの関数として分析報告を生成するコードと、を備える、非一時的コンピュータ可読媒体。
２．メタデータは、マシンインスタンス識別子またはアカウント識別子のうちの少なくとも１つを含む、付記１に記載の非一時的コンピュータ可読媒体。
３．分析報告は、データセンタの地域または顧客アカウントに関してアプリケーション使用を具体化する、付記１に記載の非一時的コンピュータ可読媒体。
４．少なくとも１つのコンピューティングデバイスと、
少なくとも１つのコンピューティングデバイス内で実行された少なくとも１つのマシンインスタンスと、
マシンインスタンス内で実行された監視サービスであって、
マシンインスタンス内で実行されている少なくとも１つのアプリケーションを識別するデータを生成する論理を備える、監視サービスと、
少なくとも１つのコンピューティングデバイス内で実行可能なインベントリサービスであって、
監視サービスからデータ取得する論理を備える、インベントリサービスと、を備える、システム。
５．監視サービスは、
マシンインスタンス内で実行された少なくとも１つのプロセスの名前を決定する論理と、
名前の関数として少なくとも１つのアプリケーションを識別する論理と、をさらに備え、
データは、識別の関数として生成される、付記４に記載のシステム。
６．データは、マシンインスタンスと関連付けられたユーザ選好の関数として生成される、付記４に記載のシステム。
７．データは、少なくとも１つのアプリケーションと関連付けられたプロセス識別を含み、インベントリサービスは、データ内に含まれたプロセス識別の関数として少なくとも１つのアプリケーションを識別する論理をさらに備える、付記４に記載のシステム。
８．インベントリサービスは、データをセキュリティポリシーまたはベストプラクティスポリシーのうちの少なくとも１つと比較する論理をさらに備える、付記４に記載のシステム。
９．監視サービスは、
少なくとも１つのアプリケーションのバージョン番号を決定する論理をさらに備え、
データは、バージョン番号をさらに含む、付記４に記載のシステム。
１０．インベントリサービスは、
アプリケーションの更新がバージョン番号の関数として利用可能であるかどうかを決定する論理と、
更新を示すマシンインスタンスと関連付けられた顧客への通知を通信する論理と、をさらに備える、付記８に記載のシステム。
１１．インベントリサービスは、
データをデータ集約に追加する論理と、  
データ集約の関数として分析報告を生成する論理と、をさらに備える、付記４に記載のシステム。
１２．分析報告は、分散型データセンタの地域、アカウント識別子、または少なくとも１つのマシンインスタンスの識別子に関してアプリケーション使用分布を具体化する、付記１１に記載のシステム。
１３．システムは、ウェブサービス呼び出しを有効にするアプリケーションプログラムインターフェースを公開して、少なくとも１つのマシンインスタンスと関連付けられたメタデータを返す論理を備える、少なくとも１つのコンピューティングデバイス内で実行可能なインスタンスメタデータサービスをさらに備える、付記４に記載のシステム。
１４．監視サービスは、
インスタンスメタデータサービスからメタデータを取得する論理をさらに備え、
データは、メタデータをさらに含む、付記４に記載のシステム。
１５．インベントリサービスは、
インスタンスメタデータサービスからメタデータを取得する論理をさらに備え、
データは、メタデータをさらに含む、付記１３に記載のシステム。
１６．第１の少なくとも１つのコンピューティングデバイス内で、第１のサービスによって、第１のコンピューティングデバイス内で実行された少なくとも１つのアプリケーションと関連付けられた少なくとも１つのプロセス識別子を取得するステップと、
第１のコンピューティングデバイス内で、第１のサービスによって、少なくとも１つのプロセス識別子の関数として少なくとも１つのアプリケーションの識別を生成するステップと、
第１のコンピューティングデバイスによって、識別を第１のサービスから、それによって第２の少なくとも１つのコンピューティングデバイス内で実行された第２のサービスに通信するステップと、を含む、方法。
１７．第２のコンピューティングデバイス内で、識別を識別集約に追加することと、
コンピューティングデバイス内で、識別集約の関数として分析報告を生成することと、をさらに含む、付記１６に記載の方法。
１８．本方法は、第２のコンピューティングデバイス内で、識別をセキュリティポリシーまたはベストプラクティスポリシーのうちの少なくとも１つと比較することをさらに含む、付記１６に記載の方法。
１９．本方法は、
第２のコンピューティングデバイス内で、ウェブサービス呼び出しを有効にするマシンインスタンスメタデータサービスを実行して、第１のコンピューティングデバイスと関連付けられたメタデータを取得することと、
第１のコンピューティングデバイス内で、第１のサービスによって、ウェブサービス呼び出しを問い合わせて、メタデータを取得することと、をさらに含み、
識別は、メタデータをさらに含む、付記１６に記載の方法。
２０．メタデータは、第１のコンピューティングデバイスの一意識別子または第１のコンピューティングデバイスと関連付けられたアカウント識別子のうちの少なくとも１つを含む、付記１８に記載の方法。
２１．識別は、識別内に含まれ得る少なくとも１つのアプリケーションのサブセットを定義する第１のコンピューティングデバイスと関連付けられたユーザ選好の関数として生成される、付記１８に記載の方法。
【００７５】
コンピュータ可読媒体は、例えば、磁気、光学、または半導体媒体等の多くの物理的な媒体のうちのいずれか１つを含み得る。好適なコンピュータ可読媒体のより特定の例としては、これらに限定されないが、磁気テープ、磁気フロッピーディスケット、磁気ハードドライブ、メモリカード、ソリッドステートドライブ、ＵＳＢフラッシュドライブ、または光学ディスクが挙げられるであろう。同様に、コンピュータ可読媒体は、例えば、スタティックランダムアクセスメモリ（ＳＲＡＭ）及びダイナミックランダムアクセスメモリ（ＤＲＡＭ）、または磁気ランダムアクセスメモリ（ＭＲＡＭ）を含むランダムアクセスメモリ（ＲＡＭ）であってもよい。加えて、コンピュータ可読媒体は、読み取り専用メモリ（ＲＯＭ）、プログラマブル読み取り専用メモリ（ＰＲＯＭ）、消去可能なプログラマブル読み取り専用メモリ（ＥＰＲＯＭ）、電気的消去可能なプログラマブル読み取り専用メモリ（ＥＥＰＲＯＭ）、または他の種類のメモリデバイスであってもよい。
【００７６】
本開示の上述の実施形態は単に、本開示の原理の明確な理解のために記載される実装形態の可能な実施例であることが強調されるべきである。本開示の趣旨及び原理から実質的に逸脱することなく、多くの変形及び修正が上述の実施形態（複数可）に行われ得る。すべてのこのような修正及び変形は、本開示の範囲内で本明細書に含まれ、かつ以下の特許請求の範囲によって保護されることが意図される。
【図１】
0006291565.tif 000002
【図２Ａ】
0006291565.tif 000003
【図２Ｂ】
0006291565.tif 000004
【図２Ｃ】
0006291565.tif 000005
【図２Ｄ】
0006291565.tif 000006
【図３Ａ】
0006291565.tif 000007
【図３Ｂ】
0006291565.tif 000008
【図４】
0006291565.tif 000009
【図５】
0006291565.tif 000010
【図６】
0006291565.tif 000011