I.序論
[0013] パブリック・クラウドを使用できず(または種々の理由のために、使用することが望ましくない場合もある)、オンサイト、ローカル、または地域のデータ・センターを必要とする(または、そうでなければ、これらの方が望ましい)多くの計算シナリオがある。例えば、種々のシナリオにおいて、データや実行するプログラムに対する業務守秘に対する必要性、ユーザに対するレイテンシ、カスタム・ハードウェアまたはパブリック・クラウドからは利用できないカスタム・システムとのインターフェースの必要性、ある種のデータが越えることができない国境のような規制要件等を満たすことが該当するであろう。このコンテキストでは、これらのオンサイト、ローカル、または地域のデータ・センターまたは計算資源は、ここでは「プライベート・クラウド」と呼ばれることもある。プライベート・クラウドは、これらがパブリック・クラウドと同じ規模の経済的恩恵に浴することができないので、限界があると考えられる。例えば、特定の領域には対応すべき要求(demand)が全くない時間(例えば、その領域における深夜時間)がある可能性があるが、パブリック・クラウド内にある計算リソースを求める要求はある。
[0014] このコンテキストでは、「クラウド」とは、インターネットのような通信ネットワークを通じて接続することができる1つ以上のデバイスまたはコンピュータを伴う種々の計算概念を指すことができる。例えば、「クラウド・コンピューティング」は、ネットワークを通じた分散型コンピューティングを指すことができ、複数の接続されたコンピュータ上においてプログラムまたはアプリケーションを実行する能力を含むことができる。具体的な例として、このような分散型コンピュータ・システムは、企業の建物内にあるデスクトップ・パーソナル・コンピュータ(PC)またはパーソナル計算デバイスを含むのでもよく、業務時間中にはそれらのユーザにサービスを提供するために十分な計算リソースを所有するが、会議や就業時間後でユーザが不在のときは非稼働状態になることもあり得る。
[0015] データ処理分野の当業者であれば、本明細書において論じられる技法の例は、本明細書における論述の主旨から逸脱することなく、「クラウド」または任意の他のリモート・デバイス(例えば、リモート・サーバ、またはもっと簡単なタイプのリモート・デバイス)を使用できることを認めるであろう。
[0016] 本明細書において論ずる技法例によると、以上の状況は、プライベート・クラウドがその使用されていないリソースをパブリック・クラウドに販売できるように、プライベート・クラウドをパブリック・クラウドに接続することによって、有利に解決することができる。地域発電または環境発電(environmentally harvested energy)を、スマート・グリッド技術によってパワー・グリッドに売り戻しできるのと多少似ているが、本明細書において論じられるスマート−クラウド技術の例は、要求があるときに、利用可能で過剰な計算リソースをパブリック・クラウドに売り戻すことを可能にできる。
[0017] しかしながら、プライベート・クラウドにおける不使用リソースをパブリック・クラウドによって使用できるようになる前に、取り組むべき難題がある。例えば、各プライベート・クラウドのネットワーク接続(connectivity)および計算能力は、パブリック・クラウドのそれとは様々な量だけ異なる場合もある。例えば、ある種のプライベート・クラウドの性能特性が、パブリック・クラウドと比較すると、著しく劣る場合もあり、パブリック・クラウドが対応することができる全てのタイプの要求に対応することは、受け入れられないおそれがある。例えば、データ・ストレージは連続して利用可能であることが求められようが、プライベート・クラウドはそれをサポートできないおそれがある。例えば、本明細書において論ずる技法例は、プライベート・クラウドの欠点を補う、またはパブリック・クラウドの消費者の要求をプライベート・クラウドの能力(capabilities)に合わせて処理する(adapt)が、これはパブリックおよびプライベート・クラウド間における「インピーダンス整合」のような(somewhat)形態として見なすこともできる。
[0018] 本明細書において論ずる技法例は、(少なくとも)これらの技術的課題を有利に解決することができる。例えば、本明細書において論ずる技法は、(1)高性能と低コストとの間のトレードオフのために、要求を最適なプライベート・クラウドに導く、および(2)プライベート・クラウドの利用可能性に動的変化があっても、信頼性のある動作を確保するというような問題を有利に解決することができる。
[0019] 更に、プライベート・クラウドが、パブリック・クラウドのために開発されたのと同じソフトウェアを実行しホストできることを確保するというような、他の課題も考えられる。例えば、ある実施態様では、プライベート・クラウドおよびパブリック・クラウド上において、しかるべき仮想化プラットフォームを使用して、1組のサーバのために書かれたソフトウェアを任意の他の1組のサーバ上で実行することを可能にするのでもよい。二重またはマルチブート・マシンのように、容量をパブリック・クラウドに売り戻さないときはそれらのオペレーティング・システム(OS)をプライベート使用モードにブートし、他のときにはパブリック・クラウド・モードにブートするといった、他のメカニズム例を採用してもよい。
[0020] 例えば、コンテンツ配信ネットワーク(CDN)は、従来から、最も近いCDNノードに要求を導くという問題に取り組んでいるが、プライベート・データ・センターの利用可能性および高い性能の可変性を考慮してこなかったと考えられる。例えば、最も近いCDNノード(提供するコンテンツを有する場合)はクライアントにとって(ネットワーク遅延に関して)最適であろうが、最も近いプライベート・クラウドがそのクライアントにとって最適ではないかもしれない。何故なら、例えば、そのプライベート・クラウドが現在利用可能でないかもしれず、特定のクライアントの目的に合ったしかるべき計算リソース(例えば、ネットワーク帯域幅、ストレージ等)を有していないかもしれず、特定のクライアントの現在の必要性の期間全域にわたって利用可能であり続けることが期待できないかもしれないからである。
[0021] これまでの信頼性に取り組む解決策は、プライベート・クラウドの利用可能性の動的な変動に対して直接的には効果を得ることができない。例えば、あるアプリケーションが永続的なデータ(例えば、電子商取引アプリケーション内に残る在庫)を格納しなければならないが、このようなデータのために常に利用可能であるプライベート・クラウドがないという場合もあり得る。つまり、本明細書において論ずるように、信頼性メカニズムの例は、「スマート−クラウド」設定としたプライベート・クラウドをサポートするように構成することができる。
[0022] 本明細書において論ずる技法例によれば、システム・アーキテクチャ例は、一時的に利用可能になるプライベート・クラウドの場所において、動的に変化する作業負荷をホストするために必要とされるバックエンド・データの利用可能性を確保することができる。
[0023] 本明細書において論ずる技法例によれば、技法例は、現在のプライベート・クラウドの利用可能性を発見し、この利用可能性を現在の計算要求に割り当てることができる。
[0024] 更に、本明細書において論ずるメカニズムおよび技法例は、顧客の計算に関する要望に合わせて、性能最適プライベート・クラウドを選択することができる。例えば、このような最適な性能は、計算スループット、ネットワーク・レイテンシ、ネットワーク帯域幅、および/または記憶性能のような、属性に関して定めることができる。
[0025] 更に、本明細書において論ずるメカニズムおよび技法例は、顧客の計算の必要性が複数の場所から発生するとき(例えば、あるウェブサイトには、世界の異なる地域に位置するクライアントにサービスを提供するために、計算上の必要性がある)、性能が最適なプライベート・クラウドを選択することができる。
[0026] 更に、本明細書において論ずる技法例は、現在の計算要求に対応するために最良の(または最も適した)利用可能なプライベート・クラウドを選択するとき、コストおよび性能を両立させる(trade-off)ことができる。
[0027] 更に、本明細書において論ずる技法例は、複数の計算負荷の複数の利用可能なプライベート・クラウドに対する割り当てを合同的に(jointly)最適化し、顧客の99%に提供される性能(performance)、総合的な収益のような全体的な評価基準(global metric)、またはその他の評価基準を最適化することができる。
[0028] 更に、本明細書において論ずる技法例は、動的に負荷軽減要件(requirement)を推論し、プライベート・クラウドの利用可能性または他のコストが変化するに連れて、作業負荷を軽減することができる。
[0029] 更に、本明細書において論ずる仲介入札メカニズムおよび技法の例は、顧客の計算に関する要望を、種々の利用可能なプライベート・クラウドによって提供される性能および価格のトレードオフの内最良のもの(最も適した、または最適な、あるいは技法例によって判定される通りに)に引き合わせる(match)ことができる。
[0030] 更に、本明細書において論ずる技法例は、プライベート・クラウドの予備のプライベート計算リソースを取っておくことができる(例えば、プライベート・クラウド外部のユーザによる使用のために利用可能になる)ときに、これらをに逆に提供するためのメカニズムを提供することができ、プライベート計算リソースは、性能および/または規格に互換性を持たせるように、パブリック・クラウドに逆に提供される。
[0031] 更に、本明細書において論ずる技法例は、特定のアプリケーションをホストするために1組の特定のプライベート・クラウドを選択し、特定のアプリケーションのクライアントから受けた1つ以上の特定の要求に対応するために、二次的にその1組のプライベート・クラウドから部分集合を選択するメカニズムを提供することができる。例えば、1組のプライベート・クラウドは、NETFLIXをホストするためにインテリジェントに選択されるのでもよく、次いで、個々のNETFLIXクライアントのムービー視聴要求に対応するために、この1組のから、それぞれの部分集合をインテリジェントに選択することができる。
[0032] 図1は、プライベート(例えば、オンプレミス(on-premise))計算リソースを外部サービスに接続するシステム例100のブロック図である。図1の例に示すように、プライベート計算デバイス102は、企業または個人的な計算デバイス例(例えば、オンサイト・データ・センター、サーバ室内にあるサーバ、事務所のパーソナル・コンピュータ(PC)、ラップトップ、タブレット、家庭用PC等)を代表し、そのローカル・ユーザ(1人または複数)からの要求以外の任意の計算要求に対応する(serve)不使用計算容量を現在有する。システム100におけるプライベート計算デバイス102の数は、時の経過と共に変化することもあり、特定の時点では0となることもある。これらのデバイスの各々において利用可能な予備容量の量は、ときと共に変化することもあり、特定の時点では0となることもある。このコンテキストでは、プライベート計算デバイス102を「プライベート・クラウド」と呼ぶこともある。
[0033] 図1の例に示すように、パブリック・クラウド104は、クライアント108によって望まれたアプリケーションを提供することを専用としたクラウド・インフラストラクチャを表す。その設計は、このような使用に合わせて最適化され、ある実施態様では、ローカル・ユーザを有さないこともある。パブリック・クラウド104において利用可能な計算容量も時の経過と共に変化する可能性がある(例えば、サーバに給電する太陽光発電出力が高くなる程、大きな容量が利用可能になる)。例えば、プライベート計算デバイス102を使用して全ての要求(または実質的に全ての要求)に対応するシステムでは、利用可能な容量が0になる(または実質的に0に近くなる)こともある。ある実施態様では、パブリック・クラウド104のインフラストラクチャ自体は、1つの場所に局在化される必要はなく、複数の場所に複数のデータ・センターまたはサーバを含んでもよい。
[0034] 図1の例では、クライアント108は、計算要求(compute demand)がアプリケーション・ソフトウェア110によって対応される必要があるユーザを表すことができる。例えば、ビッグ・データ分析アプリケーションでは、クライアント108は、データ分析ジョブを実行し、このために計算リソースを必要とする財務分析会社とすることもできる。他の例として、ウェブ・アプリケーションでは、クライアント108は、アプリケーション110によって対応されるウェブ・コンテンツにアクセスすることを望むウェブ・ユーザとすることもできる。例えば、クラウド・ゲーミング・アプリケーションでは、クライアント108は、そのゲームをプレーすることを望むプレーヤーとすることもできる。例えば、クラウド・ビデオ・ストリーミング・アプリケーションでは、クライアント108は、ムービー、テレビジョン・ショー、ビデオ等を視聴することを望む視聴者とすることもできる。例えば、特定のアプリケーション・ソフトウェア110のクライアント108は1つの場所にあってもよく、または複数の場所にわたって広がるのでもよい。
[0035] 図1の例では、アプリケーション・プログラム110は、クライアント108が使用することを望むアプリケーション(例えば、ウェブサイト、ウェブ・サービス、バッチ計算エンジン、ゲーム・サーバ等)を表す。図1は以下の論述の簡略化のために1つのアプリケーション110だけを示すが、本明細書において論ずる技法例はシステム100における複数のアプリケーション110にも該当することは、データ処理の技術分野における当業者には理解されよう。更に、本明細書において論ずるある実施態様では、アプリケーション・ソフトウェア110は、利用可能なプライベート計算デバイス102の少なくとも部分集合上にホストできることを仮定する。例えば、アプリケーション・ソフトウェア110はあらゆるプライベート計算デバイス102に存在しなくてもよく、したがって、その特定のデバイス(または複数のデバイス)を使用する判断をした後に、しかるべきプライベート計算デバイス(1つまたは複数)102にコピーされてもよい。
[0036] 本明細書において論ずる技法例によれば、アプリケーション・ソフトウェア110が異なるプライベート計算デバイス102上で何らかの変更を実行することを必要とする場合、ソフトウェア110の異なるバージョンを利用可能にすることができ、またはこれらの変更を行う自動メカニズムを使用することができる。例えば、パブリック・クラウド104がASP.NETプラットフォームを提供するのでもよく、ASP.NETを使用してソフトウェア・アプリケーション110を書くことができる。しかしながら、プライベート計算デバイス102がASP.NETプラットフォームを提供せず、ASP.NETがないWINDOWS(登録商標) OSだけを有する場合、WINDOWS OSベースのプライベート計算デバイス102上で複合パッケージが実行できるように、自動技法を使用して、アプリケーションをASP.NETランタイムおよびライブラリーと共にパッケージ化することができる。所望であればまたは必要であれば、アプリケーションをOSと共にパッケージ化してもよい。ある場合には、プライベート・クラウド運営者が、必要とされる(または望まれる)ハードウェアをパブリック・クラウド使用モードのために追加することもでき、このようなハードウェアは、プライベート・クラウドにおけるいずれのローカル・アプリケーションによっても使用されない(例えば、高度な誤り訂正が付いたセキュリティ・コプロセッサまたはメモリ)。
[0037] 図1の例では、アプリケーション・データ112は、アプリケーション・ソフトウェア112が実行するために必要とするデータを表す。また、プライベート計算デバイス102の一部または全部がアプリケーション・データ112を格納する能力を有することができ、これらの一部は、プライベート・デバイス102自体が要求に対応するために利用可能でないときでも(予備の空き容量がない)、このデータ112を維持できるとよい。例えば、これは、データ112が以前にプライベート・デバイス102に転送されていた場合、プライベート・デバイス102が計算要求に対応するために選択されたときに、このデータ112をプライベート・デバイス102に転送する必要性を回避するのに役立つことができる。例えば、アプリケーション・データ・ストレージ112がプライベート・デバイス102になくても(または省略されても)よく、このような場合、アプリケーション・ソフトウェア110は、そのデータ格納の必要性のために、パブリック・クラウド104を使用し(一方、パブリック・クラウド104は、例えば、他のプライベート・クラウドを使用してもよい)、プライベート・デバイス102における計算リソースだけを使用することもできる。他の例として、プライベート・デバイス102におけるアプリケーション・データ112が古くなる場合もあり、そのような場合、更新を実行することができる。いずれにしても、プライベート・デバイス102に格納されているアプリケーション・データ112の使用は、ネットワーク要件を低減するのに役立つことができるという利点がある。
[0038] 図1の例では、リソース・アロケータ114は、(クライアント108からの)計算要求を、パブリック・クラウド104およびプライベート・クラウド102における種々の利用可能な計算サービス・プロバイダーに割り当てるロジック例を表す。例えば、リソース・アロケータ114は、パブリック・クラウド104にまたは別のサーバにホストされてもよく、あるいは複数のプライベート・クラウドおよびパブリック・クラウド104において実行する分散型アプリケーションとしてホストされてもよい。
[0039] ネットワーク・コンポーネントとして、図1は3つのネットワーク・リンク例、(1)クライアント−プライベート・クラウド(プライベート計算デバイス)(116)、(2)クライアント−パブリック・クラウド(118)、および(3)プライベート・クラウド−パブリック・クラウド(120)も表す。これらのネットワーク・リンクの相対的な性能は、異なるクライアント108およびプライベート・クラウド・デバイス102毎に異なってもよい。例えば、クライアント108がブロードバンド・インターネット接続を使用しており、プライベート・クラウドがインターネットへの企業ネットワーク接続(例えば、TIライン)を有し、一方パブリック・クラウド104はインターネットへのコア・ネットワーク接続を有する場合、クライアント108はパブリック・クラウド104に対しては「最良の」接続を有するが、プライベート・クラウドに対しては多少劣る接続を有するのでもよい。この例では、アプリケーション・ソフトウェア110およびアプリケーション・データ112をそれ自体に転送するためにプライベート・クラウドに利用可能なネットワーク・リンクは、多くのアプリケーションにとって、非常に高速であることが可能である。他の例として、クライアント108が、空港のホットスポットに接続されたラップトップであり、プライベート・クラウド・デバイス102が同じ空港のホットスポットに接続された他のラップトップであり、一方パブリック・クラウド104は直前の例と同じである場合、クライアント108は、プライベート・クラウドに対してはより良いネットワーク・リンクを有しそうであるが(ローカル・エリア・ネットワーク)、パブリック・クラウド104に対するリンクはそれよりも遅い。また、この場合のプライベート・クラウドは、アプリケーション・ソフトウェア110およびアプリケーション・データ112をそれ自体に転送するためには、比較的遅い接続を有する場合もある。
[0040] 以下の論述では、クライアントの必要性にしたがって、プライベート・クラウド・リソースと外部リソースとの間における接続を決定するための様々な技法例を紹介する。このような技法例は、(少なくとも)発見に基づく技法、性能に基づく技法、性能およびコストに基づく技法、多重アプリケーション技法(multi-application techniques)、ならびに動的割り当て技法を含むことができる。
[0041] 例えば、発見に基づく技法の目標は、利用可能な予備容量を、計算サービスを必要とするクライアント108によって使用可能にすることである(例えば、直接性能やコストを考慮しなくてもよい)。このような発見に基づく技法の重点は、利用可能なリソースを発見することである。
[0042] 予備プライベート・クラウド容量をクライアント108によって使用可能にするために、予備容量の存在をクライアントに知らせ、予備容量は、クライアントの必要性に対応するのに十分な計算リソース(例えば、CPU、ネットワーク、ストレージ等)を有し、クライアント108から予備容量までネットワーク・リンクが存在し(例えば、物理接続、および関連するファイアウォールを越える許可に関して)、アプリケーション・ソフトウェアが、検討中のプライベート・クラウド上にホストされている。
[0043] 本明細書において論ずる技法例によれば、図2に示すように、そして以下で論ずるように、発見、選択、および転送(routing)のようなステップ例が実行された場合、システム例100がこれらの条件を満たせるようにすることができる。
[0044] 図2は、プライベート・クラウドの外部にあるソースからアプリケーションを実行するために、プライベート・クラウド上で利用可能である計算リソースをインテリジェントに割り当てるステップ例を示すフローチャート200である。
[0045] このコンテキストでは、「インテリジェントに」とは、プライベート・クラウドによって自発的に利用可能にされる計算リソースの選択に関して「インテリジェントな」選択を行うことを意味する。例えば、パブリック・サービス(例えば、AMAZON、NETFLIX等)が性能要件(例えば、効率的にそして高性能で顧客にムービーをストリーミングする要件)を有するホスト・アプリケーションを望む場合、このパブリック・サービスは、「自発的」リソース(例えば、プライベート・ホスティング・エンティティから)がインテリジェントに使用されることを確保することを望む(例えば、単にこれらを接続してソフトウェアを実行するのではなく、アプリケーションの必要性に応じて、アプリケーションの性能に対して最良のまたは最適な性能をパブリック・サービスのそれぞれの顧客のために提供するのは、どの奉仕者のリソース(volunteer's resources)かに関して、インテリジェントな選択を行う)。つまり、「インテリジェンス」は、それぞれのアプリケーションにとって、最も適したリソースの選択において、技法例を必然的に伴う(involve)。例えば、アプリケーションのクライアントがシアトルに位置し、供与側コンピュータ(donating computer)がシアトルのすぐ外側に位置する場合、ネットワーク・アクセスについては「ぴったりな」(good fit)決定となり得るが、このアプリケーションが大量のストレージを必要とし、供与側コンピュータが、アプリケーションによって求められるタイプのストレージを有していない場合(例えば、供与側コンピュータが広いメモリ空間を有するがハード・ドライブ空間は狭く、一方アプリケーションは広いハード・ドライブ空間を必要とし、それ程メモリを必要としない)、この供与側コンピュータは、アプリケーションの要件にとっては最適な引き合わせとはならない場合もある。
[0046] 図2の例に示すように、202(発見)において、クライアントは既に、所望のアプリケーション・ソフトウェアを提供する(serve)ことができる少なくとも1つのホストの存在を知る。例えば、これはパブリック・クラウドでもよいが、任意のサーバも可能である。クライアントの知識は、クライアントがアクセスすることを望むアプリケーションについてのDNS(ドメイン・ネーム・サーバ)記録に基づいてもよく、またはこのような情報を共有するための他のチャンネルを通じてもよい。例えば、クライアントがMICROSOFT.COMにアクセスすることを望む場合、クライアントは、既存のDNSサーバを調べて、MICROSOFT.COMアプリケーションが入手可能であるネットワーク・アドレスを判定することができる。この例では、204において、クライアントは、この最初に知ったネットワーク・アドレスにおいてこのアプリケーションに接触する。
[0047] 206(選択)において、アプリケーションはクライアントの要求を受け、それをリソース・アロケータに転送する(route)。リソース・アロケータは、利用可能な予備容量を有する各プライベート・クラウドから、利用可能な容量の性質を詳細に説明するメッセージを受信する。また、リソース・アロケータは、これらのプライベート・クラウドに対するネットワーク接続およびファイアウォール規則についての情報も維持する。
[0048] 208において、リソース・アロケータは、この情報を使用して、アプリケーション・ソフトウェアによって指定されたリソース要件を満たすプライベートおよび/またはパブリック・クラウドのコンピュータ・リソースを選択する。ネットワーク構成およびファイアウォール規則に基づいて、クライアントがこれらのリソースに接続できるか否か判断するためにチェックを行う。例えば、プライベート・クラウドが、シリアに位置するクライアントがそれに接続することを許可せず、クライアント要求がシリア人のクライアントにおいて発した場合、このプライベート・クラウドは考慮されない。
[0049] クライアント要件を満たす計算リソース(プライベートおよびパブリック)の中から、1つが選択される。この選択は、任意でもよく、または以下で更に論ずるように、性能およびコストに基づく技法に基づいてもよい。
[0050] 210(転送)において、一旦供与場所(serving location)が選択されたなら、クライアント要求をそこに転送する。この供与場所が、要求に対応するために、アプリケーション・ソフトウェアおよびアプリケーション・データを未だ有していない場合、例えば、パブリック・クラウドまたは近隣のプライベート・クラウドから(例えば、ピア・ツー・ピア・ネットワーキング方法を使用して)、このようなソフトウェアおよびデータを最初に得る。次いで、要求が処理され応答が計算される。
[0051] アプリケーション・ソフトウェアが望む場合、クライアントからのその後の要求を直接この選択されたサーバに転送することができるように、その場所からのクライアント応答はそれ自体のアドレスを示す。応答はクライアントに送られる。
[0052] 例えば、性能に基づく技法は、発見に基づく技法において選択ステップを最適化することができる。クライアントに提供する計算リソースを選択するとき、これらの技法は、選択を行うにあたって複数の性能判断基準を検討する。例えば、性能判断基準は、最初の応答までの時間、複数の要求にわたる平均応答時間、および/またはクラウドの信頼性というような要因を含むことができる。
[0053] 例えば、最初の応答までの時間は、選択されたプライベートまたはパブリック・クラウドがクライアントからの最初の要求に対する応答を計算するのに要する時間を含むことができる。例えば、これは、その場所においてアプリケーション・ソフトウェアおよびアプリケーション・データを得る時間を含む場合もある。
[0054] 例えば、複数の要求にわたる平均応答時間は、クライアントからの全ての要求に対応するために要する平均的な時間を含むことができる。例えば、一旦最初の応答が計算されたなら、これは、選択されたサーバの場所の計算能力、クライアントに対するネットワーク・レイテンシ、およびこの場所において入手可能なアプリケーション・データの断片量(fraction)に左右される場合もある。
[0055] 例えば、クラウドの信頼性を考慮するとき、あるプライベート・クラウドが他のプライベート・クラウドよりも多い障害を体験することもある。
[0056] ある地理的エリアの外側でホストされているプライベート・クラウドの場所、特定のブランドのハードウェアを使用するプライベート・クラウド等を優先するというような、ある種のアプリケーションに対して、追加の性能判断基準が関連してもよい。このような要因は、以上で論じたように、以下で論じられる技法例にも同様に含むことができる。データ処理の技術分野における当業者であれば、本明細書における論述の主旨から逸脱することなく、多くの他の要因も使用できることが理解されよう。しかしながら、以上で選択された要因は、ここでは、本明細書における論述の明確化のために論じられたのである。
[0057] 更に、データ処理の技術分野における当業者であれば、性能判断基準では「最良である」(例えば、最適と判定された)クラウドが、他の判断基準では「最良」(例えば、最適と判定された)ではない場合もあることは理解されよう。例えば、クライアントに非常に近いクラウドの場所は、複数の要求に対して最も有利な(本明細書において論ずる技法例にしたがって判定された)平均レイテンシを有することができるが、このクラウドの場所に、起動するアプリケーション・ソフトウェアやアプリケーション・データがないこともあり、これらの品目を得るには、最初の応答まで非常に長い時間を要するおそれがある。要求される全てのアプリケーション・ソフトウェアおよびアプリケーション・データ・エレメントを有する他のクラウドの場所が、オフラインになろうとしていることもあり、最初の応答までは「相応しい」時間(本明細書において論ずる技法例にしたがって判定された)を提供できるが、その後の要求には対応できないおそれがあり、したがって、代わりの場所の選択を必要とし、「もっと悪い」(例えば、最適でないと、本明細書において論ずる技法例にしたがって判定された)平均要求レイテンシとなる原因になる。
[0058] 以上の問題を想定すると、性能に基づく方法例は以下に論ずるように動作することができる。
[0059] 各性能判断基準には、定量的スコアが割り当てられる。個々の性能評価基準に対する全てのスコアの加重和を取ることによって、複合スコアが計算される。最も高いスコアが得られるクラウドの場所が選択される。データ処理の技術分野における当業者であれば、任意の利用可能な多重判断基準最適化技法(1つまたは複数)を使用して、加重スコアの最大化を実行してもよいことは理解されよう。例えば、要因毎の重みは、アプリケーションおよびクライアントの優先度(preference)によって異なる。アプリケーションおよびクライアントからこのような情報が入手できないときには、デフォルト値を使用してもよい。
[0060] 更に、性能およびコストに基づく方法例は、以下に論ずるように動作することができる。
[0061] 例えば、これらの方法は、計算リソースおよび帯域幅のコストを付加的に検討するために、以前に紹介した方法を更に改良することができる。例えば、全てのプライベート・クラウドが同じ価格で利用できる訳ではない。一例として、あるクラウドは、その場所のために、帯域幅コストが高くなる場合もあり、したがって費用も多くかかる可能性がある。例えば、他のあるクラウドは、その時点におけるエネルギー価格のために、エネルギー・コストが高くなり、この場合も高コスト化に繋がる可能性がある。例えば、あるクラウドは、プライベート・クラウドの所有者に特定の評価値(value)を提示する地域限定作業負荷(local workload)を有する場合もあり、このプライベート・クラウドは、提示された価格(price)がこの地域限定評価値よりも高い場合にのみ、提案されたシステムに利用可能にすればよい。つまり、各プライベート・クラウドは、現在の計算要求に対応するためにそのリソースを提供することに対して、内因的なコスト(intrinsic cost)を有することができる。以下に、技法例について更に詳しく論ずる。
[0062] 例えば、i番目のプライベート・クラウドがその計算リソースを提供するためのコスト要因は、PvtCost(i)と表記することができ、ここで異なるプライベート・クラウド(例えば、第1プライベート・クラウド、第2プライベート・クラウド、...第iプライベート・クラウド、...)は、これらがスマート−クラウドに進んで参加するコストが異なるとしてもよい。例えば、パブリック・クラウド・クライアントからi番目のプライベート・クラウドまでのネットワーク・レイテンシはLat(i)と表記することができる。更に、i番目のプライベート・クラウドのサービス時間例(例えば、その計算、メモリ、ストレージ、および他のリソースの混成に基づく)をSvc(i)と表記することができる。i番目のプライベート・クラウドに格納されているデータの現在の状態が与えられたとして、起動コスト例(例えば、最初の応答までの時間)は、Stp(i)と表記することができる。すると、加重コスト例は、次のように表すことができる。
[0063] 多くの状況において、現在のネットワーク・レイテンシ、サービス時間等は確定的に知られていない場合もあり、特定のパラメーターの確率分布の一次モーメント(first moment)として統計的に計算された期待値例を使用することもできる。
[0064] 次いで、最適化問題例を次のように定式化することができる。
クライアントによって指定された性能およびコスト制約(以下に示す通り)を受けるE[C(i)])を最小化する(i)を選択する。
制約1:PvtCost(i)<=min(PubCost, ClientLimit)。ここで、PubCostはパブリック・クラウドからリソースを取得する現在のコストを表し、パブリック・クラウドにおいてリソースが利用できない場合無限の値(または他の適した値)に設定することができ、 ClientLimitはクライアントが進んで支払う最大コストを表す。
制約2:Lat(i)+Svc(i)<=ClientPerfLatencyLimit。ここで、ClientPerfLatencyLimitは、クライアントによって指定される(例えば、クライアントから取得した、または受け取った)最悪性能限度の例を表す。
制約3: Stp(i)<=ClientStartupLimit。ここで、ClientStartupLimitは、設定時において容認可能な最大遅延値の例を表す。
[0065] 価格を最小化するのであればいずれの性能でも進んで受け入れることができる特定のクライアント、またはいくらコストがかかっても(at any available cost)彼らの要求性能レベルを要望することができる特定のクライアントの場合、以上に示した制約例の一部または全部がない場合もある。
[0066] コスト以外でも、プライベート・クラウドの所有者は彼らの価格を要求に合わせる場合がある。例えば、他のいずれの競合クラウドよりも高い性能を提供するプライベート・クラウドが、特別料金で(他の競合クラウドよりも遙かに高い)提供されることもある。他の例として、価格は、クライアントの場所および要件に応じて異なる場合もある。例えば、クライアントの必要性に緊密に合致するクラウドの所有者は高い価格を入札することができ、一方さほど相応しくないクラウド(例えば、遠い場所のためにレイテンシが大きい)の所有者は、低い価格を提示する(例えば、他の競合クラウドよりも低い)こともある。
[0067] 性能およびコストに基づく方法例は、アプリケーションに対する計算要求(compute demand)の利用可能なクラウドへの最適な割り当てを決定する。この引き合わせ(matching)は、クラウドの価格と、アプリケーションがクラウド・リソースのために支払わなければならない(例えば、都合できる(has available))予算とに基づいて行われる。この引き合わせを行うために、多重判断基準最適化、自動競売、および規則に基づく割り当てというような技法例を使用することができる。
[0068] 更に、多重アプリケーション方法例は、以下に論ずるように動作することができる。
[0069] あるシナリオでは、各アプリケーションを別々に(independently)扱うと、最適未満の解決策が生じる、またはあるアプリケーションが過小供与される(underserve)おそれがある。本明細書において論ずるように、多重アプリケーション方法例は、先に論じた性能およびコストに基づく方法と同様に動作するが、一度に複数のアプリケーションを検討する(例えば、一緒に検討する)。つまり、最適化解決手段(optimization solver)、競売、またはルール・ベース・システムというような、使用される引き合わせ技法は、複数の利用可能なクラウドに加えて、複数のアプリケーション・クライアントからの要件も含む。
[0070] 更に、動的割り当て方法例は、以下に論ずるように動作することができる。
[0071] あるシナリオでは、計算負荷に対応することが、その所望のサービス長のために、プライベート・クラウドの割り当てが実現可能でない場合もある。何故なら、その期間全域にわたって利用可能な1つのプライベート・クラウドが得られないからである。例えば、このようなシナリオでは、割り当ては、時の経過とともに利用可能になる、新たに利用可能なクラウド・リソースを使用し、以前に割り当てられもはや利用可能でない(例えば、「古い」割り当てられた)リソースを解放するように、割り当てを動的に変更することができる。
[0072] この技法例では、計算要求を短い時間期間に細分する(例えば、プライベート・クラウドの運営者がその利用可能性を宣言するスロット期間(slot duration)に応じて1分または30分)。クライアントおよびアプリケーションからの性能およびコスト制約は、スロット毎に掲示され、動的最適化、ビタビ・アルゴリズム、またはその他の多重スロット最適化方法というような動的最適化方式が、経時的な割り当てを最適化するために使用される。
[0073] 例えば、ビタビ・アルゴリズムは、隠れた状態(ビタビ・パス)の内、観察されたイベントのシーケンスが得られる可能性が最も高いシーケンスを発見するための動的プログラミング・アルゴリズムである(例えば、マルコフ情報源および隠れマルコフ・モデルのコンテキストにおいて)。
[0074] コストおよび性能制約が与えられて動作することに加えて、パブリック・クラウドが、リソースをパブリック・クラウドに進んで提供する(volunteer)プライベート・クラウドに提示する補償を最適化することを望む場合もある。クライアントの性能およびコスト制約に基づいて、次いで、最適化技法例を使用して、時の経過と共にプライベート・クラウドに対する最良の(例えば、最適な、最も望ましい)補償の提示額(compensation offer)を計算することができる。つまり、最適化の目的の例が、クライアント・コストの最小化からプライベート・クラウドの補償最大化に変更になってもよい。以上で定義した変数を使用して、この問題を次のように定式化することができる。
即ち、クライアントによって指定された性能およびコスト制約を受けるPvtCost(i)を最大化する(i)を選択する。
[0075] 以上の最適化は、プライベート・クラウド間における総計補償または公正さを最大化するために、T個のタイム・スロットの計画対象期間にわたって実行することができ、次のように表すことができる。各タイム・スロット(t)においてt=1,...TにわたってPvtCost(i)の極小値を最大化する(i)を選択する。
[0076] データ処理の技術分野における当業者であれば、本明細書における論述の主旨から逸脱することなく、アプリケーションの実行の分析および最適化には、多くの他のタイプの技法も使用できることが認められよう。
[0077] データ処理の技術分野における当業者であれば、利用可能なプライベート計算リソースの、本明細書において論じたように、アプリケーションからの外部要求(request)に関連する計算要求(demand)に対する引き合わせを遂行するためには、本明細書における論述の主旨から逸脱することなく、多くの方法があり得ることが認められよう。
II.動作環境例
[0078] 本明細書において論ずる特徴は、本明細書における論述の主旨から逸脱することなく、データ処理の技術分野における当業者によって理解されることが可能な多くの異なる方法で実現することができる実施形態例として提供される。このような特徴は、実施形態の特徴の例に過ぎないと解釈されるのであり、これらの詳細な説明だけに限定するように解釈することは意図していない。
[0079] 本明細書において更に論ずるように、図3は、プライベート計算リソースを外部サービスに接続するシステム300を一般化したブロック図である。図示のように一般化したシステム300は、種々の機能例、および/または本明細書において論ずる技法例に含むことができるロジックを例示することを意図するに過ぎず、種々のハードウェアおよび/またはソフトウェア構成の実施態様に関して限定することを意図するのではない。
[0080] 例えば、システム300は、少なくとも1つのプロセッサによる実行のために命令を格納するコンピュータ読み取り可能記憶媒体を含むことができる。図3に示すように、システム300は、少なくとも1つのプロセッサ304を含むデバイス302を含むことができる。デバイス302は、リソース記述取得モジュール308を含むことができる日和見的リソース・マネージャ306を含むことができる。リソース記述取得モジュール308は、複数の動的に変化する作業負荷を伴う1つ以上のアプリケーション312の実行に対する1つ以上のリソース要件の記述310を得ることができる。リソース記述取得モジュール308は、一般公開サービス314に含むこともできる。
[0081] 例えば、リソース記述取得モジュール308は、一般公開サービス314に関連付けられたアプリケーション312の実行に対する1つ以上のリソース要件の記述310を得ることができる。
[0082] 実施形態例によれば、日和見的リソース・マネージャ306、またはその1つ以上の部分は、以下で論ずるように、有形コンピュータ読み取り可能記憶媒体上に格納することができる実行可能命令を含むことができる。実施形態例によれば、コンピュータ読み取り可能記憶媒体は、任意の数の記憶デバイス、および分散型デバイスを含む、任意の数の記憶媒体タイプを含むこともできる。
[0083] このコンテキストでは、「プロセッサ」は、処理システムに関連付けられた命令を処理するように構成された1つのプロセッサまたは複数のプロセッサを含むことができる。つまり、プロセッサは、命令を並列におよび/または分散して処理する1つ以上のプロセッサを含むことができる。デバイス・プロセッサ304は図3における日和見的リソース・マネージャ306の外部にあるとして図示されているが、データ処理の技術分野における当業者であれば、デバイス・プロセッサ304は、1つのコンポーネントとして、および/または日和見的リソース・マネージャ306および/またはそのエレメントの内任意のものの内部または外部に配置されてもよい分散型ユニットとして実現することもできる。
[0084] 例えば、システム300は1つ以上のプロセッサ304を含むことができる。例えば、システム300は、1つ以上のプロセッサ304によって実行可能な命令を格納する少なくとも1つの有形コンピュータ読み取り可能記憶媒体を含むことができ、実行可能命令は、少なくとも1つの計算装置(例えば、データ処理装置)に、本明細書において論ずるようなシステム300に含まれる種々のコンポーネント例に関連付けられた動作を実行させるように構成されている。例えば、1つ以上のプロセッサ304は、少なくとも1つの計算装置に含まれてもよい。データ処理の技術分野における当業者であれば、本明細書における論述から逸脱することなく、このような論述にしたがって構成することができるプロセッサおよび計算装置の多くの構成があることが理解されよう。
[0085] このコンテキストでは、「コンポーネント」は、ハードウェアの補助により、一定の動作を実行するように構成することができる実行可能命令またはハードウェアを指すことができる。このような命令は、命令のコンポーネント・グループ内に含まれてもよく、または1つよりも多いグループにわたって分散されてもよい。例えば、第1コンポーネントの動作に関連付けられたいくつかの命令が、第2コンポーネント(またはもっと多いコンポーネント)の動作に関連付けられた命令のグループに含まれてもよい。たとえば、本明細書における「コンポーネント」は、実行可能命令によって実現することができる機能が組み込まれた(configured)計算エンティティの一種を意味することができる。この実行可能命令は、1つのエンティティに配置されてもよく、あるいは複数のエンティティにわたって拡散(spread)または分散(distribute)されてもよく、更に他のコンポーネントに関連付けられた命令および/またはハードウェアと重複してもよい。このコンテキストでは、「実行可能」命令とは、1つ以上のハードウェア・デバイスによる実行のために特定的に構成された命令を指すのであって、ソフトウェア自体を指すのではない。
[0086] 実施形態例によれば、日和見的リソース・マネージャ306は、1つ以上のユーザ・デバイスと関連付けて実装することができる。例えば、日和見的リソース・マネージャ306は、以下で更に論ずるように、1つ以上のサーバと通信することができる。
[0087] 例えば、エンティティ・レポジトリ316は、1つ以上のデータベースを含むことができ、データベース・インターフェース・コンポーネント318を通じてアクセスすることができる。データ処理の技術分野における当業者であれば、種々のタイプのデータベース・コンフィギュレーション(例えば、リレーショナル・データベース、階層型データベース、分散型データベース)およびデータベース以外のコンフィギュレーションというような、本明細書において論ずるレポジトリ情報を格納するための技術は数多くあることが認められよう。
[0088] 実施形態例によれば、日和見的リソース・マネージャ306は、例えば、日和見的リソース・マネージャ306のために中間データを格納することができるメモリ320を含むこともできる。このコンテキストでは、「メモリ」はデータおよび/または命令を格納するように構成された1つのメモリ・デバイス、あるいは複数のメモリ・デバイスを含むことができる。更に、メモリ320は複数の分散型記憶デバイスに及ぶこともできる。
[0089] 実施形態例によれば、ユーザ・インターフェース・コンポーネント322は、ユーザ324と日和見的リソース・マネージャ306との間の通信を管理することができる。ユーザ324は、受信デバイス326と関連付けることができ、受信デバイス326は、ディスプレイ328および他の入力/出力デバイスと関連付けることができる。例えば、ディスプレイ328は、内部デバイス・バス通信を通じて、または少なくとも1つのネットワーク接続を通じて、受信デバイス326と通信するように構成することができる。
[0090] 例示の実施形態によれば、ディスプレイ328は、フラット・スクリーン・ディスプレイ、印刷形態のディスプレイ(print form of display)、二次元ディスプレイ、三次元ディスプレイ、固定ディスプレイ、移動ディスプレイ、触覚出力、音声出力、およびユーザ(例えば、ユーザ324)と通信するための任意の他の形態の出力というような感覚ディスプレイ(sensory display)として実現することができる。
[0091] 例示の実施形態によれば、日和見的リソース・マネージャ306は、ネットワーク通信コンポーネント330を含むことができる。ネットワーク通信コンポーネント330は、日和見的リソース・マネージャ306と、この日和見的リソース・マネージャ306と通信することができる他のエンティティとの間における、少なくとも1つのネットワーク332を通じたネットワーク通信を管理することができる。例えば、ネットワーク332は、インターネット、少なくとも1つのワイヤレス・ネットワーク、または少なくとも1つの有線ネットワークの内少なくとも1つを含むことができる。例えば、ネットワーク332は、セルラ・ネットワーク、無線ネットワーク、または日和見的リソース・マネージャ306のためのデータ送信をサポートすることができる任意のタイプのネットワークを含むことができる。例えば、ネットワーク通信コンポーネント330は、日和見的リソース・マネージャ306と受信デバイス326との間のネットワーク通信を管理することができる。例えば、ネットワーク通信コンポーネント330は、ユーザ・インターフェース・コンポーネント322と受信デバイス326との間のネットワーク通信を管理することができる。
[0092] リソース・アロケータ340は、1つ以上の計算リソース要件を、1つ以上のプライベート・クラウド344a、344bの一時的に利用可能な計算リソースに引き合わせることによって、1つ以上のプライベート・クラウド344a、344bから計算リソース342a、342bへのアクセスを日和見的に得ることができる。プライベート・クラウド344a、344bは、一般公開サービス314の外部にあり離れている。図3では、リソース・アロケータ340は、日和見的リソース・マネージャ306の内部にあるように示されているが、先に論じたように、リソース・アロケータ340は、リソース・アロケータ340の一部、あるいは一般公開サービス314およびプライベート・クラウド344a、344bの内の1つ以上のデバイスにわたって分散された分散型アプリケーションとしてというように多くの形態で実装することができる。更に、2つのプライベート・クラウド344a、344bだけが図3に示されているが(図示および論述を容易にするため)、システム300に計算リソースを使用させることができるプライベート・クラウドは1つでも、またはもっと多くてもよいことは理解されよう。
[0093] このコンテキストでは、「日和見的に(opportunistically)」とは、機会が訪れたときにそれを利用するという意味である。例えば、リソース・アロケータ340は、計算リソース342a、342bが非使用のために利用可能になったときに、これらへのアクセスを得る(例えば、プライベート・クラウド344a、344bの観点からは、計算リソース342a、342bは現在アイドルであるが、リソース・アロケータ340に「利用可能」である現時点以外の時点では、計算リソース342a、342bはプライベート・クラウド344a、344bによって使用されていてもよい)。本明細書において論ずる技法例によれば、プライベート・クラウド344a、344bは、それらのそれぞれの計算リソース342a、342bのシステム300に対する自発的な利用可能性を経時的に報告する(例えば、これらのそれぞれの計算リソース342a、342bが常にシステム300による使用のために利用可能でない場合、それらの内のどれが、どの時点で利用可能になるか報告することを含むのでもよい)。
[0094] パブリック・ホスト・モジュール346は、1つ以上のプライベート・クラウド344a、344bの計算リソースの内一時的に利用可能であり引き合わされたものを使用して、1つ以上のアプリケーション312の実行のホスティング活動の制御を開始することができる。
[0095] 例えば、リソース発見モジュール348は、1つ以上のプライベート・クラウド344a、344bから受け取ったリソース利用可能性記述350に基づいて、1つ以上のプライベート・クラウド344a、344bにおいて利用可能な予備容量計算リソース(spare capacity computing resources)を判定することができる。
[0096] 例えば、リソース・アロケータ340は、1つ以上の計算リソース要件310の少なくとも一部を満たす1つ以上のプライベート・クラウド344a、344bの一時的に利用可能な計算リソースを選択することによって、計算リソース342a、342bへのアクセスを日和見的に得ることができる。
[0097] 例えば、リソース発見モジュール348は、1つ以上のプライベート・クラウド344a、334bから受け取ったリソース利用可能性記述350に基づいて、1つ以上のプライベート・クラウドにおいて利用可能である予備容量計算リソースを判定することができる。
[0098] 例えば、性能分析モジュール352は、1つ以上のプライベート・クラウド344a、344bにおいて利用可能である予備容量計算リソースの性能判断基準354の分析を行うことができる。
[0099] 例えば、リソース・アロケータ340は、1つ以上の計算リソース要件310の少なくとも一部を満たし、1つ以上のアプリケーション312の最適化された実行性能を提供する、1つ以上のプライベート・クラウド344a、344bの一時的に利用可能な計算リソースを、性能判断基準354の分析に基づいて選択することによって、計算リソース342a、342bへのアクセスを、日和見的に得ることができる。
[0100] 例えば、1つ以上のプライベート・クラウド344a、344bにおいて利用可能である予備容量計算リソースの性能判断基準354は、選択された一時的に利用可能な計算リソースを含む1つ以上のプライベート・クラウド344a、344bの初期応答までの時間、選択された一時的に利用可能な計算リソースを含む1つ以上のプライベート・クラウド344a、344bの複数の要求にわたる平均応答時間、または選択された一時的に利用可能な計算リソースを含む1つ以上のプライベート・クラウド344a、344bの信頼性の内1つ以上を含むことができる。例えば、平均応答時間および/または信頼性の値は、プライベート・クラウド344a、344bの経時的な性能(例えば、プライベート・クラウド344a、344bに関連付けられた履歴データ)にしたがって判定することができ、またはプライベート・クラウド344a、344bにおいて現在利用可能なリソースに基づいて、あるいは本明細書において更に論ずるように判定することができる。データ処理の技術分野における当業者であれば、本明細書における論述の主旨から逸脱することなく、これらの値を判定する技法は数多くあり得ることがわかるであろう。
[0101] 例えば、リソース発見モジュール348は、1つ以上のプライベート・クラウド344a、344bから受け取ったリソース利用可能性記述350に基づいて、1つ以上のプライベート・クラウド344a、344bにおいて利用可能である予備容量計算リソースを判定することができる。
[0102] 例えば、コスト分析モジュール346は、1つ以上のプライベート・クラウド344a、344bにおいて利用可能である予備容量計算リソースのコスト判断基準358の分析と、これらの予備容量計算リソースにアクセスするための帯域幅のコストの分析とを行うことができる。
[0103] 例えば、リソース・アロケータ340は、1つ以上の計算リソース要件310の少なくとも一部を満たし、1つ以上のアプリケーション312の最適化された実行コストを提供する1つ以上のプライベート・クラウド344a、344bの一時的に利用可能な計算リソースを、コスト判断基準358の分析に基づいて選択することによって、計算リソース342a、342bへのアクセスを日和見的に得ることができる。
[0104] 例えば、リソース・アロケータ340は、1つ以上の計算リソース要件310を1つ以上のプライベート・クラウド344a、344bの一時的に利用可能な計算リソースに、多重判断基準最適化技法、自動競売、または規則に基づく割り当て技法の内1つ以上に基づいて引き合わせることによって、一般公開サービス314の外部にあり離れている1つ以上のプライベート・クラウド344a、344bからの計算リソース342a、342bへのアクセスを日和見的に得ることができる。
[0105] 例えば、1つ以上の計算リソース要件310を複数のプライベート・クラウド344a、344bの一時的に利用可能な計算リソースに、整数線形プログラミング技法、分岐限定発見的問題解決法(branch and bound heuristics)、または貪欲最適化技法(greedy optimization technique)の内1つ以上に基づいて引き合わせることによって、一般公開サービス314の外部にあり離れている複数のプライベート・クラウド344a、344bからの計算リソース342a、342bへのアクセスを日和見的に得ることができる。
[0106] 例えば、線形プログラミングとは、変数が特記条件(制約)を受ける、一次(first-degree)(線形)代数表現の最大および最小値に関する数学的問題の解のことである。全ての変数が整数であることが要求される線形プログラミング問題は、純粋整数プログラミング問題と呼ばれる。例えば、分岐限定は、特に離散および組み合わせ最適化において、種々の最適化問題の最適解を発見するための一般的なアルゴリズムのことである。分岐限定アルゴリズムは、全ての候補解の統計的な列挙を含むことができ、最適化対象量の推定上限および下限を使用することによって、成果のない候補の大きな部分集合を纏めて破棄する。
[0107] 例えば、貪欲アルゴリズムは、大域的最適を判定することを目標として、各段階において局所的に最適な選択を行う問題解決発見的方法に従うことができる。例えば、貪欲戦略は一般に最適解を得ることができないが、貪欲問題解決発見的方法は、適度な時間で、大域的に最適な解に近似する局所的に最適な解を求めることができる。
[0108] 例えば、仲介競売は、買い手(例えば、パブリック・クラウドまたはクライアント)および売り手(例えば、提供するリソースを有するプライベート・クラウド)、ならびに売り手と買い手との間の取引を仲介する(例えば、提示(offer)、入札等によって)仲介人を伴うことができる。
[0109] 例えば、リソース発見モジュール348は、時の経過と共に1つ以上のプライベート・クラウド344a、344bから動的に受け取ったリソース利用可能性記述350に基づいて、1つ以上のプライベート・クラウド344a、344bにおいて動的に利用可能である予備容量計算リソースを判定することができる。例えば、計算リソースが時の経過と共に利用可能になるに連れて、1つ以上の計算リソース要件310の少なくとも一部を満たす1つ以上のプライベート・クラウド344a、344bの一時的に利用可能な計算リソースを動的に選択することによって、リソース・アロケータ340は計算リソース342a、342bへのアクセスを動的に得ることができ、以前の計算リソースが利用不可能になった場合、アクセスが以前に得られた以前の計算リソースを動的に解放することができる。
[0110] 例えば、時の経過と共に1つ以上のプライベート・クラウド344a、344bから動的に受け取ったリソース利用可能性記述350は、所定の時間間隔の時間スロットに対するリソース利用可能性を含むことができる。例えば、リソース・アロケータ340は、計算リソースが時の経過と共に利用可能になるに連れて、リソース利用可能性記述350に基づいて、1つ以上の計算リソース要件310の少なくとも一部を満たす1つ以上のプライベート・クラウド344a、344bの一時的に利用可能な計算リソースを動的に選択することによって、計算リソース342a、342bへのアクセスを動的に得ることができ、以前の計算リソースが利用不可能になった場合、以前にアクセスが得られた以前の計算リソースを動的に解放することができる。
[0111] 例えば、リソース発見モジュール348は、時間スロットの各々に対して、1つ以上のプライベート・クラウド344a、344bにおいて動的に利用可能である予備容量計算リソースのリストを、時の経過と共に1つ以上のプライベート・クラウドから動的に受け取られたリソース利用可能性記述350に基づいて決定することができる。例えば、リソース記述取得モジュール308は、時間スロットの各々に対して、1つ以上のアプリケーション312の実行のための1つ以上の計算リソース要件のそれぞれの記述に関連付けられたコスト制約および性能制約のリストを決定することができる。例えば、リソース・アロケータ340は、経時的に計算リソース342a、342bへの割り当てアクセス(allocation access)を動的に最適化することができる。
[0112] 例えば、リソース・アロケータ340は、動的最適化技法、ビタビ・アルゴリズム技法、または多スロット最適化技法の内1つ以上に基づいて、経時的な計算リソース342a、342bの割り当てアクセスを動的に最適化することができる。
[0113] 例えば、リソース・アロケータ340は、1つ以上の計算リソース要件310を、プライベート計算デバイス・ソースから一時的に利用可能になるプライベート計算リソースを有する少なくとも1つのプライベート計算デバイスを含む計算エンティティの利用可能な計算リソースとインテリジェントに引き合わせることによって、一般公開サービス314の外部にあり離れている少なくとも1つのプライベート計算デバイス344a、344bを含む計算エンティティからの計算リソース342a、342bへのアクセスを日和見的に得ることができる。インテリジェントな引き合わせは、性能最適化分析を使用して行われる。例えば、性能分析モジュール352が性能最適化分析を行うのでもよい。
[0114] 例えば、性能最適化分析は、得られた1つ以上の計算リソース要件の記述310と、および計算エンティティの利用可能な計算リソースの記述350とに基づく、一般公開サービス314に関連付けられたアプリケーション312の実効性能の予測分析を含むことができる。
[0115] 例えば、性能最適化分析は、計算スループット、ネットワーク・レイテンシ、ネットワーク帯域幅、記憶性能の内1つ以上の分析を含むことができる。
[0116] 例えば、計算エンティティは、少なくとも1つのプライベート・クラウドにおける少なくとも1つのプライベート計算デバイスを含むことができる。
[0117] 例えば、計算エンティティは、少なくとも1つのプライベート・クラウドおよび少なくとも1つのパブリック・クラウドにおける複数の計算デバイスを含むことができる。
[0118] 他の例として、リソース記述取得モジュール308は、アプリケーション312の実行のための1つ以上の計算リソース要件の記述310を得ることができる。
[0119] 例えば、1つ以上の計算リソース要件の記述310は、一般公開サービス314のリソース・アロケータ340に提供することができる。リソース・アロケータ340は、1つ以上の計算リソース要件310を、少なくとも1つのプライベート計算デバイスを含む計算エンティティの利用可能な計算リソースにインテリジェントに引き合わせることによって、一般公開サービス314の外部にあり離れている少なくとも1つのプライベート計算デバイス344a、344bを含む計算エンティティからの計算リソース342a、342bへのアクセスを日和見的に得るように構成されている。
[0120] 例えば、パブリック・ホスト・モジュール346は、引き合わされた計算エンティティの利用可能な計算リソースを使用して、1人以上のユーザのためにアプリケーション312の実行のホスティング活動の制御を開始することができる。
[0121] 例えば、一般公開サービス314に関連付けられたパブリック・クラウドにおいて、リソース・アロケータ340をホストすることができる。
[0122] 例えば、一般公開サービス314をホストするパブリック・クラウドとは別のサーバにおいて、リソース・アロケータ340をホストすることもできる。
[0123] 例えば、一般公開サービス314に関連付けられたパブリック・クラウドにおいて、そして複数のプライベート・クラウドにおいてホストされる分散型リソース割り当てアプリケーションとして、リソース・アロケータ340をホストすることもできる。
[0124] データ処理の技術分野における当業者であれば、本明細書における論述の主旨から逸脱することなく、プライベート・クラウドの外部にあるソースからアプリケーションを実行するために、プライベート・クラウド(またはプライベート・デバイス)上において利用可能である計算リソースをインテリジェントに割り当てるために、多くの異なる技法が使用可能であることが認められよう。
III.フローチャートの説明
[0125] 本明細書において論じた特徴は、本明細書における論述の主旨から逸脱することなく、データ処理の技術分野における当業者によって理解することができる多くの異なる方法で実現できる実施形態例として提供される。このような特徴は、実施形態の特徴の例に過ぎないと解釈されるのであり、これらの詳細な説明だけに限定するように解釈されることは意図していない。
[0126] 図4Aから図4Eは、実施形態例による図3のシステムの動作例を示すフローチャートである。図4Aの例では、複数の動的に変化する作業負荷を伴う1つ以上のアプリケーションの実行のための1つ以上の計算リソース要件の記述が、一般公開サービスに含まれるリソース記述取得モジュールによって得られる(402)。
[0127] 計算リソースへのアクセスは、1つ以上の計算リソース要件を1つ以上のプライベート・クラウドの一時的に利用可能な計算リソースに引き合わせることによって、一般公開サービスの外部にあり離れている1つ以上のプライベート・クラウドから日和見的に得られる(404)。
[0128] 1つ以上のアプリケーションの実行のホスティング活動の制御は、1つ以上のプライベート・クラウドの一時的に利用可能な計算リソースの内引き合わされたものを使用して開始される(406)。
[0129] 例えば、図4Bの例において、1つ以上のプライベート・クラウドから受け取ったリソース利用可能性記述に基づいて、1つ以上のプライベート・クラウドにおいて利用可能である予備容量計算リソースを判定することができる(408)。
[0130] 例えば、1つ以上の計算リソース要件の少なくとも一部を満たす1つ以上のプライベート・クラウドの一時的に利用可能な計算リソースを選択することによって、計算リソースへのアクセスを日和見的に得ることができる(410)。
[0131] 例えば、1つ以上のプライベート・クラウドにおいて利用可能である予備容量計算リソースは、1つ以上のプライベート・クラウドから受け取ったリソース利用可能性記述に基づいて判定することができる(412)。
[0132] 例えば、1つ以上のプライベート・クラウドにおいて利用可能である予備容量計算リソースの性能判断基準の分析を行うことができる(414)。
[0133] 例えば、1つ以上の計算リソース要件の少なくとも一部を満たし、1つ以上のアプリケーションの実行の最適化性能を提供する1つ以上のプライベート・クラウドの一時的に利用可能な計算リソースを、性能判断基準(416)の分析に基づいて選択することによって、計算リソースへのアクセスを日和見的に得ることができる。
[0134] 例えば、1つ以上のプライベート・クラウドにおいて利用可能である予備容量計算リソースは、選択された一時的に利用可能な計算リソースを含む1つ以上のプライベート・クラウドの初期応答までの時間、選択された一時的に利用可能な計算リソースを含む1つ以上のプライベート・クラウドの複数の要求にわたる平均応答時間、または選択された一時的に利用可能な計算リソース(418)を含む1つ以上のプライベート・クラウドの信頼性の内1つ以上を含むことができる。
[0135] 例えば、1つ以上のプライベート・クラウドにおいて利用可能である予備容量計算リソースは、図4Cの例では、1つ以上のプライベート・クラウドから受け取ったリソース利用可能性記述に基づいて判定することができる(420)。
[0136] 例えば、少なくとも1つ以上のプライベート・クラウドにおいて利用可能である予備容量計算リソースのコスト判断基準の分析と、予備容量計算リソースにアクセスするための帯域幅のコストの分析とを行うことができる(422)。
[0137] 例えば、計算リソースへのアクセスは、1つ以上の計算リソース要件の少なくとも一部を満たし、1つ以上のアプリケーションの最適化された実行コストを提供する1つ以上のプライベート・クラウドの一時的に利用可能な計算リソースを、コスト判断基準の分析に基づいて選択することによって、日和見的に得ることができる(424)。
[0138] 例えば、一般公開サービスの外部にあり離れている1つ以上のプライベート・クラウドからの計算リソースへのアクセスは、多重判断基準最適化技法、自動競売、または規則に基づく割り当て技法の内1つ以上に基づいて、1つ以上の計算リソース要件を1つ以上のプライベート・クラウドの一時的に利用可能な計算リソースに引き合わせることによって、日和見的に得ることができる(426)。
[0139] 例えば、一般公開サービスの外部にあり離れている複数のプライベート・クラウドからの計算リソースへのアクセスは、整数線形プログラミング技法、分岐限定発見的問題解決法、または貪欲最適化技法の内1つ以上に基づいて、1つ以上の計算リソース要件を複数のプライベート・クラウドの一時的に利用可能な計算リソースに引き合わせることによって、日和見的に得ることができる(428)。
[0140] 例えば、1つ以上のプライベート・クラウドにおいて動的に入手可能である予備容量計算リソースは、図4Dの例では、時の経過と共に1つ以上のプライベート・クラウドから動的に受け取るリソース利用可能性記述に基づいて判定することができる(430)。
[0141] 例えば、計算リソースが時の経過と共に利用可能になるに連れて、1つ以上の計算リソース要件の少なくとも一部を満たす1つ以上のプライベート・クラウドの一時的に利用可能な計算リソースを動的に選択することによって、計算リソースへのアクセスを動的に得ることができ、以前の計算リソースが利用不可能になった場合、以前にアクセスが得られた以前の計算リソースを動的に解放することができる(432)。
[0142] 例えば、時の経過と共に1つ以上のプライベート・クラウドから動的に受け取ったリソース利用可能性記述は、所定の時間間隔の時間スロットに対するリソース利用可能性を含むことができる(434)。
[0143] 例えば、時の経過と共に計算リソースが利用可能になるに連れて、リソース利用可能性記述に基づいて、1つ以上の計算リソース要件の少なくとも一部を満たす1つ以上のプライベート・クラウドの一時的に利用可能な計算リソースを動的に選択することによって、計算リソースへのアクセスを動的に得ることができ、以前の計算リソースが利用不可能になった場合、以前にアクセスが得られた以前の計算リソースを動的に解放することができる(436)。
[0144] 例えば、図4Eの例では、時間スロットの各々に対して、1つ以上のプライベート・クラウドにおいて動的に利用可能である予備容量計算リソースのリストを、時の経過と共に1つ以上のプライベート・クラウドから動的に受け取られたリソース利用可能性記述に基づいて決定することができる(438)。
[0145] 例えば、時間スロットの各々に対して、1つ以上のアプリケーションの実行のための1つ以上の計算リソース要件のそれぞれの記述に関連付けられたコスト制約および性能制約のリストを決定することができる(440)。
[0146] 例えば、計算リソースへの割り当てアクセスを、時の経過と共に動的に最適化することができる(442)。例えば、動的最適化技法、ビタビ・アルゴリズム技法、または多スロット最適化技法の内1つ以上に基づいて、時の経過と共に計算リソースへのアクセスを動的に最適化することができる(444)。例えば、リソース・アロケータ114は、動的最適化技法、ビタビ・アルゴリズム技法、または多スロット最適化技法の内1つ以上に基づいて、計算リソースへの割り当てアクセスを経時的に動的に最適化することができる。
[0147] 図5Aおよび図5Bは、実施形態例による図3のシステムの動作例を示すフローチャートである。図5Aの例では、一般公開サービスに関連付けられたアプリケーションの実行のための1つ以上の計算リソース要件の記述を得る(502)。1つ以上の計算リソース要件を、プライベート計算デバイス・ソースから一時的に利用可能になるプライベート計算リソースを有する少なくとも1つのプライベート計算デバイスを含む計算エンティティの利用可能な計算リソースにインテリジェントに引き合わせることによって、一般公開サービスの外部にあり離れている少なくとも1つのプライベート計算デバイスを含む計算エンティティからの計算リソースへのアクセスが日和見的に得られる(504)。インテリジェントな引き合わせは、性能最適化分析を使用して行われる。
[0148] 例えば、計算エンティティは少なくとも1つのプライベート・クラウドにおいて少なくとも1つのプライベート計算デバイスを含むことができる(506)。
[0149] 例えば、計算エンティティは、少なくとも1つのプライベート・クラウドおよび少なくとも1つのパブリック・クラウドにおいて複数の計算デバイスを含むことができる(508)。
[0150] 例えば、性能最適化分析は、図5Bに示すように、得られた1つ以上の計算リソース要件の記述と、計算エンティティの利用可能な計算リソースの記述とに基づく、一般公開サービスに関連付けられたアプリケーションの実行性能の予測分析を含むことができる(510)。
[0151] 例えば、性能最適化分析は、計算スループット、ネットワーク・レイテンシ、ネットワーク帯域幅、または記憶性能の内1つ以上の分析を含む(512)。
[0152] 図6は、実施形態例による図3のシステムの動作例を示すフローチャートである。図6の例では、アプリケーションの実行のための1つ以上の計算リソース要件の記述が得られる(602)。
[0153] 1つ以上の計算リソース要件の記述は、一般公開サービスのリソース・アロケータに提供される。リソース・アロケータは、1つ以上の計算リソース要件を少なくとも1つのプライベート計算デバイスを含む計算エンティティの利用可能な計算リソースにインテリジェントに引き合わせることによって、一般公開サービスの外部にあり離れている少なくとも1つのプライベート計算デバイスを含む計算エンティティからの計算リソースへのアクセスを日和見的に得るように構成される(604)。
[0154] アプリケーションの実行のホスティング活動の制御は、計算エンティティの利用可能な計算リソースの内引き合わされたものを使用して、1人以上のユーザに対して開始される(606)。
[0155] 例えば、一般公開サービスに関連付けられたパブリック・クラウドにおいて、リソース・アロケータをホストすることができる(608)。
[0156] 例えば、一般公開サービスをホストするパブリック・クラウドとは別であるサーバにおいて、リソース・アロケータをホストすることもできる(610)。
[0157] 例えば、一般公開サービスに関連付けられたパブリック・クラウド、および複数のプライベート・クラウドにおいてホストされる分散型リソース割り当てアプリケーションとして、リソース・アロケータはホストすることができる(612)。
IV.ある種の実施形態の態様
[0158] 本明細書において論じた特徴は、本明細書における論述の主旨から逸脱することなく、データ処理の技術分野における当業者によって理解することができる多くの異なる方法で実現できる実施形態例として提供される。このような特徴は、実施形態の特徴の例に過ぎないと解釈されるのであり、これらの詳細な説明だけに限定するように解釈されることは意図していない。
[0159] データ処理装置は、実行可能命令を格納するコンピュータ読み取り可能記憶媒体を含む。実行可能命令は、データ処理装置に、一般公開サービスに関連付けられたアプリケーションの実行のための1つ以上の計算リソース要件の記述を得させ、1つ以上の計算リソース要件を、プライベート計算デバイス・ソースから一時的に利用可能になるプライベート計算リソースを有する少なくとも1つのプライベート計算デバイスを含む計算エンティティの利用可能な計算リソースとインテリジェントに引き合わせることによって、一般公開サービスの外部にあり離れている少なくとも1つのプライベート計算デバイスを含む計算エンティティからの計算リソースへのアクセスを日和見的に得させ、インテリジェントな引き合わせが、性能最適化分析を使用して行われる。
[0160] 性能最適化分析は、得られた1つ以上の計算リソース要件の記述と、計算エンティティの利用可能な計算リソースの記述とに基づいて、一般公開サービスに関連付けられたアプリケーションの実行性能の予測分析を含む。
[0161] 性能最適化分析は、計算スループット、ネットワーク・レイテンシ、ネットワーク帯域幅、または記憶性能の内1つ以上の分析を含む。
[0162] 計算エンティティは、少なくとも1つのプライベート・クラウドにおける少なくとも1つのプライベート計算デバイスを含む。
[0163] 計算エンティティは、少なくとも1つのプライベート・クラウドおよび少なくとも1つのパブリック・クラウドにおける複数の計算デバイスを含む。
[0164] システムは、少なくとも1つのプロセッサと、少なくとも1つのプロセッサによって実行可能な実行可能コードを格納する少なくとも1つのコンピュータ読み取り可能記憶媒体とを含み、実行可能コードが日和見的リソース・マネージャを含む。日和見的リソース・マネージャは、複数の動的に変化する作業負荷を伴う1つ以上のアプリケーションの実行のための1つ以上の計算リソース要件の記述を得るリソース記述取得モジュールであって、一般公開サービスに含まれる、リソース記述取得モジュールを含む。日和見的リソース・マネージャは、1つ以上の計算リソース要件を1つ以上のプライベート・クラウドの一時的に利用可能な計算リソースに引き合わせることによって、少なくとも1つのデバイス・プロセッサを介して、一般公開サービスの外部にあり離れている1つ以上のプライベート・クラウドからの計算リソースへのアクセスを日和見的に得るリソース・アロケータを含む。日和見的リソース・マネージャは、1つ以上のプライベート・クラウドの一時的に利用可能な計算リソースの内引き合わされたものを使用して、1つ以上のアプリケーションの実行のホスティング活動の制御を開始するパブリック・ホスト・モジュールを含む。
[0165] このシステムは、更に、1つ以上のプライベート・クラウドから受け取ったリソース利用可能性記述に基づいて、1つ以上のプライベート・クラウドにおいて利用可能である予備容量計算リソースを判定するリソース発見モジュールを含み、リソース・アロケータは、1つ以上の計算リソース要件の少なくとも一部を満たす1つ以上のプライベート・クラウドの一時的に利用可能な計算リソースを選択することによって、計算リソースへのアクセスを日和見的に得る。
[0166] このシステムは、更に、1つ以上のプライベート・クラウドから受け取ったリソース利用可能性記述に基づいて、1つ以上のプライベート・クラウドにおいて利用可能である予備容量計算リソースを判定するリソース発見モジュールを含む。このシステムは、更に、1つ以上のプライベート・クラウドにおいて利用可能である予備容量計算リソースの性能判断基準の分析を行う性能分析モジュールを含み、リソース・アロケータは、1つ以上の計算リソース要件の少なくとも一部を満たし、1つ以上のアプリケーションの最適化された実行性能を提供する1つ以上のプライベート・クラウドの一時的に利用可能な計算リソースを、性能判断基準の分析に基づいて選択することによって、計算リソースへのアクセスを日和見的に得る。
[0167] 1つ以上のプライベート・クラウドにおいて利用可能である予備容量計算リソースの性能判断基準は、選択された一時的に利用可能な計算リソースを含む1つ以上のプライベート・クラウドの初期応答までの時間、選択された一時的に利用可能な計算リソースを含む1つ以上のプライベート・クラウドの複数の要求にわたる平均応答時間、または選択された一時的に利用可能な計算リソースを含む1つ以上のプライベート・クラウドの信頼性の内1つ以上を含む。
[0168] このシステムは、更に、1つ以上のプライベート・クラウドから受け取ったリソース利用可能性記述に基づいて、1つ以上のプライベート・クラウドにおいて利用可能である予備容量計算リソースを判定するリソース発見モジュールと、1つ以上のプライベート・クラウドにおいて利用可能である予備容量計算リソースのコスト判断基準の分析と、予備容量計算リソースにアクセスするための帯域幅のコストの分析とを行うコスト分析モジュールとを含み、リソース・アロケータは、1つ以上の計算リソース要件の少なくとも一部を満たし、1つ以上のアプリケーションの最適化された実行コストを提供する1つ以上のプライベート・クラウドの一時的に利用可能な計算リソースを、コスト判断基準の分析に基づいて選択することによって、計算リソースへのアクセスを日和見的に得る。
[0169] リソース・アロケータは、1つ以上の計算リソース要件を1つ以上のプライベート・クラウドの一時的に利用可能な計算リソースに、多重判断基準最適化技法、自動競売、または規則に基づく割り当て技法の内1つ以上に基づいて、引き合わせることによって、一般公開サービスの外部にあり離れている1つ以上のプライベート・クラウドからの計算リソースへのアクセスを日和見的に得る。
[0170] リソース・アロケータは、整数線形プログラミング技法、分岐限定発見的問題解決法、または貪欲最適化技法の内1つ以上に基づいて、1つ以上の計算リソース要件を複数のプライベート・クラウドの一時的に利用可能な計算リソースに引き合わせることによって、一般公開サービスの外部にあり離れている複数のプライベート・クラウドからの計算リースへのアクセスを日和見的に得る。
[0171] このシステムは、更に、時の経過と共に1つ以上のプライベート・クラウドから動的に受け取ったリソース利用可能性記述に基づいて、1つ以上のプライベート・クラウドにおいて動的に利用可能である予備容量計算リソースを判定するリソース発見モジュールを含み、リソース・アロケータは、計算リソースが時の経過と共に利用可能になるに連れて、リソース利用可能性記述に基づいて、1つ以上の計算リソース要件の少なくとも一部を満たす1つ以上のプライベート・クラウドの一時的に利用可能な計算リソースを動的に選択することによって、計算リソースへのアクセスを動的に得て、以前の計算リソースが利用不可能になった場合、アクセスが以前に得られた以前の計算リソースを動的に解放する。
[0172] 時の経過と共に1つ以上のプライベート・クラウドから動的に受け取ったリソース利用可能性記述は、所定の時間間隔の時間スロットに対するリソース利用可能性を含み、リソース・アロケータは、計算リソースが時の経過と共に利用可能になるに連れて、1つ以上の計算リソース要件の少なくとも一部を満たす1つ以上のプライベート・クラウドの一時的に利用可能な計算リソースを動的に選択することによって、計算リソースへのアクセスを動的に得て、以前の計算リソースが利用不可能になった場合、アクセスが以前に得られた以前の計算リソースを動的に解放する。
[0173] リソース発見モジュールは、時間スロットの各々に対して、時の経過と共に1つ以上のプライベート・クラウドから動的に受け取ったリソース利用可能性記述に基づいて、1つ以上のプライベート・クラウドにおいて動的に利用可能になる予備容量計算リソースのリストを決定する。リソース記述取得モジュールは、時間スロットの各々に対して、1つ以上のアプリケーションの実行のための1つ以上の計算リソース要件のそれぞれの記述に関連付けられたコスト制約および性能制約のリストを決定する。リソース・アロケータは、計算リソースへの割り当てアクセスを時の経過と共に動的に最適化する。
[0174] リソース・アロケータは、動的最適化技法、ビタビ・アルゴリズム技法、または多スロット最適化技法の内1つ以上に基づいて、時の経過と共に計算リソースへの割り当てアクセスを動的に最適化する。
[0175] 実行可能コードを格納するコンピュータ読み取り可能記憶媒体を含むコンピュータ・プログラム製品であって、実行可能コードが、少なくとも1つのデータ処理装置に、アプリケーションの実行のための1つ以上の計算リソース要件の記述を得させ、一般公開サービスのリソース・アロケータに、1つ以上の計算リソース要件の記述を提供させ、リソース・アロケータが、1つ以上の計算リソース要件を、少なくとも1つのプライベート計算デバイスを含む計算エンティティの利用可能な計算リソースにインテリジェントに引き合わせることによって、一般公開サービスの外部にあり離れている少なくとも1つのプライベート計算デバイスを含む計算エンティティからの計算リソースへのアクセスを日和見的に得るように構成され、計算エンティティの利用可能な計算リソースの内引き合わされたものを使用して、1人以上のユーザに対してアプリケーションの実行のホスティング活動の制御を開始させる。
[0176] リソース・アロケータは、一般公開サービスに関連付けられたパブリック・クラウドにおいてホストされる。
[0177] リソース・アロケータは、一般公開サービスをホストするパブリック・クラウドとは別のサーバにおいてホストされる。
[0178] リソース・アロケータは、一般公開サービスに関連付けられたパブリック・クラウド、および複数のプライベート・クラウドにおいてホストされる分散型リソース割り当てアプリケーションとしてホストされる。
[0179] 方法は、複数の動的に変化する作業負荷を伴う1つ以上のアプリケーションの実行のための1つ以上の計算リソースの記述を、一般公開サービスに含まれるリソース記述取得モジュールによって得るステップを含む。
[0180] この方法は、1つ以上の計算リソース要件を、1つ以上のプライベート・クラウドの一時的に利用可能な計算リソースに引き合わせることによって、一般公開サービスの外部にあり離れている1つ以上のプライベート・クラウドからの計算リソースへのアクセスを日和見的に得るステップを含む。
[0181] この方法は、1つ以上のプライベート・クラウドの一時的に利用可能な計算リソースの内引き合わされたものを使用して、1つ以上のアプリケーションの実行のホスティング活動の制御を開始するステップを含む。
[0182] この方法は、1つ以上のプライベート・クラウドから受け取ったリソース利用可能性記述に基づいて、1つ以上のプライベート・クラウドにおいて利用可能である予備容量計算リソースを判定するステップを含む。
[0183] この方法は、1つ以上の計算リソース要件の少なくとも一部を満たす1つ以上のプライベート・クラウドの一時的に利用可能な計算リソースを選択することによって、計算リソースへのアクセスを日和見的に得るステップを含む。
[0184] この方法は、1つ以上のプライベート・クラウドから受け取ったリソース利用可能性記述に基づいて、1つ以上のプライベート・クラウドにおいて利用可能である予備容量計算リソースを判定するステップを含む。
[0185] この方法は、1つ以上のプライベート・クラウドにおいて利用可能である予備容量計算リソースの性能判断基準の分析を行うステップを含む。
[0186] この方法は、1つ以上の計算リソース要件の少なくとも一部を満たし、1つ以上のアプリケーションの最適化された実行性能を提供する1つ以上のプライベート・クラウドの一時的に利用可能な計算リソースを、性能判断基準の分析に基づいて選択することによって、計算リソースへのアクセスを日和見的に得るステップを含む。
[0187] 1つ以上のプライベート・クラウドにおいて利用可能である予備容量計算リソースの性能判断基準は、選択された一時的に利用可能な計算リソースを含む1つ以上のプライベート・クラウドの初期応答までの時間、選択された一時的に利用可能な計算リソースを含む1つ以上のプライベート・クラウドの複数の要求にわたる平均応答時間、または選択された一時的に利用可能な計算リソースを含む1つ以上のプライベート・クラウドの信頼性の内1つ以上を含む。
[0188] この方法は、1つ以上のプライベート・クラウドから受け取ったリソース利用可能性記述に基づいて、1つ以上のプライベート・クラウドにおいて利用可能である予備容量計算リソースを判定するステップを含む。
[0189] この方法は、1つ以上のプライベート・クラウドにおいて利用可能である予備容量計算リソースのコスト判断基準の分析と、予備容量計算リソースにアクセスするための帯域幅のコストの分析とを行うステップを含む。
[0190] この方法は、1つ以上の計算リソース要件の少なくとも一部を満たし、1つ以上のアプリケーションの最適コストを提供する1つ以上のプライベート・クラウドの一時的に利用可能な計算リソースを、コスト判断基準の分析に基づいて選択することによって、計算リソースへのアクセスを日和見的に得るステップを含む。
[0191] この方法は、1つ以上の計算リソース要件を1つ以上のプライベート・クラウドの一時的に利用可能な計算リソースに、多重判断基準最適化技法、自動競売、または規則に基づく割り当て技法の内1つ以上に基づいて引き合わせることによって、一般公開サービスの外部にあり離れている1つ以上のプライベート・クラウドからの計算リソースへのアクセスを日和見的に得るステップを含む。
[0192] この方法は、整数線形プログラミング技法、分岐限定発見的問題解決法、または貪欲最適化技法の内1つ以上に基づいて、1つ以上の計算リソース要件を複数のプライベート・クラウドの一時的に利用可能な計算リソースに引き合わせることによって、一般公開サービスの外部にあり離れている複数のプライベート・クラウドからの計算リースへのアクセスを日和見的に得るステップを含む。
[0193] この方法は、時の経過と共に1つ以上のプライベート・クラウドから動的に受け取ったリソース利用可能性記述に基づいて、1つ以上のプライベート・クラウドにおいて動的に利用可能である予備容量計算リソースを判定するステップを含む。
[0194] この方法は、計算リソースが時の経過と共に利用可能になるに連れて、1つ以上の計算リソース要件の少なくとも一部を満たす1つ以上のプライベート・クラウドの一時的に利用可能な計算リソースを動的に選択することによって、 計算リソースへのアクセスを動的に得て、以前の計算リソースが利用不可能になった場合、以前にアクセスが得られた以前の計算リソースを動的に解放するステップを含む。
[0195] 時の経過と共に1つ以上のプライベート・クラウドから動的に受け取ったリソース利用可能性記述は、所定の時間間隔の時間スロットに対するリソース利用可能性を含む。
[0196] この方法は、時の経過と共に計算リソースが利用可能になるに連れて、リソース利用可能性記述に基づいて、1つ以上の計算リソース要件の少なくとも一部を満たす1つ以上のプライベート・クラウドの一時的に利用可能な計算リソースを動的に選択することによって、計算リソースへのアクセスを動的に得て、以前の計算リソースが利用不可能になった場合、以前にアクセスが得られた以前の計算リソースを動的に解放するステップを含む。
[0197] この方法は、時間スロットの各々に対して、時の経過と共に1つ以上のプライベート・クラウドから動的に受け取ったリソース利用可能性記述に基づいて、1つ以上のプライベート・クラウドにおいて動的に利用可能になる予備容量計算リソースのリストを決定するステップを含む。
[0198] この方法は、時間スロットの各々に対して、1つ以上のアプリケーションの実行のための1つ以上の計算リソース要件のそれぞれの記述に関連付けられたコスト制約および性能制約のリストを決定するステップを含む。
[0199] この方法は、計算リソースへのアクセスを時の経過と共に動的に最適化するステップを含む。
[0200] この方法は、動的最適化技法、ビタビ・アルゴリズム技法、または多スロット最適化技法の内1つ以上に基づいて、計算リソースへのアクセスを時の経過と共に動的に最適化するステップを含む。
[0201] この方法は、動的最適化技法、ビタビ・アルゴリズム技法、または多スロット最適化技法の内1つ以上に基づいて、リソース・アロケータによって、計算リソースへの割り当てアクセスを経時的に動的に最適化するステップを含む。
[0202] この方法は、一般公開サービスに関連付けられたアプリケーションの実行のための1つ以上の計算リソース要件の記述を得るステップを含む。
[0203] この方法は、1つ以上の計算リソース要件を、プライベート計算デバイス・ソースから一時的に利用可能になるプライベート計算リソースを有する少なくとも1つのプライベート計算デバイスを含む計算エンティティの利用可能な計算リソースとインテリジェントに引き合わせることによって、一般公開サービスの外部にあり離れている少なくとも1つのプライベート計算デバイスを含む計算エンティティからの計算リソースへのアクセスを日和見的に得るステップを含み、インテリジェントな引き合わせは、性能最適化分析を使用して行われる。
[0204] 性能最適化分析は、得られた1つ以上の計算リソース要件の記述と、計算エンティティの利用可能な計算リソースの記述とに基づいて、一般公開サービスに関連付けられたアプリケーションの実行性能の予測分析を含む。
[0205] 性能最適化分析は、計算スループット、ネットワーク・レイテンシ、ネットワーク帯域幅、または記憶性能の内1つ以上の分析を含む。
[0206] 計算エンティティは、少なくとも1つのプライベート・クラウドにおける少なくとも1つのプライベート計算デバイスを含む。
[0207] 計算エンティティは、少なくとも1つのプライベート・クラウドおよび少なくとも1つのパブリック・クラウドにおける複数の計算デバイスを含む。
[0208] 方法は、アプリケーションの実行のための1つ以上の計算リソース要件の記述を得るステップを含む。
[0209] この方法は、一般公開サービスのリソース・アロケータに、1つ以上の計算リソース要件の記述を提供するステップを含む。リソース・アロケータは、1つ以上の計算リソース要件を、少なくとも1つのプライベート計算デバイスを含む計算エンティティの利用可能な計算リソースにインテリジェントに引き合わせることによって、一般公開サービスの外部にあり離れている少なくとも1つのプライベート計算デバイスを含む計算エンティティからの計算リソースへのアクセスを日和見的に得るように構成される。
[0210] この方法は、計算エンティティの利用可能な計算リソースの内引き合わされたものを使用して、1人以上のユーザに対してアプリケーションの実行のホスティング活動の制御を開始するステップを含む。
[0211] リソース・アロケータは、一般公開サービスに関連付けられたパブリック・クラウドにおいてホストされる。
[0212] リソース・アロケータは、一般公開サービスをホストするパブリック・クラウドとは別のサーバにおいてホストされる。
[0213] リソース・アロケータは、一般公開サービスに関連付けられたパブリック・クラウド、および複数のプライベート・クラウドにおいてホストされる分散型リソース割り当てアプリケーションとしてホストされる。
[0214] データ処理の技術分野における当業者であれば、本明細書における論述の主旨から逸脱することなく、プライベート・クラウドの外部にあるソースからアプリケーションを実行するために、プライベート・クラウド(またはプライベート・デバイス)上で利用可能である計算リソースをインテリジェントに割り当てる多くの方法があり得ることは理解されよう。
[0215] 顧客のプライバシーおよび機密性は、データ処理環境において長年にわたって継続的な考慮事項である。したがって、このような計算リソースを得るための技法例は、このような技法に関連付けられた関連アプリケーションまたはサービスによって、1つ以上の加入契約(例えば、「サービス条件」(TOS)契約)を介して許可を得たユーザによって供給されるユーザ入力および/またはデータを使用するとよい。例えば、ユーザは、彼らの入力/データが送信されデバイス上に格納されたことに対して同意を与えるのでもよいが、各当事者がどのように送信および/または格納が行われるのか、そして格納が行われる場合はどのレベルまたは期間の格納が維持されてもよいか制御できることが明示的に(例えば、ユーザが受け入れた同意によって)示されてもよい。更に、ユーザによって使用されるデバイスを識別するために使用することができる識別子が、例えば、実際のユーザ情報をハッシュすることによって、難読化されてもよい。尚、任意の関連する管轄のプライバシー法および規制にしたがって、任意のユーザ入力/データが得られればよいことは理解されよう。
[0216] 更に、パブリック・サービスの顧客のプライベート情報を、プライベート・クラウドの供与側所有者(donating owner)の所有者から保護できることを確保するために、仮想化および暗号化を使用することもできる。
[0217] 本明細書において説明した種々の技法の実施態様は、ディジタル電子回路において、またはコンピュータ・ハードウェア、ファームウェア、ソフトウェアで、あるいはこれらの組み合わせで(例えば、種々の機能を実行するために命令を実行するように構成された装置)実現することができる。
[0218] 実施態様は、信号(例えば、純粋な伝搬信号のような純粋な信号)内に具体化されたコンピュータ・プログラムとして実現することができる。このような実施態様は、本明細書では、「コンピュータ読み取り可能送信媒体」によって実現されると言われ、以下で論ずるような「コンピュータ読み取り可能記憶媒体」や「コンピュータ読み取り可能記憶デバイス」としては本明細書では認められない。
[0219] 代わりに、実施態様は、計算装置(例えば、データ処理装置)、例えば、プログラマブル・プロセッサ、特殊目的プロセッサまたはデバイス、コンピュータ、あるいは複数のコンピュータによる実行のため、または動作を制御するために、機械使用可能記憶デバイスまたは機械読み取り可能記憶デバイス(例えば、ユニバーサル・シリアル・バス(USB)記憶デバイス、テープ、ハード・ディスク・ドライブ、コンパクト・ディスク、ディジタル・ビデオ・ディスク(DVD)等のような磁気またはディジタル媒体)に具体化されたコンピュータ・プログラムによって実現することもできる。このような実施態様を本明細書では「コンピュータ読み取り可能記憶媒体」または「コンピュータ読み取り可能記憶デバイス」を介して実現されると表すことができ、したがって、純粋な伝搬信号のような純粋に信号である実施態様とは異なる(つまり、先に論じたように「コンピュータ読み取り可能送信媒体」としては認められない)。つまり、本明細書において使用する場合、「コンピュータ読み取り可能記憶媒体」または「コンピュータ読み取り可能記憶デバイス」に言及するときは、純粋な信号(例えば、伝搬信号)自体としての実施態様を特定的に除外する。
[0220] 以上で説明したコンピュータ・プログラム(1つまたは複数)のようなコンピュータ・プログラムは、コンパイル、インタープリタ、または機械語を含む任意の形態のプログラミング言語で書くことができ、単体プログラムとして、あるいはモジュール、コンポーネント、サブルーチン、または計算環境における使用に適した他のユニットとして、を含む任意の形態で展開することができる。コンピュータ・プログラムは、機械使用可能記憶デバイスまたは機械読み取り可能記憶デバイス(例えば、コンピュータ読み取り可能媒体)上に実行可能コード(例えば、実行可能命令)として、実体的に具体化することができる。以上で論じた技法を実現することができるコンピュータ・プログラムは、1つの場所における1つのコンピュータ上で、あるいは複数の場所にまたがって分散され通信ネットワークによって相互接続された複数のコンピュータ上で実行するように配備することができる。
[0221] 方法ステップは、入力データ上で動作し出力を生成することによって、機能を実行するためのコンピュータ・プログラムを実行する1つ以上のプログラマブル・プロセッサによって実行することができる。1つ以上のプログラマブル・プロセッサは、並列に命令を実行することができ、および/または分散処理のために分散構成に配置することができる。また、本明細書において論じた機能例は、1つ以上のハードウェア・ロジック・コンポーネントによって実行することができ、装置は、少なくとも部分的に1つ以上のハードウェア・ロジック・コンポーネントとして実現することができる。例えば、そして限定ではなく、使用することができる例示的なタイプのハードウェア・ロジック・コンポーネントには、フィールド・プログラマブル・ゲート・アレイ(FPGA)、特定用途集積回路(ASIC)、特定アプリケーション標準製品(ASSP)、特定アプリケーション標準製品(ASSP)、システム・オン・チップ・システム(SOC)、複合プログラマブル・ロジック・デバイス(CPLD)等を含むことができる。
[0222] コンピュータ・プログラムの実行に適したプロセッサには、一例として、汎用および特殊目的双方のマイクロプロセッサ、ならびに任意の種類のディジタル・コンピュータの任意の1つ以上のプロセッサが含まれる。一般に、プロセッサは命令およびデータをリード・オンリ・メモリまたはランダム・アクセス・メモリあるいは双方から受け取る。コンピュータのエレメントは、命令を実行するための少なくとも1つのプロセッサと、命令およびデータを格納するための1つ以上のメモリ・デバイスとを含むことができる。一般に、コンピュータは、データを格納するための1つ以上の大容量記憶デバイス、例えば、磁気ディスク、光磁気ディスク、または光ディスクを含むことができ、あるいは大容量記憶デバイスからデータを受け取るためまたは大容量記憶デバイスにデータを転送するため、あるいは双方のために動作可能に結合することができる。コンピュータ・プログラム命令およびデータを具体化するのに適した情報担体には、あらゆる形態の不揮発性メモリを含み、一例として、半導体メモリ・デバイス、例えば、EPROM、EEPROM、およびフラッシュ・メモリ・デバイス、磁気ディスク、例えば、内部ハード・ディスクまたはリムーバブル・ディスク、光磁気ディスク、ならびにCD ROMおよびDVD−ROMディスクが含まれる。プロセッサおよびメモリは、特殊目的論理回路によって補足されても、またはこれに組み込まれてもよい。
[0223] ユーザとの対話処理に備えるために、実施態様は、情報をユーザに表示するためのディスプレイ・デバイス、例えば、陰極線管(CRT)、液晶ディスプレイ(LCD)、またはプラズマ・モニター、キーボード、およびユーザが入力をコンピュータに供給することができるポインティング・デバイス、例えば、マウスまたはトラックボールを有するコンピュータ上に実装することができる。他の種類のデバイスも同様に、ユーザとの対話処理に備えるために使用することができ、例えば、ユーザに供給されるフィードバックは、任意の形態の感知フィードバック、例えば、視覚フィードバック、聴覚フィードバック、または触覚フィードバックとすることができる。例えば、出力は、任意の形態の感知出力によって供給することができ、視覚出力(例えば、みてわかるジェスチャ、ビデオ出力)、聴覚出力(例えば、音声、デバイスの音)、触覚出力(例えば、接触、デバイスの移動)、温度、臭い等が含まれる(がこれらに限定されるのではない)。
[0224] 更に、ユーザからの入力も、音響、音声、または触覚入力を含む任意の形態で受け取ることができる。例えば、入力は、任意の形態の感知入力によってユーザから受け取ることができ、視覚入力(例えば、ジェスチャ、ビデオ入力)、聴覚入力(例えば、音声、デバイスの音)、触覚入力(例えば、接触、デバイスの移動)、温度、臭い等が含まれる(がこれらに限定されるのではない)。
[0225] 更に、ユーザとインターフェースするために自然ユーザ・インターフェース(NUI)も使用することができる。このコンテキストでは、「NUI」とは、マウス、キーボード、リモコン等のような入力デバイスによって強いられる人工的な制約から解放されて、「自然な」様態でユーザがデバイスと対話処理することを可能にする任意のインターフェース技術を指すことができる。
[0226] NUI技法の例には、音声認識、タッチおよびスタイラス認識、画面上および画面付近の双方におけるジェスチャの認識、エア・ジェスチャ(air gesture)、頭部および視線追尾、音声(voice)および発話(speech)、視覚、タッチ、ホバリング(hover)、ジェスチャ、ならびに機械インテリジェンスを拠り所とするものを含むことができる。NUI技術の他の例には、タッチ感応ディスプレイ、音声および発話認識、意思および目標理解システム、深度カメラ(立体視または飛行時間カメラ・システム、赤外線カメラ・システム、RGB(赤、緑、青)カメラ・システム、およびこれらの組み合わせ)を使用する動きジェスチャ検出、加速度計/ジャイロスコープ、顔認識、3Dディスプレイ、頭部、視線、および凝視追跡を使用する動きジェスチャ検出、没入型拡張現実および仮想現実システムが含まれ、これらは全て更に自然なインターフェースを提供することができ、更に電界検知電極(例えば、脳波検査法(EEG)および関係する技法)を使用して脳活動を検知する技術が含まれるが、これらに限定されるのではない。
[0227] 実施態様は、例えば、データ・サーバのようなバック・エンド・コンポーネントを含む計算システム、ミドルウェア・コンポーネント、例えば、アプリケーション・サーバを含む計算システム、あるいはフロント・エンド・コンポーネント、例えば、グラフィカル・ユーザ・インターフェースまたはウェブ・ブラウザを有し、これを通じてユーザが実施態様と対話処理することができるクライアント・コンピュータを含む計算システム、あるいはこのようなバック・エンド、ミドルウェア、またはフロント・エンド・コンポーネントの任意の組み合わせにおいて実現することができる。コンポーネントは、ディジタル・データ通信の任意の形態または媒体、例えば、通信ネットワークによって相互接続することができる。通信ネットワークの例には、ローカル・エリア・ネットワーク(LAN)およびワイド・エリア・ネットワーク(WAN)、例えば、インターネットが含まれる。
[0228] 以上、構造的特徴および/または方法論的アクトに特定的な文言で主題について説明したが、添付する特許請求の範囲において定められる主題は、以上で説明した特定的な特徴やアクトには必ずしも限定されないことは理解されよう。逆に、以上で説明した特定的な特徴およびアクトは、特許請求の範囲を実現する形態例として開示したまでである。本明細書において説明したように、説明した実施態様のある種の特徴が例示されたが、多くの変更、交換、変化、および等価物が今では当業者には想起されよう。したがって、添付する請求項は、実施形態の範囲に該当する全てのこのような変更および変化をその範囲に含むことを意図していることは理解されよう。