JP5746351B2 - コンピューティング能力に対する要求を動的に管理するための方法およびシステム - Google Patents

コンピューティング能力に対する要求を動的に管理するための方法およびシステム Download PDF

Info

Publication number
JP5746351B2
JP5746351B2 JP2013530148A JP2013530148A JP5746351B2 JP 5746351 B2 JP5746351 B2 JP 5746351B2 JP 2013530148 A JP2013530148 A JP 2013530148A JP 2013530148 A JP2013530148 A JP 2013530148A JP 5746351 B2 JP5746351 B2 JP 5746351B2
Authority
JP
Japan
Prior art keywords
user
request
computing
program
computing nodes
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2013530148A
Other languages
English (en)
Other versions
JP2013543171A (ja
Inventor
エイ. アチソン リー
エイ. アチソン リー
エイ. ホワイト ブライアン
エイ. ホワイト ブライアン
ディー. コーエン ピーター
ディー. コーエン ピーター
エヌ. デサンティス ピーター
エヌ. デサンティス ピーター
ガーバー ミハイル
ガーバー ミハイル
Original Assignee
アマゾン テクノロジーズ インコーポレーテッド
アマゾン テクノロジーズ インコーポレーテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by アマゾン テクノロジーズ インコーポレーテッド, アマゾン テクノロジーズ インコーポレーテッド filed Critical アマゾン テクノロジーズ インコーポレーテッド
Publication of JP2013543171A publication Critical patent/JP2013543171A/ja
Application granted granted Critical
Publication of JP5746351B2 publication Critical patent/JP5746351B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1031Controlling of the operation of servers by a load balancer, e.g. adding or removing servers that serve requests
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5072Grid computing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Computer And Data Communications (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Description

関連出願の相互参照
本願は、2010年9月21日に出願された米国非仮出願第12/887,241号の利益を主張し、その開示が参照により全体として本明細書に組み込まれる。
企業および組織は、それらの業務をサポートするために多数のコンピューティングシステムを相互接続するコンピュータネットワークを運用する。コンピューティングシステムは、単一の地理的位置に(例えば、ローカルネットワークの一部として)配置できるか、または(例えば、1つまたは複数のプライベートまたはパブリック中間ネットワークを介して接続された)複数の別個の地理的位置に配置できる。データセンターは、例えば、単一の組織によって運用されるプライベートデータセンター、およびコンピューティング資源を顧客に提供するために第三者によって運営されるパブリックデータセンターなど、かなりの数の相互接続されたコンピューティングシステムを収容し得る。パブリックおよびプライベートのデータセンターは、ネットワークアクセス、電力、ハードウェア資源(例えば、コンピューティングおよび記憶装置)、ならびにそのデータセンター、組織によって、または他の顧客によって所有されるハードウェアのための安全な設置施設を提供し得る。
データセンター資源の増大した利用を容易にするため、仮想化技術は、単一の物理コンピューティングマシンが、接続されたコンピュータユーザーに対して、単独のコンピュータマシンとして見えて動作する、仮想マシンの1つまたは複数のインスタンスをホストできるようにし得る。仮想化を用いると、単一の物理コンピューティング装置は、仮想マシンを、動的な方法で、作成、維持、または削除することができる。その結果として、ユーザーがデータセンターからコンピュータ資源を要求し、「必要に応じて」ベースで、または少なくとも「要求に応じて」ベースで、様々な数の仮想マシン資源が提供されることが可能になる。
データセンターの規模および範囲が増大してきたのにつれて、データセンターの物理および仮想コンピューティング資源の提供、管理、および運営が次第に複雑になってきた。
全ての図にわたって、参照番号は、参照される要素間の対応を示すために再使用され得る。図は、本明細書に記載する実施形態例を図解するために提供され、本開示の範囲を制限することは意図していない。
複数のユーザーコンピューティングシステムに通信ネットワークを介してコンピューティング資源を提供できるプログラム実行サービスの一例を概略的に示すネットワーク図である。 プログラム実行サービスのユーザーによるコンピューティング資源に対する要求を管理するように構成された対話型要求マネージャのコンポーネントを示す概略ブロック図である。 ユーザーコンピューティングシステムとプログラム実行サービスの対話型要求マネージャとの間の相互作用例を概略的に示すネットワーク図である。 対話型要求マネージャのコンポーネントによって実装される対話型要求マネージャルーチンを示す流れ図である。 対話型要求マネージャのコンポーネントによって実装される対話型要求マネージャルーチンを示す流れ図である。 対話型要求マネージャの実施形態が、それによって、割り当てられたコンピューティング資源の設定を変更するためにユーザーコンピューティングシステムと通信できる、ルーチンの一例を概略的に示す流れ図である。 対話型要求マネージャの実施形態が、それによって、ユーザーによる選択のために複数の仮想化環境を提供するために、ユーザーコンピューティングシステムと通信できる、ルーチンの一例を概略的に示す流れ図である。
コンピューティング資源のプロバイダ(プログラム実行サービス)からのコンピューティング能力に対する要求を動的に管理するためのシステムおよび方法の実施形態を説明する。実例として、コンピューティング資源には、プログラム実行能力、データ記憶または管理能力、データベース管理能力、ネットワーク帯域幅、アプリケーションモニタリングまたはロギング、問題に対処するために是正処置をとる能力などを含み得る。いくつかの実施形態では、ユーザーは、現在または将来の利用期間中に、ユーザーのためにコンピュータ資源を管理できる仮想化環境が生成されることを要求できる。例えば、ユーザーは、ユーザーのカスタムソフトウェアアプリケーションを実行でき、かつ、利用期間中、そのユーザーのために、適切なプログラム実行能力、データ記憶容量、データベース管理オプション、および/もしくはネットワーク帯域幅を管理または確保できる仮想化環境が生成されることを要求できる。コンピューティング資源プロバイダは、プロバイダのどのコンピュータ資源が、ユーザーの要求を満たすために利用可能にできるかを決定でき、要求された利用期間中、それらのコンピュータ資源をユーザーに割り当てることができる。
ユーザーの要求の利用期間および/または他のパラメータは、コンピュータ資源に対するユーザーの必要性を満たすために、高度な柔軟性をもって選択され得る。ユーザーの要求は、ユーザーによる好み、制約、および/または要件を指定するために、1つまたは複数のユーザー選択可能パラメータを含み得る。例えば、ユーザーの要求は、利用期間中に特定のプログラム(または複数のプログラム)が実行されること、利用期間中にあるタイプまたは地理的分散のコンピュータ資源が使用されること、利用期間が所望の開始日、終了日、および/または継続期間を有すること、などを指定できる。いくつかの実施形態では、コンピューティング資源プロバイダは、ユーザーによって提出できる要求パラメータの範囲にほとんどまたは全く制限を加えない。
可能な一例として、ユーザーは、特定のプログラムがコンピュータ資源のセット上で実行されることを要求することが可能であり得、それには、1つまたは複数の地理的位置におけるコンピュータ資源を含み得る。ユーザーは、プログラムおよびプログラム実行パラメータを仮想化環境生成のためにプログラム実行サービスに伝達するために、アプリケーションプログラミングインタフェース(API)または他のタイプのコンピューティングインタフェースを使用することが可能であり得る。例えば、ユーザーは、Java WARファイルなどのウェブアプリケーションアーカイブを用いて、ソフトウェアアプリケーションをアップロードし得る。プログラム実行サービスは、次いで、自動的に仮想化環境(例えば、「アプリケーションコンテナ」)を構成し得、それは、ユーザーのプログラムをプログラム実行サービス上で実行するための1つまたは複数のインフラストラクチャサービスと共に、ユーザーのプログラムのためのアプリケーションソフトウェアスタックを含む実行時環境であり得る。アプリケーションコンテナは、ユーザー選択可能なオペレーティングシステム(例えば、Linux、Windowsなど)、アプリケーションサーバー(例えば、Apache Tomcat)、システムまたはアプリケーション構成などを含むことができる。仮想化環境は、特定のURLでホストされるように構成できる。インフラストラクチャサービスは、要求されたコンピューティング資源にわたって作業負荷を分散するための負荷分散装置、負荷または需要の変動に応じてコンピューティング資源をスケーリングするための負荷スケーラ(load scaler)、ユーザーがプログラムの実行をモニタリングできるようにするモニタリングインタフェース、データ記憶資源(例えば、拡張可能なボリュームブロックストレージ)などを含むことができるが、それらに限定されない。いくつかの実施形態では、ユーザーは、コンテナ内に含めることができる1つもしくは複数のプログラムまたはサービスを選択することが可能であり得る。例えば、ユーザーは、複数のデータベースモデル(例えば、リレーショナルデータベース、SQLデータベース、Oracleデータベースなど)から選択することが可能であり得る。いくつかの実施形態では、インフラストラクチャサービスは、複数のユーザー間で共有されている資源ではなく、むしろ、ユーザーに対してカスタマイズできる。例えば、いくつかのかかる実施形態では、負荷分散装置は、プログラム実行サービスのいく人かのユーザー間で共有または分散されているのではなく、ユーザーのアプリケーション用に個別にカスタマイズできる。
仮想化環境のある実施形態の考えられる利点は、コンピューティングシステムが、ユーザーがそのように望めば、ユーザーがある程度の柔軟性を有し、アプリケーションコンテナの内容について制御できるようにすることである。例えば、ある場合には、ユーザーは、ユーザーのプログラムのみを提供し得、コンピューティングシステムが、仮想化環境によって使用される全ての残りのインフラストラクチャの配備を自動的に管理し得る。他の場合には、ユーザーは、仮想化環境に含まれる1つまたは複数のインフラストラクチャサービスを選択および/または構成し得る。ある場合には、ユーザーは、ユーザーのアプリケーションに対して所望の配備トポロジを達成するために、様々な地理的地域におけるコンピューティング資源を選択し得る。配備トポロジは、任意の所望の方法で構成または選択され得る。例えば、配備トポロジは、アプリケーションの性能を向上させる(例えば、ネットワーク待ち時間を減少させる)ために、ユーザーの顧客の位置または地域に基づき得る。別の例として、配備トポロジは、例えば、特定の地域または区域における(例えば、ある地域または区域における悪天候による)コンピューティング資源の障害に対するアプリケーションの障害許容性(resiliency)を向上させることにより、ユーザーのアプリケーションの頑強性を向上させるために、1つもしくは複数の地域または区域におけるコンピューティング資源を使用するように構成され得る。また、ある実施形態では、ユーザーは、プログラムの実行中にコンピューティング資源へのアクセスを保持し、ユーザーは、実行中にコンピューティング資源の一部または全部を制御し得る。例えば、いくつかのかかる実施形態では、ユーザーがそのように望めば、ユーザーは、ユーザーのアプリケーションを仮想化環境の外に移動させることを選択し得る。
ある料金ベースの実施態様では、コンピュータ資源のプロバイダは、ユーザーに要求に対する予約料金を請求し得る(例えば、要求が許可された場合)か、および/または利用期間中に利用可能なコンピュータ資源の利用の提供に対する利用料金を請求し得る。様々なタイプまたは段階の料金取り決めが可能である。例えば、コンピュータ資源は、ユーザーにより即時利用のために要求され得る(「オンデマンド資源」)。いくつかのかかる場合には、ユーザーは、予約料金を支払うのではなく、もっと高い利用料金を支払い得るだろう。別の例として、ユーザーは、将来の利用期間中の保証された可用性に対してコンピュータ資源を予約し得る(「予約された資源」)。ユーザーは、予約をすることに対して予約料金を請求され得、また、利用期間中に実際に使用されたコンピュータ資源の量に基づいて利用料金も請求され得る。いくつかのかかる場合には、予約された資源に対する利用料金は、オンデマンドの資源に対する利用料金から割り引かれ得るか、かつ/または予約料金は、要求が行われた時の近くではなく、むしろ利用期間に近い時に請求され得る。別の例では、コンピュータ資源プロバイダは、ユーザーが未使用のコンピュータ資源(「スポット資源」)に入札できるようにし得る。いくつかのかかる場合には、コンピュータ資源プロバイダは、資源に対する供給と需要に基づいて変わるスポット価格を設定し得、その資源は、スポット価格に合致するか、またはそれを上回る付け値のユーザーに対して利用可能になり得る。
ここで、本開示の様々な態様を、ある例および実施形態に関して説明するが、それらは、本開示を制限するのではなく、例証することを意図する。
図1は、コンピューティング資源を、通信ネットワーク108を経由して複数のユーザーコンピューティングシステム104に提供できるプログラム実行サービス100の一例を概略的に示すネットワーク図である。例えば、プログラム実行サービス100は、ユーザーからの、プログラムまたはプログラムのセットをユーザーの代わりに実行する要求を管理できる。少なくともいくつかのユーザーコンピューティングシステム104は、プログラム実行サービス100から離れたところにあり得る。この例では、ユーザーは、通信ネットワーク108を介して、プログラム実行サービス100にアクセスするためにコンピューティングシステム104を利用できる。ネットワーク108は、例えば、インターネットなどの、おそらくは様々な別個の関係者によって運用されている、リンクされたネットワークの公的にアクセス可能なネットワークであり得る。他の実施形態では、ネットワーク108は、例えば、特権のないユーザーは、完全にまたは部分的にアクセスできない企業または大学のネットワークなど、プライベートネットワークであり得る。さらに他の実施形態では、ネットワーク108は、インターネットへのおよび/またはインターネットからのアクセスを有する、1つまたは複数のプライベートネットワークであり得る。
プログラム実行サービス100は、複数のユーザーに対するプログラム実行を管理するための様々な機能性を提供する。図1に示す例では、プログラム実行サービス100は、ユーザーの代わりにプログラムを実行できる複数のコンピューティングノード112を含む。コンピューティングノード112は、1つもしくは複数の物理コンピューティングシステム116および/または1つもしくは複数の物理コンピューティングシステム上でホストされる1つもしくは複数の仮想マシン120を含み得る。例えば、ホストコンピューティングシステムは、複数の仮想マシン120を提供し得、それらの仮想マシンを管理するために仮想マシン(「VM」)マネージャ124(例えば、ハイパーバイザまたは他の仮想マシンモニター)を含み得る。
図1に示す例では、コンピューティングノード112の各々は、1つまたは複数のプログラムの実行に利用可能なある量のコンピューティング資源を有する。各コンピューティングノード112は、特定量のプログラム実行能力を提供するように構成され得、それは、例えば、処理能力(例えば、処理装置の数および/またはサイズ)、メモリ容量、記憶容量、ネットワーク帯域幅容量、非ネットワーク通信帯域幅などのうちの1つまたは複数の組合せによって測定され得る。いくつかの実施形態では、プログラム実行サービス100は、事前に構成されたコンピューティングノード112を提供し得、その各事前に構成されたコンピューティングノードは、ユーザーの代わりにプログラムを実行するために利用可能な同様および/または均等量の資源を有する。他の実施形態では、プログラム実行サービス100は、ユーザーが、ユーザーの代わりにプログラムを実行するために選択し得る、様々な異なるコンピューティングノード112の選択を提供し得る。さらに別の実施形態では、プログラム実行サービス100は、ユーザーおよびユーザーのプログラム実行に固有である様々なコンピューティングノードを生成し得る。いくつかのかかる実施形態では、コンピューティングノード112は、変化する量および/またはタイプのコンピューティング資源(例えば、処理装置のサイズ、速度および/またはタイプ;処理装置の数;メモリおよび/または記憶容量;32ビットまたは64ビット、オペレーティングシステムなどのプラットフォーム構成)を有し得る。
プログラム実行サービス100は、データ、プログラム、および他のユーザー情報の大容量記憶を提供する記憶ノード134へのアクセスを有するユーザーコンピューティングシステム104を提供し得る。記憶ノード134は、例えば、ハードディスクドライブ、光ディスクドライブなどの不揮発性メモリ装置など、任意のタイプの永続的なデータ記憶を含み得る。図1に示す例では、コンピューティングノード112は、ネットワーク128を経由して記憶ノード134にアクセスできる。ネットワーク128は、例えば、スイッチ、エッジルーター、コアルーターなどの、複数のネットワーク装置(図示せず)を含み得る。ネットワーク128は、図1に示すネットワーク108とは異なるネットワークであり得るが、その必要はない。
プログラム実行サービス100のユーザーは、プログラム実行サービスの好ましいおよび/または必要な資源(例えば、プログラム実行能力および/または記憶資源)を要求するために、対話型要求マネージャ130を通じて、プログラム実行サービス100と対話できる。対話型要求マネージャ130は、ネットワーク128を経由して、コンピューティングノード112および記憶ノード134に接続できる。対話型要求マネージャ130は、資源に対する要求を、ユーザーコンピューティングシステム104からネットワーク108を介して受信できる。ユーザーは、サービス100が、ユーザー(またはそのユーザーによって認可された他のユーザー)の代わりに、プログラム(または複数のプログラム)を実行するための1つまたは複数のコンピューティングノードを提供することを、対話型要求マネージャ130を通じて要求し得る。いくつかの実施形態では、ユーザーは、対話型要求マネージャ130を通じて、サービス100が、ユーザーの代わりにプログラム(または複数のプログラム)を実行するために必要であり得るコンピューティング資源を管理および確保できる1つまたは複数のコンピューティングノードを生成することを要求し得る。様々な実施形態では、コンピューティング資源は、ユーザーの代わりにプログラム実行の要求時に、および/または、例えば、ユーザーがプログラム実行サービス100のサービスを利用するために登録および/または申込みを行う時など、一度もしくは複数の他の時に指定され得る。いくつかの実施形態では、対話型要求マネージャ130は、一人または複数のユーザーに申込みおよび/または登録サービスを提供し得、ユーザーが、ユーザーの代わりに実行する1つまたは複数のプログラムに関連する情報(例えば、プログラム、ソースコード、1つまたは複数のプログラムのアドレス可能位置など)、アカウント情報(例えば、ユーザー名、課金情報など)、利用期間などを指定し得るようにする。いくつかの実施形態では、ユーザーがサービスの申込みおよび/または登録のために対話型要求マネージャ130と対話した後、ユーザーは、そのユーザーに関連し、ユーザーの代わりでのプログラム実行とともに使用される、1つまたは複数の要求識別子(例えば、キー、トークン、ユーザー名、パスワードなど)が発行され得る。他の実施形態では、対話型要求マネージャ130以外のモジュールが、プログラム実行サービス100の申込みおよび/または登録サービスに関連する様々な操作を実行するために提供され得る。
いくつかの実施形態では、対話型要求マネージャ130は、1つもしくは複数の物理または仮想コンピューティングシステムによって実行されるか、または具現化される。例えば、いくつかの実施形態では、CPU、入出力コンポーネント、記憶装置、およびメモリを含むコンポーネントを有するサーバーコンピューティングシステムが、対話型要求マネージャ130を実行するために使用され得る。入出力コンポーネントは、ディスプレイ、ネットワーク128へのネットワーク接続、コンピュータ可読媒体ドライブ、および他の入出力装置(例えば、キーボード、マウス、スピーカなど)を含む。対話型要求マネージャ130の実施形態は、1つまたは複数の実行可能プログラムモジュールとしてサーバーのメモリに格納でき、対話型要求マネージャ130は、ネットワーク128を介して、コンピューティングノード112(例えば、物理コンピューティングシステム116および/またはVM 120)と対話できる。対話型要求マネージャ130は、プログラム実行サービス100のコンピューティング資源に対するユーザーからの要求を、ネットワーク108を介して受信できる。
図2Aは、ユーザーの代わりにプログラムを実行するための要求を管理するように構成された対話型要求マネージャ130の実施形態の例示的なコンポーネントの概略ブロック図である。この実施形態では、対話型要求マネージャは、資源生成モジュール204、資源スケジューリングモジュール208、モニタリングおよび報告モジュール212、ならびに課金モジュール216を含む。
資源生成モジュール204は、例えば、利用期間中にユーザーのプログラム(または複数のプログラム)実行のために利用可能なコンピューティング資源を管理および確保するために、1つまたは複数のコンピューティングノードを生成する要求など、プログラム実行サービス100のコンピューティング資源に対するユーザーからの要求を受信する。ユーザーは、プログラム実行コンピューティングノードが直ちに利用可能になることを要求し得るか、プログラム実行コンピューティングノードが将来生成されることを要求し得るか、または、プログラム実行コンピューティングノードが他の基準に基づいて生成されることを要求し得る。プログラム実行コンピューティングノードに対する要求は、資源生成モジュール204によって様々な方法で受信され得る。例えば、要求は、直接ユーザーから(例えば、対話型コンソールまたはプログラム実行サービスによって提供される他のGUIを用いて)、それ自身の他のプログラムまたは他のインスタンスの実行を自動的に開始するユーザーの実行プログラムから、プログラミングツール(例えば、コマンド行ツール、統合開発環境(例えば、Eclipse)など)から、プログラム実行サービスによって提供されるアプリケーションプログラミングインタフェース(API)(例えば、ウェブサービスを利用するAPI)を通じて対話型要求マネージャと対話するプログラムなどから、受信できる。
コンピューティングノードに対する要求は、コンピューティングノードの数および/またはタイプ、使用するコンピューティングノードの最小および/または最大数、その間そのコンピューティングノードの可用性が保証される利用期間、要求の満了時間などを含み得る。要求は、利用期間中、あるプログラム(または複数のプログラム)のみが、生成されたコンピューティングノード上で実行されることを指定し得る。コンピューティングノードに対する要求は、他のタイプの好み、要件、および/または制約(例えば、記憶容量またはネットワーク帯域幅の量、ノードに対する地理的および/または論理的位置、終了基準など)を含み得る。
いくつかの実施形態では、要求は、ユーザーのプログラム(または複数のプログラム)を含み、資源生成モジュール204は、ユーザーのプログラム(または複数のプログラム)がプログラム実行サービス100によって実行できるように、インフラストラクチャ資源を自動的に提供する。例えば、資源生成モジュール204は、ユーザーのプログラムを実行するための1つまたは複数のインフラストラクチャサービスと共に、ユーザーのプログラムのためのアプリケーションソフトウェアスタックを含む実行時環境であり得る、仮想化環境を自動的に構成し得る。仮想化環境は、ユーザー選択可能なオペレーティングシステム(例えば、Linux、Windowsなど)、アプリケーションサーバー(例えば、Apache Tomcat)、およびシステムまたはアプリケーション構成など含むことができる。仮想化環境は、特定のURLでホストされるように構成できる。インフラストラクチャサービスは、要求されたコンピューティング資源にわたって作業負荷(例えば、アプリケーショントラフィック)を分散するための負荷分散装置、負荷または需要の変動に応じてコンピューティング資源をスケーリングするための負荷スケーラ、ユーザーがプログラムの実行をモニタリングできるようにするモニタリングインタフェース、データ記憶資源(例えば、拡張可能なボリュームブロックストレージ)などを含むことができるが、それらに限定されない。いくつかの実施形態では、ユーザーは、仮想化環境内に含めることができる、プログラム実行サービス100によって提供される1つもしくは複数のプログラムまたはサービスを選択することが可能であり得る。例えば、ユーザーは、複数のデータベースモデル(例えば、リレーショナルデータベース、SQLデータベース、Oracleデータベースなど)から選択することが可能であり得る。いくつかの実施形態では、インフラストラクチャサービスは、プログラム実行サービス100の複数のユーザー間で共有されている資源ではなく、むしろ、ユーザーに対してカスタマイズできる。例えば、いくつかのかかる実施形態では、負荷分散装置は、プログラム実行サービス100のいく人かのユーザー間で共有または分散されているのではなく、ユーザーのアプリケーション用に個別にカスタマイズできる。いくつかの実施形態では、仮想化環境は、ユーザーのアプリケーションが、他のアプリケーションと通信するために、プロセススレッドをスポーン(spawn)できるか、または任意の適切なポート(例えば、ポート80以外のポート)をオープンできるように構成できる。例えば、仮想化環境は、ハイパーテキスト転送プロトコルセキュア(HTTPS)ポートをサポートし得る。
対話型要求マネージャ130のある実施形態の考えられる利点は、ユーザーがカスタムアプリケーションをプログラム実行サービス100に単にアップロードし得ると、対話型要求マネージャ130が次いで、ユーザーのカスタムアプリケーションをプログラム実行サービス100上で実行するために使用される資源およびアプリケーションスタックを含む仮想化環境を生成できるということである。ユーザープログラムの実行を可能にするために必要な対話型要求マネージャ130とのユーザーの相互作用の量は、比較的わずかな相互作用(例えば、Java WARファイルを使用したプログラムのアップロードにすぎない)から比較的高度な相互作用(例えば、ユーザーが、実質的に仮想化環境の全ての態様をカスタマイズし得る)まで及び得る。その結果、対話型要求マネージャ130の実施形態は、仮想化環境に対して比較的高度な柔軟性およびカスタマイズ可能性を提供し得る。いくつかの実施形態では、プログラム実行サービス100(または他のプロバイダ)は、サービス100のユーザーによる使用のために、1つまたは複数の標準または既定の仮想化環境を利用可能にする。
プログラム実行能力に対する要求は、その間、コンピューティング資源がそのユーザーに対して利用可能になる利用期間を指定し得る。いくつかの実施態様では、プログラム実行サービス100は、利用期間中、要求されたコンピューティング資源が利用可能であるという保証をユーザーに対して提供し得る。利用期間は、様々な実施形態において様々な方法で指定され得る。例えば、利用期間は、初期時間から始まって満了時間に終了する、指定された期間(例えば、時間、日、週、月、年などの数)を示し得る。初期時間および/または満了時間は、時刻(例えば、7:00a.m.)および日付(例えば、2010年1月23日)を含み得る。初期時間は、例えば、1時間もしくは数時間後、1日もしくは数日後、1週間もしくは数週間後、または1年もしくは数年後など、ある将来の時間にできる。ある場合には、将来の利用期間は、例えば、少なくとも1時間後、1日後、1週間後、1か月後、またはそれ以上など、少なくともある期間だけ、要求(または要求の確認)の時間より後に開始され得る。
対話型要求マネージャ130のいくつかの実施態様では、コンピューティングノードに対する要求が対話型要求マネージャ130によって受信された時と、要求が許可される時か、または確認がユーザーに提供される時との間に遅延期間が生じ得る。例えば、遅延期間は、対話型要求マネージャ130またはプログラム実行サービス100によって実行される様々な処理操作、管理操作、会計操作などに起因して生じ得る。いくつかのかかる実施態様では、要求された利用期間は、かかる遅延期間を考慮に入れた後(または実質的に後)に生じる期間を指す。例えば、ある実施態様では、遅延期間は、数秒、数分、または数時間であり得る。あるかかる実施態様では、要求された将来の利用期間の初期時間は、かかる遅延期間を超える将来の時間であり得る。対話型要求マネージャ130のある他の実施態様における初期時間は、ユーザーの要求が提出されるか、プログラム実行サービス100によって受信されるか、または許可される時であり得る。
ある場合には、要求は、利用期間がユーザーによって明確に終了されるまで満了しない(例えば、設定された満了時間がない)ことを指定し得る。継続期間は、1時間〜1週間、1週間〜1か月、1か月または数か月、1年以上、または何らかの他の期間の範囲であり得る。いくつかの実施形態では、利用期間は、ユーザーに、コンピュータ資源のスケジューリングにおける高度な柔軟性を提供するために、前述の(または他の)要因の組合せを含み得る。
ある場合には、プログラムサービス100が、ユーザーの要求を満足するコンピューティングノードを生成した後、ユーザーは、プログラムのまたは1つもしくは複数のコンピューティングノードの設定に対して1つまたは複数の変更を行うことができる。例えば、ユーザーは、1つもしくは複数のコンピューティングノードに関連する記憶装置またはネットワーク帯域幅の量もしくはタイプを変更し得、1つもしくは複数のコンピューティングノードに関連する利用期間または終了基準を変更し得、プログラムの実行を終了し得る。ユーザーは、本明細書で説明するように、1つまたは複数の変更を様々な方法で要求できる。例えば、ユーザーは、GUI、コマンド行ツール、統合開発環境(例えば、Eclipse)、API呼出しなどを通じて、1つまたは複数の変更を要求できる。
コンピューティングノードに対する要求が資源生成モジュール204によって受信された後、資源スケジューリングモジュール208が、要求を実現するためにコンピューティングノードのスケジューリングおよび割当てを行うことができる。例えば、プログラム実行能力に対する要求を受信した後、資源スケジューリングモジュール208は、プログラム実行のために使用する1つまたは複数のコンピューティングノード112を決定し得る。いくつかの実施形態では、使用するコンピューティングノード112の決定は、たとえ、その要求が将来の可用性に対するものであっても、要求時に実行される。他の実施形態では、コンピューティングノードの決定は、例えば、決定が、その後利用可能になる情報に基づくことができるように、利用期間の開始前など、後まで延期される。
資源スケジューリングモジュール208は、要求された利用期間中、ユーザーによる利用のために、コンピューティングノード112から1つまたは複数のコンピューティングノードを割り当て得る。いくつかの実施形態では、1つまたは複数の特定のコンピューティングノード112(例えば、1つまたは複数の特定の物理コンピューティングノード116および/または仮想コンピューティングノード120)が、全利用期間にわたって、ユーザー(または認可されたユーザー)による優先利用のために割り当てられる。
他の実施形態では、利用期間中、特定のコンピューティングノードを特定のユーザーに割り当てるよりむしろ、資源スケジューリングモジュール208は、コンピューティングノードプールからコンピューティングノードを割り当て得る。コンピューティングノードプールは、ユーザーまたは認可されたユーザーによるプログラム実行に対する要求を満足するのに十分な資源を備えた適切な量のコンピューティングノードを含み得る。いくつかのかかる実施形態では、要求が、1つまたは複数のプログラムを実行するために利用期間中に受信された後、その1つまたは複数のプログラムを実行するのに十分な適切な量のコンピューティングノードがコンピューティングノードプールから選択され得、プログラム実行が選択されたノード上で開始される。選択された量のコンピューティングノードが、要求を実行するためにもはや使用されなくなった後(例えば、要求された実行の終了および/または完了の後)、それらのコンピューティングノードは、利用期間中、そのユーザーまたは他の認可されたユーザーによる使用のために、コンピューティングノードプールに戻され得る。いくつかの実施態様では、コンピューティングノードプールのノードは、ユーザー(または認可されたユーザー)による専用、排他的、または優先的利用のために割り当てられる。いくつかのかかる実施形態では、ユーザー(または認可されたユーザー)によって使用されていないコンピューティングノードプールのノードは、プログラム実行のために他のユーザーに割り当てられ得、そして、かかるノードが要求された能力を実現するためにユーザー(または認可されたユーザー)によって必要とされる場合、他のユーザーのプログラムは終了できる。
利用期間中、ユーザー(または認可されたユーザー)は、割り当てられたコンピューティングノード上で1つまたは複数のプログラムを実行するための要求を、対話型要求マネージャ130に提出し得る。プログラム実行に対する要求は、実行するプログラムの実行可能なコピーまたは他のコピー、実行のために以前に登録されたか、または他の方法で提供されたプログラムの指示、および同時に実行するべきプログラムのインスタンス数(例えば、インスタンスの単一の所望の数として、所望のインスタンスの最小および最大数として、などと表される)など、1つまたは複数のプログラム実行の開始において使用される様々な情報を含み得る。要求は、プログラム実行のためのコンピューティングノードの数および/またはタイプ、使用するコンピューティングノードの最小および/または最大数、要求の満了時間、好ましい実行時間および/または実行の期間などを指定し得る。要求は、1つまたは複数のプログラムの実行に対する、他のタイプの好みおよび/または要件を含み得る(例えば、資源割当て、実行の地理的および/または論理的位置、他のプログラムおよび/またはコンピューティングノードに対する実行の近接、タイミングに関する基準、終了基準など)。
資源スケジューリングモジュール208は、各プログラムインスタンスの実行用にどの割り当てられたコンピューティングノードを使用するのかを、要求内に指定されたか、またはプログラムおよび/もしくは関連するユーザーに対して他の方法で指定された、任意の好み、制約、および/もしくは要件に基づくことを含めて、様々な方法で決定し得る。例えば、基準が、プログラムインスタンスの実行のために好ましいか、かつ/または必要な資源(例えば、メモリおよび/または記憶装置;CPUのタイプ、サイクルまたは他の性能測定基準;ネットワーク容量;プラットフォームのタイプなど)に対して決定される場合、プログラムインスタンスの実行に適切なコンピューティングノードの決定は、少なくとも部分的には、コンピューティングノードが、それらの資源基準を満足するために利用可能な十分な資源を有するか否かに基づき得る。
利用期間中、ユーザーまたは認可されたユーザーの代わりに、割り当てられたコンピューティングノード上でプログラムを実行するために資源生成モジュール204によって受信された要求は、1つまたは複数の割り当てられたコンピューティングノード上でのプログラム実行の開始という結果になり得る。ある場合には、割り当てられたコンピューティングノードの全てが使用中である(例えば、プログラムを実行している)ように、利用期間中、プログラム実行に対する十分な要求が受信され得る。利用期間中に受信されたプログラム実行に対する追加の要求は、拒絶され得るかまたは、1つもしくは複数のノードが利用可能になるまで、資源スケジューリングモジュール208によって保持もしくはキュー登録され得る。
いくつかの実施形態では、資源スケジューリングモジュール208は、例えば、利用期間または要求に関連する他の制約の実施、要求を実現するためのコンピューティング資源の解放、要求および/または要求しているユーザーの認可および/または認証などの、要求の実現に関する1つまたは複数の管理操作を実行し得る。例えば、ある場合には、ユーザーからの要求は、利用期間中、あるユーザー(または複数のユーザー)のみが、割り当てられたコンピューティングノードへのアクセスを許可されることを指定し得る。ある場合には、ユーザーからの要求は、利用期間中、1つまたは複数の指定されたプログラムのみが、割り当てられたノード上で実行されることを指定し得る。他の制約には、プログラム実行の継続期間に関する制約、プログラム実行中に被る料金に関する制約などを含むことができる。1つもしくは複数の前述した制約(または他の制約)の組合せがユーザーによって指定され得、割り当てられたコンピューティングノードへのアクセスを許可する前に、対話型要求マネージャ130によってチェックされ得る。
いくつかの実施態様では、利用期間が満了した後、資源スケジューリングモジュール208は、割り当てられたコンピューティングノード(例えば、専用コンピューティングノードまたはコンピューティングノードプール内のノード)を他の人によって使用するために解放する。いくつかのかかる実施態様では、利用期間の満了時に実行されているプログラムは終了される。他の実施態様では、かかる実行中のプログラムは、終了されず、もっと高い優先度のユーザー要求がそのコンピューティングノードにアクセスするまで、実行を継続することが許可される。
図2Aに示す実施形態では、モニタリングおよび報告モジュール212は、利用期間中、割り当てられたコンピューティングノードの使用をモニタリングおよび追跡し、利用に関する情報および統計値をユーザーに報告する。例えば、モニタリングおよび報告モジュール212は、割り当てられたコンピューティングノード上でプログラムを実行するユーザーの利用パターンを追跡し得る。利用パターンには、ノードにアクセスするユーザーの数もしくは識別、プログラム実行の開始/終了時間および継続期間、ならびに/または他のユーザー指定パターンもしくは診断を含むことができる。いくつかのかかる実施形態では、モニタリングおよび報告モジュール212は、例えば、いつおよび/またはどれくらいの期間プログラムがコンピューティングノード上で実行されそうであり得るかの指示、ノードに対する実際または予測された需要などを含む、対話型フィードバックをユーザーに提供し得る。いくつかの実施形態では、モニタリングおよび報告モジュール212は、利用統計値を詳述または要約する報告を生成でき、その報告を電子メールでユーザーに伝達するか、またはウェブサービスを通じて、その報告、利用統計値、もしくは対話型フィードバックへのアクセスを提供できる。
いくつかのプログラム実行サービス100は、料金ベースであり得、サービスが、そのユーザーによる1つまたは複数の料金の支払いと引き換えに、ユーザーの代わりに、プログラムを実行するか、またはコンピューティング資源を割り当てる。いくつかの料金ベースのサービスでは、対話型要求マネージャ130は、随意に、図2Aに概略的に示す課金モジュール216を含み得る。例えば、いくつかの実施形態では、料金は、ユーザーのプログラムを実行するために割り当てられた処理装置の数、メモリ容量、記憶容量、ネットワーク資源容量などのうちの1つまたは複数に基づくように、ユーザーの代わりに1つまたは複数のプログラムを実行するために割り当てられたプログラム実行能力の量および/またはタイプに基づきユーザーに請求され得る。いくつかの実施形態では、料金は、例えば、CPUの機能または性能、プラットフォームのタイプ(例えば、32ビット、64ビットなど)などに基づくように、プログラムを実行するために使用されるコンピューティング資源の様々な特性などの他の要因に基づき得る。いくつかの実施形態では、料金は、サービスの利用あたりの価格、コンピューティングサービスが利用される単位時間あたりの価格、利用した記憶装置あたりの価格、転送入および/または転送出されるデータあたりの価格など、様々な利用要因に基づき、請求され得る。
料金は、プログラム実行能力に対する要求および/またはプログラム実行に関連する様々な特性(例えば、実行の連続性、耐障害性など)に関連してなど、様々な他の要因に基づき得る。少なくともいくつかの実施形態では、プログラム実行サービスは、複数のユーザーの代わりに、プログラムを実行するためのサービスまたは機能の様々な段階、タイプおよび/またはレベルのうちの1つもしくは複数を提供し得、また、いくつかのかかる実施形態では、様々な料金は、様々な段階、タイプおよび/またはレベルのサービスに関連し得る。課金モジュール216は、コンピュータ資源の利用をモニタリングおよび追跡でき、利用に対して当然支払うべき料金を計算できる。
ユーザーは、コンピューティング能力の予約に対して固定料金の支払い(例えば、前払いまたは定期的に請求)を請求され得、また、ある場合には、他の利用料金(例えば、電気、物理ラックスペース、ネットワーク利用など、様々な資源の利用に関連する様々な料金)が請求され得る。一例として、利用期間中にコンピューティング資源の可用性に対する要求を行うユーザーは、要求が行われたか、または要求がプログラム実行サービス100によって許可された場合に、予約料金が請求され得る。予約料金は、例えば、要求された資源の量、利用期間の開始時間および/または継続期間、その要求を実現するためにサービスが、追加のコンピューティングハードウェアを購入する必要があるか否かなど、に基づき得る。例えば、予約料金は、開始時間がずっと先である場合よりも、開始時間が近い将来であれば、高くなり得る。さらに、ユーザー(または認可されたユーザー)は、利用期間中の資源の利用に対して利用料金を請求され得る。例えば、利用期間中に、割り当てられたコンピューティングノード上でプログラムの実行を要求する認可されたユーザーは、例えば、プログラム実行の継続期間、プログラムを実行するために利用する資源のタイプなどに基づき、利用料金を請求され得る。前述したように、様々なタイプまたは段階の料金取り決めが可能である。例えば、即時利用のためにオンデマンド資源を要求するユーザーは、予約料金を請求され得るのではなく、将来の利用期間の資源に対して予約を行うために予約料金を支払うユーザーに請求されるよりも高い利用料金を請求され得る。
課金モジュール216は、利用を追跡し得、適切な料金を計算し得、そして、ユーザーおよび/または認可されたユーザーに請求し得る(または、課金情報を会計モジュールまたはサービスに提供し得る)。ある場合には、ユーザーによる要求は、認可されたユーザーによって負担される利用料金の一部または全部が、認可されたユーザーに対してよりはむしろ、そのユーザーに請求されることを示し得る。いくつかのかかる場合には、課金モジュール216は、ユーザーおよび認可されたユーザー間で料金を適切に分割し得る。
対話型要求マネージャ130は、図2Aに示すものとは異なって構成できる。例えば、図示されたモジュールによって提供される様々な機能は、結合、再配置、追加、または削除できる。いくつかの実施形態では、追加のまたは異なるプロセッサまたはモジュールは、図2Aに示す実施形態例に関して説明した機能の一部または全部を実行し得る。多くの実施態様の変形が可能である。
プログラム実行能力の管理に関して大まかに説明したが、他の実施形態では、対話型要求マネージャ130は、複数のユーザーによる使用のために、追加または代替タイプのコンピューティング関連資源を管理し、これらのコンピューティング関連資源の可用性に対して柔軟な保証を提供するように構成できる。これらの資源は、次のうちの1つまたは複数を含み得る:永続的なデータ記憶能力(例えば、ハードディスクドライブなどの、不揮発性メモリ装置上);一時的なデータ記憶能力(例えば、RAMなどの揮発性メモリ上);メッセージのキュー登録および/または受渡し能力;他のタイプの通信能力(例えば、ネットワークソケット、仮想通信回路など);データベース管理能力;専用帯域幅または他のネットワーク関連資源;非ネットワーク帯域幅;入力装置能力;出力装置能力;CPUサイクルまたは他の命令実行能力など。
図2Bは、ユーザーコンピューティングシステム104aとプログラム実行サービス100の対話型要求マネージャ130との間の相互作用例を概略的に示すネットワーク図である。プログラム実行サービス100は、コンピューティング資源を複数のユーザーコンピューティングシステム104a、104b、・・・、104nに提供できる。この実例では、プログラム実行サービス100は、対話型要求マネージャ130とプログラムで対話するために、ユーザーコンピューティングシステム104a、104b、・・・、104nに対してAPIを提供する。図2Bは、要求APIを利用して、プログラム実行サービス100のコンピューティング資源上でのプログラム実行に対する要求を伝達しているユーザーコンピューティングシステム104aを実例として示す。要求API(1)は、ネットワーク108を介して伝達され、(2)が、プログラム実行サービス100の対話型要求マネージャ130によって受信される。要求APIは、例えば、ユーザーのプログラム(例えば、実行するプログラムの実行可能なコピーもしくは他のコピー、または実行のために以前に登録されたか、もしくは他の方法で提供されたプログラムの指示など)、コンピューティングノードの数および/またはタイプ、使用するコンピューティングノードの最小および/または最大数、コンピューティングノードの可用性がその間要求される(または利用可能であると保証される)利用期間、要求の満了時間などの、ユーザーの要求に関する情報を含むことができる。要求APIは、ユーザーのプログラムまたはコンピューティング資源に対するユーザーの必要性に関連する好み、要件、および/または制約などの、要求に関する他の情報を含むことができる。例えば、要求APIは、利用期間中どのユーザーがコンピューティング資源へのアクセスを許可されるか、利用期間中どのプログラム(または複数のプログラム)が実行できるか、記憶容量またはネットワーク帯域幅の量、ノードに対する地理的および/または論理的位置、終了基準などに関する情報を含むことができる。
図2Bに示す例では、対話型要求マネージャ130は、ネットワーク108を経由して確認API(3)を伝達するが、それは、ユーザーコンピューティングシステム104aによって受信される(4)である。確認APIは、プログラム実行サービス100が、要求を(全部または一部において)要求された利用期間中(または異なる利用期間中)、許可できるか否かに関する情報を含むことができる。確認APIは、ユーザーの要求に関連し、利用期間中に、割り当てられたコンピューティング資源へのアクセスとともに使用される、1つまたは複数の要求識別子(例えば、キー、トークン、ユーザー名、パスワードなど)も含み得る。確認APIは、ユーザーの好み、要件、および/または制約が満足できることを確認する情報などの、他の情報を含むことができる。
図2Bは、APIを介して、プログラム実行サービス100の対話型要求マネージャ130とプログラムで対話するユーザーコンピューティングシステム104aを実例として示す。プログラム実行サービス100は、サービスのコンピューティング資源の可用性に対する要求を、APIを介して、他のユーザーコンピューティングシステム(例えば、ユーザーコンピューティングシステム104b、・・・、104n)から受信でき、APIを介して確認を他のユーザーコンピューティングシステムに伝達できる(かかる要求および確認は、図2Bに示す実例には図示されていない)。対話型要求マネージャ130(または、他の適切なコンポーネント)は、複数のユーザーコンピューティングシステムからの要求をスケジューリングすることができ、様々な要求された利用期間中にコンピューティング資源を割り当てることができる。プログラム実行サービス100とユーザーコンピューティングシステムとの間の他のタイプのプログラムでの対話が(追加または代替として)可能である。例えば、要求は、直接ユーザーから(例えば、対話型コンソールまたはプログラム実行サービスによって提供される他のGUIを用いて)、それ自身の他のプログラムまたは他のインスタンスの実行を自動的に開始するユーザーのプログラム実行から等、受信できる。
ユーザーコンピューティングシステム104aとプログラム実行サービス100の対話型要求マネージャ130との間の対話の追加的な実例として、ユーザーは、対話型要求マネージャ130にユーザープログラム用にアプリケーションコンテナを生成するよう要求し得る。要求API(1)を利用すると、ユーザーはJava WARファイル経由などで、プログラムをアップロードすることができる。ユーザーは、ウェブブラウザ、コマンド行ツール、または統合開発環境を用いてプログラムをアップロードすることができる。プログラムは、ユーザーが所望する任意のアプリケーションであり得る。例えば、プログラムは、ウェブアプリケーションであり得る。対話型要求マネージャ130は、次いで、プログラム(例えば、要求API(2))を受信できる。対話型要求マネージャ30は、次いで、ユーザーのプログラム用にアプリケーションコンテナを自動的に生成することにより、ユーザーの要求を処理し得る。アプリケーションコンテナは、ユーザーのプログラムをスケーラブルで耐障害性にできるようにするため、ユーザーに対する他のサービスを含むことができる。いくつかの実施形態では、対話型要求マネージャ30は、ユーザーからのさらなる入力なしで、アプリケーションコンテナを(インフラストラクチャサービスを含めて)自動的に生成する。他の実施形態では、ユーザーは、アプリケーションコンテナの生成に対してある程度の制御を(例えば、コンテナ内に含まれるインフラストラクチャサービスを選択および/または構成することにより)行使することを選択できる。ユーザーの代わりに、アプリケーションスタック、自動スケーリング、負荷分散、バージョン管理、ストレージ、および/または他のサービスを生成するアプリケーションコンテナが作成できる。例えば、対話型要求マネージャ130は、例えば、ユーザーのプログラムを実行するための負荷分散、モニタリング、および自動スケーリングなどの1つまたは複数のサービスとともに、Linuxオペレーティングシステム、Apache Tomcatサーバー、Oracleリレーショナルデータベースのインスタンスを生成し得る。対話型要求マネージャ130は、次いで、確認API(3)および(4)を介して、アプリケーションコンテナの作成をユーザーに確認する。
確認API(4)の受信後、ユーザーは、プログラムを局所的に変更し得る。例えば、ユーザーは、統合開発環境を利用して、アプリケーションを局所的に更新および/またはテストし得、更新されたプログラムを対話型要求マネージャ130に(例えば、後続の要求API(1)、(2)を介して)再度送信し得る。対話型要求マネージャ130は、前述したように、改訂されたプログラム用のアプリケーションコンテナを(さらなるユーザー入力の有無にかかわらず)自動的に生成または更新し得る。アプリケーションコンテナの生成後、ユーザーは、対話型要求マネージャ130によって生成されたサービスを変更できる。ユーザーは、ユーザープログラムの実行が開始される前または後に、ウェブページ、対話型コンソールなどを用いて、これらの変更を行うことができる。例えば、ユーザーは、LinuxオペレーティングシステムよりむしろWindowsオペレーティングシステムを好み得るか、またはOracleデータベースよりむしろMicrosoft SQLデータベースを好み得、そして、例えば、APIまたは対話型コンソールを用いて、対話型要求マネージャ130がこれらの変更を行うことを要求できる。別の例として、ユーザーは、使用するポートなど、Apache Tomcatサーバーインスタンスに対する設定を変更することを所望し得、例えば、APIまたは対話型コンソールなどを用いて、その変更を要求し得る。さらに別の例として、ユーザーは、負荷分散をオフにすることを好み得、対話型要求マネージャ130に負荷分散を無効にするように要求できる。その結果、ユーザーは、所望する任意の種類の変更を要求することができ、対話型要求マネージャ130は、ユーザーの所望する変更を実施しようと試みることができる。ユーザーは、アプリケーションコンテナを任意の他のユーザーと共有することもできる。ユーザーは、いかなる時でも、ユーザーのプログラムを削除して、アプリケーションコンテナのコンピューティング資源の割当てを解除することも要求し得る。
本明細書で説明したように、アプリケーションコンテナは、ユーザーのプログラムに対するモニタリングサービスも含み得る。モニタリングサービスは、アプリケーションコンテナ内のユーザーのプログラムおよび/またはサービスの性能をモニタリングすることができる。例えば、モニタリングサービスは、負荷分散および/または自動スケーリングサービスの性能をモニタリングし得るか、またはサーバーの性能をモニタリングし得る。モニタリングサービスは、性能の報告をユーザーに提供し得る。モニタリングサービスは、ユーザーのプログラムの実行中に何か問題が生じた場合に、是正処置をとることもできる。例えば、モニタリングサービスが、ユーザーのプログラムが応答していない(例えば、1つまたは複数のコンピューティングノードが故障している)ことを検出すると、モニタリングサービスは、1つまたは複数のコンピューティングノードを再起動できるか、かつ/または故障したノードの役目を引き継ぐために追加のコンピューティングノードを要求できる。別の例として、ユーザーのアプリケーションに対する需要が増加して、ユーザープログラムの性能に影響を及ぼすリスクがあるようになると、モニタリングサービスは、ユーザープログラムの代わりに追加のコンピューティング資源を割り当てることができ、かつ/またはユーザーにその割当てを通知できる。ユーザーは、対話型要求マネージャ130に対して、どのようにまたはいつ通知するかを指定できる。例えば、ユーザーは、APIまたは対話型コンソールを用いて、何かエラーが生じると、対話型要求マネージャ130が電子メールメッセージをユーザーに伝達することを指定し得る。別の例として、ユーザーは、対話型要求マネージャ130が、任意のエラーについて電子メールメッセージをユーザーに伝達し、何か是正処置をとる前に、ユーザーから承認を受信することを指定し得る。ユーザーは通知設定を任意の所望する方法で構成できる。前述は、ユーザーと対話型要求マネージャ130の様々な実施形態との間の対話のタイプの実例として意図しており、制限することを意図するものでない。
図3Aおよび図3Bは、対話型要求マネージャルーチン300の実施形態例を概略的に示す流れ図である。いくつかの実施態様では、ルーチン300は、図1および図2に関連して説明したプログラム実行サービス100の対話型要求マネージャ130の実施形態によって提供できる。ルーチン例300は、例えば、利用期間中にプログラム実行サービスの1つまたは複数のコンピューティングノードを実行するためのプログラムなど、プログラム実行能力に対する要求を行う第1のユーザー(例えば、図3Aを参照)、および利用期間中にプログラム実行能力に対する変更を要求する第2のユーザー(例えば、図3Bを参照)の観点から説明される。以下で説明するように、第1のユーザーおよび第2のユーザーは、異なるユーザーである必要はなく、同じユーザーに言及し得る。ルーチン例300は、対話型要求マネージャ130の様々な態様を示すことを意図するが、それらに限定されない。
図3Aを参照すると、ブロック304で、利用期間中にプログラム実行サービス100によるプログラム(または複数のプログラム)の実行に対する要求が、対話型要求マネージャ130によって第1のユーザーから受信される。前述したように、その要求は、プログラム(または複数)、コンピューティングノードの数および/またはタイプ、使用するコンピューティングノードの最小および/または最大数、その間そのコンピューティングノードの可用性が保証される将来の利用期間、要求の満了時間などを含み得る。要求は、利用期間中、あるユーザー(または複数のユーザー)のみがそのコンピューティングノードへのアクセスを許可されること、または、利用期間中、あるプログラム(または複数のプログラム)のみがそのコンピューティングノード上で実行されることを指定し得る。コンピューティング資源に対する要求は、他のタイプの好み、要件、および/または制約(例えば、メモリまたは記憶容量の量、ネットワーク帯域幅、ノードに対する地理的および/または論理的位置、終了基準など)を含み得る。
ブロック308で、対話型要求マネージャ130は、要求が実現できるか否かを判断する。例えば、ある場合には、プログラム実行サービス100が、要求を満足するのに十分な能力を有し得るか、または利用期間が、追加のコンピューティング資源が取得できる(必要な場合)十分に先の将来である。要求が実現できる場合には、ブロック320で、要求が実現できるという確認が第1のユーザーに提供される。例えば、電子メールを通じてメッセージが第1のユーザーに伝達され得るか、または、プログラム実行サービスが、ウェブサービスを通じてか、もしくは対話型コンソールかプログラム実行サービスによって提供される他のGUIを通じて、確認を提供し得る。確認は、図2Bに関連して説明したように、確認APIを介して提供され得る。
要求が、全部または一部において実現できない場合、ルーチン300は、ブロック312に進み、そこでは、対話型要求マネージャが、要求が、要求されたのとは異なるように、全部または一部において実現できるか否かを判断しようと試みる。例えば、ルーチン300は、要求が異なる利用期間中に実現できること、または、要求が要求された利用期間中に一部(例えば、要求されたよりも少ないノードを用いて)実現できることを判断し得る。ある場合には、ルーチン300は、ブロック312で、1つまたは複数の追加のイベントを条件として、要求された利用期間中に要求が実現できることを判断し得る。例えば、ルーチン300は、十分な追加のコンピューティング資源がプログラム実行サービスによって取得されることを条件として、かつ、それら追加の資源が、要求された利用期間の開始前に供給およびインストールされることを条件として、要求が実現できることを判断し得る。ブロック316で、ルーチン300は、1つもしくは複数の考えられる変更または要求に関連する付随的な事柄に関する情報を第1のユーザーに提供し、その後、ルーチン300は終了する。例えば、メッセージが、電子メールを通じて第1のユーザーに伝達され得るか、またはプログラム実行サービスが、ウェブサービスを通じてか、または対話型コンソールもしくはプログラム実行サービスによって提供される他のGUIを通じて、情報を提供し得る。情報は、APIを介して提供され得る(例えば、図2Bを参照)。第1のユーザーは、考えられる変更または要求に関連する付随的な事柄に関する情報を使用でき、次いで、必要なら、新しい要求を提出できる。
例示した実施形態では、要求が実現できる場合、ルーチン300はブロック324に進み、そこでは、対話型要求マネージャが、ユーザーのプログラムおよびプログラム実行サービス上でそのプログラムを実行するための適切なインフラストラクチャを含む仮想化環境(例えば、アプリケーションコンテナ)を生成する。対話型要求マネージャは、仮想化環境を実行できるコンピューティングノードのグループを決定する。いくつかの実施態様では、ユーザーは、プログラム実行のために使用されるコンピューティングノードに対して、特定の数、地理的分散などを要求し得る。コンピューティングノードのグループ内のコンピューティングノードの数(および/または地理的分散)は、ユーザーによって要求されたコンピューティングノードの数と異なり得るが、その必要はない。例えば、グループ内のコンピューティングノードの数は、万一、利用期間中に実際に要求されたコンピューティングノードの数がグループ内のコンピューティングノードの数よりも多い場合には、プログラム実行サービスが十分な余分のコンピューティング容量を有するので、要求された数よりも少ない可能性がある。他の場合には、グループ内のコンピューティングノードの数は、利用期間中に予測される需要を安全に満足するために十分なコンピューティングノードがあることを確実にしようとする(例えは、グループ内の1つまたは複数のコンピューティングノードの故障に備えて、予備のノードを提供する)ために、要求された数よりも多い可能性がある。様々な実施形態では、ユーザーは、仮想化環境またはノードのグループに関連する設定(例えば、記憶容量またはネットワーク帯域幅の量またはタイプ、ノードに対する地理的および/または論理的位置、終了基準など)に対して1つまたは複数の変更を行うことができる。ルーチン300は、1つまたは複数の変更が実現できるか、または満足できることを検証できる。ブロック328で、コンピューティングノードのグループが、利用期間中、第1のユーザーが利用するために割り当てられる。資源スケジューリングモジュール208に関して前述したように、コンピューティングノードの割り当てられたグループは、特定のコンピューティングノードまたはコンピューティングノードプールから選択されたノードを含み得る。
図3Bを参照すると、利用期間中、第2のユーザーが、第1のユーザーに対して割り当てられているコンピューティングノード上での第1のユーザーのプログラム(または複数のプログラム)の実行に関連する1つまたは複数の変更を行い得る。前述したように、第2のユーザーは、第1のユーザーと異なり得るが、その必要はない。一シナリオ例では、第1のユーザーがプログラムの実行を要求している可能性がある。利用期間中、第1のユーザーは、コンピューティングノード上で実行しているプログラムのための設定に対する1つまたは複数の変更を提出し得る。このシナリオ例では、第2のユーザーは、第1のユーザーと同じであり得る。いくつかのかかるシナリオでは、第1のユーザーによる要求は、第1のユーザーのみが(他のユーザーではなく)、プログラム実行または割り当てられたコンピューティングノードに対する変更を行うことができることを示し得る。
他のシナリオ例では、第2のユーザーは、第1のユーザーとは異なるユーザーであり得る。例えば、第1のユーザーによる要求は、利用期間中、特定の第2のユーザー(または複数の第2のユーザー)が、コンピューティングノード上で実行しているプログラムに関する変更を行うことを許可されることを示し得る。このシナリオ例では、第2のユーザー(または複数の第2のユーザー)は、第1のユーザーとは異なるユーザーにできる。例えば、第1のユーザーは、最初にアップロードし、プログラム実行能力を要求したアプリケーション開発者であり得、第2のユーザーは、プログラムの進行中の実行をモニタリングするネットワーク管理者またはアプリケーション開発管理者であり得る。
別のシナリオ例では、第1のユーザーによる要求は、プログラム実行サービス100の任意のユーザーが、かかる(第2の)ユーザーが適切な識別子情報を提出する限り、利用期間中にプログラム実行に対する変更を行うことができることを示し得る。かかるシナリオでは、第1のユーザーは、識別子(例えば、キー、トークン、パスワードなど)を様々な第2のユーザーに伝達し得る。これら第2のユーザーの誰かは、次いで、利用期間中に変更を行うための要求を行う際に、そのプログラム識別子を使用するであろう。いくつかのかかるシナリオでは、ユーザーが、割り当てられたコンピューティングノード上で実行しているプログラムに対する変更を要求したが、プログラム識別子を持っていなかった(または要求とともに提出しなかった)場合、対話型要求マネージャはその要求を拒絶するであろう。
ブロック336で、対話型要求マネージャは、第2のユーザーが、コンピューティングノード上でのプログラム実行に対して提供された仮想化環境に対する1つまたは複数の変更を要求できるようにするために、インタフェースを第2のユーザーに提供できる。前述したように、インタフェースは、様々な方法で提供できる。例えば、インタフェースは、対話型コンソールまたは他のGUI、コマンド行ツール、ウェブページ、および統合開発環境などを通じて提供できる。ブロック340で、第2のユーザーからの変更に対する要求が、対話型要求マネージャによって受信される。例えば、要求は、プログラムのインスタンスの実行を終了すること、プログラムを実行するための1つまたは複数の新しいインスタンスを開始すること、1つまたは複数のインスタンスの実行時設定を変更することなどであり得る。前述したように、要求は、例えば、資源割当てのタイプまたは量、実行のための地理的および/または論理的位置、タイミングに関する基準、終了基準など、割り当てられたコンピューティングノードに対して変更を行うことであり得る。
ブロック344で、対話型要求マネージャは、第2のユーザーからの変更要求が許可または実現できるか否かを判断する。例えば、第1のユーザーの要求は、コンピューティングノードに対して行われる可能性のある変更に加えられる1つもしくは複数の要件または制約を指定している可能性があり、第2のユーザーの要求がその要件または制約の一部もしくは全部を満足しない場合、第2のユーザーの要求は拒絶され得る。他の場合には、コンピューティングノードに対する変更が追加の資源または計算ノードを必要とし得、そのため、第2のユーザーの要求は、第2のユーザーの要求時に実現できない。かかる状況では、様々な実施形態において、対話型要求マネージャは、第2のユーザーの要求を拒絶し得るか、または、第2のユーザーによる使用のために十分なコンピューティングノードが生成できるまで、第2のユーザーの要求が保持もしくはキュー登録され得る。いくつかの実施態様では、対話型要求マネージャは、要求が実現できる予定時刻、要求が直ちに実現できるように要求をどのように変更できるかなどに関する情報を、第2のユーザーに提供し得る。
ブロック348で、第2のユーザーからのプログラム実行要求が実現できる場合、プログラム実行サービスは、第1のユーザーのプログラムまたは複数のプログラムを実行している可能性のあるコンピューティングノードまたは複数のノードに対する1つまたは複数の変更を実装する。
図3Aを参照すると、ルーチン300は、ブロック352に進み、そこでは、対話型要求マネージャが、プログラム実行のために割り当てられたノードのグループ上でのプログラム実行の利用をモニタリングおよび追跡する。モニタリングおよび報告モジュール212に関して説明したように、対話型要求マネージャは、割り当てられたコンピューティングノード上でプログラムを実行するユーザー(例えば、第1のユーザー)の利用パターンをモニタリングする。利用パターンは、割り当てられたノードに対して変更を行うユーザーの数または識別、プログラム実行の開始/終了時間および継続期間、ならびに/または他のユーザー固有のパターンもしくは診断を含むことができる。いくつかの実施形態では、ブロック352で、例えば、いつおよび/またはどれくらいの期間、割り当てられたコンピューティングノード上でプログラムが実行されそうであり得るかの指示、ノードに対する実際または予測された需要などを含む、対話型フィードバックが、第1のユーザーまたは第2のユーザーに提供され得る。いくつかの実施形態では、利用統計値を詳述または要約する報告が生成でき、電子メールを通じてか、または対話型コンソールもしくはプログラム実行サービスによって提供される他のGUIを通じて、第1のユーザーに提供できる。
プログラム実行サービスが料金ベースである実施形態では、ブロック356で、対話型要求マネージャ(または他の会計もしくは課金マネージャ)が、1つまたは複数の料金を計算できる。例えば、第1のユーザーは、コンピューティング能力の要求に対して予約料金が請求され得、第1のユーザーまたは第2のユーザーは、利用期間中、割り当てられたノード上でのプログラム実行に対して利用料金が請求され得る。
ブロック360で、随意に、他のサービスが、ルーチン300の実施形態によって実行できる。例えば、利用期間の満了後に他のユーザーによる使用のためにコンピューティングノードを解放することを含む、様々なハウスキーピング操作が実行され得る。ルーチン300は、その後、ブロック364に進んで終了する。
図3Cは、対話型要求マネージャの実施形態が、それによって、コンピューティング資源に対する要求を確認するためにユーザーコンピューティングシステムと通信できる、ルーチン370の一例を概略的に示す流れ図である。いくつかの実施態様では、ルーチン370は、図1および図2に関して説明したプログラム実行サービス100の対話型要求マネージャ130の実施形態によって実装できる。図3Aのブロック304および308に関して説明したように、対話型要求マネージャは、第1のユーザーから利用期間中のプログラム実行能力に対する要求を受信でき、プログラム実行能力に対する要求が実現できるか否かを判断できる。
図3Cのブロック374に進み、要求が実現できる場合には、対話型要求マネージャは、確認を第1のユーザーに提供する。例えば、図2Bおよび図3Aのブロック320に関して説明したように、確認は、プログラム実行サービスが、要求を(全部または一部において)要求された利用期間中(または異なる利用期間中)、許可できるか否かに関する情報を含むことができる。確認は、第1のユーザーの要求に関連し、利用期間中に、コンピューティング資源に対して変更を行うにあたって使用される、1つまたは複数の要求識別子(例えば、キー、トークン、ユーザー名、パスワードなど)も含み得る。確認は、ユーザーの好み、要件、および/または制約が満足できることを確認する情報などの、他の情報を含むことができる。いくつかの実施態様では、確認は、確認APIを介して伝達できる(例えば、図2Bを参照)。
ある場合には、第1のユーザーのプログラム実行要件は、要求が確認された時(ブロック374で)と利用期間の開始との間で変わり得る。いくつかのかかる場合には、第1のユーザーは、要求の変更を対話型要求マネージャに提出し得る。例えば、変更された要求は、実行する変更されたプログラムに関する情報、コンピューティングノードの変更された数またはコンピューティングノードに関連する設定、利用期間の変更された開始時間、終了時間、および/もしくは継続時間、または第1のユーザーの他の好みもしくは要件における変更を含み得る。変更された要求は、全部または一部において、最初の要求を取り消し得る。その結果、かかる場合には、ブロック378で、対話型要求マネージャは、変更された要求を第1のユーザーから受信し得、その変更された要求が(全部または一部において)実現できるか否かを判断し得る。
ブロック382で、対話型要求マネージャは、更新された確認を第1のユーザーに提供し、それは、プログラム実行サービスが、変更された要求を(全部または一部において)要求された利用期間中(変更された要求内で変更されている可能性がある)、許可できるか否か、またはプログラム実行サービスが、変更された要求を(全部または一部において)異なる利用期間中に、許可できるか否かに関する情報を含むことができる。更新された確認は、第1のユーザーの変更された要求に関連し、(おそらくは更新された)将来の利用期間中に、コンピューティング資源に対して1つまたは複数の変更を行うにあたって使用される、1つまたは複数の更新された要求識別子(例えば、キー、トークン、ユーザー名、パスワードなど)も含み得る。更新された確認は、例えば、ユーザーの(おそらくは更新された)好み、要件、および/または制約が満足できることを確認する情報などの、他の情報を含むことができる。いくつかの実施態様では、更新された確認は、確認APIを介して第1のユーザーに伝達される(例えば、図2Bを参照)。
ブロック386で、対話型要求マネージャは、利用期間中に、第1のユーザーに割り当てられたコンピューティング能力に対する1つまたは複数の変更を行うための要求を、第2のユーザーから受信できる。対話型要求マネージャは、通常、図3Bに関して説明したように、第2のユーザーからの要求を処理し得る。例えば、いくつかの実施態様では、第2のユーザーから受信された要求は、ブロック374で(および/または、変更された要求が第1のユーザーから受信された場合は、ブロック382で)、第1のユーザーに伝達された、割り当てられたコンピューティング能力に対する要求識別子を含み得る。
図4は、対話型要求マネージャの実施形態が、それによって、ユーザーによる選択のために複数の仮想化環境(例えば、アプリケーションコンテナ)を提供するために、ユーザーコンピューティングシステムと通信できる、ルーチン400の一例を概略的に示す流れ図である。いくつかの実施態様では、ルーチン400は、図1および図2に関して説明したプログラム実行サービス100の対話型要求マネージャ130の実施態様によって実装できる。図3Bのブロック340に関して説明したように、対話型要求マネージャは、ユーザーに対して生成された仮想化環境に関連する少なくとも1つの変更を受信するように構成できる。
図4のブロック404に進み、対話型要求マネージャが、第1のユーザーから仮想化環境を共有する要求を受信する。例えば、対話型要求マネージャが第1のユーザーに対して仮想化環境を生成した後、第1のユーザーは仮想化環境を他のユーザーと共有することを決定し得る。仮想化環境の共有を可能にするため、第1のユーザーは、仮想化環境を共有するための要求を対話型要求マネージャに伝達し得る。要求は、どの仮想化環境が共有されるかを指定し得る。いくつかの実施形態では、要求は、要求APIを介して伝達される(例えば、図2Bを参照)。
ルーチン例400のブロック408で、対話型要求マネージャが、仮想化環境の更新されたリストを作成するために、その仮想化環境を仮想化環境のリストに追加する。更新されたリストは、プログラム実行サービスの他のユーザーに提供され得る仮想化環境のリストを含み得る。場合によっては、更新されたリストは、第1のユーザーによってだけでなく、プログラム実行サービスによって、および/またはプログラム実行サービスの他のユーザーによって提供される仮想化環境を含み得る。いくつかの仮想化環境は、ユーザーに無料で提供され得、他の環境は有料で利用可能にされ得る。更新されたリストは、例えば、仮想化環境の説明、仮想化環境を生成したユーザーの名前、仮想化環境の利用料金、仮想化環境での使用に適したアプリケーションのタイプに関する推奨、同様のまたは関連する仮想化環境へのリンク、仮想化環境の性能に関する統計値、仮想化環境の属性に対する設定などを含み得る。いくつかの実施態様では、対話型要求マネージャが更新されたリストを作成した後、確認APIを介して、確認が第1のユーザーに伝達される(例えば、図2Bを参照)。
ブロック412で、対話型要求マネージャは、アプリケーションコンテナの更新されたリストをプログラム実行サービスの第2のユーザーに提供し得る。第2のユーザーは、第1のユーザーと同じか、または異なり得る。いくつかの実施態様では、対話型要求マネージャは、ウェブインタフェース、GUI、API呼出しなどを通じて、更新されたリストを第2のユーザーに提供する。例えば、第2のユーザーは、利用期間中に、対話型要求マネージャがプログラムを実行することを要求し得る(例えば、図3を参照)。要求プロセス中、対話型要求マネージャは、第2のユーザーが、どの仮想化環境を第2のユーザーのアプリケーション実行のために使用すべきかを要求できるように、仮想化環境の更新されたリストを提供し得る。いくつかの実施態様では、第2のユーザーは、第2のユーザーのアプリケーション実行に対して、1つもしくは複数の好みまたは要件を提供し得、対話型要求マネージャは、第2のユーザーの好みまたは要件の一部もしくは全部を満足する1つもしくは複数の仮想化環境を推奨し得る。例えば、第2のユーザーは、第2のユーザーのアプリケーションに対する予期される需要、ユーザーの顧客の地理的位置、所望のプログラム実行能力(例えば、CPU、メモリ、記憶装置、帯域幅など)などを示し得る。対話型要求マネージャは、第2のユーザーの好みの一部または全部に合致する1つまたは複数の仮想化環境を識別し得、この推奨を第2のユーザーに提供し得る。ある場合には、対話型要求マネージャは、推奨された仮想化環境を、第2のユーザーの好みまたは要件を満足する可能性の観点から、ランク付けまたはソートし得る。
ルーチン例400のブロック412で、対話型要求マネージャは、第2のユーザーから、更新されたリストに含まれている少なくとも1つの仮想化環境の選択を受信し得る。いくつかの実施態様では、第2のユーザーは、選択の前または後に、1つまたは複数の仮想化環境に対して少なくとも1つの変更を行い得る。例えば、第2のユーザーは、第2のユーザーの選択に関する情報を対話型要求マネージャに提供する前に、特定の仮想化環境の1つまたは複数の設定を変更し得る。対話型要求マネージャは、次いで、選択された仮想化環境を使用して、第2のユーザーのアプリケーションのインスタンスを実行し得る(例えば、図3Aを参照)。
いくつかの実施形態では、第2のユーザーが少なくとも1つの仮想化環境を選択した後、選択された仮想化環境を提供した第1のユーザーに料金が提供され得る。例えば、第2のユーザーは、前述したように、少なくとも1つの選択された仮想化環境を利用したユーザーのアプリケーション実行に対して、1つまたは複数の料金(例えば、予約料金、利用料金など)が請求され得る。1つまたは複数の料金の一部は、第1のユーザーに提供され得る。例えば、提供された料金は、固定料金または第2のユーザーに請求される料金の一部もしくは全部の一定の割合であり得る。提供された料金は、第2のユーザーが少なくとも1つの選択された仮想化環境に対して行っている変更の数、特定の仮想化環境を選択しているユーザーの数、特定の仮想化環境が存在しているか、または使用されている継続期間などに基づく、段階的料金(tiered fee)でもあり得る。
ルーチン例400のいくつかの実施態様では、第2のユーザーは、選択された仮想化環境に変更を行うことを選択し得る。例えば、第1のユーザーは、例えば、Javaに基づく仮想化環境を提供している可能性があり、第2のユーザーは、それが別のプログラム言語(例えば、Ruby)に基づくように、環境を変更し得る。第2のユーザーは、第2のユーザーによって行われた変更を含む変更された仮想化環境を、プログラム実行サービスの他のユーザーと共有することを選択し得る。第2のユーザーは、対話型要求マネージャが、この仮想化環境を他のユーザーと共有し(例えば、ブロック404を参照)、(随意に、)その利用に対する料金が提供されることを要求し得る。例えば、第3のユーザーは、第1のユーザーの仮想化環境、第1のユーザーの仮想化環境の第2のユーザーの変更バージョン、ならびに/またはプログラム実行サービスおよび/もしくは他のユーザーによって提供された仮想化環境を選択し得る。その結果、多岐にわたる仮想化環境(無料および/または料金ベース)を含む市場が発達し得、プログラム実行サービスのユーザーに対して利用可能になり得る。
いくつかの実施形態では、ユーザーのためにプログラムの実行を管理するように構成されたコンピューティングシステムが提供できる。システムは、プログラム実行サービスのユーザーのためにプログラムの実行を管理するように構成されている対話型要求マネージャコンポーネントを含み得る。対話型要求マネージャコンポーネントは、プログラム実行サービスのユーザーから、利用期間中にユーザーアプリケーションの実行のために仮想化環境を生成する要求を受信するように構成され得、要求は、プログラム実行サービスが、ユーザーアプリケーションに少なくとも一部基づいてプログラムを実行できるようにするユーザーアプリケーションに関連する情報、プログラム実行サービスの複数のユーザーのプログラムを実行し、仮想化環境を生成するように構成可能な複数のコンピューティングノードを提供するプログラム実行サービス、以下を含む1つまたは複数のプログラムサービス:(1)仮想化環境のコンピューティング資源にわたって作業負荷を分散するように構成された負荷分散装置、(2)ユーザーがプログラムの実行をモニタリングできるよう構成されたモニタリングインタフェース、(3)プログラムの実行に対する需要における変動に応じてコンピューティング資源をスケーリングするように構成された負荷スケーラ、および(4)複数のデータベース管理サービス、を含む仮想化環境を含む。対話型要求マネージャコンポーネントは、仮想化環境の1つまたは複数のインスタンスを1つまたは複数のコンピューティングノードのグループ上で実行し、仮想化環境の1つまたは複数のインスタンスの実行中に、仮想化環境に対するか、または1つもしくは複数のコンピューティングノードのグループ上で仮想化環境を実行している1つもしくは複数のインスタンスに対する少なくとも1つの変更を決定するようにさらに構成され得る。対話型要求マネージャコンポーネントは、仮想化環境の1つまたは複数のインスタンスの実行中に、少なくとも1つの変更を実装するようにさらに構成され得る。
いくつかの実施態様では、ユーザーのためにプログラムの実行を管理するように構成されたコンピューティングシステムが提供できる。システムは、プログラム実行サービスのユーザーのためにプログラムの実行を管理するように構成されている対話型要求マネージャコンポーネントを含み得る。対話型要求マネージャコンポーネントは、第1のユーザーから、第1のユーザーのために生成された第1の仮想化環境を、プログラム実行サービスのユーザーと共有する要求を受信し、第1の仮想化環境に関連する情報を含む仮想化環境の更新されたリストを提供するために、プログラム実行サービスのユーザーによる選択のために利用可能な仮想化環境のリストを更新し、そして、仮想化環境の更新されたリストをプログラム実行サービスのユーザーに提供するように構成され得る。対話型要求マネージャコンポーネントは、更新されたリストに含まれている第1の仮想化環境の選択をプログラム実行サービスの第2のユーザーから受信し、第2のユーザーのために第2の仮想化環境を生成するようにさらに構成され得、第2の仮想化環境は、第1の仮想化環境に少なくとも一部基づく。
前節で説明したプロセス、方法、およびアルゴリズムの各々は、1つまたは複数のコンピュータまたはコンピュータプロセッサによって実行されるコードモジュールで具体化され、かつ一部または全部が自動化され得る。コードモジュールは、ハードドライブ、ソリッドステートメモリ、光ディスク、および/または同様のものなどの、任意のタイプの持続的コンピュータ可読媒体またはコンピュータ記憶装置に格納され得る。システムおよびモジュールはまた、生成されたデータ信号として(例えば、搬送波または他のアナログもしくはデジタル伝搬信号の一部として)、無線ベースおよび有線/ケーブルベースの媒体を含む、様々なコンピュータ可読伝達媒体上に伝送され得、様々な形式を(例えば、単一もしくは多重化アナログ信号の一部として、または複数の離散デジタルパケットもしくはフレームとして)とり得る。プロセスおよびアルゴリズムは、アプリケーション固有回路内に部分的にまたは完全に実装され得る。開示されたプロセスおよびプロセスステップの結果は、例えば、揮発性または不揮発性の記憶装置など、任意のタイプの持続的コンピュータ記憶装置内に、永続的にまたは他の方法で格納され得る。
前述した様々な特徴およびプロセスは、互いに無関係に使用され得るか、または様々な方法で結合され得る。全ての可能な組合せおよび部分的組合せが、本開示の範囲内に含まれることを意図する。さらに、ある方法およびプロセスブロックがいくつかの実施態様では省略され得る。本明細書に記載する方法およびプロセスは、いかなる特定の順序にも限定されず、それらに関連するブロックまたは状態(state)は、適切な他の順序で実行できる。例えば、説明したブロックまたは状態は、具体的に開示した以外の順序で実行され得るか、または複数のブロックまたは状態が単一のブロックまたは状態に結合され得る。ブロックまたは状態の例は、連続して、並行して、または何らかの他の方法で実行され得る。ブロックまたは状態は、開示した実施形態例に追加され得るまたは、それから除去され得る。本明細書に記載するシステムおよびコンポーネントの例は、説明したのとは異なる方法で構成され得る。例えば、開示した実施形態例に要素が追加され得るか、それから要素が除去され得るか、またはそれに比較して再配置され得る。
本明細書で使用される条件付きの言語、例えば、とりわけ、「できる(can)」、「あり得る(could)」、「かもしれない(might)」、「し得る(may)」、「例えば(e.g.)」および同様のものは、特に明確に指定のない限り、または、使用されたコンテキストで違うように理解されない限り、一般に、ある特徴、要素および/またはステップを、ある実施形態では含むが、他の実施形態では含まないことを伝えることを意図する。従って、かかる条件付きの言語は、一般に、著者の入力または指示の有無にかかわらず、これらの特徴、要素および/もしくはステップが、任意の特定の実施形態に含まれているか、または任意の特定の実施形態で実行されるかにかかわらず、特徴、要素および/もしくはステップが、多少なりとも、1つもしくは複数の実施形態で必要であること、または1つもしくは複数の実施形態が決定のための論理を必ず含むことを意味することを意図しない。「含む(comprising)」、「含む(including)」、「有する(having)」および同様のものは同義語であり、包括的に、制約のない方法で使用され、追加の要素、特徴、動作、操作などを除外しない。また、「または(or)」という用語は、例えば、要素のリストを接続するために使用される場合、用語「または」が、そのリスト内の1つ、いくつか、または全部を意味するように、その包括的な意味で(およびその排他的な意味ではなく)使用される。
ある実施形態例について説明してきたが、これらの実施形態は、例としてのみ提示されており、本明細書で開示した発明の範囲を制限することを意図していない。従って、前述の説明のいずれも、任意の特定の特徴、特性、ステップ、モジュールまたはブロックが必要または不可欠であることを意味することを意図していない。実際、本明細書に記載する新規の方法およびシステムは、様々な他の形式で具体化され得、さらに、本明細書に記載する方法ならびにシステムの形式における様々な省略、置換および変更が、本明細書で開示した発明の精神から逸脱することなく行われ得る。添付の特許請求の範囲およびそれらの相当物は、かかる形式または変更を、本明細書で開示したいくつかの発明の範囲および精神に含まれるように、カバーすることを意図する。

Claims (15)

  1. プログラム実行サービスによって提供されるコンピューティング能力に対する要求を動的に管理するためのコンピュータ実装方法であって、
    各々が前記プログラム実行サービスの複数のユーザーの1つ以上のプログラムを実行するように構成可能な複数のコンピューティングノードを提供するプログラム実行サービスの制御下で、
    前記方法は、前記プログラム実行サービスのユーザーから、要求された期間中にユーザーアプリケーションの実行のための仮想化環境を生成する要求を受信するステップを含み、前記要求は、前記プログラム実行サービスが前記ユーザーアプリケーションに少なくとも部分的に基づいてプログラムを実行可能にする前記ユーザーアプリケーションに関連する情報を含み、
    前記方法は、前記仮想化環境を生成する前記要求が実現できるか否かを判断するステップを含み、
    前記要求が実現できないという判断に応答して、前記方法は、
    前記要求が、要求されたのとは異なるように、少なくとも一部において実現できるか否かを判断するステップと、
    1つもしくは複数の考えられる変更または前記要求に関連する付随的な事柄に関する情報を前記ユーザーに提供するステップと、
    を含み、
    前記方法は、前記仮想化環境を自動的に生成するステップを含み、前記仮想化環境は、ユーザー選択可能なオペレーティングシステムおよび前記プログラム実行サービスによって提供される1つ以上のプログラムサービスを含み、前記プログラムサービスは、(1)前記複数のコンピューティングノードのうちの1つ以上にわたって、または、前記仮想化環境の1つ以上のインスタンスにわたって、作業負荷を分散するように構成された負荷分散装置と、(2)前記ユーザーが前記プログラムの実行をモニタリングできるように構成されたモニタリングインタフェースと、(3)前記プログラムの実行に対する需要における変動に応じて前記プログラム実行サービスのコンピューティング資源をスケーリングするように構成された負荷スケーラと、(4)複数のデータベース管理サービスと、を含み、
    前記方法は、
    前記プログラム実行サービスの前記複数のコンピューティングノードから、前記ユーザーによる前記要求を満足できるコンピューティングノードのグループを決定するステップと、
    前記要求された期間中、前記仮想化環境の1つ以上のインスタンスをコンピューティングノードの前記グループ上で実行するステップと、
    前記ユーザーから、前記要求された期間中に、前記仮想化環境に対して、または、コンピューティングノードの前記グループ上で前記仮想化環境を実行する前記1つ以上のインスタンスに対して、少なくとも1つの変更を行う要求を受信するステップと、
    前記要求された期間中に、前記少なくとも1つの変更を自動的に実装するステップと、
    を含む方法。
  2. 前記ユーザーに、前記仮想化環境の生成を要求するため、または、前記仮想化環境に対する変更を要求するためのコンピューティングインタフェースを提供するステップをさらに含む、
    請求項1に記載の方法。
  3. 前記仮想化環境を生成する前記要求が、(1)オペレーティングシステムと、(2)アプリケーションサーバーと、(3)所望のプログラム実行能力または地理的分散を有する1つ以上のコンピューティングノードと、(4)前記複数のデータベース管理サービスのうちの少なくとも1つと、のうちの1つ以上を、前記プログラム実行サービスによって使用するための要求をさらに含む、
    請求項1または2に記載の方法。
  4. 前記1つ以上のインスタンスのうちの少なくとも1つの障害を自動的に識別するステップと、
    コンピューティングノードの前記グループ上で前記仮想化環境を実行するための少なくとも1つの新しいインスタンスを自動的に開始するステップと、
    をさらに含む請求項1〜3のいずれかに記載の方法。
  5. コンピューティングノードの前記グループのうちの少なくとも1つの障害を自動的に識別するステップと、
    前記プログラム実行サービスの前記複数のコンピューティングノードから少なくとも1つの新しいコンピューティングノードを自動的に割り当てるステップと、
    前記仮想化環境の少なくとも1つの新しいインスタンスを前記少なくとも1つの新しいコンピューティングノード上で自動的に実行するステップと、
    をさらに含む請求項1〜4のいずれかに記載の方法。
  6. コンピューティングサービスのコンピューティング能力に対する要求を動的に管理するように構成されたシステムであって、
    前記システムは、コンピューティングサービスのコンピューティング能力に対する要求を動的に管理するための1つ以上のプログラムモジュールを格納するように構成されたコンピュータメモリを含み、前記コンピューティングサービスが複数のコンピューティングノードを含み、
    前記システムは、前記コンピュータメモリと通信し、かつ、前記コンピュータメモリに格納された前記1つ以上のプログラムモジュールを実行するように構成された対話型要求マネージャを含み、
    前記プログラムモジュールは、ユーザーから、利用期間中、ユーザーアプリケーション実行のための仮想化環境を生成する要求を受信するように構成され、前記要求は、前記コンピューティングサービスが前記ユーザーアプリケーションに少なくとも部分的に基づいてプログラムを実行可能にする前記ユーザーアプリケーションに関連する情報を含み、
    前記プログラムモジュールは、前記仮想化環境を生成する前記要求が実現できるか否かを判断するように構成されており、
    前記要求が実現できないという判断に応答して、前記プログラムモジュールは、
    前記要求が、要求されたのとは異なるように、少なくとも一部において実現できるか否かを判断し、
    1つもしくは複数の考えられる変更または前記要求に関連する付随的な事柄に関する情報を前記ユーザーに提供する、
    ように構成されており、
    前記プログラムモジュールは、ユーザー選択可能なオペレーティングシステムおよび1つ以上のプログラムサービスを含む前記仮想化環境を生成するように構成され、前記1つ以上のプログラムサービスは、(1)前記複数のコンピューティングノードのうちの1つ以上にわたって、または、前記仮想化環境の1つ以上のインスタンスにわたって、作業負荷を分散するように構成された負荷分散装置と、(2)前記ユーザーが前記プログラムの実行をモニタリングできるように構成されたモニタリングインタフェースと、(3)前記プログラムの実行に対する需要における変動に応じてコンピューティング資源をスケーリングするように構成された負荷スケーラと、(4)複数のデータベース管理サービスと、を含み、
    前記プログラムモジュールは、
    前記利用期間中に、前記仮想化環境の1つ以上のインスタンスを前記複数のコンピューティングノードのうちの1つ以上から成るグループ上で実行し、
    ユーザーから、前記利用期間中に、前記仮想化環境に対して、または、前記複数のコンピューティングノードのうちの1つ以上から成る前記グループ上で前記仮想化環境を実行している前記1つ以上のインスタンスに対して、少なくとも1つの変更を行う要求を受信し、
    前記利用期間中に、前記少なくとも1つの変更を実装するように構成されている、
    システム。
  7. 前記コンピューティングサービスの前記複数のコンピューティングノードが、1つ以上の物理コンピューティングシステムを含む、
    請求項6に記載のシステム。
  8. 前記複数のコンピューティングノードが、前記1つ以上の物理コンピューティングシステム上でホストされた1つ以上の仮想マシンを含む、
    請求項7に記載のシステム。
  9. 前記利用期間が、前記1つ以上のインスタンスの前記実行が開始される開始時間、および、前記1つ以上のインスタンスの実行が終了する終了時間を含む、
    請求項6〜8のいずれかに記載のシステム。
  10. 前記プログラムモジュールが、前記コンピューティングサービスの前記複数のコンピューティングノードから、前記仮想化環境の生成に対する前記ユーザーによる前記要求を満足できるコンピューティングノードのグループを決定するようにさらに構成されている、
    請求項6〜9のいずれかに記載のシステム。
  11. 前記仮想化環境が、前記負荷分散装置を含み、かつ、前記負荷分散装置が、前記利用期間中、前記仮想化環境の前記1つ以上のインスタンスの実行を、前記複数のコンピューティングノードの1つ以上から成る前記グループにわたって平均させるように構成されている、
    請求項10に記載のシステム。
  12. 前記プログラムモジュールが、
    前記仮想化環境の前記1つ以上のインスタンスのうちの少なくとも1つの障害を識別し、
    前記仮想化環境の少なくとも1つの新しいインスタンスを前記複数のコンピューティングノードの1つ以上から成る前記グループ上で開始するように
    さらに構成されている、
    請求項10に記載のシステム。
  13. 前記プログラムモジュールが、
    前記仮想化環境の前記1つ以上のインスタンスの利用において、または、前記複数のコンピューティングノードの1つ以上から成る前記グループの利用において、エラーが検出された場合に、ユーザーに通知するようにさらに構成されている、
    請求項10に記載のシステム。
  14. 前記仮想化環境に対して少なくとも1つの変更を行う前記要求が、前記仮想化環境の少なくとも1つのインスタンスを、前記複数のコンピューティングノードの前記1つ以上から成る前記グループ内の少なくともいくつかの前記コンピューティングノードとは異なる地理的位置内のコンピューティングノード上で実行する要求を含む、
    請求項10に記載のシステム。
  15. 前記仮想化環境を生成する前記要求が、前記ユーザーアプリケーションを1つ以上の所望の地理的地域で実行する要求をさらに含む、
    請求項6〜14のいずれかに記載のシステム。
JP2013530148A 2010-09-21 2011-07-25 コンピューティング能力に対する要求を動的に管理するための方法およびシステム Active JP5746351B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/887,241 2010-09-21
US12/887,241 US8661120B2 (en) 2010-09-21 2010-09-21 Methods and systems for dynamically managing requests for computing capacity
PCT/US2011/045241 WO2012039834A1 (en) 2010-09-21 2011-07-25 Methods and systems for dynamically managing requests for computing capacity

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2015010247A Division JP5944021B2 (ja) 2010-09-21 2015-01-22 コンピューティング能力に対する要求を動的に管理するための方法およびシステム

Publications (2)

Publication Number Publication Date
JP2013543171A JP2013543171A (ja) 2013-11-28
JP5746351B2 true JP5746351B2 (ja) 2015-07-08

Family

ID=44504214

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2013530148A Active JP5746351B2 (ja) 2010-09-21 2011-07-25 コンピューティング能力に対する要求を動的に管理するための方法およびシステム
JP2015010247A Active JP5944021B2 (ja) 2010-09-21 2015-01-22 コンピューティング能力に対する要求を動的に管理するための方法およびシステム

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2015010247A Active JP5944021B2 (ja) 2010-09-21 2015-01-22 コンピューティング能力に対する要求を動的に管理するための方法およびシステム

Country Status (8)

Country Link
US (2) US8661120B2 (ja)
EP (1) EP2619665B1 (ja)
JP (2) JP5746351B2 (ja)
CN (2) CN103098027B (ja)
AU (1) AU2011306014B2 (ja)
CA (1) CA2811041C (ja)
SG (1) SG188502A1 (ja)
WO (1) WO2012039834A1 (ja)

Families Citing this family (178)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9888067B1 (en) * 2014-11-10 2018-02-06 Turbonomic, Inc. Managing resources in container systems
US10552586B1 (en) 2015-11-16 2020-02-04 Turbonomic, Inc. Systems, apparatus and methods for management of computer-based software licenses
US9830566B1 (en) * 2014-11-10 2017-11-28 Turbonomic, Inc. Managing resources in computer systems using action permits
US10191778B1 (en) 2015-11-16 2019-01-29 Turbonomic, Inc. Systems, apparatus and methods for management of software containers
USRE48663E1 (en) * 2009-06-26 2021-07-27 Turbonomic, Inc. Moving resource consumers in computer systems
US11272013B1 (en) 2009-06-26 2022-03-08 Turbonomic, Inc. Systems, apparatus, and methods for managing computer workload availability and performance
US10346775B1 (en) 2015-11-16 2019-07-09 Turbonomic, Inc. Systems, apparatus and methods for cost and performance-based movement of applications and workloads in a multiple-provider system
USRE48680E1 (en) * 2009-06-26 2021-08-10 Turbonomic, Inc. Managing resources in container systems
US10673952B1 (en) 2014-11-10 2020-06-02 Turbonomic, Inc. Systems, apparatus, and methods for managing computer workload availability and performance
US9858123B1 (en) * 2014-11-10 2018-01-02 Turbonomic, Inc. Moving resource consumers in computer systems
USRE48714E1 (en) * 2009-06-26 2021-08-31 Turbonomic, Inc. Managing application performance in virtualization systems
US9830192B1 (en) * 2014-11-10 2017-11-28 Turbonomic, Inc. Managing application performance in virtualization systems
US9852011B1 (en) 2009-06-26 2017-12-26 Turbonomic, Inc. Managing resources in virtualization systems
US8667171B2 (en) * 2010-05-28 2014-03-04 Microsoft Corporation Virtual data center allocation with bandwidth guarantees
US8661120B2 (en) * 2010-09-21 2014-02-25 Amazon Technologies, Inc. Methods and systems for dynamically managing requests for computing capacity
KR20150134435A (ko) * 2010-10-13 2015-12-01 제트티이 (유에스에이) 잉크. 멀티미디어 멀티-파티 피어링(m2p2)을 위한 시스템 및 방법
US9483313B2 (en) * 2010-10-19 2016-11-01 Microsoft Technology Licensing, Llc Availability management for reference data services
US8346921B1 (en) * 2010-11-19 2013-01-01 Amazon Technologies, Inc. Predictive governing of dynamic modification of program execution capacity
US9135037B1 (en) 2011-01-13 2015-09-15 Google Inc. Virtual network protocol
US9069890B2 (en) * 2011-04-20 2015-06-30 Cisco Technology, Inc. Ranking of computing equipment configurations for satisfying requirements of virtualized computing environments based on an overall performance efficiency
DE102012103654A1 (de) * 2011-05-17 2012-11-22 International Business Machines Corp. Installieren und Prüfen einer Anwendung auf einer stark genutzten Computerplattform
US8943574B2 (en) 2011-05-27 2015-01-27 Vantiv, Llc Tokenizing sensitive data
CN103064771A (zh) * 2011-10-19 2013-04-24 精英电脑股份有限公司 同步进行计算机的检测及映像下载的方法及其计算机系统
US20130132621A1 (en) * 2011-11-23 2013-05-23 Ankit Sihare Method and apparatus to share hardware resources across storage controllers within a system using resource sharing module
US8914497B1 (en) * 2011-12-15 2014-12-16 Amazon Technologies, Inc. System and method for throttling service requests having non-uniform workloads
KR101696698B1 (ko) * 2011-12-23 2017-01-17 한국전자통신연구원 상호 의존 관계가 있는 컴포넌트 분배 및 관리 방법
US8983860B1 (en) 2012-01-30 2015-03-17 Google Inc. Advertising auction system
GB2499237A (en) * 2012-02-10 2013-08-14 Ibm Managing a network connection for use by a plurality of application program processes
US20130218705A1 (en) * 2012-02-22 2013-08-22 Elwha Llc Systems and methods for accessing camera systems
US9864669B1 (en) * 2012-02-22 2018-01-09 Amazon Technologies, Inc. Managing data center resources
JP2013186745A (ja) * 2012-03-08 2013-09-19 Fuji Xerox Co Ltd 処理システム及びプログラム
US8677449B1 (en) 2012-03-19 2014-03-18 Google Inc. Exposing data to virtual machines
KR101619686B1 (ko) * 2012-04-25 2016-05-10 엠파이어 테크놀로지 디벨롭먼트 엘엘씨 네트워크 기반 컴퓨팅을 위한 워크로드 예측
US10555145B1 (en) 2012-06-05 2020-02-04 Amazon Technologies, Inc. Learned configuration of modification policies for program execution capacity
US9842001B2 (en) * 2012-06-27 2017-12-12 International Business Machines Corporation System level acceleration server
US20150220358A1 (en) * 2012-06-27 2015-08-06 Qatar Foundation Arrangement and method for the allocation of resources of a plurality of computing devices
US9116753B2 (en) 2012-07-08 2015-08-25 Dell Products L.P. System and method for dynamic scaling based on a reference architecture
US8805921B2 (en) * 2012-08-20 2014-08-12 International Business Machines Corporation System and method supporting application solution composition on cloud
EP2901312B1 (en) * 2012-09-28 2019-01-02 Cycle Computing LLC Real time optimization of compute infrastructure in a virtualized environment
EP2735956B3 (en) * 2012-11-23 2021-03-24 Telefonaktiebolaget LM Ericsson (publ) Adaptable Input
WO2014116619A1 (en) * 2013-01-22 2014-07-31 Amazon Technologies, Inc. Instance host configuration
US10313345B2 (en) 2013-03-11 2019-06-04 Amazon Technologies, Inc. Application marketplace for virtual desktops
US10142406B2 (en) 2013-03-11 2018-11-27 Amazon Technologies, Inc. Automated data center selection
US9148350B1 (en) 2013-03-11 2015-09-29 Amazon Technologies, Inc. Automated data synchronization
US9002982B2 (en) 2013-03-11 2015-04-07 Amazon Technologies, Inc. Automated desktop placement
US9262505B2 (en) * 2013-05-17 2016-02-16 Amazon Technologies, Inc. Input-output prioritization for database workload
US10686646B1 (en) 2013-06-26 2020-06-16 Amazon Technologies, Inc. Management of computing sessions
US10623243B2 (en) 2013-06-26 2020-04-14 Amazon Technologies, Inc. Management of computing sessions
US20150019705A1 (en) * 2013-06-26 2015-01-15 Amazon Technologies, Inc. Management of computing sessions
KR102012259B1 (ko) * 2013-08-21 2019-08-21 한국전자통신연구원 클라우드 가상 기지국의 자원을 제어하는 방법 및 장치
US10110506B2 (en) * 2013-09-20 2018-10-23 Oracle International Corporation System and method for quota management in a cloud platform environment
US9749257B2 (en) * 2013-10-24 2017-08-29 Kcura Llc Method and apparatus for dynamically deploying software agents
JP6273773B2 (ja) * 2013-10-30 2018-02-07 富士ゼロックス株式会社 情報処理装置、情報処理システムおよびプログラム
US9424429B1 (en) 2013-11-18 2016-08-23 Amazon Technologies, Inc. Account management services for load balancers
US11809451B2 (en) 2014-02-19 2023-11-07 Snowflake Inc. Caching systems and methods
US9948514B2 (en) * 2014-06-30 2018-04-17 Microsoft Technology Licensing, Llc Opportunistically connecting private computational resources to external services
US10129112B2 (en) * 2014-08-14 2018-11-13 At&T Intellectual Property I, L.P. Workflow-based resource management
US10389697B1 (en) * 2014-08-27 2019-08-20 Amazon Technologies, Inc. Software container activation and throttling
US9436443B2 (en) * 2014-08-28 2016-09-06 At&T Intellectual Property I, L.P. Software defined network controller
US9600312B2 (en) * 2014-09-30 2017-03-21 Amazon Technologies, Inc. Threading as a service
US9715402B2 (en) 2014-09-30 2017-07-25 Amazon Technologies, Inc. Dynamic code deployment and versioning
US10048974B1 (en) 2014-09-30 2018-08-14 Amazon Technologies, Inc. Message-based computation request scheduling
US9323556B2 (en) 2014-09-30 2016-04-26 Amazon Technologies, Inc. Programmatic event detection and message generation for requests to execute program code
US9146764B1 (en) 2014-09-30 2015-09-29 Amazon Technologies, Inc. Processing event messages for user requests to execute program code
US9830193B1 (en) 2014-09-30 2017-11-28 Amazon Technologies, Inc. Automatic management of low latency computational capacity
US9678773B1 (en) * 2014-09-30 2017-06-13 Amazon Technologies, Inc. Low latency computational capacity provisioning
US9256467B1 (en) * 2014-11-11 2016-02-09 Amazon Technologies, Inc. System for managing and scheduling containers
US9871745B2 (en) 2014-11-12 2018-01-16 International Business Machines Corporation Automatic scaling of at least one user application to external clouds
US10491796B2 (en) 2014-11-18 2019-11-26 The Invention Science Fund Ii, Llc Devices, methods and systems for visual imaging arrays
US20190028721A1 (en) * 2014-11-18 2019-01-24 Elwha Llc Imaging device system with edge processing
US10169104B2 (en) * 2014-11-19 2019-01-01 International Business Machines Corporation Virtual computing power management
US10516733B2 (en) 2014-11-25 2019-12-24 Auth0, Inc. Multi-tenancy via code encapsulated in server requests
US9413626B2 (en) 2014-12-05 2016-08-09 Amazon Technologies, Inc. Automatic management of resource sizing
DE102015015196A1 (de) 2014-12-16 2016-06-16 Canon Kabushiki Kaisha Verwaltungssystem und Steuerungsverfahren für Verwaltungssystem
CN105791339B (zh) * 2014-12-18 2020-03-31 中兴通讯股份有限公司 资源操作请求的处理方法及装置
US9733967B2 (en) 2015-02-04 2017-08-15 Amazon Technologies, Inc. Security protocols for low latency execution of program code
US9471775B1 (en) * 2015-02-04 2016-10-18 Amazon Technologies, Inc. Security protocols for low latency execution of program code
US9588790B1 (en) 2015-02-04 2017-03-07 Amazon Technologies, Inc. Stateful virtual compute system
EP3266151A4 (en) * 2015-03-03 2018-10-31 Calgary Scientific Inc. Methods and systems for requesting access to limited service instances
US9851933B2 (en) * 2015-03-25 2017-12-26 International Business Machines Corporation Capability-based abstraction of software-defined infrastructure
US9785476B2 (en) 2015-04-08 2017-10-10 Amazon Technologies, Inc. Endpoint management system and virtual compute system
US9930103B2 (en) 2015-04-08 2018-03-27 Amazon Technologies, Inc. Endpoint management system providing an application programming interface proxy service
JP2016218530A (ja) 2015-05-14 2016-12-22 キヤノン株式会社 リクエスト振り分けシステム、管理システム、およびその制御方法
US10362099B2 (en) * 2015-06-23 2019-07-23 Amazon Technologies, Inc. Multiple instance types serving a single workload or application
KR101665461B1 (ko) * 2015-06-26 2016-10-19 건국대학교 산학협력단 실시간성이 요구되는 어플리케이션이 탑재된 머신의 가상화 장치 및 방법
US9772792B1 (en) * 2015-06-26 2017-09-26 EMC IP Holding Company LLC Coordinated resource allocation between container groups and storage groups
US9678796B2 (en) 2015-07-24 2017-06-13 Xerox Corporation Methods and systems for determining computational resource requirement
US9392471B1 (en) 2015-07-24 2016-07-12 Viavi Solutions Uk Limited Self-optimizing network (SON) system for mobile networks
CN106528262B (zh) * 2015-09-10 2019-10-22 华为技术有限公司 镜像部署方法、装置
US10498807B2 (en) * 2015-10-19 2019-12-03 Citrix Systems, Inc. Multi-tenant multi-session catalogs with machine-level isolation
US10120707B2 (en) * 2015-12-08 2018-11-06 Paypal, Inc. Deployment of development environments
US10754701B1 (en) * 2015-12-16 2020-08-25 Amazon Technologies, Inc. Executing user-defined code in response to determining that resources expected to be utilized comply with resource restrictions
US9811434B1 (en) 2015-12-16 2017-11-07 Amazon Technologies, Inc. Predictive management of on-demand code execution
JP6749094B2 (ja) * 2015-12-18 2020-09-02 エヌ・ティ・ティ・コミュニケーションズ株式会社 コンテナ収容装置、コンテナ作成方法、及びプログラム
US10261782B2 (en) 2015-12-18 2019-04-16 Amazon Technologies, Inc. Software container registry service
US9910713B2 (en) 2015-12-21 2018-03-06 Amazon Technologies, Inc. Code execution request routing
US10067801B1 (en) 2015-12-21 2018-09-04 Amazon Technologies, Inc. Acquisition and maintenance of compute capacity
US11132213B1 (en) 2016-03-30 2021-09-28 Amazon Technologies, Inc. Dependency-based process of pre-existing data sets at an on demand code execution environment
US10891145B2 (en) 2016-03-30 2021-01-12 Amazon Technologies, Inc. Processing pre-existing data sets at an on demand code execution environment
US10135837B2 (en) 2016-05-17 2018-11-20 Amazon Technologies, Inc. Versatile autoscaling for containers
US10102040B2 (en) 2016-06-29 2018-10-16 Amazon Technologies, Inc Adjusting variable limit on concurrent code executions
CN114697189A (zh) * 2016-08-27 2022-07-01 Nicira股份有限公司 网络控制系统到公共云中的扩展
US10367757B2 (en) 2016-08-27 2019-07-30 Nicira, Inc. Extension of network control system into public cloud
US10884787B1 (en) 2016-09-23 2021-01-05 Amazon Technologies, Inc. Execution guarantees in an on-demand network code execution system
US10871995B2 (en) 2016-09-29 2020-12-22 Amazon Technologies, Inc. Managed container instances
US11119813B1 (en) 2016-09-30 2021-09-14 Amazon Technologies, Inc. Mapreduce implementation using an on-demand network code execution system
CN107885595B (zh) 2016-09-30 2021-12-14 华为技术有限公司 一种资源分配方法、相关设备及系统
US10733591B2 (en) * 2016-10-11 2020-08-04 International Business Machines Corporation Tiered model for event-based serverless computing
US10412022B1 (en) 2016-10-19 2019-09-10 Amazon Technologies, Inc. On-premises scaling using a versatile scaling service and an application programming interface management service
WO2018084576A1 (en) 2016-11-03 2018-05-11 Samsung Electronics Co., Ltd. Electronic device and controlling method thereof
US10409642B1 (en) 2016-11-22 2019-09-10 Amazon Technologies, Inc. Customer resource monitoring for versatile scaling service scaling policy recommendations
JP6825103B2 (ja) * 2016-12-08 2021-02-03 アビニシオ テクノロジー エルエルシー 計算リソース割り振り
US11194562B2 (en) * 2017-05-19 2021-12-07 Blackberry Limited Method and system for hardware identification and software update control
US10481954B2 (en) * 2017-06-09 2019-11-19 Bank Of America Corporation System and method of managing computing resources
WO2019031783A1 (en) 2017-08-09 2019-02-14 Samsung Electronics Co., Ltd. ON-DEMAND FUNCTION SUPPLY SYSTEM (FAAS), AND METHOD OF OPERATING THE SYSTEM
KR102120868B1 (ko) * 2017-08-09 2020-06-09 삼성전자주식회사 서비스형 함수(FaaS)를 제공하는 시스템 및 그 동작방법
US10778579B2 (en) * 2017-08-27 2020-09-15 Nicira, Inc. Performing in-line service in public cloud
US10564946B1 (en) 2017-12-13 2020-02-18 Amazon Technologies, Inc. Dependency handling in an on-demand network code execution system
US10733085B1 (en) 2018-02-05 2020-08-04 Amazon Technologies, Inc. Detecting impedance mismatches due to cross-service calls
US10353678B1 (en) 2018-02-05 2019-07-16 Amazon Technologies, Inc. Detecting code characteristic alterations due to cross-service calls
US10831898B1 (en) 2018-02-05 2020-11-10 Amazon Technologies, Inc. Detecting privilege escalations in code including cross-service calls
US10725752B1 (en) 2018-02-13 2020-07-28 Amazon Technologies, Inc. Dependency handling in an on-demand network code execution system
US10776091B1 (en) 2018-02-26 2020-09-15 Amazon Technologies, Inc. Logging endpoint in an on-demand code execution system
US10853115B2 (en) 2018-06-25 2020-12-01 Amazon Technologies, Inc. Execution of auxiliary functions in an on-demand network code execution system
US10649749B1 (en) 2018-06-26 2020-05-12 Amazon Technologies, Inc. Cross-environment application of tracing information for improved code execution
US11146569B1 (en) 2018-06-28 2021-10-12 Amazon Technologies, Inc. Escalation-resistant secure network services using request-scoped authentication information
US10949237B2 (en) 2018-06-29 2021-03-16 Amazon Technologies, Inc. Operating system customization in an on-demand network code execution system
KR20200013162A (ko) 2018-07-19 2020-02-06 삼성전자주식회사 전자 장치 및 그의 제어 방법
US11099870B1 (en) 2018-07-25 2021-08-24 Amazon Technologies, Inc. Reducing execution times in an on-demand network code execution system using saved machine states
US11243953B2 (en) 2018-09-27 2022-02-08 Amazon Technologies, Inc. Mapreduce implementation in an on-demand network code execution system and stream data processing system
US11099917B2 (en) 2018-09-27 2021-08-24 Amazon Technologies, Inc. Efficient state maintenance for execution environments in an on-demand code execution system
US11943093B1 (en) 2018-11-20 2024-03-26 Amazon Technologies, Inc. Network connection recovery after virtual machine transition in an on-demand network code execution system
US10884812B2 (en) 2018-12-13 2021-01-05 Amazon Technologies, Inc. Performance-based hardware emulation in an on-demand network code execution system
US11010188B1 (en) 2019-02-05 2021-05-18 Amazon Technologies, Inc. Simulated data object storage using on-demand computation of data objects
US11086675B2 (en) * 2019-03-06 2021-08-10 The Toronto-Dominion Bank Processing future-dated resource reservation requests
US11861386B1 (en) 2019-03-22 2024-01-02 Amazon Technologies, Inc. Application gateways in an on-demand network code execution system
US11397622B2 (en) 2019-06-03 2022-07-26 Amazon Technologies, Inc. Managed computing resource placement as a service for dedicated hosts
US11119809B1 (en) 2019-06-20 2021-09-14 Amazon Technologies, Inc. Virtualization-based transaction handling in an on-demand network code execution system
US11190609B2 (en) 2019-06-28 2021-11-30 Amazon Technologies, Inc. Connection pooling for scalable network services
US11115404B2 (en) 2019-06-28 2021-09-07 Amazon Technologies, Inc. Facilitating service connections in serverless code executions
US11159528B2 (en) 2019-06-28 2021-10-26 Amazon Technologies, Inc. Authentication to network-services using hosted authentication information
US20210042165A1 (en) 2019-08-09 2021-02-11 Oracle International Corporation System and method for supporting a quota policy language in a cloud infrastructure environment
US11546271B2 (en) 2019-08-09 2023-01-03 Oracle International Corporation System and method for tag based request context in a cloud infrastructure environment
US11669365B1 (en) 2019-08-26 2023-06-06 Amazon Technologies, Inc. Task pool for managed compute instances
US20210064441A1 (en) 2019-08-30 2021-03-04 Oracle International Corporation System and method for cross region resource management for regional infrastructure resources in a cloud infrastructure environment
US10908927B1 (en) 2019-09-27 2021-02-02 Amazon Technologies, Inc. On-demand execution of object filter code in output path of object storage service
US11263220B2 (en) 2019-09-27 2022-03-01 Amazon Technologies, Inc. On-demand execution of object transformation code in output path of object storage service
US11106477B2 (en) 2019-09-27 2021-08-31 Amazon Technologies, Inc. Execution of owner-specified code during input/output path to object storage service
US10996961B2 (en) 2019-09-27 2021-05-04 Amazon Technologies, Inc. On-demand indexing of data in input path of object storage service
US11360948B2 (en) 2019-09-27 2022-06-14 Amazon Technologies, Inc. Inserting owner-specified data processing pipelines into input/output path of object storage service
US11416628B2 (en) 2019-09-27 2022-08-16 Amazon Technologies, Inc. User-specific data manipulation system for object storage service based on user-submitted code
US11023311B2 (en) 2019-09-27 2021-06-01 Amazon Technologies, Inc. On-demand code execution in input path of data uploaded to storage service in multiple data portions
US11055112B2 (en) 2019-09-27 2021-07-06 Amazon Technologies, Inc. Inserting executions of owner-specified code into input/output path of object storage service
US11023416B2 (en) 2019-09-27 2021-06-01 Amazon Technologies, Inc. Data access control system for object storage service based on owner-defined code
US11386230B2 (en) 2019-09-27 2022-07-12 Amazon Technologies, Inc. On-demand code obfuscation of data in input path of object storage service
US11550944B2 (en) 2019-09-27 2023-01-10 Amazon Technologies, Inc. Code execution environment customization system for object storage service
US11250007B1 (en) 2019-09-27 2022-02-15 Amazon Technologies, Inc. On-demand execution of object combination code in output path of object storage service
US11656892B1 (en) 2019-09-27 2023-05-23 Amazon Technologies, Inc. Sequential execution of user-submitted code and native functions
US11394761B1 (en) 2019-09-27 2022-07-19 Amazon Technologies, Inc. Execution of user-submitted code on a stream of data
US10942795B1 (en) 2019-11-27 2021-03-09 Amazon Technologies, Inc. Serverless call distribution to utilize reserved capacity without inhibiting scaling
US11119826B2 (en) 2019-11-27 2021-09-14 Amazon Technologies, Inc. Serverless call distribution to implement spillover while avoiding cold starts
US11336721B2 (en) * 2019-11-29 2022-05-17 Amazon Technologies, Inc. Dynamic resource movement in heterogeneous computing environments including cloud edge locations
CN111083240A (zh) * 2019-12-31 2020-04-28 江苏徐工信息技术股份有限公司 一种结合容器技术实现的智能前端引流系统
US11561815B1 (en) 2020-02-24 2023-01-24 Amazon Technologies, Inc. Power aware load placement
US11714682B1 (en) 2020-03-03 2023-08-01 Amazon Technologies, Inc. Reclaiming computing resources in an on-demand code execution system
US11188391B1 (en) 2020-03-11 2021-11-30 Amazon Technologies, Inc. Allocating resources to on-demand code executions under scarcity conditions
US11775640B1 (en) 2020-03-30 2023-10-03 Amazon Technologies, Inc. Resource utilization-based malicious task detection in an on-demand code execution system
US11704145B1 (en) 2020-06-12 2023-07-18 Amazon Technologies, Inc. Infrastructure-based risk diverse placement of virtualized computing resources
US20210406089A1 (en) * 2020-06-29 2021-12-30 Citrix Systems, Inc. Determination of Cloud Resource Utilization
CN114168307A (zh) * 2020-09-10 2022-03-11 华为云计算技术有限公司 创建实例的方法、设备以及系统
US11575684B2 (en) 2020-09-22 2023-02-07 Bank Of America Corporation System for secure resource allocation communication with a network
CN112156453B (zh) * 2020-10-21 2022-06-03 腾讯科技(深圳)有限公司 实例自适应调整方法、装置、计算机可读存储介质及设备
US11593270B1 (en) 2020-11-25 2023-02-28 Amazon Technologies, Inc. Fast distributed caching using erasure coded object parts
US11550713B1 (en) 2020-11-25 2023-01-10 Amazon Technologies, Inc. Garbage collection in distributed systems using life cycled storage roots
CN114866495A (zh) * 2021-02-03 2022-08-05 中国移动通信有限公司研究院 资源预留方法、装置、网络节点、计算节点及存储介质
US11496556B1 (en) * 2021-04-26 2022-11-08 Cisco Technology, Inc. Service provider selection for application-driven routing
US11388210B1 (en) 2021-06-30 2022-07-12 Amazon Technologies, Inc. Streaming analytics using a serverless compute system
WO2024098333A1 (zh) * 2022-11-10 2024-05-16 华为技术有限公司 调整计算资源的方法、装置及智能驾驶设备

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2675968B2 (ja) 1992-08-20 1997-11-12 インターナショナル・ビジネス・マシーンズ・コーポレイション 加入者分散2相コミット・プロトコルの拡張機能
US6854114B1 (en) * 1999-10-21 2005-02-08 Oracle International Corp. Using a virtual machine instance as the basic unit of user execution in a server environment
JP2001222436A (ja) * 1999-12-30 2001-08-17 Internatl Business Mach Corp <Ibm> リソースの自動化管理をサポートする方法、そのシステム、およびその記録媒体
US7228326B2 (en) * 2002-01-18 2007-06-05 Bea Systems, Inc. Systems and methods for application deployment
US7680933B2 (en) * 2003-12-15 2010-03-16 International Business Machines Corporation Apparatus, system, and method for on-demand control of grid system resources
WO2006021129A1 (en) * 2004-08-25 2006-03-02 Intel Corporation Method and apparatus of resource access synchronization in a basic input and output system of a computer system
US20060136897A1 (en) * 2004-12-22 2006-06-22 Chaitanya Laxminarayan System and method for a packaging and deployment mechanism for Web service applications
WO2007035544A2 (en) 2005-09-15 2007-03-29 3Tera, Inc. Apparatus, method and system for rapid delivery of distributed applications
US8429630B2 (en) * 2005-09-15 2013-04-23 Ca, Inc. Globally distributed utility computing cloud
US8566447B2 (en) 2006-04-10 2013-10-22 Bank Of America Corporation Virtual service switch
US8000260B2 (en) * 2006-06-19 2011-08-16 International Business Machines Corporation Method for dynamic information technology infrastructure provisioning
US7761538B2 (en) * 2006-08-30 2010-07-20 Microsoft Corporation Dynamically configuring, allocating and deploying computing systems
US8291108B2 (en) * 2007-03-12 2012-10-16 Citrix Systems, Inc. Systems and methods for load balancing based on user selected metrics
US7793265B2 (en) * 2007-06-04 2010-09-07 International Business Machines Corporation Method, apparatus and computer program product for optimizing file accesses for an application executing in a virtual container
US8893141B2 (en) * 2008-01-28 2014-11-18 Microsoft Corporation System and method for describing applications for manageability and efficient scale-up deployment
JP5288334B2 (ja) * 2008-02-04 2013-09-11 日本電気株式会社 仮想アプライアンス配備システム
JP4798395B2 (ja) * 2008-04-01 2011-10-19 日本電気株式会社 リソース自動構築システム及び自動構築方法並びにそのための管理用端末
US8543998B2 (en) * 2008-05-30 2013-09-24 Oracle International Corporation System and method for building virtual appliances using a repository metadata server and a dependency resolution service
US20100180272A1 (en) * 2009-01-15 2010-07-15 Kevin Kettler System For Enabling Virtual Services On A Business And A Consumer Device
JP5412882B2 (ja) * 2009-03-04 2014-02-12 富士通株式会社 論理ボリューム構成情報提供プログラム、論理ボリューム構成情報提供方法、および論理ボリューム構成情報提供装置
US20100228819A1 (en) 2009-03-05 2010-09-09 Yottaa Inc System and method for performance acceleration, data protection, disaster recovery and on-demand scaling of computer applications
US9094210B2 (en) * 2009-10-26 2015-07-28 Citrix Systems, Inc. Systems and methods to secure a virtual appliance
US8661120B2 (en) * 2010-09-21 2014-02-25 Amazon Technologies, Inc. Methods and systems for dynamically managing requests for computing capacity
US8677357B2 (en) * 2011-01-26 2014-03-18 International Business Machines Corporation Method and apparatus for distributing a composite software stack as a virtual machine image
US8621462B2 (en) * 2011-03-07 2013-12-31 International Business Machines Corporation Autonomic customization of properties of a virtual appliance in a computer system
TWI515658B (zh) * 2011-12-07 2016-01-01 萬國商業機器公司 用於創建虛擬裝置之方法及系統
US8990804B1 (en) * 2011-12-07 2015-03-24 Amazon Technologies, Inc. Converting virtual machine images from source to destination virtualization environments
US9052940B2 (en) * 2012-03-01 2015-06-09 International Business Machines Corporation System for customized virtual machine for a target hypervisor by copying image file from a library, and increase file and partition size prior to booting
CN104424012B (zh) * 2013-08-20 2018-03-16 国际商业机器公司 用于提供自定义虚拟装置的方法和设备

Also Published As

Publication number Publication date
AU2011306014B2 (en) 2015-08-06
CN106055412B (zh) 2019-05-31
CA2811041A1 (en) 2012-03-29
EP2619665A1 (en) 2013-07-31
US8661120B2 (en) 2014-02-25
WO2012039834A1 (en) 2012-03-29
JP2015122088A (ja) 2015-07-02
CA2811041C (en) 2015-11-17
EP2619665B1 (en) 2019-09-25
CN103098027A (zh) 2013-05-08
US20140156835A1 (en) 2014-06-05
JP2013543171A (ja) 2013-11-28
CN103098027B (zh) 2016-08-31
CN106055412A (zh) 2016-10-26
SG188502A1 (en) 2013-04-30
JP5944021B2 (ja) 2016-07-05
US9268584B2 (en) 2016-02-23
US20120072762A1 (en) 2012-03-22
AU2011306014A1 (en) 2013-04-04

Similar Documents

Publication Publication Date Title
JP5944021B2 (ja) コンピューティング能力に対する要求を動的に管理するための方法およびシステム
US8739170B1 (en) Managing requests for computing capacity
US10915491B2 (en) Managing use of program execution capacity
US8667499B2 (en) Managing allocation of computing capacity
US10114668B2 (en) Managing private use of program execution capacity
JP6580035B2 (ja) 事前設定および事前起動計算リソース
US9658871B2 (en) Providing configurable bootstrapping of software execution
JP5843823B2 (ja) プログラム実行状態の保存
US10713072B1 (en) Computing resource provisioning
US11372689B1 (en) Cloud bursting technologies
US20220100573A1 (en) Cloud bursting technologies
US10592262B1 (en) Managing shared computing environments

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140307

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140421

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140715

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20140922

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150122

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20150330

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150413

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150507

R150 Certificate of patent or registration of utility model

Ref document number: 5746351

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250