特許第5789640号(P5789640)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ アマゾン テクノロジーズ インコーポレイテッドの特許一覧

特許5789640複数のコンピュータシステムによるプログラムの実行を管理するシステム
<>
  • 特許5789640-複数のコンピュータシステムによるプログラムの実行を管理するシステム 図000002
  • 特許5789640-複数のコンピュータシステムによるプログラムの実行を管理するシステム 図000003
  • 特許5789640-複数のコンピュータシステムによるプログラムの実行を管理するシステム 図000004
  • 特許5789640-複数のコンピュータシステムによるプログラムの実行を管理するシステム 図000005
  • 特許5789640-複数のコンピュータシステムによるプログラムの実行を管理するシステム 図000006
  • 特許5789640-複数のコンピュータシステムによるプログラムの実行を管理するシステム 図000007
  • 特許5789640-複数のコンピュータシステムによるプログラムの実行を管理するシステム 図000008
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5789640
(24)【登録日】2015年8月7日
(45)【発行日】2015年10月7日
(54)【発明の名称】複数のコンピュータシステムによるプログラムの実行を管理するシステム
(51)【国際特許分類】
   G06F 9/445 20060101AFI20150917BHJP
   G06F 9/50 20060101ALI20150917BHJP
【FI】
   G06F9/06 610R
   G06F9/46 465C
【請求項の数】31
【全頁数】31
(21)【出願番号】特願2013-123086(P2013-123086)
(22)【出願日】2013年6月11日
(62)【分割の表示】特願2012-52264(P2012-52264)の分割
【原出願日】2007年3月29日
(65)【公開番号】特開2013-229040(P2013-229040A)
(43)【公開日】2013年11月7日
【審査請求日】2013年7月11日
(31)【優先権主張番号】11/395,463
(32)【優先日】2006年3月31日
(33)【優先権主張国】US
【前置審査】
(73)【特許権者】
【識別番号】506329306
【氏名又は名称】アマゾン テクノロジーズ インコーポレイテッド
(74)【代理人】
【識別番号】110001243
【氏名又は名称】特許業務法人 谷・阿部特許事務所
(72)【発明者】
【氏名】ローランド パターソン−ジョーンズ
(72)【発明者】
【氏名】クリストファー シー.ピンカム
(72)【発明者】
【氏名】ベンジャミン トブラー
(72)【発明者】
【氏名】ウィレム アール.ファン ビリヨン
(72)【発明者】
【氏名】ガブリエル スミット
(72)【発明者】
【氏名】クリストファー ブラウン
(72)【発明者】
【氏名】クイントン アール.フール
【審査官】 衣川 裕史
(56)【参考文献】
【文献】 山形ほか,グリッド上における仮想計算機を用いたジョブ実行環境構築システムの高速化,情報処理学会研究報告,日本,社団法人情報処理学会,2006年 2月28日,第2006巻,第20号,P.127-132
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/445
G06F 9/50
(57)【特許請求の範囲】
【請求項1】
プログラム実行サービスのための1つまたは複数のコンピュータシステムにより、1つまたは複数の要求を前記プログラム実行サービスのクライアントから受け取るステップであって、前記受け取った1つまたは複数の要求は少なくとも1つのオペレーティングシステムの指定および前記オペレーティングシステムを実行することに関連する構成情報を含む、受け取るステップと、
指定された前記オペレーティングシステムの実行に使用するために、前記1つまたは複数のコンピュータシステムにより、前記プログラム実行サービスの1つまたは複数のコンピューティングノードを選択するステップと、
前記選択された1つまたは複数のコンピューティングノードに、前記指定されたオペレーティングシステムの1つまたは複数のインスタンスを前記選択された1つまたは複数のコンピューティングノードに関連付けられた1つまたは複数の仮想マシン内で、前記1つまたは複数のコンピューティングシステムにより実行させるステップであって、前記実行は、受け取った前記構成情報に少なくとも部分的に基づく、実行させるステップと、
を備え、
前記1つまたは複数のインスタンスが実行される前記選択された1つまたは複数のコンピューティングノードは、学習された1つまたは複数のポリシーに基づいて決定されることを特徴とするコンピュータ実行方法。
【請求項2】
前記1つまたは複数のコンピュータシステムにより、インターフェースを提供するステップを含むことを特徴とする請求項1に記載のコンピュータ実行方法。
【請求項3】
提供される前記インターフェースはグラフィカルユーザーインターフェースを含み、前記1つまたは複数の要求は前記グラフィカルユーザーインターフェースを介して受け取られることを特徴とする請求項2に記載のコンピュータ実行方法。
【請求項4】
提供される前記インターフェースはアプリケーションプログラミングインターフェース(API)を含み、前記1つまたは複数の要求を受け取ることは、前記クライアントの遠隔コンピューティングシステムによる前記APIの呼び出しに基づくことを特徴とする請求項2に記載のコンピュータ実行方法。
【請求項5】
受け取った前記構成情報は、指定された前記オペレーティングシステムの前記1つまたは複数のインスタンスを実行する1つまたは複数の仮想マシンの実行に使用する前記プログラム実行サービスのコンピューティングノードの個数を規定しており、選択された前記1つまたは複数のコンピューティングノードは規定された個数のコンピューティングノードを含むことを特徴とする請求項1に記載のコンピュータ実行方法。
【請求項6】
受け取った前記構成情報は、実行する前記指定されたオペレーティングシステムのインスタンスの個数を規定しており、選択された前記1つまたは複数のコンピューティングノードに、指定された前記オペレーティングシステムの1つまたは複数のインスタンスを実行させるステップは、前記指定されたオペレーティングシステムの前記規定された個数のインスタンスを実行させるステップであって、前記規定された個数は仮想マシンと同じ個数以内であることを特徴とする請求項1に記載のコンピュータ実行方法。
【請求項7】
受け取った前記構成情報は、実行する前記指定されたオペレーティングシステムのインスタンスの最小個数または実行する前記指定されたオペレーティングシステムのインスタンスの最大個数を少なくとも規定しており、選択された前記1つまたは複数のコンピューティングノードに、前記指定されたオペレーティングシステムの1つまたは複数のインスタンスを実行させることは、前記規定された最小個数および/または最大個数のインスタンスにしたがって行われることを特徴とする請求項1に記載のコンピュータ実行方法。
【請求項8】
受け取った前記構成情報は、指定されたオペレーティングシステムの1つまたは複数のインスタンスの実行を開始する1つまたは複数の時刻を規定しており、選択された前記1つまたは複数のコンピューティングノードに、前記指定されたオペレーティングシステムの1つまたは複数のインスタンスを実行させることは、前記規定された1つまたは複数の時刻にしたがって行われることを特徴とする請求項1に記載のコンピュータ実行方法。
【請求項9】
受け取った前記構成情報は、指定されたオペレーティングシステムの1つまたは複数のインスタンスの実行を終了させる1つまたは複数の時刻を規定しており、
前記1つまたは複数のコンピュータシステムにより、前記1つまたは複数の仮想マシンの実行を、当該規定された1つまたは複数の時刻にしたがって管理するステップをさらに備えることを特徴とする請求項1に記載のコンピュータ実行方法。
【請求項10】
受け取った前記構成情報は、指定されたオペレーティングシステムを実行するために使用される1つまたは複数のコンピューティング関連リソースに関連した1つまたは複数の基準を規定していることを特徴とする請求項1に記載のコンピュータ実行方法。
【請求項11】
前記規定されるコンピューティング関連リソースの基準は、指定メモリ容量、プロセッサの指定使用量、ネットワークバンド幅の指定量、ディスクスペースの指定容量およびスワップスペースの指定容量の少なくとも1つに関連することを特徴とする請求項10に記載のコンピュータ実行方法。
【請求項12】
前記規定されるコンピューティング関連リソースの基準は、前記1つまたは複数の仮想マシンにより使用されるコンピューティング関連リソースの1つまたは複数の容量についての指示に関連していることを特徴とする請求項10に記載のコンピュータ実行方法。
【請求項13】
前記規定されるコンピューティング関連リソースの基準は、指定されたオペレーティングシステムの実行に使用される1つまたは複数のコンピューティング関連リソースの最小容量および指定されたオペレーティングシステムの実行に使用される1つまたは複数のコンピューティング関連リソースの最大容量の少なくとも1つを含むことを特徴とする請求項10に記載のコンピュータ実行方法。
【請求項14】
前記1つまたは複数のコンピューティングノードは、グループ化されることが可能であり、選択の1つまたは複数されたコンピューティングノードは、前記プログラム実行サービスの複数のコンピューティングノードの一部分であり、前記プログラム実行サービスの複数のコンピューティングノードは2つまたはそれ以上の地理的に別個の位置に位置しており、受け取った前記構成情報は、指定された前記オペレーティングシステムを実行するための1つまたは複数の地理的な位置についての指示を含み、前記1つまたは複数のコンピューティングノードを選択することは前記指示される1つまたは複数の地理的な位置に少なくとも部分的に基づくことを特徴とする請求項1に記載のコンピュータ実行方法。
【請求項15】
前記1つまたは複数の要求はユーザアカウントを示し、前記ユーザアカウントが、指定されたオペレーティングシステムを実行することの権限を付与されていることを前記1つまたは複数のコンピュータシステムにより判定するステップをさらに備えることを特徴とする請求項1に記載のコンピュータ実行方法。
【請求項16】
前記1つまたは複数のコンピュータシステムにより、指定されたオペレーティングシステムの1つまたは複数のインスタンスの実行についての料金情報を生成するステップであって、前記料金情報は、選択された1つまたは複数のコンピューティングノードにより1つまたは複数の仮想マシンが実行される時間量に少なくとも部分的に基づいていることを特徴とする請求項1に記載のコンピュータ実行方法。
【請求項17】
複数の格納コンテンツを有する非一時的コンピュータ読み取り可能記憶媒体であって、前記複数の格納コンテンツはコンピューティングシステムに、
プログラム実行サービスのインターフェースを介して、イメージの1つまたは複数のインスタンスを実行する要求を受け取ることであって、前記イメージはプログラムを含み、前記要求はさらに前記1つまたは複数のインスタンスを実行することに関連する構成情報を含む、受け取ることと、
前記1つまたは複数のインスタンスをホストする前記プログラム実行サービスの1つまたは複数のコンピューティングノード選択することであって、前記1つまたは複数のインスタンスは、前記選択された1つまたは複数のコンピューティングノードに関連付けられた1つまたは複数の仮想マシンを使用して実行され、前記1つまたは複数のコンピューティングノードを選択することは前記構成情報に少なくとも部分的に基づき、前記1つまたは複数のインスタンスが実行される前記選択された1つまたは複数のコンピューティングノードは、学習された1つまたは複数のポリシーに基づいて決定される、選択することと、
前記1つまたは複数の仮想マシンを実行するために選択された前記1つまたは複数のコンピューティングノードを管理することと
を実行させることを特徴とする非一時的コンピュータ読み取り可能記憶媒体。
【請求項18】
前記インターフェースはグラフィカルユーザーインターフェースを含むことを特徴とする請求項17に記載の非一時的コンピュータ読み取り可能記憶媒体。
【請求項19】
前記インターフェースはアプリケーションプログラミングインターフェース(API)を含み、前記要求を受け取ることは遠隔コンピューティングシステムによる前記APIの呼び出しに基づくことを特徴とする請求項17に記載の非一時的コンピュータ読み取り可能記憶媒体。
【請求項20】
受け取った前記構成情報は、前記イメージを実行する前記プログラム実行サービスのコンピューティングノードの個数または実行する前記イメージのインスタンスの個数を規定していることを特徴とする請求項17に記載の非一時的コンピュータ読み取り可能記憶媒体。
【請求項21】
受け取った前記構成情報は、実行するイメージのインスタンスの最小個数または実行するイメージのインスタンスの最大個数を規定していることを特徴とする請求項17に記載の非一時的コンピュータ読み取り可能記憶媒体。
【請求項22】
受け取った前記構成情報は、前記イメージの1つまたは複数のインスタンスの実行を開始する1つまたは複数の時刻または前記イメージの1つまたは複数のインスタンスを終了させる1つまたは複数の時刻を規定していることを特徴とする請求項17に記載の非一時的コンピュータ読み取り可能記憶媒体。
【請求項23】
受け取った前記構成情報は、前記イメージの1つまたは複数のインスタンスを実行するために使用されるコンピューティング関連リソースに関連する1つまたは複数の基準を規定しており、当該規定される基準は、指定メモリ容量、プロセッサの指定使用量、ネットワークバンド幅の指定量、ディスクスペースの指定容量またはスワップスペースの指定容量に関連することを特徴とする請求項17に記載の非一時的コンピュータ読み取り可能記憶媒体。
【請求項24】
前記1つまたは複数のコンピューティングノードは、グループ化されることが可能であり、選択された前記1つまたは複数のコンピューティングノードは、前記プログラム実行サービスの複数のコンピューティングノードの一部分であり、当該前記プログラム実行サービスの複数のコンピューティングノードは2つまたはそれ以上の地理的に別個の位置に位置しており、受け取った前記構成情報は、前記イメージの少なくともいくつかのインスタンスを実行する1つまたは複数の地理的な位置についての指示を含み、前記1つまたは複数のコンピューティングノードを選択することは当該指示される1つまたは複数の地理的な位置に少なくとも部分的に基づくことを特徴とする請求項17に記載の非一時的コンピュータ読み取り可能記憶媒体。
【請求項25】
前記格納コンテンツはさらにコンピュータシステムに、
前記イメージの1つまたは複数のインスタンスを実行する料金を決定することであって、前記決定される料金は、1つまたは複数のインスタンスが実行される時間量に少なくとも部分的に基づく、決定することを実行させることを特徴とする請求項17に記載の非一時的コンピュータ読み取り可能記憶媒体。
【請求項26】
個々のコンピューティングシステムが1つまたは複数のプロセッサを有している1つまたは複数のコンピューティングシステムと、
命令を含む少なくとも1つのメモリであって、前記1つまたは複数のプロセッサの少なくとも1つによる実行時に前記命令がシステムに、
プログラム実行サービスによるプログラムの実行において使用するために提供されるインターフェースを介して、クライアントから要求を受け取ることであって、受け取った前記要求は少なくとも1つの指定のプログラムの実行に関連する構成情報を含む、受け取ることと、
前記指定のプログラムの1つまたは複数のインスタンスの実行に使用するために前記プログラム実行サービスの1つまたは複数のコンピューティングノードを選択することであって、前記1つまたは複数のインスタンスは、前記選択された1つまたは複数のコンピューティングノードに関連付けられた1つまたは複数の仮想マシン上で実行され、前記1つまたは複数のインスタンスが実行される前記選択された1つまたは複数のコンピューティングノードは、学習された1つまたは複数のポリシーに基づいて決定される、選択することと、
前記指定のプログラムの1つまたは複数のインスタンスの実行を前記クライアントのために前記選択された1つまたは複数のコンピューティングノードにより管理することであって、前記実行の管理は受け取った前記構成情報に少なくとも部分的に基づく、管理することと
を実行させる、メモリと
を備えたことを特徴とするシステム。
【請求項27】
前記インターフェースはアプリケーションプログラミングインターフェース(API)を含み、前記要求を受け取ることは前記クライアントの遠隔コンピューティングシステムによる前記APIの呼び出しに基づくことを特徴とする請求項26に記載のシステム。
【請求項28】
受け取った前記構成情報は、前記指定のプログラムの実行に使用する前記プログラム実行サービスのコンピューティングノードの個数および実行する前記指定のプログラムのインスタンスの個数の少なくとも1つを規定していることを特徴とする請求項26に記載のシステム。
【請求項29】
受け取った前記構成情報は、前記指定のプログラムの1つまたは複数のインスタンスの実行を開始する1つまたは複数の時刻または前記指定のプログラムの1つまたは複数のインスタンスの実行を終了させる1つまたは複数の時刻の少なくとも1つを規定していることを特徴とする請求項26に記載のシステム。
【請求項30】
受け取った前記構成情報は、前記指定のプログラムの実行に使用する1つまたは複数のコンピューティング関連リソースに関連する1つまたは複数の基準を規定しており、前記規定される基準は、指定メモリ容量、プロセッサの指定使用量、ネットワークバンド幅の指定量、ディスクスペースの指定容量およびスワップスペースの指定容量の少なくとも1つに関連することを特徴とする請求項26に記載のシステム。
【請求項31】
前記実行を管理することは、前記指定のプログラムの1つまたは複数のインスタンスを選択された前記1つまたは複数のコンピューティングノードにより第1の時点で開始することを含み、前記メモリは、実行時に前記システムに、
第2の時点で前記インターフェースを介して追加の構成情報を前記クライアントから受け取ることであって、前記第2の時点は前記第1の時点よりも遅く、前記追加の構成情報は1つまたは複数の個々の前記プログラムの実行に関連する1つまたは複数の修正を規定している、受け取ることと、
前記追加の構成情報の受け取りに応答して、前記指定のプログラムの1つまたは複数のインスタンスの少なくとも1つの実行を動的に修正することと
をさらに実行させる命令を含むことを特徴とする請求項26に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般に、プログラムコピーの効率的な獲得が実行されることを可能にするようにコンピュータシステムのグループの間でプログラムのコピーを実行することなどの、複数のコンピュータシステム上でのプログラムの実行を管理することに関する。
【背景技術】
【0002】
単一の組織によって、さらに単一の組織に代行して運用される私設データセンタや、様々なビジネスモデルの下で顧客に、コンピュータリソースへのアクセスを提供する公衆データセンタなどの、相当な数の互いに接続されたコンピュータシステムを収容するデータセンタが、一般的になっている。例えば、一部の公衆データセンタ事業者は、様々な顧客によって所有されるハードウェアのためのネットワークアクセス施設、電力施設及びセキュアな設置施設を提供するのに対して、他の公衆データセンタ事業者は、顧客によって使用される実際のハードウェアリソースも含む「完全サービス」施設を提供する。しかし、従来のデータセンタの規模及び範囲が増大するにつれ、物理的コンピュータリソースを提供し、管理し、運営する作業は、ますます複雑になっている。
【0003】
商品ハードウェアに関する仮想化技術の到来により、多様なニーズを有する多くの顧客のために大規模なコンピュータリソースを管理することの問題の部分的な解決がもたらされた。一般的に説明すると、仮想化技術は、様々なコンピュータリソースが、複数の顧客の間で効率的に、かつセキュアに共有されることを可能にする。例えば、VMWare、XEN、またはUser−Mode Linuxによって提供されるような仮想化技術は、単一の物理的な計算機(computing machine)のリソースが、複数のユーザの間で共有されることを可能にすることができる。より具体的には、各ユーザには、単一の物理的な計算機によってホストされる1つまたは複数の仮想マシンが提供されることが可能であり、それぞれのそのような仮想マシンは、別個の論理コンピュータシステムの役割をするソフトウェアシミュレーションである。各仮想マシンは、ユーザが、所与のハードウェアコンピュータリソースの単独の運用者及び管理者であるという体験をユーザに提供する一方で、様々な仮想マシンの間でアプリケーションアイソレーション及びアプリケーションセキュリティも提供する。さらに、実際には複数の別々の物理的コンピュータシステムにまたがる複数の仮想プロセッサを有する単一の仮想マシンなどの一部の仮想化技術は、1つまたは複数の物理的リソースにまたがる仮想リソースを提供することができる。
【0004】
しかし、多様なユーザ群のために多数のアプリケーションまたはシステムを仮想的に、または物理的にホストするデータセンタのコンテキストにおいて生じる1つの問題には、ソフトウェアアプリケーションのコピーの格納、配布及び獲得を管理することが関わる。アプリケーションは、例えば、サイズが極めて大きく、データセンタ内のすべてのコンピュータシステム上に、ホストされるすべてのアプリケーションのローカルコピーを格納する十分なストレージリソースを有することが(不可能ではないにしても)高コストになる可能性がある。しかし、アプリケーションのコピーが、当該アプリケーションを実行すべきデータセンタ内のすべてのコンピュータシステムに頻繁に伝送される集中ストレージロケーションが、代替手段として、維持される場合、ネットワーク帯域幅リソースの点でやはり高コストである。そのような代替手段において、ネットワーク帯域幅は、アプリケーションコピー伝送のために独占され、実行されるアプリケーションが、アプリケーションの動作のために十分なネットワーク帯域幅を受け取ることを妨げる可能性がある。さらに、アプリケーションコピー伝送が達せられるのを待つ間などに、アプリケーション実行に関する相当な起動待ち時間が生じる可能性もある。そのような困難は、実行されるべき新たなアプリケーションの頻繁な導入、及び/またはアプリケーションの相次ぐバージョンの頻繁な展開などの様々な要因によってさらに深刻になる可能性がある。
【発明の概要】
【発明が解決しようとする課題】
【0005】
このため、上記問題に対処するため、アプリケーションのコピーを、当該アプリケーションを実行するコンピュータシステムに効率的に配布するとともに、他の様々な利点を提供するための技術を提供することが有益であろう。
【課題を解決するための手段】
【0006】
複数のコンピュータシステム上でのプログラムの実行を管理する技術が説明される。一部の実施形態では、説明される技術は、サービスの複数のユーザ(例えば、顧客)のために複数のプログラムを実行するためのプログラム実行サービスのために実行される。一部の実施形態では、プログラム実行サービスは、様々な要因を使用して、プログラムのインスタンスを実行すべき適切なコンピュータシステムを選択することができる。その要因には、選択されたコンピュータシステムが、プログラムインスタンスの実行のために、実行されるべきプログラムのコピー、及び/または利用可能なコンピュータシステムリソースのコピーを獲得することができる、プログラムの以前に格納された1つまたは複数のコピーのロケーションなどの情報が含まれる。例えば、一部の実施形態では、プログラムのインスタンスを実行すべき適切なコンピュータシステムの選択は、そのプログラムのローカルコピーを既に格納しているコンピュータシステムを特定することに基づくことが或る程度可能である。別の例では、適切なコンピュータシステムの選択は、特定されたコンピュータシステムと共通のグループ内の他の1つまたは複数のコンピュータシステムなどの、そのようなローカルコピーをそれぞれ格納する他の1つまたは複数のコンピュータシステムに十分に近い(地理的及び/または論理的にかかわらず)コンピュータシステムを特定することに基づくことが或る程度可能である。
【0007】
一部の実施形態では、プログラムを実行するのに利用可能な複数のコンピュータシステムには、計算機間でデータを伝送することができる1つまたは複数のネットワーク、または他のデータ交換媒体を介して互いに接続された複数の物理的な計算機を含めることが可能である。複数のコンピュータシステムは、例えば、或る物理的ロケーション(例えば、データセンタ)内に配置することが可能であり、また、複数のグループに分けることが可能であり、また、それらの複数のコンピュータシステムを全体として担う1つまたは複数のシステムマネージャモジュールによって管理することが可能であり、また、グループのコンピュータシステムを管理するために、グループの1つにそれぞれが関連付けられた複数のマシンマネージャモジュールによって管理することが可能である。計算機の少なくともいくつかはそれぞれ、複数のプログラムを同時に実行するのに十分なリソース(例えば、十分な書き込み可能メモリ、及び/または十分なストレージ、十分なCPUサイクルもしくは他のCPU使用指標、十分なネットワーク帯域幅、十分なスワップスペースなどの1つまたは複数)を含むことが可能である。例えば、一部のそのような実施形態における計算機の少なくともいくつかは各々、別個のユーザのために1つまたは複数のプログラムをそれぞれが実行することができる複数の仮想マシンノードをホストすることができる。前述したとおり、少なくとも一部の実施形態では、プログラム実行サービスによって管理される複数のコンピュータシステムは、物理的近さもしくは論理的近さ、または共通データ交換媒体を有することを含む基準などに基づいて、複数の別個のグループに編成される(例えば、各コンピュータシステムが単一のグループに属する)ことが可能である。一例では、グループに関する共通データ交換媒体は、グループのコンピュータシステム間で高い帯域幅の通信を提供する単一のネットワークスイッチ及び/またはラックバックプレーンによって提供されることが可能である(例えば、ネットワークスイッチまたはラックバックプレーンに接続されたコンピュータシステムの一部または全てがグループのメンバである)。また、コンピュータシステムの各グループは、グループの共通データ交換媒体と比べて低い帯域幅を有する他のデータ交換媒体などの、他の1つまたは複数のデータ交換媒体(例えば、イーサネット(登録商標)ベースの配線、無線接続、または他のデータ接続)によって他のコンピュータシステム(例えば、他のグループのコンピュータシステム、またはプログラム実行サービスによって管理されていないリモートコンピュータシステム)に接続されることも可能である。さらに、少なくとも一部の実施形態では、コンピュータシステムの一部または全てがそれぞれ、プログラムの実行前またはプログラムの実行時などに、実行プログラムのローカルコピーを格納するのに使用可能なローカルプログラムリポジトリ(例えば、ハードディスク、または他のローカルストレージ機構)をそれぞれ有することが可能である。さらに、少なくとも一部の実施形態では、複数のコンピュータシステムの各グループは、そのグループの1つまたは複数のコンピュータシステムを使用して、そのグループの他のコンピュータシステムによって使用されるようにプログラムのローカルコピーを格納することができる。
【0008】
例示される実施形態では、プログラム実行サービスは、プログラムの実行を管理するために1つまたは複数のコンピュータシステム上で実行されるソフトウェアファシリティを含むことができる。ソフトウェアファシリティは、1つまたは複数のコンピュータシステムの各グループのために、そのグループのコンピュータシステムによるプログラムの取得、格納及び実行を管理する1つまたは複数のマシンマネージャモジュールを含むことができる。例えば、別個の計算機それぞれに、その計算機の複数の仮想マシンの少なくとも1つの仮想マシン上で実行されている、計算機のためのマシンマネージャモジュールなどの、別個のマシンマネージャモジュールが提供されることが可能である。さらに、一部の実施形態では、ソフトウェアファシリティは、1つまたは複数のコンピュータシステム上で実行されている1つまたは複数のシステムマネージャモジュールを含むことが可能だが、当該システムマネージャモジュールは、プログラムを実行するのに使用される複数のコンピュータシステムのすべてのためにプログラムの取得、格納及び実行を管理する。システムマネージャモジュールは、後述するとおり、適宜、マシンマネージャモジュールと対話することができる。
【0009】
少なくとも一部の実施形態では、1つまたは複数のコンピュータシステム上でのプログラムの1つまたは複数のインスタンスの実行は、それらのプログラムインスタンスの即時の実行を求める現在の実行要求に応答して開始可能である。あるいは、この実行開始は、スケジューリングされた、または現時点での将来のプログラムインスタンスの実行を予約した、以前に受信されたプログラム実行要求に基づいてもよい。プログラム実行要求は、様々なやり方で受信可能である。例えば、ユーザから直接に(例えば、対話型コンソールを介して、またはプログラム実行サービスによって提供される他のGUIを介して)でも良いし、または他のプログラム、またはそのプログラム自体の1つまたは複数のインスタンスの実行を自動的に開始するユーザの実行中のプログラムから(例えば、Webサービスを使用するAPIなどの、プログラム実行サービスによって提供されるAPI(Application Program Interface)を介して)でも良い。
【0010】
プログラム実行要求は、プログラムの1つまたは複数のインスタンスの実行開始の際に使用されるべき様々な情報を含むことが可能であるが、このような情報には、例えば、将来の実行のために以前に登録された、またはそれ以外で供給されたプログラムの指示及び同時に実行されるべきプログラムのインスタンスの数(例えば、所望されるインスタンスの最小数及び最大数などとして、インスタンスの単一の所望される数として表現される)などがある。加えて、一部の実施形態では、プログラム実行要求は、他の様々なタイプの情報を含むことが可能である。例えば、当該情報には、ユーザアカウントの指示、または以前に登録されたユーザの他の指示(例えば、以前に格納されたプログラムを識別する際、さらに/または要求されたプログラムインスタンス実行が許可されているかどうかを判定する際に使用するための指示)、プログラムインスタンス実行の代金の支払いをプログラム実行サービスに提供する際に使用するための支払いソースの指示、プログラムインスタンス実行に関する以前の支払い許可、または他の許可の指示(例えば、或る時間にわたって、或る数のプログラム実行インスタンスに関して、或る量のリソース利用に関して有効であるなどの、以前に購入された契約)、及び/または即時に実行されるべき、さらに/または後の実行のために格納されるべきプログラムの実行可能なコピー、または他のコピーなどがある。さらに、一部の実施形態では、プログラム実行要求は、1つまたは複数のプログラムインスタンスの実行に関する様々な他のタイプのプリファレンス及び/または要件をさらに含むことが可能である。そのようなプリファレンス及び/または要件は、使用可能な複数の計算機を収容する複数のデータセンタの1つにおいて、互いに近い複数のコンピュータシステム上で、さらに/または他の1つまたは複数の指示されたプログラムインスタンス(例えば、同一のプログラムのインスタンス、または別のプログラムのインスタンス)を実行するコンピュータシステムに近い1つまたは複数のコンピュータシステム上でなど、プログラムインスタンスの一部または全てが、指示された地理的ロケーション及び/または論理的ロケーションにおいて実行されるべきであるという指示を含むことが可能である。そのようなプリファレンス及び/または要件は、プログラムインスタンスの一部または全ては、実行中に、指示されたリソースをそれぞれ割り当てられるべきであるという指示をさらに含むことが可能である。
【0011】
指示された時点でプログラムの1つまたは複数のインスタンスを実行する要求を受信した後、プログラム実行サービスは、それらのプログラムインスタンスを実行する際に使用すべき1つまたは複数のコンピュータシステムを決定する。一部の実施形態では、使用されるべきコンピュータシステムの決定は、将来の実行のためである場合でも、要求の時点で実行される。他の実施形態では、1つまたは複数のプログラムインスタンスの将来の実行のために使用されるべきコンピュータシステムの決定は、その時に利用可能な情報に基づいて、将来の実行時などの、後の時点まで延期することが可能である。各プログラムインスタンスの実行のためにいずれのコンピュータシステムが使用されるべきかという決定は、プログラム要求の中で指定された、あるいはプログラム及び/または関連するユーザに関して、それ以外で指定された(例えば、以前の登録の時点で)任意のプリファレンス及び/または要件に基づくことを含め、様々な仕方で行うことが可能である。例えば、プログラムインスタンスの実行のための好ましいリソース、及び/または要求されるリソースに関する基準が決定された場合、プログラムインスタンスを実行すべき適切なコンピュータシステムの決定は、コンピュータシステムが、それらのリソース基準を満たすのに十分なリソースを利用できるかどうかに少なくとも基づくことが或る程度可能である。
【0012】
一部の実施形態では、プログラム実行サービスは、実行されるべきプログラムを実行するのにいずれのコンピュータシステムが利用されるべきかという決定を、実行されるべきプログラムの以前に格納された1つまたは複数のコピーのロケーションに基づかせることができる。特に、前述したとおり、少なくとも一部の実施形態では、プログラムを実行するのに利用可能である様々なコンピュータシステムは、グループに編成されることが可能である(各コンピュータシステムが、複数のグループの1つに属するなどして)。したがって、或るコンピュータシステムが、或るプログラムのインスタンスを実行するのに適切であるかどうかの決定は、そのコンピュータシステムのグループの1つまたは複数のコンピュータシステムが、プログラムのローカルコピーを格納するかどうかに少なくとも基づくことが或る程度可能である。プログラムのインスタンスを実行するのに、そのプログラムのローカルで格納されたコピーを既に有するコンピュータシステム、またはローカルで格納された1つまたは複数のコピーを有するグループに属するコンピュータシステムを選択することにより、プログラムのコピーを獲得することに基づくプログラム実行起動待ち時間を短縮するなどの、様々な利益が獲得可能である。或るグループ内の或るコンピュータシステムが、実行されるべきプログラムのローカルコピーを格納すると、プログラム実行サービスは、例えば、ローカルで格納されたコピーを有するコンピュータシステムが、プログラムのインスタンスを実行するのに十分なリソースを現在有していない場合や、ローカルで格納されたコピーを有するコンピュータシステムが、プログラムの1つまたは複数のインスタンスを既に実行している場合などの、様々な理由で、プログラムのインスタンスを現在実行するのに、そのグループ内の他の1つまたは複数のコンピュータシステムを選択することが可能である。
【0013】
さらなる実施形態において、プログラム実行サービスは、他の様々な要因で、プログラムのインスタンスを実行するのに1つまたは複数のコンピュータシステムを選択できる。例えば、ユーザが、指示されたプログラムの複数のインスタンスが同時に実行されるべきことを要求すると、プログラム実行サービスは、これらのプログラムインスタンスの実行を、異なるグループのメンバであるコンピュータシステムの間に分散させて、グループ固有のネットワーク停止、または他の問題に直面して、より高い信頼性をもたらすようにすることを選ぶことができる。同様に、一部の実施形態では、プログラムの複数のインスタンスが、単一のコンピュータシステム上ではなく、複数のコンピュータシステム上で実行されることが可能である(その単一のコンピュータシステムが、それらの複数のインスタンスを実行するのに十分なリソースを有する場合でさえ)。プログラムインスタンスのそのような分散により、例えば、プログラムインスタンスのすべてを代わりに実行する単一のコンピュータシステムの障害、またはその単一のコンピュータシステムに対する接続が失われたことに直面しても、より高い信頼性がもたらされることが可能である。さらに、プログラム実行サービスによって管理されるコンピュータシステムが、物理的に(例えば、地理的に)分離している場合、プログラム実行サービスは、単一のデータセンタ内に配置されたコンピュータシステム上でプログラムの複数のインスタンスを実行して、実行中のプログラムのインスタンス間の通信のために比較的高いネットワーク帯域幅を提供するようにするよう、ユーザによって命令されることが可能であり、または、それ以外で選ぶことが可能である。あるいは、プログラム実行サービスは、プログラムインスタンスが、相互通信をほとんど、または全く行わない場合、さらに/または様々なプログラムインスタンスが、地理的に分散している数名の別個のエンドユーザまたはいくつかの別個のアプリケーションをサポートする場合など、複数の別個のデータセンタにおいて複数のプログラムインスタンスを実行するよう命令されることが可能であり、またはそれ以外で選ぶことが可能である。
【0014】
プログラム実行サービスは、プログラムのインスタンスを実行する際に使用すべき1つまたは複数のコンピュータシステムを決定した後、それらのプログラムインスタンスの実行を様々な仕方で開始することができる。例えば、システムマネージャモジュールが、選択されたコンピュータシステムに命令及び他の様々な実行情報を与えることができる。他のそのような情報には、例えば、プログラムのローカルコピーを格納する、または格納することが可能な他の1つまたは複数のコンピュータシステムの指示が含まれることが可能である。選択されたコンピュータシステムに与えられる他のタイプの情報には、どれだけの時間、プログラムインスタンスを実行するかに関する指示、プログラムインスタンスに割り当てられるべきリソースに関する指示、プログラムインスタンスに与えられるべきアクセス権の指示、プログラムインスタンスの実行をどのように管理すべきかに関する制限の指示(例えば、どのようなタイプの通信を、プログラムインスタンスが送信する、または受信するのが許されるべきか)が含まれることが可能である。
【0015】
選択されたコンピュータシステムが、指示されたプログラムの1つまたは複数のインスタンスを実行するように通知された後、選択されたコンピュータシステムは、受信された命令または他の関連する情報(例えば、事前定義されたプリファレンスまたは要件)に従ってプログラムインスタンス実行を実行しようと試みる。このプログラム実行通知は、少なくとも一部の実施形態では、選択されたコンピュータシステムに関連するマシンマネージャモジュール(例えば、選択されたコンピュータシステム上で実行されるマシンマネージャモジュール、または選択されたコンピュータシステムが属するグループのために実行されるマシンマネージャモジュール)によって受信されることが可能である。そのような実施形態において、マシンマネージャモジュールは、プログラムインスタンスの実行を管理するように動作することが可能である。例えば、選択されたコンピュータシステムが、実行されるべき指示されたプログラムのローカルコピーを既に格納しているのではない状況において、マシンマネージャモジュールは、実行のため、ならびにオプションのローカルの格納のためにプログラムのコピーを入手する、またはそれ以外で獲得するように動作することが可能である。プログラムコピーの獲得には、例えば、通知の中で指示される、またはプログラムのコピーを要求もしくは取得するためにプログラムのローカルコピーを少なくとも格納している可能性があることが知られている1つまたは複数のコンピュータシステムまたは他のシステム(例えば、データストレージシステム)と連絡をとることが含まれることが可能である。プログラムコピーの獲得は、後述されるとおり、プログラムのコピーを、プログラムインスタンスを実行するよう受信される通知と一緒に受信することによることを含め、様々な実施形態において様々な仕方で実行可能である。後述されるとおり、プログラム実行サービスは、少なくとも一部の実施形態において、プログラムの実行を管理する様々な他のアクションを行うことができる。
【0016】
別の態様では、他のプログラムが、プログラムインスタンスを実行する要求をプログラムで開始すること、ならびに、場合により、様々な他のタイプの管理動作、提供動作、及び運営動作をプログラムで実行することを可能にするAPIが、提供されることが可能である。そのような動作には、ユーザアカウントの作成、実行リソースの予約、実行されるべき新たなプログラムの登録、グループ及びアクセスポリシーの管理、実行中のプログラムインスタンスの監視及び管理などが含まれるが、これらに限定されることはない。APIによって提供される機能は、例えば、プログラム実行サービスのコンピュータシステム上で実行されるプログラムインスタンスによることを含め、ユーザのためにクライアントコンピュータシステム及びクライアントデバイスによって呼び出すことが可能である。
【0017】
特定のタイプのコンピュータシステム上での特定のタイプのプログラムの実行が、特定の仕方で管理されるいくつかの実施形態が例示のため後段で説明される。これらの例は、例示のために提供され、かつ簡明さのために簡略化されている。本発明の技術は、いくつかが後段で説明される多種多様な他の状況においても使用可能であり、これらの技術は、仮想マシン、データセンタ、または他の特定のタイプのコンピュータシステムもしくはコンピュータシステム構成で使用されることに限定されない。
【図面の簡単な説明】
【0018】
図1】複数のコンピュータシステムがプログラムを交換し、実行する例示的な実施形態を示すネットワーク図である。
図2】プログラムのコピーを格納し、交換するコンピュータシステムのグループの例を示す図である。
図3】複数のコンピュータシステム上のプログラムの実行を管理するのに適した例示的なコンピュータシステムを示すブロック図である。
図4A】システムマネージャモジュールルーチンの実施形態を示す流れ図である。
図4B】システムマネージャモジュールルーチンの実施形態を示す流れ図である。
図5】マシンマネージャモジュールルーチンの実施形態を示す流れ図である。
図6】プログラム実行サービスクライアントルーチンの実施形態を示す流れ図である。
【発明を実施するための形態】
【0019】
図1は、複数のコンピュータシステムが、プログラム実行サービスの制御下などで、プログラムを交換し、実行する例示的な実施形態を示すネットワーク図である。特に、この例では、プログラム実行サービスが、データセンタ100内に配置された様々なコンピュータシステム上のプログラムの実行を管理する。データセンタ100は、複数のラック105を含み、各ラックは、複数のコンピュータシステム110a〜cを含むとともに、この例示的な実施形態では、ラックサポートコンピュータシステム122も含む。コンピュータシステム110a〜cはそれぞれ、1つまたは複数の仮想マシン120をホストするとともに、これらの仮想マシンを管理する別個のノードマネージャ115もホストする。各仮想マシン120は、プログラムのインスタンスを実行するための独立したコンピュータ環境を提供するように使用されることが可能である。ラックサポートコンピュータシステム122は、ラック、ならびに、場合により、データセンタ内に配置された他のコンピュータシステムにローカルの他のコンピュータシステムに、様々なユーティリティサービスを提供することができる。ユーティリティサービスには、例えば、他のコンピュータシステムのためのデータ格納及び/またはプログラム格納、他のコンピュータシステムをサポートする1つまたは複数のマシンマネージャモジュールの実行などが含まれることが可能である。各コンピュータシステム110は、代替として、別個のマシンマネージャモジュール(例えば、コンピュータシステムのノードマネージャの一部として提供される)を有することが可能であり、さらに/またはプログラムのローカルコピーを格納するローカルストレージ(図示せず)を有することが可能である。コンピュータシステム110a〜c及びラックサポートコンピュータシステム122はすべて、共通データ交換媒体を共有し、すべて、単一のグループの一部であることが可能である。この共通データ交換媒体は、例えば、データセンタ100内の他のラックまたはコンピュータシステムによって共有される1つまたは複数の外部データ交換媒体に接続されることが可能である。
【0020】
さらに、例示的なデータセンタ100は、ノードマネージャ125と共通データ交換媒体を共有するコンピュータシステム130a〜b及び135をさらに含み、ノードマネージャ125は、コンピュータシステム130a〜b及び135を管理する。また、コンピュータシステム135は、1名または複数名のユーザのためにプログラムインスタンスを実行する際に使用するための実行環境として、複数の仮想マシンをホストする一方で、コンピュータシステム130a〜bは、別個の仮想マシンをホストしない。オプションのコンピュータシステム145が、データセンタ100と外部ネットワーク170の相互接続地点において存在する。オプションのコンピュータシステム145は、ネットワークプロキシの役割をする、着信するデータ伝送及び/または発信されるデータ伝送を管理するなどの、いくつかのサービスを提供することができる。さらに、データセンタ内に配置された他のコンピュータシステム上(または、オプションとして、他の1つまたは複数のデータセンタ160において配置されたコンピュータシステム上)のプログラムの実行を管理することを支援するオプションのシステムマネージャコンピュータシステム140も、図示される。オプションのシステムマネージャコンピュータシステム140は、システムマネージャモジュールを実行することができる。前述したとおり、システムマネージャモジュールは、プログラムの実行を管理することに加えて、ユーザアカウントの管理(例えば、作成、削除、料金請求など)、実行されるべきプログラムの登録、格納、及び配布、プログラムの実行と関係するパフォーマンスデータ及び監査データの収集及び処理、プログラムの実行の代金の支払いを顧客、または他のユーザから得ることなどを含む、様々なサービスを提供することができる。
【0021】
データセンタ100は、ネットワーク170(例えば、インターネット)を介して、データセンタ100の運営者または第三者によって運用されることが可能なコンピュータシステム180及びデータセンタ160、並びにオプションのシステムマネージャ150を含む、他のいくつかのシステムに接続される。システムマネージャ140と同様の仕方で、システムマネージャ150は、様々な他のサービスを提供することに加えて、1つまたは複数のデータセンタ100及び/または160において配置されたコンピュータシステム上のプログラムの実行を管理することができる。例示的なシステムマネージャ150は、いずれの特定のデータセンタに対しても外部にあるものとして示されるものの、他の実施形態では、システムマネージャ150は、データセンタ160の1つなどの、データセンタ内に配置されてもよい。
【0022】
図2は、プログラム実行サービスなどのために、プログラムのコピーを格納し、交換するコンピュータシステムの2つのグループの例を示す。実際の実施形態では、グループ、コンピュータシステム、及びプログラムの数は、図2に示されるグループよりはるかに多くてもよいことが理解されよう。例えば、1つの例示的な実施形態として、1グループ当たり40のコンピュータシステムが存在し、1つのデータセンタ当たり100のグループが存在して、1つのデータセンタ当たり4000のコンピュータシステムとなることが可能であり、各コンピュータシステムは、顧客のプログラムインスタンスを実行する15の仮想マシンをホストすることが可能である。さらに、各グループが、2テラバイト(TB)のストレージを有する専用のコンピュータシステムを含む場合、1グループ当たり2000の1GBの仮想マシンイメージプログラムコピーが格納可能であり、その場合1つのデータセンタ当たり合計で20万のコピーとなる。あるいは、1グループ当たり40のコンピュータシステムのそれぞれが、100GBのローカルストレージを有する場合、1グループ当たり4000の1GBの仮想マシンイメージプログラムコピーが格納可能であり、その場合1つのデータセンタ当たり合計で40万のコピーとなる。ホストされる各仮想マシンが、1つのプログラムを実行する場合、そのようなデータセンタは、同時に6000ものプログラムインスタンスを実行することができる。他の実施形態では、他の数のグループ、他の数のコンピュータシステム、及び他の数のプログラムが使用されることが可能であること、ならびにはるかに小さいサイズ及び/または可変サイズのプログラムが、格納され、実行されることが可能であることを理解されたい。
【0023】
図2は、2つのグループ、グループA200及びグループB250を示す。グループAは、MA1、MA2及びMA3とそれぞれ名付けられた3つの計算機210a〜cを含む。グループB250は、MB1、MB2及びMB3とそれぞれ名付けられた3つの計算機260a〜cを同様に含む。各グループは、異なるタイプの異なる数の計算機を有してもよく、一部の実施形態では、計算機は、複数のグループのメンバであることも、いずれのグループのメンバでもないことも可能である。別の箇所で詳述されるように、各グループの計算機は、そのグループ(図示せず)に関する共通のデータ交換媒体を共有する。
【0024】
例示的な例において、図2の各計算機は、ローカルプログラムリポジトリ(例えば、ハードディスクまたは他のストレージデバイスによって提供される永続ストレージの一部としてのリポジトリ)の中に1つまたは複数のローカルプログラムコピーを格納できる。計算機MA1は、計算機MA1のプログラムリポジトリ220aの中に格納されたプログラムP1、P2、P3、P5及びP9のローカルコピーを有し、ボックス230aの中に示されるとおり、プログラムP1のインスタンスを現在、実行している。各計算機上のプログラムリポジトリの記憶容量は、最大で5つまでのプログラムコピーに限られ、各コンピュータシステムの実行リソースは、最大で同時に実行される2つまでのプログラムインスタンスに限られる。この例において用いられるプログラムリポジトリのサイズ、及び実行されるプログラムの数の限度は単なる例示であり、他の実施形態では、各コンピュータシステムは、別個のリソースをさらに有することが可能である。さらに、プログラムリポジトリのサイズは、多くの実施形態において、プログラムインスタンスを実行する際に使用するのに利用可能なメモリのサイズより、1桁または数桁大きい大きさであることが可能であるが、そうであることは、必ずしも当てはまるわけではない。他の実施形態では、同時に実行されるプログラムインスタンスの最大数は、プログラムリポジトリの中にローカルで格納可能なプログラムコピーの数より多くてもよいし、少なくてもよいし、またはそのような数と同一であってもよい。したがって、少なくとも一部の計算機または他のシステムは、ローカルプログラムリポジトリと、プログラムインスタンスを実行する利用可能なリソースのいずれかだけを提供してもよい。最後に、別の箇所で詳述するとおり、一部の実施形態では、プログラムのうち少なくともいくつかのプログラムのローカルで格納されたコピーは、プログラムリポジトリが容量に達した後、他のプログラムコピーのためのスペースをあけるなどのために、いくつかの状況下で、ストレージから強制退去させられてもよいし、または除外されてもよい。一部の実施形態は、プログラムのうち少なくともいくつかのプログラムの実行中のインスタンスは、プログラム実行リソースが容量に達した後、他の実行されるプログラムインスタンスのためのスペースをあけるなどのために、いくつかの状況下で、実行を終了してもよいし、または実行から除外されてもよい。
【0025】
複数の例示的なシナリオが、プログラム実行サービスの一実施形態のいくつかのタイプの動作の例を与えるように例示的な目的で本明細書において提示される。プログラム実行サービスは、指定され、事前定義され、さらに/または学習された1つまたは複数のポリシーを使用して、計算機上の実行されるプログラムインスタンスの配置に影響を与えることができ、以下のとおり、簡略化されたポリシーセットが、この例において使用される。第1に、プログラムの複数のインスタンスは、可能な場合、複数のグループの計算機上で実行される。第2に、プログラムの複数のインスタンスは、可能な場合、複数の計算機上で実行される。第3に、プログラムのインスタンスは、可能な場合、プログラムリポジトリの中にそのプログラムのコピーを既に格納している計算機上で実行される。第4に、プログラムのインスタンスは、可能な場合、プログラムリポジトリの中にそのプログラムのローカルコピーを格納している少なくとも1つの計算機を有するグループのメンバである計算機上で実行される。最後に、プログラムのインスタンスは、可能な場合、最も多くの利用可能な実行リソースを有する計算機上で実行される。
【0026】
これら6つのコンピュータシステムに関するプログラム実行を管理する例示的な例から、プログラム実行サービスのクライアントが、プログラムP7の2つのインスタンスの実行を要求したものと想定されたい。この場合、前述したポリシーを所与として、プログラム実行サービスの例示的な実施形態は、グループAの中でP7の1つのインスタンスを実行し、グループBの中でP7の1つのインスタンスを実行することを選択する可能性が高い。なぜなら、そのような配置が、複数のグループにわたってコピーを分散させる傾向にあるためである。グループAの計算機間では、このグループの計算機のいずれも、このプログラムのローカルコピーを格納しないので、プログラム実行サービスは、計算機MA3が、2つのプログラム(P8及びP9)を既に実行しているので、計算機MA3上でP7のコピーを実行することを選択しない可能性が高い。計算機MA1と計算機MA2の間では、MA2が現在プログラムを全く実行していないため、MA2が実行のために選択される。一実施形態において、計算機MA2は、実行のため、ならびに、オプションとして、リポジトリ220bの中にローカルで格納するために、グループAの外部の1つまたは複数のコンピュータシステムからプログラムP7のコピーを獲得する。例えば、計算機MA2は、プログラム実行サービスの計算機のすべてに関するリモートプログラムリポジトリ、及び/またはプログラム実行サービスに外部のロケーションから、プログラムP7のコピーを獲得することが可能である。グループBの計算機に関して、プログラム実行サービスは、P7プログラムインスタンスを実行するのに3つの計算機のいずれを選択することも可能である。なぜなら、これらのコンピュータシステムのいずれも、このプログラムのローカルコピーを格納しておらず、これらの計算機のそれぞれが、1つのプログラムを実行しているからである。しかし、プログラム実行サービスは、計算機MB3が、現在、計算機MB3のプログラムリポジトリの中に1つのプログラムコピーしか格納していないため、計算機MB3を選択することができる。したがって、計算機MB3は、計算機MB3のプログラムリポジトリから格納されたプログラムコピーを強制退去させる必要なしに、所望される場合、プログラムP7のローカルコピーを格納することができる。
【0027】
次に、やはり、図2に示される初期条件から始めて、プログラム実行サービスのクライアントが、プログラムP6の2つのインスタンスの実行を要求したものと想定されたい。この場合、前述したポリシーを所与として、プログラム実行サービスの例示的な実施形態は、グループAの中でP6の1つのインスタンスを実行し、グループBの中のP6の1つのインスタンスを実行することを選択する可能性が高い。なぜなら、そのような配置が、複数のグループにわたってインスタンスを分散させるからである。グループAの計算機の間では、計算機MA2がやはり選択される可能性が、これらのコンピュータシステムのいずれも、プログラムP6のローカルコピーを格納しておらず、計算機MA2が、ビジーである度合いが最も低いため、高い。グループBの同等にビジーである計算機の間では、グループ内の複数の計算機にわたって単一のプログラムのコピーを分散させることを選好するポリシーのため、MB2だけが、そのプログラムのローカルコピーを格納しているという事実にもかかわらず、計算機MB2は選択されないことがある。しかし、信頼性より効率を重んじることを反映する異なるポリシーを有する他の実施形態は、P6のコピーがMB2のプログラムリポジトリの中に既に格納されているために、計算機MB2上でP6を実行することを実際に選択することが可能であることに留意されたい。残りの候補の計算機MB3とMB1の間では、プログラム実行サービスは、MB3のプログラムリポジトリからプログラムのコピーを可能性として強制退去させる必要が全くないため、計算機MB3を選好することが可能である。したがって、MB3が、この実施形態では、実行のため、ならびにローカルリポジトリ270cの中に場合により格納するため、MB2からプログラムP6のコピーを獲得する。
【0028】
次に、やはり、図2に示される初期条件から始めて、プログラム実行サービスのクライアントが、プログラムP4の1つのインスタンスの実行を要求したものと想定されたい。この場合、前述したポリシーを所与として、プログラム実行サービスの例示的な実施形態は、計算機MB1上でP4を実行することを選択する可能性が高い。特に、既に実行されているP4のインスタンスは、全く存在せず、1つのインスタンスだけしか、実行されるように要求されなかったので、複数のグループの間でプログラムインスタンスを分散させることを選好するポリシー、及びプログラムの複数の実行されるインスタンスを単一の計算機上に配置することを回避することを選好するポリシーは、適用されない。したがって、MB1は、プログラムP4のローカルコピーをMB1のプログラムリポジトリの中に既に格納しているので、MB1が、P4を実行するように選択される可能性が高い。
【0029】
次に、やはり、図2に示される初期条件から始めて、プログラム実行サービスのクライアントがプログラムP10の1つのインスタンスの実行を要求したものと想定されたい。この場合、前述したポリシーを所与として、プログラム実行サービスの例示的な実施形態は、MA2上でP10を実行することを選択する可能性が高い。前述の例の場合と同様に、複数のグループの間で実行のためのプログラムのインスタンスを分散させることを選好するポリシー、及びプログラムの複数のインスタンスを単一の計算機上に配置することを回避するポリシーは、適用されない。計算機MA3は、計算機MA3のリポジトリの中にP10のコピーを既に格納しているため、魅力的な候補であるが、2つの実行されるプログラム(P8及びP9)という計算機MA3の限度に既に達しているため、P10を現在、実行する容量を有さない。このことにより、計算機MA1及びMA2が、リポジトリの中にプログラムP10の格納されたローカルコピーを有する計算機(MA3)と同一のグループに入っているため、グループB内のいずれの計算機よりも好ましいものとして残される。MA1とMA2の間では、MA2が、ビジーである度合いが最も低いため、選択される可能性が高く、MA2は、MA3からプログラムP10のコピーを獲得する。
【0030】
次に、やはり、図2に示される初期条件から始めて、プログラム実行サービスの例示的な実施形態のクライアントが、プログラムP3のさらなる6つのインスタンスの実行を要求したものと想定されたい。この場合、前述したポリシーを所与として、プログラム実行サービスは、計算機MA2上で2つのインスタンスを、計算機MA1、MB1、MB2及びMB3の各マシン上で1つのインスタンスを実行する可能性が高い。計算機MA3は、2つの実行されるプログラム(P8及びP9)という計算機MA3の限度に既に達しているため、インスタンスは、この計算機上で全く実行されない可能性が高い。この場合、一部の実施形態は、プログラムP3のローカルコピーを格納するために、余分の容量を有さないプログラムリポジトリを有する計算機から、プログラムの格納されたローカルコピーを強制退去させることが可能であることに留意されたい。例えば、実行されるべきプログラムのコピーを、実行に先立ってローカルプログラムリポジトリの中に常に格納することを選択する実施形態において、計算機MA1及びMB1が、それぞれのプログラムリポジトリから1つのローカルプログラムコピーを強制退去させることが可能である。この場合、実行されるプログラムの複数のインスタンスを複数の計算機にわたって分散させることを選好するポリシーに反して、計算機MA2及びMB3がそれぞれ、P3の2つのインスタンスを実行することになることにも留意されたい。しかし、この所与の例においてP3プログラムインスタンスを実行するためのさらなる計算機は存在しないため、プログラム実行サービスは、その要求が満たされるとすれば、P3の複数のインスタンスを単一の計算機上で実行することを選択することになる。代替として、一部の実施形態では、プログラム実行サービスは、異なるウェイトをポリシーに適用して、プログラム実行サービスが、計算機MA1、MA2、MB1及びMB3の各マシン上で単一のインスタンスを実行するなど、要求された数未満のインスタンスを実行することを代わりに選択することが可能である。同様に、一部の実施形態では、プログラムP3の6つを超えるさらなるインスタンスが、要求され、プログラム及び/または要求側が、十分に高い優先度である場合、プログラム実行サービスは、別のプログラムインスタンス(例えば、MA3上のプログラムP8及び/またはP9のインスタンス)の実行を終了させること、及び/または現在、実行されているプログラムインスタンスの1つが自然に終了した後、P3のために次に利用可能なプログラムインスタンス実行を予約することになどにより、P3のさらなるインスタンスを実行することを代わりに選択してもよい。
【0031】
現在の例を引き続き参照すると、計算機MB1は、グループBからのMB2とMB3がともに、プログラムのローカルコピーを格納し、グループAの計算機MA1及びMA2も同様であるので、実行のためにプログラムP3のコピーを獲得する複数の利用可能なリソースを有する。この実施形態では、MB1は、MB1自らのグループのMB2とMB3がともに、プログラムP3の一部分(例えば、Xが、プログラム実行サービスによって選択される数である、最初のXバイト及び第2のXバイト)を提供することを要求する。次に、計算機MB1は、応答が、それらの計算機からどれだけ迅速に受信されるかを監視し、プログラムの残りの部分の少なくとも大半(さらに、場合により、すべて)を供給するよう、より応答性に優れた計算機に要求する。他の実施形態では、計算機MB1のためのプログラムP3のコピーの獲得は、計算機MB2とMB3のいずれかだけからプログラムコピーを要求すること、グループA内の計算機MA1及び/またはMA2(グループBのMB2及びMB3に加えてであれ、MB2及びMB3の代わりにであれ)からプログラムコピーの少なくともいくつかの部分を要求することなどによって、他の仕方で実行されてもよい。
【0032】
図3は、プログラム実行サービスシステムの或る実施形態を実行することなどによって、管理されている複数のコンピュータシステム上のプログラムの実行を管理するのに適した例示的なコンピュータシステムを示すブロック図である。この例において、コンピュータシステム300は、システムマネージャモジュールの或る実施形態を実行して、管理されている複数のコンピュータシステム上のプログラムの実行を調整する。一部の実施形態では、コンピュータシステム300は、図1のシステムマネージャ140または150に対応することが可能である。さらに、1つまたは複数のマシンマネージャコンピュータシステム370がそれぞれマシンマネージャモジュール382を実行して、関連する1つまたは複数のコンピュータシステムによるプログラムの獲得及び実行を円滑にする。一部の実施形態では、この1つまたは複数のマシンマネージャモジュール382のそれぞれは、図1のノードマネージャ115または125のいずれかに対応することが可能である。この例では、複数のマシンマネージャコンピュータシステム370が提供され、各システム370が、システムマネージャモジュールによって管理されているプログラム実行サービスの複数のコンピュータシステムの1つとして動作する。図示される例では、コンピュータシステム370の各システム上で、別個のマシンマネージャモジュール382が実行される。他の実施形態では、マシンマネージャコンピュータシステム370の各システム上のマシンマネージャモジュール382は、他の1つまたは複数のコンピュータシステム(例えば、他のコンピュータシステム388)を代わりに管理することが可能である。
【0033】
この例示的な実施形態では、コンピュータシステム300には、「CPU」(中央処理装置)335と、ストレージ340と、メモリ345と、様々な「I/O」(入出力)デバイス305とを含み、図示されるI/Oデバイスには、ディスプレイ310、ネットワーク接続315、コンピュータ可読媒体ドライブ320、及び他のI/Oデバイス330が含まれる。図示されていない他のI/Oデバイスには、キーボード、マウスもしくは他のポインティングデバイス、マイクロホン、スピーカなどが含まれてもよい。図示される実施形態では、システムマネージャモジュール350が、他のコンピュータシステム上のプログラムの実行を管理するためにメモリ345の中で実行されており、他の1つまたは複数のプログラム355が、オプションとして、メモリ345の中で実行されてもよい。コンピュータシステム300とコンピュータシステム370は、互いに接続されるとともに、ネットワーク386を介して他のコンピュータシステム388にも接続される。
【0034】
各コンピュータシステム370は、CPU374と、様々なI/Oデバイス372と、ストレージ376と、メモリ380とを同様に含む。図示される実施形態では、マシンマネージャモジュール382が、プログラム実行サービスの顧客のためなど、プログラム実行サービスのためにコンピュータシステム上の他の1つまたは複数のプログラム384の実行を管理するために、メモリ380の中で実行されている。一部の実施形態では、コンピュータシステム370の一部または全ては、複数の仮想マシンをホストすることが可能である。そうである場合、実行されるプログラム384のそれぞれは、ホストされる別個の仮想マシン上で実行される仮想マシンイメージ全体(例えば、オペレーティングシステム、及び1つまたは複数のアプリケーションプログラムを有する)であってもよい。マシンマネージャモジュール382は、その他のホストされる仮想マシンを監視することができる特権的仮想マシンなどの、別のホストされる仮想マシン上で同様に実行されることが可能である。他の実施形態では、実行されるプログラムインスタンス384及びマシンマネージャモジュール382は、コンピュータシステム370上で実行される単一のオペレーティングシステム(図示せず)上で別々のプロセスとして実行可能である。このため、この例示的な実施形態では、プログラム実行サービスの能力は、ネットワーク386を介して通信して、管理されているコンピュータシステム上のプログラムの分散、獲得及び実行を共同で管理するシステムマネージャ350とマシンマネージャモジュール382との対話(interaction)によって提供される。
【0035】
コンピュータシステム300及び370などのコンピュータシステムは、単に例示的であり、本発明の範囲を限定することは意図していないことが理解されよう。コンピュータシステム300及び370は、ネットワークアクセス可能なデータベースシステムまたは他のデータストレージデバイスを含む、図示されていない他のデバイスに接続可能である。より一般的に、計算機またはコンピュータシステムまたはデータストレージシステムは、限定なしに、デスクトップコンピュータもしくはラップトップコンピュータ、データベースサーバ、ネットワークストレージデバイス及び他のネットワークデバイス、PDA、セル電話機、無線電話機、ページャ、電子オーガナイザ、インターネット機器、テレビベースのシステム(例えば、セットトップボックス及び/またはパーソナル/デジタルビデオレコーダを使用する)、ならびに適切な相互通信能力を含む他の様々な消費者製品を含む、対話し、説明されたタイプの機能を実行することができるハードウェアまたはソフトウェアの任意の組合せを含んでもよい。さらに、例示されるシステムモジュールによって提供される機能は、一部の実施形態では、より少ないモジュールに組み合わされても、さらなるモジュールに分散されてもよい。同様に、一部の実施形態では、例示されるモジュールのうちいくつかのモジュールの機能は、提供されなくてもよく、さらに/または他のさらなる機能が、利用可能であってもよい。
【0036】
また、様々なアイテムが、使用されている間、メモリ内、またはストレージ上に格納されているものとして例示されるが、これらのアイテム、及びこれらのアイテムの部分は、メモリ管理及びデータ完全性の目的で、メモリと他のストレージデバイスとの間で転送されることが可能であることも理解されよう。代替として、他の実施形態では、ソフトウェア構成要素及び/またはソフトウェアモジュールのいくつか、またはすべては、別のデバイス上のメモリの中で実行されて、コンピュータ間通信を介して、例示されるコンピュータシステムと通信してもよい。システムモジュールまたはデータ構造のいくつか、またはすべては、ハードディスク、メモリ、ネットワーク、適切なドライブによって、または適切な接続を介して読み取られるべきポータブルメディア製品などのコンピュータ可読媒体上に格納されることも可能である(例えば、ソフトウェア命令、または構造化されたデータとして)。また、システムモジュール及びデータ構造は、無線ベースの媒体及び有線/ケーブルベースの媒体を含め、様々なコンピュータ可読伝送媒体上で、生成されたデータ信号として(例えば、搬送波、または他のアナログもしくはデジタルの伝搬される信号の一部として)伝送されることも可能であり、様々な形態(例えば、単一のアナログ信号、もしくは多重化されたアナログ信号の一部として、または複数の離散的なデジタルパケットもしくはデジタルフレームとして)をとることが可能である。また、そのようなコンピュータプログラム製品は、他の実施形態の他の形態をとることも可能である。したがって、本発明は、他のコンピュータシステム構成で実施されてもよい。
【0037】
図4A図4Bは、システムマネージャモジュールルーチン400の一実施形態の流れ図を示す。このルーチンは、例えば、プログラム実行サービスのために複数のコンピュータシステム上の複数のプログラムの実行を管理するようになど、図1のシステムマネージャモジュール140及び/または図3のシステムマネージャモジュール350の実行によって提供されることが可能である。
【0038】
このルーチンは、ステップ405で始まり、ステータスメッセージ、または1つまたは複数のプログラムの実行と関係する要求を受信する。ルーチンは、次に、ステップ410に進み、受信したメッセージまたは要求のタイプを特定する。指示された1つまたは複数のプログラムの1つまたは複数のインスタンスを実行する要求が受信されたと判定された場合、ルーチンは、ステップ415に進む。ステップ415で、ルーチンは、指示されたプログラムを実行すべきコンピュータシステムの1つまたは複数のグループを識別する。ステップ420で、ルーチンは、指示されたプログラムのインスタンスを実行すべき識別された1つまたは複数のグループの各グループ内の1つまたは複数のコンピュータシステムを選択する。この1つまたは複数のグループの選択は、グループが、そのプログラムの1つまたは複数のローカルコピーを格納する1つまたは複数のコンピュータシステムを有するかどうか、適切なコンピュータリソースの利用可能性、及びそれらのグループのコンピュータシステムのロケーションなどの、様々な要因に基づくことが可能である。識別されたグループ内の1つまたは複数のコンピュータシステムの選択は、同様に、そのグループのコンピュータシステムの間におけるプログラムの格納されたローカルコピーのロケーション、及びコンピュータリソース利用可能性などの、様々な要因に基づいてもよい。前述したとおり、ユーザ、または他の要求者によって指定された基準を含め、様々な指定されたポリシー及び他の基準が、様々な実施形態におけるグループ及びコンピュータシステムの選択の一環として使用可能である。さらに、他の実施形態において、グループ及び特定のコンピュータシステムは、グループにかかわらず(例えば、グループが全く使用されない場合)、1つまたは複数の最も適切なコンピュータシステムを単に選択するようになど、個々に選択されないことが可能である。
【0039】
次に、ステップ425で、ルーチンは、実行されるべきプログラムの指示を、それらのプログラムインスタンスを実行する命令を含むメッセージを送信することなどによって、選択されたコンピュータシステム、及び/またはそれらのコンピュータシステムに関連するマシンマネージャモジュールに与える。例示される実施形態では、個別のマシンマネージャモジュールが、コンピュータシステムの各システム上で実行され、当該メッセージを受信する。前述したとおり、実行されるべきプログラムのコピーが獲得されるべき1つまたは複数のコンピュータシステムをどのように識別するかの指示を含め、様々なタイプの情報が、マシンマネージャモジュールに与えられることが可能である。代替として、一部の実施形態では、システムマネージャは、指示されたプログラムのコピーをコンピュータシステムに直接に供給し、さらに/またはマシンマネージャモジュールまたは他のさらなるモジュールの介入なしに、コンピュータシステム上でプログラムの実行を開始することが可能である。
【0040】
ステップ410で、代わりに、ユーザからなど、新たなプログラムを登録する要求が受信されたと判定された場合、ルーチンは、ステップ440に進み、そのプログラムの指示、ならびにそのプログラムを登録したユーザの身元などの任意の関連する管理情報を格納する。次に、ステップ445で、ルーチンは、オプションとして、1つまたは複数のコンピュータシステムの指示されたプログラムのコピーの配信を開始する。例えば、一部の実施形態では、システムマネージャは、後のプログラム実行開始の効率を高めるために、指示されたプログラムの格納されたコピーを有する1つまたは複数のデータセンタ内の1つまたは複数のコンピュータシステム、及び/または1つまたは複数のリポジトリの中に入れる(seed)ことを選択することができる。
【0041】
ステップ410で、代わりに、管理されるコンピュータシステムの1つまたは複数のシステムの動作を反映するステータスメッセージが受信されたと判定された場合、ルーチンは、ステップ450に進み、その1つまたは複数のコンピュータシステムに関するステータス情報を更新する。例えば、マシンマネージャモジュールは、関連するコンピュータシステムが、実行されているプログラムインスタンス、及び/または格納されているローカルプログラムコピーを変更したと判定することができ、それに応じて、ステータスメッセージをシステムマネージャに与えることができる。一部の実施形態では、ステータスメッセージは、プログラムを実行すべき適切なコンピュータシステムの選択の際に使用するために、管理されるコンピュータシステムの動作上のステータスについてシステムマネージャに常に知らせておくために、マシンマネージャモジュールによって定期的に送信される。他の実施形態では、ステータスメッセージは、他の時点で(例えば、関係のある変化が生じた場合にはいつでも)送信可能である。他の実施形態では、システムマネージャモジュールは、代わりに、所望に応じて、マシンマネージャモジュールから情報を要求することができる。ステータスメッセージは、或る特定のコンピュータシステム上で現在、実行されているプログラムの数及びID、或る特定のコンピュータシステム上のローカルプログラムリポジトリの中に現在、格納されているプログラムのコピーの数及びID、或るコンピュータシステムに関するパフォーマンス関連の情報、及びリソース関連の情報(例えば、CPU、ネットワーク、ディスク、メモリなどの利用率)、或るコンピュータシステムに関する構成情報、及び或る特定のコンピュータシステム上のハードウェアまたはソフトウェアと関係する誤りまたは障害のレポートなどの、様々なタイプの情報を含むことが可能である。
【0042】
ステップ410で、代わりに、他の何らかのタイプの要求が受信されたと判定された場合、ルーチンは、ステップ455に進み、適宜、他の指示された動作を実行する。そのような動作には、例えば、システム内の他の構成要素からのステータスクエリに応答すること、現在、実行されている1つまたは複数のプログラムの実行を一時停止する、または終了すること、現在、実行されているプログラムを1つのコンピュータシステムから別のコンピュータシステムに移すこと、システムマネージャをシャットダウンすること、または再起動することなどが含まれることが可能である。
【0043】
ステップ425、445、450及び455の後、ルーチンは、ステップ430に進み、ユーザに関する料金請求情報を計算すること、表示情報を更新すること、ノードマネージャまたは他の構成要素に定期的クエリを送信すること、ログまたは他の情報を交替させることなどの任意のハウスキーピングタスクをオプションとして実行する。次に、ルーチンは、ステップ495に進み、続けるかどうかを判定する。続ける場合、ルーチンは、ステップ405に戻り、続けない場合、ステップ499に進み、リターンする。
【0044】
図5は、マシンマネージャモジュールルーチン500の流れ図を示す。ルーチンは、管理されている関連する1つまたは複数のコンピュータシステムのためのプログラムコピーの獲得、及びプログラムインスタンスの実行を円滑にするためなどに、例えば、図3のマシンマネージャモジュール382、及び/または図1のノードマネージャ115または125の実行によって提供されることが可能である。例示される実施形態では、各マシンマネージャモジュールルーチンは、1つまたは複数のプログラムインスタンスを実行するとともに、1つまたは複数のローカルプログラムコピーを格納するようにも構成された単一のコンピュータシステムのために実行され、マシンマネージャモジュールは、図4A図4Bに関連して説明されるシステムマネージャモジュールルーチンと協調して動作して、プログラム実行サービスのために、管理されるコンピュータシステムに関するプログラムの実行を管理する。
【0045】
ルーチンは、ステップ505で始まり、システムマネージャモジュールなどから、1つまたは複数のプログラムの実行と関係する要求を受信する。ルーチンは、ステップ510に進み、指示されるプログラムを実行する、または格納する要求が受信されたかどうかを判定する。受信された場合、ルーチンは、ステップ515に進み、指示されたプログラムが、管理されているコンピュータシステムのローカルプログラムリポジトリの中に現在、格納されているかどうかを判定する。格納されていない場合、ルーチンは、ステップ540に進み、ローカルプログラムリポジトリが、指示されたプログラムを格納する十分な容量を有するかどうかを判定する。十分な容量を有さない場合、ルーチンは、ステップ545に進み、ステップ505で受信された要求の中で示されるとおり、またはそれ以外でマシンマネージャモジュールによって使用される強制退去ポリシーに基づいて、ローカルプログラムリポジトリから1つまたは複数のプログラムを強制退去させる。ステップ545の後、またはステップ540で、代わりに、ローカルプログラムリポジトリが、指示されるプログラムのローカルコピーを格納する十分な容量を有すると判定された場合、ルーチンは、ステップ550に進み、他の特定された1つまたは複数のコンピュータシステムから、指示されたプログラムのコピーを獲得する。ルーチンは、ステップ505で受信された要求の一部として受信された情報に基づくことを含め、様々な仕方でプログラムの格納されたローカルコピーを有する他のコンピュータシステムを特定することができる。さらに、近隣コンピュータシステムへのブロードキャスト、中央ディレクトリに対する要求、及び/またはピアツーピアデータ交換などの他の1つまたは複数の技術を使用することも可能である。他の実施形態では、プログラムのコピーは、ステップ505で、代わりに、要求と一緒に提供可能である。次に、ルーチンは、ステップ555に進み、指示されたプログラムの獲得されたコピーをローカルプログラムリポジトリの中に格納する。ステップ555の後、またはステップ515で、指示されたプログラムが、リポジトリの中に既に入っていたと判定された場合、ルーチンは、ステップ520に進み、実行されるべきプログラムの指示が受信されたかどうかを判定する。受信された場合、ルーチンは、ステップ525に進み、指示されたプログラムの実行を開始する。
【0046】
ステップ510で、代わりに、プログラムを格納する、または実行する要求が、受信されなかったと判定された場合、ルーチンは、ステップ535に進み、適宜、他の指示された動作を実行する。例えば、他の動作には、受信された要求に応答して、さらに/または、プログラムが不規則に、またはリソースを過度に利用して動作していたことなどの、プログラムのパフォーマンスに関して収集された情報に基づいてなど、1つまたは複数のプログラムの実行を一時停止する、または終了することが含まれてもよい。さらに、他の動作には、現在、実行されているプログラムに関するステータス情報、またはローカルプログラムリポジトリの内容などを求める要求に応答することが含まれてもよい。
【0047】
ステップ535、ステップ525の後、またはステップ520で、代わりに、実行されるべきプログラムの指示が受信されなかった場合、ルーチンは、ステップ530に進み、1つまたは複数のシステムマネージャモジュールにステータス情報メッセージを送信する。例示される実施形態では、ルーチンは、ノードマネージャによって管理されるコンピュータシステムの状態をシステムマネージャに常に知らせておくために、動作が行われると毎回、システムマネージャモジュールにステータス情報メッセージを送信する。他の実施形態では、ステータス情報は、他の時点で、他の仕方で送信可能である。ステップ530の後、ルーチンは、ステップ595に進み、続けるかどうかを判定する。続ける場合、ルーチンは、ステップ505に戻り、一方、続けない場合ステップ599に進み、リターンする。本明細書で示されていないが、ルーチンは、必要に応じて、様々な時点で様々なハウスキーピング動作を実行することもできる。
【0048】
図6は、プログラム実行サービスクライアントルーチンの実施形態の流れ図を示す。ルーチンは、例えば、人間のユーザがプログラム実行サービスと対話することを可能にする対話型コンソールを提供するなどの、図1に示されるコンピュータシステム180の1つのシステム180上に常駐するアプリケーションによって提供されることが可能である。ルーチンは、代替として、プログラム実行サービスによって、ユーザにインタラクティブに、さらに/またはユーザのプログラムにプログラムで提供される能力を反映してもよい。代替として、このルーチンは、管理されるコンピュータシステムの1つのシステム上のプログラム実行サービスによって実行されているプログラムの1つの一部であって、そのようなプログラムが、負荷平衡化、増加または低減したデマンドを満たすなどの目的で、さらなるプログラムインスタンスを動的に実行できるようにすることなどが可能である。
【0049】
ルーチンは、ステップ605で始まり、1つまたは複数のプログラムの実行と関係する要求を受信する。ステップ610で、ルーチンは、受信したメッセージのタイプを特定する。この要求が、新たなプログラム(または以前に登録されたプログラムの新たなバージョン)の登録と関係する場合、ルーチンは、ステップ625に進み、プログラム実行サービス(例えば、システムマネージャモジュール)に登録されるべき新たなプログラムの指示を送信する。この指示は、プログラムのコピー、またはプログラムをどのように獲得すべきかの命令を含むことが可能である。要求が、ステップ610で、代わりに、プログラムの実行と関係すると判定された場合、ルーチンは、ステップ615に進み、実行されるべきプログラムの1つまたは複数のインスタンスを実行する要求をプログラム実行サービスに(例えば、システムマネージャモジュールに)送信する。例えば、ルーチンは、プログラム実行サービスから以前に受信した指示を使用して、プログラムインスタンスを実行してもらうプログラム及び/またはユーザを識別することができる。ステップ610で、代わりに、他の何らかのタイプの要求が受信されたと判定された場合、ルーチンは、ステップ625に進み、適宜、他の指示された動作を実行する。例えば、ルーチンは、指示された1つまたは複数のプログラムインスタンスを或る将来の時点で実行するコンピュータリソースを予約する要求をプログラム実行サービスに送信し、1つまたは複数のプログラムの現在または以前の実行に関するステータスクエリをプログラム実行サービスに送信し、ユーザ関連の情報を(例えば、プログラム実行サービスにユーザを登録することの一環として)提供・変更し、以前に登録されたプログラムを登録解除もしくは除去し、1つまたは複数のプログラムインスタンスの実行を一時停止または終了することができる。
【0050】
ステップ615、625または630の後、ルーチンは、ステップ620に進み、オプションとして表示情報を更新したり、ステップ615、625または630に応答してプログラム実行サービス(図示せず)から戻された情報を格納したり、プログラム実行サービスの定期的ステータスクエリを行ったりなどの、さらなるハウスキーピングタスクを実行する。ステップ620の後、ルーチンは、ステップ695に進み、処理を続けるかどうかを判定する。ルーチンは、続ける場合ステップ605に戻り、続けない場合ステップ699に進み、戻る。
【0051】
また、一部の実施形態では、前述したルーチンによって提供される機能は、より多くのルーチンに分割される、またはより少ないルーチンに統合されるなどの、代替の仕方で提供可能であることも、当業者には理解されよう。同様に、一部の実施形態では、例示されるルーチンは、説明されるよりも多くの機能、または説明されるよりも少ない機能を提供することが、他の例示されるルーチンが、代わりに、そのような機能を欠く場合、または含む場合、あるいは提供される機能の量が変更される場合などに、可能である。さらに、様々な動作が、或る特定の仕方で(例えば、順次に、または並行に)、さらに/または或る特定の順序で実行されるように例示されることが可能であるが、他の実施形態では、動作は、他の順序及び他の仕方で実行可能であることが、当業者には理解されよう。また、前述したデータ構造は、単一のデータ構造を複数のデータ構造に分割すること、または複数のデータ構造を単一のデータ構造に統合することによってなど、様々な仕方で構造化することが可能であることも、当業者には理解されよう。同様に、一部の実施形態では、例示されるデータ構造は、説明されるよりも多くの情報または少ない情報を格納することが、他の例示されるデータ構造がそのような情報を欠く場合または含む場合、あるいは格納されている情報の量またはタイプが変更される場合に、可能である。
【0052】
前述したとおり、様々な実施形態は、プログラムの実行と関係するポリシーの実施を円滑にするために、プログラム実行サービスのコンピュータシステムを1つまたは複数のグループに編成する。さらに、コンピュータシステムは、グループの階層を用いてなど、他の仕方で編成されることも可能である。例えば、最小のグループはそれぞれ、単一のコンピュータシステムを含むことが可能であり、各コンピュータシステムは、そのシステム独自のグループに割り当てられる。その場合、単一のネットワークスイッチによって接続された単一マシングループは、単一のネットワークスイッチによって物理的に接続されたコンピュータシステムのすべてを含むスイッチレベルグループにさらに含まれることが可能である。その場合、スイッチレベルグループは、所与のデータセンタ内のコンピュータシステムのすべてを含むデータセンタレベルグループにさらに含まれることが可能である。その場合、データセンタレベルグループは、複数のデータセンタ内のコンピュータシステムのすべてを含むユニバーサルグループにさらに含まれることが可能である。そのような編成において、各レベルにおけるグループは、一般に、グループ内の他のコンピュータシステム上に配置されているプログラムのコピーに順々に遅くなるアクセスを有し、単一マシングループが、最も迅速なアクセスを提供し、ユニバーサルグループが、最も遅いアクセスを提供する。そのような編成は、プログラム実行サービスが、実行されるべき或る特定のプログラムのコピーを格納しているとともに、そのプログラムを実行するのに必要とされるリソース利用可能性を有する最小のグループを探すことが可能であるので、実行されるプログラムの最適な配置を導く様々なポリシーの適用の効率的な実施を可能にすることができる。代替として、他の実施形態は、グループによってプログラム実行サービスにおけるコンピュータシステムをモデル化することは全くしない可能性がある。そのような実施形態は、例えば、ネットワークスイッチのいくつか、またはすべてに接続された、あるいはいくつかのハードウェアラック上、またはすべてのハードウェアラック上に配置された専用のデータストレージコンピュータシステムまたは他のシステムに、プログラムのうちいくつかのプログラム、またはすべてのプログラムのコピーを配置し、次に、実行されるべきプログラムを、ランダムに選択されたコンピュータシステムに、単に割り当てることができる。
【0053】
前述したとおり、様々な実施形態は、プログラムを実行すべき、さらに/またはプログラムコピーの配信を受けるべき候補としてのコンピュータシステム及び/またはグループの選択に関して、様々なポリシーを実施することができる。多くの場合、様々なプログラム配置ポリシーには、信頼性や効率(例えば、起動待ち時間、ネットワーク待ち時間、またはスループットなど)などの要因の間のトレードオフが必然的に伴う可能性がある。配置ポリシーは、1つまたは複数のプログラムの実行を要求するユーザのプリファレンス、現在、実行されているプログラムの数、ID、及びロケーション、現在、実行が要求されているプログラムの数及びID、将来、実行がスケジュールされているプログラムの数及びID、プログラムの以前に格納されたコピーのロケーション、ネットワークアーキテクチャ、地理的ロケーションなどの要因を考慮に入れることが可能である。さらに、ポリシーのデフォルトの適用が、一部の場合、一部の実施形態において、ユーザ要求、または他の要因に基づいて無効にされる、または変更されることが可能である。例えば、或る特定の実施形態が、1つまたは複数のプログラムの実行を求めるユーザの要求の中で表現されたユーザ選好によって無効にされることが可能であるデフォルトポリシーのセットを提供することが可能である。
【0054】
プログラム実行サービスによって管理されているコンピュータシステムが、複数のデータセンタにわたる実施形態において、プログラム実行サービスは、同一のデータセンタ内で単一のプログラムの複数のインスタンスを実行し、さらに/または同一のデータセンタ内で同一のユーザのための複数の別々のプログラムのインスタンスを実行することを選好することが可能である。そのようなポリシーは、そのようなプログラムが、プログラムインスタンス間の通信のために比較的高い帯域幅のデータセンタ内データ交換を利用することを許す傾向にある。他方、一部の実施形態は、複数のデータセンタにわたってそのようなプログラムインスタンスを分散させることを、データセンタ全体を機能停止させることが可能な停電、ネットワーク停止、または他の大規模な停止の場合に信頼性を保証するために、他のそのようなプログラムインスタンスとの通信をほとんど、または全く実行しないプログラムインスタンスなどに関して、選好する可能性がある。そのようなプログラムインスタンスを分散させる、または統合するそのような選好は、物理的サブネットワーク、グループ、及び個々のコンピュータシステムに関してなど、コンピュータシステム編成の他の様々なレベルで同様に適用可能である。さらに、一部の実施形態は、プログラム実行サービスの配置ポリシーの下で、さもなければ区別がつかない複数の候補コンピュータシステムの間で、選択を行うのに使用されることが可能なポリシーを使用することが可能である。例えば、一実施形態は、同等に良好な候補コンピュータシステムのセットから或るコンピュータシステムをランダムに選択することが可能であるのに対して、別の実施形態は、最低のリソース利用率を有するコンピュータシステムを選択することが可能であり、一方、異なる実施形態は、そのようなコンピュータシステムをラウンドロビン順に選択することが可能である。
【0055】
さらに、様々な実施形態は、プログラムの実行に関して、ローカルプログラムストレージリポジトリの中にプログラムのコピーを格納することに関する様々なポリシーを実施することが可能である。例えば、一部の実施形態は、ローカルプログラムストレージリポジトリを収容するコンピュータシステム上の実行に先立って(または実行中、もしくは実行後に)、ローカルプログラムストレージリポジトリ上にプログラムのローカルコピーを常に格納することが可能である。代替として、他の実施形態では、いくつかのプログラムだけしか、そのようなローカルプログラムストレージリポジトリの中に格納されない。さらに、様々な実施形態は、プログラムストレージリポジトリが、所与のプログラムのローカルコピーを格納する十分な容量を有さない場合、異なるアプローチをとることが可能である。例えば、一部の実施形態は、最近、最も使用されていないコピー、最も古いコピー、ランダムなコピー、異なる仕方で選択されたコピー、共通グループ内の他の1つまたは複数のグループのプログラムリポジトリなどの、何らかの他の関連するプログラムリポジトリの中に依然として格納されているプログラムのコピーなどを強制退去させるなど、新たなプログラムを格納するためのスペースをあけるために、プログラムリポジトリの中に格納されていたプログラムの1つまたは複数のコピーを強制退去させる、またはそれ以外で除去することを選択する。他の実施形態では、所与のプログラムリポジトリが一杯である場合、強制退去は全く実行されない(例えば、代わりに、毎日、再起動後、その他など、プログラムリポジトリからすべてのプログラムを定期的に除去することによって、またはプログラムが、プログラム実行サービスから登録解除された場合に限って、プログラムを除去することになどによって)。
【0056】
一部の実施形態では、プログラムは、複数の、場合により、固定サイズのデータブロックに分解可能である。このようにプログラムを分解することにより、そのプログラムのコピーを獲得中であるコンピュータシステムは、プログラムリポジトリの中に、その要求されるプログラムを格納している他の複数のコンピュータシステムに要求を配信することができる。これらの他の複数のコンピュータシステムのいくつかは、プログラムブロックを求める要求に応答するので、獲得するコンピュータシステムは、それらの応答するコンピュータシステムからさらなるプログラムブロックを要求することができる。したがって、十分なリソースが利用可能であるコンピュータシステムが、それほど応答性のよくない、または応答しないコンピュータシステムより、プログラムブロックを供給するのに優先される。
【0057】
一部の実施形態は、ローカルプログラムリポジトリの中に既に格納されている可能性がある他のプログラムと異なるプログラムの部分だけしか転送しないことなどにより、プログラムの転送効率を向上させる最適化を行うことができる。そのようなアプローチは、同一のプログラム、あるいはコードまたはデータの相当な部分を共有する異なるプログラムの複数のインクリメンタルバージョンを考えると、有利な場合がある。例えば、プログラムが、複数の、場合により、固定サイズのブロックに分解された場合、プログラムが、プログラム実行サービスに最初に登録されると、チェックサムが、各ブロックに関して計算されて、格納されることができる。後に、プログラムが、実行のために獲得されるべき際に、コンピュータシステムは、1つまたは複数のプログラムリポジトリの中に存在するプログラムのブロックに関連するチェックサムに対してプログラムブロックチェックサムを比較し、既に格納されてはいないプログラムブロックだけを獲得することができる。代替として、一部の実施形態は、実行可能ファイル、データファイル、及びライブラリファイルなどの、1つまたは複数のファイルの集合としてプログラムを表すことができる。そのような場合、2つのプログラムは、1つまたは複数のファイル(例えば、ライブラリファイル)を共通で有することが可能であり、所与のコンピュータシステムは、実行のために獲得されるべきプログラムの、コンピュータシステムのプログラムリポジトリの中に既に格納されているファイルとは異なるファイルだけを獲得することを選択することができる。
【0058】
一部の実施形態は、すべて固定サイズのプログラムを提供するのに対して、他の実施形態は、様々なサイズのプログラムを許す。固定サイズのプログラムは、メモリまたはプログラムリポジトリなどのシステムリソースのプログラム利用率を計算するコンテキストにおいて、プログラムの扱いを簡単にすることができる。様々なサイズのプログラムを提供する実施形態において、最良適合、最初適合などの様々なビンパッキングアルゴリズムを含め、固定サイズのリソース(メモリまたはディスクスペースなどの)の利用率を最適化して、プログラムのローカルコピーを格納する際、及び/またはプログラムインスタンスを実行する際にフラグメンテーションを制限する様々なアルゴリズムが適用可能である。
【0059】
さらに、一部の実施形態は、プログラムを実行する要求に先立って、管理されるコンピュータシステムの様々なシステムの中にプログラムのコピーを入れるため、またはそれ以外で配信するための機能を提供することができる。一部の実施形態は、プログラムが最初に登録される際にプログラムを格納するための少なくとも1つのユニバーサルプログラムリポジトリを提供するが、これらの実施形態は、プログラムが最初に実行される際、プログラムが、そのプログラムが実行されるべきコンピュータシステムに比較的ローカルであるいずれのプログラムリポジトリの中でも見つからないので、長い待ち時間を被る可能性がある。そのような実施形態が、ローカルプログラムリポジトリの中に実行されるプログラムのローカルコピーを格納するように構成される場合、その後の実行は、最初の実行と比べると、比較的短い起動待ち時間を被る。プログラムの最初の実行に関する比較的長い起動待ち時間という問題は、プログラムを実行する要求に先立って、プログラムのコピーを入れること、またはそれ以外で配信することによって対処可能である。そのような実施形態は、プログラム実行サービスを提供する1つまたは複数のデータセンタにローカルであるプログラムリポジトリにプログラムの1つまたは複数のコピーを配信することが可能である。そのような仕方で、プログラムが、最初に実行されるように要求されると、プログラムは、一般に、プログラムを実行するように選択されたコンピュータシステム、または複数のコンピュータシステムに比較的ローカルである(少なくとも同一のデータセンタ内の)プログラムリポジトリの中で見つかる。
【0060】
さらに、一部の実施形態は、単一のプログラムの複数のインスタンスの実行の同時の、つまり、重なり合う開始の場合に、最適化を行うことができる。そのような状況において、実行されるべきプログラムのコピーは、ほぼ同時に複数の別々のコンピュータシステムによって獲得される必要がある可能性がある。各コンピュータシステムが、リモートプログラムリポジトリからプログラムのコピーを独立に獲得する場合、各コンピュータシステムが、ネットワークを介して同一のデータの転送を同時に開始するので、ネットワーク、及びその他のリソースの過度の利用がもたらされる可能性がある。一部の状況において、複数のコンピュータシステムが、システムリソースをよりよく利用するように(例えば、不必要なネットワーク使用を最小限に抑えることによって)、プログラムの1つまたは複数のコピーの獲得を同期する、またはそれ以外で順序付けることが、有益な場合がある。例えば、プログラムを実行するように選択された複数のコンピュータシステムが、同一のグループの一部であり、そのグループの外部の1つまたは複数のコンピュータシステムからプログラムコピーを獲得すべき場合、その複数のコンピュータシステムの第1のコンピュータシステムが、そのグループの外部のコンピュータシステムからプログラムのコピーを最初に獲得する(さらに、ローカルプログラムリポジトリの中に格納する)ことが、有益な場合がある。第1のコンピュータシステムが、プログラムのコピーを獲得した後、その複数のコンピュータシステムの残りのシステムが、そのグループに関する共通データ交換媒体を介して、第1のコンピュータシステムからコピーを獲得することができる。
【0061】
さらに、複数のコンピュータシステムがそれぞれ、プログラムのコピーを獲得すべき場合に、ネットワーク及び/または他のコンピュータリソースを効率的に利用するさらなる様々な技術が、使用可能である。例えば、複数のコンピュータシステムの第1のシステムが、その複数のコンピュータシステムのその他のシステムへのプログラムの配信を管理するように選択可能である。複数のコンピュータシステムのいずれも、ローカルプログラムリポジトリの中にプログラムの格納されたコピーを有さない場合、選択されたコンピュータシステムが、リモートロケーションからプログラムの少なくとも一部分(例えば、ブロック)の転送を開始することができる。プログラムの一部分が、選択されたコンピュータシステムによって受信されるにつれ、選択されたコンピュータシステムは、その複数のコンピュータシステムのその他のシステムに、受信した部分をマルチキャストすることができる。そのようなマルチキャストは、その複数のコンピュータシステムを接続するネットワークに、より少ない冗長なデータパケットが送信されるため、他のネットワーク通信機構(例えば、その複数のコンピュータシステムのそれぞれによるTCPベースの転送)と比べて、向上したネットワーク利用をもたらすことができる。代替として、複数のコンピュータシステムの1つまたは複数が、ローカルプログラムリポジトリの中にプログラムの格納されたコピーを有する場合、選択されたコンピュータシステムは、その複数のコンピュータシステムの他のシステムにプログラムの少なくとも部分(例えば、ブロック)をマルチキャストして、ブロックを転送する負荷を分散させ、他のコンピュータシステム、及び/またはネットワークの部分に対する影響を最小限に抑えるよう、プログラムの格納されたコピーを有する1つまたは複数のコンピュータシステムの少なくともいくつかに指示することができる。プログラムのそのようなマルチキャストベースの配信の後、複数のコンピュータシステムの1つまたは複数は、受信されなかった(例えば、ドロップされたネットワークパケットのために)プログラムの部分を獲得するために、代替の通信機構(例えば、TCP)を利用することができる。代替の配信機構は、その複数のコンピュータシステムのその他のシステム上、及び/またはネットワークのいくつかの部分の上に負荷を分散させるラウンドロビンの仕方で、または他の仕方で、部分を求める配信要求を含むことが可能である。
【0062】
一部の実施形態では、さらなる技術が使用可能である。例えば、マルチキャストベースの配信機構が、或るグループのコンピュータシステムに、そのグループ内の別のコンピュータシステムからプログラムの部分を配信するのに使用される場合、様々な技術を使用して、マルチキャストによってグループの外部のネットワークトラフィックが防止される、または制限されることが可能である。例えば、スイッチが、自身に接続されていないコンピュータシステムにマルチキャストパケットを伝送しないように、短い有効期間が、マルチキャストパケット及び/またはパケットアドレス指定技術を使用することに関して指定可能である。さらに、一部の実施形態は、ネットワークリソース使用を最小限に抑えるため、実行のためのプログラムのコピーの転送または実行に関与しないコンピュータシステムにかかる負荷を最小限に抑えるため、さらに/またはネットワークリソース及び/またはコンピュータリソースの予測可能なパフォーマンスを提供するために、様々なポリシーを実施することが可能である。例えば、一部の実施形態は、マルチキャスト伝送のためであれ、さらに/またはポイントツーポイント伝送のためであれ、コンピュータシステムが、他のコンピュータシステムにプログラムのコピーを転送することができるレートを制限することが可能である。さらに、一部の実施形態は、中間ネットワークデバイス(例えば、スイッチ、ルータなど)が、サブネットワーク間でプログラムのコピーの部分を伝送するデータパケットを転送する際、中間ネットワークデバイスによって利用されることが可能な転送レートを制限し、さらに/またはネットワーク帯域幅の割合を制限することが可能である。そのようなデータパケットは、例えば、特定のタイプであること、及び/または特定のアドレス(例えば、或る特定の範囲内のマルチキャストIPアドレス)であることに基づいて、中間ネットワークデバイスによって識別されることが可能である。一部の実施形態では、前述した機構などの複数の機構が、様々なネットワーク利用ポリシーを実施するように組み合わされることが可能である。
【0063】
一部の実施形態では、1つまたは複数のコンピュータシステムから他の1つまたは複数のコンピュータシステムに実行される1つまたは複数のプログラムインスタンスを移す様々な技術が、使用されることも可能である。一態様では、この移行は、プログラムインスタンスが実行されている最初のコンピュータシステムと関係する問題(例えば、コンピュータシステム、及び/またはコンピュータシステムへのネットワークアクセスの障害)を反映することが可能である。別の態様において、移行は、高い優先度のプログラム実行のため、または限られた数のコンピュータシステム上にプログラムインスタンスの実行を統合して、プログラムインスタンスを実行する元のコンピュータシステムが、メンテナンス、エネルギー節約などの理由でシャットダウンされることを可能にするようになど、最初のコンピュータシステム上で実行されるべき他のプログラムインスタンスに対処することができる。1つの特定の例として、コンピュータシステム上で実行される1つまたは複数のプログラムインスタンスが、そのコンピュータシステムから利用可能であるより多くのリソースを必要とする場合、これらのプログラムインスタンスの1つまたは複数は、さらなるリソースを有する他の1つまたは複数のコンピュータシステムに移される必要がある可能性がある。1つまたは複数のコンピュータシステムが、予期されるよりも少ないリソースを有する、コンピュータシステムの1つまたは複数が、予期される(または許される)よりも多くのリソースを使用するなどの様々な理由で、または1つまたは複数のコンピュータシステムの利用可能なリソースが、予約された、もしくは実行中の1つまたは複数のプログラムインスタンスの可能なリソースニーズと比べて、意図的に過度にコミットされている実施形態において、利用可能なリソースの過度の使用が生じる可能性がある。例えば、プログラムインスタンスの予期されるリソースニーズが、利用可能なリソースの範囲内にある場合、最大のリソースニーズは、利用可能なリソースを超える可能性がある。また、プログラムインスタンス実行のために必要とされる実際のリソースが、利用可能なリソースを超える場合、利用可能なリソースの過度の使用が生じる可能性もある。プログラムの移行は、最初のコンピュータシステム上にローカルで格納されたプログラムのコピーをターゲット宛先コンピュータシステムに転送するように、さらに/または最初のコンピュータシステム上で実行されるプログラムのターゲット宛先コンピュータシステム上で新たなインスタンスを実行することを始めるようになど、様々な仕方で実行されることが可能である。移行は、現在の実行状態情報が、新たな実行されるプログラムインスタンスに転送されるように、さらに/または最初のプログラムインスタンスと新たなプログラムインスタンスの間の他の調整を可能にするようになど、可能な場合、最初に実行されるプログラムインスタンスが終了する前に行われることが可能である。
【0064】
一部の実施形態は、料金と引き換えに複数の顧客にプログラム実行サービスを提供することができる。そのような状況において、顧客は、プログラム実行サービスにプログラムを登録し、またはそれ以外で提供し、料金と引き換えにそのようなプログラムの実行を要求することができる。顧客が、時間ベース(例えば、分数、時間数、日数など)でプログラム実行サービスリソース(例えば、ネットワーク帯域幅、メモリ、ストレージ、プロセッサ)の様々な構成へのアクセスを購入するように、1つまたは複数の所定の仮想の、または物理的ハードウェア構成へのアクセスを購入するように、追加料金でプレミアムサービス(例えば、プレミアムでない顧客のプログラムに先立って、プレミアム顧客のプログラムの実行を開始する、プレミアム顧客のプログラムに先立って、プレミアムでない顧客に属するプログラムを強制退去させるようになど、優先プログラムリポジトリ配置をもたらすなど、優先実行を提供する)を購入するように、インスタンス実行ごとに指定された期間にわたってプログラムインスタンスを実行する能力を購入するようになど、様々な料金請求モデルが、使用可能である。
【0065】
前述したとおり、一部の実施形態は、仮想コンピュータシステムを使用することが可能であり、そうである場合、プログラム実行サービスによって実行されるべきプログラムは、仮想計算機イメージ全体を含むことが可能である。そのような実施形態において、実行されるべきプログラムは、オペレーティングシステム全体、ファイルシステム、及び/または他のデータ、及び、場合により、1つまたは複数のユーザレベルプロセスを含むことが可能である。他の実施形態において、実行されるべきプログラムは、何らかの機能を提供するように相互動作する他の1つまたは複数のタイプの実行可能ファイルを含むことが可能である。さらに他の実施形態において、実行されるべきプログラムは、提供されるコンピュータシステム上においてネイティブで、あるいは仮想コンピュータシステム、インタプリタ、または他のソフトウェアによって実施されるハードウェア抽象化を使用して間接的に実行可能な命令及びデータの物理的集合または論理的集合を含むことが可能である。より一般的に、一部の実施形態において、実行されるべきプログラムには、1つまたは複数のアプリケーションプログラム、アプリケーションフレームワーク、ライブラリ、アーカイブ、クラスファイル、スクリプト、構成ファイル、データファイルなどが含まれてもよい。
【0066】
プログラム実行サービス内のプログラムの実行を管理するのに相互通信システムマネージャモジュールとマシンマネージャモジュールとの組合せを利用する実施形態が、説明されてきたが、様々なプログラム実行サービスモジュール間の責任の他の実施及び割り当ても企図される。例えば、一部の実施形態では、単一のモジュール、または単一の構成要素が、管理される物理的なコンピュータシステムまたは仮想マシンのいくつか、またはすべてのシステム上、またはマシン上のプログラムの実行を管理することを担うことが可能である。例えば、プログラムは、様々なリモート実行技術(例えば、rexec、rshなど)によってターゲットコンピュータシステム上で直接に実行可能である。
【0067】
また、前述した例示的な実施形態は、プログラム実行サービスを提供するのに使用されるデータセンタのコンテキストにおいて使用されたが、他の実施シナリオも可能であることも、当業者には認識されよう。例えば、説明されるファシリティは、ビジネス、または他の機関(例えば、大学)によって、そのビジネスまたは機関の従業員及び/または他のメンバの利益のために運営される組織全体のイントラネットのコンテキストにおいて使用されてもよい。または、説明される技術は、分散された仕方で大規模な(例えば、科学的な)コンピューティングタスクを実行する目的で、様々な第三者によって個々に管理され、運用されるノードを含む分散コンピュータシステムによって使用されてもよい。
【0068】
以上から、例示の目的で特定の実施形態が、本明細書で説明されてきたが、本発明の趣旨及び範囲を逸脱することなく、様々な変更の実施が可能であることが理解されよう。従って、本発明は、添付の特許請求の範囲、及び特許請求の範囲に記載される要素による以外は、限定されない。さらに、本発明のいくつかの態様が、いくつかの請求項で提示されるが、本発明者らは、任意の請求項において本発明の様々な態様を企図する。例えば、本発明のいくつかの態様だけが、コンピュータ可読媒体において実現されるものとして述べられる可能性があるが、他の態様も同様に、そのように実現されることが可能である。
図1
図2
図3
図4A
図4B
図5
図6