(58)【調査した分野】(Int.Cl.,DB名)
特定された前記少なくとも1つのリソースセットを、前記追加のリソースを含むように、前記コンピューティングシステムによって更新することをさらに備える、請求項9に記載の方法。
【発明を実施するための形態】
【0021】
詳細な説明
以下の説明では、本発明の実施形態が十分に理解されるようにするために、説明の目的で具体的詳細を記載する。しかし、これらの具体的詳細がなくてもさまざまな実施形態を実施できることは明らかであろう。図面および説明は、限定的であるよう意図されるものではない。
【0022】
本開示は概して、構成可能なコンピューティングリソースをリソースポリシーに基づいて管理して割当てることに関する。この開示の目的のために、構成可能なコンピューティングリソースの管理および割当ては、少なくとも一部は、クラウドコンピューティング環境などの分散コンピューティング環境のサービスプロバイダによって提供される1つ以上のサービスにサブスクライブする1つ以上のサブスクリプションオーダーに応答して実行されると仮定する。いくつかの実施形態は、SaaS、PaaSおよびIaaSを含むサービスモデルの下で提供される構成可能なコンピューティングリソースの管理および割当てに関して本明細書に開示されているが、これは限定的であるよう意図されるものではない。SaaS、PaaSおよびIaaSに加えて、本明細書に開示される教示は他のサービスモデルにも適用可能である。たとえば、教示は、構成可能なコンピューティングリソース(たとえばネットワーク、ネットワーク帯域幅、サーバ、POD、処理、メモリ、ストレージ、アプリケーション、仮想マシン、サービス等)の共有プールに対する簡便なオンデマンドのネットワークアクセスを可能にするためのサービス配信の任意のモデルに適用可能である。
【0023】
特定の実施形態では、クラウドコンピューティング環境などの分散コンピューティング環境は、セルフサービスの、サブスクリプションベースの、弾性的にスケーラブルな、信頼性のある、高可用性の、安全な態様でユーザに与えられる一連のアプリケーション、ミドルウェアおよびデータベースサービス提供品を含み得る。クラウドコンピューティング環境は、クラウドコンピューティング環境においてサービスおよびリソースのユーザのサブスクリプションをプロビジョニング、管理および追跡する機能、クラウドコンピューティング環境においてサービスを利用するユーザに予測可能な作業費用を提供する機能、クラウドコンピューティング環境においてユーザのデータのロバストなアイデンティティドメインの分離および保護を提供する機能、クラウドコンピューティング環境の設計の透過的なアーキテクチャおよび制御をユーザに提供する機能、データ保護の保証とデータプライバシ基準および規制の順守とをユーザに提供する機能、クラウドコンピューティング環境においてサービスを構築およびデプロイするための統合された開発経験をユーザに提供する機能、ならびにクラウドコンピューティング環境においてビジネスソフトウェア、ミドルウェア、データベースおよびインフラストラクチャサービスの間のシームレスな統合をユーザに提供する機能を含むがこれらに限定されるものではない多くの機能を提供することができる。
【0024】
特定の実施形態では、クラウドインフラストラクチャシステムによって提供されるサービスは、オンラインデータストアおよびバックアップソリューション、ウェブベースの電子メールサービス、ホスト型オフィススイートおよび文書コラボレーションサービス、データベース処理、管理された技術サポートサービスなどの、クラウドコンピューティング環境のユーザがオンデマンドで利用できるようにされる多数のサービスを含み得る。クラウドコンピューティング環境によって提供されるサービスは、そのユーザのニーズを満たすように動的にスケーリング可能である。クラウドコンピューティング環境によって提供されるサービスの具体的なインスタンス化は、本明細書ではサービスインスタンスと称される。一般に、クラウドサービスプロバイダのシステムからインターネットなどの通信ネットワークを介してユーザが利用できるようにされるサービスはいずれも、クラウドサービスと称される。典型的に、パブリッククラウド環境では、クラウドサービスプロバイダのシステムを構成するサーバおよびシステムは、ユーザ自身のオンプレミスサーバおよびシステムとは異なる。たとえば、クラウドサービスプロバイダのシステムは、アプリケーションをホストし得、ユーザは、インターネットなどの通信ネットワークを介してオンデマンドで当該アプリケーションをオーダーし、使用し得る。
【0025】
コンピュータネットワーククラウドインフラストラクチャにおけるサービスは、クラウドベンダによってユーザに提供されるかまたはそうでなければ当該技術分野において公知のストレージ、ホスト型データベース、ホスト型ウェブサーバ、ソフトウェアアプリケーション、または他のサービスへの保護されたコンピュータネットワークアクセスを含む。たとえば、サービスは、インターネットを介したクラウド上のリモートストレージへの、パスワードによって保護されたアクセスを含んでいてもよい。別の例として、サービスは、ネットワーク化された開発者による私的使用のためのウェブサービスベースのホスト型リレーショナルデータベースおよびスクリプト言語ミドルウェアエンジンを含んでいてもよい。別の例として、サービスは、クラウドベンダのウェブサイト上でホストされる電子メールソフトウェアアプリケーションへのアクセスを含んでいてもよい。
【0026】
図1は、本発明のいくつかの実施形態に係るクラウドコンピューティング環境10の論理図である。クラウドコンピューティング環境10は、クラウドまたはネットワーク化された環境を介してさまざまなサービスを提供し得る。これらのサービスは、SaaS、PaaS、IaaS、またはその他の、ハイブリッドサービスを含むサービスのカテゴリの下で提供される1つ以上のサービスを含み得る。ユーザは、サブスクリプションオーダーを介して、クラウドコンピューティング環境10によって提供される1つ以上のサービスをオーダーし得る。次いで、クラウドコンピューティング環境10は、ユーザのサブスクリプションオーダーにおけるサービスを提供するために処理を実行する。
【0027】
クラウドコンピューティング環境10は、さまざまなデプロイメントモデルを介してクラウドサービスを提供し得る。たとえば、サービスはパブリッククラウドモデルの下で提供されてもよく、パブリッククラウドモデルでは、クラウドコンピューティング環境10が(たとえばオラクルが所有する)クラウドサービスを販売する組織によって所有され、サービスは一般的な公営企業またはさまざまな産業企業が利用できるようにされる。別の例として、サービスはプライベートクラウドモデルの下で提供されてもよく、プライベートクラウドモデルでは、クラウドコンピューティング環境10が単一の組織のために単独で運営され、当該組織内の1つ以上のエンティティにサービスを提供することができる。また、クラウドサービスはコミュニティクラウドモデルの下で提供されてもよく、コミュニティクラウドモデルでは、クラウドインフラストラクチャシステム100およびクラウドコンピューティング環境10によって提供されるサービスが関連のコミュニティの中のいくつかの組織によって共有される。また、クラウドサービスは、2つ以上の異なるモデルの組み合わせであるハイブリッドクラウドモデルの下で提供されてもよい。
【0028】
図1に示されるように、クラウドコンピューティング環境10は、クラウドコンピューティング環境10によって提供されるサービスのプロビジョニングを可能にする、連携して動作する複数のコンポーネントを含み得る。
図1に示される実施形態では、クラウドコンピューティング環境10は、SaaSプラットフォーム15と、PaaSプラットフォーム20と、IaaSプラットフォーム25と、インフラストラクチャリソース30と、クラウド管理機能35とを含む。これらのコンポーネントは、ハードウェアまたはソフトウェアまたはそれらの組み合わせで実現されてもよい。
【0029】
SaaSプラットフォーム15は、SaaSカテゴリに分類されるクラウドサービスを提供するように構成される。たとえば、SaaSプラットフォーム15は、統合された開発およびデプロイメントプラットフォーム上で一連のオンデマンドのアプリケーションを構築および供給する機能を提供し得る。SaaSプラットフォーム15は、SaaSサービスを提供するための基本的なソフトウェアおよびインフラストラクチャを管理および制御し得る。SaaSプラットフォーム15によって提供されるサービスを利用することによって、ユーザは、クラウドコンピューティング環境10上で実行されるアプリケーションを利用することができる。ユーザは、ユーザが別個のライセンスおよびサポートを購入する必要なくアプリケーションサービスを取得することができる。
【0030】
さまざまな異なるSaaSサービスが提供され得る。例としては、大規模組織に販売実績管理、企業統合およびビジネスの柔軟性などのためのソリューションを提供するサービスが挙げられるが、これらに限定されるものではない。一実施形態では、SaaSサービスは、ユーザ関係管理(User Relationship Management:CRM)サービス40(たとえばオラクルクラウドによって提供されるフュージョンCRMサービス)、人材管理(Human Capital Management:HCM)/才能管理サービス45などを含んでいてもよい。CRMサービス40は、ユーザへの販売活動サイクルの報告および管理に向けられるサービスなどを含んでいてもよい。HCM/才能サービス45は、ユーザへのグローバルな労働力ライフサイクル管理および才能管理サービスの提供に向けられるサービスを含んでいてもよい。
【0031】
標準化された、共有の、弾性的にスケーラブルなアプリケーション開発およびデプロイメントプラットフォームにおけるPaaSプラットフォーム20によって、さまざまな異なるPaaSサービスが提供され得る。PaaSサービスの例としては、共有される共通のアーキテクチャ上で既存のアプリケーションを(オラクルなどの)組織が集約することを可能にするサービス、および、プラットフォームによって提供される共有のサービスを活用する新たなアプリケーションを構築する能力が挙げられ得るが、これらに限定されるものではない。PaaSプラットフォーム20は、PaaSサービスを提供するための基本的なソフトウェアおよびインフラストラクチャを管理および制御し得る。ユーザは、ユーザが別個のライセンスおよびサポートを購入する必要なく、クラウドコンピューティング環境10によって提供されるPaaSサービスを取得することができる。PaaSサービスの例としては、オラクルJava(登録商標)クラウドサービス(Java Cloud Service:JCS)、オラクルデータベースクラウドサービス(Oracle Database Cloud Service:DBCS)などが挙げられるが、これらに限定されるものではない。
【0032】
PaaSプラットフォーム20によって提供されるサービスを利用することによって、ユーザは、クラウドコンピューティング環境10によってサポートされるプログラミング言語およびツールを利用することができ、デプロイされたサービスを制御することもできる。いくつかの実施形態では、クラウドコンピューティング環境10によって提供されるPaaSサービスは、データベースクラウドサービス50と、ミドルウェアクラウドサービス(たとえばオラクルフュージョンミドルウェアサービス)55と、Javaクラウドサービス60とを含んでいてもよい。一実施形態では、データベースクラウドサービス50は、組織がデータベースリソースをプールし、データベースクラウドの形態でデータベース・アズ・ア・サービスをユーザに供給することを可能にする共有のサービスデプロイメントモデルをサポートし得、ミドルウェアクラウドサービス55は、さまざまなビジネスアプリケーションを開発およびデプロイするためにユーザにプラットフォームを提供し、Javaクラウドサービス60は、クラウドコンピューティング環境10においてJavaアプリケーションをデプロイするためにユーザにプラットフォームを提供する。
図1に示されるSaaSプラットフォーム15およびPaaSプラットフォーム20におけるコンポーネントは、単に例示の目的で示されており、本発明の実施形態の範囲を限定することを意図したものではない。代替的な実施形態では、SaaSプラットフォーム15およびPaaSプラットフォーム20は、クラウドコンピューティング環境10のユーザに追加のサービスを提供するための追加のコンポーネントを含んでいてもよい。
【0033】
IaaSプラットフォーム20によってさまざまな異なるIaaSサービスが提供され得る。IaaSサービスは、SaaSプラットフォームおよびPaaSプラットフォームによって提供されるサービスを利用するユーザのために、ストレージ、ネットワークおよび他の基礎的なコンピューティングリソースなどの基本的なコンピューティングリソースの管理および制御を容易にする。
【0034】
特定の実施形態では、クラウドコンピューティング環境10は、クラウドコンピューティング環境10のユーザにさまざまなサービスを提供するために使用されるリソースを提供するためのインフラストラクチャリソース30を含む。一実施形態では、インフラストラクチャリソース30は、PaaSプラットフォームおよびSaaSプラットフォームによって提供されるサービスを実行するために、サーバ、ストレージおよびネットワーキングリソースなどのハードウェアの予め作成された、最適化された組み合わせ(たとえばグループまたはセット)を含む。
【0035】
特定の実施形態では、クラウド管理機能35は、クラウドコンピューティング環境10においてクラウドサービス(たとえばSaaS、PaaS、IaaSサービス)の包括的な管理を提供する。一実施形態では、クラウド管理機能35は、クラウドインフラストラクチャシステム10によって受信されたユーザのオーダーまたはサブスクリプションをプロビジョニング、管理および追跡するための機能などを含む。
【0036】
図2は、本発明の実施形態に係るポリシーベースのリソース割当ておよび管理システム100の簡略化した高レベルのダイアグラムを表わす。
図2に示されるように、リソース管理システム105(たとえば1つ以上のコンピューティングデバイスを含むサービスプロバイダのコンピューティングシステム)は、ユーザまたはユーザ110(たとえばクライアントもしくはコンピューティングデバイス)から、1つ以上の構成可能なコンピューティングリソース115A〜115Jに対するオーダーまたはサービスサブスクリプション107を受信し得る。ユーザ110に提供されるリソース115A〜115Jは、異なる地理的領域125A〜120−D内に位置し得る、1つ以上のデータセンター120A〜120D内に位置し得る。旧来のサービスプロバイダは、プロバイダにとって最も費用効果の高い態様でリソースをプロビジョニングして割当てるものであり、ユーザは、ユーザのニーズに最良に適合するようにリソースがどのようにまたはどこでプロビジョニングされるかを規定することはできない。加えて、先行技術のシステムは、オンデマンドでリソースを提供するという点で反応的である。しかし、これらのシステムは、現在のデマンドに基づいて要求を予想せず、またはリソースのセットもしくはグループを特定および提供しない。本発明の実施形態は、これらおよび他の問題に対処する。
【0037】
本発明の局面に従うと、1つ以上の構成可能なコンピューティングリソース115A〜115J(すなわち、コントリビューション可能なまたは要求可能なリソースタイプ)は、ネットワーク、ネットワーク帯域幅、サーバ、POD、処理、メモリ、ストレージ、アプリケーション、仮想マシン、サービス等であり得る。PODは、以下のうちの1つを表わし得る論理エンティティである:(Javaサービスの場合と同様に)予めプロビジョニングされた匿名のシングルテナントデプロイメント;または、(データベースサービスの場合と同様に)複数のテナントをサーブするマルチテナントスタック(物理的または仮想的)。たとえば、PODは物理的なスタック上へのサービスのデプロイメントである。PODは1つ以上のサービスインスタンスを収容することができる。PODは先験的に作成することができるか、または、サービスインスタンスが所与の顧客のために作成されるときにオンデマンドで作成することができる。いくつかの例では、PODは、サービスを実行させるためのソフトウェアスタックのインスタンス化である。このため、PODを用いてサービスを実行する。たとえば、Javaサービスに対応するPODは仮想マシンのスタックを含んでいてもよい。別の例として、データベースサービスのためのPODは、データベースのインスタンスを含んでいてもよい。PODは、サービスをホストすることのできるサブシステムと見なされてもよい。異なるPODを異なるサービスのために用いてもよい。
【0038】
図3は、本発明の実施形態に係る配置ポリシーベースのリソース割当ておよび管理の例示的なフローダイアグラム200を表わす。上述のように、典型的なサービスプロバイダでは、ユーザまたはユーザは、自身が要求した構成可能なコンピューティングリソースがどのようにどこでプロビジョニングされるかを定義することができない。代わりに、構成可能なコンピューティングリソースは典型的に、サービスプロバイダにとって最も費用効果の高い何らかの態様で割当てられる。しかし、サービスプロバイダにとって最良の割当ては、エンドユーザに最良の経験を提供しない場合がある。
【0039】
本発明の実施形態は、エンドユーザが自身の構成可能なコンピューティングリソース要求に対する配置ポリシー(すなわちリソースポリシー)を定義できるようにすることによって、ファイングレインのリソース割当て機能をユーザに与える。これは、いくつかの利点をエンドユーザに提供し得る。たとえば、IaaSの文脈では、エンドユーザは、特に自身のデータが他のユーザのデータと同一のコンピューティングノード上に格納され得る場合、自身のデータのセキュリティに懸念を抱き得る。IaaSプロバイダはデータセキュリティについて保証するが、これらの保証では不十分なユーザがいる場合もある。ユーザは代わりに、その他のユーザと共有されない自身の専用のコンピューティングノードを望む場合がある。他のユーザは、データセキュリティについてはそれほど懸念を抱いていないが、具体的に定義されたリソース割当てによって最良にサーブされ得る特定のパフォーマンスまたは冗長要件を有する場合がある。したがって、本発明の実施形態は、エンドユーザのニーズに対応するために複数の配置ポリシーを含む。本明細書における配置ポリシーとは、構成可能なコンピューティングリソース(たとえばコンピューティングノード)がユーザにサービスするためにどのように割当てられるかを定義する規則を指す。
【0040】
本発明の局面に従うと、配置ポリシーは、いくつかの異なる要因に基づいてリソースを割当てることができる。たとえば、IaaSの文脈では、パフォーマンスが問題である場合、コンピューティングリソースは同一のハイパーバイザまたは1セットのハイパーバイザ(たとえば、仮想マシン(VM)を作成して実行する1つのコンピュータソフトウェア、ファームウェア、および/またはハードウェアである、仮想マシンモニタ(VMM)または1セットのVMM)上で実行されるようにグループ化され得る。これによって、ネットワーキング層への呼出を減少させることによって、異なるハイパーバイザ同士またはハイパーバイザのセット同士の間で分散しているリソースと比較して、ネットワーク通信および要求/応答時間が改善され得る。たとえば、共有のストレージリソースは、パフォーマンスを向上させるために、その関連付けられたコンピュートノードと同一の1つのハイパーバイザまたは1セットのハイパーバイザにおいて最良に割当てられ得る。上述のように、セキュリティの懸念は、専用のハイパーバイザ上でリソースを実行することによって対処され得る。これを用いて、異なるユーザ同士の間の、または別個に維持される必要がある同一のユーザによって制御されるデータのセット同士の間の悪意のアクセスまたは不注意なアクセスからデータを保護することができる。同様に、地理的制約(たとえばリソースをホストするデータセンターの位置についての限定)も、特定のセキュリティ、パフォーマンス、または規制要件を満たすように提供され得る。加えて、特定のリソースを別個のハイパーバイザまたはハイパーバイザのセット上で実行することによって、分離および/または冗長性が維持され得る。これを用いて、(たとえばダウンタイムを減少させるために)他のリソースに影響を及ぼすことなく、故障した場合にデータを保存すること、または、1セットのリソースに対して管理、事務、またはインフラストラクチャ操作(パッチングなど)を実行することができる。いくつかの実施形態では、企業デザイン、統合要件、または他の機能要件は、コンポーネントが同一のハイパーバイザ(たとえばソフトウェア定義インフラストラクチャ(SDI))の範囲内でのみ相互運用可能であることを要求し得る。
【0041】
配置ポリシーの例としては、IaaSの文脈では、割当てられたリソースが、1セットのハイパーバイザに対して配置された仮想マシン上で実行される、専用のハイパーバイザポリシーが挙げられる。この1セットのハイパーバイザは、それらが他のユーザと共有されないという点で専用である。ベストフィット配置ポリシーによって仮想マシンが1セットのハイパーバイザに割当てられて、コンピューティングリソース利用が最適化され得る。たとえば、1セットのハイパーバイザは、リソースを節約し、リソース利用を最大化し、フラグメンテーションを減少させるために、または他のリソース最適化のために、必要に応じて他のユーザと共有され(かつ、他のリソースを実行し)得る。いくつかの実施形態では、配置ポリシーがユーザによって規定されない場合は、ベストフィット配置ポリシーはデフォルトで選択され得る。コンピューティングリソースの特定の部分がともに実行されるべきである場合は、グループフィット配置ポリシーが使用され得る。仮想マシンはともにグループ化され、同一のハイパーバイザプール内の1つ以上のハイパーバイザ上で実行され得る。配置ポリシーは必要に応じてエンドユーザによってカスタマイズされ、上述の、またはその他の配置ポリシーの1つ以上からの特徴を組込むハイブリッド配置ポリシーが作成され得る。
【0042】
図3に示されるように、ユーザ205は、トポロジ定義215を含むオーダーまたはサービスサブスクリプション210を、リソースマネージャ(たとえば
図2に関して説明したリソース管理システム105)に提出し得る。トポロジ定義は、メモリ、CPUの数、ストレージ要件、およびエンドユーザが要求した他の仕様などの、個別の構成可能なコンピューティングリソース(たとえばコンピュートノード)についての要件を含み得る。たとえば、トポロジ定義215において示されるように、オーダーまたはサービスサブスクリプション210は9個の仮想マシン220A〜220Iを含み、その各々が独自の仕様(たとえばメモリ、CPUの数、およびストレージ)を有している。9個の仮想マシンは、グループ1が3個の仮想マシン220A〜220Cを含み、グループ2が2個の仮想マシン220D〜220Eを含み、残りの4個の仮想マシン220F〜220Iがグループ化されないように、グループ化される。このトポロジ定義215は、要求された仮想マシンの一部に対して2つのグループが規定されており、残りの仮想マシンにベストフィットポリシーが適用され得るという点で、ハイブリッド配置ポリシーを表わしている。
【0043】
いくつかの実施形態では、トポロジ定義は、以下のリスティング1に示されるように、テキストフォーマットで提供され得る。
【0045】
リスティング1に示されるように、2つのグループにおける13個の仮想マシンが要求されている。いくつかの実施形態では、グループは、明示的なグループIDを有さずに、VMの名前に基づいて特定され得る。リスティング1は、ユーザ関係マネージャ(user relations manager:CRM)デプロイメントに対する例示的なトポロジを定義している。トポロジ定義における各VMは、VM数(VM_NO)、CPUの規定数(VM_CPU_COUNT)、メモリの規定量(VM_MEM_REQUIRED)、VM名(VM_COMMENTS)、およびオペレーティングシステム定義(VM_OS_TEMPLATE)、およびグループID(GROUP_ID)を含む。いくつかの実施形態では、トポロジ定義はより多いまたは少ない要件を含んでいてもよい。たとえば、いくつかの実施形態では、VM毎のトポロジ定義は、プロキシノードを使用すべきか否かを示すフラッグを含み得る。VM3〜5などのいくつかのVMは、CPUまたはメモリ要件なしで要求され得、これらのVMはデプロイメントのためのIPアドレスとしてセットアップされ得る。
【0046】
上記に示したように、グループは、トポロジ定義に基づいて自動的に特定され得、および/またはトポロジ定義において明示的に定義され得る。たとえば、リスティング1では、「RAC_
*」と名付けられた各仮想マシンが、自動的に特定されてグループ化され得る。いくつかの実施形態では、推奨されるグループがノード名に基づいて特定され、確認のためにユーザに提示され得る。いくつかの実施形態では、明示的なグループIDがトポロジ定義に含まれ得る。たとえば、リスティング1に示されるように、VM1〜5は1のGroup_IDを含むのに対して、VM6〜13は0のGroup_IDを含む。いくつかの実施形態では、Group_IDが既存のグループに対応する場合、新たに要求されるVMは当該既存のグループに追加され得る。
【0047】
図3に示されるように、IaaSの文脈では、オーダーまたはサービスサブスクリプション内の要求されたリソースは、トポロジ定義215に基づいてリソースプール225から割当てられ得る。いくつかの実施形態では、リソースプール225はIaaSプロバイダによって管理されるハイパーバイザプールであり得る。いくつかの実施形態では、リソースプール225は、複数のリモートデータセンターにわたって分散している複数のリソースプールを含み得る。
【0048】
図4は、本発明の実施形態に係るクライアントデバイスおよびリソースマネージャのより詳細な高レベルのダイアグラム300を表わす。
図4に示されるように、エンドユーザは、ユーザコンピュータ310を用いてリソースマネージャ305(たとえば
図2に関して上述したリソース管理システム105)と通信して、リソース要求およびトポロジ定義320を含むオーダーまたはサービスサブスクリプション315を送信し得る。オーダーまたはサービスサブスクリプション315はリソース要求インターフェイス325によって受信され、リソースプール330およびポリシーマネージャ335に転送され得る。リソースプール330は、リソースマネージャ305によって管理される1つ以上のデータセンターにおける1つ以上のリソースプール(たとえば
図3に関して説明したリソースプール225)へのインターフェイスの役割を果たし得る。リソースプール330は、データセンターインデックス340およびリソースインデックス345を維持し得る。各インデックス340および345は、特定のデータセンターにおいて現在利用可能な構成可能なコンピューティングリソース、および/または各データセンターが提供可能な構成可能なコンピューティングリソースを示し得る。たとえば、データセンターインデックス340は、接続された各データセンターにおいていくつのハイパーバイザが利用可能であるか、ならびに、それらのハイパーバイザが専用の配置ポリシーについて共有および/または使用され得るか否かを示し得る。同様に、リソースインデックス345は、現在利用可能なアプリケーションサーバ、リアルアプリケーションクラスタ(RAC)ノード、ストレージノードなどの、どの既存の構成可能なコンピューティングリソースが任意の所与のデータセンターにおいて利用可能であるかを示し得る。リソース割当てモジュール350はオーダーまたはサービスサブスクリプション315を受信し得、要求されている構成可能なコンピューティングリソースを決定し得、配置ポリシーが存在する場合はどの配置ポリシーに従っているかを決定し得る。リソース割当てモジュール350はポリシーマネージャ335と通信して、規定された配置ポリシーの要件を特定して決定し得る。ポリシーマネージャ335は、デマンドポリシー360、コントリビューションポリシー365、および配置ポリシー370を含む複数のポリシー定義355を維持し得る。また、ポリシーマネージャ335は、必要に応じてポリシー定義355を更新し得るポリシー更新モジュール375を含み得る。
【0049】
図5は、本発明の実施形態に係るコントリビューションポリシーベースのリソース割当ておよび管理システムの簡略化したダイアグラムを表わす。いくつかの実施形態では、ユーザは、さまざまな構成可能なコンピューティングリソース、オーダーもしくはサービスサブスクリプションについてのディスカウント、または他の形態の補償と交換に、不使用のまたは余分な構成可能なコンピューティングリソースをコントリビューションし得る。たとえば、プライベートクラウドインフラストラクチャプロバイダなどのサービスプロバイダは、複数の異なるユーザおよび/または組織から、構成可能なコンピューティングリソースの共有プールから、オーダーまたはサービスサブスクリプションをサービスし得る。各ユーザまたは組織(たとえば顧客)は、完全には利用され得ないか、またはもはや使用され得ない、たとえばハイパーバイザ、ストレージノード、または他の構成可能なコンピューティングリソースなどの、自身のハードウェアおよび/またはソフトウェアリソースを所有または制御し得る。
図5に示される実施形態では、これらのユーザおよび/または組織は、支払と交換に、および/またはコントリビューションしているユーザが使用する予定の他の構成可能なコンピューティングリソースと交換に、自身の不使用の構成可能なコンピューティングリソースをコントリビューションすることができる。たとえば、IaaSの文脈では、ユーザは、ユーザが必要としない余分なストレージノードを有する場合がある。自身の余分なストレージノードをコントリビューションするのと交換に、ユーザはRACノードを要求することが可能であり得る。ユーザは、ハイパーバイザ、ソフトウェア、ネットワーク、POD、または他の構成可能なコンピューティングリソースもコントリビューションし得る。
【0050】
図5に示されるように、各ユーザ405はコントリビューション可能なリソース410と関連付けられ得る。いくつかの実施形態では、コントリビューション可能なリソース410はユーザによって管理され、完全には利用され得ないか、またはもはや使用され得ない、たとえばネットワーク、ネットワーク帯域幅、サーバ、POD、処理、メモリ、ストレージ、アプリケーション、仮想マシン、サービス等のハードウェアおよび/またはソフトウェアのタイプのリソースであり得る。各ユーザ405は、コントリビューションされているリソースの記述を含むリソース提出415をリソースマネージャ420(たとえば
図1に関して上述したリソース管理システム105)に送信し得る。たとえば、記述は、コントリビューションされているリソースのタイプ(たとえばサーバ)と、リソースの名前、メモリ、CPU情報、オペレーティングシステム、追加のハードウェアおよび/またはソフトウェア等のリソースの仕様とを含み得る。リソースマネージャ420は、現在のリソース可用性および/またはリソースデマンドに鑑みてコントリビューション可能なリソース410を評価し、ユーザ405がコントリビューション可能なリソース410と交換に受信し得る要求可能なリソース425の1つ以上のタイプを定義する交換オファーを戻し得る。いくつかの実施形態では、要求可能なリソース425はリソースマネージャ420によって管理され、ユーザにサービスするのに利用可能な、たとえばネットワーク、ネットワーク帯域幅、サーバ、POD、処理、メモリ、ストレージ、アプリケーション、仮想マシン、サービス等の、ハードウェアおよび/またはソフトウェアタイプのリソースであり得る。交換(たとえば、要求可能なリソース425に対してコントリビューション可能なリソース410)がコントリビューションしているユーザ405のニーズを満たす場合、ユーザ405はオファーを受付け、コントリビューション可能なリソース410の制御をリソースマネージャ420に引継ぐことができる。たとえば、ユーザ405は、コントリビューション可能なリソース410へのアクセスおよびリソース410に対する制御を提供するアクセスクレデンシャル(たとえばユーザ名およびパスワード)をリソースマネージャ420に提供し得る。次いで、ユーザ405は、交渉した要求可能なリソース425をリソースマネージャ406から受信し得る。
【0051】
これは、ユーザが必要としない構成可能なコンピューティングリソースの1つのタイプを、ユーザが必要としない構成可能なコンピューティングリソースの異なるタイプと交換することができるユーザにとって有利である。いくつかの実施形態では、ユーザが交換に受信する構成可能なコンピューティングリソース(たとえば要求可能なリソース)は、ユーザが所望の構成可能なコンピューティングリソースをセットアップする必要なしに、リソースプール内の任意のハイパーバイザ上で実行されていてもよい。たとえば、ユーザはコンピュートノードを購入しているが、そのコンピュートノード上で構成可能なコンピューティングリソースをセットアップする際に特定の専門知識をまったく有していない場合がある。このコンピュートノードをコントリビューションすることによって、ユーザは、ユーザによるいずれのセットアップも必要とせずに、異なるコンピュートノード上で実行される、所望の構成可能なコンピューティングリソースを交換に受信することができる。これは組織によって内部でも使用され得る。大規模なソフトウェア開発会社などの組織は、予測される必要性に基づいて、構成可能なコンピューティングリソースを組織の異なるサブグループに割当て得る。新たなプロジェクトを実施するために、または市場の需要の変化のためにサブグループの変更が必要となった場合、組織が構成可能なコンピューティングリソースをサブグループ同士の間で再割当てすることは困難であり得る。コントリビューションポリシーベースのリソース管理および割当てシステムを用いて、サブグループは、組織による再割当てを必要とせずに、リソースを自然発生的にリバランスすることができる。コントリビューションポリシーは、デマンドに基づいてリソースコントリビューションについての「交換レート」(たとえばコントリビューション可能なリソースと要求可能なリソースとの間のマッピング)を定義することができ、かつ、動的に更新され得る。同様に、このようなコントリビューションポリシーベースのシステムは複数の組織にわたって使用され得る。リソースマネージャは、組織がそれらのコンピューティングリソースをコントリビューションするための標準化プロトコルを提供する、信頼できるパーティの役割を果たし得る。これは、ある組織からの機密情報がライバル組織のコンピューティングリソースに晒されないことを保証するために、上述の配置ポリシーベースのシステムと組み合わされて用いられ得る。
【0052】
図6は、本発明の実施形態に係るクライアントデバイスおよびリソースマネージャのより詳細な高レベルのダイアグラム500を表わす。
図6に示されるように、リソースマネージャ505(たとえば、それぞれ
図2、
図4および
図5に関して上述したリソース管理システム105またはリソースマネージャ305;420)は、リソース提出インターフェイス510、ユーザアカウント履歴515およびデマンドモニタ520を含むいくつかのサブシステムまたはモジュールを含む。加えて、リソースマネージャ505は、ポリシーマネージャ525、リソースプール530、およびリソース要求インターフェイス535(たとえば、
図3に関して上述したポリシーマネージャ335、リソースプール330、およびリソース要求インターフェイス325)を含み得る。これらのサブシステムは、ソフトウェア(たとえばプログラムコード、1つ以上のプロセッサによって実行可能な命令)で、ハードウェアで、またはこれらの組み合わせで実現され得る。いくつかの実施形態では、ソフトウェアはメモリ(たとえば非一時的なコンピュータ読取可能媒体)内に、メモリデバイス上に、または何らかの他の物理メモリ上に格納され得、1つ以上の処理ユニット(たとえば1つ以上のプロセッサ、1つ以上のプロセッサコア、1つ以上のGPU等)によって実行され得る。
【0053】
図6に表わされるように、ユーザコンピュータ540はブラウザ545などのウェブアプリケーションを実行し得、ブラウザ545は、ユーザコンピュータ540のユーザがリソース提出をリソースマネージャ505に送信して、構成可能なコンピューティングリソース(たとえばコントリビューション可能なリソース)をリソースマネージャ505にコントリビューションすることを可能にする。リソース提出は、コントリビューションされているリソース(たとえばネットワーク、ネットワーク帯域幅、サーバ、POD、処理、メモリ、ストレージ、アプリケーション、仮想マシン、サービス等)のタイプと、リソースの名前、メモリ、CPU情報、オペレーティングシステム、追加のハードウェアおよび/またはソフトウェア等のリソースの仕様とを規定し得る。コントリビューション可能なリソースは、ユーザがネットワーク555を介してアクセス可能なローカルリソース550Aおよび/またはリモートリソース550Bなどのように、ユーザによって所有またはそうでなければ制御(たとえば管理)される(たとえば、ユーザがもはや完全には使用していないか部分的に使用しているリソース)。
【0054】
一実施形態では、リリソース提出インターフェイス510はリソース提出を受信してポリシーマネージャ525と通信し、リソース提出に適用され得る1つ以上のコントリビューションポリシーを特定し得る。たとえば、各コントリビューションポリシーは、コントリビューションされているリソースのタイプと交換に提供され得る要求可能なリソース(たとえばネットワーク、ネットワーク帯域幅、サーバ、POD、処理、メモリ、ストレージ、アプリケーション、仮想マシン、サービス等)の1つ以上のタイプを規定し得る。適用可能なコントリビューションポリシーが特定されると、ポリシーマネージャ525は、リソース提出に対して特定された要求可能なリソースの1つ以上のタイプを戻すことができる。したがって、各コントリビューションポリシーは要求可能なリソースの1つ以上のタイプのオファーを効果的に表わし、ユーザはコントリビューション可能なリソースと交換にこれを受付けるか拒絶することができる。ユーザが要求可能なリソースの1つ以上のタイプのうちの1つを選択または受付けると、ユーザアカウント履歴560は、コントリビューション履歴565においてユーザによってコントリビューションされているリソースを示すように更新され得る。その後、ユーザは、以前に選択または受付けられたタイプの要求可能なリソースのリソース要求を含むオーダーまたはサービスサブスクリプションを提出し得、リソースマネージャ505は要求可能なリソースの割当てで応答し得る。加えて、ユーザがオーダーまたはサービスサブスクリプションを提出すると、リソース要求履歴570はリソースの要求で同様に更新され得る。ユーザのコントリビューションおよびオーダーまたはサブサービススクリプション履歴を追跡することによって、リソースマネージャ505は、ユーザがコントリビューション可能なリソースと交換に合意した要求可能なリソースを受信したか否かを追跡することができる。
【0055】
いくつかの実施形態では、コントリビューションポリシーは、特定のユーザのコントリビューション履歴に基づいて特定のユーザに対して調整され得る。たとえば、多くの構成可能なコンピューティングリソースをコントリビューションした履歴を有するユーザは、コントリビューション履歴が限られているユーザよりも有利なオファー(たとえば、現在のデマンドに基づいて提供されるであろうよりも、コントリビューションと交換に、より多くの構成可能なコンピューティングリソース)を受信し得る。
【0056】
代替的な実施形態では、リソース提出インターフェイス510は、1つ以上の要求可能なリソースと交換にリソースの1つ以上のタイプをコントリビューションするオファーを含むオーダーまたはサービスサブスクリプションを受信し得、ポリシーマネージャ525と通信して、当該オファーが満たされ得るか否かを判断する。たとえば、オーダーまたはサービスサブスクリプションは、ユーザが好む1つ以上の要求可能なリソースと交換にコントリビューションされ得る1つ以上のリソースを定義し得る。加えて、オーダーまたはサービスサブスクリプションは、1つ以上の要求可能なリソースを提供し得る1人以上のユーザおよび/または1つ以上の地理的領域を定義し得る。したがって、各オーダーまたはサービスサブスクリプションは、コントリビューション可能なリソースの1つ以上のタイプを、ポリシーマネージャ520が受付け得る、拒絶し得る、または無効にし得る(たとえば、ポリシーマネージャ525によって維持されるコントリビューションポリシーに基づいて構成可能なコンピューティングリソースの1つ以上の他のタイプを提案し得る)要求可能なリソースの1つ以上のタイプと交換するオファーを効果的に表わす。ポリシーマネージャ525がオファーを受付けると、ユーザアカウント履歴560は、コントリビューション履歴565においてユーザによる1つ以上のリソースのコントリビューションを示すように更新され得る。加えて、リソース要求履歴570は、ユーザが要求した1つ以上のリソースで同様に更新され得る。オファーの受付けは、コントリビューション可能なまたは要求可能なリソースを提供し得る1人以上のユーザから付与される許可、コントリビューション可能なまたは要求可能なリソースのタイプの可用性および/またはデマンド、コントリビューション可能なリソースのタイプと要求可能なリソースのタイプとの交換の同等性、ポリシーマネージャ525によって維持されるコントリビューションポリシーなどを含むがこれらに限定されるものではないいくつかの要因に基づいて、ポリシーマネージャ525によって決定され得る。このような実施形態では、プロジェクトまたはジョブについて第1のユーザ「A」が第2のユーザ「B」と連携し、1つ以上のリソースを互いに共有してプロジェクトもしくはジョブの各ユーザの部分を完了すること、および/または互いに1つ以上のリソースを交換するための同意を交わすことが可能である。
【0057】
いくつかの実施形態では、ポリシーマネージャ525によって維持されるリソースポリシー(たとえばコントリビューションポリシー)は、コントリビューション可能なおよび/または要求可能なリソースの異なるタイプに対する現在のデマンドに基づいて動的に更新され得る。デマンドモニタ575は、オーダーまたはサービスサブスクリプションがリソース要求インターフェイス535からポリシーマネージャ525に転送されると、要求インターセプタ580を用いて当該オーダーまたはサービスサブスクリプションをインターセプトまたは受信し得る。いくつかの実施形態では、デマンドモニタ575は、各オーダーまたはサービスサブスクリプションをインターセプトまたは受信することなく、ポリシーマネージャ525から報告期間の最後に(たとえば毎日または毎時間)オーダーまたはサービスサブスクリプションをバッチで受信し得る。デマンドモニタ575がオーダーまたはサービスサブスクリプションをインターセプトまたは受信すると、デマンドモニタ575はオーダーまたはサービスサブスクリプションをポリシーマネージャ525に転送し、オーダーまたはサービスサブスクリプションのコピーを保存し得る。要求パーサ583はオーダーまたはサービスサブスクリプションを分析して、要求されている構成可能なコンピューティングリソース、リソースを要求したエンティティ、およびリソースが要求された時間を決定し得る。次いで、パースされたオーダーまたはサービスサブスクリプションはアグリゲート要求履歴585に追加され得る。アグリゲート要求履歴585は、時間、リクエスタ、および要求されたリソースでソートされたオーダーまたはサービスサブスクリプションの実行リストを格納するデータ構造を含み得る。リアルタイムデマンドカルキュレータ590は、特定の期間または要求ボリュームにわたってアグリゲート要求履歴585を分析し、その期間中のデマンドを決定し得る。リソースデマンドコリレータ595もアグリゲート要求履歴585を分析し、オーダーまたはサービスサブスクリプションにおけるパターンを決定し得る。所与の構成可能なコンピューティングリソースが要求されると、動的リソースセット内の他のリソースも要求されたリソースと通信するようにプロビジョニングおよび構成されるように、構成可能なコンピューティングリソースの動的リソースセットまたはグループが、オーダーまたはサービスサブスクリプションパターンに基づいて定義され得る。
【0058】
図7〜
図10は、本発明の実施形態に係るコントリビューションポリシーベースの、およびデマンドポリシーベースのリソース割当てのために実行される処理を表わす簡略化したフローチャートを表わす。
図7〜
図10のステップは、たとえば
図1〜
図6および
図11〜
図15の環境において実現され得る。本明細書に記載されるように、
図7〜
図10のフローチャートは、本発明のさまざまな実施形態に係るシステム、方法、およびコンピュータプログラムプロダクトのアーキテクチャ、機能、および可能な実装例の動作を示す。この点において、フローチャートまたはブロックダイアグラム内の各ブロックは、規定された論理機能を実現するための1つ以上の実行可能な命令を含むモジュール、セグメント、またはコードの一部を表わし得る。また、いくつかの代替的な実装例では、ブロック内に示される機能は図に示される順序以外でも起こり得ることに留意すべきである。たとえば、連続して示される2つのブロックは、実際は、実質的に同時に実行されてもよく、または、ブロックは、関連の機能に依存して、場合によっては逆の順序で実行されてもよい。また、ブロックダイアグラムおよび/またはフローチャート図の各ブロック、ならびにブロックダイアグラムおよび/またはフローチャート図中のブロック同士の組み合わせは、規定された機能もしくは行為を実行する専用のハードウェアベースのシステム、または専用のハードウェアとコンピュータ命令との組み合わせによって実現可能であることに留意すべきである。
【0059】
図7は、ポリシーマネージャによって維持されるコントリビューションポリシーを用いるコントリビューションポリシーベースのリソース割当てのために実行される処理を表わす簡略化したフローチャート600を表わす。ステップ605において、コントリビューション可能なリソースを特定するリソース提出が受信され得る。たとえば上述のように、リソース提出インターフェイス510はリソース提出をユーザコンピュータ540から受信し、リソース提出をポリシーマネージャ525に転送し得る。リソース提出は、コントリビューションされているリソース(たとえばネットワーク、ネットワーク帯域幅、サーバ、POD、処理、メモリ、ストレージ、アプリケーション、仮想マシン、サービス等)のタイプと、リソースの名前、メモリ、CPU情報、オペレーティングシステム、追加のハードウェアおよび/またはソフトウェア等のリソースの仕様とを規定し得る。コントリビューション可能なリソースは、ローカルリソース550Aおよび/またはリモートリソース550Bなどのように、ユーザによって所有またはそうでなければ制御(たとえば管理)される(たとえば、ユーザがもはや完全には使用していないか部分的に使用しているリソース)。
【0060】
ステップ610において、リソース提出に適用され得る1つ以上のコントリビューションポリシーが特定され得る。たとえば、各コントリビューションポリシーは、コントリビューションされているリソースのタイプと交換に提供され得る要求可能なリソース(たとえばネットワーク、ネットワーク帯域幅、サーバ、POD、処理、メモリ、ストレージ、アプリケーション、仮想マシン、サービス等)の1つ以上のリソースタイプを規定し得る。1つ以上のコントリビューションポリシーの特定は、リソース提出に基づいてコントリビューション可能なリソースのリソースタイプを決定することと、リソースタイプが(1つ以上のコントリビューションポリシー内の)コントリビューション可能なリソースの1つ以上のリソースタイプと一致すると判断することとを含み得、コントリビューション可能なリソースの1つ以上のリソースタイプは、1つ以上のコントリビューションポリシーにおいて要求可能なリソースの1つ以上のリソースタイプにマップしている。したがって、各コントリビューションポリシーは要求可能なリソースの1つ以上のタイプのオファーを効果的に表わし、ユーザはコントリビューション可能なリソースと交換にこれを受付けるか拒絶することができる。適用可能なコントリビューションポリシーが特定されると、ポリシーマネージャ525は、リソース提出に対して特定された要求可能なリソースの1つ以上のタイプを戻すことができる。いくつかの実施形態では、1つ以上のコントリビューションポリシーの特定は、ユーザが利用可能な要求可能なリソースの1つ以上のタイプ、コントリビューション可能なおよび/または要求可能なリソースの1つ以上のタイプのデマンドレベル、ならびにユーザのリソースコントリビューションの履歴を含む任意の数の要因に基づいてより狭く調整または定義されるコントリビューションポリシーを用いてさらに展開され得、たとえば、多くのリソースをコントリビューションした履歴を有するユーザは、コントリビューション履歴が限られているユーザよりも有利なコントリビューションポリシーまたはオファー(たとえば、現在のデマンドに基づいて提供されるであろうよりも、コントリビューションと交換に、より多くのリソース)を受信し得る。
【0061】
ステップ615において、コントリビューションされているリソースのタイプと交換に提供され得る要求可能なリソースの1つ以上のリソースタイプの特定が、特定された1つ以上のコントリビューションポリシーに基づいてユーザに送信され得る。たとえば、リソース提出インターフェイス510は、特定された1つ以上のコントリビューションポリシーに基づいて、要求可能なリソースの1つ以上のリソースタイプの特定をポリシーマネージャ525からユーザコンピュータ540に送信し得る。ステップ620において、要求可能なリソースの少なくとも1つのタイプがユーザによって拒絶されると、拒絶が受信され得る。たとえば、上述のように、リソース提出インターフェイス510は、要求可能なリソースの少なくとも1つのタイプの拒絶をユーザコンピュータ540から受信し得る。ステップ625において、要求可能なリソースの少なくとも1つのタイプがユーザによって選択または受付けられると、要求可能なリソースの少なくとも1つのタイプの選択または受付けを示す情報が受信され得る。たとえば、上述のように、リソース提出インターフェイス510は、要求可能なリソースの少なくとも1つのタイプの選択または受付けを示す情報をユーザコンピュータ540から受信し得る。いくつかの実施形態では、当該情報は、リソース提出において特定されたコントリビューション可能なリソースへのアクセスならびに当該リソースに対する制御を提供するアクセスクレデンシャル(たとえばユーザ名およびパスワード)をさらに含み得る。
【0062】
ステップ630において、ユーザアカウント履歴およびリソースプールは、要求可能なリソースの少なくとも1つのタイプの選択または受付けから実現される変更を示すように更新され得る。たとえば、ユーザアカウント履歴560は、コントリビューション履歴565において要求可能なリソースの少なくとも1つのタイプと交換に提供されるコントリビューション可能なリソースを示すように更新され得る。加えて、リソースプール530内のデータセンターインデックスおよび/またはリソースインデックスは、リソースマネージャ(たとえばサービスプロバイダによって管理される分散システム)の1人以上のユーザにサービスするためにコントリビューション可能なリソースの可用性を示すように更新され得る。
【0063】
ステップ635において、要求可能なリソースに対するオーダーまたはサービスサブスクリプションがユーザから受信され得る。たとえば、リソース提出インターフェイス510は、オーダーまたはサービスサブスクリプションをユーザコンピュータ540から受信し、オーダーまたはサービスサブスクリプションをリソースマネージャ505に転送し得る。ステップ640において、要求可能なリソースが、以前のリソース提出交換を通してユーザが利用可能であるタイプ(すなわち、コントリビューション可能なリソースと交換に以前に選択または受付けられたタイプの要求可能なリソース)であるか否かについて判断がなされ得る。たとえば、リソースマネージャ505はユーザアカウント履歴560を確認して、要求可能なリソースが、コントリビューション可能なリソースと交換に約束されたタイプであるか否かを判断し得る。ステップ645において、要求可能なリソースがコントリビューション可能なリソースと交換に約束されたタイプではない場合、要求可能なリソースは、本明細書に記載される配置もしくはデマンドポリシーベースのシステムなどの他のオーダーもしくはサービスサブスクリプションポリシー、および/または旧来のオーダーもしくはサービスサブスクリプションポリシーに従ってユーザに割当てられ得る。
【0064】
ステップ650において、要求可能なリソースが、コントリビューション可能なリソースと交換に約束されたタイプである場合、要求可能なリソースは、以前に特定された1つ以上のコントリビューションポリシーに基づいてユーザに割当てられ得る。たとえば、要求可能なリソースがコントリビューション可能なリソースと交換に約束されたタイプである場合、リソースマネージャ505は、ユーザまたは顧客にサービスするためにリソースプール530から要求可能なリソースを割当てて構成し、要求可能なリソースが割当てられたという確認メッセージをユーザまたは顧客に送信し得る。要求可能なリソースは、ユーザによって選択または受付けられたタイプの任意の構成可能なコンピューティングリソースであり得る。たとえば、選択された要求可能なリソースのタイプがRACノードであった場合は、通常は共有される一組のデータファイルに対して1つのインスタンスのみを実行する1つのRACノードに対する要求が、ユーザまたは顧客にサービスするために割当てられて構成され得る。
【0065】
いくつかの実施形態では、要求されるリソースがそこから割当てられるリソースプール530は、IaaSプロバイダによって管理されるハイパーバイザプールであり得る。いくつかの実施形態では、リソースプール530は、複数のリモートデータセンターにわたって分散している複数のリソースプールを含み得る。理解されるべきであるように、要求されたリソースの割当ておよび構成は、
図3および
図4に関して上記に詳述したように、トポロジ定義および配置ポリシーに基づいてさらに定義され得る。
【0066】
ステップ655において、ユーザアカウント履歴およびリソースプールは、要求可能なリソースに対するオーダーまたはサービスサブスクリプションから実現される変更を示すように更新され得る。たとえば、ユーザアカウント履歴560は、リソース要求履歴570において要求可能なリソースがユーザに割当てられたことを示すように更新され得る。ユーザのコントリビューションおよびオーダーまたはサブサービススクリプション履歴を追跡することによって、リソースマネージャ505は、ユーザがコントリビューション可能なリソースと交換に合意した要求可能なリソースを受信したか否かを追跡することができる。加えて、リソースプール530内のデータセンターインデックスおよび/またはリソースインデックスは、ユーザにサービスするために要求可能なリソースの割当てを示すように更新され得る。
【0067】
図8は、ユーザによって提供されるオーダーまたはサブサービススクリプションを用いるコントリビューションポリシーベースのリソース割当てのために実行される処理を表わす簡略化したフローチャート700を表わす。ステップ705において、1つ以上の要求可能なリソースと交換に1つ以上のリソースをコントリビューションするオファーを含むオーダーまたはサービスサブスクリプションが受信され得る。たとえば、上述のように、リソース提出インターフェイス510はオーダーまたはサービスサブスクリプションをユーザコンピュータ540から受信し、オーダーまたはサービスサブスクリプションをポリシーマネージャ525に転送し得る。オーダーまたはサービスサブスクリプションは、リソースマネージャ505によって管理されるリソースのプールにコントリビューションすることをユーザが意図しているローカルリソース550Aおよび/またはリモートリソース550Bなどのように、ユーザによって所有またはそうでなければ制御される1つ以上のリソースを規定し得る。加えて、リソース提出は、ユーザが使用するのに好まれる1つ以上の要求可能なリソースを規定し得る。いくつかの実施形態では、オーダーまたはサービスサブスクリプションは、1つ以上のコントリビューション可能なリソースがサービスすることが意図されている1人以上のユーザ、1つ以上の要求可能なリソースを提供し得る1人以上のユーザ(デフォルトはリソースプールであり得る)、および/または1つ以上の要求可能なリソースを提供し得る1つ以上の地理的領域をさらに特定し得る。
【0068】
ステップ710において、オファーが受付けられ得るか、拒絶され得るか、または無効にされ得る。たとえば、オーダーまたはサービスサブスクリプションは、コントリビューション可能なリソースの1つ以上のタイプを、ポリシーマネージャ525が受付け得る、拒絶し得る、または無効にし得る要求可能なリソースの1つ以上のタイプと交換するオファー(たとえば、
図7のステップ605および610に関して説明したのと同様のプロセスにおいてポリシーマネージャ525によって維持されるコントリビューションポリシーに基づく要求可能なリソースの1つ以上の他のタイプのカウンターオファー)を効果的に表わし得る。オーダーまたはサービスサブスクリプションの受付け、拒絶、または無効化は、コントリビューション可能なおよび/または要求可能なリソースを提供し得る1人以上のユーザから付与される許可、コントリビューション可能なおよび/または要求可能なリソースの可用性および/またはデマンド、コントリビューション可能なリソースのタイプと要求可能なリソースのタイプとの交換の同等性、ポリシーマネージャ525によって維持されるコントリビューションポリシーなどを含むがこれらに限定されるものではない多数の要因に基づいて、ポリシーマネージャ525によって決定され得る。
【0069】
ステップ715において、オファーが拒絶されると、オーダーまたはサービスサブスクリプションの拒絶がユーザに送信され得、プロセスが終了する。ステップ720において、オファーのカウンタオファーが出されると、1つ以上のコントリビューションポリシーに基づいてオーダーまたはサービスサブスクリプションを少なくとも一部満たしていると特定される要求可能なリソースの1つ以上の他のタイプがユーザに送信され得る。たとえば、リソース提出インターフェイス510は、
図7のステップ610および615に関して説明したのと同様のプロセスにおいて、要求可能なリソースの1つ以上の他のタイプをポリシーマネージャ525からユーザコンピュータ540に送信し得る。その後、プロセスは、
図7のステップ620〜655に関して説明したのと同様の態様で継続し得る。
【0070】
ステップ725において、オファーが受付けられると、オーダーまたはサービスサブスクリプションの受付けがユーザに送信され得る。たとえば上述のように、リソース提出インターフェイス510はオファーの受付けをポリシーマネージャ525から受信し、受付けをユーザコンピュータ540に転送し得る。ステップ730において、コントリビューションされている1つ以上のリソースへのアクセスおよび当該リソースに対する制御を提供するアクセスクレデンシャル(たとえばユーザ名およびパスワード)が受信され得る。たとえば、リソース提出インターフェイス510はアクセスクレデンシャルをユーザコンピュータ540から受信し、アクセスクレデンシャルをリソースマネージャ505に転送し得る。ステップ735において、ユーザアカウント履歴およびリソースプールは、オファーの受付けから実現される変更を示すように更新され得る。たとえば、ユーザアカウント履歴560は、コントリビューション履歴565において1つ以上の要求可能なリソースと交換にユーザによってコントリビューションされる1つ以上のリソースを示すように更新され得る。加えて、リソースプール530内のデータセンターインデックスおよび/またはリソースインデックスは、リソースマネージャ(たとえばサービスプロバイダによって管理される分散システム)の1人以上のユーザにサービスするためにコントリビューションされる1つ以上のリソースの可用性を示すように更新され得る。
【0071】
ステップ740において、オーダーまたはサービスサブスクリプションにおいて特定された1つ以上の要求されたリソースが割当てられ得る。たとえば、リソースマネージャ505は、ユーザにサービスするためにリソースプール530から1つ以上の要求されたリソースを割当て、1つ以上の要求されたリソースが割当てられたという確認メッセージを送信し得る。いくつかの実施形態では、リソースプール530はIaaSプロバイダによって管理されるハイパーバイザプールであり得る。いくつかの実施形態では、リソースプール530は、複数のリモートデータセンターにわたって分散している複数のリソースプールを含み得る。理解されるべきであるように、1つ以上の要求されたリソースの割当ては、
図3および
図4に関して上記に詳述したように、トポロジ定義および配置ポリシーに基づいてさらに定義され得る。
【0072】
ステップ745において、ユーザアカウント履歴およびリソースプールは、オーダーまたはサービスサブスクリプションの受付けから実現される変更を示すように更新され得る。たとえば、ユーザアカウント履歴560は、リソース要求履歴570において1つ以上の要求可能なリソースがユーザに割当てられたことを示すように更新され得る。ユーザのコントリビューションおよび要求履歴を追跡することによって、リソースマネージャ505は、ユーザが1つ以上のコントリビューション可能なリソースと交換に合意した1つ以上の要求可能なリソースを受信したか否かを追跡することができる。加えて、リソースプール530内のデータセンターインデックスおよび/またはリソースインデックスは、ユーザにサービスするために1つ以上の要求されたリソースの割当てを示すように更新され得る。
【0073】
上述のように、かつ
図6に示すように、リソースマネージャ505は、構成可能なコンピューティングリソース(たとえばネットワーク、ネットワーク帯域幅、サーバ、POD、処理、メモリ、ストレージ、アプリケーション、仮想マシン、サービス等)に対するデマンド、および構成可能なコンピューティングリソースの特定のセットに対するデマンドを追跡可能なデマンドモニタ575を含み得る。このような監視によって、リソースマネージャ505は、カスタマイズ可能なデマンドポリシーに基づいて、複雑な有線接続されたリソースセット/グループを予想して予め作成することができる。これは、管理者による介入を必要とせずに自動的に実行され得る。これによってセットアップ時間が減少し、セットアップ時間がほとんどないか全くなしでエンドユーザの要求に応答してエンドユーザが必要としている構成可能なコンピューティングリソース(すなわちリソース)を提供することによって、エンドユーザの体験が向上する。
【0074】
いくつかの実施形態では、デマンドポリシーはリソース同士の間の公知の従属に基づいて生成され得る。たとえば、第2のリソースも要求しなければ第1のリソースを使用できない場合は、いずれか一方のリソースに対する要求は他方に対する要求を自動的に含み得る。加えて、デマンドポリシーは公知の「トレンド」に基づき得る。たとえば、リソースのアップグレードまたは新たなリリースの発売が促進されている場合、リソースの新バージョンに対する要求の数が受信されるにつれ、予め作成されたリソースの旧バージョンの数は減少し得る。たとえば、あるアプリケーションの第1のバージョンは第1のリリースデータベースを必要とし得るのに対して、当該アプリケーションの第2のバージョンは第2のリリースデータベースを必要とし得る。アプリケーションの第2のバージョンが採用されると、アプリケーションの第2のバージョンからの要求またはジョブの数が増加することになる。このアクティビティが増加すると、アプリケーションと関連付けられているデマンドポリシーが、第2のリリースデータベースに対するデマンドの増加を示すように自動的に更新され得る。このデマンドポリシーが適用されると、データベースの第2のリリースのためのセットアップがデータベースの第1のリリースよりも優先され、利用可能な第2のリリースデータベースの数が徐々に増加する。いくつかの実施形態では、さらに、さまざまなリソースの新バージョンのリリース日を用いて、リソースの各バージョンがどれだけ予め作成されるかを自動的に更新することができる。
【0075】
いくつかの実施形態では、デマンドモニタによって計算されるリアルタイムデマンドを用いて、デマンドが増加しているリソースを予め作成することができる。たとえば、リソース要求の特定のパーセンテージがPODの特定のタイプを含む場合は、デマンドポリシーは、PODのその特定のタイプをより多く自動的に予め作成するように更新され得る。加えて、リソースの中には、特定の1セットのリソースが正確に機能することを要求するものもある。たとえば、アプリケーションスイートは、データベースおよびエンタープライズマネージャをさらに要求し得る。これらの公知の従属は、アプリケーションスイートが要求されると、従属リソースもアプリケーションスイートと通信するようにプロビジョニングおよび構成されるように、デマンドポリシーに格納され得る。いくつかの実施形態では、当該1セットのリソースはデマンドに基づいて動的に変化し得る。たとえば、リソースデマンドコリレータ595は、(たとえば追加のリソースを含むリソース要求のパーセンテージに基づいて)従属リソースに加えて規則的に要求される追加のリソースを特定し得る。これらの実施形態では、デマンドポリシーはこれらの追加のリソースを含むように動的に更新され得る。ともに用いられるリソースのグループに対するデマンドを監視することによって、デマンドポリシーは個々のリソースの代わりにリソースのセットを予め作成し、ユーザが要求したときにリソースをセットアップするのに必要な時間を減少させることができる。
【0076】
いくつかの実施形態では、既存のリソースのライフサイクルは、現在のデマンドおよびリソース使用に基づいて同様に管理され得る。リソースがもはや使用されていない場合、当該リソースは典型的にリソースマネージャによってクリーンにされてリソースプールに戻される。リソースがもはや使用されていないときを決定することは、使用(たとえば、どれほど頻繁に当該リソースが使用されるか)またはヘルス(たとえば、他のリソースが当該リソースに接続可能か、当該リソースが一杯であるか、等)に基づき得る。使用の欠如、または故障は、リソースに対するクリーンアップまたはメンテナンスアクションをもたらし得る。しかし、使用されていないリソースについてのこの追加のクリーンアップステップは不要であり、需要のあるリソースにとっては時間が掛かる。特定のリソースの利用期間/トレンドを追跡することによって、リソースマネージャはリソースがこれまでに使用されたことがあるか否かを判断することができる。たとえば、ストレージノードが作成されているが、当該ノードにデータが格納されたことがない、または当該ノードからデータが取出されたことがない場合は、リソースマネージャは当該リソースは使用されていないと判断することができ、当該リソースを最初にクリーンにすることなく当該リソースを他のユーザが利用できるようにすることができる。
【0077】
図9は、本発明の実施形態に係るデマンドポリシーベースのリソース割当てのために実行される処理を表わす簡略化したフローチャート800を表わす。ステップ805において、サービスのオーダーまたはサブスクリプションがインターセプトまたは受信され得る。たとえば
図6に関して上述したように、デマンドモニタ575は要求インターセプタ580を用いてリアルタイムでオーダーをインターセプトまたは受信した後に、リソースマネージャ505におけるさらに他の処理のために当該オーダーをパスし得る。いくつかの実施形態では、オーダーは非リアルタイム処理のためにバッチで周期的にデマンドモニタ575に送信され得る。ステップ810において、オーダーをパースして、1つ以上の要求されたリソース、リクエスタ、および他の要求データ(たとえば要求時間)を含む要求データを特定することができる。たとえば、要求パーサ583はオーダー(すなわち入力データ)を受け、オーダー内に要求データ(たとえば1つ以上の要求されたリソース、リクエスタ、および他の要求データ)の構造表現を提供するデータ構造(たとえばパースツリーまたは他の階層構造)を構築し得、これによってパターンマッチングおよびデータの抽出が可能になる。
【0078】
ステップ815において、要求データはアグリゲート履歴データ構造に追加され得る。たとえば、オーダーからの要求データの構造表現を提供するデータ構造が、リソースプール内のリソースについての要求データのアグリゲートを含むアグリゲート履歴データ構造585に追加され得る。アグリゲート履歴データ構造585は、サービスに対する以前にパースされた任意の数のオーダーまたはサブスクリプションからのデータ構造を含む。各オーダーは、オーダーが受信されるとタイムスタンプされ得、アグリゲート履歴データ構造585はリソース、リクエスタ、または他の要求データによってソートされ得る。ステップ820において、所与のリソース(たとえばオーダーにおいて要求されたリソースまたはリソースプール内の任意のリソース)に対して、リソースプール内のリソースについての要求データのアグリゲートから取得される現在の要求ボリュームを用いて、当該所与のリソースに対するリアルタイムデマンドが計算され得る。たとえば、特定の期間(ローリング平均、履歴期間など)において、所与のリソースを含むオーダーのパーセンテージが、リアルタイムデマンドカルキュレータ590およびアグリゲート履歴データ構造585を用いて決定され得る。加えて、オーダーのパーセンテージは、リアルタイムデマンドカルキュレータ590およびアグリゲート履歴データ構造585を用いて、リソースプール内の他のリソースに相対的な所与のリソースについて計算されたリアルタイムデマンドと相関付けられ得る。
【0079】
ステップ825において、ステップ805で受信したオーダーは、要求データの少なくとも1つのコンポーネントが、当該オーダーと、サービスに対する以前にパースされたオーダーまたはサブスクリプションからの少なくとも1つの他のオーダーとの間で同一であることに基づいて、当該少なくとも1つの他のオーダーと相関付けられ得る。たとえば、リソースデマンドコリレータ595は、同一のユーザが2つ以上のオーダーを提出したことに基づいて、当該オーダー同士の間の相関を決定し得る(たとえば、アプリケーションスイートを要求するユーザについては、当該ユーザはデータベースを同時にまたは後で要求するため、リソースデマンドコリレータ595はデータベースをアプリケーションスイートと相関付け得る)。オーダーは、リクエスタもしくはユーザ、リソース要求が取得された特定の時間帯、要求されたリソースのタイプ、および/またはその他のデータを含むアグリゲートデータ構造から取得可能な任意の数のデータコンポーネントに基づいて、少なくとも1つの他のオーダーと相関付けられ得る。ステップ830において、相関付けられたオーダーに基づいて、複数のユーザにわたって一般に要求されるリソースのセットが特定され得る。たとえば、デマンドモニタ575は、一次リソース(たとえばアプリケーションスイート)が要求されると、従属リソース(たとえばデータベース)も一次リソースと通信するようにプロビジョニングおよび構成されるように、相関付けられたオーダーに基づいて、1セットのリソースとしてのリソース同士の間の公知の従属を特定して格納し得る。いくつかの実施形態では、当該1セットのリソースは、ステップ820からのリソースに対して計算されたリアルタイムデマンドに基づいて動的に変化し得る。たとえば、リソースデマンドコリレータ595は、一次および従属リソースに加えて定期的に要求される追加のリソースを(たとえば一次リソース、従属リソース、および追加のリソースを含むオーダーのパーセンテージに基づいて)特定し得る。これらの実施形態では、特定されて格納されたリソースのセットは、これらの追加のリソースを含むように自動的に更新され得る。
【0080】
図10は、本発明の実施形態に係るデマンドポリシーベースのリソース割当てのために実行される処理を表わす簡略化したフローチャート850を表わす。ステップ855において、リソースプール内の各リソースの利用が追跡され得る。たとえば、特定の期間(ローリング平均、履歴期間など)において、リソースプール530、リアルタイムデマンドカルキュレータ590、およびアグリゲート履歴データ構造585を用いて、各リソースの使用が決定され得る。特定のリソースの利用期間/トレンドを追跡することによって、リソースマネージャ505は、リソースがこれまでに使用されたことがあるか否か、リソースが最近使用されたか否か、リソースの使用の頻度、および/またはリソースが現在使用されているか否かを判断することができる。
【0081】
ステップ860において、(i)(
図9のステップ820で計算された)計算されたリソースに対するデマンド、(ii)(
図9のステップ830で特定された)特定されたリソースおよびリソースのセット、(iii)(
図9のステップ830で任意に特定された)リソースのセットに対する追加のリソースの特定、および(iv)(
図10のステップ855で特定された)追跡されたリソースの利用、の少なくとも1つに基づいて、1つ以上のデマンドポリシーが生成または更新され得る。いくつかの実施形態では、リソースがリソースマネージャ505によってプリエンプティブに作成されてリソースプールに追加され得るように、デマンドモニタ575によって計算されたリアルタイムデマンドを使用して、リソース割当てに対する1つ以上のデマンドポリシーを生成または更新することができる。たとえば、リソース要求の特定のパーセンテージが1つ以上の二次リソースを含む場合は、デマンドポリシーは、二次リソースの1つ以上の追加のインスタンスを自動的に予め作成するように更新され得、または、1つ以上のリソースを要求する新たなアプリケーションスイートが導入されている場合は、デマンドポリシーは、1つ以上のリソースのより多くのインスタンスを自動的に予め作成するように更新され得る。
【0082】
加えて、いくつかの実施形態では、デマンドモニタ575は、一次リソースが要求されると、従属リソース(たとえばデータベース)も一次リソースと通信するようにプロビジョニングおよび構成されるように、相関付けられたリソース要求に基づいて1つ以上のデマンドポリシーにおいて1セットのリソースとしてのリソース同士の間の公知の従属を特定して格納し得る。たとえば、アプリケーションスイートは、データベースおよびエンタープライズマネージャをさらに必要し得る。これら公知の従属は、アプリケーションスイートが要求されると、データベースおよびエンタープライズマネージャもアプリケーションスイートと通信するようにプロビジョニングおよび構成されるように、デマンドポリシーに格納され得る。いくつかの実施形態では、特定された1セットのリソースは、リソースに対して計算されたデマンドに基づいて動的に変化し得る。たとえば、リソースデマンドコリレータ595は、従属リソースに加えて定期的に要求される追加のリソースを特定し得る。これらの実施形態では、デマンドポリシーはこれらの追加のリソースを含むように自動的に更新され得る。ともに使用されるリソースのグループに対するデマンドを監視することによって、デマンドポリシーを使用してリソースのセットをプリエンプティブに作成し、リソースを互いに通信するように構成し、リソースを個々のリソースの代わりにリソースプールに追加することによって、ユーザが要求したときにリソースをセットアップするのに必要な時間を減少させることができる。
【0083】
加えて、いくつかの実施形態では、デマンドモニタ575は、一度も使用されていないリソース、最近使用されたリソース、各リソースの使用の頻度、および/またはリソースが現在使用されているか否か、を特定し、1つ以上のデマンドポリシーを生成または更新して、そのような利用情報に基づいてリソースの割当てを制御することができる。たとえば、リソースが作成されているが、ユーザが当該リソースに一度もアクセスしたことがない場合は、リソースマネージャ905は当該リソースは使用されていないと判断することができ、当該リソースは、当該リソースを最初にクリーンにすることなく、1つ以上のデマンドポリシーに基づいて他のユーザに再割当てされ得る。一方、リソースが作成されているが、ユーザが当該リソースに予め定められた期間(たとえば2ヶ月)アクセスしていない場合は、リソースマネージャ905は当該リソースはもはや使用されていないと判断することができ、当該リソースは、当該リソースをクリーンにした後に、1つ以上のデマンドポリシーに基づいて他のユーザに再割当てされ得る。
【0084】
ステップ865において、1つ以上のリソースが自動的に予め作成され(プリエンプティブに作成され)、リソースプールに追加され、リソースプールから除去され、および/または生成もしくは更新された1つ以上のデマンドポリシーに基づいてクリーンにされ得る。たとえば、リソースマネージャ505は、1つ以上のリソースを自動的に予め作成し、生成または更新された1つ以上のデマンドポリシーに基づいて、予め作成された1つ以上のリソースを1人以上のユーザにサービスするためにリソースプールに追加し得る。いくつかの実施形態では、リソースマネージャ505は、生成または更新された1つ以上のデマンドポリシーに基づいて、リソースプールから1つ以上のリソースを自動的に除去し得る。他の実施形態では、リソースマネージャ505は、生成または更新された1つ以上のデマンドポリシーに基づいて、リソースプール内の1つ以上のリソースを自動的にクリーンにし得る。
【0085】
ステップ870において、1つ以上のデマンドポリシーと関連付けられている1つ以上の要求されたリソースが1人以上のユーザに割当てられ得る。たとえば、リソースマネージャ505は、1つ以上のデマンドポリシーに基づいて、1人以上のユーザにサービスするためにリソースプールから1つ以上の要求されたリソースを割当て、1つ以上の要求されたリソースが割当てられたという確認メッセージを送信し得る。いくつかの実施形態では、リソースプールはIaaSプロバイダによって管理されるハイパーバイザプールであり得る。いくつかの実施形態では、リソースプールは、複数のリモートデータセンターにわたって分散している複数のリソースプールを含み得る。理解されるべきであるように、1つ以上の要求されたリソースの割当ては、
図1〜
図8に関して上記に詳述したように、トポロジ定義、配置ポリシー、およびコントリビューションポリシーに基づいてさらに定義され得る。ステップ875において、ユーザアカウント履歴およびリソースプールは、1つ以上のデマンドポリシーの利用から実現される変更を示すように更新され得る。たとえば、データセンターインデックス、リソースインデックス、および/またはユーザアカウント履歴560は、予め作成された、および/または1人以上のユーザに割当てられた1つ以上の要求されたリソースを示すように更新され得る。
【0086】
いくつかの実施形態では、配置ポリシーベースの、コントリビューションポリシーベースの、およびデマンドポリシーベースのリソース管理および割当てを提供するための上述のシステムおよびプロセスは単一のリソースマネージャにおいて実現され得る。
図11は、本発明の実施形態を組込むことができるネットワーク環境900の簡略化した高レベルのダイアグラムを表わす。
図11に示されるように、リソースマネージャ905(たとえば、それぞれ
図2、
図4および
図6に関して上述したリソース管理システム105またはリソースマネージャ305;505)はユーザ910および915からの要求を管理し得る。これらの要求はユーザ910からのリソースコントリビューション提出を含み得、ユーザは、当該ユーザが所有、保有またはそうでなければ制御する1つ以上のリソースを、リソースプールに追加されるようにリソースマネージャ905が利用可能であるようにする。当該要求は、リソースプールからの1つ以上のリソースに対するユーザ915からのリソース要求をさらに含み得る。ユーザ910およびユーザ915は同一のユーザ、異なるユーザ、またはこれらの任意の組み合わせを含み得る。要求は、ネットワーク920Aおよび/または920B上でリソースマネージャ905において1人以上のユーザ(またはクライアント)デバイスから受信され得る。いくつかの実施形態では、ユーザ910は、上述のように、その後のまたは同時のリソース要求に適用され得る特定の機能の保証、ディスカウント、または他のインセンティブと交換にリソースをコントリビューションし得る。
【0087】
ユーザ910および915は、通信ネットワーク920Aおよび920Bを介してリソースマネージャ905に通信可能に結合されている。
図11に表わされる実施形態は例に過ぎず、本発明の請求項の実施形態を不当に制限するよう意図されるものではない。当業者は、多くの変形例、代替例、および変更例を認識するであろう。たとえば、
図11に示すよりも多いまたは少ないユーザデバイスが存在していてもよい。ユーザデバイスは、パーソナルコンピュータ、デスクトップ、ラップトップ、携帯電話、タブレット等のモバイルまたはハンドヘルドデバイス、および他の種類のデバイスを含むがこれらに限定されるものではないさまざまな異なる種類であり得る。通信ネットワーク920Aおよび920Bは、ユーザデバイスとリソースマネージャ905との間の通信を容易にする。通信ネットワーク920Aおよび920Bはさまざまな種類であり得、1つ以上の通信ネットワークを含み得る。通信ネットワーク920Aおよび920Bの例としては、インターネット、広域ネットワーク(WAN)、ローカルエリアネットワーク(LAN)、イーサネット(登録商標)ネットワーク、パブリックまたはプライベートネットワーク、有線ネットワーク、無線ネットワーク、およびそれらの組み合わせが挙げられるがこれらに限定されるものではない。IEEE802.XXプロトコルスイート、TCP/IP、SAN、Apple Talk、Bluetooth(登録商標)、および他のプロトコルなどの有線および無線プロトコルの双方を含む異なる通信プロトコルを用いて当該通信を容易にしてもよい。一般に、通信ネットワーク920Aおよび920Bは、クライアントとリソースマネージャ905との間の通信を容易にする任意の通信ネットワークまたはインフラストラクチャを含み得る。
【0088】
ユーザ910の各々は、1つ以上のコンピューティングリソース925−1から925−Mを所有、保有またはそうでなければ制御し得る。たとえば、ユーザは、当該ユーザが制御し得る別のクラウドインフラストラクチャプロバイダから特定の数のコンピューティングノードを購入済の場合がある。同様に、ユーザは、1つ以上の仮想マシンを実行し得るハイパーバイザプールを提供するように構成されるネットワーク接続されたハードウェアクラスタを所有している場合がある。上述のように、コンピューティングリソースは、ネットワーク、ネットワーク帯域幅、サーバ、POD、処理、メモリ、ストレージ、アプリケーション、仮想マシン、サービス等を含み得る。
【0089】
特定の実施形態では、ユーザは、当該ユーザのユーザデバイスによって実行されるプログラムまたはアプリケーションを用いてウェブページ要求を構成し得る。そのようなプログラムの例には、ウェブページ要求を生成し、当該要求に応答して受信したウェブページを出力するように用いられ得るウェブブラウザがある。たとえば、ユーザは、ウェブページに対応する統一資源位置指定子(URL)をブラウザに提供することによって、またはウェブページに対応するURLを呼出すアクションを取る(たとえばURL上をクリックする)ことによって、ウェブページを要求し得る。これによってブラウザはウェブページ要求を生成し、次いで、この要求は特定のウェブページをホストするウェブサイトに通信される。次いで、ウェブページ要求に応答して受信されたウェブページは、ブラウザによってロードされてユーザに出力される。ブラウザの例として、さまざまなバージョンのWindows Internet Explorer(IE)、Apple Safari、Google Chrome、Mozilla Firefox、Operaなどが挙げられるが、これらに限定されるものではない。
【0090】
上述のように、ユーザ910は、ユーザによってコントリビューションされているコンピューティングリソースを詳述するリソース提出をリソースマネージャ905に提出し得る。リソースマネージャ905は、リソース提出インターフェイス930を介して提出を受信し得る。ユーザ915は、ユーザが要求しているコンピューティングリソースを詳述するリソース要求をリソースマネージャ905に提出し得る。リソースマネージャ905は、リソース要求インターフェイス955を介して要求を受信し得る。リソースマネージャ905は、ポリシーマネージャ935、デマンドモニタ940、リソースプール945、およびユーザアカウント履歴950を含み得る。これらのモジュールを用いて、
図4および
図6に関して同様に説明したように、リソースマネージャ905は、
図1〜
図10に関して上述したように、デマンドを予想してリソースおよびリソースのセットを予め作成し、リソースコントリビューションおよび要求を管理し、ユーザがリソース要求に対する配置ポリシーを規定することを可能にし得る。ユーザ915および910によって提供された、かつユーザ915および910に提供されたリソースおよびリソースのセットは、異なる地理的領域965Aおよび965B内に位置し得る1つ以上のデータセンター960A〜960I内に位置し得る。
【0091】
図1〜
図11に表わされる実施形態では、リソースマネージャ905は、ユーザ910および915からリソース提出およびリソース要求を受信する中央管理プラットフォームの役割を果たし得る。
図12は、本発明の教示を組込むことができる代替的な実施形態970を表わす。
図11における共通のコンポーネントは同一の参照番号を用いて参照される。
図12に表わされる実施形態に示されるように、リソース管理機能および要求管理機能は互いに分離され得る。要求マネージャ975は、リソース提出インターフェイス930およびリソース要求インターフェイス955を含み得る。要求マネージャ975はさらに、
図1〜
図11に関して上述した実施形態と実質的に同様に要求を分析するデマンドモニタ940と、ユーザアカウント履歴950とを含み得る。要求マネージャ975は、リソースおよび/またはコントリビューション要求をリソースマネージャ905に通信し得る。リソースマネージャ905はポリシーマネージャ935およびリソースプール945を含み得る。リソースマネージャ905は、要求マネージャ975から受信したメッセージに従ってデータセンター960A〜960Iと通信し得る。
【0092】
図13は、実施形態を実現するための分散システム1000の簡略化したダイアグラムを表わす。示される実施形態では、分散システム1000は、1つ以上のネットワーク1010上でウェブブラウザ、プロプライエタリクライアント(たとえばオラクルフォームズ(Oracle Forms))などのクライアントアプリケーションを実行および操作するように構成された1つ以上のクライアントコンピューティングデバイス1002、1004、1006、および1008を含む。サーバ1012は、ネットワーク1010を介して遠隔のクライアントコンピューティングデバイス1002、1004、1006、および1008と通信可能に連結され得る。
【0093】
さまざまな実施形態において、サーバ1012は、配置、コントリビューション、および/またはデマンドポリシーベースのリソース割当てのためのサービスおよびアプリケーションなどの1つ以上のサービスまたはソフトウェアアプリケーションを実行するように適合され得る。特定の実施形態では、サーバ1012はまた、非仮想および仮想環境を含み得るその他のサービスまたはソフトウェアアプリケーションを提供し得る。いくつかの実施形態では、これらのサービスは、クライアントコンピューティングデバイス1002、1004、1006、および/または1008のユーザに対して、ウェブベースのもしくはクラウドサービスとして、またはSaaSモデルの下で供給され得る。クライアントコンピューティングデバイス1002、1004、1006、および/または1008を操作するユーザは次に、1つ以上のクライアントアプリケーションを利用してサーバ1012と対話することにより、これらのコンポーネントが提供するサービスを利用し得る。
【0094】
図13に表わされる構成では、システム1000のソフトウェアコンポーネント1018、1020および1022は、サーバ1012上に実装されるものとして示されている。他の実施形態では、システム1000の上記コンポーネントおよび/またはこれらのコンポーネントが提供するサービスのうちの1つ以上が、クライアントコンピューティングデバイス1002、1004、1006、および/または1008のうちの1つ以上によって実装されてもよい。そうすると、クライアントコンピューティングデバイスを操作するユーザは、クライアントアプリケーションのうちの1つ以上を用いて、これらのコンポーネントが提供するサービスを利用することができる。これらのコンポーネントは、ハードウェア、ファームウェア、ソフトウェア、またはこれらの組み合わせで実装されてもよい。分散システム1000とは異なり得る多種多様なシステム構成が可能であるということが認識されるべきである。
図13に示される実施形態はしたがって、ある実施形態のシステムを実現するための分散システムの一例であって、限定的であるよう意図されるものではない。
【0095】
クライアントコンピューティングデバイス1002、1004、1006、および/または1008は、さまざまな種類のコンピューティングシステムを含み得る。たとえば、クライアントコンピューティングデバイスは、Microsoft Windows Mobile(登録商標)等のソフトウェア、および/またはiOS、Windows Phone、Android(登録商標)、BlackBerry(登録商標) 10、Palm OS等のさまざまなモバイルオペレーティングシステムを実行する、ポータブルハンドヘルドデバイス(たとえばiPhone(登録商標)、携帯電話、iPad(登録商標)、計算タブレット、携帯情報端末(PDA))またはウェアラブルデバイス(たとえばGoogle Glass(登録商標)ヘッドマウントディスプレイ)を含み得る。これらの装置は、さまざまなインターネット関連アプリケーション、電子メール、ショートメッセージサービス(SMS)アプリケーション等のさまざまなアプリケーションをサポートし得るものであり、かつその他のさまざまな通信プロトコルを使用し得る。また、クライアントコンピューティングデバイスは、例として、さまざまなバージョンのMicrosoft Windows(登録商標)、Apple Macintosh(登録商標)および/またはLinux(登録商標)オペレーティングシステムを実行するパーソナルコンピュータおよび/またはラップトップコンピュータを含む、汎用パーソナルコンピュータを含み得る。クライアントコンピューティングデバイスは、たとえばGoogle Chrome OS等の、さまざまなGNU/Linuxオペレーティングシステムを含むがこれらに限定されるものではないさまざまな市販のUNIX(登録商標)またはUNIXのようなオペレーティングシステムのうちのいずれかを実行するワークステーションコンピュータであってもよい。また、クライアントコンピューティングデバイスは、ネットワーク1010上で通信可能な、シンクライアントコンピュータ、インターネット接続可能なゲームシステム(たとえばKinect(登録商標)ジェスチャー入力装置を備えたもしくは備えていないMicrosoft Xboxゲーム機)、および/またはパーソナルメッセージングデバイス等の電子機器を含み得る。
【0096】
図13の分散システム1000は4つのクライアントコンピューティングデバイスとともに示されているが、任意の数のクライアントコンピューティングデバイスがサポートされ得る。センサ等を有する装置といったその他の装置がサーバ1012と対話してもよい。
【0097】
分散システム1000内のネットワーク1010は、TCP/IP(伝送制御プロトコル/インターネットプロトコル)、SNA(システムネットワークアーキテクチャ)、IPX(インターネットパケット交換)、Apple Talk等を含むがこれらに限定されるものではない、利用可能なさまざまなプロトコルのうちのいずれかを用いてデータ通信をサポートすることができる、当業者にはよく知られているいずれかの種類のネットワークであればよい。ほんの一例として、ネットワーク1010は、ローカルエリアネットワーク(LAN)、イーサネットに基づくネットワーク、トークンリング、広域ネットワーク、インターネット、仮想ネットワーク、仮想プライベートネットワーク(VPN)、イントラネット、エクストラネット、公衆交換電話網(PSTN)、赤外線ネットワーク、無線ネットワーク(たとえば、米国電気電子技術者協会(IEEE)1002.11プロトコルスイートのうちのいずれか、Bluetooth(登録商標)、および/またはその他いずれかの無線プロトコルの下で機能するネットワーク)、および/またはこれらの組み合わせ、および/またはその他のネットワークであってもよい。
【0098】
サーバ1012は、1つ以上の汎用コンピュータ、専用サーバコンピュータ(一例として、PC(パーソナルコンピュータ)サーバ、UNIX(登録商標)サーバ、ミッドレンジサーバ、メインフレームコンピュータ、ラックマウント式サーバ等を含む)、サーバファーム、サーバクラスタ、またはその他いずれかの適切な構成および/または組み合わせで構成されていてもよい。サーバ1012は、仮想オペレーティングシステムまたは仮想化を伴うその他の計算アーキテクチャを実行する1つ以上の仮想マシンを含み得る。論理記憶装置の1つ以上のフレキシブルプールを仮想化することによって、サーバのための仮想記憶装置を維持することができる。仮想ネットワークは、サーバ1012がソフトウェア定義ネットワーキングを用いて制御することができる。さまざまな実施形態において、サーバ1012は、これまでの開示において説明した1つ以上のサービスまたはソフトウェアアプリケーションを実行するように適合されていてもよい。たとえば、サーバ1012は、本開示のある実施形態に従う上記処理を実行するためのサーバに対応していてもよい。
【0099】
サーバ1012は、上記のうちのいずれかを含むオペレーティングシステムおよび市販のいずれかのサーバオペレーティングシステムを実行し得る。サーバ1012はまた、HTTP(ハイパーテキストトランスポートプロトコル)サーバ、FTP(ファイル転送プロトコル)サーバ、CGI(コモンゲートウェイインターフェイス)サーバ、JAVA(登録商標)サーバ、データベースサーバ等を含む、さまざまなその他のサーバアプリケーションおよび/またはミッドティアアプリケーションのうちのいずれかを実行し得る。代表的なデータベースサーバは、オラクル、マイクロソフト、サイベース、IBM(International Business Machines)等から市販されているものを含むが、これらに限定されるものではない。
【0100】
いくつかの実装例において、サーバ1012は、クライアントコンピューティングデバイス1002、1004、1006、および1008のユーザから受信したデータフィードおよび/またはイベントアップデートを分析し集約するための1つ以上のアプリケーションを含み得る。一例として、データフィードおよび/またはイベントアップデートは、センサデータアプリケーション、株式相場表示機、ネットワーク性能測定ツール(たとえばネットワークモニタリングおよびトラフィック管理アプリケーション)、クリックストリーム分析ツール、自動車交通量モニタリング等に関連するリアルタイムイベントを含み得る、1つ以上の第三者情報源および連続データストリームから受信した、Twitter(登録商標)フィード、Facebook(登録商標)アップデートまたはリアルタイムアップデートを含み得るが、これらに限定されるものではない。また、サーバ1012は、クライアントコンピューティングデバイス1002、1004、1006、および1008の1つ以上の表示装置を介してデータフィードおよび/またはリアルタイムイベントを表示するための1つ以上のアプリケーションを含み得る。
【0101】
分散システム1000はまた、1つ以上のデータベース1014および1016を含み得る。これらのデータベースは、本発明の実施形態によって使用されるユーザ要求および/またはコントリビューション履歴、デマンドポリシーベースのリソース相関情報、ポリシー定義、およびその他の情報等の情報を格納するためのメカニズムを提供し得る。データベース1014および1016はさまざまな場所に存在し得る。例として、データベース1014および1016のうちの1つ以上が、サーバ1012にローカルな(および/または存在する)非一時的な記憶媒体上にあってもよい。これに代えて、データベース1014および1016は、サーバ1012から遠隔の場所にあってネットワークベースのまたは専用接続を介してサーバ1012と通信してもよい。一組の実施形態において、データベース1014および1016は、ストレージエリアネットワーク(SAN)にあってもよい。同様に、サーバ1012から発生する機能を実行するために必要な任意のファイルは、適宜サーバ1012にローカルに格納されていてもよくおよび/または遠隔場所に格納されてもよい。一組の実施形態において、データベース1014および1016は、SQLフォーマットのコマンドに応じてデータを格納、更新、および取出すように適合された、オラクルが提供するデータベース等のリレーショナルデータベースを含み得る。
【0102】
いくつかの実施形態では、クラウド環境は、配置、コントリビューション、および/またはデマンドポリシーベースのリソース割当てのための1つ以上のサービスを提供し得る。
図14は、本開示の実施形態に従う、サービスがクラウドサービスとして供給され得るシステム環境1100の1つ以上のコンポーネントの簡略化したブロックダイアグラムである。
図14に示される実施形態では、システム環境1100は、配置、コントリビューション、および/またはデマンドポリシーベースのリソース割当てのためのサービスを含むクラウドサービスを提供するクラウドインフラストラクチャシステム1102と対話するためにユーザによって使用され得る1つ以上のクライアントコンピューティングデバイス1104、1106、および1108を含む。クラウドインフラストラクチャシステム1102は、サーバ1012について上述したものを含み得る1つ以上のコンピュータおよび/またはサーバを含み得る。
【0103】
図14に表わされるクラウドインフラストラクチャシステム1102は、表わされるもの以外の他のコンポーネントを有していてもよいということが認識されるべきである。さらに、
図14に示される実施形態は、本発明の実施形態を組込むことができるクラウドインフラストラクチャシステムの一例に過ぎない。いくつかの他の実施形態では、クラウドインフラストラクチャシステム1102は、図に示されるものよりも多いもしくは少ないコンポーネントを有していてもよく、2つ以上のコンポーネントを組み合わせてもよく、またはコンポーネントの異なる構成もしくは配置を有していてもよい。
【0104】
クライアントコンピューティングデバイス1104、1106、および1108は、クライアントコンピューティングデバイス1002、1004、1006、および1008についての上述のものと同様のデバイスであり得る。クライアントコンピューティングデバイス1104、1106、および1108は、ウェブブラウザ、プロプライエタリクライアント(たとえばオラクルフォームズ)等のクライアントアプリケーション、または何らかの他のアプリケーションを操作するように構成され得、クライアントコンピューティングデバイスのユーザは当該アプリケーションを使用してクラウドインフラストラクチャシステム1102と対話することにより、クラウドインフラストラクチャシステム1102が提供するサービスを使用し得る。例示的なシステム環境1100が3つのクライアントコンピューティングデバイスとともに示されているが、任意の数のクライアントコンピューティングデバイスがサポートされ得る。センサ等を有する装置といったその他の装置がクラウドインフラストラクチャシステム1102と対話してもよい。
【0105】
ネットワーク1110は、クライアントコンピューティングデバイス1104、1106、および1108とクラウドインフラストラクチャシステム1102との間でのデータの通信および交換を容易にし得る。各ネットワークは、ネットワーク1010について上述したものを含むさまざまな市販のプロトコルのうちのいずれかを用いてデータ通信をサポートすることができる、当業者にはよく知られているいずれかの種類のネットワークであればよい。
【0106】
特定の実施形態では、クラウドインフラストラクチャシステム1102が提供するサービスは、クラウドインフラストラクチャシステムのユーザがオンデマンドで利用できるようにされる多数のサービスを含み得る。配置、コントリビューション、および/またはデマンドポリシーベースのリソース割当てに関するサービスに加えて、オンラインデータストアおよびバックアップソリューション、ウェブベースの電子メールサービス、ホスト型オフィススイートおよび文書コラボレーションサービス、データベース処理、管理された技術サポートサービス等を含むがこれらに限定されるものではないさまざまな他のサービスも供給され得る。クラウドインフラストラクチャシステムが提供するサービスは、そのユーザのニーズを満たすよう動的にスケーリング可能である。
【0107】
特定の実施形態では、クラウドインフラストラクチャシステム1102が提供するサービスの具体的なインスタンス化は、本明細書では「サービスインスタンス」と称され得る。一般に、クラウドサービスプロバイダのシステムからインターネット等の通信ネットワークを介してユーザが利用できるようにされるサービスはいずれも、「クラウドサービス」と称される。典型的に、パブリッククラウド環境では、クラウドサービスプロバイダのシステムを構成するサーバおよびシステムは、ユーザ自身のオンプレミスサーバおよびシステムとは異なる。たとえば、クラウドサービスプロバイダのシステムは、アプリケーションをホストし得、ユーザは、インターネットなどの通信ネットワークを介してオンデマンドで当該アプリケーションをオーダーし、使用し得る。
【0108】
いくつかの例では、コンピュータネットワーククラウドインフラストラクチャにおけるサービスは、クラウドベンダによってユーザに提供されるかまたはそうでなければ当該技術分野において公知のストレージ、ホスト型データベース、ホスト型ウェブサーバ、ソフトウェアアプリケーション、または他のサービスへの保護されたコンピュータネットワークアクセスを含み得る。たとえば、サービスは、インターネットを通した、クラウド上の遠隔記憶域に対する、パスワードで保護されたアクセスを含み得る。別の例として、サービスは、ネットワーク接続された開発者の私的使用のためのウェブサービスベースのホスト型リレーショナルデータベースおよびスクリプト言語ミドルウェアエンジンを含み得る。別の例として、サービスは、クラウドベンダのウェブサイト上でホストされる電子メールソフトウェアアプリケーションへのアクセスを含み得る。
【0109】
特定の実施形態では、クラウドインフラストラクチャシステム1102は、セルフサービスの、サブスクリプションベースの、弾性的にスケーラブルな、信頼性のある、高可用性の、安全な態様でユーザに与えられる一連のアプリケーション、ミドルウェアおよびデータベースサービス提供品を含み得る。このようなクラウドインフラストラクチャシステムの一例は、本譲受人によって提供されるオラクルパブリッククラウド(Oracle Public Cloud)である。
【0110】
クラウドインフラストラクチャシステム1102はさらに、「ビッグデータ(big data)」関連の計算および分析サービスを提供し得る。「ビッグデータ」という用語は一般に、大量のデータを視覚化し、トレンドを検出し、および/またはそうでなければデータと対話するために、分析者および研究者によって格納および処理され得る極めて大きいデータ集合を指すために用いられる。このビッグデータおよび関連のアプリケーションは、多くのレベルで、かつさまざまなスケールでインフラストラクチャシステムによってホストおよび/または処理されてもよい。平行にリンクされた何十、何百または何千ものプロセッサがこのようなデータに対して作用可能であり、これにより、このようなデータを表示し得るか、または、データに対する外力をシミュレートし得るかもしくはそれが表しているものをシミュレートし得る。これらのデータ集合は、データベースにおいて編成されたデータ、もしくは構造化モデルに従ったデータ、および/または、非構造化データ(たとえば電子メール、画像、データブロブ(バイナリ大型オブジェクト)、ウェブページ、複雑なイベント処理)などの、構造化データを含み得る。目標物に対してより多くの(またはより少数の)コンピューティングリソースを比較的迅速に集中させるために実施形態の機能を強化することにより、ビジネス、政府関係機関、研究組織、私人、同じ目的をもった個々人もしくは組織のグループ、または他のエンティティから、要求に基づいて大量のデータ集合上でタスクを実行するために、クラウドインフラストラクチャシステムがより良好に利用可能となり得る。
【0111】
さまざまな実施形態において、クラウドインフラストラクチャシステム1102は、クラウドインフラストラクチャシステム1102によって供給されるサービスへのユーザのサブスクリプションを自動的にプロビジョニング、管理および追跡するように適合され得る。クラウドインフラストラクチャシステム1102は、さまざまなデプロイメントモデルを介してクラウドサービスを提供し得る。たとえば、サービスはパブリッククラウドモデルの下で提供されてもよく、パブリッククラウドモデルでは、クラウドインフラストラクチャシステム1102が(たとえばオラクル社が所有する)クラウドサービスを販売する組織によって所有され、サービスは一般的な公営企業またはさまざまな産業企業が利用できるようにされる。別の例として、サービスはプライベートクラウドモデルの下で提供されてもよく、プライベートクラウドモデルでは、クラウドインフラストラクチャシステム1102が単一の組織のために単独で運営され、当該組織内の1つ以上のエンティティにサービスを提供することができる。また、クラウドサービスはコミュニティクラウドモデルの下で提供されてもよく、コミュニティクラウドモデルでは、クラウドインフラストラクチャシステム1102およびクラウドインフラストラクチャシステム1102によって提供されるサービスが関連のコミュニティの中のいくつかの組織によって共有される。また、クラウドサービスは、2つ以上の異なるモデルの組み合わせであるハイブリッドクラウドモデルの下で提供されてもよい。
【0112】
いくつかの実施形態では、クラウドインフラストラクチャシステム1102によって提供されるサービスは、SaaSカテゴリ、PaaSカテゴリ、IaaSカテゴリ、またはその他の、ハイブリッドサービスを含むサービスのカテゴリの下で提供される1つ以上のサービスを含み得る。ユーザは、サブスクリプションオーダーを介して、クラウドインフラストラクチャシステム1102によって提供される1つ以上のサービスをオーダーし得る。次いで、クラウドインフラストラクチャシステム1102は、ユーザのサブスクリプションオーダーにおけるサービスを提供するために処理を実行する。
【0113】
いくつかの実施形態では、クラウドインフラストラクチャシステム1102によって提供されるサービスは、アプリケーションサービス、プラットフォームサービスおよびインフラストラクチャサービスを含み得るが、これらに限定されるものではない。いくつかの例では、アプリケーションサービスは、SaaSプラットフォームを介してクラウドインフラストラクチャシステムによって提供されてもよい。SaaSプラットフォームは、SaaSカテゴリに分類されるクラウドサービスを提供するように構成され得る。たとえば、SaaSプラットフォームは、統合された開発およびデプロイメントプラットフォーム上で一連のオンデマンドのアプリケーションを構築および供給する機能を提供し得る。SaaSプラットフォームは、SaaSサービスを提供するための基本的なソフトウェアおよびインフラストラクチャを管理および制御し得る。SaaSプラットフォームによって提供されるサービスを利用することによって、ユーザは、クラウドインフラストラクチャシステム上で実行されるアプリケーションを利用することができる。ユーザは、ユーザが別個のライセンスおよびサポートを購入する必要なくアプリケーションサービスを取得することができる。さまざまな異なるSaaSサービスが提供されてもよい。例としては、大規模組織に販売実績管理、企業統合およびビジネスの柔軟性のためのソリューションを提供するサービスが挙げられるが、これらに限定されるものではない。
【0114】
いくつかの実施形態では、プラットフォームサービスは、PaaSプラットフォームを介してクラウドインフラストラクチャシステム1102によって提供されてもよい。PaaSプラットフォームは、PaaSカテゴリに分類されるクラウドサービスを提供するように構成され得る。プラットフォームサービスの例としては、共有される共通のアーキテクチャ上で既存のアプリケーションを(オラクルなどの)組織が集約することを可能にするサービス、および、プラットフォームによって提供される共有のサービスを活用する新たなアプリケーションを構築する能力が挙げられ得るが、これらに限定されるものではない。PaaSプラットフォームは、PaaSサービスを提供するための基本的なソフトウェアおよびインフラストラクチャを管理および制御し得る。ユーザは、ユーザが別々のライセンスおよびサポートを購入する必要なく、クラウドインフラストラクチャシステム1102によって提供されるPaaSサービスを取得することができる。プラットフォームサービスの例としては、オラクルJavaクラウドサービス(JCS)、オラクルデータベースクラウドサービス(DBCS)などが挙げられるが、これらに限定されるものではない。
【0115】
PaaSプラットフォームによって提供されるサービスを利用することによって、ユーザは、クラウドインフラストラクチャシステムによってサポートされるプログラミング言語およびツールを利用することができ、デプロイされたサービスを制御することもできる。いくつかの実施形態では、クラウドインフラストラクチャシステムによって提供されるプラットフォームサービスは、データベースクラウドサービス、ミドルウェアクラウドサービス(たとえばオラクルフュージョンミドルウェアサービス)、およびJavaクラウドサービスを含み得る。一実施形態では、データベースクラウドサービスは、組織がデータベースリソースをプールし、データベースクラウドの形態でデータベース・アズ・ア・サービスをユーザに供給することを可能にする共有のサービスデプロイメントモデルをサポートし得る。ミドルウェアクラウドサービスは、さまざまなビジネスアプリケーションを開発およびデプロイするためにユーザにプラットフォームを提供し得、Javaクラウドサービスは、クラウドインフラストラクチャシステムにおいてJavaアプリケーションをデプロイするためにユーザにプラットフォームを提供し得る。
【0116】
さまざまな異なるインフラストラクチャサービスは、クラウドインフラストラクチャシステムにおけるIaaSプラットフォームによって提供されてもよい。インフラストラクチャサービスは、ストレージ、ネットワークなどの基本的な計算リソース、ならびに、SaaSプラットフォームおよびPaaSプラットフォームによって提供されるサービスを利用するユーザのための他の基礎的な計算リソースの管理および制御を容易にする。
【0117】
また、特定の実施形態では、クラウドインフラストラクチャシステム1102は、クラウドインフラストラクチャシステムのユーザにさまざまなサービスを提供するために使用されるリソースを提供するためのインフラストラクチャリソース1130を含み得る。一実施形態では、インフラストラクチャリソース1130は、PaaSプラットフォームおよびSaaSプラットフォームによって提供されるサービスを実行するための、サーバ、ストレージおよびネットワーキングリソース、ならびに他のリソースなどの、ハードウェアの事前に一体化された最適な組み合わせを含み得る。
【0118】
いくつかの実施形態では、クラウドインフラストラクチャシステム1102におけるリソースは、複数のユーザによって共有され、デマンドごとに動的に再割当てされ得る。加えて、リソースは、異なる時間帯にユーザに割当てられ得る。たとえば、クラウドインフラストラクチャシステム1102は、第1の時間帯におけるユーザの第1の組が規定の時間にわたってクラウドインフラストラクチャシステムのリソースを利用することを可能にし、次いで、異なる時間帯に位置するユーザの別の組への同一のリソースの再割当てを可能にし、それによってリソースの利用を最大化することができる。
【0119】
特定の実施形態では、クラウドインフラストラクチャシステム1102によるサービスの提供を可能にするために、クラウドインフラストラクチャシステム1102の異なるコンポーネントまたはモジュールによって共有されるいくつかの内部共有サービス1132が提供され得る。これらの内部共有サービスは、セキュリティおよびアイデンティティサービス、統合サービス、企業リポジトリサービス、企業マネージャサービス、ウイルススキャンおよびホワイトリストサービス、高可用性・バックアップおよび回復サービス、クラウドサポートを可能にするためのサービス、電子メールサービス、通知サービス、ファイル転送サービスなどを含み得るが、これらに限定されるものではない。
【0120】
特定の実施形態では、クラウドインフラストラクチャシステム1102は、クラウドインフラストラクチャシステムにおけるクラウドサービス(たとえばSaaS、PaaSおよびIaaSサービス)の包括的管理を提供し得る。一実施形態では、クラウド管理機能は、クラウドインフラストラクチャシステム1102によって受信したユーザのサブスクリプションをプロビジョニング、管理および追跡するための機能などを含み得る。
【0121】
一実施形態では、
図14に表わされるように、クラウド管理機能は、オーダー管理モジュール1120、オーダーオーケストレーションモジュール1122、オーダープロビジョニングモジュール1124、オーダー管理および監視モジュール1126、ならびにアイデンティティ管理モジュール1128などの1つ以上のモジュールによって提供され得る。これらのモジュールは、汎用コンピュータ、専用サーバコンピュータ、サーバファーム、サーバクラスタ、またはその他の適切な構成および/もしくは組み合わせであり得る1つ以上のコンピュータならびに/またはサーバを含み得るか、またはそれらを用いて提供され得る。
【0122】
例示的なオペレーションでは、1134において、ユーザは、クラウドインフラストラクチャシステム1102によって提供される1つ以上のサービスを要求し、クラウドインフラストラクチャシステム1102によって供給される1つ以上のサービスのサブスクリプションについてオーダーを行うことによって、クライアントコンピューティングデバイス1104、1106または1108などのクライアントデバイスを用いてクラウドインフラストラクチャシステム1102と対話し得る。特定の実施形態では、ユーザは、クラウドユーザインターフェース(User Interface:UI)、すなわちクラウドUI1112、クラウドUI1114および/またはクラウドUI1116にアクセスして、これらのUIを介してサブスクリプションオーダーを行い得る。ユーザがオーダーを行ったことに応答してクラウドインフラストラクチャシステム1102によって受信されたオーダー情報は、ユーザおよびユーザがサブスクライブする予定のクラウドインフラストラクチャシステム1102によって供給される1つ以上のサービスを特定する情報を含み得る。
【0123】
1136において、ユーザから受信したオーダー情報は、オーダーデータベース1118に格納され得る。これが新たなオーダーである場合、当該オーダーについての新たなレコードが作成され得る。一実施形態では、オーダーデータベース1118は、クラウドインフラストラクチャシステム1118によって動作され、かつ、他のシステム要素と連携して動作されるいくつかのデータベースのうちの1つであってもよい。
【0124】
1138において、オーダー情報は、オーダー管理モジュール1120に転送され得、オーダー管理モジュール1120は、オーダーの確認、および確認時のオーダーの予約などの、オーダーに関連するビリングおよびアカウンティング機能を実行するように構成され得る。
【0125】
1140において、オーダーについての情報は、オーダーオーケストレーションモジュール1122に通信され得、オーダーオーケストレーションモジュール1122は、ユーザによって行われたオーダーのためのサービスおよびリソースのプロビジョニングをオーケストレートするように構成される。いくつかの例では、オーダーオーケストレーションモジュール1122は、プロビジョニングのためにオーダープロビジョニングモジュール1124のサービスを使用し得る。特定の実施形態では、オーダーオーケストレーションモジュール1122は、各オーダーと関連付けられたビジネスプロセスの管理を可能にし、ビジネスロジックを適用して、オーダーがプロビジョニングに進むべきか否かを判断する。
【0126】
図14に表わされる実施形態に示されるように、1142において、新たなサブスクリプションのオーダーを受信すると、オーダーオーケストレーションモジュール1122は、リソースを割当てて、当該サブスクリプションオーダーを実現するために必要なリソースを構成するために、オーダープロビジョニングモジュール1124に要求を送信する。オーダープロビジョニングモジュール1124は、ユーザによってオーダーされたサービスのためのリソースの割当てを可能にする。オーダープロビジョニングモジュール1124は、クラウドインフラストラクチャシステム1100によって提供されるクラウドサービスと、要求されたサービスを提供するためのリソースをプロビジョニングするために使用される物理的実装層との間の抽象化のレベルを提供する。したがって、オーダーオーケストレーションモジュール1122は、サービスおよびリソースがオンザフライで実際にプロビジョニングされるか否か、または予めプロビジョニングされて要求時に単に配分/割当てられるか否かなどの実装詳細から切離され得る。
【0127】
1144において、サービスおよびリソースがプロビジョニングされると、要求されたサービスが利用可能な状態となったことを示す通知が、サブスクライブを行うユーザに送信され得る。いくつかの例では、ユーザが要求されたサービスを使用し始めることを可能にする情報(たとえばリンク)がユーザに送信され得る。
【0128】
1146において、ユーザのサブスクリプションオーダーがオーダー管理および監視モジュール1126によって管理および追跡され得る。いくつかの例では、オーダー管理および監視モジュール1126は、サブスクライブされたサービスのユーザ使用に関する使用統計を収集するように構成され得る。たとえば、統計は、使用されるストレージの量、転送されるデータの量、ユーザの数、ならびにシステムアップ時間およびシステムダウン時間の量などついて収集され得る。
【0129】
特定の実施形態では、クラウドインフラストラクチャシステム1100は、クラウドインフラストラクチャシステム1100においてアクセス管理および認可サービスなどのアイデンティティサービスを提供するように構成されるアイデンティティ管理モジュール1128を含み得る。いくつかの実施形態では、アイデンティティ管理モジュール1128は、クラウドインフラストラクチャシステム1102によって提供されるサービスを利用したいユーザについての情報を制御し得る。このような情報は、このようなユーザのアイデンティティを認証する情報、および、さまざまなシステムリソース(たとえばファイル、ディレクトリ、アプリケーション、通信ポート、メモリセグメントなど)に対してそれらのユーザがどのアクションを実行することが認可されるかを記述する情報を含み得る。また、アイデンティティ管理モジュール1128は、各ユーザについての記述的情報および当該記述的情報がどのようにして誰によってアクセスおよび修正され得るかについての記述的情報の管理を含み得る。
【0130】
図15は、本発明の実施形態を実現するために用いられ得る例示的なコンピュータシステム1200を示す。いくつかの実施形態では、コンピュータシステム1200を用いて上記のさまざまなサーバおよびコンピュータシステムのうちのいずれかを実現してもよい。
図15に示されるように、コンピュータシステム1200は、バスサブシステム1202を介していくつかの周辺サブシステムと通信する処理ユニット1204を含むさまざまなサブシステムを含む。これらの周辺サブシステムは、処理加速ユニット1206、I/Oサブシステム1208、記憶サブシステム1218、および通信サブシステム1224を含み得る。記憶サブシステム1218は、有形のコンピュータ読取可能記憶媒体1222およびシステムメモリ1210を含み得る。
【0131】
バスサブシステム1202は、コンピュータシステム1200のさまざまなコンポーネントおよびサブシステムを目的に応じて互いに通信させるためのメカニズムを提供する。バスサブシステム1202は単一のバスとして概略的に示されているが、バスサブシステムの代替的な実施形態は複数のバスを利用し得る。バスサブシステム1202は、さまざまなバスアーキテクチャのうちのいずれかを用いる、メモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含む、いくつかの種類のバス構造のうちのいずれかであればよい。たとえば、このようなアーキテクチャは、IEEE P1386.1規格に従って製造されたメザニン(Mezzanine)バス等として実現できる、業界標準アーキテクチャ(ISA)バス、マイクロチャネルアーキテクチャ(MCA)バス、エンハンストISA(EISA)バス、ビデオエレクトロニクス標準協会(VESA)ローカルバス、および周辺コンポーネントインターコネクト(PCI)バスなどを含み得る。
【0132】
処理サブシステム1204は、コンピュータシステム1200のオペレーションを制御し、かつ、1つ以上の処理ユニット1232、1234等を含み得る。処理ユニットは、シングルコアもしくはマルチコアプロセッサ、プロセッサの1つ以上のコア、またはこれらの組み合わせを含む、1つ以上のプロセッサを含み得る。いくつかの実施形態では、処理サブシステム1204は、グラフィックプロセッサ、デジタル信号プロセッサ(DSP)等といった1つ以上の専用コプロセッサを含み得る。いくつかの実施形態では、処理サブシステム1204の処理ユニットのうちのいくつかまたはすべてを、特定用途向け集積回路(ASIC)またはフィールドプログラマブルゲートアレイ(FPGA)等のカスタマイズされた回路を用いて実現してもよい。
【0133】
いくつかの実施形態では、処理サブシステム1204内の処理ユニットは、システムメモリ1210内にまたはコンピュータ読取可能記憶媒体1222上に格納されている命令を実行することができる。さまざまな実施形態において、処理ユニットは、さまざまなプログラムまたはコード命令を実行することができ、かつ、同時に実行される複数のプログラムまたはプロセスを維持することができる。任意の所与の時間に、実行すべきプログラムコードのうちのいくつかまたはすべてが、いくつかの例では1つ以上の記憶装置を含むシステムメモリ1210内におよび/またはコンピュータ読取可能記憶媒体810上にあってもよい。適切なプログラミングを通して、処理サブシステム1204は、配置、コントリビューション、および/またはデマンドポリシーベースのリソース割当てのために上記のさまざまな機能を提供することができる。
【0134】
特定の実施形態では、コンピュータシステム1200が実行する処理全体を加速することを目的として、カスタマイズされた処理を実行するためまたは処理サブシステム1204が実行する処理のうちの一部をオフロードするために、処理加速ユニット1206を設けてもよい。
【0135】
I/Oサブシステム1208は、情報をコンピュータシステム1200に入力するためおよび/または情報をコンピュータシステム1200からもしくはコンピュータシステム1200を介して出力するための装置およびメカニズムを含み得る。一般に、「入力装置」という用語の使用は、情報をコンピュータシステム1200に入力するための、可能なすべての種類の装置およびメカニズムを含むことを意図している。ユーザインターフェイス入力装置は、たとえば、キーボード、マウスまたはトラックボール等のポインティングデバイス、ディスプレイに組込まれたタッチパッドまたはタッチスクリーン、スクロールホイール、クリックホイール、ダイヤル、ボタン、スイッチ、キーパッド、音声コマンド認識システムを備えた音声入力装置、マイク、およびその他の種類の入力装置を含み得る。ユーザインターフェイス入力装置はまた、ユーザが入力装置を制御し入力装置と対話できるようにするMicrosoft Kinect(登録商標)モーションセンサ、Microsoft Xbox(登録商標)360ゲームコントローラ、ジェスチャーおよび発話コマンドを用いた入力を受けるためのインターフェイスを提供する装置等の、モーション検知および/またはジェスチャー認識装置を含み得る。ユーザインターフェイス入力装置はまた、ユーザから目の動き(たとえば写真撮影時および/またはメニュー選択時の「まばたき」)を検出して目のジェスチャーを入力装置(たとえばGoogle Glass(登録商標))への入力として変換するGoogle Glass(登録商標)まばたき検出器等のアイジェスチャー認識装置を含み得る。加えて、ユーザインターフェイス入力装置は、ユーザが音声コマンドを通して音声認識システム(たとえばSiri(登録商標)ナビゲータ)と対話できるようにする音声認識検知装置を含み得る。
【0136】
ユーザインターフェイス入力装置のその他の例は、三次元(3D)マウス、ジョイスティックまたはポインティングスティック、ゲームパッドおよびグラフィックタブレット、ならびに、スピーカ、デジタルカメラ、デジタルカムコーダ、ポータブルメディアプレイヤー、ウェブカメラ、画像スキャナ、指紋スキャナ、バーコードリーダ3Dスキャナ、3Dプリンタ、レーザレンジファインダー、および視線トラッキング装置等のオーディオ/ビジュアル装置を含むが、これらに限定されるものではない。加えて、ユーザインターフェイス入力装置は、たとえば、コンピュータ断層撮影、磁気共鳴撮像、ポジトロン断層撮影、医療用超音波検査装置等の、医療用撮像入力装置を含み得る。ユーザインターフェイス入力装置はまた、たとえば、MIDIキーボード、デジタル音楽機器等といった音声入力装置を含み得る。
【0137】
ユーザインターフェイス出力装置は、ディスプレイサブシステム、インジケータライト、または音声出力装置といった非ビジュアルディスプレイなどを含み得る。ディスプレイサブシステムは、陰極線管(CRT)、たとえば液晶ディスプレイ(LCD)またはプラズマディスプレイを用いるフラットパネル装置、投射装置、タッチスクリーン等であってもよい。一般に、「出力装置」という用語の使用は、情報をコンピュータシステム1200からユーザまたはその他のコンピュータに出力するための可能なすべての種類の装置およびメカニズムを含むことを意図している。たとえば、ユーザインターフェイス出力装置は、モニタ、プリンタ、スピーカ、ヘッドフォン、自動車ナビゲーションシステム、作図装置、音声出力装置、およびモデムといった、テキスト、グラフィックおよびオーディオ/ビデオ情報を視覚的に伝えるさまざまな表示装置を含み得るが、これらに限定されるものではない。
【0138】
記憶サブシステム1218は、コンピュータシステム1200が使用する情報を格納するためのリポジトリまたはデータストアを提供する。記憶サブシステム1218は、いくつかの実施形態の機能を提供する基本的なプログラミングおよびデータ構造を格納するための有形の非一時的なコンピュータ読取可能記憶媒体を提供する。処理サブシステム1204によって実行されたときに上記機能を提供するソフトウェア(プログラム、コードモジュール、命令)は、記憶サブシステム1218に格納されてもよい。ソフトウェアは、処理サブシステム1204の1つ以上の処理ユニットによって実行されてもよい。記憶サブシステム1218はまた、本発明に従って使用されるデータを格納するためのリポジトリを提供し得る。
【0139】
記憶サブシステム1218は、揮発性および不揮発性メモリデバイスを含む1つ以上の非一時的なメモリデバイスを含み得る。
図15に示されるように、記憶サブシステム1218は、システムメモリ1210およびコンピュータ読取可能記憶媒体1222を含む。システムメモリ1210は、プログラム実行中に命令とデータを格納するための揮発性メインランダムアクセスメモリ(RAM)および固定命令が格納されている不揮発性読取専用メモリ(ROM)またはフラッシュメモリを含む、いくつかのメモリを含み得る。いくつかの実装例において、たとえば起動中のコンピュータシステム1200内の要素間の情報転送を補助する基本的なルーチンを含む基本的な入力/出力システム(BIOS)は、典型的にROMに格納され得る。RAMは典型的に、処理サブシステム1204が現在操作および実行しているデータおよび/またはプログラムモジュールを含む。いくつかの実装例において、システムメモリ1210は、スタティックランダムアクセスメモリ(SRAM)またはダイナミックランダムアクセスメモリ(DRAM)等の種類が異なる複数のメモリを含み得る。
【0140】
限定ではなく一例として、
図15に表わされるように、システムメモリ1210は、クライアントアプリケーション、ウェブブラウザ、ミッドティアアプリケーション、リレーショナルデータベース管理システム(RDBMS)等を含み得るアプリケーションプログラム1212と、プログラムデータ1214と、オペレーティングシステム1216とを格納し得る。一例として、オペレーティングシステム1216は、さまざまなバージョンのMicrosoft Windows(登録商標)、Apple Macintosh(登録商標)、および/またはLinux(登録商標)オペレーティングシステム、さまざまな市販のUNIX(登録商標)またはUNIXのようなオペレーティングシステム(さまざまなGNU/Linuxオペレーティングシステム、Google Chrome(登録商標)OS等を含むがこれらに限定されるものではない)および/または、iOS、Windows(登録商標)Phone、Android(登録商標)OS、BlackBerry(登録商標) 10 OS、およびPalm(登録商標)OSオペレーティングシステム等のモバイルオペレーティングシステムを含み得る。
【0141】
コンピュータ読取可能記憶媒体1222は、いくつかの実施形態の機能を提供するプログラミングおよびデータ構造を格納し得る。処理サブシステム1204のプロセッサによって実行されたときに上記機能を提供するソフトウェア(プログラム、コードモジュール、命令)は、記憶サブシステム1218に格納されてもよい。一例として、コンピュータ読取可能記憶媒体1222は、ハードディスクドライブ、磁気ディスクドライブ、CD ROM、DVD、Blu-Ray(登録商標)ディスク、またはその他の光媒体等の光ディスクドライブといった、不揮発性メモリを含み得る。コンピュータ読取可能記憶媒体1222は、Zip(登録商標)ドライブ、フラッシュメモリカード、ユニバーサルシリアルバス(USB)フラッシュドライブ、セキュアデジタル(SD)カード、DVDディスク、デジタルビデオテープ等を含み得るが、これらに限定されるものではない。コンピュータ読取可能記憶媒体1222はまた、フラッシュメモリベースのSSD、エンタープライズフラッシュドライブ、ソリッドステートROM等といった不揮発性メモリに基づくソリッドステートドライブ(SSD)、ソリッドステートRAM、ダイナミックRAM、スタティックRAM等といった揮発性メモリに基づくSSD、DRAMとフラッシュメモリベースのSSDを組み合わせたものを用いる、DRAMベースのSSD、磁気抵抗RAM(MRAM)SSD、およびハイブリッドSSDを含み得る。コンピュータ読取可能媒体1222は、コンピュータ読取可能命令、データ構造、プログラムモジュール、およびコンピュータシステム1200のためのその他のデータの記憶域を提供し得る。
【0142】
特定の実施形態では、記憶サブシステム1200はまた、コンピュータ読取可能記憶媒体1222にさらに接続することができるコンピュータ読取可能記憶媒体リーダ1220を含み得る。システムメモリ1210とともに、また、任意でシステムメモリ1210と組み合わされて、コンピュータ読取可能記憶媒体1222は、コンピュータ読取可能情報を格納するための、遠隔、ローカル、固定、および/またはリムーバブル記憶装置プラス記憶媒体を、包括的に代表し得る。
【0143】
特定の実施形態では、コンピュータシステム1200は、1つ以上の仮想マシンを実行するためのサポートを提供し得る。コンピュータシステム1200は、仮想マシンの構成および管理を容易にするためのハイパーバイザといったプログラムを実行し得る。各仮想マシンに、メモリ、計算(たとえばプロセッサ、コア)、I/O、およびネットワーキングリソースが割当てられていてもよい。各仮想マシンは、典型的に、コンピュータシステム1200が実行するその他の仮想マシンによって実行されるオペレーティングシステムと同じでも異なっていてもよい、自身のオペレーティングシステムを実行する。したがって、いくつかの例では複数のオペレーティングシステムがコンピュータシステム1200によって同時に実行されるであろう。一般的に、各仮想マシンはその他の仮想マシンから独立して実行される。
【0144】
通信サブシステム1224は、その他のコンピュータシステムおよびネットワークに対するインターフェイスを提供する。通信サブシステム1224は、コンピュータシステム1200以外のシステムからデータを受信しコンピュータシステム1200以外のシステムにデータを送信するためのインターフェイスの役割を果たす。たとえば、通信サブシステム1224によって、コンピュータシステム1200は、情報をコンピューティングデバイスから受信しかつ情報をコンピューティングデバイスに送信するために1つ以上のコンピューティングデバイスへのインターネットを介した通信チャネルを確立することができるであろう。
【0145】
通信サブシステム1224は、有線通信プロトコルおよび/または無線通信プロトコル双方をサポートし得る。たとえば、特定の実施形態では、通信サブシステム1224は、(たとえば携帯電話技術、3G、4GまたはEDGE(グローバル進化型高速データレート)等の高度データネットワーク技術、WiFi(IEEE802.11ファミリー規格、またはその他のモバイル通信技術、またはそれらの任意の組み合わせ)を用いて)無線音声および/またはデータネットワークにアクセスするための無線周波数(RF)トランシーバコンポーネント、グローバルポジショニングシステム(GPS)レシーバコンポーネント、および/またはその他のコンポーネントを含み得る。いくつかの実施形態では、通信サブシステム1224は、無線インターフェイスに加えてまたはその代わりに有線ネットワーク接続(たとえばイーサネット)を提供することができる。
【0146】
通信サブシステム1224は、さまざまな形態のデータを送受信することができる。たとえば、いくつかの実施形態では、通信サブシステム1224は、構造化および/または非構造化データフィード1226、イベントストリーム1228、イベントアップデート1230等の形態の入力通信を受信し得る。たとえば、通信サブシステム1224は、ソーシャルメディアネットワークおよび/またはその他の通信サービスのユーザから、リアルタイムで、Twitter(登録商標)フィード、Facebook(登録商標)アップデート、リッチサイトサマリー(RSS)フィード等のウェブフィード、および/または1以上の第三者情報源からのリアルタイムアップデート等のデータフィード1226を、受信(または送信)するように構成されてもよい。
【0147】
特定の実施形態では、通信サブシステム1224は、本質的に連続しているまたは無限であり明確な終わりがない場合がある、リアルタイムイベントのイベントストリーム1228および/またはイベントアップデート1230を含み得る、連続データストリームの形態のデータを受信するように構成されてもよい。連続データを生成するアプリケーションの例は、たとえば、センサデータアプリケーション、株式相場表示機、ネットワーク性能測定ツール(たとえばネットワークモニタリングおよびトラフィック管理アプリケーション)、クリックストリーム分析ツール、自動車交通量モニタリング等を含み得る。
【0148】
通信サブシステム1224はまた、構造化および/または非構造化データフィード1226、イベントストリーム1228、イベントアップデート1230等を、コンピュータシステム1200に連結されている1つ以上のストリーミングデータソースコンピュータと通信し得る1つ以上のデータベースに出力するように構成されてもよい。
【0149】
コンピュータシステム1200は、ハンドヘルドポータブルデバイス(たとえばiPhone(登録商標)携帯電話、iPad(登録商標)計算タブレット、PDA)、ウェアラブルデバイス(たとえばGoogle Glass(登録商標)ヘッドマウントディスプレイ)、パーソナルコンピュータ、ワークステーション、メインフレーム、キオスク、サーバラック、またはその他のデータ処理システムを含む、さまざまな種類のうちの1つであればよい。
【0150】
コンピュータおよびネットワークは常に変化しているという性質のものであるので、
図15に表わされるコンピュータシステム1200の説明は、専ら特定の例を意図している。
図15に表わされるシステムよりもコンポーネントが多いまたは少ないその他多数の構成が可能である。本明細書が提供する開示と教示に基づいて、当業者はさまざまな実施形態を実現するためのその他のやり方および/または方法を認識するであろう。
【0151】
一実施形態によると、通信サブシステム1224および通信サブシステム1224に結合された処理サブシステム1204を含むコンピュータシステムが提供される。処理サブシステム1204は、ユーザによるサービスのオーダーを通信サブシステム1224を介して受信するように構成され、サービスは一部はリソースの割当てによって可能になる。処理サブシステム1204はさらに:オーダーをパースして、リクエスタ、リソース、および要求時間を含む要求データを特定し;要求データをアグリゲートデータ構造に追加するように構成される。アグリゲートデータ構造は、以前にパースされたオーダーについての要求データのアグリゲートを含む。処理サブシステム1204はさらに:アグリゲートデータ構造に基づいて、リソースに対するリアルタイムデマンドを示す値を決定し;要求データの少なくとも1つのコンポーネントが、オーダーと、以前にパースされたオーダーからの少なくとも1つの他のオーダーとの間で同一であることに基づいて、オーダーを少なくとも1つの他のオーダーと相関付け;オーダーを少なくとも1つの他のオーダーと相関付けたことに基づいて、少なくとも1つのリソースセットを特定するように構成され、少なくとも1つのリソースセットは、オーダーからのリソースと、少なくとも1つの他のオーダーから要求された別のリソースとを含む。
【0152】
一実施形態によると、パースすることは、リクエスタ、リソース、および要求時間の構造表現を提供する要求データからデータ構造を構築することを含む。
【0153】
一実施形態によると、アグリゲートデータ構造は、パースされたオーダーからのデータ構造と、以前にパースされたオーダーからの1つ以上のデータ構造とを含む。
【0154】
一実施形態によると、リソースに対するリアルタイムデマンドを示す値は、以前にパースされたオーダーについての要求データのアグリゲートから取得されるリソースについての現在の要求ボリュームを用いて決定される。
【0155】
一実施形態によると、処理サブシステム1204はさらに:リソースに対するリアルタイムデマンドを示す、決定された値に基づいて、リソースの割当てに対する1つ以上のデマンドポリシーを生成または更新し;1つ以上のデマンドポリシーに基づいて、リソースを予め作成し;1つ以上のデマンドポリシーに基づいて、予め作成されたリソースを通信サブシステム1224を介して1人以上のユーザに割当てるように構成される。
【0156】
一実施形態によると、リアルタイムデマンドを示す値を決定することは、以前にパースされたオーダーについての要求データのアグリゲートを用いて、特定の期間内にリソースを含むオーダーのパーセンテージを決定することを含む。
【0157】
一実施形態によると、リアルタイムデマンドを示す値を決定することは、以前にパースされたオーダーについての要求データのアグリゲートを用いて、決定されたオーダーのパーセンテージを、リソースプール内の他のリソースに相対的なリソースのリアルタイムデマンドと相関付けることをさらに含む。
【0158】
一実施形態によると、要求データの少なくとも1つのコンポーネントはリクエスタを含む。
【0159】
一実施形態によると、処理サブシステム1204はさらに、リソースおよび別のリソースに加えて定期的に要求される追加のリソースを、リソース、別のリソース、および追加のリソースを含む、以前にパースされたオーダーのパーセンテージに基づいて特定するように構成される。
【0160】
一実施形態によると、処理サブシステム1204はさらに、特定された少なくとも1つのリソースセットを、追加のリソースを含むように更新するように構成される。
【0161】
一実施形態によると、処理サブシステム1204はさらに:少なくとも1つのリソースセットの割当てに対する1つ以上のデマンドポリシーを生成または更新し;1つ以上のデマンドポリシーに基づいて、互いに有線接続されたリソースおよび別のリソースを予め作成し;1つ以上のデマンドポリシーに基づいて、互いに有線接続されたリソースおよび別のリソースを含む少なくとも1つのリソースセットを通信サブシステム1224を介して1人以上のユーザに割当てるように構成される。
【0162】
一実施形態によると、要求データのアグリゲートに基づいて、リソースプール内のリソースに対するリアルタイムデマンドを示す値を決定するように構成されたデマンドモニタ575を含むリソースマネージャ105;305;505;905;975が提供される。要求データのアグリゲートは、サービスを可能にする少なくとも一部としてリソースを含んでいたサービスに対する以前に受信された任意の数のオーダーから取得される。リソースマネージャ105;305;505;905;975はさらに、リソースに対するリアルタイムデマンドを示す、決定された値に基づいて、リソースの割当てに対する1つ以上のデマンドポリシーを生成または更新するように構成されたポリシーマネージャ335;525;935を含む。リソースマネージャ105;305;505;905;975は、1つ以上のデマンドポリシーに基づいて、リソースを予め作成し、1つ以上のデマンドポリシーに基づいて、予め作成されたリソースを1人以上のユーザに割当てるように構成される。
【0163】
一実施形態によると、リソースに対するリアルタイムデマンドを示す値は、要求データのアグリゲートから取得されるリソースについての現在の要求ボリュームを用いて決定される。
【0164】
一実施形態によると、リアルタイムデマンドを示す値を決定することは、以前に受信されたオーダーについての要求データのアグリゲートを用いて、特定の期間内にリソースを含むオーダーのパーセンテージを決定することを含む。
【0165】
一実施形態によると、リアルタイムデマンドを示す値を決定することはさらに、以前に受信されたオーダーについての要求データのアグリゲートを用いて、決定されたオーダーのパーセンテージを、リソースプール内の他のリソースに相対的なリソースのリアルタイムデマンドと相関付けることを含む。
【0166】
一実施形態によると、リソースマネージャ105;305;505;905;975はさらに、予め作成されたリソースをリソースプールに追加するように構成される。
【0167】
一実施形態によると、リソースマネージャ105;305;505;905;975はさらに、、リソースプールを、予め作成されたリソースの1人以上のユーザへの割当てを示すように更新するように構成される。
【0168】
一実施形態によると、通信サブシステム1224および通信サブシステム1224に結合された処理サブシステム1204を含むコンピュータシステムが提供される。処理サブシステム1204は、要求データのアグリゲートに基づいて、リソースプール内のリソースに対するリアルタイムデマンドを示す値を決定するように構成される。要求データのアグリゲートは、サービスを可能にする少なくとも一部としてリソースを含んでいたサービスに対する以前に受信された任意の数のオーダーから取得される。処理サブシステム1204はさらに:要求データの少なくとも1つのコンポーネントが、サービスのオーダーと、以前に受信されたオーダーからの少なくとも1つの他のオーダーとの間で同一であることに基づいて、オーダーを少なくとも1つの他のオーダーと相関付け;オーダーを少なくとも1つの他のオーダーと相関付けたことに基づいて、少なくとも1つのリソースセットを特定するように構成される。少なくとも1つのリソースセットは、オーダーからのリソースと、少なくとも1つの他のオーダーから要求された別のリソースとを含む。処理サブシステム1204はさらに:リソースプール内のリソースの利用を追跡し;(i)リソースに対するリアルタイムデマンドを示す、決定された値、(ii)リソースを含む少なくとも1つのリソースセット、および(iii)追跡されたリソースの利用、の少なくとも1つに基づいて、リソースの割当てに対する1つ以上のデマンドポリシーを生成または更新し;1つ以上のデマンドポリシーに基づいて、(i)リソースを予め作成する、(ii)リソースをリソースプールに追加する、(iii)リソースをクリーンにするように構成される。
【0169】
一実施形態によると、処理サブシステム1204はさらに、1つ以上のデマンドポリシーに基づいて、通信サブシステム1224を介してリソースを1人以上のユーザに割当てるように構成される。
【0170】
一実施形態によると、リソースに対するリアルタイムデマンドを示す値は、以前に受信されたオーダーについての要求データのアグリゲートから取得されるリソースについての現在の要求ボリュームを用いて決定される。
【0171】
一実施形態によると、通信サブシステム1224および通信サブシステム1224に結合された処理サブシステム1204を含むコンピュータシステムが提供される。処理サブシステム1204は、ユーザからのリソース提出を通信サブシステム1224を介して受信するように構成される。リソース提出はコントリビューション可能なリソースを特定している。処理サブシステム1204はさらに、リソース提出に対するコントリビューションポリシーを特定するように構成される。コントリビューションポリシーは、コントリビューション可能なリソースのリソースタイプと、要求可能なリソースの1つ以上のリソースタイプとの間のマッピングに基づいて特定される。処理サブシステム1204はさらに、リソース提出に対して特定されたコントリビューションポリシーに基づいて、要求可能なリソースの1つ以上のリソースタイプを、ユーザと関連付けられているクライアントコンピューティングシステムに、通信サブシステム1224を介して送信するように構成される。処理サブシステム1204はさらに、要求可能なリソースの1つ以上のリソースタイプのうちの、ユーザによる1つのリソースタイプの選択を示す情報を、クライアントコンピューティングシステムから通信サブシステム1224を介して受信するように構成される。
【0172】
一実施形態によると、コントリビューション可能なリソースはユーザによって管理される。
【0173】
一実施形態によると、処理サブシステム1204はさらに、リソース提出に基づいて、コントリビューション可能なリソースのリソースタイプを決定するように構成される。コントリビューションポリシーを特定することは、リソースタイプがコントリビューション可能なリソースの1つ以上のリソースタイプと一致すると判断することを含み、コントリビューション可能なリソースの1つ以上のリソースタイプは、コントリビューションポリシーにおいて要求可能なリソースの1つ以上のリソースタイプにマップしている。
【0174】
一実施形態によると、コントリビューションポリシーを特定することは、ユーザのリソースコントリビューションの履歴に少なくとも基づいてさらに決定される。
【0175】
一実施形態によると、処理サブシステム1204はさらに、リソース提出において特定されたコントリビューション可能なリソースについてのアクセスクレデンシャルを、通信サブシステム1224を介して受信するように構成される。
【0176】
一実施形態によると、アクセスクレデンシャルは、ユーザがコントリビューション可能なリソースを管理することを可能にする。
【0177】
一実施形態によると、処理サブシステム1204はさらに、ユーザアカウント履歴およびリソースプールを、要求可能なリソースの1つ以上のリソースタイプのうちの1つのリソースタイプの選択を示すように更新するように構成される。
【0178】
一実施形態によると、処理サブシステム1204はさらに、ユーザによるサービスのオーダーを通信サブシステム1224を介して受信するように構成される。サービスは一部はリソースの割当てによって可能になる。処理サブシステム1204はさらに、リソースのタイプがユーザによって選択された1つのリソースタイプと一致すると判断し、コントリビューション可能なリソースと交換に、サービスに対するリソースへのアクセスを可能にするように構成される。
【0179】
一実施形態によると、リソースへのアクセスを可能にすることは、リソースをユーザに割当てることと、ユーザにサービスするためにリソースを構成することと、リソースが割当てられたという確認メッセージをユーザに送信することとを含む。
【0180】
一実施形態によると、処理サブシステム1204はさらに、コントリビューションポリシー内に定義されている要求可能なリソースの1つ以上のリソースタイプに対するデマンドに基づいて、コントリビューションポリシーを更新するように構成される。
【0181】
一実施形態によると、ユーザからのリソース提出を受信するように構成されたリソース提出インターフェイス510を含むリソースマネージャ105;305;505;905;975が提供される。リソース提出はコントリビューション可能なリソースを特定している。リソースマネージャ105;305;505;905;975はさらに、リソース提出に基づいて、コントリビューション可能なリソースのリソースタイプを決定し、リソース提出に対するコントリビューションポリシーを特定するように構成されたポリシーマネージャ335;525;935を含む。コントリビューションポリシーを特定することは、リソースタイプが、コントリビューションポリシーにおいて要求可能なリソースの1つ以上のリソースタイプにマップしているコントリビューション可能なリソースの1つ以上のリソースタイプと一致すると判断することを含む。リソース提出インターフェイス510はさらに、リソース提出に対して特定されたコントリビューションポリシーに基づいて、要求可能なリソースの1つ以上のリソースタイプを、ユーザと関連付けられているクライアントコンピューティングシステムに送信するように構成される。リソース提出インターフェイス510はさらに、要求可能なリソースの1つ以上のリソースタイプのうちの、ユーザによる1つのリソースタイプの選択を示す情報を、クライアントコンピューティングシステムから受信するように構成される。
【0182】
一実施形態によると、コントリビューション可能なリソースはユーザによって管理される。
【0183】
一実施形態によると、リソース提出インターフェイス510はさらに、リソース提出において特定されたコントリビューション可能なリソースについてのアクセスクレデンシャルを受信するように構成される。アクセスクレデンシャルは、ユーザがコントリビューション可能なリソースを管理することを可能にする。
【0184】
一実施形態によると、リソースマネージャ105;305;505;905;975はさらに、コントリビューション可能なリソースと交換に、ユーザによって選択された1つのリソースタイプと一致するタイプのリソースを割当てるように構成される。
【0185】
一実施形態によると、割当てることは、ユーザにサービスするためにリソースを構成することを含む。
【0186】
一実施形態によると、リソース提出インターフェイス510はさらに、ユーザによるサービスのオーダーを受信するように構成され、サービスは一部はリソースの割当てによって可能になる。リソースマネージャ105;305;505;905;975はさらに、リソースのタイプがユーザによって選択された1つのリソースタイプと一致すると判断し、コントリビューション可能なリソースと交換に、サービスに対するリソースへのアクセスを可能にするように構成される。
【0187】
一実施形態によると、リソースマネージャ105;305;505;905;975はさらに、コントリビューションポリシー内に定義されているコントリビューション可能なリソースの1つ以上のリソースタイプまたは要求可能なリソースの1つ以上のリソースタイプに対するデマンドに基づいて、コントリビューションポリシーを更新するように構成される。
【0188】
一実施形態によると、通信サブシステム1224および通信サブシステム1224に結合された処理サブシステム1204を含むコンピュータシステムが提供される。処理サブシステム1204は、ユーザからのサービスのオーダーを通信サブシステム1224を介して受信するように構成され、オーダーはコントリビューション可能なリソースおよび要求可能なリソースを特定している。コントリビューション可能なリソースは、要求可能なリソースと交換にリソースプールに提供されることになっている。処理サブシステム1204はさらに、コントリビューションポリシーに基づいてリソース提出を受付けるように構成される。コントリビューションポリシーは、コントリビューション可能なリソースのタイプの第1のリソースタイプと要求可能なリソースのタイプの第2のリソースタイプとの間のマッピングを定義している。処理サブシステム1204はさらに、コントリビューション可能なリソースへのアクセスおよびコントリビューション可能なリソースに対する制御を提供するアクセスクレデンシャルを通信サブシステム1224を介して受信するように構成される。処理サブシステム1204はさらに、リソースプールを、分散システムの1人以上のユーザにサービスするためにコントリビューション可能なリソースの可用性を示すように更新するように構成される。処理サブシステム1204はさらに、要求可能なリソースを通信サブシステム1224を介してユーザに割当てるように構成される。
【0189】
一実施形態によると、コントリビューション可能なリソースはユーザによって管理され、要求可能なリソースは別のユーザによって管理される。
【0190】
一実施形態によると、コントリビューション可能なリソースはユーザによって管理され、要求可能なリソースは、分散システムのリソースマネージャによって管理されるリソースプールのコンポーネントである。
【0191】
本発明の特定の実施形態について説明してきたが、さまざまな変形例、変更例、代替的な構成および等価物も本発明の範囲内に包含される。変形例は、開示された特徴の任意の関連する組み合わせを含む。本発明の実施形態は、特定の具体的なデータ処理環境内での動作に限定されるものではなく、複数のデータ処理環境内で自由に動作できる。さらに、特定の一連のトランザクションおよびステップを使用して本発明の実施形態について説明してきたが、本発明の範囲が、記載されている一連のトランザクションおよびステップに限定されるものではないということが当業者に明らかであるべきである。上記の実施形態のさまざまな特徴および局面は、個別にまたはともに使用され得る。
【0192】
さらに、ハードウェアおよびソフトウェアの特定の組み合わせを使用して本発明の実施形態について説明してきたが、ハードウェアおよびソフトウェアの他の組み合わせも本発明の範囲内であることが認識されるべきである。本発明の実施形態は、ハードウェアのみで実現されてもよく、またはソフトウェアのみで実現されてもよく、またはこれらの組み合わせを使用して実現されてもよい。本明細書に記載されるさまざまなプロセスは、同じプロセッサ上で、または任意に組み合わされたさまざまなプロセッサ上で実現することができる。したがって、コンポーネントまたはモジュールがいくつかのオペレーションを実行するように構成されるものと記載されているが、このような構成は、たとえば、オペレーションを実行するように電子回路を設計することによって、オペレーションを実行するようにプログラム可能な電子回路(マイクロプロセッサなど)をプログラミングすることによって、またはこれらを組み合わせることによって、達成することができる。プロセス同士は、プロセス間通信のための従来の技術を含むがこれらに限定されるものではないさまざまな技術を用いて通信することができ、異なる対のプロセスが異なる技術を用いてもよく、または、同じ対のプロセスが異なる時間に異なる技術を用いてもよい。
【0193】
したがって、明細書および図面は、限定的な意味ではなく例示的な意味で考えられるべきである。しかし、特許請求の範囲に記載されているより広範な精神および範囲から逸脱することなく、追加、削減、削除ならびに他の変形および変更がそれに対してなされてもよいということは明白であろう。このように、特定の発明の実施形態を記載してきたが、これらは限定的であるよう意図されるものではない。さまざまな変更例および同等例は添付の特許請求の範囲内にある。