詳細な説明
以下の説明では、本発明の実施形態が十分に理解されるようにするために、説明の目的で具体的詳細を記載する。しかし、これらの具体的詳細がなくてもさまざまな実施形態を実施できることは明らかであろう。図面および説明は、限定的であるよう意図されるものではない。
本開示は概して、ユーザプリファレンスに基づいてコンピューティングリソースを管理して割当てることに関する。この開示の目的のために、コンピューティングリソースの管理および割当ては、少なくとも一部は、クラウドコンピューティング環境などの分散コンピューティング環境のサービスプロバイダによって提供される1つ以上のサービスにサブスクライブする1つ以上のサブスクリプションオーダーに応答して実行されると仮定する。いくつかの実施形態は、サービスとしてのソフトウェア(SaaS)、サービスとしてのプラットフォーム(PaaS)、サービスとしてのインフラストラクチャ(IaaS)を含むサービスモデルの下で提供されるコンピューティングリソースの管理および割当てに関して本明細書に開示されているが、これは限定的であるよう意図されるものではない。SaaS、PaaSおよびIaaSに加えて、本明細書に開示される教示は他のサービスモデルにも適用可能である。たとえば、教示は、コンピューティングリソース(たとえばネットワーク、ネットワーク帯域幅、サーバ、POD、処理、メモリ、ストレージ、アプリケーション、仮想マシン、サービス等)の共有プールに対する簡便なオンデマンドのネットワークアクセスを可能にするためのサービス配信の任意のモデルに適用可能である。
特定の実施形態では、クラウドコンピューティング環境などの分散コンピューティング環境は、セルフサービスの、サブスクリプションベースの、弾性的にスケーラブルな、信頼性のある、高可用性の、安全な態様でユーザに与えられる一連のアプリケーション、ミドルウェアおよびデータベースサービス提供品を含み得る。クラウドコンピューティング環境は、クラウドコンピューティング環境においてサービスおよびリソースのユーザのサブスクリプションをプロビジョニング、管理および追跡する機能、クラウドコンピューティング環境においてサービスを利用するユーザに予測可能な作業費用を提供する機能、クラウドコンピューティング環境においてユーザのデータのロバストなアイデンティティドメインの分離および保護を提供する機能、クラウドコンピューティング環境の設計の透過的なアーキテクチャおよび制御をユーザに提供する機能、データ保護の保証とデータプライバシ基準および規制の順守とをユーザに提供する機能、クラウドコンピューティング環境においてサービスを構築およびデプロイするための統合された開発経験をユーザに提供する機能、ならびにクラウドコンピューティング環境においてビジネスソフトウェア、ミドルウェア、データベースおよびインフラストラクチャサービスの間のシームレスな統合をユーザに提供する機能を含むがこれらに限定されるものではない多くの機能を提供することができる。
特定の実施形態では、クラウドインフラストラクチャシステムによって提供されるサービスは、オンラインデータストアおよびバックアップソリューション、ウェブベースの電子メールサービス、ホスト型オフィススイートおよび文書コラボレーションサービス、データベース処理、管理された技術サポートサービスなどの、クラウドコンピューティング環境のユーザがオンデマンドで利用できるようにされる多数のサービスを含み得る。クラウドコンピューティング環境によって提供されるサービスは、そのユーザのニーズを満たすように動的にスケーリング可能である。クラウドコンピューティング環境によって提供されるサービスの具体的なインスタンス化は、本明細書ではサービスインスタンスと称される。一般に、クラウドサービスプロバイダのシステムからインターネットなどの通信ネットワークを介してユーザが利用できるようにされるサービスはいずれも、クラウドサービスと称される。典型的に、パブリッククラウド環境では、クラウドサービスプロバイダのシステムを構成するサーバおよびシステムは、ユーザ自身のオンプレミスサーバおよびシステムとは異なる。たとえば、クラウドサービスプロバイダのシステムは、アプリケーションをホストし得、ユーザは、インターネットなどの通信ネットワークを介してオンデマンドで当該アプリケーションをオーダーし、使用し得る。
コンピュータネットワーククラウドインフラストラクチャにおけるサービスは、クラウドベンダによってユーザに提供されるかまたはそうでなければ当該技術分野において公知のストレージ、ホスト型データベース、ホスト型ウェブサーバ、ソフトウェアアプリケーション、または他のサービスへの保護されたコンピュータネットワークアクセスを含む。たとえば、サービスは、インターネットを介したクラウド上のリモートストレージへの、パスワードによって保護されたアクセスを含んでいてもよい。別の例として、サービスは、ネットワーク化された開発者による私的使用のためのウェブサービスベースのホスト型リレーショナルデータベースおよびスクリプト言語ミドルウェアエンジンを含んでいてもよい。別の例として、サービスは、クラウドベンダのウェブサイト上でホストされる電子メールソフトウェアアプリケーションへのアクセスを含んでいてもよい。
図1Aは、本発明のいくつかの実施形態に係るクラウドコンピューティング環境10の論理図である。クラウドコンピューティング環境10は、クラウドまたはネットワーク化された環境を介してさまざまなサービスを提供し得る。これらのサービスは、SaaS、PaaS、IaaS、またはその他の、ハイブリッドサービスを含むサービスのカテゴリの下で提供される1つ以上のサービスを含み得る。ユーザは、サブスクリプションオーダーを介して、クラウドコンピューティング環境10によって提供される1つ以上のサービスをオーダーし得る。次いで、クラウドコンピューティング環境10は、ユーザのサブスクリプションオーダーにおけるサービスを提供するために処理を実行する。
クラウドコンピューティング環境10は、さまざまなデプロイメントモデルを介してクラウドサービスを提供し得る。たとえば、サービスはパブリッククラウドモデルの下で提供されてもよく、パブリッククラウドモデルでは、クラウドコンピューティング環境10が(たとえばオラクルが所有する)クラウドサービスを販売する組織によって所有され、サービスは一般的な公営企業またはさまざまな産業企業が利用できるようにされる。別の例として、サービスはプライベートクラウドモデルの下で提供されてもよく、プライベートクラウドモデルでは、クラウドコンピューティング環境10が単一の組織のために単独で運営され、当該組織内の1つ以上のエンティティにサービスを提供することができる。また、クラウドサービスはコミュニティクラウドモデルの下で提供されてもよく、コミュニティクラウドモデルでは、クラウドインフラストラクチャシステム100およびクラウドコンピューティング環境10によって提供されるサービスが関連のコミュニティの中のいくつかの組織によって共有される。また、クラウドサービスは、2つ以上の異なるモデルの組み合わせであるハイブリッドクラウドモデルの下で提供されてもよい。
図1Aに示されるように、クラウドコンピューティング環境10は、クラウドコンピューティング環境10によって提供されるサービスのプロビジョニングを可能にする、連携して動作する複数のコンポーネントを含み得る。図1Aに示される実施形態では、クラウドコンピューティング環境10は、SaaSプラットフォーム15と、PaaSプラットフォーム20と、IaaSプラットフォーム25と、インフラストラクチャリソース30と、クラウド管理機能35とを含む。これらのコンポーネントは、ハードウェアまたはソフトウェアまたはそれらの組み合わせで実現されてもよい。
SaaSプラットフォーム15は、SaaSカテゴリに分類されるクラウドサービスを提供するように構成される。たとえば、SaaSプラットフォーム15は、統合された開発およびデプロイメントプラットフォーム上で一連のオンデマンドのアプリケーションを構築および供給する機能を提供し得る。SaaSプラットフォーム15は、SaaSサービスを提供するための基本的なソフトウェアおよびインフラストラクチャを管理および制御し得る。SaaSプラットフォーム15によって提供されるサービスを利用することによって、ユーザは、クラウドコンピューティング環境10上で実行されるアプリケーションを利用することができる。ユーザは、ユーザが別個のライセンスおよびサポートを購入する必要なくアプリケーションサービスを取得することができる。
さまざまな異なるSaaSサービスが提供され得る。例としては、大規模組織に販売実績管理、企業統合およびビジネスの柔軟性などのためのソリューションを提供するサービスが挙げられるが、これらに限定されるものではない。一実施形態では、SaaSサービスは、ユーザ関係管理(UserRelationship Management:CRM)サービス40(たとえばオラクルクラウドによって提供されるフュージョンCRMサービス)、人材管理(Human Capital Management:HCM)/才能管理サービス45などを含んでいてもよい。CRMサービス40は、ユーザへの販売活動サイクルの報告および管理に向けられるサービスなどを含んでいてもよい。HCM/才能サービス45は、ユーザへのグローバルな労働力ライフサイクル管理および才能管理サービスの提供に向けられるサービスを含んでいてもよい。
標準化された、共有の、弾性的にスケーラブルなアプリケーション開発およびデプロイメントプラットフォームにおけるPaaSプラットフォーム20によって、さまざまな異なるPaaSサービスが提供され得る。PaaSサービスの例としては、共有される共通のアーキテクチャ上で既存のアプリケーションを(オラクルなどの)組織が集約することを可能にするサービス、および、プラットフォームによって提供される共有のサービスを活用する新たなアプリケーションを構築する能力が挙げられ得るが、これらに限定されるものではない。PaaSプラットフォーム20は、PaaSサービスを提供するための基本的なソフトウェアおよびインフラストラクチャを管理および制御し得る。ユーザは、ユーザが別個のライセンスおよびサポートを購入する必要なく、クラウドコンピューティング環境10によって提供されるPaaSサービスを取得することができる。PaaSサービスの例としては、オラクルJava(登録商標)クラウドサービス(Java Cloud Service:JCS)、オラクルデータベースクラウドサービス(Oracle Database Cloud Service:DBCS)などが挙げられるが、これらに限定されるものではない。
PaaSプラットフォーム20によって提供されるサービスを利用することによって、ユーザは、クラウドコンピューティング環境10によってサポートされるプログラミング言語およびツールを利用することができ、デプロイされたサービスを制御することもできる。いくつかの実施形態では、クラウドコンピューティング環境10によって提供されるPaaSサービスは、データベースクラウドサービス50と、ミドルウェアクラウドサービス(たとえばオラクルフュージョンミドルウェアサービス)55と、Javaクラウドサービス60とを含んでいてもよい。一実施形態では、データベースクラウドサービス50は、組織がデータベースリソースをプールし、データベースクラウドの形態でデータベース・アズ・ア・サービスをユーザに供給することを可能にする共有のサービスデプロイメントモデルをサポートし得、ミドルウェアクラウドサービス55は、さまざまなビジネスアプリケーションを開発およびデプロイするためにユーザにプラットフォームを提供し、Javaクラウドサービス60は、クラウドコンピューティング環境10においてJavaアプリケーションをデプロイするためにユーザにプラットフォームを提供する。図1Aに示されるSaaSプラットフォーム15およびPaaSプラットフォーム20におけるコンポーネントは、単に例示の目的で示されており、本発明の実施形態の範囲を限定することを意図したものではない。代替的な実施形態では、SaaSプラットフォーム15およびPaaSプラットフォーム20は、クラウドコンピューティング環境10のユーザに追加のサービスを提供するための追加のコンポーネントを含んでいてもよい。
IaaSプラットフォーム20によってさまざまな異なるIaaSサービスが提供され得る。IaaSサービスは、SaaSプラットフォームおよびPaaSプラットフォームによって提供されるサービスを利用するユーザのために、ストレージ、ネットワークおよび他の基礎的なコンピューティングリソースなどの基本的なコンピューティングリソースの管理および制御を容易にする。
特定の実施形態では、クラウドコンピューティング環境10は、クラウドコンピューティング環境10のユーザにさまざまなサービスを提供するために使用されるリソースを提供するためのインフラストラクチャリソース30を含む。一実施形態では、インフラストラクチャリソース30は、PaaSプラットフォームおよびSaaSプラットフォームによって提供されるサービスを実行するために、サーバ、ストレージおよびネットワーキングリソースなどのハードウェアの予め作成された、最適化された組み合わせ(たとえばグループまたはセット)を含む。
特定の実施形態では、クラウド管理機能35は、クラウドコンピューティング環境10においてクラウドサービス(たとえばSaaS、PaaS、IaaSサービス)の包括的な管理を提供する。一実施形態では、クラウド管理機能35は、クラウドインフラストラクチャシステム10によって受信されたユーザのオーダーまたはサブスクリプションをプロビジョニング、管理および追跡するための機能などを含む。
配置ポリシーベースのリソース割当ておよび管理システムのための、システム、方法、および機械読取可能媒体などのいくつかの実施形態が開示される。図1Bは、本発明の実施形態に係る配置ポリシーベースのリソース割当ておよび管理システム100の簡略図を表わす。システム100は、コンピューティングリソースの割当ておよび管理を取扱うリソース管理システム140を含み得る。いくつかの実施形態では、システム100は、たとえばクラウドコンピューティング環境10などのクラウドコンピューティング環境において実現され得る。リソース管理システム140は、クラウンドコンピューティング環境と通信してもよいし、またはクラウドコンピューティング環境において実現されてもよい。リソース管理システム140は、クラウドまたはネットワーク化された環境を介してサービスを提供し得る。たとえば、リソース管理システム140は、クラウドコンピューティング環境10の一部としてサービスを提供し得る。いくつかの実施形態では、コンピューティングリソースの管理およびプロビジョニングのために、クラウドコンピューティング環境10は、サービスの要求に基づいてリソースを割当てるようにリソース管理システム140に要求し得る。リソースは、ユーザが示したプリファレンスに基づいて割当てられ得る。
コンピューティングリソースは、処理ユニット(たとえば1つのプロセッサ、複数のプロセッサ、またはマルチコアプロセッサ)、メモリ、1つの仮想マシン、ハイパーバイザ、ネットワーク、ネットワーク帯域幅、サーバ、POD、ストレージ、アプリケーション、複数の仮想マシン、サービス、または他のタイプのコンピューティングリソースを含み得るが、これらに限定されるものではない。PODは、以下のうちの1つを表わし得る論理エンティティである:(Javaサービスの場合と同様に)予めプロビジョニングされた匿名のシングルテナントデプロイメント;または、(データベースサービスの場合と同様に)複数のテナントをサーブするマルチテナントスタック(物理的または仮想的)。たとえば、PODは物理的なスタック上へのサービスのデプロイメントである。PODは1つ以上のサービスインスタンスを収容することができる。PODは先験的に作成することができるか、または、サービスインスタンスが所与の顧客のために作成されるときにオンデマンドで作成することができる。いくつかの例では、PODは、サービスを実行させるためのソフトウェアスタックのインスタンス化である。このため、PODを用いてサービスを実行する。たとえば、Javaサービスに対応するPODは仮想マシンのスタックを含んでいてもよい。別の例として、データベースサービスのためのPODは、データベースのインスタンスを含んでいてもよい。PODは、サービスをホストすることのできるサブシステムと見なされてもよい。異なるPODを異なるサービスのために用いてもよい。
コンピューティングリソースは、コンピューティングリソースの1つ以上のグループに割当てられ得る。コンピューティングリソースの各グループは、本明細書において「コンピューティングリソースユニット」と称される場合がある。図1Bは、コンピューティングリソースユニット102、104、106、108、110、112、114、116、118および120の例を示す。各コンピューティングリソースユニットは1つ以上のコンピューティングリソースを含み得る。コンピューティングリソースは、1つ以上のコンピューティングリソースユニットに割当てられ得る。コンピューティングリソースは1つ以上のデータセンターにおいて割当てられ得、データセンターの各々は異なる地理的領域内に位置し得る。各地理的領域は、それら地理的位置との通信を提供する1つ以上のネットワークによって分離され得る。たとえば、コンピューティングリソースユニット102、104、106はネットワーク122を介してアクセス可能な英国のデータセンター150内に位置し得、コンピューティングリソースユニット108はネットワーク124を介してアクセス可能な中国のデータセンター160内に位置し得、コンピューティングリソースユニット118、120はネットワーク126を介してアクセス可能なインドのデータセンター180内に位置し得、コンピューティングリソースユニット110、112、114、116はネットワーク128を介してアクセス可能な米国のデータセンター170内に位置し得る。
IaaS、SaaSおよびPaaSプロバイダなどの旧来のサービスプロバイダは、プロバイダにとって最も費用効果の高い態様でリソースをプロビジョニングして割当てるものであり、ユーザは、ユーザのニーズに最良に適合するようにリソースがどのようにまたはどこでプロビジョニングされるかを規定することはできない。多くの先行技術のシステムは、たとえば、オンデマンドでリソースを提供するという点で反応的である。そのようなシステムでは、リソースは、需要、容量、パフォーマンス、および可用性を含む要因に基づいて割当てられ得る。しかし、これらのシステムは、現在のデマンドに基づいて要求を予想せず、またはリソースのセットを特定および提供しない。さらに、先行技術のシステムでは、ユーザは、コンピューティングリソースのユーザに関連する要因に基づいてコンピューティングリソースの割当てを要求することができない。たとえば、既存のシステムでは、ユーザは、セキュリティの考慮事項(たとえばテナントとのリソースもしくは環境の共有)、パフォーマンスの考慮事項(たとえば仮想マシンへのハイパーバイザの割当て)、ユーザ特有のプリファレンス、または地理的な考慮事項(たとえばパフォーマンスを向上させるためのコンピューティングリソースの地理的位置)に基づいてコンピューティングリソースの割当てを要求することができない場合がある。本発明の実施形態は、ユーザのニーズに基づいてコンピューティングリソースの割当ておよび管理に関連するこれらおよび他の問題に対処する。
リソース管理システム140は、図1に示されるコンピューティングリソースへのアクセスをエンドユーザ(たとえば顧客130)に提供し得る。たとえば、図1に示されるように、リソース管理システム140はユーザ(たとえば顧客130)から要求(たとえばリソース要求132)を受信することができる。要求は1つ以上のコンピューティングリソースを示す。いくつかの実施形態では、要求は、IaaS、PaaSおよび/またはSaaSの1つ以上のサービスのオーダーまたはサービスサブスクリプションに対応し得るか、または当該オーダーまたはサービスサブスクリプションを含み得る。
要求は、コンピューティングリソースをユーザに割当てるためのリソース定義を示す情報を含み得る。リソースは、ユーザが要求したサービスに基づいてユーザに割当てられ得る。いくつかの実施形態では、要求は、リソース定義に基づくなどして、ユーザに割当てるべきリソースを示し得る。リソース定義は、ユーザに割当てるべきコンピューティングリソースのトポロジを示し得る。トポロジは、どのコンピューティングリソースを割当てるべきか、およびどのようにそれらのコンピューティングリソースを割当てるべきかを示し得る。いくつかの実施形態では、要求は、それらのコンピューティングリソースの配置を決定するための配置コンフィギュレーションを含み得る。配置コンフィギュレーションは、地理的位置、特定のコンピューティングリソースの分離、テナントとのコンピューティングリソースの共有、テナントからのコンピューティングリソースの分離、コンピューティングリソースの物理的コンフィギュレーション、および1つ以上のコンピューティングリソースユニットへのコンピューティングリソースの論理編成などの、コンピューティングリソースの配置を示し得る。
要求によって示された情報に基づいて、リソース管理システム140は、要求によって示されたコンピューティングリソースを割当てるための配置ポリシーを決定し得る。配置ポリシーは、たとえばリソース定義などの、要求に含まれている情報に基づいて選択され得る。配置ポリシーは、ユーザが要求した1つ以上のコンピューティングリソースの配置を示し得る。配置ポリシーは、コンピューティングリソースが割当てられるとコンピューティングリソースがどこでどのように配置されるべきかを示し得る。
次に図2を参照して、本発明の実施形態に係る配置ポリシーベースのリソース割当ておよび管理の例が表わされている。上述のように、典型的なPaaS、SaaSおよびIaaSプロバイダでは、ユーザは、自身が要求したコンピューティングリソースのどれが、どのように、どこでプロビジョニングされるかを定義することができない場合がある。代わりに、コンピューティングリソースは典型的に、それらのコンピューティングリソースのプロバイダに基づいて割当てられる。割当ては、プロバイダにとって最も費用効果の高い何らかの態様で起こり得る。しかし、プロバイダによるコンピューティングリソースの割当ては、ユーザにとって最も望ましいものでない場合があり、または、ユーザに最良のユーザ経験を提供しない場合がある。
本発明の実施形態は、ユーザが自身の要求に対する配置ポリシーを定義できるようにすることによって、ファイングレインのリソース割当て機能をユーザに与える。これは、コンピューティングリソースの選択のみでなく、リソースのコンフィギュレーションに対するさらに他の制御をユーザに与えることによって、いくつかの利点をユーザに提供し得る。ユーザが自身のリソースのコンフィギュレーションを制御できるようにすることによって、そのようなリソースのユーザの効率もさらに向上させることができる。
コンピューティングリソースのコンフィギュレーションを可能にすることがそれらのリソースの使用に有益であり得る例は数多くある。たとえば、ユーザは、特にデータが他のユーザのデータと同一のコンピューティングノード上に格納され得る場合、自身のデータのセキュリティに懸念を抱き得る。プロバイダはデータセキュリティについての保証を提供し得るが、そのような保証では不十分なユーザがいる場合もある。ユーザは代わりに、自身のコンピューティングノードを、その他のユーザ(たとえばテナント)と共有しない(たとえば専用である)こと、または他のユーザ(たとえばテナント)と共有することを望む場合がある。ユーザは、コンピューティングリソースを異なる物理システム、データセンター、および/または地理的領域に分離することを要求する、さらに一歩進んだ保護を望む場合がある。いくつかの例では、ユーザは、他のテナントがリソースにアクセス不可能なテナントベースのレベルでのコンピューティングリソースの分離を望む場合がある。
別の例では、ユーザは特定のパフォーマンスまたは冗長要件を有し得る。ユーザは、パフォーマンス要件が確実に満たされているようにするためにコンピューティングリソースのコンフィギュレーションを定義することを好む場合がある。この例では、ユーザはリソース割当てのためのコンフィギュレーションを具体的に定義することを望む場合があり、この場合、コンフィギュレーションはコンピューティングリソースの配列を示す。
ファイングレインのリソース割当てを可能にするために、本発明の実施形態は、ユーザのニーズに対応するようにユーザが複数の配置ポリシーから定義および/または選択することを可能にする。本明細書における配置ポリシーとは、コンピューティングリソースがユーザにどのように割当てられるかを定義する規則を指す。配置ポリシーは、いくつかの異なる要因に基づいてリソースの割当てを示し得る。
パフォーマンスが問題である場合、配置ポリシーは、コンピューティングリソースが1つのハイパーバイザまたは1セットのハイパーバイザ上で実行されるようにグループ化され得るように定義され得る。そのような配置ポリシーは、旧来のリソース割当て方法と比較して、ネットワーク通信および要求/応答時間を改善する(たとえばネットワーキング層への呼出を減少させる)ように選択され得、それによってリソースは、コスト効率化のために異なるハイパーバイザ同士またはハイパーバイザのセット同士の間で分配され得る。別の例では、共有のストレージリソースは、パフォーマンスを向上させるために、その関連付けられたコンピュートノードと同一の1つのハイパーバイザまたは1セットのハイパーバイザにおいて最良に割当てられ得る。上述のように、セキュリティの懸念は、専用のハイパーバイザ上でリソースを実行することによって対処され得る。これを用いて、異なるユーザ同士の間の、または別個に維持される必要がある同一のユーザによって制御されるデータのセット同士の間の悪意のアクセスまたは不注意なアクセスからデータを保護することができる。同様に、地理的制約(たとえばリソースをホストするデータセンターの位置についての限定)も、特定のセキュリティ、パフォーマンス、または規制要件を満たすように提供され得る。加えて、特定のリソースを別個のハイパーバイザまたはハイパーバイザのセット上で実行することによって、分離および/または冗長性が維持され得る。これを用いて、(たとえばダウンタイムを減少させるために)他のリソースに影響を及ぼすことなく、故障した場合にデータを保存すること、または、1セットのリソースに対して管理、事務、またはインフラストラクチャ操作(パッチングなど)を実行することができる。いくつかの実施形態では、企業デザイン、統合要件、または他の機能要件は、コンポーネントが同一のハイパーバイザ(たとえばSDI)の範囲内でのみ相互運用可能であることを要求し得る。
配置ポリシーの例としては、割当てられたリソースが、1セットのハイパーバイザに対して配置された仮想マシン上で実行される、専用のハイパーバイザポリシーが挙げられる。この1セットのハイパーバイザは、それらが他のユーザと共有されないという点で専用である。ベストフィット配置ポリシーによって仮想マシンが1セットのハイパーバイザに割当てられて、コンピューティングリソース利用が最適化され得る。たとえば、1セットのハイパーバイザは、リソースを節約し、リソース利用を最大化し、フラグメンテーションを減少させるために、または他のリソース最適化のために、必要に応じて他のユーザと共有され(かつ、他のリソースを実行し)得る。いくつかの実施形態では、配置ポリシーがユーザによって規定されない場合は、ベストフィット配置ポリシーはデフォルトで選択され得る。コンピューティングリソースの特定の部分がともに実行されるべきである場合は、グループフィット配置ポリシーが使用され得る。仮想マシンはともにグループ化され、同一のハイパーバイザプール内の1つ以上のハイパーバイザ上で実行され得る。配置ポリシーは必要に応じてユーザによってカスタマイズされ、上述の、またはその他の配置ポリシーの1つ以上からの特徴を組込むハイブリッド配置ポリシーが作成され得る。
図2に示されるように、ユーザ202は、リソース要求204をリソース管理システム140に提出し得る。リソース要求204は、要求されるコンピューティングリソースのトポロジを定義する定義206を含み得る。たとえば、定義206は、コンピューティングリソースの1つ以上のタイプと、コンピューティングリソースのタイプの各々の量とを示し得る。定義は、プロセッサ定義、メモリ定義、仮想マシン定義、またはこれらの組み合わせを含み得る。仮想マシン定義は、1セットの仮想マシンを特定し得る。定義206は、メモリ、CPUの数、ストレージ要件、およびユーザが要求した他の仕様などの、個別のコンピュートノードを定義し得る。たとえば、定義206内に示されるように、リソース要求204は9個の仮想マシンを含み、その各々が独自の仕様(たとえばメモリ、CPUの数、およびストレージ)を有している。9個の仮想マシンは、グループ1が3個を含み、グループ2が2個を含み、残りの4個の仮想マシンがグループ化されないように、グループ化される。この定義は、要求された仮想マシンの一部に対して2つのグループが規定されており、残りの仮想マシンにベストフィットポリシーが適用され得るという点で、ハイブリッド配置ポリシーを表わしている。
特定の実施形態では、要求は、複数のコンピューティングリソースを使用するためのサービスのタイプを示し得る。定義はサービスのタイプに基づいて特定され得る。たとえば、定義は、複数のコンピューティングリソースを用いてデプロイメントのためのサービスに基づいて特定される。
定義に基づいて、要求されたリソースが、たとえばリソースプール208などのリソースインフラストラクチャシステムによって割当てられ得る。リソースプール208は1つ以上のデータセンターを含み得るか、または当該データセンターを用いて実現され得る。いくつかの実施形態では、リソースプール208は、サービスプロバイダ(たとえばIaaSプロバイダ)によって管理されるハイパーバイザプールであり得る。いくつかの実施形態では、リソースプール208は、複数のリモートデータセンターにわたって分散している複数のリソースプールを含み得る。以下にさらに図3を参照して、リソース管理システム140の文脈でリソースプールを説明する。複数のコンピューティングリソースの配置は、配置コンフィギュレーションに従ってリソースプール208において確立され得る。配置コンフィギュレーションは、ユーザが要求したコンピューティングリソースの配置についての特性を含み得る。
一例では、配置コンフィギュレーションは、複数のリソースの配置が確立される地理的位置を含み得る。いくつかの実施形態では、配置コンフィギュレーションはコンピューティングリソースの1つ以上のグループを示し得る。たとえば、配置コンフィギュレーションは、複数のグループのうちの第1のグループに割当てられる1セットの仮想マシンを特定する。複数のコンピューティングリソースのうちの第1のコンピューティングリソースは、配置コンフィギュレーションに基づいてこの第1のグループに割当てられる。
いくつかの実施形態では、配置コンフィギュレーションは、他のコンピューティングリソースによる複数のコンピューティングリソースへのアクセスを防止するためのセキュリティコンフィギュレーションを含み得る。たとえば、セキュリティコンフィギュレーションは、複数のコンピューティングリソースを管理するために割当てられる1つ以上のハイパーバイザを示し得る。セキュリティコンフィギュレーションは、複数のコンピューティングリソースをサポートするためにハイパーバイザに割当てられる1セットの仮想マシンを示し得る。別の例では、配置コンフィギュレーションはパフォーマンスコンフィギュレーションを含む。パフォーマンスコンフィギュレーションは、第1のハイパーバイザに割当てられる第1のコンピューティングリソースを示し得、かつ、第2のハイパーバイザに割当てられる第2のコンピューティングリソースを示し得る。複数のコンピューティングリソースは、第1のコンピューティングリソースおよび第2のコンピューティングリソースを含む。
図3は、本発明の実施形態に係る配置ポリシーベースのリソース割当ておよび管理のためのシステム300のより詳細な高レベルの図を表わす。図3に示されるように、ユーザは、コンピュータ(たとえばユーザコンピュータ302)を用いてリソース管理システム140と通信してリソース要求304を送信し得る。リソース要求304は、割当てのための1つ以上のコンピューティングリソースの情報を示し得る。少なくとも一実施形態において、リソース要求304は、ユーザが要求した1つ以上のコンピューティングリソースを示す定義(たとえばリソース定義332)を含み得る。いくつかの実施形態では、リソース要求304は、リソース定義によって示されるコンピューティングリソースの割当てのための配置(たとえば物理的位置)についての情報を特定する配置コンフィギュレーション334を含み得る。たとえば、配置は、1つ以上のコンピューティングリソースユニットの地理的位置および/または定義を含み得る。リソース要求304内の情報を用いて、リソース定義332によって特定されるそれらのコンピューティングリソースについての配置ポリシーが決定され得る。
リソース管理システム140は、コンピュータシステムを用いて実現され得る。コンピュータシステムは、汎用コンピュータ、専用サーバコンピュータ(一例として、PCサーバ、UNIX(登録商標)サーバ、ミッドレンジサーバ、メインフレームコンピュータ、ラックマウント式サーバ等を含む)、サーバファーム、サーバクラスタ、分散サーバ、またはその他の適切な配置および/もしくはそれらの組み合わせであり得る1つ以上のコンピュータおよび/またはサーバを含み得る。コンピュータシステムは、HTTPサーバ、FTPサーバ、CGIサーバ、Javaサーバ、データベースサーバなどを含む、オペレーティングシステムまたはさまざまな追加のサーバアプリケーションおよび/もしくはミッドティアアプリケーションのいずれかを実行し得る。例示的なデータベースサーバとしては、オラクル、マイクロソフトなどから市販されているものが挙げられるが、これらに限定されるものではない。リソース管理システム140は、ハードウェア、ファームウェア、ソフトウェア、またはこれらの組み合わせを用いて実現され得る。さまざまな実施形態において、リソース管理システム140は、上記の開示において記載した1つ以上のサービスまたはソフトウェアアプリケーションを実行するように構成され得る。たとえば、リソース管理システム140は、本開示の実施形態に従って本明細書に記載されるような処理を実行するためのコンピューティングシステムに対応し得る。いくつかの実施形態では、リソース管理システム140は、上述したものを含み得る1つ以上のコンピュータおよび/またはサーバを含むクラウドインフラストラクチャシステムを用いて実現され得る。
リソース管理システム140は、いくつかのサブシステムおよび/またはモジュールを含んでいてもよく、そのいくつかは図示されていない場合がある。リソース管理システム140は、図に示されるよりも多いまたは少ないサブシステムおよび/またはモジュールを有していてもよく、2つ以上のサブシステムおよび/もしくはモジュールを組み合わせてもよく、または、サブシステムおよび/もしくはモジュールの異なるコンフィギュレーションもしくは配列を有していてもよい。いくつかの実施形態では、リソース管理システム140は、リソース要求インターフェイス308と、リソース割当てモジュール318と、ポリシーマネージャ312とを含み得る。ポリシーマネージャ312はポリシー更新モジュール328を含み得る。リソース管理システム140のサブシステムおよびモジュールは、ソフトウェア(たとえばプログラムコード、プロセッサによって実行可能な命令)で、ハードウェアで、またはこれらの組み合わせで実現され得る。いくつかの実施形態では、ソフトウェアはメモリ(たとえば非一時的なコンピュータ読取可能媒体)内に、メモリデバイス上に、または何らかの他の物理メモリ上に格納され得、1つ以上の処理ユニット(たとえば1つ以上のプロセッサ、1つ以上のプロセッサコア、1つ以上のGPU等)によって実行され得る。
リソース管理システム140は、仮想または非仮想コンピューティング環境において他のサービスおよび/またはソフトウェアアプリケーションを提供し得る。リソース管理システム140は、これまでの開示に記載したこれらのサービスまたはソフトウェアアプリケーションの1つ以上を実行するように構成され得る。リソース管理システム140によって供給されるサービスは、SaaSサービス、PaaSサービスおよびIaaSサービスを含み得るが、これらに限定されるものではない。クライアントシステムがリソース管理システム140に通信可能に連結され得る。サービスは、インターネットなどの通信ネットワークを介してアクセス可能であり得る。クライアントシステムを操作するユーザは1つ以上のアプリケーションを使用してリソース管理システム140と対話し、リソース管理システム140によって提供されるサービスにアクセスし得る。
リソース管理システム140は、少なくとも1つのメモリ、1つ以上の処理ユニット(またはプロセッサ)、およびストレージを含み得る。処理ユニットは、ハードウェア、コンピュータ実行可能命令、ファームウェア、またはこれらの組み合わせで適宜実現され得る。処理ユニットのコンピュータ実行可能命令またはファームウェア実装例は、本明細書に記載されるさまざまな動作、機能、方法、および/または処理を実行するために任意の好適なプログラミング言語で書かれたコンピュータ実行可能またはマシン実行可能命令を含み得る。リソース管理システム140内のメモリは、処理ユニット上でロード可能および実行可能なプログラム命令と、これらのプログラムの実行時に生成されるデータとを格納し得る。メモリは、揮発性(ランダムアクセスメモリ(RAM)など)および/または不揮発性(読取専用メモリ(ROM)、フラッシュメモリなど)であり得る。メモリは、コンピュータ読取可能記憶媒体などの任意の種類の永続記憶装置を用いて実現され得る。いくつかの実施形態では、コンピュータ読取可能記憶媒体は、悪意のあるコードを含む電子通信からコンピュータを保護するように構成され得る。コンピュータ読取可能記憶媒体は、プロセッサによって実行されると本明細書に記載される動作を実行する命令を格納し得る。
リソース管理システム140は追加のストレージを含み得るか、または当該ストレージに結合され得、当該ストレージは、メモリ記憶装置または他の非一時的なコンピュータ読取可能記憶媒体などの、任意の種類の永続記憶装置を用いて実現され得る。いくつかの実施形態では、ローカルストレージは、1つ以上のデータベース(たとえば文書データベース、リレーショナルデータベース、もしくは他のタイプのデータベース)、1つ以上のファイルストア、1つ以上のファイルシステム、またはこれらの組み合わせを含み得るか、または実現し得る。メモリおよび追加のストレージはすべて、コンピュータ読取可能記憶媒体の例である。たとえば、コンピュータ読取可能記憶媒体は、コンピュータ読取可能命令、データ構造、プログラムモジュール、または他のデータなどの情報を記憶するための任意の方法または技術で実現される揮発性または不揮発性の、リムーバブルまたは非リムーバブルな媒体を含み得る。いくつかの実施形態では、リソース管理システム140は、ポリシー定義320(「ポリシー定義」)のためのデータストアなどの1つ以上のデータストアに結合され得るか、または当該データストアを含み得る。ポリシー定義320は、配置ポリシー326およびリソース定義322を含み得る。
いくつかの実施形態では、リソース管理システム140は、たとえばリソースプール310などの1つ以上のリソースプールへのアクセスを含み得るか、または提供し得る。リソースプール310は、リソースインフラストラクチャシステムによってサポートされ得る。リソースインフラストラクチャシステムは、リソース管理システム140によって実現され得るか、またはリソースプール310を実現する第三者プロバイダからアクセスされ得る。リソースインフラストラクチャシステムは、IaaSサービスとして実現され得る。リソースプール310は、リソース管理システム140によって管理されるか、またはリソース管理システム140がアクセス可能な1つ以上のデータセンターを用いて実現され得る。リソースプール310は、1つ以上のコンピューティングリソースへのアクセスを提供し得る。リソース割当てモジュール318は、リソースプール310によって提供されるコンピューティングリソースの割当ておよび管理のためのサポートを提供し得る。
リソースプール310内のコンピューティングリソースにアクセスするための1つ以上のインデックスが維持され得る。インデックスは、特定のデータセンターにおいてどのリソースが現在利用可能であるか、および/または各データセンターがどのリソースを提供可能であるかを示し得る。たとえば、データセンターインデックス314は、接続された各データセンターにおいていくつのハイパーバイザが利用可能であるか、ならびに、それらのハイパーバイザが専用の配置ポリシーについて共有および/または使用され得るか否かを示し得る。同様に、リソースインデックス316は、現在利用可能なアプリケーションサーバ、RACノード、ストレージノードなどの、どの既存のリソースが任意の所与のデータセンターにおいて利用可能であるかを示し得る。
リソース管理システム140は、リソース要求インターフェイス308を介してリソース要求(たとえばリソース要求304)を受信し得る。リソース要求インターフェイス308は、クライアントシステム(たとえば、異なるユーザと関連付けられたクライアントおよび/または同一のユーザと関連付けられた複数のクライアントシステム)の複数のインスタンスと通信得る。いくつかの実施形態では、リソース要求インターフェイス308は、ユーザコンピュータ302とリソース管理システム140との間の通信を容易にするために1つ以上の通信プロトコル(たとえばウェブベースの通信プロトコル)を用いて通信をサポートし得る。いくつかの実施形態では、リソース要求インターフェイス308は、プログラミングインターフェイス(たとえばアプリケーションプログラミングインターフェイス(API))によって定義され得る。プログラミングインターフェイスは、リソースプール310からのコンピューティングリソースを要求するための呼出可能機能を含み得る。
リソース要求インターフェイス308は、ユーザが要求したコンピューティングリソースを割当てるために、リソース要求をポリシーマネージャ312およびリソースプール310に通信し得る。リソースプール310は、リソース管理システム140によって管理される1つ以上のデータセンターにおける1つ以上のリソースプールにアクセスするためのインターフェイスの役割を果たし得る。ポリシーマネージャ312は、どのコンピューティングリソースが要求されているか、かつ、1つ以上のリソースプールにおけるコンピューティングリソースを割当てるための配置ポリシーが存在する場合は、どの配置ポリシーに従って要求されているかを決定し得る。ポリシーマネージャ312は、リソース割当てモジュール318と通信して、配置ポリシーに基づいてリソースの割当てを要求し得る。
ポリシーマネージャ312は、1つ以上のポリシー定義320を用いてコンピューティングリソースの割当ておよび配置を管理し得る。ポリシー定義は、1つ以上の配置ポリシー326および1つ以上のリソース定義322を含み得る。配置ポリシーは、コンピューティングリソースをどのように構成するかを示す情報を含み得る。リソース定義は、コンピューティングリソースの1つ以上のタイプと、割当てるべきコンピューティングリソースのタイプの各々の数とを示し得る。リソース定義の例を図4を参照して以下に説明する。リソース定義に割当てられるコンピューティングリソースは、それらのリソースの配置のために決定された配置ポリシーに従って「配置され」得るか、または構成され得る。ポリシー定義は、配置ポリシーに対するリソース定義の関係に基づいて配置ポリシーが特定され得るように、配置ポリシーと1つ以上のリソース定義との関係を示し得る。ポリシー定義は、配置ポリシーと、リソース要求を満たすリソース定義とに基づいて選択され得る。
配置ポリシー326の1つ以上は、地理的位置についてのプリファレンス、コンピューティングリソースについてのセキュリティ(たとえば許可されたユーザもしくはテナント)、リソースの分離、コンピューティングリソースの1つ以上のグループ化、または仮想マシンへのハイパーバイザの割当て、といったユーザからの入力に基づいて構成され得る。配置ポリシー326の一部は、コンピューティングリソースの配置のより頻繁なまたは一般的なタイプに基づいて定義され得る。配置ポリシーの例としては、とりわけ、ベストフィット配置ポリシー、分離配置ポリシー、セキュリティ配置ポリシー、およびパフォーマンス配置ポリシーなどの上述したものが挙げられ得る。たとえば、パフォーマンス配置ポリシーは、2つの異なるハイパーバイザとは対照的に単一のハイパーバイザについてのコンピューティングノードのコンフィギュレーションを示し得る。別の例では、セキュリティ配置ポリシーは、リソースプール310によって提供される単一のリソースプール内のコンピューティングリソースのコンフィギュレーションを示し得、リソースプールは他のユーザから分離されている。別の例では、分離配置ポリシーは、他のユーザに割当てられたコンピューティングリソースと共有されない単一のリソースプールに分離された1セットのハイパーバイザ上にグループ化されるコンピューティングノードのコンフィギュレーションを示し得る。
いくつかの実施形態では、配置ポリシーは、ユーザからのリソース要求内に提供された、たとえば配置コンフィギュレーション334などの配置コンフィギュレーションに基づいて定義され得る。配置コンフィギュレーション334は、セキュリティプリファレンス(たとえば、他のユーザと共有されないセキュアなリソースプールへのリソースの割当て)、分離プリファレンス(たとえば、他のリソースプールから切離された特定のプールへのコンピューティングリソースの割当て)、パフォーマンスプリファレンス(たとえば、リソースの特定の数)、または地理的プリファレンス(たとえば、リソースの地理的位置)といった、コンピューティングリソースの配置のための1つ以上のプリファレンスを示す情報を含み得る。
リソース定義322の1つ以上は、ユーザから受信した情報に基づいて構成され得る。いくつかの実施形態では、リソース定義は、ユーザコンピュータ302を操作するユーザなどのユーザによって構成され得る。リソース定義はコンピューティングリソースの1つ以上の特性を示し得る。たとえば、リソース定義は、リソースのタイプと、割当てるべきリソースの各タイプの量とを示し得る。リソースのタイプは、要求されるサービスに基づいて示され得る。いくつかの実施形態では、リソース定義は、検査、開発、製造などの使用のタイプ毎に構成され得る。リソース定義は、リソース要求304内に受信した入力に基づいてリソース定義322から選択され得る。リソース要求は、使用のタイプ、またはコンピューティングリソースの使用に関連する1つ以上の属性を示し得、リソース要求内の情報を用いて、要求と一致する1つ以上のリソース定義が特定され得る。いくつかの実施形態では、リソース定義は、たとえばリソース要求330内に受信したリソース定義332などのリソース定義に基づいて定義され得る。
いくつかの実施形態では、ポリシーマネージャ312は、リソース要求330に対するリソース定義322の中から1つのリソース定義を特定し得る。上述したように、リソース要求330はリソース定義を特定するのに有用な情報を含み得る。いくつかの例では、リソース要求330はリソース定義の識別子を含み得、当該リソース定義を用いて識別子に基づいてリソース定義が特定され得る。いくつかの実施形態では、リソース定義は、リソース要求330内に示されるコンピューティングリソースに対する1つ以上の基準に基づいて特定され得る。基準は、リソースの数、要求されるサービスのタイプ(たとえばデプロイメントのためのサービス)、リソースのタイプ、または使用のタイプ(たとえば製造、開発、もしくは検査)を含み得る。サービスの例としては、PaaS、SaaS、および/またはIaaSの1つ以上が挙げられ得る。要求は、IaaSサービスに対するインフラストラクチャの1つ以上のコンピューティングリソースを定義し得る。ポリシーマネージャ312は、基準と一致するリソース定義322の中から1つのリソース定義を選択し得る。いくつかの例では、リソース定義は、リソース定義322のうちの基準により近い一致として特定され得る。いくつかの実施形態では、リソース要求330は、リソース要求330がリソース定義を示し得ないように、サービスの要求を示し得る。代わりに、リソースは、リソース要求330内に示されるサービスに対応して特定されるポリシーに基づいて定義されてもよい。
ポリシーマネージャ312は、リソース要求によって要求される1セットのコンピューティングリソースのコンフィギュレーションのための配置ポリシーを決定するように構成され得る。いくつかの実施形態では、1つ以上の基準(たとえば配置コンフィギュレーション334)がリソース要求330に含まれ得る。リソース要求内の基準を用いて、配置ポリシー326の中から1つの配置ポリシーが決定され得る。基準は、コンピューティングリソースの編成(たとえばグループ化)、コンピューティングリソースの配置のための地理的位置、セキュリティ分離特性、共有プリファレンス(たとえばユーザもしくは他のテナントとの共有もしくは非共有)、または特定のタイプのコンピューティングリソースの配列(たとえば仮想マシン割当てに対するハイパーバイザ)を含み得るが、これらに限定されるものではない。ポリシーマネージャ312は配置ポリシー326を評価して、リソース要求330内のユーザが提供した基準と良く一致する配置ポリシーを決定し得る。いくつかの実施形態では、1つ以上の配置ポリシー326が、コンピューティングリソースの配置を定義する1つ以上の属性と関連付けられて格納され得る。属性はリソース要求内の基準と比較されて、ユーザの要求により良く一致する配置ポリシーが特定され得る。
ポリシーマネージャ312は、ポリシー定義320を更新するように構成されるポリシー更新モジュール328を含み得る。ポリシー定義320は、ユーザコンピュータ302から受信した情報に基づいて更新され得る。いくつかの実施形態では、ポリシー更新モジュール328は、以前のリソース要求に基づいてポリシー定義320を動的に作成または修正し得る。たとえば、ポリシー更新モジュール328は、リソース要求に対してより頻繁に選択されるリソース定義および配置ポリシーに基づいて、新たなポリシー定義を作成し得る。要求されるリソースの履歴に基づいて、ポリシー更新モジュール328は、要求されるリソースに対する基準により良く一致する1つ以上の新たなリソース定義および/または配置ポリシーを作成し得る。
リソース要求に対して選択されたポリシー定義に基づいて、リソースプール310は、ポリシー定義に従って1つ以上のコンピューティングリソースを割当て得る。リソース割当てモジュール318は、ポリシー定義の配置ポリシーおよびリソース定義を用いて、リソースプール310からコンピューティングリソースを割当て得る。リソース定義を用いて、リソースプール310内の割当てるべきコンピューティングリソースが決定され得る。コンピューティングリソースのコンフィギュレーションは、リソース要求に基づいて選択されたポリシー定義の配置ポリシーに基づいて決定され得る。リソース割当てモジュール318は、データセンターインデックス314およびリソースインデックス316を用いて、ポリシー定義に従って割当て用のコンピューティングリソースを特定し得る。データセンターインデックス314およびリソースインデックス316は、リソース要求に対して割当てられるコンピューティングリソースを反映するように更新され得る。たとえば、ポリシー定義に従ってコンピューティングリソースが割当てられると、データセンターインデックス314および/またはリソースインデックス316は、ユーザに割当てられたリソースについての情報を示すデータで更新され得る。ユーザの識別子が、ユーザに割当てられたコンピューティングリソースの各々の識別子と関連付けられて格納され得る。データセンターインデックス314および/またはリソースインデックス316は、ユーザに割当てられたコンピューティングリソースと関連付けられて格納されるユーザの識別子で更新され得る。
リソース割当てモジュール318は、リソース要求に対してもはや使用されないコンピューティングリソースの割当てを解除し得る。リソース割当てモジュール318は、リソースプール310をサポートする1つ以上のデータセンターと通信してコンピューティングリソースを割当て得、および/または割当てを解除し得る。たとえば、リソース割当てモジュール318は、地理的に離れたデータセンターと通信して、配置ポリシーが異なる地理的場所への割当てを示す配置ポリシーに従ってコンピューティングリソースを割当て得る。リソース割当てモジュール318は、リソースプール310内のコンピューティングリソースの割当ておよび割当て解除についての情報(たとえばステータス)をポリシーマネージャ312に通信し得る。
ポリシーマネージャ312は、コンピューティングリソースがリソース要求に対してリソースプール310において割当てられたか否かを判断し得る。リソース割当てモジュール318から受信した情報に基づいて、ポリシーマネージャ312は、通知(たとえば通知304)をユーザコンピュータ302に送信して、リソース要求330と関連付けられているユーザにコンピューティングリソースの割当てを通知するよう要求し得る。通知304は、割当てられるコンピューティングリソースと、コンピューティングリソースが割当てられる態様(たとえばコンフィギュレーション)とについての情報を含み得る。
典型的に、クラウドリソースプールなどの共有のリソース環境では、リソースは、コスト、パフォーマンス、および可用性を含む要因に基づいて最適化されるようにプロバイダによって割当てられ得る。そのような例では、ユーザには、ユーザにとって重要なセキュリティ、パフォーマンス、および地理的位置などの考慮事項に基づいたリソースの割当ての要求に対する制御が与えられない。ユーザの要求に基づいてコンピューティングリソースを割当てることによって、ユーザには、共有のリソース環境においてそれらのコンピューティングリソースを割当てる際にさらに他の制御が与えられる。いくつかの実施形態では、ユーザは、セキュリティ、パフォーマンス、およびオペレーションについての重要な考慮事項が確実に対処されるように、コンピューティングリソースのコンフィギュレーションなどの基準を提供し得る。
図4は、本発明のいくつかの実施形態に係る1つ以上のコンピューティングリソースのリソース定義を格納するためのデータ構造400の例を表わす。データ構造400は、リソース要求に対するリソース定義の一例を提供している。データ構造400は、コンピューティングリソースに対するリソース要求に含まれ得る。いくつかの実施形態では、データ構造(たとえばデータ構造400)の各インスタンスはリソース定義322内のリソース定義に対応し得る。コンピューティングリソースは、リソース定義に基づいてリソースプール(たとえばリソースプール310)において割当てられ得る。
データ構造400は、アレイ、レコード、リレーショナルデータベーステーブル、ハッシュテーブル、連結リスト、または他のタイプのデータ構造を含むがこれらに限定されるものではない異なるタイプのデータ構造のうちの1つまたはこれらの組み合わせとして実現され得る。例示を目的として、データ構造400は特定の数のフィールド(フィールド402、404、406、408、410および412)を有する配列において示されているが、データ構造400は示されるのとは異なる配列内でより多いまたは少ないフィールドによって定義されてもよい。フィールドの数および/またはタイプは、要求されるコンピューティングリソースに基づいて異なり得る。特定のフィールドに関して示されているデータは、データレコード400に格納され得るか、またはデータが格納されているメモリの位置を示し得る。
フィールド402(「仮想マシン識別子」)は、割当てるべき仮想マシンについての情報を含む。いくつかの実施形態では、フィールド402は、データ構造400のリソース定義に基づいて割当てるべき特有の仮想マシンの識別子を含み得る。フィールド404は、リソース定義に割当てるべきプロセッサの数についての情報を含み得る。プロセッサの数はハードウェアプロセッサ(たとえばハードウェアプロセッサ)に対応し得る。フィールド406は、割当てるべきメモリの量を示し得る。いくつかの実施形態では、フィールド406および/または他のフィールドは、異なるコンピューティングリソースユニットに割当てるべきメモリの量についての情報を含み得、割当てるべきメモリのタイプを示し得る。フィールド408は、たとえば仮想マシンの1つ以上の名前などの、仮想マシンについての情報を含み得る。いくつかの実施形態では、フィールド408は、ハイパーバイザに対する仮想マシンのコンフィギュレーションについての情報を含み得る。フィールド408は、ハイパーバイザに仮想マシンを割当てる配列または編成についての情報を含み得る。フィールド410は、コンピューティングリソースに対して実装すべき1つ以上のオペレーティングシステムについての情報を含み得る。フィールド410は、実装すべきオペレーティングシステムのタイプを示し得る。フィールド412は、データレコード400によって特定されるコンピューティングリソースの1つ以上のコンピューティングリソースユニットについての情報などのグループ特定情報を含み得る。
いくつかの実施形態では、リソース定義はテキストフォーマットで提供され得る。リソース定義は、図4に示されるようなフォーマットで格納され得る。以下に示すリスティング1は、ユーザによって規定されるリソース定義の例である:
リスティング1の例に示されるように、2つのグループにおける13個の仮想マシンがリソース要求内に示されている。いくつかの実施形態では、グループは、明示的なグループIDを有さずに、VMの名前に基づいて特定され得る。リスティング1は、顧客関係マネージャ(customer 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アドレスとしてセットアップされ得る。
上述のように、リソースグループは、リソース定義に基づいて自動的に特定され得、および/またはリソース定義において明示的に定義され得る。たとえば、リスティング1では、「RAC_*」と名付けられた各仮想マシンが、リソースプール内のグループとして特定されて割当てられ得る。いくつかの実施形態では、推奨されるグループがノード名に基づいて特定され、確認のためにユーザに提示され得る。いくつかの実施形態では、明示的なグループIDがリソース定義に含まれ得る。たとえば、リスティング1に示されるように、VM1〜5は1のGroup_IDを含むのに対して、VM6〜13は0のGroup_IDを含む。いくつかの実施形態では、Group_IDが既存のグループに対応する場合、新たに要求されるVMは当該既存のグループに追加され得る。
リソース定義に基づいて、要求されたリソースがリソースプール310から割当てられ得る。いくつかの実施形態では、リソースプール310はIaaSプロバイダによって管理されるハイパーバイザプールであり得る。いくつかの実施形態では、リソースプール310は、複数のリモートデータセンターにわたって分散している複数のリソースプールを含み得る。
図5は、本発明の実施形態に係る配置ポリシーベースのリソース割当てのプロセスのフローチャート500を示す。いくつかの実施形態では、フローチャート500に表わされるプロセスは、図1のリソース管理システム140によって実現され得る。コンピューティングリソースは、図3のリソースプール310などのリソースインフラストラクチャシステムによって割当てられ得る。リソースインフラストラクチャシステムは、コンピューティングリソースの割当てをサポートするための1つ以上のデータセンターを含み得る。リソースインフラストラクチャシステムは、リソース管理システム140に含まれ得るか、またはリソース管理システム140によって実現され得る。いくつかの実施形態では、リソース管理システム140は、割当てるべきコンピューティングリソースと、それらコンピューティングリソースのコンフィギュレーションのための配置ポリシーとを決定し得、リソース管理システム140は、コンピューティングリソースを割当てるようにリソースインフラストラクチャシステムに要求し得る。
フローチャート500は、サービスの要求を受信することによってステップ502において開始し得る。たとえば、リソース管理システム140は、コンピューティングリソースに対するリソース要求132またはリソース要求330を受信し得る。当該サービスは、IaaSサービス、PaaSサービス、またはSaaSサービスの1つ以上を含み得る。要求は、顧客などのユーザが操作するコンピュータ(たとえばユーザコンピュータ302)から受信され得る。要求内の情報を用いて、割当てるべきコンピューティングリソースおよび/またはそのようなリソースの配置が決定され得る。
要求は、ユーザが要求した1つ以上のコンピューティングリソースを示す情報、または当該1つ以上のコンピューティングリソースを決定するために用いられる情報を含み得る。コンピューティングリソースの例としては、1つ以上の処理ユニット(たとえばプロセッサもしくはマルチコアプロセッサ)、1つ以上のメモリ、1つ以上の仮想マシン、または1つ以上のハイパーバイザが挙げられ得るが、これらに限定されるものではない。いくつかの実施形態では、要求は、ユーザが要求した1つ以上のコンピューティングリソースの定義(たとえばリソース定義)を示し得る。
ステップ504において、複数のコンピューティングリソースの定義(たとえばリソース定義)が特定され得る。定義は、割当てるべきコンピューティングリソースの特性(たとえばコンピューティングリソースのタイプ)、およびコンピューティングリソースの量を示し得る。いくつかの実施形態では、定義は要求(たとえばステップ502で受信した要求)に基づいて特定され得る。コンピューティングリソースの1つ以上の定義がユーザによって構成され、要求内に受信した情報に基づいて選択され得る。たとえば、要求は、構成された定義、または構成された定義を選択するための1つ以上の基準を示し得る。いくつかの実施形態では、リソース定義は、要求されたサービスに基づいて特定され得る。サービスは、当該サービスを可能にするためのコンピューティングリソースのタイプおよび量を示すリソース定義に基づいて定義され得る。
ステップ506において、複数のコンピューティングリソースの配置コンフィギュレーションを示す配置ポリシーが決定され得る。いくつかの実施形態では、要求に含まれている情報に基づいて配置ポリシーが決定され得る。要求は、要求されたコンピューティングリソースの配置についての1つ以上の特性を示し得る。たとえば、要求は配置コンフィギュレーションを含み得る。配置ポリシーは、配置コンフィギュレーションと一致する配置ポリシーを特定することに基づいて、複数の配置ポリシーから選択され得る。いくつかの例では、配置ポリシーは、要求されたコンピューティングリソースの配置についての特性を最良に満たす配置ポリシーとして決定され得る。配置特性は、コンピューティングリソースのグループ化(たとえばコンピューティングリソースのタイプの1つ以上のグループ定義)、1つ以上の位置特性(たとえば地理的位置)、または1つ以上のセキュリティ特性(たとえば分離された環境もしくは分離されたコンピューティングリソース)といった、コンピューティングリソースの配置に関連し得る。
ステップ508において、配置ポリシーおよび定義を用いて、コンピューティングリソースが割当てられ得る。たとえば、リソース管理システム140は、コンピューティングリソースがリソースプールにおいて割当てられることを要求し得る。配置ポリシー内の情報および定義はリソースインフラストラクチャシステムに提供されて、コンピューティングリソースが割当てられ得る。ステップ510において、フローチャート500のプロセスが終了する。
図6は、本発明の実施形態に係る配置ポリシーベースのリソース割当てのプロセスのフローチャート600を示す。いくつかの実施形態では、フローチャート600に表わされるプロセスは、図1のリソース管理システム140によって実現され得る。コンピューティングリソースは、図3のリソースプール310などのリソースインフラストラクチャシステムによって割当てられ得る。リソースインフラストラクチャシステムは、コンピューティングリソースの割当てをサポートするための1つ以上のデータセンターを含み得る。リソースインフラストラクチャシステムは、リソース管理システム140に含まれ得るか、またはリソース管理システム140によって実現され得る。いくつかの実施形態では、リソース管理システム140は、割当てるべきコンピューティングリソースと、それらコンピューティングリソースのコンフィギュレーションのための配置ポリシーとを決定し得、リソース管理システム140は、コンピューティングリソースを割当てるようにリソースインフラストラクチャシステムに要求し得る。
フローチャート600は、サービスの要求を受信することによってステップ602において開始し得る。たとえば、リソース管理システム140は、サービスへのサブスクリプションのオーダーを受信し得る。サービスは、IaaSサービス、PaaSサービス、またはSaaSサービスの1つ以上を含み得る。要求内の情報を用いて、割当てるべきコンピューティングリソースおよび/またはそのようなリソースの配置が決定され得る。
要求は、ユーザが要求した1つ以上のコンピューティングリソースを示す情報、または当該1つ以上のコンピューティングリソースを決定するために用いられる情報を含み得る。コンピューティングリソースの例としては、1つ以上の処理ユニット(たとえばプロセッサもしくはマルチコアプロセッサ)、1つ以上のメモリ、1つ以上の仮想マシン、または1つ以上のハイパーバイザが挙げられ得るが、これらに限定されるものではない。いくつかの実施形態では、要求は、ユーザが要求した1つ以上のコンピューティングリソースの定義(たとえばリソース定義)を示し得る。
いくつかの実施形態では、要求は、要求されたサービスに対する1つ以上の基準(たとえば条件)を含み得る。基準は、1つ以上のコンピューティングリソースがサービスにどのように割当てられるかを示し得る。コンピューティングリソースは、サービスを可能にするためのコンピューティングリソースを含み得る。基準は、コンピューティングリソースを割当てるための配置特性を示し得る。基準は、いつ、どのように、および/またはどのリソースがサービスに割当てられるかを示し得る。たとえば、基準は、コンピューティングリソースのグループ化(たとえばコンピューティングリソースのタイプの1つ以上のグループ定義)、1つ以上の位置特性(たとえば地理的位置)、または1つ以上のセキュリティ特性(たとえば分離された環境もしくは分離されたコンピューティングリソース)を示し得る。いくつかの実施形態では、基準は、リソースをマルチテナント環境において特定のテナントとともに割当てるべきか、または特定のテナントとともに割当てるべきでないかを示し得る。基準は、共有可能なリソースのタイプ、および/または当該リソースのタイプが誰と共有可能であるかを示し得る。
ステップ604において、複数のコンピューティングリソースの定義(たとえばリソース定義)が特定され得る。定義は、割当てるべきコンピューティングリソースの特性(たとえばコンピューティングリソースのタイプ)、およびコンピューティングリソースの量を示し得る。いくつかの実施形態では、定義は要求(たとえばステップ602で受信した要求)に基づいて特定され得る。たとえば、リソース定義は、ユーザが要求したサービスのタイプに基づいて特定され得る。リソース定義は、サービスの各タイプに対して、または特有のサービスに対して定義され得る。要求がIaaSサービスに対するものである場合、当該要求はユーザに割当てるべきリソースを含み得る。当該要求は、ユーザによって構成され、かつ要求内に受信した情報に基づいて選択されるコンピューティングリソースの1つ以上の定義を含み得るか、または特定し得る。いくつかの実施形態では、リソース定義は、要求されたサービスに基づいて特定され得る。サービスは、当該サービスを可能にするためのコンピューティングリソースのタイプおよび量を示すリソース定義に基づいて定義され得る。
いくつかの実施形態では、ステップ606において、複数のコンピューティングリソースの配置コンフィギュレーションを示す配置ポリシーが決定され得る。いくつかの実施形態では、要求に含まれている基準に基づいて配置ポリシーが決定され得る。要求は、要求されたコンピューティングリソースの配置についての1つ以上の特性を示し得る。たとえば、要求は配置コンフィギュレーションを含み得る。配置ポリシーは、配置コンフィギュレーションと一致する配置ポリシーを特定することに基づいて、複数の配置ポリシーから選択され得る。いくつかの例では、配置ポリシーは、要求されたコンピューティングリソースの配置についての特性を最良に満たす配置ポリシーとして決定され得る。配置特性は、コンピューティングリソースのグループ化(たとえばコンピューティングリソースのタイプの1つ以上のグループ定義)、1つ以上の位置特性(たとえば地理的位置)、または1つ以上のセキュリティ特性(たとえば分離された環境もしくは分離されたコンピューティングリソース)といった、コンピューティングリソースの配置に関連し得る。配置特性は、要求内の基準に一部基づいて決定され得る。
ステップ608において、配置ポリシーおよび定義を用いて、コンピューティングリソースが割当てられ得る。たとえば、リソース管理システム140は、コンピューティングリソースをリソースプールにおいて割当てるよう要求し得る。配置ポリシー内の情報および定義はリソースインフラストラクチャシステムに提供されて、コンピューティングリソースが割当てられ得る。ステップ610において、フローチャート600のプロセスが終了する。
図5および図6に表わされるプロセスは、1つ以上の処理ユニット(たとえばプロセッサコア)によって実行されるソフトウェア(たとえばコード、命令、プログラム)、ハードウェア、またはこれらの組み合わせで実現され得る。ソフトウェアはメモリ内に(たとえば、メモリデバイス上に、非一時的なコンピュータ読取可能記憶媒体上に)格納され得る。図5および図6における特定の一連の処理ステップは限定的であるよう意図されるものではない。代替的な実施形態に従って他の順番のステップが実行されてもよい。たとえば、本発明の代替的な実施形態は、上記に概説したステップを異なる順序で実行してもよい。さらに、図5および図6に示される個々のステップは、個々のステップに適切であるようにさまざまな順番で実行され得る複数のサブステップを含んでいてもよい。さらに、特定の用途によっては追加のステップが追加または削除されてもよい。図5および図6の各々に表わされる処理は、ユーザからの要求に基づいた配置ポリシーベースのリソース割当てに関するものであるが、そのような処理は、コンピューティングリソースを割当てるための異なるタイプの特性を示す複数のリソース要求に対して実行されてもよい。当業者は、多くの変形例、変更例、および代替例を認識するであろう。
図7は、実施形態を実現するための分散システム700の簡略図を表わす。示される実施形態では、分散システム700は、1つ以上のネットワーク710上でウェブブラウザ、プロプライエタリクライアント(たとえばオラクルフォームズ(Oracle Forms))などのクライアントアプリケーションを実行および操作するように構成された1つ以上のクライアントコンピューティングデバイス702、704、706、および708を含む。サーバ712は、ネットワーク710を介して遠隔のクライアントコンピューティングデバイス702、704、706、および708と通信可能に連結され得る。
さまざまな実施形態において、サーバ712は、配置ポリシーベースのリソース割当てのためのサービスおよびアプリケーションなどの1つ以上のサービスまたはソフトウェアアプリケーションを実行するように適合され得る。特定の実施形態では、サーバ712はまた、非仮想および仮想環境を含み得るその他のサービスまたはソフトウェアアプリケーションを提供し得る。いくつかの実施形態では、これらのサービスは、クライアントコンピューティングデバイス702、704、706、および/または708のユーザに対して、ウェブベースのもしくはクラウドサービスとして、またはサービスとしてのソフトウェア(SaaS)モデルの下で供給され得る。クライアントコンピューティングデバイス702、704、706、および/または708を操作するユーザは次に、1つ以上のクライアントアプリケーションを利用してサーバ712と対話することにより、これらのコンポーネントが提供するサービスを利用し得る。
図7に表わされる構成では、システム700のソフトウェアコンポーネント718、720および722は、サーバ712上に実装されるものとして示されている。他の実施形態では、システム700の上記コンポーネントおよび/またはこれらのコンポーネントが提供するサービスのうちの1つ以上が、クライアントコンピューティングデバイス702、704、706、および/または708のうちの1つ以上によって実装されてもよい。そうすると、クライアントコンピューティングデバイスを操作するユーザは、クライアントアプリケーションのうちの1つ以上を用いて、これらのコンポーネントが提供するサービスを利用することができる。これらのコンポーネントは、ハードウェア、ファームウェア、ソフトウェア、またはこれらの組み合わせで実装されてもよい。分散システム700とは異なり得る多種多様なシステムコンフィギュレーションが可能であるということが認識されるべきである。図7に示される実施形態はしたがって、ある実施形態のシステムを実現するための分散システムの一例であって、限定的であるよう意図されるものではない。
クライアントコンピューティングデバイス702、704、706、および/または708は、さまざまな種類のコンピューティングシステムを含み得る。たとえば、クライアントコンピューティングデバイスは、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のようなオペレーティングシステムのうちのいずれかを実行するワークステーションコンピュータであってもよい。また、クライアントコンピューティングデバイスは、ネットワーク710上で通信可能な、シンクライアントコンピュータ、インターネット接続可能なゲームシステム(たとえばKinect(登録商標)ジェスチャー入力装置を備えたもしくは備えていないMicrosoft Xboxゲーム機)、および/またはパーソナルメッセージングデバイス等の電子機器を含み得る。
図7の分散システム700は4つのクライアントコンピューティングデバイスとともに示されているが、任意の数のクライアントコンピューティングデバイスがサポートされ得る。センサ等を有する装置といったその他の装置がサーバ712と対話してもよい。
分散システム700内のネットワーク710は、TCP/IP(伝送制御プロトコル/インターネットプロトコル)、SNA(システムネットワークアーキテクチャ)、IPX(インターネットパケット交換)、Apple Talk等を含むがこれらに限定されるものではない、利用可能なさまざまなプロトコルのうちのいずれかを用いてデータ通信をサポートすることができる、当業者にはよく知られているいずれかの種類のネットワークであればよい。ほんの一例として、ネットワーク710は、ローカルエリアネットワーク(LAN)、イーサネット(登録商標)に基づくネットワーク、トークンリング、広域ネットワーク、インターネット、仮想ネットワーク、仮想プライベートネットワーク(VPN)、イントラネット、エクストラネット、公衆交換電話網(PSTN)、赤外線ネットワーク、無線ネットワーク(たとえば、米国電気電子技術者協会(IEEE)802.11プロトコルスイートのうちのいずれか、Bluetooth(登録商標)、および/またはその他いずれかの無線プロトコルの下で機能するネットワーク)、および/またはこれらの組み合わせ、および/またはその他のネットワークであってもよい。
サーバ712は、1つ以上の汎用コンピュータ、専用サーバコンピュータ(一例として、PC(パーソナルコンピュータ)サーバ、UNIX(登録商標)サーバ、ミッドレンジサーバ、メインフレームコンピュータ、ラックマウント式サーバ等を含む)、サーバファーム、サーバクラスタ、またはその他いずれかの適切な構成および/または組み合わせで構成されていてもよい。サーバ712は、仮想オペレーティングシステムまたは仮想化を伴うその他の計算アーキテクチャを実行する1つ以上の仮想マシンを含み得る。論理記憶装置の1つ以上のフレキシブルプールを仮想化することによって、サーバのための仮想記憶装置を維持することができる。仮想ネットワークは、サーバ712がソフトウェア定義ネットワーキングを用いて制御することができる。さまざまな実施形態において、サーバ712は、これまでの開示において説明した1つ以上のサービスまたはソフトウェアアプリケーションを実行するように適合されていてもよい。たとえば、サーバ712は、本開示のある実施形態に従う上記処理を実行するためのサーバに対応していてもよい。
サーバ712は、上記のうちのいずれかを含むオペレーティングシステムおよび市販のいずれかのサーバオペレーティングシステムを実行し得る。サーバ712はまた、HTTP(ハイパーテキストトランスポートプロトコル)サーバ、FTP(ファイル転送プロトコル)サーバ、CGI(コモンゲートウェイインターフェイス)サーバ、JAVA(登録商標)サーバ、データベースサーバ等を含む、さまざまなその他のサーバアプリケーションおよび/またはミッドティアアプリケーションのうちのいずれかを実行し得る。代表的なデータベースサーバは、オラクル、マイクロソフト、サイベース、IBM(International Business Machines)等から市販されているものを含むが、これらに限定されるものではない。
いくつかの実装例において、サーバ712は、クライアントコンピューティングデバイス702、704、706、および708のユーザから受信したデータフィードおよび/またはイベントアップデートを分析し集約するための1つ以上のアプリケーションを含み得る。一例として、データフィードおよび/またはイベントアップデートは、センサデータアプリケーション、株式相場表示機、ネットワーク性能測定ツール(たとえばネットワークモニタリングおよびトラフィック管理アプリケーション)、クリックストリーム分析ツール、自動車交通量モニタリング等に関連するリアルタイムイベントを含み得る、1つ以上の第三者情報源および連続データストリームから受信した、Twitter(登録商標)フィード、Facebook(登録商標)アップデートまたはリアルタイムアップデートを含み得るが、これらに限定されるものではない。また、サーバ712は、クライアントコンピューティングデバイス702、704、706、および708の1つ以上の表示装置を介してデータフィードおよび/またはリアルタイムイベントを表示するための1つ以上のアプリケーションを含み得る。
分散システム700はまた、1つ以上のデータベース714および716を含み得る。これらのデータベースは、本発明の実施形態によって使用されるユーザインタラクション情報、使用パターン情報、適合規則情報、およびその他の情報等の情報を格納するためのメカニズムを提供し得る。データベース714および716はさまざまな場所に存在し得る。例として、データベース714および716のうちの1つ以上が、サーバ712にローカルな(および/または存在する)非一時的な記憶媒体上にあってもよい。これに代えて、データベース714および716は、サーバ712から遠隔の場所にあってネットワークベースのまたは専用接続を介してサーバ712と通信してもよい。一組の実施形態において、データベース714および716は、ストレージエリアネットワーク(SAN)にあってもよい。同様に、サーバ712から発生する機能を実行するために必要な任意のファイルは、適宜サーバ712にローカルに格納されていてもよくおよび/または遠隔場所に格納されてもよい。一組の実施形態において、データベース714および716は、SQLフォーマットのコマンドに応じてデータを格納、更新、および取出すように適合された、オラクルが提供するデータベース等のリレーショナルデータベースを含み得る。
いくつかの実施形態では、クラウド環境は配置ポリシーベースのリソース割当てのための1つ以上のサービスを提供し得る。図8は、本開示の実施形態に従う、サービスがクラウドサービスとして供給され得るシステム環境800の1つ以上のコンポーネントの簡略化したブロック図である。図8に示される実施形態では、システム環境800は、配置ポリシーベースのリソース割当てのためのサービスを含むクラウドサービスを提供するクラウドインフラストラクチャシステム802と対話するためにユーザによって使用され得る1つ以上のクライアントコンピューティングデバイス804、806、および808を含む。クラウドインフラストラクチャシステム802は、サーバ712について上述したものを含み得る1つ以上のコンピュータおよび/またはサーバを含み得る。
図8に表わされるクラウドインフラストラクチャシステム802は、表わされるもの以外の他のコンポーネントを有していてもよいということが認識されるべきである。さらに、図8に示される実施形態は、本発明の実施形態を組込むことができるクラウドインフラストラクチャシステムの一例に過ぎない。いくつかの他の実施形態では、クラウドインフラストラクチャシステム802は、図に示されるものよりも多いもしくは少ないコンポーネントを有していてもよく、2つ以上のコンポーネントを組み合わせてもよく、またはコンポーネントの異なる構成もしくは配置を有していてもよい。
クライアントコンピューティングデバイス804、806、および808は、クライアントコンピューティングデバイス702、704、706、および708についての上述のものと同様のデバイスであり得る。クライアントコンピューティングデバイス804、806、および808は、ウェブブラウザ、プロプライエタリクライアント(たとえばオラクルフォームズ)等のクライアントアプリケーション、または何らかの他のアプリケーションを操作するように構成され得、クライアントコンピューティングデバイスのユーザは当該アプリケーションを使用してクラウドインフラストラクチャシステム802と対話することにより、クラウドインフラストラクチャシステム802が提供するサービスを使用し得る。例示的なシステム環境800が3つのクライアントコンピューティングデバイスとともに示されているが、任意の数のクライアントコンピューティングデバイスがサポートされ得る。センサを有する装置などの他の装置がクラウドインフラストラクチャシステム802と対話してもよい。
ネットワーク810は、クライアントコンピューティングデバイス804、806、および808とクラウドインフラストラクチャシステム802との間でのデータの通信および交換を容易にし得る。各ネットワークは、ネットワーク710について上述したものを含むさまざまな市販のプロトコルのうちのいずれかを用いてデータ通信をサポートすることができる、当業者にはよく知られているいずれかの種類のネットワークであればよい。
特定の実施形態では、クラウドインフラストラクチャシステム802が提供するサービスは、クラウドインフラストラクチャシステムのユーザがオンデマンドで利用できるようにされる多数のサービスを含み得る。配置ポリシーベースのリソース割当てに関するサービスに加えて、オンラインデータストアおよびバックアップソリューション、ウェブベースの電子メールサービス、ホスト型オフィススイートおよび文書コラボレーションサービス、データベース処理、管理された技術サポートサービス等を含むがこれらに限定されるものではないさまざまな他のサービスも供給され得る。クラウドインフラストラクチャシステムが提供するサービスは、そのユーザのニーズを満たすよう動的にスケーリング可能である。
特定の実施形態では、クラウドインフラストラクチャシステム802が提供するサービスの具体的なインスタンス化は、本明細書では「サービスインスタンス」と称され得る。一般に、クラウドサービスプロバイダのシステムからインターネット等の通信ネットワークを介してユーザが利用できるようにされるサービスはいずれも、「クラウドサービス」と称される。典型的に、パブリッククラウド環境では、クラウドサービスプロバイダのシステムを構成するサーバおよびシステムは、顧客自身のオンプレミスサーバおよびシステムとは異なる。たとえば、クラウドサービスプロバイダのシステムは、アプリケーションをホストし得、ユーザは、インターネットなどの通信ネットワークを介してオンデマンドで当該アプリケーションをオーダーし、使用し得る。
いくつかの例では、コンピュータネットワーククラウドインフラストラクチャにおけるサービスは、クラウドベンダによってユーザに提供されるかまたはそうでなければ当該技術分野において公知のストレージ、ホスト型データベース、ホスト型ウェブサーバ、ソフトウェアアプリケーション、または他のサービスへの保護されたコンピュータネットワークアクセスを含み得る。たとえば、サービスは、インターネットを通した、クラウド上の遠隔記憶域に対する、パスワードで保護されたアクセスを含み得る。別の例として、サービスは、ネットワーク接続された開発者の私的使用のためのウェブサービスベースのホスト型リレーショナルデータベースおよびスクリプト言語ミドルウェアエンジンを含み得る。別の例として、サービスは、クラウドベンダのウェブサイト上でホストされる電子メールソフトウェアアプリケーションへのアクセスを含み得る。
特定の実施形態では、クラウドインフラストラクチャシステム802は、セルフサービスの、サブスクリプションベースの、弾性的にスケーラブルな、信頼性のある、高可用性の、安全な態様で顧客に与えられる一連のアプリケーション、ミドルウェアおよびデータベースサービス提供品を含み得る。このようなクラウドインフラストラクチャシステムの一例は、本譲受人によって提供されるオラクルパブリッククラウド(Oracle Public Cloud)である。
クラウドインフラストラクチャシステム802はさらに、「ビッグデータ(big data)」関連の計算および分析サービスを提供し得る。「ビッグデータ」という用語は一般に、大量のデータを視覚化し、トレンドを検出し、および/またはそうでなければデータと対話するために、分析者および研究者によって格納および処理され得る極めて大きいデータ集合を指すために用いられる。このビッグデータおよび関連のアプリケーションは、多くのレベルで、かつさまざまなスケールでインフラストラクチャシステムによってホストおよび/または処理されてもよい。平行にリンクされた何十、何百または何千ものプロセッサがこのようなデータに対して作用可能であり、これにより、このようなデータを表示し得るか、または、データに対する外力をシミュレートし得るかもしくはそれが表しているものをシミュレートし得る。これらのデータ集合は、データベースにおいて編成されたデータ、もしくは構造化モデルに従ったデータ、および/または、非構造化データ(たとえば電子メール、画像、データブロブ(バイナリ大型オブジェクト)、ウェブページ、複雑なイベント処理)などの、構造化データを含み得る。目標物に対してより多くの(またはより少数の)コンピューティングリソースを比較的迅速に集中させるために実施形態の機能を強化することにより、ビジネス、政府関係機関、研究組織、私人、同じ目的をもった個々人もしくは組織のグループ、または他のエンティティから、要求に基づいて大量のデータ集合上でタスクを実行するために、クラウドインフラストラクチャシステムがより良好に利用可能となり得る。
さまざまな実施形態において、クラウドインフラストラクチャシステム802は、クラウドインフラストラクチャシステム802によって供給されるサービスへの顧客のサブスクリプションを自動的にプロビジョニング、管理および追跡するように適合され得る。クラウドインフラストラクチャシステム802は、さまざまなデプロイメントモデルを介してクラウドサービスを提供し得る。たとえば、サービスはパブリッククラウドモデルの下で提供されてもよく、パブリッククラウドモデルでは、クラウドインフラストラクチャシステム802が(たとえばオラクル社が所有する)クラウドサービスを販売する組織によって所有され、サービスは一般的な公営企業またはさまざまな産業企業が利用できるようにされる。別の例として、サービスはプライベートクラウドモデルの下で提供されてもよく、プライベートクラウドモデルでは、クラウドインフラストラクチャシステム802が単一の組織のために単独で運営され、当該組織内の1つ以上のエンティティにサービスを提供することができる。また、クラウドサービスはコミュニティクラウドモデルの下で提供されてもよく、コミュニティクラウドモデルでは、クラウドインフラストラクチャシステム802およびクラウドインフラストラクチャシステム802によって提供されるサービスが関連のコミュニティの中のいくつかの組織によって共有される。また、クラウドサービスは、2つ以上の異なるモデルの組み合わせであるハイブリッドクラウドモデルの下で提供されてもよい。
いくつかの実施形態では、クラウドインフラストラクチャシステム802によって提供されるサービスは、サービスとしてのソフトウェア(SaaS)カテゴリ、サービスとしてのプラットフォーム(PaaS)カテゴリ、サービスとしてのインフラストラクチャ(IaaS)カテゴリ、またはその他の、ハイブリッドサービスを含むサービスのカテゴリの下で提供される1つ以上のサービスを含み得る。顧客は、サブスクリプションオーダーを介して、クラウドインフラストラクチャシステム802によって提供される1つ以上のサービスをオーダーし得る。次いで、クラウドインフラストラクチャシステム802は、顧客のサブスクリプションオーダーにおけるサービスを提供するために処理を実行する。
いくつかの実施形態では、クラウドインフラストラクチャシステム802によって提供されるサービスは、アプリケーションサービス、プラットフォームサービスおよびインフラストラクチャサービスを含み得るが、これらに限定されるものではない。いくつかの例では、アプリケーションサービスは、SaaSプラットフォームを介してクラウドインフラストラクチャシステムによって提供されてもよい。SaaSプラットフォームは、SaaSカテゴリに分類されるクラウドサービスを提供するように構成され得る。たとえば、SaaSプラットフォームは、統合された開発およびデプロイメントプラットフォーム上で一連のオンデマンドのアプリケーションを構築および供給する機能を提供し得る。SaaSプラットフォームは、SaaSサービスを提供するための基本的なソフトウェアおよびインフラストラクチャを管理および制御し得る。SaaSプラットフォームによって提供されるサービスを利用することによって、顧客は、クラウドインフラストラクチャシステム上で実行されるアプリケーションを利用することができる。顧客は、顧客が別個のライセンスおよびサポートを購入する必要なくアプリケーションサービスを取得することができる。さまざまな異なるSaaSサービスが提供されてもよい。例としては、大規模組織に販売実績管理、企業統合およびビジネスの柔軟性のためのソリューションを提供するサービスが挙げられるが、これらに限定されるものではない。
いくつかの実施形態では、プラットフォームサービスは、PaaSプラットフォームを介してクラウドインフラストラクチャシステム802によって提供されてもよい。PaaSプラットフォームは、PaaSカテゴリに分類されるクラウドサービスを提供するように構成され得る。プラットフォームサービスの例としては、共有される共通のアーキテクチャ上で既存のアプリケーションを(オラクルなどの)組織が集約することを可能にするサービス、および、プラットフォームによって提供される共有のサービスを活用する新たなアプリケーションを構築する能力が挙げられ得るが、これらに限定されるものではない。PaaSプラットフォームは、PaaSサービスを提供するための基本的なソフトウェアおよびインフラストラクチャを管理および制御し得る。顧客は、顧客が別々のライセンスおよびサポートを購入する必要なく、クラウドインフラストラクチャシステム802によって提供されるPaaSサービスを取得することができる。プラットフォームサービスの例としては、オラクルJavaクラウドサービス(JCS)、オラクルデータベースクラウドサービス(DBCS)などが挙げられるが、これらに限定されるものではない。
PaaSプラットフォームによって提供されるサービスを利用することによって、顧客は、クラウドインフラストラクチャシステムによってサポートされるプログラミング言語およびツールを利用することができ、デプロイされたサービスを制御することもできる。いくつかの実施形態では、クラウドインフラストラクチャシステムによって提供されるプラットフォームサービスは、データベースクラウドサービス、ミドルウェアクラウドサービス(たとえばオラクルフュージョンミドルウェアサービス)、およびJavaクラウドサービスを含み得る。一実施形態では、データベースクラウドサービスは、組織がデータベースリソースをプールし、データベースクラウドの形態でデータベース・アズ・ア・サービスを顧客に供給することを可能にする共有のサービスデプロイメントモデルをサポートし得る。ミドルウェアクラウドサービスは、さまざまなビジネスアプリケーションを開発およびデプロイするために顧客にプラットフォームを提供し得、Javaクラウドサービスは、クラウドインフラストラクチャシステムにおいてJavaアプリケーションをデプロイするために顧客にプラットフォームを提供し得る。
さまざまな異なるインフラストラクチャサービスは、クラウドインフラストラクチャシステムにおけるIaaSプラットフォームによって提供されてもよい。インフラストラクチャサービスは、ストレージ、ネットワークなどの基本的な計算リソース、ならびに、SaaSプラットフォームおよびPaaSプラットフォームによって提供されるサービスを利用する顧客のための他の基礎的な計算リソースの管理および制御を容易にする。
また、特定の実施形態では、クラウドインフラストラクチャシステム802は、クラウドインフラストラクチャシステムの顧客にさまざまなサービスを提供するために使用されるリソースを提供するためのインフラストラクチャリソース830を含み得る。一実施形態では、インフラストラクチャリソース830は、PaaSプラットフォームおよびSaaSプラットフォームによって提供されるサービスを実行するための、サーバ、ストレージおよびネットワーキングリソース、ならびに他のリソースなどの、ハードウェアの事前に一体化された最適な組み合わせを含み得る。
いくつかの実施形態では、クラウドインフラストラクチャシステム802におけるリソースは、複数のユーザによって共有され、デマンドごとに動的に再割当てされ得る。加えて、リソースは、異なる時間帯にユーザに割当てられ得る。たとえば、クラウドインフラストラクチャシステム802は、第1の時間帯におけるユーザの第1の組が規定の時間にわたってクラウドインフラストラクチャシステムのリソースを利用することを可能にし、次いで、異なる時間帯に位置するユーザの別の組への同一のリソースの再割当てを可能にし、それによってリソースの利用を最大化することができる。
特定の実施形態では、クラウドインフラストラクチャシステム802によるサービスの提供を可能にするために、クラウドインフラストラクチャシステム802の異なるコンポーネントまたはモジュールによって共有されるいくつかの内部共有サービス832が提供され得る。これらの内部共有サービスは、セキュリティおよびアイデンティティサービス、統合サービス、企業リポジトリサービス、企業マネージャサービス、ウイルススキャンおよびホワイトリストサービス、高可用性・バックアップおよび回復サービス、クラウドサポートを可能にするためのサービス、電子メールサービス、通知サービス、ファイル転送サービスなどを含み得るが、これらに限定されるものではない。
特定の実施形態では、クラウドインフラストラクチャシステム802は、クラウドインフラストラクチャシステムにおけるクラウドサービス(たとえばSaaS、PaaSおよびIaaSサービス)の包括的管理を提供し得る。一実施形態では、クラウド管理機能は、クラウドインフラストラクチャシステム802によって受信した顧客のサブスクリプションをプロビジョニング、管理および追跡するための機能などを含み得る。
一実施形態では、図8に表わされるように、クラウド管理機能は、オーダー管理モジュール820、オーダーオーケストレーションモジュール822、オーダープロビジョニングモジュール824、オーダー管理および監視モジュール826、ならびにアイデンティティ管理モジュール828などの1つ以上のモジュールによって提供され得る。これらのモジュールは、汎用コンピュータ、専用サーバコンピュータ、サーバファーム、サーバクラスタ、またはその他の適切な構成および/もしくは組み合わせであり得る1つ以上のコンピュータならびに/またはサーバを含み得るか、またはそれらを用いて提供され得る。
例示的なオペレーションでは、ステップ834において、顧客は、クラウドインフラストラクチャシステム802によって提供される1つ以上のサービスを要求し、クラウドインフラストラクチャシステム802によって供給される1つ以上のサービスのサブスクリプションについてオーダーを行うことによって、クライアントコンピューティングデバイス804、806または808などのクライアントデバイスを用いてクラウドインフラストラクチャシステム802と対話し得る。特定の実施形態では、顧客は、クラウドユーザインターフェース(User Interface:UI)、すなわちクラウドUI812、クラウドUI814および/またはクラウドUI816にアクセスして、これらのUIを介してサブスクリプションオーダーを行い得る。顧客がオーダーを行ったことに応答してクラウドインフラストラクチャシステム802によって受信されたオーダー情報は、顧客および顧客がサブスクライブする予定のクラウドインフラストラクチャシステム802によって供給される1つ以上のサービスを特定する情報を含み得る。
ステップ836において、顧客から受信したオーダー情報は、オーダーデータベース818に格納され得る。これが新たなオーダーである場合、当該オーダーについての新たなレコードが作成され得る。一実施形態では、オーダーデータベース818は、クラウドインフラストラクチャシステム818によって動作され、かつ、他のシステム要素と連携して動作されるいくつかのデータベースのうちの1つであってもよい。
ステップ838において、オーダー情報は、オーダー管理モジュール820に転送され得、オーダー管理モジュール820は、オーダーの確認、および確認時のオーダーの予約などの、オーダーに関連するビリングおよびアカウンティング機能を実行するように構成され得る。
ステップ840において、オーダーについての情報は、オーダーオーケストレーションモジュール822に通信され得、オーダーオーケストレーションモジュール822は、顧客によって行われたオーダーのためのサービスおよびリソースのプロビジョニングをオーケストレートするように構成される。いくつかの例では、オーダーオーケストレーションモジュール822は、プロビジョニングのためにオーダープロビジョニングモジュール824のサービスを使用し得る。特定の実施形態では、オーダーオーケストレーションモジュール822は、各オーダーと関連付けられたビジネスプロセスの管理を可能にし、ビジネスロジックを適用して、オーダーがプロビジョニングに進むべきか否かを判断する。
図8に表わされる実施形態に示されるように、ステップ842において、新たなサブスクリプションのオーダーを受信すると、オーダーオーケストレーションモジュール822は、リソースを割当てて、当該サブスクリプションオーダーを実現するために必要なリソースを構成するために、オーダープロビジョニングモジュール824に要求を送信する。オーダープロビジョニングモジュール824は、顧客によってオーダーされたサービスのためのリソースの割当てを可能にする。オーダープロビジョニングモジュール824は、クラウドインフラストラクチャシステム800によって提供されるクラウドサービスと、要求されたサービスを提供するためのリソースをプロビジョニングするために使用される物理的実装層との間の抽象化のレベルを提供する。したがって、オーダーオーケストレーションモジュール822は、サービスおよびリソースがオンザフライで実際にプロビジョニングされるか否か、または予めプロビジョニングされて要求時に単に配分/割当てられるか否かなどの実装詳細から切離され得る。
ステップ844において、サービスおよびリソースがプロビジョニングされると、要求されたサービスが利用可能な状態となったことを示す通知が、サブスクライブを行う顧客に送信され得る。いくつかの例では、顧客が要求されたサービスを使用し始めることを可能にする情報(たとえばリンク)が顧客に送信され得る。
ステップ846において、顧客のサブスクリプションオーダーがオーダー管理および監視モジュール826によって管理および追跡され得る。いくつかの例では、オーダー管理および監視モジュール826は、サブスクライブされたサービスの顧客使用に関する使用統計を収集するように構成され得る。たとえば、統計は、使用されるストレージの量、転送されるデータの量、ユーザの数、ならびにシステムアップ時間およびシステムダウン時間の量などついて収集され得る。
特定の実施形態では、クラウドインフラストラクチャシステム800は、クラウドインフラストラクチャシステム800においてアクセス管理および認可サービスなどのアイデンティティサービスを提供するように構成されるアイデンティティ管理モジュール828を含み得る。いくつかの実施形態では、アイデンティティ管理モジュール828は、クラウドインフラストラクチャシステム802によって提供されるサービスを利用したい顧客についての情報を制御し得る。このような情報は、このような顧客のアイデンティティを認証する情報、および、さまざまなシステムリソース(たとえばファイル、ディレクトリ、アプリケーション、通信ポート、メモリセグメントなど)に対してそれらの顧客がどのアクションを実行することが認可されるかを記述する情報を含み得る。また、アイデンティティ管理モジュール828は、各顧客についての記述的情報および当該記述的情報がどのようにして誰によってアクセスおよび修正され得るかについての記述的情報の管理を含み得る。
図9は、本発明の実施形態を実現するために用いられ得る例示的なコンピュータシステム900を示す。いくつかの実施形態では、コンピュータシステム900を用いて上記のさまざまなサーバおよびコンピュータシステムのうちのいずれかを実現してもよい。図9に示されるように、コンピュータシステム900は、バスサブシステム902を介していくつかの周辺サブシステムと通信する処理ユニット904を含むさまざまなサブシステムを含む。これらの周辺サブシステムは、処理加速ユニット906、I/Oサブシステム908、記憶サブシステム918、および通信サブシステム924を含み得る。記憶サブシステム918は、有形のコンピュータ読取可能記憶媒体922およびシステムメモリ910を含み得る。
バスサブシステム902は、コンピュータシステム900のさまざまなコンポーネントおよびサブシステムを目的に応じて互いに通信させるためのメカニズムを提供する。バスサブシステム902は単一のバスとして概略的に示されているが、バスサブシステムの代替的な実施形態は複数のバスを利用し得る。バスサブシステム902は、さまざまなバスアーキテクチャのうちのいずれかを用いる、メモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含む、いくつかの種類のバス構造のうちのいずれかであればよい。たとえば、このようなアーキテクチャは、IEEE P1386.1規格に従って製造されたメザニン(Mezzanine)バス等として実現できる、業界標準アーキテクチャ(ISA)バス、マイクロチャネルアーキテクチャ(MCA)バス、エンハンストISA(EISA)バス、ビデオエレクトロニクス標準協会(VESA)ローカルバス、および周辺コンポーネントインターコネクト(PCI)バスなどを含み得る。
処理サブシステム904は、コンピュータシステム900のオペレーションを制御し、かつ、1つ以上の処理ユニット932、934等を含み得る。処理ユニットは、シングルコアもしくはマルチコアプロセッサ、プロセッサの1つ以上のコア、またはこれらの組み合わせを含む、1つ以上のプロセッサを含み得る。いくつかの実施形態では、処理サブシステム904は、グラフィックプロセッサ、デジタル信号プロセッサ(DSP)等といった1つ以上の専用コプロセッサを含み得る。いくつかの実施形態では、処理サブシステム904の処理ユニットのうちのいくつかまたはすべてを、特定用途向け集積回路(ASIC)またはフィールドプログラマブルゲートアレイ(FPGA)等のカスタマイズされた回路を用いて実現してもよい。
いくつかの実施形態では、処理サブシステム904内の処理ユニットは、システムメモリ910内にまたはコンピュータ読取可能記憶媒体922上に格納されている命令を実行することができる。さまざまな実施形態において、処理ユニットは、さまざまなプログラムまたはコード命令を実行することができ、かつ、同時に実行される複数のプログラムまたはプロセスを維持することができる。任意の所与の時間に、実行すべきプログラムコードのうちのいくつかまたはすべてが、いくつかの例では1つ以上の記憶装置を含むシステムメモリ910内におよび/またはコンピュータ読取可能記憶媒体922上にあってもよい。適切なプログラミングを通して、処理サブシステム904は、配置ポリシーベースのリソース割当てのために上記のさまざまな機能を提供することができる。
特定の実施形態では、コンピュータシステム900が実行する処理全体を加速することを目的として、カスタマイズされた処理を実行するためまたは処理サブシステム904が実行する処理のうちの一部をオフロードするために、処理加速ユニット906を設けてもよい。
I/Oサブシステム908は、情報をコンピュータシステム900に入力するためおよび/または情報をコンピュータシステム900からもしくはコンピュータシステム900を介して出力するための装置およびメカニズムを含み得る。一般に、「入力装置」という用語の使用は、情報をコンピュータシステム900に入力するための、可能なすべての種類の装置およびメカニズムを含むことを意図している。ユーザインターフェイス入力装置は、たとえば、キーボード、マウスまたはトラックボール等のポインティングデバイス、ディスプレイに組込まれたタッチパッドまたはタッチスクリーン、スクロールホイール、クリックホイール、ダイヤル、ボタン、スイッチ、キーパッド、音声コマンド認識システムを備えた音声入力装置、マイク、およびその他の種類の入力装置を含み得る。ユーザインターフェイス入力装置はまた、ユーザが入力装置を制御し入力装置と対話できるようにするMicrosoft Kinect(登録商標)モーションセンサ、Microsoft Xbox(登録商標)360ゲームコントローラ、ジェスチャーおよび発話コマンドを用いた入力を受けるためのインターフェイスを提供する装置等の、モーション検知および/またはジェスチャー認識装置を含み得る。ユーザインターフェイス入力装置はまた、ユーザから目の動き(たとえば写真撮影時および/またはメニュー選択時の「まばたき」)を検出して目のジェスチャーを入力装置(たとえばGoogle Glass(登録商標))への入力として変換するGoogle Glass(登録商標)まばたき検出器等のアイジェスチャー認識装置を含み得る。加えて、ユーザインターフェイス入力装置は、ユーザが音声コマンドを通して音声認識システム(たとえばSiri(登録商標)ナビゲータ)と対話できるようにする音声認識検知装置を含み得る。
ユーザインターフェイス入力装置のその他の例は、三次元(3D)マウス、ジョイスティックまたはポインティングスティック、ゲームパッドおよびグラフィックタブレット、ならびに、スピーカ、デジタルカメラ、デジタルカムコーダ、ポータブルメディアプレイヤー、ウェブカメラ、画像スキャナ、指紋スキャナ、バーコードリーダ3Dスキャナ、3Dプリンタ、レーザレンジファインダー、および視線トラッキング装置等のオーディオ/ビジュアル装置を含むが、これらに限定されるものではない。加えて、ユーザインターフェイス入力装置は、たとえば、コンピュータ断層撮影、磁気共鳴撮像、ポジトロン断層撮影、医療用超音波検査装置等の、医療用撮像入力装置を含み得る。ユーザインターフェイス入力装置はまた、たとえば、MIDIキーボード、デジタル音楽機器等といった音声入力装置を含み得る。
ユーザインターフェイス出力装置は、ディスプレイサブシステム、インジケータライト、または音声出力装置といった非ビジュアルディスプレイなどを含み得る。ディスプレイサブシステムは、陰極線管(CRT)、たとえば液晶ディスプレイ(LCD)またはプラズマディスプレイを用いるフラットパネル装置、投射装置、タッチスクリーン等であってもよい。一般に、「出力装置」という用語の使用は、情報をコンピュータシステム900からユーザまたはその他のコンピュータに出力するための可能なすべての種類の装置およびメカニズムを含むことを意図している。たとえば、ユーザインターフェイス出力装置は、モニタ、プリンタ、スピーカ、ヘッドフォン、自動車ナビゲーションシステム、作図装置、音声出力装置、およびモデムといった、テキスト、グラフィックおよびオーディオ/ビデオ情報を視覚的に伝えるさまざまな表示装置を含み得るが、これらに限定されるものではない。
記憶サブシステム918は、コンピュータシステム900が使用する情報を格納するためのリポジトリまたはデータストアを提供する。記憶サブシステム918は、いくつかの実施形態の機能を提供する基本的なプログラミングおよびデータ構造を格納するための有形の非一時的なコンピュータ読取可能記憶媒体を提供する。処理サブシステム904によって実行されたときに上記機能を提供するソフトウェア(プログラム、コードモジュール、命令)は、記憶サブシステム918に格納されてもよい。ソフトウェアは、処理サブシステム904の1つ以上の処理ユニットによって実行されてもよい。記憶サブシステム918はまた、本発明に従って使用されるデータを格納するためのリポジトリを提供し得る。
記憶サブシステム918は、揮発性および不揮発性メモリデバイスを含む1つ以上の非一時的なメモリデバイスを含み得る。図9に示されるように、記憶サブシステム918は、システムメモリ910およびコンピュータ読取可能記憶媒体922を含む。システムメモリ910は、プログラム実行中に命令とデータを格納するための揮発性メインランダムアクセスメモリ(RAM)および固定命令が格納されている不揮発性読取専用メモリ(ROM)またはフラッシュメモリを含む、いくつかのメモリを含み得る。いくつかの実装例において、たとえば起動中のコンピュータシステム900内の要素間の情報転送を補助する基本的なルーチンを含む基本的な入力/出力システム(BIOS)は、典型的にROMに格納され得る。RAMは典型的に、処理サブシステム904が現在操作および実行しているデータおよび/またはプログラムモジュールを含む。いくつかの実装例において、システムメモリ910は、スタティックランダムアクセスメモリ(SRAM)またはダイナミックランダムアクセスメモリ(DRAM)等の種類が異なる複数のメモリを含み得る。
限定ではなく一例として、図9に表わされるように、システムメモリ910は、クライアントアプリケーション、ウェブブラウザ、ミッドティアアプリケーション、リレーショナルデータベース管理システム(RDBMS)等を含み得るアプリケーションプログラム912と、プログラムデータ914と、オペレーティングシステム916とを格納し得る。一例として、オペレーティングシステム916は、さまざまなバージョンのMicrosoft Windows(登録商標)、Apple Macintosh(登録商標)、および/またはLinux(登録商標)オペレーティングシステム、さまざまな市販のUNIX(登録商標)またはUNIXのようなオペレーティングシステム(さまざまなGNU/Linuxオペレーティングシステム、Google Chrome(登録商標)OS等を含むがこれらに限定されるものではない)および/または、iOS、Windows(登録商標)Phone、Android(登録商標)OS、BlackBerry(登録商標) 10 OS、およびPalm(登録商標)OSオペレーティングシステム等のモバイルオペレーティングシステムを含み得る。
コンピュータ読取可能記憶媒体922は、いくつかの実施形態の機能を提供するプログラミングおよびデータ構造を格納し得る。処理サブシステム904のプロセッサによって実行されたときに上記機能を提供するソフトウェア(プログラム、コードモジュール、命令)は、記憶サブシステム918に格納されてもよい。一例として、コンピュータ読取可能記憶媒体922は、ハードディスクドライブ、磁気ディスクドライブ、CD ROM、DVD、Blu-Ray(登録商標)ディスク、またはその他の光媒体等の光ディスクドライブといった、不揮発性メモリを含み得る。コンピュータ読取可能記憶媒体922は、Zip(登録商標)ドライブ、フラッシュメモリカード、ユニバーサルシリアルバス(USB)フラッシュドライブ、セキュアデジタル(SD)カード、DVDディスク、デジタルビデオテープ等を含み得るが、これらに限定されるものではない。コンピュータ読取可能記憶媒体922はまた、フラッシュメモリベースのSSD、エンタープライズフラッシュドライブ、ソリッドステートROM等といった不揮発性メモリに基づくソリッドステートドライブ(SSD)、ソリッドステートRAM、ダイナミックRAM、スタティックRAM等といった揮発性メモリに基づくSSD、DRAMとフラッシュメモリベースのSSDを組み合わせたものを用いる、DRAMベースのSSD、磁気抵抗RAM(MRAM)SSD、およびハイブリッドSSDを含み得る。コンピュータ読取可能媒体922は、コンピュータ読取可能命令、データ構造、プログラムモジュール、およびコンピュータシステム900のためのその他のデータの記憶域を提供し得る。
特定の実施形態では、記憶サブシステム900はまた、コンピュータ読取可能記憶媒体922にさらに接続することができるコンピュータ読取可能記憶媒体リーダ920を含み得る。システムメモリ910とともに、また、任意でシステムメモリ910と組み合わされて、コンピュータ読取可能記憶媒体922は、コンピュータ読取可能情報を格納するための、遠隔、ローカル、固定、および/またはリムーバブル記憶装置プラス記憶媒体を、包括的に代表し得る。
特定の実施形態では、コンピュータシステム900は、1つ以上の仮想マシンを実行するためのサポートを提供し得る。コンピュータシステム900は、仮想マシンの構成および管理を容易にするためのハイパーバイザといったプログラムを実行し得る。各仮想マシンに、メモリ、計算(たとえばプロセッサ、コア)、I/O、およびネットワーキングリソースが割当てられていてもよい。各仮想マシンは、典型的に、コンピュータシステム900が実行するその他の仮想マシンによって実行されるオペレーティングシステムと同じでも異なっていてもよい、自身のオペレーティングシステムを実行する。したがって、いくつかの例では複数のオペレーティングシステムがコンピュータシステム900によって同時に実行されるであろう。一般的に、各仮想マシンはその他の仮想マシンから独立して実行される。
通信サブシステム924は、その他のコンピュータシステムおよびネットワークに対するインターフェイスを提供する。通信サブシステム924は、コンピュータシステム900以外のシステムからデータを受信しコンピュータシステム900以外のシステムにデータを送信するためのインターフェイスの役割を果たす。たとえば、通信サブシステム924によって、コンピュータシステム900は、情報をクライアントコンピューティングデバイスから受信しかつ情報をクライアントコンピューティングデバイスに送信するために1つ以上のクライアントコンピューティングデバイスへのインターネットを介した通信チャネルを確立することができるであろう。
通信サブシステム924は、有線通信プロトコルおよび/または無線通信プロトコル双方をサポートし得る。たとえば、特定の実施形態では、通信サブシステム924は、(たとえば携帯電話技術、3G、4GまたはEDGE(グローバル進化型高速データレート)等の高度データネットワーク技術、WiFi(IEEE802.11ファミリー規格、またはその他のモバイル通信技術、またはそれらの任意の組み合わせ)を用いて)無線音声および/またはデータネットワークにアクセスするための無線周波数(RF)トランシーバコンポーネント、グローバルポジショニングシステム(GPS)レシーバコンポーネント、および/またはその他のコンポーネントを含み得る。いくつかの実施形態では、通信サブシステム924は、無線インターフェイスに加えてまたはその代わりに有線ネットワーク接続(たとえばイーサネット)を提供することができる。
通信サブシステム924は、さまざまな形態のデータを送受信することができる。たとえば、いくつかの実施形態では、通信サブシステム924は、構造化および/または非構造化データフィード926、イベントストリーム928、イベントアップデート930等の形態の入力通信を受信し得る。たとえば、通信サブシステム924は、ソーシャルメディアネットワークおよび/またはその他の通信サービスのユーザから、リアルタイムで、Twitter(登録商標)フィード、Facebook(登録商標)アップデート、リッチサイトサマリー(RSS)フィード等のウェブフィード、および/または1以上の第三者情報源からのリアルタイムアップデート等のデータフィード926を、受信(または送信)するように構成されてもよい。
特定の実施形態では、通信サブシステム924は、本質的に連続しているまたは無限であり明確な終わりがない場合がある、リアルタイムイベントのイベントストリーム928および/またはイベントアップデート930を含み得る、連続データストリームの形態のデータを受信するように構成されてもよい。連続データを生成するアプリケーションの例は、たとえば、センサデータアプリケーション、株式相場表示機、ネットワーク性能測定ツール(たとえばネットワークモニタリングおよびトラフィック管理アプリケーション)、クリックストリーム分析ツール、自動車交通量モニタリング等を含み得る。
通信サブシステム924はまた、構造化および/または非構造化データフィード926、イベントストリーム928、イベントアップデート930等を、コンピュータシステム900に連結されている1つ以上のストリーミングデータソースコンピュータと通信し得る1つ以上のデータベースに出力するように構成されてもよい。
コンピュータシステム900は、ハンドヘルドポータブルデバイス(たとえばiPhone(登録商標)携帯電話、iPad(登録商標)計算タブレット、PDA)、ウェアラブルデバイス(たとえばGoogle Glass(登録商標)ヘッドマウントディスプレイ)、パーソナルコンピュータ、ワークステーション、メインフレーム、キオスク、サーバラック、またはその他のデータ処理システムを含む、さまざまな種類のうちの1つであればよい。
コンピュータおよびネットワークは常に変化しているという性質のものであるので、図9に表わされるコンピュータシステム900の説明は、専ら特定の例を意図している。図9に表わされるシステムよりもコンポーネントが多いまたは少ないその他多数の構成が可能である。本明細書が提供する開示と教示に基づいて、当業者はさまざまな実施形態を実現するためのその他のやり方および/または方法を認識するであろう。
本開示の実施形態によると、リソース管理システムが提供され、リソース管理システムは:サービスの要求を受信するように構成されたリソース要求インターフェイスと;要求に基づいて複数のコンピューティングリソースの定義を特定するように構成されたポリシーマネージャとを含み、定義は、複数のコンピューティングリソースについての1つ以上の特性を示し、ポリシーマネージャはさらに、複数のコンピューティングリソースの配置コンフィギュレーションを示す配置ポリシーを決定するように構成され;リソース管理システムはさらに、配置ポリシーおよび定義を用いて、リソースインフラストラクチャシステムにおいて複数のコンピューティングリソースを割当てるように構成されたリソース割当てモジュールを含み、リソースインフラストラクチャシステムは1つ以上のデータセンターを含む。
一例では、要求は定義を含み、定義は、プロセッサ定義、メモリ定義、および仮想マシン定義を含み、仮想マシン定義は1セットの仮想マシンを特定する。
一例では、要求は、複数のコンピューティングリソースを使用するためのサービスのタイプを示し、定義はサービスのタイプに基づいて特定される。
一例では、定義は、複数のコンピューティングリソースを用いてデプロイメントのためのサービスに基づいて特定される。
一例では、リソース割当てモジュールはさらに、配置コンフィギュレーションに従って、リソースインフラストラクチャシステムにおいて複数のコンピューティングリソースの配置を確立するように構成され、配置コンフィギュレーションは、複数のリソースの配置が確立される地理的位置を含む。
一例では、配置コンフィギュレーションは複数のグループを示し、配置コンフィギュレーションは、複数のグループのうちの第1のグループに割当てられる1セットの仮想マシンを特定し、複数のコンピューティングリソースのうちの第1のコンピューティングリソースが配置コンフィギュレーションに基づいて第1のグループに割当てられる。
一例では、配置コンフィギュレーションは、他のコンピューティングリソースによる複数のコンピューティングリソースへのアクセスを防止するためのセキュリティコンフィギュレーションを含み、セキュリティコンフィギュレーションは、複数のコンピューティングリソースを管理するために割当てられる1つ以上のハイパーバイザを示す。
一例では、セキュリティコンフィギュレーションは、複数のコンピューティングリソースをサポートするためにハイパーバイザに割当てられる1セットの仮想マシンをさらに示す。
一例では、配置コンフィギュレーションはパフォーマンスコンフィギュレーションを含み、パフォーマンスコンフィギュレーションは、第1のハイパーバイザに割当てられる第1のコンピューティングリソースを示し、かつ、第2のハイパーバイザに割当てられる第2のコンピューティングリソースを示し、複数のコンピューティングリソースは第1のコンピューティングリソースおよび第2のコンピューティングリソースを含む。
本開示の別の実施形態によると、コンピュータシステムが提供され、コンピュータシステムは:通信サブシステムと;通信サブシステムに結合された処理サブシステムとを含み、処理サブシステムは:通信サブシステムを介して要求を受信し;要求に基づいて複数のコンピューティングリソースの定義を特定するように構成され、定義は、複数のコンピューティングリソースについての1つ以上の特性を示し、処理サブシステムはさらに;複数のコンピューティングリソースの配置コンフィギュレーションを示す配置ポリシーを決定し;配置ポリシーおよび定義を用いて、リソースインフラストラクチャシステムにおいて複数のコンピューティングリソースを割当てるように構成され、リソースインフラストラクチャシステムは1つ以上のデータセンターを含む。
一例では、コンピュータシステムは、リソースインフラストラクチャシステムをさらに含む。
一例では、要求は定義を含み、定義は、プロセッサ定義、メモリ定義、および仮想マシン定義を含み、仮想マシン定義は1セットの仮想マシンを特定する。
一例では、要求は、複数のコンピューティングリソースを使用するためのサービスのタイプを示し、定義はサービスのタイプに基づいて特定される。
一例では、配置コンフィギュレーションは複数のグループを示し、配置コンフィギュレーションは、複数のグループのうちの第1のグループに割当てられる1セットの仮想マシンを特定し、複数のコンピューティングリソースのうちの第1のコンピューティングリソースが配置コンフィギュレーションに基づいて第1のグループに割当てられる。
一例では、配置コンフィギュレーションは、他のコンピューティングリソースによる複数のコンピューティングリソースへのアクセスを防止するためのセキュリティコンフィギュレーションを含み、セキュリティコンフィギュレーションは、複数のコンピューティングリソースを管理するために割当てられる1つ以上のハイパーバイザを示す。
上述のリソース管理システムおよびコンピュータシステムのコンポーネントの特定のオペレーションプロセスについて、同一概念を共有する関連の方法/システムの実施形態における対応のステップ/コンポーネントが参照され得、当該参照も関連ユニットの開示と見なされることが当業者に明らかである。したがって、処理される特定のオペレーションの一部は、説明を簡潔にするために繰返してまたは詳細に説明されない。
本発明の特定の実施形態について説明してきたが、さまざまな変形例、変更例、代替的な構成および等価物も本発明の範囲内に包含される。変形例は、開示された特徴の任意の関連する組み合わせを含む。本発明の実施形態は、特定の具体的なデータ処理環境内での動作に限定されるものではなく、複数のデータ処理環境内で自由に動作できる。さらに、特定の一連のトランザクションおよびステップを使用して本発明の実施形態について説明してきたが、本発明の範囲が、記載されている一連のトランザクションおよびステップに限定されるものではないということが当業者に明らかであるべきである。上記の実施形態のさまざまな特徴および局面は、個別にまたはともに使用され得る。
さらに、ハードウェアおよびソフトウェアの特定の組み合わせを使用して本発明の実施形態について説明してきたが、ハードウェアおよびソフトウェアの他の組み合わせも本発明の範囲内であることが認識されるべきである。本発明の実施形態は、FPGA、ASIC等を含むハードウェアのみで実現されてもよく、またはソフトウェアのみで実現されてもよく、またはこれらの組み合わせを使用して実現されてもよい。本明細書に記載されるさまざまなプロセスは、同じプロセッサ上で、または任意に組み合わされたさまざまなプロセッサ上で実現することができる。したがって、コンポーネントまたはモジュールがいくつかのオペレーションを実行するように構成されるものと記載されているが、このような構成は、たとえば、オペレーションを実行するように電子回路を設計することによって、オペレーションを実行するようにプログラム可能な電子回路(マイクロプロセッサなど)をプログラミングすることによって、またはこれらを組み合わせることによって、達成することができる。プロセス同士は、プロセス間通信のための従来の技術を含むがこれらに限定されるものではないさまざまな技術を用いて通信することができ、異なる対のプロセスが異なる技術を用いてもよく、または、同じ対のプロセスが異なる時間に異なる技術を用いてもよい。
したがって、明細書および図面は、限定的な意味ではなく例示的な意味で考えられるべきである。しかし、特許請求の範囲に記載されているより広範な精神および範囲から逸脱することなく、追加、削減、削除ならびに他の変形および変更がそれに対してなされてもよいということは明白であろう。このように、特定の発明の実施形態を記載してきたが、これらは限定的であるよう意図されるものではない。さまざまな変更例および同等例は添付の特許請求の範囲内にある。