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