プログラム実行サービスによって提供されるコンピューティング能力に対する要求を動的に管理するためのコンピュータ実装方法であって、各々が前記プログラム実行サービスの複数のユーザーの1つ以上のプログラムを実行するように構成可能な複数のコンピューティングノードを提供するプログラム実行サービスの制御下で、前記方法は、前記プログラム実行サービスのユーザーから、要求された期間中にユーザーアプリケーションの実行のための仮想化環境を生成する要求を受信するステップを含み、前記要求は、前記プログラム実行サービスが前記ユーザーアプリケーションに少なくとも部分的に基づいてプログラムを実行可能にする前記ユーザーアプリケーションに関連する情報を含み、前記方法は、前記仮想化環境を自動的に生成するステップを含み、前記仮想化環境は、前記プログラム実行サービスによって提供される1つ以上のプログラムサービスを含み、前記プログラムサービスは、1前記複数のコンピューティングノードのうちの1つ以上にわたって、または、前記仮想化環境の1つ以上のインスタンスにわたって、作業負荷を分散するように構成された負荷分散装置と、2前記ユーザーが前記プログラムの実行をモニタリングできるように構成されたモニタリングインタフェースと、3前記プログラムの実行に対する需要における変動に応じて前記プログラム実行サービスのコンピューティング資源をスケーリングするように構成された負荷スケーラと、4複数のデータベース管理サービスと、を含み、前記方法は、前記プログラム実行サービスの前記複数のコンピューティングノードから、前記ユーザーによる前記要求を満足できるコンピューティングノードのグループを決定するステップと、前記要求された期間中、前記仮想化環境の1つ以上のインスタンスをコンピューティングノードの前記グループ上で実行するステップと、前記ユーザーから、前記要求された期間中に、前記仮想化環境に対して、または、コンピューティングノードの前記グループ上で前記仮想化環境を実行する前記1つ以上のインスタンスに対して、少なくとも1つの変更を行う要求を受信するステップと、前記要求された期間中に、前記少なくとも1つの変更を自動的に実装するステップと、を含む方法。前記ユーザーに、前記仮想化環境の生成を要求するため、または、前記仮想化環境に対する変更を要求するためのコンピューティングインタフェースを提供するステップをさらに含む、請求項1に記載の方法。前記仮想化環境を生成する前記要求が、1オペレーティングシステムと、2アプリケーションサーバーと、3所望のプログラム実行能力または地理的分散を有する1つ以上のコンピューティングノードと、4前記複数のデータベース管理サービスのうちの少なくとも1つと、のうちの1つ以上を、前記プログラム実行サービスによって使用するための要求をさらに含む、請求項1または2に記載の方法。前記1つ以上のインスタンスのうちの少なくとも1つの障害を自動的に識別するステップと、コンピューティングノードの前記グループ上で前記仮想化環境を実行するための少なくとも1つの新しいインスタンスを自動的に開始するステップと、をさらに含む請求項1~3のいずれかに記載の方法。コンピューティングノードの前記グループのうちの少なくとも1つの障害を自動的に識別するステップと、前記プログラム実行サービスの前記複数のコンピューティングノードから少なくとも1つの新しいコンピューティングノードを自動的に割り当てるステップと、前記仮想化環境の少なくとも1つの新しいインスタンスを前記少なくとも1つの新しいコンピューティングノード上で自動的に実行するステップと、をさらに含む請求項1~4のいずれかに記載の方法。コンピューティングサービスのコンピューティング能力に対する要求を動的に管理するように構成されたシステムであって、前記システムは、コンピューティングサービスのコンピューティング能力に対する要求を動的に管理するための1つ以上のプログラムモジュールを格納するように構成されたコンピュータメモリを含み、前記コンピューティングサービスが複数のコンピューティングノードを含み、前記システムは、前記コンピュータメモリと通信し、かつ、前記コンピュータメモリに格納された前記1つ以上のプログラムモジュールを実行するように構成された対話型要求マネージャを含み、前記プログラムモジュールは、ユーザーから、利用期間中、ユーザーアプリケーション実行のための仮想化環境を生成する要求を受信するように構成され、前記要求は、前記コンピューティングサービスが前記ユーザーアプリケーションに少なくとも部分的に基づいてプログラムを実行可能にする前記ユーザーアプリケーションに関連する情報を含み、前記プログラムモジュールは、1つ以上のプログラムサービスを含む前記仮想化環境を生成するように構成され、前記1つ以上のプログラムサービスは、1前記複数のコンピューティングノードのうちの1つ以上にわたって、または、前記仮想化環境の1つ以上のインスタンスにわたって、作業負荷を分散するように構成された負荷分散装置と、2前記ユーザーが前記プログラムの実行をモニタリングできるように構成されたモニタリングインタフェースと、3前記プログラムの実行に対する需要における変動に応じてコンピューティング資源をスケーリングするように構成された負荷スケーラと、4複数のデータベース管理サービスと、を含み、前記プログラムモジュールは、前記利用期間中に、前記仮想化環境の1つ以上のインスタンスを前記複数のコンピューティングノードのうちの1つ以上から成るグループ上で実行し、ユーザーから、前記利用期間中に、前記仮想化環境に対して、または、前記複数のコンピューティングノードのうちの1つ以上から成る前記グループ上で前記仮想化環境を実行している前記1つ以上のインスタンスに対して、少なくとも1つの変更を行う要求を受信し、前記利用期間中に、前記少なくとも1つの変更を実装するように構成されている、システム。前記コンピューティングサービスの前記複数のコンピューティングノードが、1つ以上の物理コンピューティングシステムを含む、請求項6に記載のシステム。前記複数のコンピューティングノードが、前記1つ以上の物理コンピューティングシステム上でホストされた1つ以上の仮想マシンを含む、請求項7に記載のシステム。前記利用期間が、前記1つ以上のインスタンスの前記実行が開始される開始時間、および、前記1つ以上のインスタンスの実行が終了する終了時間を含む、請求項6~8のいずれかに記載のシステム。前記プログラムモジュールが、前記コンピューティングサービスの前記複数のコンピューティングノードから、前記仮想化環境の生成に対する前記ユーザーによる前記要求を満足できるコンピューティングノードのグループを決定するようにさらに構成されている、請求項6~9のいずれかに記載のシステム。前記仮想化環境が、前記負荷分散装置を含み、かつ、前記負荷分散装置が、前記利用期間中、前記仮想化環境の前記1つ以上のインスタンスの実行を、前記複数のコンピューティングノードの1つ以上から成る前記グループにわたって平均させるように構成されている、請求項10に記載のシステム。前記プログラムモジュールが、前記仮想化環境の前記1つ以上のインスタンスのうちの少なくとも1つの障害を識別し、前記仮想化環境の少なくとも1つの新しいインスタンスを前記複数のコンピューティングノードの1つ以上から成る前記グループ上で開始するようにさらに構成されている、請求項10に記載のシステム。前記プログラムモジュールが、前記仮想化環境の前記1つ以上のインスタンスの利用において、または、前記複数のコンピューティングノードの1つ以上から成る前記グループの利用において、エラーが検出された場合に、ユーザーに通知するようにさらに構成されている、請求項10に記載のシステム。前記仮想化環境に対して少なくとも1つの変更を行う前記要求が、前記仮想化環境の少なくとも1つのインスタンスを、前記複数のコンピューティングノードの前記1つ以上から成る前記グループ内の少なくともいくつかの前記コンピューティングノードとは異なる地理的位置内のコンピューティングノード上で実行する要求を含む、請求項10に記載のシステム。前記仮想化環境を生成する前記要求が、前記ユーザーアプリケーションを1つ以上の所望の地理的地域で実行する要求をさらに含む、請求項6~14のいずれかに記載のシステム。コンピューティング資源のプロバイダプログラム実行サービスからのコンピューティング能力に対する要求を動的に管理するためのシステムおよび方法の実施形態を説明する。実例として、コンピューティング資源には、プログラム実行能力、データ記憶または管理能力、データベース管理能力、ネットワーク帯域幅、アプリケーションモニタリングまたはロギング、問題に対処するために是正処置をとる能力などを含み得る。いくつかの実施形態では、ユーザーは、現在または将来の利用期間中に、ユーザーのためにコンピュータ資源を管理できる仮想化環境が生成されることを要求できる。例えば、ユーザーは、ユーザーのカスタムソフトウェアアプリケーションを実行でき、かつ、利用期間中、そのユーザーのために、適切なプログラム実行能力、データ記憶容量、データベース管理オプション、および/もしくはネットワーク帯域幅を管理または確保できる仮想化環境が生成されることを要求できる。コンピューティング資源プロバイダは、プロバイダのどのコンピュータ資源が、ユーザーの要求を満たすために利用可能にできるかを決定でき、要求された利用期間中、それらのコンピュータ資源をユーザーに割り当てることができる。ユーザーの要求の利用期間および/または他のパラメータは、コンピュータ資源に対するユーザーの必要性を満たすために、高度な柔軟性をもって選択され得る。ユーザーの要求は、ユーザーによる好み、制約、および/または要件を指定するために、1つまたは複数のユーザー選択可能パラメータを含み得る。例えば、ユーザーの要求は、利用期間中に特定のプログラムまたは複数のプログラムが実行されること、利用期間中にあるタイプまたは地理的分散のコンピュータ資源が使用されること、利用期間が所望の開始日、終了日、および/または継続期間を有すること、などを指定できる。いくつかの実施形態では、コンピューティング資源プロバイダは、ユーザーによって提出できる要求パラメータの範囲にほとんどまたは全く制限を加えない。可能な一例として、ユーザーは、特定のプログラムがコンピュータ資源のセット上で実行されることを要求することが可能であり得、それには、1つまたは複数の地理的位置におけるコンピュータ資源を含み得る。ユーザーは、プログラムおよびプログラム実行パラメータを仮想化環境生成のためにプログラム実行サービスに伝達するために、アプリケーションプログラミングインタフェースAPIまたは他のタイプのコンピューティングインタフェースを使用することが可能であり得る。例えば、ユーザーは、JavaWARファイルなどのウェブアプリケーションアーカイブを用いて、ソフトウェアアプリケーションをアップロードし得る。プログラム実行サービスは、次いで、自動的に仮想化環境例えば、アプリケーションコンテナを構成し得、それは、ユーザーのプログラムをプログラム実行サービス上で実行するための1つまたは複数のインフラストラクチャサービスと共に、ユーザーのプログラムのためのアプリケーションソフトウェアスタックを含む実行時環境であり得る。アプリケーションコンテナは、ユーザー選択可能なオペレーティングシステム例えば、Linux、Windowsなど、アプリケーションサーバー例えば、ApacheTomcat、システムまたはアプリケーション構成などを含むことができる。仮想化環境は、特定のURLでホストされるように構成できる。インフラストラクチャサービスは、要求されたコンピューティング資源にわたって作業負荷を分散するための負荷分散装置、負荷または需要の変動に応じてコンピューティング資源をスケーリングするための負荷スケーラloadscaler、ユーザーがプログラムの実行をモニタリングできるようにするモニタリングインタフェース、データ記憶資源例えば、拡張可能なボリュームブロックストレージなどを含むことができるが、それらに限定されない。いくつかの実施形態では、ユーザーは、コンテナ内に含めることができる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および/またはVM120と対話できる。対話型要求マネージャ130は、プログラム実行サービス100のコンピューティング資源に対するユーザーからの要求を、ネットワーク108を介して受信できる。図2Aは、ユーザーの代わりにプログラムを実行するための要求を管理するように構成された対話型要求マネージャ130の実施形態の例示的なコンポーネントの概略ブロック図である。この実施形態では、対話型要求マネージャは、資源生成モジュール204、資源スケジューリングモジュール208、モニタリングおよび報告モジュール212、ならびに課金モジュール216を含む。資源生成モジュール204は、例えば、利用期間中にユーザーのプログラムまたは複数のプログラム実行のために利用可能なコンピューティング資源を管理および確保するために、1つまたは複数のコンピューティングノードを生成する要求など、プログラム実行サービス100のコンピューティング資源に対するユーザーからの要求を受信する。ユーザーは、プログラム実行コンピューティングノードが直ちに利用可能になることを要求し得るか、プログラム実行コンピューティングノードが将来生成されることを要求し得るか、または、プログラム実行コンピューティングノードが他の基準に基づいて生成されることを要求し得る。プログラム実行コンピューティングノードに対する要求は、資源生成モジュール204によって様々な方法で受信され得る。例えば、要求は、直接ユーザーから例えば、対話型コンソールまたはプログラム実行サービスによって提供される他のGUIを用いて、それ自身の他のプログラムまたは他のインスタンスの実行を自動的に開始するユーザーの実行プログラムから、プログラミングツール例えば、コマンド行ツール、統合開発環境例えば、Eclipseなどから、プログラム実行サービスによって提供されるアプリケーションプログラミングインタフェースAPI例えば、ウェブサービスを利用するAPIを通じて対話型要求マネージャと対話するプログラムなどから、受信できる。コンピューティングノードに対する要求は、コンピューティングノードの数および/またはタイプ、使用するコンピューティングノードの最小および/または最大数、その間そのコンピューティングノードの可用性が保証される利用期間、要求の満了時間などを含み得る。要求は、利用期間中、あるプログラムまたは複数のプログラムのみが、生成されたコンピューティングノード上で実行されることを指定し得る。コンピューティングノードに対する要求は、他のタイプの好み、要件、および/または制約例えば、記憶容量またはネットワーク帯域幅の量、ノードに対する地理的および/または論理的位置、終了基準などを含み得る。いくつかの実施形態では、要求は、ユーザーのプログラムまたは複数のプログラムを含み、資源生成モジュール204は、ユーザーのプログラムまたは複数のプログラムがプログラム実行サービス100によって実行できるように、インフラストラクチャ資源を自動的に提供する。例えば、資源生成モジュール204は、ユーザーのプログラムを実行するための1つまたは複数のインフラストラクチャサービスと共に、ユーザーのプログラムのためのアプリケーションソフトウェアスタックを含む実行時環境であり得る、仮想化環境を自動的に構成し得る。仮想化環境は、ユーザー選択可能なオペレーティングシステム例えば、Linux、Windowsなど、アプリケーションサーバー例えば、ApacheTomcat、およびシステムまたはアプリケーション構成など含むことができる。仮想化環境は、特定のURLでホストされるように構成できる。インフラストラクチャサービスは、要求されたコンピューティング資源にわたって作業負荷例えば、アプリケーショントラフィックを分散するための負荷分散装置、負荷または需要の変動に応じてコンピューティング資源をスケーリングするための負荷スケーラ、ユーザーがプログラムの実行をモニタリングできるようにするモニタリングインタフェース、データ記憶資源例えば、拡張可能なボリュームブロックストレージなどを含むことができるが、それらに限定されない。いくつかの実施形態では、ユーザーは、仮想化環境内に含めることができる、プログラム実行サービス100によって提供される1つもしくは複数のプログラムまたはサービスを選択することが可能であり得る。例えば、ユーザーは、複数のデータベースモデル例えば、リレーショナルデータベース、SQLデータベース、Oracleデータベースなどから選択することが可能であり得る。いくつかの実施形態では、インフラストラクチャサービスは、プログラム実行サービス100の複数のユーザー間で共有されている資源ではなく、むしろ、ユーザーに対してカスタマイズできる。例えば、いくつかのかかる実施形態では、負荷分散装置は、プログラム実行サービス100のいく人かのユーザー間で共有または分散されているのではなく、ユーザーのアプリケーション用に個別にカスタマイズできる。いくつかの実施形態では、仮想化環境は、ユーザーのアプリケーションが、他のアプリケーションと通信するために、プロセススレッドをスポーンspawnできるか、または任意の適切なポート例えば、ポート80以外のポートをオープンできるように構成できる。例えば、仮想化環境は、ハイパーテキスト転送プロトコルセキュアHTTPSポートをサポートし得る。対話型要求マネージャ130のある実施形態の考えられる利点は、ユーザーがカスタムアプリケーションをプログラム実行サービス100に単にアップロードし得ると、対話型要求マネージャ130が次いで、ユーザーのカスタムアプリケーションをプログラム実行サービス100上で実行するために使用される資源およびアプリケーションスタックを含む仮想化環境を生成できるということである。ユーザープログラムの実行を可能にするために必要な対話型要求マネージャ130とのユーザーの相互作用の量は、比較的わずかな相互作用例えば、JavaWARファイルを使用したプログラムのアップロードにすぎないから比較的高度な相互作用例えば、ユーザーが、実質的に仮想化環境の全ての態様をカスタマイズし得るまで及び得る。その結果、対話型要求マネージャ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を実例として示す。要求API1は、ネットワーク108を介して伝達され、2が、プログラム実行サービス100の対話型要求マネージャ130によって受信される。要求APIは、例えば、ユーザーのプログラム例えば、実行するプログラムの実行可能なコピーもしくは他のコピー、または実行のために以前に登録されたか、もしくは他の方法で提供されたプログラムの指示など、コンピューティングノードの数および/またはタイプ、使用するコンピューティングノードの最小および/または最大数、コンピューティングノードの可用性がその間要求されるまたは利用可能であると保証される利用期間、要求の満了時間などの、ユーザーの要求に関する情報を含むことができる。要求APIは、ユーザーのプログラムまたはコンピューティング資源に対するユーザーの必要性に関連する好み、要件、および/または制約などの、要求に関する他の情報を含むことができる。例えば、要求APIは、利用期間中どのユーザーがコンピューティング資源へのアクセスを許可されるか、利用期間中どのプログラムまたは複数のプログラムが実行できるか、記憶容量またはネットワーク帯域幅の量、ノードに対する地理的および/または論理的位置、終了基準などに関する情報を含むことができる。図2Bに示す例では、対話型要求マネージャ130は、ネットワーク108を経由して確認API3を伝達するが、それは、ユーザーコンピューティングシステム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にユーザープログラム用にアプリケーションコンテナを生成するよう要求し得る。要求API1を利用すると、ユーザーはJavaWARファイル経由などで、プログラムをアップロードすることができる。ユーザーは、ウェブブラウザ、コマンド行ツール、または統合開発環境を用いてプログラムをアップロードすることができる。プログラムは、ユーザーが所望する任意のアプリケーションであり得る。例えば、プログラムは、ウェブアプリケーションであり得る。対話型要求マネージャ130は、次いで、プログラム例えば、要求API2を受信できる。対話型要求マネージャ30は、次いで、ユーザーのプログラム用にアプリケーションコンテナを自動的に生成することにより、ユーザーの要求を処理し得る。アプリケーションコンテナは、ユーザーのプログラムをスケーラブルで耐障害性にできるようにするため、ユーザーに対する他のサービスを含むことができる。いくつかの実施形態では、対話型要求マネージャ30は、ユーザーからのさらなる入力なしで、アプリケーションコンテナをインフラストラクチャサービスを含めて自動的に生成する。他の実施形態では、ユーザーは、アプリケーションコンテナの生成に対してある程度の制御を例えば、コンテナ内に含まれるインフラストラクチャサービスを選択および/または構成することにより行使することを選択できる。ユーザーの代わりに、アプリケーションスタック、自動スケーリング、負荷分散、バージョン管理、ストレージ、および/または他のサービスを生成するアプリケーションコンテナが作成できる。例えば、対話型要求マネージャ130は、例えば、ユーザーのプログラムを実行するための負荷分散、モニタリング、および自動スケーリングなどの1つまたは複数のサービスとともに、Linuxオペレーティングシステム、ApacheTomcatサーバー、Oracleリレーショナルデータベースのインスタンスを生成し得る。対話型要求マネージャ130は、次いで、確認API3および4を介して、アプリケーションコンテナの作成をユーザーに確認する。確認API4の受信後、ユーザーは、プログラムを局所的に変更し得る。例えば、ユーザーは、統合開発環境を利用して、アプリケーションを局所的に更新および/またはテストし得、更新されたプログラムを対話型要求マネージャ130に例えば、後続の要求API1、2を介して再度送信し得る。対話型要求マネージャ130は、前述したように、改訂されたプログラム用のアプリケーションコンテナをさらなるユーザー入力の有無にかかわらず自動的に生成または更新し得る。アプリケーションコンテナの生成後、ユーザーは、対話型要求マネージャ130によって生成されたサービスを変更できる。ユーザーは、ユーザープログラムの実行が開始される前または後に、ウェブページ、対話型コンソールなどを用いて、これらの変更を行うことができる。例えば、ユーザーは、LinuxオペレーティングシステムよりむしろWindowsオペレーティングシステムを好み得るか、またはOracleデータベースよりむしろMicrosoftSQLデータベースを好み得、そして、例えば、APIまたは対話型コンソールを用いて、対話型要求マネージャ130がこれらの変更を行うことを要求できる。別の例として、ユーザーは、使用するポートなど、ApacheTomcatサーバーインスタンスに対する設定を変更することを所望し得、例えば、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つの選択された仮想化環境に対して行っている変更の数、特定の仮想化環境を選択しているユーザーの数、特定の仮想化環境が存在しているか、または使用されている継続期間などに基づく、段階的料金tieredfeeでもあり得る。ルーチン例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つ、いくつか、または全部を意味するように、その包括的な意味でおよびその排他的な意味ではなく使用される。ある実施形態例について説明してきたが、これらの実施形態は、例としてのみ提示されており、本明細書で開示した発明の範囲を制限することを意図していない。従って、前述の説明のいずれも、任意の特定の特徴、特性、ステップ、モジュールまたはブロックが必要または不可欠であることを意味することを意図していない。実際、本明細書に記載する新規の方法およびシステムは、様々な他の形式で具体化され得、さらに、本明細書に記載する方法ならびにシステムの形式における様々な省略、置換および変更が、本明細書で開示した発明の精神から逸脱することなく行われ得る。添付の特許請求の範囲およびそれらの相当物は、かかる形式または変更を、本明細書で開示したいくつかの発明の範囲および精神に含まれるように、カバーすることを意図する。