[0021]プロバイダネットワーク(1つ以上のデータセンターにわたって実装されたネットワークなど)は、リザーブドインスタンスおよびスポットインスタンスなどのコンピューティングリソースを提供し得る。リザーブドインスタンスは、特定のタイプおよび構成のインスタンスをいくつか一定期間(1年または3年など)予約する機能を顧客に提供し得る。スポットインスタンスは、スポット価格方式を利用してインスタンスの割り当てを参照し得る。この価格方式では、顧客は、インスタンスを実行するのに支払う意思がある単位時間当たりの最高価格を指定することができる。少なくとも部分的には需要と供給によって決定される動的なスポット価格を顧客の最高価格が超えた場合、その顧客向けにインスタンスが実行され得る。なお、プロバイダネットワークによって他のタイプのインスタンスを提供してもよい。
[0022]本開示でさらに説明される様々な実施形態では、プライベートマーケットプレイスを作成する機能が顧客に提供され得る。このプライベートマーケットプレイスを運用することにより、入札方式または価格設定方式(場合によっては、スポットインスタンス方式と同様となり得る)に従って、選択されたグループのユーザに顧客定義の一式の顧客インスタンスを提供する。例えば、大学などの組織は、一式のリザーブドインスタンスを有し得る。これらのリザーブドインスタンスはプライベートマーケットプレイス経由で提供され、それによってユーザはこれらのリザーブドインスタンスに入札することができる。本実施例では、上記大学は、顧客定義の一式のインスタンスを大学内の各学部に提供してよい。学部内の個人またはコンピュータは、リザーブドインスタンスに対して内部的に入札することができる。一実施例では、この学部は、入札価格を決定することができ、または一式の「通貨」もしくは入札クレジットを定義して使用することができる。通貨または入札クレジットの他に、最低価格または最高価格、入札/価格設定アルゴリズム、中断サイクル、および各リソースタイプ(スポットインスタンスなど)に適用可能となり得る他のパラメータなどの態様を大学が変更できるようにしてもよい。プライベートマーケットプレイスに対して他のタイプのインスタンスを大学が選択できるようにしてもよい。このようなインスタンスとしては、割り当て済みのスポットインスタンスおよびオンデマンドインスタンス(以下でさらに説明する)などがある。プライベートマーケットプレイスを作成する機能を提供することにより、顧客は、自らのコンピューティング容量を自身の内部ユーザにより効率良く分散させることができる。これにより、容量を上記のように分散させると、予約済み容量をそれほど多く必要としないような顧客のコストを低減させることができ、それと共に、プロバイダネットワーク自体の予備容量の利用を増やすことができる。プライベートマーケットプレイスの別の実施形態については、以下でさらに説明する。本明細書で説明される様々な実施形態では、プライベートマーケットプレイスは、プライベートマーケットプレイス、限定マーケットプレイス、ユーザ定義プール、ユーザ定義マーケット、プライベートスポットマーケットまたはユーザ定義スポットマーケットと呼ばれることがある。
[0023]図1は、本開示に係るユーザ定義プールを提供するメカニズムを含むシステム100を示す図である。図1では、システム100は、リザーブド仮想マシンインスタンス110、オンデマンド仮想マシンインスタンス115およびスポット仮想マシンインスタンス120を含み得る。これらのインスタンスは、例えば、1つ以上のサーバコンピュータ130、135および140上でそれぞれ実行され得る。なお、ある実施形態は、別のサーバコンピュータでインスタンス化され得る様々なタイプの別の仮想マシンインスタンスを含み得ることが理解されよう。
[0024]図1は、1つ以上のコンピュータ(コンピュータ160および170など)を含み得る公共ネットワーク150も示している。一実施形態によれば、インスタンス110、115および120は、公共ネットワーク150のコンピュータユーザ(図示せず)にコンピューティングサービスをゲートウェイ190並びにコンピュータ160および170を経由して提供するように構成され得る。例えば、リザーブド仮想マシンインスタンス110は、リモートアクセス型の企業向けアプリケーション一式をユーザ(例えば、大学または他の教育機関の従業員であり得る)のグループに提供し得る。
[0025]コンピュータ160または170のユーザは、ユーザ定義プール生成サービス180に、ユーザ定義プールまたはプライベートマーケットプレイスの作成を求める要求を送ってよい。ある実施形態では、サーバ130または140が、ユーザに代わって当該サーバのため、または他のサーバのために要求を送ってよい。インスタンスを求める要求に応答して、ユーザ定義プール生成サービス180は、その要求をログに記録し、当該要求の状態に応じて周期的に更新を行ってよい。ユーザ定義プール生成サービス180は、他のサービスと通信することにより、要求されたプライベートマーケットプレイスの作成を容易にし得る。ユーザ定義プール生成サービス180は、例えば、どのインスタンスがユーザに関連付けられているかを判定し得ると共に、ユーザが自身のインスタンスを選択し、選択されたインスタンスに対して誰が要求または入札し得るかを選択し、入札方式または価格設定方式を選択することを容易にするインターフェースを提供し得る。さらに、ユーザ定義プール生成サービス180は、プライベートマーケットプレイスがオンラインになったときにユーザに通知を送ってよい。
[0026]以下、この開示の様々な態様について、ある実施例および実施形態に関して説明を行うが、これらは例示を意図したものであり、開示を限定することを意図したものではない。本明細書に提示された要旨は、コンピュータプロセス、コンピュータ制御装置もしくはコンピューティングシステムまたはコンピュータ可読記憶媒体などの製造品として実装され得ることを理解すべきである。本明細書で説明された要旨は、1つ以上のコンピューティングデバイスで実行されるプログラムモジュールとの一般的な関連において提示されるが、当業者は、他の種類のプログラムモジュールと組み合わせて他の実施態様を実施し得ることを理解するであろう。一般に、プログラムモジュールは、ルーチン、プログラム、コンポーネント、データ構造、および特定のタスクを実行し、または特定の抽象データ型を実装する他の種類の構造を含む。
[0027]当業者は、本明細書で説明されたもの以外にも、マイクロプロセッサシステム、マイクロプロセッサベースまたはプログラム可能な家庭用電化製品、ミニコンピュータ、メインフレームコンピュータ、ハンドヘルドコンピュータ、パーソナルデジタルアシスタント、電子書籍リーダー、携帯電話デバイス、専用ハードウェア装置、ネットワークアプライアンスなどを含む他のコンピュータシステム構成で、またはそれと組み合わせて本明細書で説明された主題を実施し得ることも理解するであろう。本明細書に説明された発明の実施形態は、分散コンピューティング環境で実施されてもよく、その場合には、通信ネットワークを介して接続されたリモートの処理デバイスによってタスクが実行される。分散コンピューティング環境では、ローカルおよびリモートのメモリストレージデバイスのいずれにもプログラムモジュールを配置してよい。
[0028]以下の詳細な説明では、本明細書の一部をなし、一例として特定の実施形態または実施例を示す添付図面を参照する。本明細書の図面は、縮尺に合わせて描かれたものではない。同一番号は、いくつかの図面全体にわたって同じ要素を表す。
[0029]インターネットおよび/または他のネットワークを経由して分散された一連のクライアントにアクセス可能な1つ以上のサービス(様々な種類のクラウドベースのコンピューティングまたはストレージなど)を提供するために企業または組織などのエンティティにより、またはそれに代わって確立されたネットワークは、プロバイダネットワークと呼ばれることがある。このようなプロバイダネットワークは、様々なリソースプール(物理コンピュータサーバおよび/または仮想化コンピュータサーバ、ストレージデバイス、ネットワーク機器並びに同種のものの集合など)をホスティングする1つ以上のデータセンターを含み得る。このようなデータセンターは、プロバイダネットワークによって提供される基盤およびサービスを実装および分散するのに使用され得る。これらのリソースは、ある実施形態では、「インスタンス」(仮想的または物理的なコンピューティングインスタンスまたはストレージインスタンスなど)と呼ばれる単位でクライアントに提供され得る。仮想コンピューティングインスタンスは、例えば、指定された演算能力を有する1つ以上のサーバ(このサーバは、CPUの種類および数、主記憶サイズなどを示すことによって指定され得る)、並びに特定のソフトウェアスタック(例えば、特定バージョンのオペレーティングシステムであり、このシステムはハイパーバイザの上で動作し得る)を備えてよい。
[0030]いくつかの異なる種類のコンピューティングデバイスを単独でまたは組み合わせて使用することにより、汎用または専用コンピュータサーバ、ストレージデバイス、ネットワークデバイスなどを含む、種々の実施形態におけるプロバイダネットワークのリソースを実装してよい。ある実施形態では、例えば、管理者のログインおよびパスワードをユーザに与えることにより、クライアントまたはユーザをリソースインスタンスに直接アクセスさせるようにしてよい。他の実施形態では、プロバイダネットワークの事業者は、特定のクライアントアプリケーションについて、それらのアプリケーションに適した実行プラットフォーム上のクライアントのため、当該アプリケーションの実行要件およびそれらのアプリケーションのスケジュール実行をそのクライアントが指定することを認めてよい。なお、このような実行プラットフォームとしては、アプリケーションサーバインスタンス、Java(商標)仮想マシン(Java virtual machine:JVM)、汎用もしくは専用オペレーティングシステム、様々なインタープリタ方式もしくはコンパイラ方式のプログラミング言語(Ruby、Perl、Python、C、C++など)をサポートするプラットフォームまたは高性能コンピューティングプラットフォームなどがある。上記は、例えば、インスタンスまたは実行プラットフォームにクライアントが直接アクセスせずに行われ得る。ある実施態様では、所与の実行プラットフォームが1つ以上のリソースインスタンスを利用してよく、他の実施態様では、1つのリソースインスタンスに複数の実行プラットフォームをマッピングさせてよい。
[0031]図2は、本明細書で説明された実施形態を実施し得る例示的なコンピューティング環境を示す図である。図2は、データセンター210の一実施例を概略的に示す図である。このデータセンターは、ユーザ200aおよび200b(本明細書においてこれらは、単数形で「ユーザ200(a user 200)」、または複数形で「ユーザ200(the users 200)」と呼ばれることがある)に、ユーザコンピュータ202aおよび202b(本明細書においてこれらは、単数形で「コンピュータ202(a computer 202)」、または複数形で「コンピュータ202(the computers 202)」と呼ばれることがある)を介して通信ネットワーク230経由でコンピューティングリソースを提供することができる。データセンター210は、常時または必要に応じてアプリケーションを実行するコンピューティングリソースを提供するように構成され得る。データセンター210によって提供されるコンピューティングリソースは、様々なタイプのリソース(データ処理リソース、データストレージリソース、データ通信リソースなど)を含み得る。各タイプのコンピューティングリソースは、汎用であってよく、あるいはいくつかの特定構成において利用可能であってよい。例えば、データ処理リソースは、仮想マシンインスタンスとして利用可能であってよい。これらの各インスタンスは、Webサーバ、アプリケーションサーバ、メディアサーバ、データベースサーバなどを含むアプリケーションを実行するように構成され得る。データストレージリソースは、ファイルストレージデバイス、ブロックストレージデバイスなどを含み得る。
[0032]各タイプまたは各構成のコンピューティングリソースは、種々のサイズ(多数のプロセッサ、大量のメモリおよび/または大きなストレージ容量からなる大規模なリソース、並びに少数のプロセッサ、少量のメモリおよび/または小さなストレージ容量からなる小規模なリソースなど)において利用可能であってよい。顧客は、例えば、いくつかの小さな処理リソースをWebサーバとして割り当て、かつ/または大きな処理リソースをデータベースサーバとして割り当てるように選択してよい。
[0033]データセンター210は、サーバ216aおよび216b(本明細書においてこれらは、単数形で「サーバ216(a server 216)」、または複数形で「サーバ216(the servers 216)」と呼ばれることがある)を含み得る。これらのサーバは、仮想マシンインスタンス218aおよび218b(本明細書においてこれらは、単数形で「仮想マシンインスタンス218(a virtual machine instance 218)」、または複数形で「仮想マシンインスタンス218(the virtual machine instances 218)」と呼ばれることがある)として利用可能なコンピューティングリソースを提供する。仮想マシンインスタンス218は、Webサーバ、アプリケーションサーバ、メディアサーバ、データベースサーバなどを含むアプリケーションを実行するように構成され得る。提供され得る他のリソースにはデータストレージリソース(図示せず)が含まれ、さらに、ファイルストレージデバイス、ブロックストレージデバイスなどが含まれ得る。
[0034]コンピューティングハードウェアの仮想化技術を利用できることにより、大規模なコンピューティングリソースが顧客に提供され、複数の顧客間で効率良くかつ安全にコンピューティングリソースを共有できる利点が提供されてきた。例えば、仮想化技術(VMwareまたは他の仮想化システムによって提供されるものなど)では、物理コンピューティングデバイスによってホスティングされた1つ以上の仮想マシンインスタンスを各ユーザに提供することにより、物理コンピューティングデバイスを複数ユーザ間で共有させることが可能となる。仮想マシンインスタンスは、別個の論理コンピューティングシステムとして機能する特定の物理コンピューティングシステムをソフトウェアエミュレーションしてよい。こうした仮想マシンインスタンスにより、所与の物理コンピューティングリソースを共有する複数のオペレーティングシステム間が隔離される。さらに、一部の仮想化技術は、1つ以上の物理リソースにわたる仮想リソース(複数の別個の物理コンピューティングシステムにわたる複数の仮想プロセッサを備えた1つの仮想マシンインスタンスなど)を提供し得る。
[0035]図2を参照すると、通信ネットワーク230は、例えば、互いに接続されたネットワークで構成される公にアクセス可能なネットワーク(インターネットなど)であってよく、場合によっては様々な個別の当事者によって運用され得る。他の実施形態では、通信ネットワーク230は、プライベートネットワーク(例えば、非特権ユーザにとって完全にまたは部分的にアクセスできない企業または大学のネットワーク)であってよい。なお他の実施形態では、通信ネットワーク230は、インターネットにアクセスし、かつ/またはインターネットからアクセスを受ける1つ以上のプライベートネットワークを含み得る。
[0036]通信ネットワーク230は、コンピュータ202へのアクセスを提供し得る。コンピュータ202は、データセンター210の顧客200または他の顧客によって利用されるコンピュータであってよい。例えば、ユーザコンピュータ202aまたは202bは、サーバ、デスクトップ型もしくはラップトップ型コンピュータ、タブレット型コンピュータ、無線電話、携帯情報端末(personal digital assistant:PDA)、電子書籍リーダー、ゲーム機、セットトップボックス、またはデータセンター210にアクセス可能な他のコンピューティングデバイスであってよい。ユーザコンピュータ202aまたは202bは、(例えば、ケーブルモデムまたはデジタル加入者線(Digital Subscriber Line:DSL)を経由して)インターネットに直接接続し得る。なお、2つのユーザコンピュータ202aおよび202bのみを図示しているが、複数のユーザコンピュータが存在し得ることを理解すべきである。
[0037]コンピュータ202を利用して、データセンター210によって提供されたコンピューティングリソースの各態様を設定してもよい。その際、データセンター210はWebインターフェースを提供する場合があるが、それを介し、ユーザコンピュータ202上で実行されるWebブラウザ用アプリケーションプログラムを使用することによって当該データセンターの運用の態様が設定され得る。あるいは、ユーザコンピュータ202上で実行されるスタンドアローンのアプリケーションプログラムが、データセンター210によって公開されているアプリケーションプログラミングインターフェース(application programming interface:API)にアクセスして設定動作を行うようにしてもよい。なお、データセンター210の運用を設定するための他のメカニズム(アプリケーションに対する更新を配布することを含む)を利用する場合もある。
[0038]図2に示すサーバ216aおよび216bは、上述したコンピューティングリソースを提供するように適切に構成された標準的なサーバであってよく、1つ以上のアプリケーションを実行するコンピューティングリソースを提供し得る。一実施形態では、コンピューティングリソースは仮想マシンインスタンス218であってよい。仮想マシンインスタンスの実施例では、それぞれのサーバ216は、仮想マシンインスタンスを実行可能なインスタンスマネージャ220aまたは220b(本明細書においてこれらは、単数形で「インスタンスマネージャ220(an instance manager 220)」、または複数形で「インスタンスマネージャ220(the instance managers 220)」と呼ばれることがある)を実行するように構成され得る。インスタンスマネージャ220は、例えば、仮想マシンモニタ(virtual machine monitor:VMM)、またはサーバ216上で仮想マシンインスタンス218を実行できるように構成された別の種類のプログラムであってよい。前述のように、それぞれの仮想マシンインスタンス218は、アプリケーションの全てまたは一部を実行するように構成され得る。
[0039]上記に開示された実施形態では仮想マシンインスタンスとの関連について述べているが、本明細書に開示された概念および技術と共に他の種類の実施態様を利用可能であることを理解すべきである。例えば、仮想マシンインスタンスを利用しないコンピューティングシステムと共に本明細書に開示された実施形態を利用してもよい。
[0040]図2に示す例示的なデータセンター210では、ルータ214を利用してサーバ216aとサーバ216bを相互接続してよい。通信ネットワーク230に接続されているゲートウェイ240にルータ214を接続してもよい。ルータ214は、データセンター210におけるネットワーク内の通信を、例えば、こうした通信の特徴(例えば、送信元アドレスおよび/もしくは宛先アドレスを含むヘッダ情報、プロトコル識別子など)並びに/またはプライベートネットワークの特徴(例えば、ネットワークトポロジーに基づく経路など)に基づいて適切となるようにパケットまたは他のデータ通信を転送することによって管理し得る。簡単にするため、本実施例におけるコンピューティングシステムおよび他のデバイスの様々な態様は、従来の詳細事項をある程度示さずに説明されていることが理解されよう。別のコンピューティングシステムおよび他のデバイスを他の実施形態において相互接続してよく、その際には様々な方法を用いて相互接続してよい。
[0041]図2に示したネットワークトポロジーは、非常に簡易化されたものであり、これよりも多数のネットワークおよびネットワークデバイスを利用して、本明細書に開示された様々なコンピューティングシステムを相互接続してよいことを理解すべきである。これらのネットワークトポロジーおよびネットワークデバイスは、当業者にとって明らかのはずである。
[0042]図2で説明されたデータセンター210は、単に例示的なものであり、他の実施態様を利用してよいことも理解すべきである。さらに、ソフトウェア、ハードウェアまたはソフトウェアとハードウェアの組み合わせを用いて本明細書に開示された機能を実装してよいことを理解すべきである。他の実施態様は、当業者にとって明らかのはずである。サーバ、ゲートウェイまたは他のコンピューティングデバイスは、相互に影響し合い、説明された種類の機能を実行することができるハードウェアまたはソフトウェアを任意に組み合わせたものとして、デスクトップまたは他のコンピュータ、データベースサーバ、ネットワークストレージデバイスおよび他のネットワークデバイス、PDA、タブレット、携帯電話、無線電話、ポケットベル、電子手帳、インターネット家電、(例えば、セットトップボックスおよび/またはパーソナル/デジタルビデオレコーダーを用いた)テレビジョンベースのシステム並びに適切な通信能力を備えた様々な他の民生機器などを含み得るが、それらに限定されないことも理解すべきである。加えて、ある実施形態では、例示したモジュールによって提供される機能をより少ないモジュールに統合してよく、あるいは別のモジュールに分散させてよい。同様に、ある実施形態では、例示したモジュールの一部の機能を提供しなくてよく、かつ/または他の追加機能を利用可能としてよい。
[0043]ところで、データセンター210によって提供される購入済みのコンピューティングリソースの能力は、需要に応じて増減させることができる。その際、スケーリングとは、需要に応じてコンピューティングリソースのインスタンスをインスタンス化し(本明細書では「起動する」もしくは「作成する」と呼ぶこともある)、または終了させる(本明細書では「デスケーリングする」と呼ぶこともある)プロセスを指す。このように、データセンター210の顧客によって購入されたリソースの能力をオンデマンドで増減させることができる。
[0044]自動スケーリングは、リソースに対する需要が増加するか後退するかに応じてコンピューティングリソースを増減させる1つのメカニズムである。自動スケーリングにより、データセンター210の顧客は、自身が購入したコンピューティングリソースを顧客によって定義される状況に従って増減させるようにデータセンター210の設定を行うことができる。例えば、特定の状況(需要の急増など)が発生したことに応じて、ある特定の方法で容量をスケールアップするようにルールを定義してよい。同様に、他の状況(需要の後退など)が発生したことに応じて、ある特定の方法で容量をスケールダウンするようにルールを定義してもよい。仮想マシンインスタンスを起動するための本明細書に開示されたメカニズムは、顧客によってインスタンスが手動で起動されるとき、またはデータセンター210内の自動スケーリング要素によってインスタンスが起動されるときに利用され得る。
[0045]データセンター210は、コンピューティングリソースの新規インスタンスを展開する際に顧客を支援する展開コンポーネントを用いて設定されてもよい。この展開コンポーネントは、新規インスタンスをどのように設定するかを記述したデータを含む設定を顧客から受領し得る。例えば、この設定では、新規インスタンスにインストールすべき1つ以上のアプリケーションまたはソフトウェアコンポーネントが指定され、新規インスタンスで実行すべきスクリプトおよび/または他の種類のコードが提供され、アプリケーションキャッシュをどのように用意すべきかを指定するキャッシュウォーミングロジックおよび他の種類の情報が提供され得る。展開コンポーネントは、顧客によって提供された設定およびキャッシュウォーミングロジックを利用することにより、コンピューティングリソースの新規インスタンスの起動、設定および準備を行う。
[0046]少なくともある実施形態では、本明細書で説明された1つ以上の技術(プール生成サービス180の機能を実装する技術を含む)の一部または全てを実装するサーバは、1つ以上のコンピュータアクセス可能な媒体を備え、またはこれにアクセスするように構成された汎用コンピュータシステムを含み得る。図3は、このような汎用のコンピューティングデバイス300を示す図である。例示した実施形態では、コンピューティングデバイス300は、入出力(I/O)インターフェース330を介してシステムメモリ320に接続された1つ以上のプロセッサ310a、310bおよび/または310n(本明細書においてこれらは、単数形で「プロセッサ310(a processor 310)」、または複数形で「プロセッサ310(the processors 310)」と呼ばれることがある)を備える。コンピューティングデバイス300は、I/Oインターフェース330に接続されたネットワークインターフェース340をさらに備える。
[0047]様々な実施形態では、コンピューティングデバイス300は、1つのプロセッサ310を含むユニプロセッサシステム、またはいくつかのプロセッサ310(例えば、2個、4個、8個もしくは他の適切な数)を含むマルチプロセッサシステムであってよい。プロセッサ310は、命令を実行可能な任意の適切なプロセッサであってよい。例えば、様々な実施形態では、プロセッサ310は、種々の命令セットアーキテクチャ(instruction set architectures:ISA)のいずれかを実装する汎用プロセッサまたは組み込みプロセッサ(x86、PowerPC、SPARCもしくはMIPSのISAまたはその他の適切なISAなど)であってよい。マルチプロセッサシステムでは、それぞれのプロセッサ310は、通常は同じISAを実装し得るが、必ずしもそのように実装されるとは限らない。
[0048]システムメモリ320は、プロセッサ310(単数または複数)によってアクセス可能な命令およびデータを記憶するように構成され得る。種々な実施形態では、システムメモリ320は、SRAM(static random access memory)、SDRAM(synchronous dynamic RAM)、不揮発/Flash(商標)型メモリまたはその他の種類のメモリといった任意の適切なメモリ技術を用いて実装され得る。例示した実施形態では、1つ以上の所望の機能(上述した方法、技術およびデータなど)を実装するプログラム命令およびデータは、システムメモリ320内にコード325およびデータ326として記憶されているように示されている。
[0049]一実施形態では、I/Oインターフェース330は、プロセッサ310、システムメモリ320およびこの装置内の任意の周辺デバイス(ネットワークインターフェース340または他の周辺インターフェースを含む)の間のI/Oトラフィックを調整するように構成され得る。ある実施形態では、I/Oインターフェース330は、任意の必要なプロトコル変換、タイミング変換または他のデータの変換を実行することにより、ある構成要素(例えば、システムメモリ320)からのデータ信号を別の構成要素(例えば、プロセッサ310)での使用に適した形式に変換し得る。ある実施形態では、I/Oインターフェース330は、例えば、PCI(Peripheral Component Interconnect)バス標準規格またはUSB(Universal Serial Bus)標準規格を変型したものなどの様々な種類の周辺バスを介して接続されたデバイスにも対応し得る。ある実施形態では、I/Oインターフェース330の機能は、例えば、2つ以上の別々の構成要素(ノースブリッジおよびサウスブリッジなど)に分割され得る。また、ある実施形態では、I/Oインターフェース330の機能の一部または全て(システムメモリ320とのインターフェースなど)をプロセッサ310に直接組み込んでもよい。
[0050]ネットワークインターフェース340は、例えば、コンピューティングデバイス300と、1つ以上のネットワーク350に接続された他の1つ以上のデバイス360(図1から3に示したような他のコンピュータシステムまたはデバイスなど)との間でデータを交換することができるように構成され得る。様々な実施形態では、ネットワークインターフェース340は、例えば、任意の適切な有線または無線の一般的なデータネットワーク(各種のイーサネットネットワークなど)を経由した通信に対応し得る。さらに、ネットワークインターフェース340は、遠距離通信ネットワーク/電話網(アナログ音声ネットワークもしくはデジタル光ファイバー通信ネットワークなど)、ファイバーチャネルSANなどのストレージエリアネットワーク、またはその他の適切な種類のネットワークおよび/もしくはプロトコルを経由した通信に対応し得る。
[0051]ある実施形態では、システムメモリ320は、対応する方法および装置の実施形態を実装すべく図1および2に関して上述したプログラム命令およびデータを記憶するように構成されたコンピュータアクセス可能な媒体の一実施形態であってよい。しかしながら、他の実施形態では、プログラム命令および/またはデータを各種のコンピュータアクセス可能な媒体から受け取り、そこに送り、あるいはそこに記憶してよい。一般的に言えば、コンピュータアクセス可能な媒体は、非一時的な記憶媒体またはメモリ媒体を含み得る。このような媒体としては、磁気媒体または光学媒体(例えば、I/Oインターフェース330を介してコンピューティングデバイス300に接続されたディスクまたはDVD/CD)などがある。非一時的なコンピュータアクセス可能な記憶媒体は、RAM(例えば、SDRAM、DDR SDRAM、RDRAM、SRAMなど)、ROMなどの任意の揮発性または不揮発性媒体も含み得る。このような媒体は、コンピューティングデバイス300のある実施形態では、システムメモリ320または別の種類のメモリとして含まれ得る。さらに、コンピュータアクセス可能な媒体は、通信媒体(ネットワークインターフェース340を介して実装され得るようなネットワークおよび/または無線接続など)を経由して伝達される伝送媒体または伝送信号(電気信号、電磁信号またはデジタル信号など)を含み得る。複数のコンピューティングデバイス(図3に示したものなど)の一部または全てを使用して、様々な実施形態において説明された機能を実装してよい。例えば、種々の異なるデバイスおよびサーバ上で動作するソフトウェアコンポーネントを連携させることによってその機能を提供してよい。ある実施形態では、汎用コンピュータシステムを用いて実装するのに加えて(またはその代わりに)、ストレージデバイス、ネットワークデバイスまたは専用コンピュータシステムを用いて、説明された機能の一部を実装してよい。本明細書中用いられる「コンピューティングデバイス」という用語は、少なくとも全ての上記種類のデバイスを指すが、これらの種類のデバイスに限定されるものではない。
[0052]1つ以上のサービス(様々な種類のクラウドベースのコンピューティングまたはストレージなど)を提供するために企業または公的部門組織などのエンティティによって設置され、インターネットおよび/または他のネットワークを経由して、分散された一連のクライアントにアクセス可能なネットワークは、プロバイダネットワークと呼ばれることがある。このようなプロバイダネットワークは、そのプロバイダネットワークによって提供される基盤およびサービスを実装および分散するのに必要とされる様々なリソースプール(物理コンピュータサーバおよび/または仮想化コンピュータサーバ、ストレージデバイス、ネットワーク機器並びに同種のものの集合など)をホスティングする多くのデータセンターを含み得る。これらのリソースは、ある実施形態では、インスタンス(仮想的または物理的なコンピューティングインスタンスまたはストレージインスタンスなど)と呼ばれる単位でクライアントに提供され得る。仮想コンピューティングインスタンスは、例えば、指定された演算能力を有する1つ以上のサーバ(このサーバは、CPUの種類および数、主記憶サイズなどを示すことによって指定され得る)、並びに特定のソフトウェアスタック(例えば、特定バージョンのオペレーティングシステムであり、このシステムはハイパーバイザの上で動作し得る)を備える。
[0053]いくつかの異なる種類のコンピューティングデバイスを単独でまたは組み合わせて使用して、汎用または専用コンピュータサーバ、ストレージデバイス、ネットワークデバイスなどを含む、種々の実施形態におけるプロバイダネットワークのリソースを実装してよい。ある実施形態では、例えば、管理者のログインおよびパスワードをユーザに与えることにより、クライアントまたはユーザをリソースインスタンスに直接アクセスさせるようにしてよい。他の実施形態では、プロバイダネットワークの事業者は、特定のクライアントアプリケーションについて、それらのアプリケーションに適した実行プラットフォーム上のクライアントのために、例えば、インスタンスまたは実行プラットフォームにクライアントが直接アクセスしなくとも、当該アプリケーションの実行要件およびそれらのアプリケーションのスケジュール実行をそのクライアントが指定することを認めてよい。なお、このような実行プラットフォームとしては、アプリケーションサーバインスタンス、Java(商標)仮想マシン(JVM)、汎用もしくは専用オペレーティングシステム、様々なインタープリタ方式もしくはコンパイラ方式のプログラミング言語(Ruby、Perl、Python、C、C++など)をサポートするプラットフォームまたは高性能コンピューティングプラットフォームなどがある。一部の実施態様では、所与の実行プラットフォームが1つ以上のリソースインスタンスを利用してよく、他の実施態様では、1つのリソースインスタンスに複数の実行プラットフォームをマッピングさせてよい。
[0054]多くの環境では、様々な種類の仮想化コンピューティング、ストレージおよび/またはネットワークアクセス可能な他の機能を実装するプロバイダネットワークの事業者は、様々なリソース取得モードでリソースへのアクセスを顧客が予約または購入できるようにしてよい。コンピューティングリソースの提供者が顧客に設備を提供することにより、顧客は、所望のコンピューティングリソースを選択して起動し、そのコンピューティングリソースにアプリケーションコンポーネントを展開し、当該環境でアプリケーションの実行を維持し得る。加えて、コンピューティングリソースの提供者が顧客に設備をさらに提供することにより、アプリケーションに対する需要または容量の要求が変化するにつれて、顧客は、手動で、または自動スケーリングによって、アプリケーションに割り当てられたリソースの数およびタイプを迅速かつ容易にスケールアップまたはスケールダウンし得る。コンピューティングリソースの提供者によって提供されるコンピューティングリソースは、個別のユニット(インスタンスと呼ばれることがある)において利用可能となり得る。インスタンスは、物理的なサーバハードウェアプラットフォーム、サーバで実行される仮想マシンインスタンスまたは両者の何らかの組み合わせを表し得る。様々なタイプおよび構成のインスタンスは、種々のオペレーティングシステム(OS)および/またはハイパーバイザを実行する種々のサイズのリソースを含み、さらに、様々なインストール済みソフトウェアアプリケーション、ランタイムなどと共に利用可能となり得る。さらに、インスタンスは、例えば、特定の可用性ゾーン(データセンター、または下位のコンピューティングハードウェアの他の地理的位置を表す)において利用可能となり得る。
[0055]ある実施形態では、プロバイダネットワークは複数の地理的領域に編成され得るが、このとき各領域は1つ以上の可用性ゾーンを含み得る。可用性ゾーン(可用性コンテナと呼ばれることもある)は、1つ以上の互いに異なる位置またはデータセンターをさらに含み得ることにより、所与の可用性ゾーンにおけるリソースが他の可用性ゾーンにおける障害から切り離され、あるいは隔離されるように構成されている。すなわち、ある可用性ゾーンに障害が生じても、その他の可用性ゾーンにおいて障害の発生が予期されるとは限らない。従って、リソースインスタンスの可用性プロファイルでは、異なる可用性ゾーンにおけるリソースインスタンスの可用性プロファイルが独立するように意図されている。クライアントは、複数のアプリケーションインスタンスをそれぞれの可用性ゾーンで起動することにより、一地点での障害から自分のアプリケーションを保護できるようにしてよい。それと並行して、ある実施態様では、同じ地理的領域内にあるリソースインスタンス間で、安価かつ低遅延のネットワーク接続が提供され得る(それと共に、同じ可用性ゾーンのリソース間のネットワーク伝送が一層早くなり得る)。
[0056]プロバイダネットワークは、「オンデマンド」で利用可能なインスタンスを作成してよく、それによって顧客は、特定のタイプおよび構成(例えば、サイズ、プラットフォーム、テナンシー、可用性ゾーンなど)のいくつかのインスタンスを選択し、そのインスタンスを迅速に起動して展開することができる。オンデマンドインスタンスは、アプリケーションに対する需要または容量の要求が経時変化するにつれて、手動で、または自動スケーリングによって自動で、必要に応じてさらに追加または除去され得る。顧客は、例えば、運用時間数および/または実際に利用したリソースに基づき、自身のオンデマンドインスタンスに関連した継続的な使用コストを負担し得る。
[0057]コンピューティングリソースの提供者は、顧客にとって利用可能なリザーブドインスタンスも作成してよい。リザーブドインスタンスは、例えば、インスタンスを起動した場合かつその時に、単位時間ごとの使用コストまたは他の使用コストが減少するのと引き替えに安価な前払いの費用で、いくつかの特定のタイプおよび構成のインスタンスを一定期間(1年または3年など)予約する機能を顧客に提供し得る。これにより、顧客は、必要なときに適度なリソースを確実に利用できるようにしつつ、需要の増加に応じて展開済みアプリケーションをスケールアップするのに関わるコストを据え置くことができ得る。リザーブドインスタンスにより、顧客には自身のアプリケーションの増減に備えて信頼性の高い待機容量が提供される一方、リザーブドインスタンスを購入すると、所望の期間よりも長い期間、特定の可用性ゾーンにおいて特定の数、タイプおよび/または構成のコンピューティングリソースに顧客が束縛される場合もある。技術的アーキテクチャまたはアプリケーションのニーズが変化した場合でも、顧客は、リザーブドインスタンスへの投資を回収して換金することができるとは限らない。
[0058]こうしたプロバイダネットワークの事業者は、ある事例では、柔軟な一連のリソース予約、コントロールおよびアクセスインターフェースをクライアント向けに導入してよい。例えば、プロバイダネットワークのリソースマネージャには、(例えば、Webサイトまたは一連のWebページを介して)プログラム的なリソース予約インターフェースが実装され得る。このインターフェースにより、クライアントは、リソースインスタンスについて知り、リソースインスタンスを選択し、リソースインスタンスへのアクセスを購入し、かつ/またはリソースインスタンスを予約することができる。後述のある実施形態では、リソースマネージャまたは価格設定オプティマイザ(pricing optimizer)などのエンティティが1つ以上のプログラム的インターフェース(WebページまたはAPIなど)を実装しているものとして説明されるが、このような実施形態では、そのエンティティのインターフェースマネージャ・サブコンポーネントがインターフェース関連機能を担当し得る。多くの実施形態では、リソースマネージャおよび価格設定オプティマイザの外部にある単独(またはスタンドアローン)のインターフェースマネージャにより、同等のインターフェース関連機能が実装され得る。こうしたインターフェースは、リソースカタログを閲覧することができる機能を備えてよく、様々なタイプまたはサイズのサポート対象リソースの詳細事項および仕様、サポートする種々の予約種類または予約モード、価格設定モデルなどを提供してよい。
[0059]プロバイダネットワークは、上述したインスタンスタイプの一部に対応する数種類の購入モード(本明細書では予約モードと呼ぶこともある)をサポートし得る。例えば、プロバイダネットワークは、長期予約、オンデマンドのリソース割り当てまたはスポット価格ベースのリソース割り当てをサポートし得る。長期予約モードを利用すると、クライアントは、リソースインスタンスに対して1回限りの前払いを安価で行い、そのインスタンスを特定期間(1年間または3年間など)予約し、そのインスタンスに対して一時間当たりの料金を低額で支払い得る。そのため、クライアントにとっては、その予約期間中利用可能なリザーブドインスタンスを有することが保証される。オンデマンドモードを利用すると、クライアントは、長期契約または前払いをしなくても、容量に対して時間単位(または何らかの適切な時間単位)で支払うことが可能となる。スポット価格モードでは、クライアントは、特定タイプのリソースに対して支払う意思がある単位時間当たりの最高価格を指定することが可能であり、少なくとも部分的には需要と供給によって決定される動的なスポット価格をクライアントの最高価格が超えた場合、そのタイプのリソースがそのクライアントに提供され得る。ある実施形態では、リソースインスタンスで構成される動的にサイズ変更可能なプールは、種々の予約タイプまたはモードに備えて確保され得る。例えば、長期リザーブドインスタンスをあるプールから割り当て、オンデマンドインスタンスを別のプールから割り当てるなどしてよい。要求されたリソースタイプの供給が需要を超えている期間中は、オンデマンドモードの価格よりもスポット価格が大幅に低下し得る。ある実施態様では、クライアントによって指定された最高入札額を超えてスポット価格が上昇した場合、リソースの割り当てが中断される場合がある。すなわち、以前にクライアントに割り当てられたリソースインスタンスの返還がリソースマネージャによって要求され、それよりも高い価格を支払う意思のある他のクライアントに割り当てられる場合がある。他の購入モードまたは各モードの組み合わせは、ある実施形態では、リソースマネージャによって実施され得る。
[0060]本明細書で説明された技術を利用することにより、プロバイダネットワークは、プライベートマーケットプレイスの作成を可能にするサービスも実装し得る。このサービスにより、自身に関連付けられ、あるいは自ら指定したユーザに自分のリザーブドインスタンスおよび他のタイプのインスタンスを提供することを顧客が望んでいる場合、あるメカニズムがその顧客に提供され得る。例えば、顧客の組織に属する顧客の内部ユーザは、コンピューティングリソースの提供者によって通常提供されるものよりも短期間のリザーブドインスタンスを利用したかったり、あるいはある限定された期間中にインスタンスにアクセスすれば十分であったりする場合がある。顧客は、自分のリザーブドインスタンスの残り期間、いくつかの未使用のリザーブドインスタンスおよび割り当て済みスポットインスタンス、またはそれらの一部を選択し、選択したインスタンスをその顧客の内部ユーザにプライベートマーケットプレイスで提供してよく、これによってその内部ユーザは、当該プライベートマーケットプレイスを介して、インスタンスを「購入する」、そのインスタンスに「入札する」、あるいはそのインスタンスへのアクセスを要求することができる。従って、インスタンスを最も必要とし、あるいはインスタンスに最高額の「通貨」を支払う意思のある内部ユーザにインスタンスを提供するためのこうした限定的なプライベートマーケットプレイスを実装することにより、顧客には、自身が取得したインスタンスをより効率的に利用する方法が提供され、それにより、顧客に割り当てられた容量をより効率的に分散させることができる。
[0061]図4は、少なくともある実施形態に係る、インスタンスを提供するための例示的なシステム環境を示す図である。システム400は、複数のリソースインスタンス430(本明細書においてこれらは、単数形で「リソースインスタンス430(a resource instance 430)」、または複数形で「リソースインスタンス430(the resource instances 430)」と呼ばれることがある)で構成されるプロバイダネットワーク410を含み得る。なお、これらのリソースインスタンスには、ある可用性ゾーン420A内のインスタンス430A、430B、430D、430E、430Gおよび430H、並びに異なる可用性ゾーン420B内のインスタンス430J、430K、430M、430N、430Pおよび430Qなどがある。可用性ゾーン420Aおよび420B(本明細書においてこれらは、単数形で「可用性ゾーン420(an availability zone 420)」、または複数形で「可用性ゾーン420(the availability zones 420)」と呼ばれることがある)内の様々なリソースインスタンス430は、クライアント448Aおよび448B(本明細書においてこれらは、単数形で「クライアント448(a client 448)」、または複数形で「クライアント448(the clients 448)」と呼ばれることがある)などのクライアント(または潜在的なクライアント)によって利用するために予約され、かつ/または割り当てられ得る。例示した実施形態では、システム400は、リソースマネージャ480およびインターフェースマネージャ482を含む。先に述べたように、ある実施形態では、インターフェースマネージャ482の機能は、リソースマネージャ480のサブコンポーネントによって実装され得る。
[0062]インターフェースマネージャ482は、ある実施形態では、1つ以上のプログラム的インターフェースを実装し得る。このインターフェースにより、クライアント448は、インスタンス430を検索、閲覧、予約および取得して、(例えば、様々なアプリケーションを実行し、かつ/またはそれらにアクセスするための)様々な種類のサービスを得ることができる。例示した実施形態では、任意の時点で、インスタンス430の一部または全てをインスタンスプールに割り当ててよい。このようなインスタンスプールとしては、リザーブドインスタンスプール421Aもしくは421B、オンデマンドインスタンスプール423Aもしくは423B、利用可能インスタンスのプール425、またはそれ以外のプール(他のプール427など)などがある。
[0063]ある実施形態では、利用可能インスタンスのプール425などの所与のプールは、例えば、サポートするインスタンス予約モードおよびインスタンス割り当てモードに基づき、それ自体のサブプールを内部に含み得る。各プール(またはサブプール)は、プールまたはサブプールに割り当てられ得るインスタンスの中断可能性(interruptibility)に関する設定といった他のプロパティに加えて、そのインスタンスに関連した価格設定方式を有し得る。なお、プールは、論理的な集合または集約を表し得る。従って、例えば、同じプールまたはサブプール内に2つのインスタンスが存在しても、その2つのインスタンスに使用されるハードウェアの物理的位置に関する何かが必ずしも示唆されるとは限らない。図4に示すインスタンス430は可用性ゾーン420に属するものとして示されているが、他の実施形態では、プロバイダネットワーク410は別の編成をとってもよい。例えば、ある実施形態では、可用性ゾーン420を実装しなくてよい。可用性ゾーン420は、ある実施形態では、各地理的領域(図4には図示せず)にグループ分けしてよい。インスタンスプールは、ある実施態様では、可用性ゾーン内に実装され得る(例えば、各可用性ゾーンは、独自のリザーブドインスタンスプールを含んでよい)。それに対し、他の実施態様では、インスタンスプールまたはサブプールは、複数の可用性ゾーンにわたってもよい。
[0064]ある実施形態では、図5などのように、データセンター500を共有コンピューティングリソースおよび/または共有基盤の集合とみなす場合がある。例えば、図5に示すように、データセンター500は、仮想マシンスロット504、物理ホスト502、電源506、ルータ508、隔離ゾーン510および地理的位置512を含み得る。仮想マシンスロット504は、スロットまたはリソーススロットと呼ばれることがある。物理ホスト502は、複数の仮想マシンスロット504によって共有され得るが、各スロット504は、仮想マシン(ゲストドメインなど)をホスティングすることが可能である。複数の物理ホスト502は、電源506(サーバラック上に設けられた電源506など)を共有し得る。ルータ508は、いくつかの電源506にまたがる複数の物理ホスト502にネットワークトラフィックをルーティングするサービスを提供し得る。隔離ゾーン510は、多数のルータ508にサービスを提供し得る。この隔離ゾーン510は、冗長なリソース(補助発電機など)によってサービスを受け得るコンピューティングリソースの集まりである。複数の隔離ゾーン510は、データセンター500などの地理的位置512に存在し得る。プロビジョニングサーバ514は、メモリと、決められた役割および共有リソース/基盤を計算に利用してユーザデータを分析し、利用可能な実装リソースを順位付けする命令を用いて構成されたプロセッサとを含み得る。プロビジョニングサーバ(単数または複数)514は、コンピューティングリソースの健全性および/または障害を検知することに加え、コンピューティングリソースをプロビジョニングし、あるいはそのプロビジョニングを解除する作業フローを管理してもよい。
[0065]プロビジョニングサーバ514は、データセンター内のリソースの配置を判断し得る。ある実施形態では、この配置は、利用可能なコンピューティングリソースおよび/またはコンピューティングリソース間の関係に少なくとも部分的に基づき得る。一実施形態では、リソース間の距離は、共有されたリソースの程度によって計測され得る。この距離は、役割に応じてリソースを順位付けするのに使用され得る。例えば、第2システムとルータ508を共有するホスト502上の第1システムは、隔離ゾーン510を共有するのみの第3システムに比べて第2システムにより近接し得る。アプリケーションに応じて、スループットを高めるために距離を短く保ち、あるいは耐久性を向上させるために距離を長く保つことが望ましい場合がある。別の実施形態では、この距離は、非共有リソースに関して決定され得る。例えば、ルータ508を共有する2つのスロット504は、物理ホスト502と電源506の距離を有し得る。リソースが違う場合、距離計算においてそれぞれ異なるように重み付けがなされ得る。
[0066]ある準備済みのリソースを選択してクライアントのアカウントに移すときに配置計算を利用してもよい。一実施形態では、クライアントは、オペレーティングシステムを搭載した仮想マシンを要求する。プロビジョニングサーバ514は、スロット504内の多段容量を用いてその要求を満たし得ることを判断してよい。どの基盤が共有に望ましい場合があるか、およびどの基盤が共有に望ましくないかを決める配置判断が行われ得る。この配置判断を利用して、その配置判断の特徴の少なくとも一部を満たす多段容量を利用可能なリソースのプールから選択してよい。例えば、多段容量のプールは、クラスターコンピューティングの導入によって使用され得る。新たな容量が要求されると、プロビジョニングサーバ514は、他の既存の容量の近くに配置することが遅延の関係から望ましいと判断する場合がある。従って、その判断により、ルータ508を共有することは望ましいが、電源506および物理ホスト502を共有することは望ましくないことが判明する場合がある。次いで、これらの属性に適合するようにそのプール内の容量を選択してよく、同じルータ508上に他の容量として好ましくは配置されるものの、物理ホスト502と電源506は異なるようにその容量を配置してよい。配置判断の他の実施例(データベースシャードに関するものなど)では、基盤の共有はそれほど望ましくない場合があり、他の関連容量と共通した基盤がより少なくなるように容量が選択され得る。
[0067]プロバイダネットワークの事業者(上述したものなど)は、ある実施形態では、図1に示したユーザ定義プール生成サービス180などの基盤を提供し得る。このサービスは、ユーザ定義のプライベートマーケットプレイスを要求および作成する機能を顧客に提供するものである。一実施形態では、顧客は、いくつかのリソース(リザーブドインスタンスおよびオンデマンドインスタンスなど)を購入したエンティティ(教育機関など)であってよい。顧客は、自身のリザーブドインスタンスおよびオンデマンドインスタンスのサブセットを選択し、それらのリザーブドインスタンスおよびオンデマンドインスタンスにその教育機関内の部署および/またはユーザが内部的に入札し得る内部マーケットプレイスを作成してよい。この入札プロセスは、上述したようにスポットマーケットでスポットインスタンスに入札するプロセスと同様であってよい。ある実施形態では、顧客は、他の入札プロセスを選択してよく、または分割クレジットを用いるなどの他の支払いの形態を利用して入札できる場合がある。様々な実施形態では、通貨、最低/最高価格または最低/最高価格水準、入札/価格設定アルゴリズム、中断サイクルおよび他のパラメータなどの各態様をカスタマイズできるようにしてよい。
[0068]図6を参照すると、本開示に係る、ユーザがプライベートマーケットプレイスにリソースを割り当てる実施例が図示されている。ユーザAは、関連するリザーブドインスタンス600、オンデマンドインスタンス605およびスポットインスタンス610を有し得る。ユーザAは、自身のリザーブドインスタンス600のインスタンスA、B、CおよびDをユーザ定義プール620に割り当ててよい。ユーザAは、スポットインスタンス600のインスタンス1および2をユーザ定義プール620に割り当ててもよい。ユーザAのリザーブドインスタンス600のインスタンスA、B、CおよびDは、リザーブドインスタンス600のサブセットと呼ばれることがあり、スポットインスタンス600のインスタンス1および2は、スポットインスタンス600のサブセットと呼ばれることがある。ユーザBは、関連するリザーブドインスタンス630およびスポットインスタンス640を有し得る。ユーザBは、自身のリザーブドインスタンス630のインスタンスKおよびLをユーザ定義プール650に割り当ててよい。ユーザBは、自身のスポットインスタンス640のインスタンス8および9をユーザ定義プール650に割り当ててもよい。ユーザBのリザーブドインスタンス630のインスタンスKおよびLは、リザーブドインスタンス630のサブセットと呼ばれることがあり、ユーザBのスポットインスタンス640のインスタンス8および9は、スポットインスタンス640のサブセットと呼ばれることがある。ある実施形態では、ユーザAまたはユーザBは、ユーザ定義プールに割り当てられたインスタンスを削除することができる。
[0069]前述のように、インスタンスは、リソーススロット、仮想マシンスロットまたはスロットと呼ばれることがある。ユーザ定義プールまたはプライベートマーケットプレイスは、顧客のリソーススロットを管理する追加的なサービス(図1のユーザ定義プール生成サービス180など)として提供され得る。一実施形態では、ユーザ定義プール生成サービス180は、プライベートデータセンター内などのコンピュータネットワークにインストール可能なソフトウェアによって具現化することができる。
[0070]ユーザは、自身が取得し、プロバイダネットワークによって割り当てられた各インスタンスタイプのインスタンスをいくつか選択してよい。一実施形態では、価格設定アルゴリズムをユーザが提供または選択できるようにしてもよい。例えば、規格化された形式(XMLなど)を用いて、1つ以上のアルゴリズムまたは手法をユーザがアップロードできるようにしてよい。一実施形態では、プール生成サービスは、1つ以上のテンプレートをアルゴリズムまたは手法に提供し得る。プール生成サービスは、別のテンプレート、または各パラメータ(インスタンスの数およびタイプなど)に対する所定の選択内容を提供してもよく、それにより、選択されたインスタンスを設定して、入札者などの間の公正を強化できるように選択を行う。
[0071]プライベートマーケットプレイス内のインスタンスにユーザが入札できるようにするために、いくつかの方法を利用することができる。一実施形態では、イングリッシュオークション方式を選択するオプションをユーザに提供することができる。この方式では、競り上がっていく価格が表示されるが、落札者は最高入札者であり、このときインスタンスの価格は最も高い入札額である。別の実施形態では、ダッチオークション方式を選択するオプションをユーザに提供してよい。この方式では、インスタンスの価格が高水準で始まり、ユーザが現行価格を受け入れるまで下げられる。上述したように、ユーザは、自身が支払う意思のある最高価格を選択することができ、少なくとも部分的には需要と供給によって決定される動的な価格をユーザの最高価格が超えた場合、そのユーザにインスタンスが提供され得る。
[0072]一実施形態では、入札プロセスに使用され得る通貨を選択するオプションをユーザに提供することができる。この通貨には、プライベートマーケットプレイスが作成されたときに顧客によって定義または選択される価値単位を含めることができる。顧客は、インスタンスに対して通常の金銭単位または金銭価値(ドル/単位時間当たりなど)を選択し得るが、他の単位(CPUサイクルまたはネットワーク帯域など)を選択してもよく、それによって種々の価値基準に基づいて価値を反映させてよい。ある実施形態では、通貨を使用して、リソーススロットなどのコンピューティング容量の単位に入札し、あるいはユーザによって定義され得るコンピューティング容量の他の単位に入札してよい。例えば、入札には、金銭的な入札額および所望のコンピューティング容量の数(コンピューティングサイクルの数など)を含めることができる。
[0073]一実施形態では、ユーザ定義プール生成サービス180は、プライベートマーケットプレイス用のパラメータの選択を容易にするAPIを提供することができる。このAPIは、どの顧客がプール生成サービスと通信しているかを判定し、プライベートマーケットプレイスを作成するための要求を生成し得る。ユーザ定義プール生成サービス180は、その要求にIDを割り当て、当該要求を処理している間、要求されたプライベートマーケットプレイスの上記IDを追跡し得る。
[0074]一実施形態では、1人の正規ユーザと同一視されるにすぎない顧客(例えば、プロバイダネットワークに対する大学のアカウントを変更可能な1人の権限保持者を有する大学の顧客)は、プライベートマーケットを設置可能な1人の正規ユーザを許容し得る。複数の権限保持者が存在する場合、プール生成サービスは、プライベートマーケットを設置できるものとして1つの専用アカウントが識別されることを要求し得る。ユーザ定義プール生成サービス180は、例えば、その専用アカウントを有するユーザを、例えば、当該ユーザによって提示された証明書に基づいて認証してよい。ユーザ定義プール生成サービス180は、プライベートマーケットプレイスを作成する行動を課金目的のために追跡することができる。ユーザ定義プール生成サービス180は、プライベートマーケットプレイス内のインスタンスに入札するユーザのいずれがインスタンスに入札し、いずれにインスタンスが割り当てられたかをさらに追跡し得る。従って、顧客はこうした行動を追跡し得る。ユーザ定義プール生成サービス180は、ユーザ単位、利用単位、入札単位または他の計測単位で使用率を追跡し、課金および追跡目的のために顧客に情報を提供し得る。
[0075]一実施形態では、入札要求に応答して、ユーザ定義プール生成サービス180は、入札要求を処理して実行するときに入札ユーザを識別するのに使用可能なメタデータとして入札ユーザのIDを埋め込むことができる。このメタデータは、ユーザIDを有するフィールドを含むことができるが、このフィールドは課金レコード内に含めることができる。従って、ユーザ定義プール生成サービス180は、プライベートマーケットプレイス内のインスタンスに入札したユーザを識別するのみならず、プライベートマーケットプレイスを要求した顧客を追跡することもできる。
[0076]ある実施形態では、キー値の組み合わせを用いて、プライベートマーケットプレイスを求める要求に関連付けられたデータもしくは属性、またはプライベートマーケットプレイス内のリソーススロットへの入札を追跡することができる。ユーザ定義プール生成サービス180は、一意のデータ用識別子と共に、そのデータ自体またはそのデータの位置へのポインタを含む連結データレコードを追跡し得る。例えば、拡張可能なデータ構造を用いて、<ユーザ定義プールID、ユーザID、要求ID>などのユーザデータを収集し得る。
[0077]場合によっては、顧客は、プロバイダネットワークのアカウントを2つ以上有し得るため、割り当て済みのリソースのプールを複数有し得る。例えば、顧客は、第1プロジェクト用の第1アカウントを有してよく、その第1アカウントを用いて割り当てられた関連リソーススロットを有してよい。また、顧客は、第2プロジェクト用の第2アカウントを有してもよく、その第2アカウントを用いて割り当てられた関連リソーススロットを有してよい。一実施形態では、顧客には、第1または第2アカウントのいずれかに関連付けられたリソーススロットを選択し、選択されたリソーススロットを1つのプライベートマーケットプレイスに割り当てる機能が提供され得る。従って、顧客は、複数のリソースプールからリソースを混ぜて、1つのユーザ定義プールに合わせることができ得る。
[0078]場合によっては、2人以上の顧客がリソースを合わせることを決定し、その2人以上の顧客に関連付けられたユーザによってアクセスされ得る1つのプライベートマーケットプレイスを要求し得る。従って、組織および企業は、各エンティティの間でリソースをプールしてプライベートマーケットプレイスを作成することができ得る。一実施形態では、ユーザ定義プール生成サービス180は、2人以上の顧客の各アカウントを結合して、1つのユーザ定義プールを作成することができる。ユーザ定義プール生成サービス180は、リソースの実際の使用率に基づいて、かつリソースに入札するユーザおよび顧客とそれらのユーザの関係を追跡することによって使用率を追跡してもよい。1つのユーザ定義プールは、その1つのユーザ定義プールを変更する権限が与えられている1人の顧客によって更新され得る。あるいは、1つのユーザ定義プールを変更する権限を別の複数の顧客に与えてもよい。同様に、1つのユーザ定義プールに関連付けられた方式を変更する権限を1人の顧客に与えてよい。あるいは、1つのユーザ定義プールに関連付けられた方式を変更する権限を別の複数の顧客に与えてもよい。
[0079]一実施形態では、ユーザ定義プール生成サービス180の機能は、顧客のコンピューティングリソースにインストールし、そこで実行することができるソフトウェアによって提供され得る。例えば、顧客は、自身のコンピューティング基盤を所有および/または運用してよく、コンピューティングリソースをホスティングするように構成された複数のリソーススロットとして自身のコンピューティングリソースを構成してよい。プール生成サービスソフトウェアは、上述したように顧客のリソーススロットを選択し、ユーザ選択プールのパラメータを選択するためのインターフェースを提供し、ユーザ選択プールを作成し得る。プール生成サービスソフトウェアは、リソーススロットを求める要求/入札をさらに促進し、追跡/課金目的のために使用情報を追跡し得る。
[0080]図7を参照すると、本開示に係る、プライベートマーケットプレイスにリソースおよびユーザを割り当てるエンティティを示す例が図示されている。エンティティAは、図6のエンティティAに対応し得るが、関連する内部ユーザA、B、C、D、EおよびFを有し得る。エンティティAは、エンティティAのリザーブドインスタンスのうち、割り当て済みのリザーブドインスタンスA、B、CおよびDをユーザ定義プール620内にも有し得る。エンティティAは、エンティティAのスポットインスタンスのうち、インスタンス1および2をユーザ定義プール620に割り当ててもよい。エンティティBは、関連する内部ユーザN、P、R、S、TおよびUを有し得る。また、エンティティBは、エンティティBのリザーブドインスタンスのうち、インスタンスKおよびLをユーザ定義プール650に割り当ててもよい。ユーザBは、ユーザBのスポットインスタンスのうち、インスタンス8および9をユーザ定義プール650に割り当ててもよい。エンティティAはさらに、自身の内部ユーザA、B、CおよびD(サブセット710)に対し、自らのユーザ定義プール620にアクセスする権限を与えてよい。エンティティBはさらに、自身の内部ユーザR、SおよびT(サブセット720)に対し、自らのユーザ定義プール650にアクセスする権限を与えてよい。次に、権限を与えられた内部ユーザは、各自のユーザ定義プール内のインスタンスにアクセスできるように入札を行ってよい。さらに、エンティティAおよびエンティティBは、リソースを合わせることを決定してよく、ユーザ定義プール620およびユーザ定義プール650を1つのユーザ定義プールに合わせることを要求してよい。一実施形態では、エンティティAのユーザA、B、CおよびD並びにエンティティBのユーザR、SおよびTは、組み合わされた1つのユーザ定義プールに入札してよい。
[0081]場合によっては、顧客によってユーザ定義プールに割り当てられたリソーススロットの容量が、ユーザによって生成されたリソーススロットを求める要求によって超過される場合がある。例えば、顧客は、リソーススロットに対する需要を過小評価し、実際の需要を満足させるには不十分なユーザ定義プールに対していくつかのリソーススロットを選択する場合がある。一実施形態では、プロバイダネットワークは、未使用の容量を用いてこうした超過容量の需要を満たすことができるオプションを顧客に提供してよい。例えば、既に顧客に割り当てられているがユーザ定義プールには割り当てられていない未使用の容量を用いて超過した容量を満たすオプションを提供してよい。別の実施例では、プロバイダネットワークによって提供された未使用の容量を用いて超過容量を満たすオプションを提供してよい。プロバイダネットワークは、このサービスに料金を請求してよい。こうした容量を提供することにより、容量が不十分であるためにユーザの要求を拒絶する代わりに、サービスの提供者または(顧客が使用していない容量を用いて)顧客によって提供された追加容量に必要に応じてアクセスし、または「バースティング」することにより、顧客は、ユーザ定義プールへのアクセスを提供し続けることができ得る。こうした機能は、ピーク需要が時々発生する場合にのみ有用となり得るが、その場合、追加のリソーススロットをユーザ定義プールに確保するのではなくバースト容量を購入することが顧客にとってより費用対効果が高い場合がある。ある実施形態では、超過容量をプロバイダネットワークからバースティングさせるか、それとも顧客が割り当てていない容量からバースティングさせるかに関する判断を、顧客によって選択された方針に基づいて行うことができる。例えば、顧客は、自身が超過容量に支払う意思のある最高価格を指定してよい。顧客が最高予算を指定することにより、その最高予算に到達するまで当該予算内でバースト要求を満たすことができるようにしてもよい。
[0082]図8に目を向けると、バースト容量にアクセスするように構成されたユーザ定義プールの一実施例が図示されている。ユーザ定義プール800は、スポットインスタンス806、807および808に加え、リザーブドインスタンス801、802、803、804および805を含み得る。ピーク活動の期間中、ユーザ定義プール800は、このユーザ定義プールに割り当てられたリソースを用いて提供され得るよりも多くの要求を受け取ってよい。一実施形態では、ユーザ定義プール800をリザーブドインスタンスプール810にアクセスさせて容量をバースティングできるように方針が確立されていた場合がある。例えば、図に示すように、リザーブドインスタンススロット811、812および813をバースト容量用にユーザ定義プール800に割り当ててよい。同様に、この方針により、オンデマンドインスタンス821、822および823を含むオンデマンドインスタンスプール820、並びにスポットインスタンス831、832および833を含むスポットインスタンスプール830にユーザ定義プール800をアクセスさせて容量をバースティングできるようにしてもよい。
[0083]図9は、プライベートマーケットプレイスを実装できるようにいくつかのコンポーネントを含む例示的な運用環境900を示すシステム図である。この環境900は、コンピューティングプラットフォーム902を含み得る。コンピューティングプラットフォーム902は、分散アプリケーションの展開および実行のために顧客920に利用可能なコンピューティングリソースを作成するコンピューティングリソースの提供者によって実装され得る。
[0084]コンピューティングプラットフォーム902によって提供されるコンピューティングリソースは、様々な種類のリソース(データ処理リソース、データストレージリソース、データ通信リソースなど)を含み得る。各種のコンピューティングリソースは、汎用であってよく、あるいはいくつかの特定構成において利用可能であってよい。例えば、コンピューティングリソースの提供者によって提供されたデータ処理リソースは、個別のユニットまたはインスタンス904において利用可能となり得る。各インスタンス904は、本明細書では専用テナンシーインスタンスと呼ばれる、専用のホストコンピュータ906におけるデータ処理リソースを表し得る。あるいは、各インスタンス904は、ホストコンピュータ906上で実行される仮想マシンインスタンスを表し得るが、これは共有テナンシーインスタンスと呼ばれることもある。
[0085]ホストコンピュータ906は、汎用マルチプロセッサのサーバデバイス、専用ハードウェアデバイスなどを表し得る。前述のように、様々なタイプおよび構成のインスタンス904が利用可能となり得る。例えば、データ処理リソースにおいて利用可能な各インスタンス904は、そのインスタンスを含み、またはそれに割り当てられた物理的および/または仮想的リソースの種々の組み合わせ(プロセッサの数および種類、メモリの量、ローカルストレージのサイズおよび速度、ネットワークアドレスもしくは通信チャネルの数並びに/または同種のものなど)を表す特定のサイズ(小規模、中規模および大規模など)を有し得る。さらに、インスタンス904は、特定のプラットフォーム(そのインスタンスにインストールされた特定のOSおよび/またはハイパーバイザなど)を用いて構成され得る。インスタンス904は、インストールされる特定のアプリケーションソフトウェアコンポーネント(Webサーバソフトウェア、データベース管理ソフトウェア、ポータルソフトウェア、特定のランタイム環境またはプラットフォームなど)を用いて利用可能となる場合もある。
[0086]さらに、インスタンスは、上述した特定の可用性ゾーン908Aおよび908Bで利用可能となり得る。前述のように、可用性ゾーン908は、特定の物理的位置(データセンターなど)、またはコンピューティングプラットフォーム902によって提供されたインスタンス904をサポートする下位のホストコンピュータ906およびコンピューティングデバイスの他の物理的および/もしくは論理的なグループ分けを表し得る。種々のサイズおよび種々の可用性ゾーン908でインスタンス904を提供することにより、地理的に分散してアプリケーションを展開させることができ、それによってエンドユーザのパフォーマンスを向上させると共に、ある特定の位置またはゾーンにおける障害からアプリケーション全体を隔離することが可能となる。例えば、顧客920は、アプリケーションのある機能(Webサーバなど)のために複数の可用性ゾーン908にわたっていくつかの小規模なインスタンス904を展開し、それと並行して、例えば、他の機能(例えば、データベースサーバなど)のために1つの大規模なインスタンス904を展開することを選択してよい。顧客920は、同様に地政学的な理由により、特定の地理的位置におけるホストコンピュータ906によってインスタンス904をホスティングすることを要求してもよい。
[0087]エンドユーザ950は、エンドユーザ・コンピュータシステム952を利用して、割り当てられたインスタンス904上で実行されるアプリケーションの機能に1つ以上のネットワーク944を介してアクセスしてよい。ネットワーク(単数または複数)944は、ローカルエリアネットワーク(local−area network:LAN)、ワイドエリアネットワーク(wide−area network:WAN)、インターネットおよび/または当技術分野において既知の他のネットワーク基盤の組み合わせを表し得る。このネットワーク944により、コンピューティングプラットフォーム902内の各ホストコンピュータ906は、エンドユーザ・コンピュータシステム952に接続され、互いに接続され、さらには他のコンピューティングリソースに接続される。エンドユーザ・コンピュータシステム952は、パーソナルコンピュータ(personal computer:PC)、デスクトップワークステーション、ラップトップコンピュータ、ノートブック、パーソナルデジタルアシスタント(PDA)、電子書籍リーダー、ゲーム機、セットトップボックス、家庭用電子機器、サーバコンピュータ、またはネットワーク(単数または複数)944に接続することができ、コンピューティングプラットフォーム902内のホストコンピュータ906と通信を行うことが可能なその他のコンピューティングデバイスを表し得る。
[0088]顧客920は、コンピューティングプラットフォーム902上のリソースへのアクセスを望む場合、同様に顧客コンピュータシステム922を利用して、ネットワーク(単数または複数)944を介してコンピューティングプラットフォームに接続することにより、コンピューティングプラットフォームによって提供されたコンピューティングリソースの設定および管理を行ってよい。その際、コンピューティングプラットフォーム902は、いくつかのアプリケーションサーバ924を含み得る。これらのアプリケーションサーバは、様々な管理サービスを顧客920に提供することにより、この顧客がデータ処理リソースおよび/または他のコンピューティングリソースのインスタンス904を購入および保守し、購入したインスタンス904全体にわたってアプリケーションのコンポーネントを展開し、そのアプリケーションの実行を監視・統括するといったことを行えるようにする。エンドユーザ・コンピュータシステム952の場合のように、顧客コンピュータシステム922は、PC、デスクトップワークステーション、ラップトップコンピュータ、ノートブック、PDA、電子書籍リーダー、ゲーム機、セットトップボックス、家庭用電子機器、サーバコンピュータ、またはネットワーク(単数または複数)944に接続可能であり、コンピューティングプラットフォーム902内のアプリケーションサーバ924と通信を行うことができるその他のコンピューティングデバイスを表し得る。
[0089]アプリケーションサーバ924は、標準的なサーバコンピュータ、データベースサーバ、Webサーバ、ネットワークアプライアンス、デスクトップコンピュータ、他のコンピューティングデバイスおよびこれらの任意の組み合わせを表し得る。アプリケーションサーバ924は、管理サービスを提供するためにいくつかのモジュールを実行し得る。これらのモジュールは、1つのアプリケーションサーバ924上で、またはコンピューティングプラットフォーム902内の複数のアプリケーションサーバにわたって並列に実行され得る。加えて、各モジュールは、種々のアプリケーションサーバ924、またはコンピューティングプラットフォーム902内の他のコンピューティングデバイス上で実行されるいくつかのサブコンポーネントからなる場合がある。これらのモジュールは、ソフトウェア、ハードウェアまたは両者の何らかの組み合わせとして実施され得る。
[0090]アプリケーションサーバ924は、インスタンス管理モジュール926を実行し得る。インスタンス管理モジュール926により、顧客920は、データ処理リソースまたは他のコンピューティングリソースのインスタンス904を購入および設定し、購入したインスタンス904を管理および保守するといったことを行うことができ得る。インスタンス904は、様々なモードを通じて取得可能なインスタンス(上述したリザーブドインスタンス、スポットインスタンスおよびオンデマンドインスタンスなど)を含み得る。各顧客920についての購入済みインスタンス904、並びに対応する設定情報およびステータス情報は、顧客/インスタンス管理データ928に記憶され得る。顧客/インスタンス管理データ928は、データベース930内に、またはコンピューティングプラットフォーム902内のアプリケーションサーバ(単数または複数)924に使用可能な他のデータストレージシステム内に記憶され得る。
[0091]リザーブドインスタンスは、特定のタイプおよび構成のインスタンスをいくつか一定期間(1年または3年など)予約する機能を顧客に提供する。リザーブドインスタンスは、将来のある時点で顧客920によって起動および展開するために待機状態で指定および配置されるように構成されたデータ処理リソースの実際のインスタンスを表し得る。またはリザーブドインスタンス904は、必要なときに迅速に構成および起動できるようにコンピューティングリソースの提供者によって予約された全体容量を表し得る。アプリケーションを展開するとき、顧客920は、特定のタイプおよび構成(例えば、サイズ、プラットフォーム、テナンシー、可用性ゾーンなど)のいくつかのオンデマンドインスタンス904を購入して起動することにより、そのアプリケーションを直ちに利用可能なようにサポートすることができ、それと同様に、例えば、同一または同様のタイプおよび構成のいくつかのリザーブドインスタンスを購入して起動することにより、上記アプリケーションに対する需要または容量の要求が増大したことに応答して将来的にそのアプリケーションをスケールアップすることができる。
[0092]顧客920は、顧客コンピュータシステム922上で実行されるWebブラウザアプリケーションを利用して、インスタンス管理モジュール926によって提示されたユーザインターフェース(user interface:UI)にWebサービスを通じてアクセスすることにより、自身が購入したインスタンス904の設定および保守を行ってよい。顧客920は、顧客コンピュータシステム922上で実行されるWebブラウザアプリケーションを利用して、プール生成モジュール946によって提示されたUIにWebサービスを通じてアクセスすることにより、自ら購入したインスタンス904の1つ以上を上述したユーザ定義プールとして作成してよい。追加的または代替的に、インスタンス管理モジュール926またはプール生成モジュール946は、アプリケーションプログラミングインターフェース(API)932を公開し得る。このAPIは、ネットワーク(単数または複数)944を介し、顧客コンピュータシステム922上で実行されるスタンドアローンのアプリケーションプログラムによってアクセスされ得る。インスタンス管理モジュール926またはプール生成モジュール946を設定および保守するサービスにアクセスするための他のメカニズム(リモートプロシージャコール、SOAPベースのWebサービス、リモートファイルアクセス、独自のクライアントサーバアーキテクチャおよび同種のものなど)も想定され得る。
[0093]ある実施形態では、インスタンス管理モジュール926により、オンデマンドインスタンスとリザーブドインスタンスを顧客920が共に購入できるようにしてよい。オンデマンドインスタンスは、購入後直ちに起動されて、アプリケーションのコンポーネントを迅速に展開させることができる。オンデマンドインスタンスは、アプリケーションに対する需要または容量の要求が経時変化するにつれて、手動で、または自動スケーリングによって自動で、必要に応じてさらに追加または除去され得る。顧客920は、例えば、インスタンス904の運用時間数および/または実際に利用したリソースに基づき、自身のオンデマンドインスタンスに関連した継続的な使用コストを負担し得る。
[0094]顧客920は、アプリケーションの展開時に購入した自身のインスタンス904が、プライベートな購入/入札プロセスを用いて上記のプライベートマーケットプレイス経由で自らの内部ユーザに提供されるのであれば、自身のコンピューティング容量がより効率良く利用され得ると判断する場合がある。例えば、顧客920のユーザの計算ニーズは経時的に変化するため、それぞれの時刻で異なるサイズまたはプラットフォームのデータ処理インスタンス904が必要となる場合がある。同様に、リソースに対する全需要も変化するため、より多くのインスタンス904が必要となり、あるいは本来期待されるものとは異なる可用性ゾーン908内のインスタンスが必要となる場合がある。顧客920は、自らのインスタンス904によって提供されるコンピューティング容量をより効率良く利用し、購入したインスタンスへの当初の投資をより多く回収するため、自身の内部ユーザにそのインスタンス904を「販売」することを望む場合がある。その際、プール生成モジュール946はさらに、顧客920がいくつかのインスタンス904を選択してプライベートマーケットプレイスに割り当てることができるようにしてよい。インスタンス管理モジュール926は、プライベートマーケットプレイス用に選択されたインスタンス(単数または複数)904に関する情報を、データベース930内、またはコンピューティングプラットフォーム902内のアプリケーションサーバ(単数または複数)924に使用可能な他のデータストレージシステム内のリザーブドインスタンスリスト934およびスポットインスタンスリスト940に記憶し得る。
[0095]一実施形態では、顧客920は、顧客920によって指定された一連の内部ユーザにとってアクセス可能なユーザ定義プールまたはプライベートマーケットプレイスにいくつかのインスタンス904を移管してよい。一実施形態では、プライベートマーケットプレイスはプライベートスポットマーケットを実装し得る。このスポットマーケットは、上述したようなスポットマーケットに使用される特徴の一部を用いてインスタンスへのアクセスを提供するように構成されている。しかしながら、プライベートマーケットプレイスは、顧客920の指定ユーザまたは内部ユーザに限定され得る。さらに、プライベートマーケットプレイスは、顧客920によって選択された個別的な一連のパラメータおよび特徴を用いて動作し得る。
[0096]一実施形態では、プール生成モジュール946は、ユーザ定義プールまたはプライベートマーケットプレイスを顧客920が購入できるようにしてよい。ユーザ定義プールを購入して起動することにより、そのユーザ定義プールに割り当てられているインスタンスに対し、顧客920によって指定されたユーザが入札できるようにしてよい。ユーザ定義プールは、手動で、または各方針を利用することによって自動で、顧客920により必要に応じてさらに追加または除去され得る。顧客920は、例えば、ユーザ定義プールの数並びにユーザ定義プールの運用時間数および/または実際に利用したリソースに基づき、自身のユーザ定義プールに関連した1回限りの料金および/または継続的な使用コストを負担し得る。
[0097]アプリケーションサーバ924は、インスタンスリスティングモジュール936をさらに実行し得る。インスタンスリスティングモジュール936により、顧客920によって特定されたユーザが、プライベートマーケットプレイスに割り当てられたインスタンス904を閲覧し、それに入札することが可能となり得る。顧客920のユーザは、顧客コンピュータシステム922上で実行されるWebブラウザアプリケーションを利用して、インスタンスリスティングモジュール936によって提示されたユーザインターフェース(UI)にWebサービスを通じてアクセスすることにより、プライベートマーケットプレイスにリストアップされたインスタンス904を閲覧および選択して「購入」または「入札」し得る。追加的または代替的に、インスタンスリスティングモジュール936は、API932を公開し得る。このAPIは、ネットワーク(単数または複数)944を介し、顧客コンピュータシステム922上で実行されるスタンドアローンのアプリケーションプログラムによってアクセスされ得る。
[0098]インスタンスリスティングモジュール936は、データベース930内のリザーブドインスタンスリスト934およびスポットインスタンスリスト940にアクセスして、特定のタイプおよび構成要件(例えば、サイズ、プラットフォーム、テナンシー、可用性ゾーンなど)を満足させるインスタンスの可用性および価格設定を決定し得る。インスタンスリスティングモジュール936は、プライベートマーケットプレイス内のインスタンスの割り当てに影響を与える場合もある。リザーブドインスタンスリスティングモジュール936は、データベース930または他のデータストレージシステム内のプライベートマーケットプレイス履歴データ938内に、プライベートマーケットプレイスを介したインスタンスの個々の「販売」に関するデータをさらに記憶してもよい。プライベートマーケットプレイス履歴データ938は、プライベートマーケットプレイスを介したインスタンスの割り当てに関する課金データを分析するために、顧客920またはコンピューティングリソースの提供者によって利用され得る。
[0099]ある実施形態では、顧客920は、上記モジュールの1つ以上を利用して、別のタイプのインスタンスが利用可能になったらそれらを追加してよい。上記機能の少なくとも一部は、顧客のインスタンスの1つ以上において実行することができ、あるいはプロバイダネットワークのインスタンスまたは他のリソース上で実行することができる。
[0100]一実施形態では、プライベートマーケットプレイス用にユーザのリソーススロットの1つ以上を選択し、関連パラメータを選択するためのユーザインターフェースをユーザに提供することができる。例えば、図10に示したものなどのユーザインターフェースにユーザがアクセスできるようにしてよい。一実施形態では、顧客は、図9のインスタンス管理モジュール9926によって提示されたUIを利用して、プライベートマーケットプレイスにリストアップすべきインスタンスを選択してよい。例えば、図10に示すように、インスタンス管理モジュール926またはクラウドコンピューティングプラットフォーム902内の別のモジュールは、顧客920に対し、顧客コンピュータシステム922上で実行されるWebブラウザまたは他のクライアントアプリケーションのウィンドウ102内にUI100を提示し得る。UI100は、リザーブドインスタンスリスト104を含み得る。このリストは、顧客920によって現在所有されている図8のインスタンス904のリザーブドインスタンスをリストアップしており、このリストには、それぞれのタイプおよび設定パラメータ(可用性ゾーン、プラットフォーム、サイズ、テナンシーなど)が含まれる。リザーブドインスタンスリスト104は、インスタンス904を構成する各リザーブドインスタンスの本来の期間およびリザーブドインスタンスの有効期限が切れるまでの残り期間をさらに含み得る。リザーブドインスタンスリスト104は、リザーブドインスタンスが有効であるかどうか、期限切れかどうか、ユーザ定義プールに既にリストアップされているかどうか、既にリストアップされていた場合にはそのユーザ定義プールの名前など、インスタンス904を構成するリザーブドインスタンスの現在状態も含み得る。
[0101]UI100は、選択型UIコントロール(図9に示すチェックボックスUIコントロール106など)をさらに含み得る。このコントロールにより、顧客920は、リザーブドインスタンスリスト104に示した1つ以上のリザーブドインスタンスを選択して、プライベートマーケットプレイスにリストアップすることができる。その後、顧客920は、コマンド型UIコントロール(図9に示すリスト作成UIコントロール108など)を選択してよい。UI100を介してインスタンス904のリザーブドインスタンスを選択し、リザーブドインスタンスのマーケットプレイスにリストアップする他の方法も実装してよい。例えば、マウスまたは他の入力コントロールを用いてリザーブドインスタンスリスト104の列を選択し、その選択された列に対し、インスタンス管理モジュール926によって提示されたコンテキストメニューからコマンド型UIコントロールを選択するといった方法がある。
[0102]プライベートマーケットプレイスを作成するオプションを選択した後、インスタンス管理モジュール926は、そのプライベートマーケットプレイス用のパラメータについての情報を受け取ってよい。例えば、図9に示すUI110内のユーザ定義プール作成UIコントロール118を選択すると、インスタンス管理モジュール926またはクラウドコンピューティングプラットフォーム902内の別のモジュールは、図11に示すように、UI1100を顧客820に提示し得る。UI1100は、例えば、顧客コンピュータシステム822上で実行されるWebブラウザまたは他のクライアントアプリケーションのウィンドウ1102内に提示され得る。UI1100は、プライベートマーケットプレイスの概要を含み得る。この概要には、当該プライベートマーケットプレイス(ユーザ定義プール)のプロパティおよび入札パラメータ(例えば、要求タイプ、入札方法、通貨など)が含まれる。UI1100は、ユーザ選択UIコントロール1102をさらに含み、それによってプライベートマーケットプレイスに参加できるユーザの最大人数を顧客820が選択することができる。
[0103]UI1100は、いくつかの入力UIコントロール1104A〜1104Nをさらに含むことができ、それによってプライベートマーケットプレイスに参加できるユーザを顧客920が特定することができる。一実施形態によれば、マーケットプレイスにアクセス可能な各ユーザに対し、顧客920が固有の識別子、名前および組織をリストアップできるようにしてよい。これらのユーザは、顧客920に関連付けられたユーザとして前もって入力され、記憶されていた場合がある。このユーザ情報を使用することにより、プライベートマーケットプレイス内のリソースに入札する権限が与えられているユーザを判別することができる。また、このユーザ情報を使用して、課金目的のために使用率を追跡することもできる。顧客920は、UIコントロール1104A〜1104Nを用いてユーザを削除することによって1人以上のユーザを除外してもよい。
[0104]ある実施形態では、ユーザ定義プールの作成および管理を容易に行うことができるようにAPIが提供され得る。このAPIは、電子メッセージを受信するように構成され得る。この電子メッセージでは、プロバイダネットワーク内のコンピューティングリソースの割り当てを行い、それらのコンピューティングリソースで構成されるユーザ定義プールを作成することを求める要求を示す識別子がコード化されている。それらの電子メッセージの1つを受信したことに応答して、APIは、別の電子メッセージを送信し得る。この電子メッセージでは、顧客に関連した一連のリソーススロットが、ある価格設定方式、および上記ユーザ定義プール向けに指定された1人以上のユーザに関連付けられていることを知らせる情報が示されている。
[0105]図12は、あるユーザ定義プールに関するユーザ定義プールレコード1200に記憶されたいくつかのデータ要素を示すデータ構造図である。図に示したデータ構造は、データファイル、データベーステーブル、コンピュータメモリに記憶されたオブジェクト、プログラム的構造、または当技術分野において広く知られたその他のデータコンテナを表し得ることが当業者によって理解されるであろう。このデータ構造に含まれる各データ要素は、データファイル内の1つ以上のフィールド、データベーステーブルの1つ以上のカラム、オブジェクトの1つ以上の属性、プログラム的構造の1つ以上のメンバ変数、または当技術分野において広く知られたデータ構造のその他のデータ単位を表し得る。この実装は選択可能な事項であるが、上記データ構造を実装するコンピューティングシステムの技術、性能および他の要件に依存し得る。
[0106]各ユーザ定義プールレコード1200は、プライベートマーケットプレイスを作成しているクラウドコンピューティングプラットフォーム802の顧客820を識別する顧客ID1202を含み得る。一実施形態によれば、各ユーザ定義プールレコード1200は、入札要求との関連付けが可能な特定のインスタンス804を識別するインスタンスID1204も含み得る。インスタンスID1204は、例えば、顧客/インスタンス管理データ828に記憶されたインスタンス104に関する情報に相当し得る。本実施形態では、各インスタンス104は、プライベートマーケットプレイス内に含まれ得るが、関連するユーザ定義プールレコード1200をデータベース830内に有し得る。
[0107]ある実施形態では、ユーザ定義プールレコード1200は、追加的または代替的に、関連するインスタンス1204(単数または複数)を記述するタイプおよび構成用パラメータを含み得る。このようなパラメータとしては、サイズ1206、プラットフォーム1208、テナンシー1210、可用性ゾーン1212、インスタンスタイプ1214などがある。ユーザ定義プールレコード1200は、そのレコードに関連付けられた特定ユーザの識別を示すユーザID1216も含み得る。ユーザID1216は、図10に関して上述したように、ユーザ定義プールを作成するときに顧客820によって提供される識別子情報に相当し得る。
[0108]ユーザ定義プールレコード1200は、インスタンスを求める特定の要求に相当する要求ID1218に関する情報、およびその要求に対する入札金額に相当する提示価格1219も含み得る。ユーザ定義プールレコード1200は、1つ以上の使用率レコード1220A〜1220N(本明細書では通常「使用率1220」とも呼ばれる)、および1つ以上の課金レコード1222A〜1222N(本明細書では通常「課金1222」とも呼ばれる)に関する情報をさらに含み得る。図10に関してさらに上述したように、ユーザは、プライベートマーケットプレイス内のインスタンスへの入札が成功した後、インスタンスにアクセスし得る。そのユーザについて課金目的のために、使用率1220A〜1202Nに対する課金レコード1222A〜1222Nが追跡され得る。ユーザ定義プールレコード1200は、図12に示したもの、並びにインスタンス管理モジュール926、インスタンスリスティングモジュール936および/またはプライベートマーケットプレイスを実装するクラウドコンピューティングプラットフォーム902の他のモジュールによって利用される上記のもの以外の別のデータ要素を含み得ることが理解されよう。
[0109]別の実施形態では、インスタンス管理モジュール9926またはクラウドコンピューティングプラットフォーム0902内の他のモジュールは、顧客920および/または顧客コンピュータシステム9922にUIまたはAPI932を提供し得る。このUIまたはAPI932を用いることにより、顧客は、自身のユーザ定義プールを修正し、そのユーザ定義プールのステータスを確認し、かつ/またはユーザ定義プールを引き渡すメカニズムを用いてインスタンスを提供することをそれ以上望まない場合、そのユーザ定義プールを削除することができる。
[0110]図13は、プロバイダネットワーク内のコンピューティングリソースを割り当てる例示的な動作手順を示す図である。ある実施形態では、ユーザ定義プールを作成するメカニズムは、図1のユーザ定義プール生成サービス180などのサービスによって提供することができる。この動作手順は、1つ以上のコンピューティングデバイスを含むシステムによって実装され得る。1つ以上のコンピューティングデバイスは、複数のリソーススロットを含み得る。これらの各リソーススロットは、コンピューティングインスタンスをホスティングするように構成されている。図13を参照すると、この動作手順は動作1300で開始される。動作1300の後、動作1302が実行され得る。動作1302は、第1の価格設定方式に従って複数のリソーススロットを複数のエンティティに割り当てることを示している。これらのエンティティは、プロバイダネットワークの顧客またはユーザ(大学または他の組織など)に相当し得る。第1の価格設定方式は、リソーススロットおよびプロバイダネットワーク内の他のリソースの販売および割り当てを行うためにプロバイダネットワークによって利用される価格方式であってよい。
[0111]動作1302の後、動作1304が実行され得る。動作1304は、複数のエンティティのうちの第1エンティティに関連付けられたリソーススロットの少なくとも1つが第2の価格設定方式に関連付けられている旨の通知を受領することを示している。このように通知されたリソーススロットは、他のエンティティにとってアクセス可能となり得る。一実施形態では、第1エンティティにより、第2の価格設定方式および他のエンティティが指定され得る。サブセットは、プライベートマーケットプレイスに割り当てるために顧客によって指定されたリソーススロットのグループに相当し得る。第2の価格設定方式は、他のエンティティにリソーススロットを提供するためにユーザによって選択された方式に相当し得る。他のエンティティは、顧客によって指定された、プライベートマーケットプレイス内のリソーススロットにアクセス可能なユーザに相当し得る。
[0112]動作1304の後、動作1306が実行され得る。動作1306は、通知されたリソーススロットをオンラインにする必要があることを第1エンティティが指示したと判定することを示している。
[0113]通知されたリソーススロットをオンラインにする必要がある場合、動作1306の後に動作1308が実行され得る。この動作は、第2の価格設定方式に従って、通知されたリソーススロットを他のエンティティに割り当てることを示している。
[0114]図14は、プロバイダネットワーク内のコンピューティングリソースを割り当てる例示的な動作手順を示す図である。ある実施形態では、コンピューティングリソースを割り当てるメカニズムは、図1のユーザ定義プール生成サービス180などのサービスによって提供することができる。この動作手順は、1つ以上のコンピューティングデバイスを含むシステムによって実装され得る。1つ以上のコンピューティングデバイスは、複数のリソーススロットを含み得る。これらの各リソーススロットは、コンピューティングインスタンスをホスティングするように構成されている。図14を参照すると、この動作手順は動作1400で開始される。動作1400の後、動作1402が実行され得る。動作1402は、第1の価格設定方式に従って複数のエンティティに割り当てられた複数のリソーススロットを維持することを示している。
[0115]動作1402の後、動作1404が実行され得る。動作1404は、複数のエンティティのうちの第1エンティティに関連付けられた1つ以上のリソーススロットが第2の価格設定方式に関連付けられ、グループ分けされた他のエンティティにとってアクセス可能である旨の第1通知を受領することを示している。
[0116]動作1404の後、動作1406が実行され得る。動作1406は、複数のエンティティのうちの第2エンティティに関連付けられた1つ以上のリソーススロットが第2の価格設定方式に関連付けられ、グループ分けされた他のエンティティにとってアクセス可能である旨の第2通知を受領することを示している。
[0117]動作1406の後、動作1408が実行され得る。動作1408は、第1エンティティに関連付けられた1つ以上のリソーススロットと第2エンティティに関連付けられた1つ以上のリソーススロットとを組み合わせてオンラインにする必要があると判定することを示している。これらのリソーススロットをオンラインにする必要がある場合、動作1408の後に動作1410が実行され得る。この動作は、第1エンティティに関連付けられた1つ以上のリソーススロットと第2エンティティに関連付けられた1つ以上のリソーススロットとを組み合わせること、およびこのように組み合わされたリソーススロットに対し、グループ分けされた他のエンティティが第2の価格設定方式に従って入札できることを示している。
[0118]図15は、プロバイダネットワーク内のコンピューティングリソースを割り当てる例示的な動作手順を示す図である。ある実施形態では、ユーザ定義プールを作成するメカニズムは、図1のユーザ定義プール生成サービス180などのサービスによって提供することができる。この動作手順は、1つ以上のコンピューティングデバイスを含むシステムによって実装され得る。1つ以上のコンピューティングデバイスは、複数のリソーススロットを含み得る。これらの各リソーススロットは、コンピューティングインスタンスをホスティングするように構成されている。図15を参照すると、この動作手順は動作1500で開始される。動作1500の後、動作1502が実行され得る。動作1502は、ユーザ選択の価格設定方式に従って、1つ以上のリソーススロットへのアクセスを要求することが認められたユーザの指定グループに1つ以上のリソーススロットを割り当てることを示している。一実施形態では、提供者選択の価格設定方式に従って、あるエンティティに関連付けられたリソーススロットから1つ以上のリソーススロットが選択され得る。
[0119]動作1502の後、動作1504が実行され得る。動作1504は、1つ以上のリソーススロットのコンピューティング容量を超えて1つ以上のリソーススロットへのアクセスを求める要求を受け取った旨の通知を受領することを示している。
[0120]動作1504の後、動作1506が実行され得る。動作1506は、1つ以上のリソーススロットを求める超過コンピューティング容量の要求を割り当てるように方針が記憶されていることを判定することを示している。
[0121]1つ以上のリソーススロットを求める超過コンピューティング容量の要求を割り当てるように方針が記憶されている場合、動作1506の後に動作1508が実行され得る。この動作は、そのアクセス要求を実現させるために別のコンピューティング容量を割り当てることを示している。
[0122]本開示の実施形態は、以下の条項に照らして記載することができる。
条項1
プロバイダネットワーク内のコンピューティングリソースを割り当てるシステムであって、
それぞれがコンピューティングインスタンスをホスティングするように構成された1つ以上のリソーススロット、を含む1つ以上のコンピューティングデバイスと、
少なくとも1つのメモリであって、システムの1つ以上のプロセッサによって実行されると、
第1の価格設定方式に従って複数のリソーススロットを複数のエンティティに割り当てること、
複数のエンティティのうちの第1エンティティに関連付けられたリソーススロットの少なくとも一部が、第1エンティティによって指定された第2の価格設定方式に関連付けられ、第1エンティティによって特定された1人以上のユーザにとってアクセス可能である旨の通知を受領すること、
および通知されたリソーススロットを第2の価格設定方式に従って1人以上のユーザに割り当てること、をシステムに少なくとも行わせるコンピュータ命令が内部に記憶された少なくとも1つのメモリと、を含むシステム。
条項2
システムの1つ以上のプロセッサによって実行されると、第1エンティティによって特定された1人以上のユーザが、通知されたリソーススロットに第2の価格設定方式に従って入札することを少なくとも可能にすることをシステムに行わせるコンピュータ可読命令をさらに含む、条項1に記載のシステム。
条項3
システムの1つ以上のプロセッサによって実行されると、第1エンティティによって特定された1人以上のユーザが、通知されたリソーススロットに入札することを可能にするユーザインターフェースを少なくとも提供することをシステムに行わせるコンピュータ可読命令をさらに含む、条項2に記載のシステム。
条項4
システムの1つ以上のプロセッサによって実行されると、通知されたリソーススロット、第1エンティティによって特定された1人以上のユーザ、および第2の価格設定方式の選択を容易にするユーザインターフェースを少なくとも提供することをシステムに行わせるコンピュータ可読命令をさらに含む、条項1に記載のシステム。
条項5
プロバイダネットワーク内のコンピューティングリソースの割り当て方法であって、
複数のコンピューティングデバイスを含み、各コンピューティングデバイスの容量が1つ以上のリソーススロットへと論理的に分割されたコンピューティング環境において、第1セットの価格設定方式に従って複数のリソーススロットを第1ユーザに関連付けること、並びに
1つ以上の関連付けられたリソーススロットを特定すること、および1つ以上の関連付けられたリソーススロットに、ユーザによって指定された第2セットの価格設定方式に従ってアクセス可能な他のユーザを特定することをユーザに可能にすること、を含む方法。
条項6
第2の価格設定方式に従って1つ以上の関連付けられたリソーススロットを他のユーザに割り当てることをさらに含む条項5の方法。
条項7
第2の価格設定方式に従って1つ以上の関連付けられたリソーススロットに他のユーザが入札することを可能にすることをさらに含む、条項5の方法。
条項8
1つ以上の関連付けられたリソーススロット、1つ以上の関連付けられたリソーススロットにアクセス可能な他のユーザ、および第2の価格設定方式の指定を受け取るように動作可能なユーザインターフェースを提供することをさらに含む、条項5の方法。
条項9
第2の価格設定方式は、リソーススロットを取得するのに使用する通貨、最低/最高通貨水準または入札アルゴリズムを示す、条項5の方法。
条項10
通貨が金銭単位に関する、条項9の方法。
条項11
通貨がCPUサイクル、ストレージ、メモリまたはネットワーク帯域に関する、条項9の方法。
条項12
上記入札は、CPUサイクルまたはネットワーク帯域に入札することを含む、条項7の方法。
条項13
1つ以上の関連付けられたリソーススロットに他のユーザの一部がアクセスすることを拒否することをユーザに可能にすることをさらに含む、条項5の方法。
条項14
上記可能にすることは、1つ以上の関連付けられたリソーススロットを割り当てるための要求を受領すること、当該要求を要求識別子に関連付けること、および1つ以上の関連付けられたリソーススロットをプール識別子に関連付けることを含む、条項5の方法。
条項15
1つ以上の関連付けられたリソーススロットにアクセスするための課金情報を求めることをさらに含む、条項5の方法。
条項16
1つ以上の関連付けられたリソーススロットの少なくとも1つに第2の価格設定方式に従って他のユーザのいずれが入札したかを判定すること、当該判定することに基づいて課金情報を収集することをさらに含む、条項7の方法。
条項17
判定された他のユーザをユーザ識別子に関連付けること、および判定された他のユーザに関連付けられたレコードにユーザ識別子を含めることをさらに含む、条項16の方法。
条項18
キー値の組み合わせとしてレコードが作成されている、条項17の方法。
条項19
入札は、1つ以上の関連付けられたリソーススロットに支払われるべき最高価格を含む、条項7の方法。
条項20
最高価格が予定価格を超えたときに、1つ以上の関連付けられたリソーススロットの1つが他のユーザの1人に割り当てられる、条項19の方法。
条項21
予定価格は、1つ以上の関連付けられたリソーススロットの需要と供給に基づいている、条項20の方法。
条項22
予定価格はユーザによって選択可能である、条項21の方法。
条項23
コンピュータ可読命令が記憶された非一時的コンピュータ可読記憶媒体であって、コンピュータ可読命令は、1つ以上のコンピューティングデバイス上で実行されると、
複数のコンピューティングデバイスを含み、各コンピューティングデバイスの容量が1つ以上のリソーススロットへと論理的に分割されたコンピューティング環境において、ユーザに関連付けられた1つ以上のリソーススロットを特定すること、およびユーザに関連付けられた1つ以上のリソーススロットに、ユーザによって指定された価格設定方式に従ってアクセス可能な他のユーザを特定することをユーザに可能にするインターフェースを生成すること、並びに
ユーザに関連付けられた1つ以上のリソーススロットに他のユーザが価格設定方式に従って入札することを少なくとも可能にすることをコンピューティング環境に行わせること、を少なくとも行わせる命令を含む、非一時的コンピュータ可読記憶媒体。
条項24
価格設定方式は、リソーススロットを取得するのに使用する通貨、価格水準または入札アルゴリズムを含む、条項23の非一時的コンピュータ可読記憶媒体。
条項25
入札アルゴリズムは、競り上げ式オークションと競り下げ式オークションの一方を含む、条項24の非一時的コンピュータ可読記憶媒体。
条項26
1つ以上のコンピューティングデバイス上で実行されると、ユーザに関連付けられた1つ以上のリソーススロットに他のユーザが入札することを可能にするための課金情報を求めることを少なくとも行わせる命令を含む、条項23の非一時的コンピュータ可読記憶媒体。
条項27
1つ以上のコンピューティングデバイス上で実行されると、ユーザに関連付けられた1つ以上のリソーススロットの1つ以上に他のユーザのいずれが価格設定方式に従って入札したかを判定すること、および当該判定することに基づいて課金情報を求めることを少なくとも行わせる命令を含む、条項26の非一時的コンピュータ可読記憶媒体。
条項28
プロバイダネットワーク内のコンピューティングリソースを割り当てるシステムであって、
それぞれがコンピューティングインスタンスをホスティングするように構成された1つ以上のリソーススロット、を含む1つ以上のコンピューティングデバイスと、
少なくとも1つのメモリであって、システムの1つ以上のプロセッサによって実行されると、
第1の価格設定方式に従って複数のエンティティに割り当てた複数のリソーススロットを維持すること、
複数のエンティティのうちの第1エンティティに関連付けられた1つ以上のリソーススロットが第2の価格設定方式に関連付けられ、1人以上のユーザにとってアクセス可能である旨の第1通知を受領すること、
複数のエンティティのうちの第2エンティティに関連付けられた1つ以上のリソーススロットが第2の価格設定方式に関連付けられ、1人以上のユーザにとってアクセス可能である旨の第2通知を受領すること、および
第2の価格設定方式に従って、第1エンティティに関連付けられた1つ以上のリソーススロットおよび第2エンティティに関連付けられた1つ以上のリソーススロットを1人以上のユーザに割り当てること、をシステムに少なくとも行わせるコンピュータ命令が内部に記憶された少なくとも1つのメモリと、を含むシステム。
条項29
システムの1つ以上のプロセッサによって実行されると、第1エンティティに関連付けられた1つ以上のリソーススロットおよび第2エンティティに関連付けられた1つ以上のリソーススロットに、第2の価格設定方式に従って1人以上のユーザが入札することを少なくとも可能にすることをシステムに行わせるコンピュータ可読命令をさらに含む、条項28に記載のシステム。
条項30
システムの1つ以上のプロセッサによって実行されると、第1エンティティに関連付けられた1つ以上のリソーススロットおよび第2エンティティに関連付けられた1つ以上のリソーススロットに1人以上のユーザが入札することを可能にするユーザインターフェースを少なくとも提供することをシステムに行わせるコンピュータ可読命令をさらに含む、条項28に記載のシステム。
条項31
システムの1つ以上のプロセッサによって実行されると、第1エンティティに関連付けられた1つ以上のリソーススロットおよび第2エンティティに関連付けられた1つ以上のリソーススロット、1人以上のユーザ並びに第2の価格設定方式の選択を容易にするユーザインターフェースを少なくとも提供することをシステムに行わせるコンピュータ可読命令をさらに含む、条項28に記載のシステム。
条項32
プロバイダネットワーク内のコンピューティングリソースの割り当て方法であって、
複数のコンピューティングデバイスを含み、各コンピューティングデバイスの容量が1つ以上のリソーススロットへと論理的に分割されたコンピューティング環境において、第1セットの価格設定方式に従って1つ以上のリソーススロットを第1ユーザに関連付け、第1セットの価格設定方式に従って1つ以上のリソーススロットを第2ユーザに関連付けること、
第1ユーザに関連付けられた少なくとも1つのリソーススロットであって、指定された一連の他のユーザにより第2の価格設定方式に従ってアクセスされ得る少なくとも1つのリソーススロットを特定することを第1ユーザに可能にすること、および
第2ユーザに関連付けられた少なくとも1つのリソーススロットであって、指定された一連の他のユーザにより第2の価格設定方式に従ってアクセスされ得る少なくとも1つのリソーススロットを特定することを第2ユーザに可能にすること、を含む方法。
条項33
第2の価格設定方式が第1ユーザまたは第2ユーザによって選択される、条項32の方法。
条項34
第1ユーザに関連付けられた少なくとも1つのリソーススロットまたは第2ユーザに関連付けられた少なくとも1つのリソーススロットにアクセス可能な他のユーザの別の1人を特定することを第2ユーザに可能にすることをさらに含む、条項32の方法。
条項35
指定された一連の他のユーザの少なくとも1人が、第1ユーザに関連付けられた少なくとも1つのリソーススロットまたは第2ユーザに関連付けられた少なくとも1つのリソーススロットにアクセスすることを第1ユーザまたは第2ユーザが拒否することを可能にすることをさらに含む、条項32の方法。
条項36
第2の価格設定方式を第1ユーザまたは第2ユーザが更新することを可能にすることをさらに含む、条項32の方法。
条項37
第1ユーザに関連付けられた少なくとも1つのリソーススロットと第2ユーザに関連付けられた少なくとも1つのリソーススロットを組み合わせること、および組み合わされたリソーススロットの少なくとも1つに第2の価格設定方式に従ってアクセスすることを、指定された一連の他のユーザが要求することを可能にすることをさらに含む、条項32の方法。
条項38
第1ユーザに関連付けられた少なくとも1つのリソーススロット、第2ユーザに関連付けられた少なくとも1つのリソーススロット、指定された一連の他のユーザ、および第2の価格設定方式の指定を受け取るように動作可能なユーザインターフェースを提供することをさらに含む、条項32の方法。
条項39
上記要求は、組み合わされたリソーススロット内のリソーススロットへの入札を含む、条項37の方法。
条項40
第2の価格設定方式は、リソーススロットを取得するのに使用する通貨、限度価格または入札アルゴリズムを含む、条項32の方法。
条項41
第1ユーザに上記可能にすることおよび第2ユーザに上記可能にすることは、第1ユーザに関連付けられた少なくとも1つのリソーススロットまたは第2ユーザに関連付けられた少なくとも1つのリソーススロットを割り当てることの要求を受領すること、当該要求を要求識別子に関連付けること、および第1ユーザに関連付けられた少なくとも1つのリソーススロットまたは第2ユーザに関連付けられた少なくとも1つのリソーススロットをプール識別子に関連付けることを含む、条項32の方法。
条項42
第1ユーザに関連付けられた少なくとも1つのリソーススロットまたは第2ユーザに関連付けられた少なくとも1つのリソーススロットにアクセスするための課金情報を求めることをさらに含む、条項32の方法。
条項43
第1ユーザに関連付けられた少なくとも1つのリソーススロットまたは第2ユーザに関連付けられた少なくとも1つのリソーススロットに、指定された一連の他のユーザのいずれが第2の価格設定方式に従って入札したかを判定すること、および当該判定することに基づいて課金情報を求めることをさらに含む、条項39の方法。
条項44
判定された他のユーザをユーザ識別子に関連付けること、および判定された他のユーザに関連付けられたレコードにユーザ識別子を含めることをさらに含む、条項43の方法。
条項45
課金情報は、第1ユーザに関連付けられた少なくとも1つのリソーススロットと第2ユーザに関連付けられた少なくとも1つのリソーススロットを組み合わせる課金方針に従って収集される、条項42の方法。
条項46
コンピュータ可読命令が記憶された非一時的コンピュータ可読記憶媒体であって、コンピュータ可読命令は、1つ以上のコンピューティングデバイス上で実行されると、
複数のコンピューティングデバイスを含み、各コンピューティングデバイスの容量が1つ以上のリソーススロットへと論理的に分割されたコンピューティング環境において、
第1ユーザに関連付けられた1つ以上のリソーススロットであって、グループ分けされた他のユーザにより価格設定方式に従ってアクセス可能な1つ以上のリソーススロットを第1ユーザが特定すること、および
第2ユーザに関連付けられた1つ以上のリソーススロットであって、グループ分けされた他のユーザにより価格設定方式に従ってアクセス可能な1つ以上のリソーススロットを第2ユーザが特定すること、を可能にするユーザインターフェースであって、
グループ分けされた他のユーザおよび価格設定方式が第1ユーザまたは第2ユーザによって選択されるユーザインターフェースを生成すること、並びに
第1ユーザに関連付けられた1つ以上のリソーススロットおよび第2ユーザに関連付けられた1つ以上のリソーススロットに、グループ分けされた他のユーザが価格設定方式に従って入札することを少なくとも可能にすることをコンピューティング環境に行わせること、を少なくとも行わせる命令を含む、非一時的コンピュータ可読記憶媒体。
条項47
価格設定方式は、リソーススロットを取得するのに使用する通貨、最低/最高価格設定水準または入札/価格設定アルゴリズムのうちの1つ以上を含む、条項46の非一時的コンピュータ可読記憶媒体。
条項48
入札/価格設定アルゴリズムは、競り上げ式オークションと競り下げ式オークションの一方を含む、条項47の非一時的コンピュータ可読記憶媒体。
条項49
1つ以上のコンピューティングデバイス上で実行されると、第1ユーザに関連付けられた1つ以上のリソーススロットおよび第2ユーザに関連付けられた1つ以上のリソーススロットに入札することをグループ分けされた他のユーザに可能にするための課金情報を求めることを少なくとも行わせる命令をさらに含む、条項46の非一時的コンピュータ可読記憶媒体。
条項50
1つ以上のコンピューティングデバイス上で実行されると、第1ユーザに関連付けられた1つ以上のリソーススロットまたは第2ユーザに関連付けられた1つ以上のリソーススロットに、グループ分けされた他のユーザのいずれが価格設定方式に従って入札したかを判定すること、および当該判定することに基づいて課金情報を収集することを少なくとも行わせる命令を含む、条項49の非一時的コンピュータ可読記憶媒体。
条項51
プロバイダネットワーク内のコンピューティングリソースを割り当てるシステムであって、
それぞれがコンピューティングインスタンスをホスティングするように構成された1つ以上のリソーススロット、を含む1つ以上のコンピューティングデバイスと、
少なくとも1つのメモリであって、システムの1つ以上のプロセッサによって実行されると、
提供者選択の価格設定方式に従ってエンティティに関連付けられたリソーススロットから選択された複数のリソーススロットの一部に、エンティティ選択の価格設定方式に従ってアクセスすることを要求可能な1人以上のユーザに複数のリソーススロットの少なくとも一部を関連付けること、
複数のリソーススロットの一部のコンピューティング容量を超えて複数のリソーススロットの一部へのアクセスを求める要求を受け取った旨の通知を受領すること、
当該通知に応答して、超過コンピューティング容量の要求を複数のリソーススロットの一部に割り当てるように方針が記憶されていることを判定すること、および
アクセスを求める当該要求を実現させるために別のコンピューティング容量を割り当てること、をシステムに少なくとも行わせるコンピュータ命令が内部に記憶された少なくとも1つのメモリと、を含むシステム。
条項52
複数のリソーススロットの一部、1人以上のユーザおよびエンティティ選択の価格設定方式はエンティティによって選択される、条項51に記載のシステム。
条項53
システムの1つ以上のプロセッサによって実行されると、グループ分けされた複数のリソーススロットに1人以上のユーザが入札することを可能にするユーザインターフェースを提供することをシステムに少なくとも行わせるコンピュータ可読命令をさらに含む、条項51に記載のシステム。
条項54
別のコンピューティング容量が複数のリソーススロットから提供される、条項51に記載のシステム。
条項55
プロバイダネットワーク内のコンピューティングリソースの割り当て方法であって、
複数のコンピューティングデバイスを含むコンピューティング環境であって、各コンピューティングデバイスの容量が1つ以上のリソーススロットへと論理的に分割され、第1セットの価格設定方式に従って1つ以上のリソーススロットがユーザに関連付けられているコンピューティング環境において、1つ以上の関連付けられたリソーススロットの少なくとも1つを特定すること、および少なくとも1つの関連付けられたリソーススロットに第2セットの価格設定方式に従ってアクセス可能な他のユーザを特定することをユーザに可能にすること、
少なくとも1つの関連付けられたリソーススロットのコンピューティング容量を超えて少なくとも1つの関連付けられたリソーススロットへのアクセスを求める要求を受け取った旨の通知を受領すること、並びに
当該通知に応答して、アクセスを求める当該要求を実現させるために別のコンピューティング容量を割り当てること、を含む方法。
条項56
少なくとも1つの関連付けられたリソーススロットを第2の価格設定方式に従って他のユーザに割り当てることをさらに含む、条項55の方法。
条項57
第2セットの価格設定方式がユーザによって選択される、条項55の方法。
条項58
少なくとも1つの関連付けられたリソーススロットに別のコンピューティング容量を割り当てるように方針が記憶されていることを判定することをさらに含み、当該方針に従って別のコンピューティング容量が割り当てられる、条項55の方法。
条項59
少なくとも1つの関連付けられたリソーススロットに他のユーザが入札することを可能にするユーザインターフェースを提供することをさらに含む、条項55の方法。
条項60
少なくとも1つの関連付けられたリソーススロット、少なくとも1つの関連付けられたリソーススロットにアクセス可能な他のユーザ、および第2セットの価格設定方式の選択を容易にするユーザインターフェースを提供することをさらに含む、条項55の方法。
条項61
少なくとも1つの関連付けられたリソーススロットに第2の価格設定方式に従って他のユーザが入札することを可能にすることをさらに含む、条項55の方法。
条項62
第2の価格設定方式は、リソーススロットを取得するのに使用する通貨、最低/最高価格、または入札/価格設定アルゴリズムを含む、条項55の方法。
条項63
上記可能にすることは、少なくとも1つの関連付けられたリソーススロットを割り当てるための要求を受領すること、当該要求を要求識別子に関連付けること、少なくとも1つの関連付けられたリソーススロットをプール識別子に関連付けることを含む、条項61の方法。
条項64
少なくとも1つの関連付けられたリソーススロットを割り当てるための課金情報を求めること、および別のコンピューティング容量を割り当てることをさらに含む、条項55の方法。
条項65
少なくとも1つの関連付けられたリソーススロットの1つ以上に第2の価格設定方式に従って他のユーザのいずれが入札したかを判定すること、および当該判定することに基づいて課金情報を収集することをさらに含む、条項61の方法。
条項66
ユーザ識別子に他のユーザを関連付けること、および他のユーザに関連付けられたレコードにユーザ識別子を含めることをさらに含む、条項65の方法。
条項67
コンピュータ可読命令が記憶された非一時的コンピュータ可読記憶媒体であって、コンピュータ可読命令は、1つ以上のコンピューティングデバイス上で実行されると、
複数のコンピューティングデバイスを含み、各コンピューティングデバイスの容量が1つ以上のリソーススロットへと論理的に分割され、第1セットの価格設定方式に従って1つ以上のリソーススロットがユーザに関連付けられているコンピューティング環境において、少なくとも1つの関連付けられたリソーススロットを特定すること、および少なくとも1つの関連付けられたリソーススロットに第2セットの価格設定方式に従ってアクセス可能な他のユーザを特定することをユーザに可能にするユーザインターフェースを生成すること、
少なくとも1つの関連付けられたリソーススロットへのアクセスを他のユーザが要求することを可能にするユーザインターフェースを生成すること、並びに
少なくとも1つの関連付けられたリソーススロットのコンピューティング容量を超えて少なくとも1つの関連付けられたリソーススロットへのアクセスを求める要求を受け取った旨の通知を受領することに応答して、アクセスを求める当該要求を実現させるために別のコンピューティング容量を割り当てることをコンピューティング環境に行わせること、を少なくとも行わせる命令を含む、非一時的コンピュータ可読記憶媒体。
条項68
第2セットの価格設定方式は、リソーススロットを取得するのに使用する通貨、最低/最高価格、または入札/価格設定アルゴリズムを含む、条項66の非一時的コンピュータ可読記憶媒体。
条項69
入札/価格設定アルゴリズムは、競り上げ式オークションと競り下げ式オークションの一方を含む、条項68の非一時的コンピュータ可読記憶媒体。
条項70
1つ以上のコンピューティングデバイス上で実行されると、少なくとも1つの関連付けられたリソーススロットに他のユーザが入札することを可能にするための課金情報を求めることをコンピューティング環境に少なくとも行わせる命令を含む、条項67の非一時的コンピュータ可読記憶媒体。
条項71
1つ以上のコンピューティングデバイス上で実行されると、少なくとも1つの関連付けられたリソーススロットに別のコンピューティング容量を割り当てるように方針が記憶されていることを判定することをコンピューティング環境に少なくとも行わせる命令を含み、当該方針に従って別のコンピューティング容量が割り当てられる、条項67の非一時的コンピュータ可読記憶媒体。
条項72
別のコンピューティング容量は、ユーザに関連付けられた1つ以上のリソーススロットから割り当てられる、条項67の非一時的コンピュータ可読記憶媒体。
[0123]前述の各段落で説明されたプロセス、方法およびアルゴリズムのそれぞれは、1つ以上のコンピュータまたはコンピュータプロセッサによって実行されるコードモジュールで具現化され、かつそのコードモジュールによって完全にまたは部分的に自動化され得る。このコードモジュールは、ハードドライブ、ソリッドステートメモリ、光ディスクおよび/または同種のものなどの任意の種類の非一時的コンピュータ可読媒体またはコンピュータストレージデバイスに記憶され得る。プロセスおよびアルゴリズムは、特定用途向け回路を用いて部分的または完全に実装され得る。開示されたプロセスおよびプロセスステップの結果は、永続的であろうとなかろうと、任意の種類の非一時的コンピュータストレージ(例えば、揮発性または不揮発性ストレージなど)に記憶され得る。
[0124]上述した様々な特徴およびプロセスは、互いに独立して使用され、あるいは様々な方法を用いて組み合わされ得る。全ての可能な組み合わせおよび部分的組み合わせは、本開示の範囲に含まれることが意図される。なお、一定の方法またはプロセスのブロックは、ある実施態様では省略される場合がある。また、本明細書で説明された方法およびプロセスは、任意の特定のシーケンスに限定されることはなく、そのシーケンスに関するブロックまたはステートは、適切な他のシーケンスで実行することができる。例えば、説明されたブロックまたはステートは、具体的に開示された順序以外の順序で実行され得る。あるいは複数のブロックまたはステートは、1つのブロックまたはステートに組み合わされ得る。例示的なブロックまたはステートは、連続的に、並列に、またはその他の方法で実行され得る。ブロックまたはステートは、開示された例示的な実施形態に追加され、またはそこから除去され得る。本明細書で説明された例示的なシステムおよび構成要素は、説明されたものと異なるように構成され得る。例えば、開示された例示的な実施形態に要素を追加し、そこから要素を除去し、あるいはそれと比較して要素を再配置してもよい。
[0125]様々な項目が使用されつつメモリまたはストレージに記憶されているものとして例示されたが、これらの項目またはその各部は、メモリ管理およびデータの完全性を目的としてメモリと他のストレージデバイスの間で転送され得ることも理解されよう。あるいは、他の実施形態では、ソフトウェアモジュールおよび/またはシステムの一部または全ては、メモリまたは他のデバイスにおいて動作し、例示されたコンピューティングシステムとコンピュータ間通信を介して通信し得る。さらに、ある実施形態では、システムおよび/またはモジュールの一部または全ては、少なくとも部分的にファームウェアおよび/またはハードウェアを用いるなどの他の方法によって実装または提供され得る。このようなファームウェアおよび/またはハードウェアとしては、1つ以上の特定用途向け集積回路(application−specific integrated circuit:ASIC)、標準的な集積回路、(例えば、適切な命令を実行することによる、かつマイクロコントローラおよび/または組み込みコントローラを含む)コントローラ、フィールドプログラマブルゲートアレイ(field−programmable gate array:FPGA)、複合プログラマブル論理デバイス(complex programmable logic device:CPLD)などが含まれるが、これらに限定されることはない。モジュール、システムおよびデータ構造の一部または全ては、ハードディスク、メモリ、ネットワーク、または適切なドライブによって、もしくは適切な接続を介して読み取られるポータブルメディア製品などのコンピュータ可読媒体に(例えば、ソフトウェア命令または構造化データとして)記憶されてもよい。これらのシステム、モジュールおよびデータ構造は、無線ベースおよび有線/ケーブルベースの媒体を含む様々なコンピュータ可読伝送媒体上の生成データ信号として(例えば、搬送波または他のアナログもしくはデジタル伝播信号の一部として)伝送されてもよく、(例えば、単一もしくは多重アナログ信号の一部として、または複数の離散デジタルパケットもしくはフレームとして)様々な形態を取ってもよい。このようなコンピュータプログラム製品は、他の実施形態では他の形態を取り得る。従って、本発明は、他のコンピュータシステム構成と共に実施され得る。
[0126]本明細書で使用される条件付きの文言、とりわけ、「できる(can)」、「する可能性がある(could)」、「する場合がある(might)」、「し得る(may)」、「例えば(e.g.)」などは、特に明確に指定のない限り、または、使用された文脈で解釈されない限り、一般に、ある特徴、要素および/またはステップを、ある実施形態では含むが、他の実施形態では含まないことを伝えるように意図されるものである。従って、このような条件付き文言は、一般に、特徴、要素および/またはステップが1つ以上の実施形態に全て必要であることを示すように意図されるものでもなく、これらの特徴、要素および/またはステップが含まれているかどうか、または任意の特定の実施形態において実行されるものであるかどうかについて、著者の指摘または示唆の有無にかかわらず決定する論理を1つ以上の実施形態が必ず含むことを示すように意図されるものでもない。用語「備える(comprising)」「含む(including)」「有する(having)」などは同義語であり、包括的に、制限されない様式で使用され、追加の要素、特徴、行為、操作などを除外しない。また、用語「または(or)」は、包括的な意味で使用される(すなわち、排他的な意味では使用されない)。従って、例えば、要素のリストを接続するのに使用されるとき、用語「または(or)」は、そのリスト内の要素の1つ、一部または全てであることを意味する。
[0127]ある例示的な実施形態について説明してきたが、これらの実施形態は単なる例示として提示されたものであって、本明細書に開示された発明の範囲を限定するように意図されるものではない。従って、前述の説明においては、いずれかの特定の特徴、特性、ステップ、モジュールまたはブロックが必要または不可欠であることを示すことは何ら意図されていない。実際に、本明細書に説明された新規の方法およびシステムは、他の様々な形態において具体化され得る。さらに、本明細書に説明された方法およびシステムの形態においては、本明細書に開示された発明の概念から逸脱することなく種々の省略、置換および変更が行われ得る。添付の特許請求の範囲およびその均等物は、本明細書に開示された発明の特定の範囲および概念に属するような形態または改変を包含するように意図されている。