(57)【特許請求の範囲】
【請求項１】
計算インスタンスを起動するためのシステムであって、前記システムは、
ネットワーク接続を通じて互いに通信するように構成された複数のコンピューティングデバイスを備えた１つ以上のデータセンタと、
その内部にコンピュータ可読命令を保存した１つ以上のメモリと、
を備えており、
前記コンピュータ可読命令は、前記複数のコンピューティングデバイスのうちの１つのコンピューティングデバイスにおいて実行されたときに、前記１つのコンピューティングデバイスに、少なくとも、
複数の機械イメージおよび複数の計算インスタンスタイプに関連付けられた複数の計算インスタンスについての予測される要求を決定させ、
前記予測される要求および前記複数のコンピューティングデバイスの予測されるアベイラビリティに少なくとも部分的に基づいて、前記複数の計算インスタンスを起動するように構成された前記複数のコンピューティングデバイスのうちの１つ以上のコンピューティングデバイスを決定させ、
計算インスタンスを起動するためのリクエストを顧客ノードから受信する前に、前記複数の機械イメージおよび前記複数の計算インスタンスタイプに少なくとも部分的に基づいて、決定された前記１つ以上のコンピューティングデバイスにおいて前記複数の計算インスタンスを起動後アイドリングさせ、
前記計算インスタンスを起動するための前記顧客ノードからの前記リクエストの受信に応答して、決定された前記１つ以上のコンピューティングデバイスにおいてアイドリングされた、前記複数の計算インスタンスから前記計算インスタンスをアクティブ化する、
システム。
【請求項２】
前記予測される要求は、顧客ノードから受信したリクエストの履歴に少なくとも部分的に基づいて決定され、前記リクエストの履歴は、前記リクエストに関連付けられた計算インスタンスの設定パラメータに少なくとも部分的に基づいてソートされる、
請求項１記載のシステム。
【請求項３】
複数の計算インスタンスについての予測される要求を決定するための前記命令は、前記コンピューティングデバイスにおいて実行されたときに、前記コンピューティングデバイスに、少なくとも、
計算インスタンスについてのリクエストの履歴を解析することによって、前記複数の計算インスタンスおよび決定された前記１つ以上のコンピューティングデバイスについての目標を決定させ、
前記リクエストに関連付けられた統計的ファクタに少なくとも部分的に基づいて前記目標を修正させる、
命令を含む、
請求項１記載のシステム。
【請求項４】
前記複数のコンピューティングデバイスのうちから１つ以上のコンピューティングデバイスを決定するための前記命令は、前記コンピューティングデバイスにおいて実行されたときに、前記コンピューティングデバイスに、少なくとも、
事前準備したインスタンスの前記コンピューティングデバイスへの配置に関連する制約を満たすように、前記予測される要求と前記予測されるアベイラビリティとに少なくとも部分的に基づいて前記１つ以上のコンピューティングデバイスを決定させる、
命令を含む、
請求項１記載のシステム。
【請求項５】
コンピューティングデバイスによって実装される方法であって、前記方法は、
複数の機械イメージおよび複数の計算インスタンスタイプに関連付けられた複数の計算インスタンスについての予測される要求を決定するステップと、
前記予測される要求および前記複数のコンピューティングデバイスの予測されるアベイラビリティに少なくとも部分的に基づいて、前記複数の計算インスタンスを起動するように構成された前記複数のコンピューティングデバイスのうちの１つ以上のコンピューティングデバイスを決定するステップと、
計算インスタンスを起動するためのリクエストを顧客ノードから受信する前に、前記複数の機械イメージおよび前記複数の計算インスタンスタイプに少なくとも部分的に基づいて、決定された前記１つ以上のコンピューティングデバイスにおいて前記複数の計算インスタンスを起動後アイドリングするステップと、
前記計算インスタンスを起動するための前記顧客ノードからの前記リクエストの受信に応答して、決定された前記１つ以上のコンピューティングデバイスにおいてアイドリングされた、前記複数の計算インスタンスから前記計算インスタンスをアクティブ化するステップと、
を含む方法。
【請求項６】
前記予測される要求は、計算インスタンスについての以前に受信したリクエストに少なくとも部分的に基づく、
請求項５記載の方法。
【請求項７】
前記予測される要求は、前記複数の事前設定された機械イメージに関連付けられた複数の計算インスタンスのタイプ、および、前記複数の事前設定された機械イメージに関連付けられた識別子を含む、
請求項５記載の方法。
【請求項８】
前記予測される要求の概算に基づいて設定されるインスタンスの事前準備についての目標は、顧客ノードからの前記複数の計算インスタンスについてのリクエストが受信されると予測されるタイムフレーム、および、前記複数の計算インスタンスが起動される領域をさらに含む、
請求項７記載の方法。
【請求項９】
前記機械イメージは、前記機械イメージを保存するルートストレージデバイスからキャッシュされ、
前記機械イメージの構成ファイルは、前記計算インスタンスの構成に少なくとも部分的に基づいて変更される、または、
ストレージボリュームは、前記計算インスタンスの前記構成に少なくとも部分的に基づいて前記計算インスタンスに割り当てられる、
請求項５記載の方法。
【請求項１０】
前記計算インスタンスの起動を完了する前記ステップは、変更された前記構成ファイルに少なくとも部分的に基づいて、決定された前記１つ以上のコンピューティングデバイスにおいて前記機械イメージのオペレーティングシステムをブートするステップを含む、
請求項９記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の参照
本願は、２０１３年６月１０日に出願された米国特許出願第１３／９１４，２２５号の利益を主張するものであり、その開示はその全体が参照により本明細書に組み入れられる。
【背景技術】
【０００２】
サービスプロバイダは、企業、大学、政府系機関および他のタイプの顧客などのさまざまな事業体にコンピューティングリソースを提供している。サービスプロバイダによって供給されるサービスは、事業体に、リソース割り当てにおける柔軟性、スケーラビリティの向上、運転コストの減少などをもたらしている。
【０００３】
サービスプロバイダは、一般的に、コンピューティングリソースをインスタンスの形態で提供する。インスタンスは、仮想機械、仮想機械インスタンスなどとして実施される場合がある。インスタンスの形態でコンピューティングリソースを提供する能力によって、サービスプロバイダは、サービスを利用するさまざまな事業体のニーズおよび要件に合う利用可能なコンピューティングリソースを動的にスケーリングすることができる。
【０００４】
図面全体を通じて、参照番号は、参照された要素間の一致を示すために再使用され得る。図面は、本明細書に記述される実施例の実施形態を図示するために提供され、本開示の範囲を限定することは意図しない。
【図面の簡単な説明】
【０００５】
【図１】実施形態に従う、データセンタの実施例の動作環境を図示する。
【図２】実施形態に従う、データセンタの実施例の構成を図示する。
【図３】インスタンスを起動するための実施例の手順を描写するフローチャートである。
【図４】実施形態に従う、インスタンスを起動するための別の実施例の手順を描写するフローチャートである。
【図５】実施形態に従う、予測要求を決定するための実施例の手順を描写するフローチャートである。
【図６】実施形態に従う、インスタンスを事前準備するデータセンタの実施例の構成を図示する。
【図７】実施形態に従う、インスタンスを事前準備するデータセンタの別の実施例の構成を図示する。
【図８】実施形態に従う、事前準備したインスタンスをコンピューティングリソースに配置するための実施例の手順を描写するフローチャートである。
【図９】本明細書に提示する実施形態に記述したさまざまなコンピューティングデバイスを実施するための実施例のコンピュータハードウェアアーキテクチャを図示する。
【発明を実施するための形態】
【０００６】
前述のように、サービスプロバイダは、コンピューティングリソースを、通例、コンピューティングインスタンスの形態で動的に事業体に提供する。事業体は、ほとんどの場合に、顧客、すなわち、サービスプロバイダの顧客と置き換え可能に本明細書において参照され、そして所望のコンピューティングインスタンスのタイプおよび構成を規定するための入力をサービスプロバイダに提供し、加えて、顧客がコンピューティングインスタンスを必要としている時に関する情報を提供する。この入力情報のすべてが、コンピューティングインスタンスを構成および起動するために、サービスプロバイダによって操作されるサービスによって使用される。起動プロセスは、通常、オンデマンドで起こり、顧客ニーズに反応する。しかしながら、起動プロセスは、即時ではなく、ほぼ即時でさえもない。むしろ、顧客は、起動がリクエストされた時と、インスタンスを顧客が使用できる状態になる時との間の顕著な時間遅延を体験する場合がある。顧客が体験する時間遅延は、そのコンピューティングリソースを構成してインスタンスを起動するサービスの結果としておよそ数分ともなることがある。その量の時間遅延は、顧客満足体験に影響を及ぼす可能性がある。
【０００７】
顧客満足体験を向上するために、サービスプロバイダは、インスタンスリクエストの履歴を解析し、その情報を使用してインスタンスの予測要求を決定することができる。この予測要求情報は、例えば、その顧客がリクエストすることをサービスプロバイダが予測するインスタンスの数およびタイプを含むことができる。予測要求情報に基づいて、サービスプロバイダは、コンピューティングリソースを事前設定し、事前設定されたコンピューティングリソースに計算インスタンスをプロビジョンすることによって、顧客がインスタンスをリクエストした時から、顧客がインスタンスを使用可能になる時までに要する時間を短縮することができる。サービスプロバイダは、顧客のコンピューティングデバイスからの、特定の構成のインスタンスを起動するためのリクエストを受信すると、プロビジョン済のインスタンスのうちのインスタンスを割り当てることによって、リクエストにサービスする。プロビジョン済のインスタンスを事前設定し、コンピューティングリソースに事前配置できるため、顧客は、顧客に転送されるインスタンスを制御するのみ、または顧客に接続するように（例えば、アイドリング状態からレジュームされて、またはキャッシュイメージからブートアップされて）起動されるインスタンスを待つのみでよい。
【０００８】
インスタンスおよびサービスのコンピューティングリソースの事前設定についてのさらなる詳細が、本明細書に提供される。本明細書に提示する主題が、コンピュータプロセス、コンピュータ制御の装置、コンピューティングシステム、またはコンピュータ可読記憶媒体などの製造品として実施できることが認識されるはずである。本明細書に記述される主題は、１つ以上のコンピューティングデバイスにおいて実行するプログラムモジュールの一般の文脈において提示するが、当業者は、他の実施を他のタイプのプログラムモジュールとの組み合わせにおいて実行できることを認識する。通常、プログラムモジュールは、ルーチン、プログラム、コンポーネント、データ構造、および特定のタスクを実行または特定の抽象データ型を実施する他のタイプの構造を含む。
【０００９】
当業者はまた、本明細書に記述された主題が、マルチプロセッサシステム、マイクロプロセッサベースの家庭用電化製品またはプログラマブル家庭用電化製品、ミニコンピュータ、メインフレームコンピュータ、ハンドヘルドコンピュータ、携帯情報端末、電子リーダ、携帯電話装置、専用ハードウェア装置、ネットワークアプライアンスなどを含む、本明細書に記述されたもの以外の他のコンピュータシステム構成において、またはそれらとともに実践できることも認識する。本明細書に記述される実施形態は、通信ネットワークを通じてリンクされたリモート処理装置によってタスクが実行される分散コンピューティング環境においても実践することができる。分散コンピューティング環境では、プログラムモジュールは、ローカルおよびリモート両方のメモリストレージデバイスに位置付けることができる。
【００１０】
計算ノードは、コンピューティングノードとしても参照されることがあり、コモディティハードウェアコンピュータ、仮想機械、コンピューティングクラスタおよびコンピューティングアプライアンスなどの種々のコンピューティング環境において実施することができる。これらのコンピューティングデバイスまたは環境のいくつかは、便宜上、計算ノードとして記述されることがある。
【００１１】
図１は、本明細書に記述される実施形態を実施することができる適切なコンピューティング環境の実施例を図示する。サービスプロバイダは、図示したコンピューティング環境を構成し、その顧客用の計算リソースおよび起動インスタンスを仮想化することができる。特に、図１は、プログラム実行サービス（「ＰＥＳ」）プラットフォーム１０８を含む例示の動作環境１００を示すシステムおよびネットワーク図である。プラットフォーム１０８は、オンデマンドでインスタンスへのアクセスを提供するためのＰＥＳ１０８として参照することができる。ＰＥＳプラットフォーム１０８は、パーマネントでまたは必要に応じてアプリケーションを実行するための計算リソースを提供し、プライベートネットワークとして構成することができる。これらの計算リソースは、例えば、データ処理リソース、データストレージリソース、データ通信リソースなどのさまざまなタイプのリソースを含むことができる。各々のタイプの計算リソースは、汎用であってもよいし、多くの具体的な構成において利用可能なものであってもよい。例えば、データ処理リソースは、仮想機械インスタンスとして利用可能なものであってもよい。インスタンスは、例えば、ウェブサーバ、アプリケーションサーバ、媒体サーバ、データベースサーバなどを含むアプリケーションを実行するように構成できる。データストレージリソースは、ファイルストレージデバイス、ブロックストレージデバイスなどを含むことができる。
【００１２】
各々のタイプまたは構成の計算リソースは、種々のサイズのものを利用可能であり、例えば、多くのプロセッサ、大容量メモリおよび／もしくは大きなストレージ容量からなる大容量のリソース、並びに少数のプロセッサ、より少ない容量のメモリ、および／もしくはより小さいストレージ容量からなる小容量のリソースのものを利用可能である。顧客は、例えば、ウェブサーバとして多くの小容量の処理リソース、および／またはデータベースサーバとして１つの大容量の処理リソースを割り当てるように選択することができる。
【００１３】
ＰＥＳプラットフォーム１０８によって提供される計算リソースは、１つ以上のデータセンタ１０２Ａ、１０２Ｂ、１０２Ｃ〜１０２Ｎによって有効にすることができる。これらは、「データセンタ１０２」として単数で、または「データセンタ（複数）１０２」として複数形において本明細に参照され得る。データセンタ１０２は、コンピュータシステムおよび付随するコンポーネントを収容して動作させる施設であってもよく、冗長およびバックアップ電源、通信路、冷却およびセキュリティシステムを含むことができる。データセンタ１０２は、同じ施設内などの同じ地理的地域に位置付けることができ、高速光ファイバネットワークなどのプライベートネットワークを使用して相互接続し、ＰＥＳプラットフォーム１０８のサービスプロバイダによって制御および管理することができる。データセンタ１０２はまた、地理的に異なる位置にわたって分布し、インターネットなどのパブリックネットワークを使用して部分的に相互接続することができる。本明細書に開示する概念および技術を実施するデータセンタ１０２の１つの例示の構成を、図２に関して後述する。
【００１４】
ＰＥＳプラットフォーム１０８の顧客は、広域ネットワーク（「ＷＡＮ」）１０６を通じて、データセンタ１０２によって提供された計算リソースにアクセスすることができる。図１にはＷＡＮを図示するが、ローカルエリアネットワーク（「ＬＡＮ」）、インターネット、またはデータセンタ１０２とリモートの顧客および他のユーザとを接続する、当業界において公知の任意の他のネットワークトポロジおよびネットワーク接続を利用できることが認識されるはずである。そのようなネットワークの組み合わせも利用できることも認識されるはずである。
【００１５】
ＰＥＳプラットフォーム１０８の顧客は、コンピューティングシステム１０４を利用して、データセンタ１０２によって提供された計算リソースにアクセスすることができる。（「顧客ノード」、「ユーザノード」などとしても参照され得る）顧客コンピューティングシステム１０４は、サーバコンピュータ、デスクトップもしくはラップトップコンピュータ、タブレットコンピュータ、無線電話、ＰＤＡ、電子リーダ、ゲーム機、セットトップボックス、または任意の他のコンピューティングデバイスなどのＰＥＳプラットフォーム１０８にアクセスする能力があるコンピュータであってもよい。
【００１６】
詳細については後述するように、顧客コンピューティングシステム１０４を利用して、ＰＥＳプラットフォーム１０８によって提供された計算リソースの態様を構成することができる。これに関連して、ＰＥＳプラットフォーム１０８は、ウェブインターフェースを提供し、これを通じて、その動作の態様を、顧客コンピューティングシステム１０４において実行するウェブブラウザアプリケーションプログラムを使用して構成することができる。代替的に、顧客コンピューティングシステム１０４において実行するスタンドアロンアプリケーションプログラムは、設定動作を実行するための、ＰＥＳプラットフォーム１０８によって露出されたアプリケーションプログラミングインターフェース（「ＡＰＩ」）にアクセスすることができる。ＰＥＳプラットフォーム１０８における新規の仮想機械インスタンスの起動を含む、ＰＥＳプラットフォーム１０８の動作を設定するための他のメカニズムも利用することができる。
【００１７】
本明細書に開示する実施形態に従う、ＰＥＳプラットフォーム１０８によって提供される取得した計算リソースの容量は、要求に応じてスケーリングすることができる。これに関連して、スケーリングは、「起動」もしくは「作製」としても本明細書に参照され得るインスタンス化、または「デスケーリング」としても本明細書に参照され得る「終了」として、要求に応じて計算リソースのインスタンスをインスタンス化するプロセスを指す。
【００１８】
自動スケーリングは、リソースについての要求に応じた増大または一時的静止に応答して計算リソースをスケーリングするための１つのメカニズムであり得る。自動スケーリングによって、ＰＥＳプラットフォーム１０８の顧客は、顧客が規定した条件に従い取得した計算リソースをスケーリングすることができる。例として、要求に応じて、スパイクなどの特定の条件の発生に応じて、特定の様式において容量をスケーリングアップするようにルールを規定することができる。同様に、ルールを、要求に応じて、一時的静止などの他の条件の発生に応じて、特定の様式において容量をスケーリングダウンするように規定することもできる。仮想機械インスタンスを起動するための本明細書に開示するメカニズムは、顧客が手動でインスタンスを起動する場合、またはＰＥＳプラットフォーム１０８における自動スケーリングコンポーネントによってインスタンスが起動される場合に利用することができる。
【００１９】
ＰＥＳプラットフォーム１０８は、計算リソースの新規のインスタンスの展開において顧客を援助するための展開コンポーネントを備えて構成することもできる。展開コンポーネントは、新規のインスタンスをどのように構成すべきかを記述するデータを含み得る、顧客からの設定を受信することができる。例えば、この設定は、新規のインスタンスにインストールすべき１つ以上のアプリケーションまたはソフトウェアコンポーネントを指定し、そして新規のインスタンスにおいて実行されるスクリプトおよび／または他のタイプのコード、どのようなアプリケーションキャッシュを準備すべきかを指定するキャッシュウォーミング論理、並びに他のタイプの情報を提供することができる。展開コンポーネントは、顧客が提供した設定およびキャッシュウォーミング論理を利用して、計算リソースの新規のインスタンスを起動、設定および用意する。
【００２０】
図２は、ＰＥＳプラットフォーム１０８を実施するデータセンタ１０２の１つの構成を図示するコンピューティングシステム図である。図２に示す実施例のデータセンタ１０２は、いくつかのサーバコンピュータ２０２Ａ、２０２Ｂ、２０２Ｃ、２０２Ｄ〜２０２Ｎを含むことができる。これらは、インスタンスをホストし、アプリケーションを実行するための計算リソースを提供するための、「サーバコンピュータ２０２」として単数で、または「サーバコンピュータ（複数）２０２」として複数形において本明細に参照され得る。サーバコンピュータ２０２は、前述の計算リソースを提供するように適切に構成されたスタンダードタワーまたはラックマウントサーバコンピュータであってもよい。例として、１つの実施では、サーバコンピュータ２０２は、「インスタンス２０６」として単数で、または「インスタンス（複数）２０６」として複数形において本明細に参照され得る、計算リソースのインスタンス２０６Ａ〜２０６Ｄ〜２０６Ｇ〜２０６Ｊ〜２０６Ｎを提供するように構成できる。
【００２１】
インスタンス２０６は、仮想機械インスタンスであってもよい。当業界において公知のように、仮想機械インスタンスは、物理的機械のような、プログラムを実行する機械（すなわち、コンピュータ）のソフトウェア実装のインスタンスである。サーバは、機械（例えば、オペレーティングシステム、アプリケーションサーバおよびアプリケーション）のイメージを使用して、仮想機械インスタンスを起動することができる。このイメージは、機械イメージとしても参照され得、ソフトウェア構成、およびインスタンスをブートするのに必要なすべての情報を包含するテンプレートである。仮想機械インスタンスの実施例では、各サーバ２０２は、インスタンスを実行する能力があるインスタンスマネージャ２０８を実行するように構成できる。インスタンスマネージャ２０８は、例えば、ハイパーバイザであってもよいし、単一サーバ２０２における複数のインスタンス２０６の実行を可能にするように構成された別のタイプのプログラムであってもよい。前述のように、インスタンス２０６の各々は、アプリケーションのすべてまたは一部を実行するように構成できる。
【００２２】
本明細書に開示する実施形態を、主に仮想機械インスタンスの文脈において記述したが、他のタイプのインスタンスも本明細書に開示する概念および技術とともに利用できることが認識されるはずである。例として、本明細書に開示する技術は、ストレージリソースのインスタンス、データ通信リソースのインスタンス、および計算インスタンスとして参照され得るすべての他のタイプのリソースとともに利用することができる。本明細書に開示する実施形態はまた、仮想機械インスタンスを利用しなくても、コンピュータシステムにおいて直接にアプリケーションのすべてまたは一部を実行することができる。
【００２３】
図２に示すデータセンタ１０２は、「サーバコンピュータ２０４」として単数形において、または「サーバコンピュータ（複数）２０４」として複数形において参照され得る１つ以上のサーバコンピュータ２０４も含むことができる。これは、データセンタ１０２、サーバコンピュータ２０２およびインスタンス２０６の動作を管理するためのソフトウェアコンポーネントを実行するためにリザーブされている。特に、サーバコンピュータ２０４は、管理コンポーネント２１０を実行することができる。前述のように、ＰＥＳプラットフォーム１０８の顧客は、顧客コンピューティングシステム１０４を利用して管理コンポーネント２１０にアクセスし、顧客が購買したＰＥＳプラットフォーム１０８およびインスタンス２０６の動作のさまざまな態様を設定することができる。例えば、顧客は、インスタンスを取得し、インスタンスの構成を規定および変更することができる。インスタンスの構成は、計算インスタンスを起動するためにデータセンタ１０２が使用する機械イメージのオペレーティングシステム、アプリケーションサーバ、アプリケーションなどを指定するパラメータを含むことができる。顧客はまた、インスタンスを起動するためのリクエストを管理コンポーネント２１０に提供し、取得したインスタンスを要求に応じてどのようにスケーリングするかについての設定を指定することができる。
【００２４】
簡潔に前述もしたように、自動スケーリングコンポーネント２１２は、ＰＥＳプラットフォーム１０８の顧客が規定したルールに基づいて、インスタンス２０６をスケーリングすることができる。例えば、自動スケーリングコンポーネント２１２において顧客は、新規のインスタンスをインスタンス化すべき時を決定するのに使用されるルールをスケーリングアップし、既存のインスタンスを終了すべき時を決定するのに使用されるルールをスケーリングダウンすることを指定できる。
【００２５】
自動スケーリングコンポーネント２１２は、単一サーバコンピュータ２０４上において実行してもよいし、ＰＥＳプラットフォーム１０８内の複数のサーバコンピュータ２０２にわたって並行して実行してもよい。さらに、自動スケーリングコンポーネント２１２は、ＰＥＳプラットフォーム１０８内の異なるサーバコンピュータ２０２または他のコンピューティングデバイスにおいて実行する多くのサブコンポーネントからなることもできる。自動スケーリングコンポーネント２１２は、ソフトウェア、ハードウェアまたはそれらの任意の組み合わせとして実施することができる。自動スケーリングコンポーネント２１２は、例えば、内部管理ネットワークを通じて、ＰＥＳプラットフォーム１０８内の利用可能な計算リソースを監視することができる。
【００２６】
簡潔に前述したように、データセンタ１０２は、計算リソースの新規のインスタンス２０６の展開において顧客を援助するための展開コンポーネント２１４を備えて構成することもできる。展開コンポーネント２１４は、新規のインスタンス２０６をどのように構成すべきかを記述するデータを含む、顧客からの設定を受信することができる。例えば、この設定は、新規のインスタンス２０６にインストールすべき１つ以上のアプリケーションを指定し、新規のインスタンス２０６を構成するために実行されるスクリプトおよび／または他のタイプのコード、どのようなアプリケーションキャッシュを準備すべきかを指定するキャッシュウォーミング論理、並びに他のタイプの情報を提供することができる。別の実施例では、顧客から受信した設定情報は、機械イメージの識別子および新規のインスタンス２０６のタイプを含むことができる。
【００２７】
展開コンポーネント２１４は、顧客が提供した設定およびキャッシュウォーミング論理を利用して、新規のインスタンス２０６を構成、用意および起動することができる。この構成、キャッシュウォーミング論理および他の情報は、管理コンポーネント２１０を使用する顧客によって指定されてもよいし、この情報を展開コンポーネント２１４に直接に提供することによって特定されてもよい。他のメカニズムも、展開コンポーネント２１４の動作を設定するのに利用できる。例えば、展開コンポーネント２１４は、機械イメージの識別子、および新規のインスタンス２０６のタイプのインスタンスをホストするように構成されたコンピューティングリソース（例えば、サーバコンピュータ２０２）に基づいて、新規のインスタンス２０６を起動することができる。
【００２８】
データセンタ１０２は、サーバコンピュータにわたってインスタンスの実行を分配するためのロードバランサコンポーネント２１６も実行することができる。ロードバランサコンポーネント２１６は、展開コンポーネント２１４、管理コンポーネント２１０内のアプリケーションであってもよいし、サーバコンピュータ２０４以外のサーバにおいて実行されてもよい。実施例では、ロードバランサコンポーネント２１６は、展開コンポーネント２１４から命令を受信し、データセンタ１０２内で利用可能なリソースを決定し、いかなるリソースも過度な使用または使用不足にならないようにインスタンスを利用可能なリソースに分配する。それ故に、インスタンスは、データセンタ１０２内の単一障害点に対して保護される。
【００２９】
図２に示す実施例のデータセンタ１０２では、サーバコンピュータ２０２とサーバコンピュータ２０４とを相互接続するのに適当なＬＡＮ２１８を利用することができる。ＬＡＮ２１８は、図１に図示するＷＡＮ１０６にも接続することができる。図１および図２に図示するネットワークトポロジが、大いに単純化されており、本明細書に開示するさまざまなコンピューティングシステムを相互接続するのに、より多くのネットワーク、ネットワーク接続およびネットワーキングデバイスを利用できることが認識されるはずである。各データセンタ１０２間、各データセンタ１０２内の各サーバコンピュータ２０２間、ＰＥＳプラットフォーム１０８の各々の顧客が取得したインスタンス２０６間のロードをバランシングするために、適当なロードバランシングデバイスまたはソフトウェアモジューも利用することができる。これらのネットワークトポロジおよびデバイスは、当業者に明らかであるはずである。
【００３０】
図２に記述されたデータセンタ１０２が、単なる例示であり、他の実施も利用できることが認識されるはずである。特に、管理コンポーネント２１０、自動スケーリングコンポーネント２１２、展開コンポーネント２１４、およびロードバランサコンポーネント２１６によって実行されるものとして本明細書に記述された機能性は、互いによって実行されてもよいし、他のコンポーネントによって実行されてもよいし、これらのまたは他のコンポーネントの組み合わせによって実行されてもよい。さらに、これらのコンポーネントの各々は、プログラム実行サービスＰＥＳ１０８内部のサービスとして実施することができる。その上、この機能性を、ソフトウェア、ハードウェアまたはソフトウェアとハードウェアとの組み合わせにおいて実施できることが認識されるはずである。他の実施も当業者に明らかであるはずである。
【００３１】
図２のデータセンタ１０２においてインスタンスを起動するための実施例の手順を、図３および図４に記述する。説明の明確さのために、図３および図４は、単独の顧客に関連する単一のインスタンスに関して記述する。しかしながら、手順は、複数の顧客に関連し得る複数のインスタンスに関連して使用することもできる。その上、単独の顧客に関連するインスタンスは、単一データセンタ内においても、複数のデータセンタにわたっても起動することができる。なおその上に、データセンタ１０２およびデータセンタ１０２の実施例のコンポーネントが、実施例の手順を実行するものとして図３および図４に記述される。それでもなお、他のコンポーネントまたはコンポーネントの組み合わせを使用することができ、それらが当業者に明らかであるはずである。
【００３２】
通常、顧客コンピューティングシステム１０４から、インスタンスを起動するためのリクエストの受信に答えて、データセンタ１０２（すなわち、後述するデータセンタ内のコンピューティングコンポーネント）は、事前準備したインスタンスを使用してリクエストを満たすことができるか否かを決定する。リクエストを満たすことができる場合には、データセンタは、図４に記述された手順を実行し、そうでない場合には、図３に記述された手順を実行する。インスタンスを事前準備したインスタンスでは起動できない場合には、図３に示すように、データセンタ１０２は、リクエストに応じてそのコンピューティングリソースを構成し、インスタンスを起動し、顧客コンピューティングシステムがインスタンスとの接続を確立できる情報を提供する。図３は、コンピューティングデバイスにおいて動作するためのインスタンスを準備する一般のエンドツーエンドのプロセスを第一に例証するように提示される。その後、図４を、図３と対比して、事前準備したインスタンスが利用可能である場合に実現される起動時間の短縮を実証するために提示する。
【００３３】
図３を参照するように、工程３０２は、データセンタ１０２が、顧客コンピューティングシステムから、インスタンスを起動するためのリクエストを受信することを例証する。リクエストは、ウェブＡＰＩへの呼び出しの形態であってもよく、通常、顧客の特性および所望のインスタンスの特性を特定する情報を含む。例えば、管理コンポーネント２１０は、インスタンスの何らかの構成特性を規定する入力パラメータに加えて、ユーザ名、パスワードおよび顧客のクレデンシャルを受信することができる。入力パラメータは、例えば、インスタンスを起動すべき機械イメージの識別子、計算インスタンスタイプ（例えば、プロセッサの数、メモリ容量、ストレージ容量、ネットワーク帯域幅などの、インスタンスが割り当てられるハードウェアリソースの量を表すタイプ識別子など）、利用されるネットワークセキュリティ、インスタンスに関連するストレージボリューム、および他の情報などを指定することができる。パラメータはまた、例えば、インスタンスにインストールすべき１つ以上のアプリケーションまたはソフトウェアコンポーネント、インスタンスにおいて実行されるスクリプトおよび／または他のタイプのコード、どのようなアプリケーションキャッシュを準備すべきかを指定するキャッシュウォーミング論理、並びに他のタイプの情報も指定することができる。
【００３４】
実施形態では、管理コンポーネント２１０は、顧客がそこから選択できるさまざまなインスタンス構成のリストの提供に応答した顧客コンピューティングシステムからリクエストを受信する。顧客の選択は、サービスプロバイダによって供給された機械イメージ、および計算インスタンスタイプを含むことができる。さらに、管理コンポーネント２１０によって、顧客は、例えば、インスタンスに到達できるネットワークトラフィックを制御するファイアウォールルールの形態のデフォルトまたは顧客ネットワークセキュリティを選択することができる。顧客がリクエストにおいて指定することもできる情報のタイプの他の実施例は、インスタンスを起動する領域内のゾーン、インスタンス名、起動されるインスタンスの数などを含む。
【００３５】
工程３０４は、データセンタ１０２がリクエストを有効にすることを例証する。実施例では、管理コンポーネント２１０は、ＡＰＩリクエスト内のデジタル署名、ユーザ名およびパスワードなどに基づいて顧客を認証し、リクエストにおいて受信した顧客のクレデンシャルに基づいてインスタンスを起動する許可を顧客が有しているか否かを決定する。リクエストが有効である場合には、管理コンポーネント２１０は、（図３の工程３０８〜３１８に示す）インスタンスの起動を開始することを、または（図４の工程に示す）事前準備したインスタンスによってリクエストを満たすことを、展開コンポーネント２１４にリクエストする。
【００３６】
工程３０６は、データセンタ１０２が、事前準備したインスタンスの使用ではリクエストを満たせないことを決定することを例証する。この工程は、展開コンポーネント２１４が、事前準備したインスタンスのいずれも所望のインスタンスの特性に一致する特性を有さないことを決定することを含むことができる。そのように決定した場合には、展開コンポーネント２１４およびデータセンタ１０２の他のコンポーネントは、次に、工程３０８〜３１８に記述するように、顧客のための新規のインスタンスを起動する。
【００３７】
工程３０８は、データセンタ１０２が、インスタンス識別を顧客コンピューティングシステムに返送することを例証する。この工程は、展開コンポーネント２１４が、さらに、例えば、インスタンスをホストするデータセンタにおいて十分な容量が利用可能であるか否かを決定するためのリクエストを有効にすることを含むことができる。この決定には、例えば、インスタンスタイプ、機械イメージ、そして他の顧客のインスタンスおよびその使用パターンを含む顧客のプロフィールとともに、サーバコンピュータ２０２においてインスタンスをホストできるか否かなどの、リクエストからのさまざまなパラメータが考慮される。有効な場合には、展開コンポーネント２１４は、インスタンス識別を生成し、インスタンスステータスをペンディングに更新し、情報を管理コンポーネント２１０に返送する。次に、管理コンポーネントは、インスタンスのステータスおよび他のインスタンス関連情報の表示とともに、インスタンス識別を顧客コンピューティングシステムに伝送する。
【００３８】
工程３０２〜３０８は、同期して実行することができ、数秒以下で完了することができる。対照的に、インスタンスを起動する残りの工程は、通例、およそ数分などのより長い時間を消費し、非同期的に実行される。
【００３９】
工程３１０は、データセンタ１０２が、インスタンスを起動するためのさまざまなコンピューティングリソースを構成することを例証する。この工程では、展開コンポーネント２１４は、リクエストにおいて受信した情報を使用して、さまざまなコンピューティングリソースをセットアップすることができる。これによりサーバコンピュータ２０２は、機械イメージをブートアップすることによってインスタンスを起動することができる。例えば、展開コンポーネント２１４は、機械イメージを包含するルートストレージデバイスを決定し、ブロックレベル永続性記憶装置をインスタンスに割り当て、インターネットプロトコル（ＩＰ）アドレスをインスタンスに与え、ネットワークインターフェースをセットアップし、ルーティング情報を生成し、ファイアウォールを構成し、そして他の物理的および仮想リソースを、インスタンスに関連するサーバコンピュータに加える。
【００４０】
工程３１２は、データセンタ１０２が、インスタンスのためのホストを決定することを例証する。この工程は、展開コンポーネント２１４が、インスタンスを起動する特定のゾーンを決定し、ロードバランサコンポーネント２１６が、インスタンスが配置されたそのゾーン内の特定のサーバコンピュータを決定することを伴う。このゾーンは、あるゾーンの不具合に伴う別のゾーンへの影響を最小限にし、展開コンポーネント２１４およびロードバランサコンポーネント２１６が、複数のサーバコンピュータおよびゾーンにわたってインスタンスを分配するように構成されたコンピューティングリソースの集まりである。このインスタンスの分配は、例えば、コンピューティングリソースアベイラビリティ、フォールトトレランス要件、インスタンスをホストするための財務コストなどに関連し、複数のサーバコンピュータおよびゾーンにわたるインスタンスの配置を制限し得る多くの制約を受ける場合がある。
【００４１】
さまざまなパラメータを使用して、インスタンスをサーバコンピュータに配置するときに満たし得る制約の数を最適化することができる。これらのパラメータは、インスタンスの構成、サーバコンピュータの構成、ビジネス上の考慮事項、フォールトトレランス要件などに関連し得る。例えば、ロードバランサコンポーネント２１６は、特定のサーバコンピュータを考慮し、インスタンスのアーキテクチャおよびネットワーク要件をサポートできるか否かを決定する。ロードバランサコンポーネントはまた、特定のサーバコンピュータにおいて現在実行されている既存のインスタンスを決定し、いろいろな顧客の新規のインスタンスを同じサーバコンピュータによってホストできるかを検証する。特定のサーバコンピュータがこれらの要件を満たす場合には、ロードバランサは、インスタンスをそのサーバコンピュータに分配する。
【００４２】
さらなる実施例では、インスタンス、およびサーバコンピュータにおいてホストされている既存のインスタンスは、ベンダーに関連する同じオペレーティングシステムを有する。ベンダーが、サーバコンピュータにおいてホストされているインスタンスの数には依存しない、そのオペレーティングシステムを実行するためのライセンス料を請求する場合に、ロードバランサコンポーネントは、インスタンスをそのサーバコンピュータに分配する。その結果、インスタンスを起動するための財務コストを減少する。
【００４３】
別の実施例では、ロードバランサコンポーネント２１６は、サーバコンピュータにおけるインスタンスの目標密度を満たすように、インスタンスをサーバコンピュータに分配する。ロードバランサは、サーバコンピュータにおいて多数の他のインスタンスが同時に起動されているか否かも考慮し、そうである場合には、ホットスポットの形成を回避するために、別のサーバコンピュータを選択する。他のサーバコンピュータを選択する場合には、ロードバランサは、顧客に関連する他のインスタンスをホストしているサーバコンピュータを考慮し、可能であれば、インスタンスを、これらのインスタンスのいずれもまたは最小数しか現在ホストしていないサーバコンピュータに分配する。この選択によって、顧客におけるサーバコンピュータの何らかの不具合の影響が低減される。当業者は、これらのおよび他のパラメータを組み合わせて使用して、インスタンスを起動するためのサーバコンピュータを選択できることを認識する。
【００４４】
サーバコンピュータが選択されると、ロードバランサコンポーネント２１６は、インスタンスの構成についての情報をサーバコンピュータにパスし、サーバコンピュータについての情報を展開コンポーネント２１４にパスする。工程３１４は、データセンタ１０２が、インスタンスを起動するためのホストを呼び出すことを例証する。例えば、展開コンポーネント２１４は、インスタンスの起動を開始するためのコマンドをサーバコンピュータに送信する。
【００４５】
工程３１６は、データセンタ１０２が、ホストにおいてインスタンスを起動することを例証する。この工程では、サーバコンピュータにおいて実行するインスタンスマネージャ２０８が、インスタンスが起動されるパーティションを構成する。例えば、インスタンスマネージャは、ルートストレージデバイスからの機械イメージにアクセス、それをキャッシュ、解読および解凍する。インスタンスマネージャはまた、機械イメージ内の構成ファイル、およびインスタンスの設定パラメータに従う構成ファイルを構文解析する。次に、インスタンスマネージャは、インスタンスを開始する。これは、次に、変更された機械イメージをマウントしかつ読み出し、マスターブートレコードを探索し、オペレーティングシステムをブートする。インスタンスマネージャはまた、ストレージボリューム、デバイスインターフェースおよびネットワークインターフェースをインスタンスに加える。ブートプロセスが完了すると、アプリケーションおよびインスタンスの他のコンポーネントが実行できる状態になり、インスタンスマネージャは、顧客がインスタンスを使用できる状態になったことの表示を、管理コンポーネント２１０に伝送する。
【００４６】
工程３１８は、データセンタ１０２が、インスタンスとの接続を確立するための情報を顧客コンピューティングシステムに提供することによって、インスタンスが使用状態にあることを顧客に通知することを例証する。例えば、管理コンポーネント２１０は、インスタンスのステータスを実行ステータスに更新し、例えば、顧客のクレデンシャルを使用したセキュアシェル（ＳＳＨ）プロトコルを利用して、顧客コンピューティングシステムとインスタンスとの安全な接続を促進する。管理コンポーネントはまた、顧客のインターフェースを、インスタンスの実行ステータスを反映するように更新し、そのコンピューティングシステムにおいてＳＳＨクライアントを起動することを顧客に指示する。
【００４７】
前述のように、データセンタ１０２は、事前準備したインスタンスによってリクエストを満たすことができることを決定した場合に、図４の手順を実行する。通常、データセンタ１０２（すなわち、後述するようなデータセンタ内のコンピューティングコンポーネント）は、インスタンスについての予測要求に基づくリクエストを受信する前に、インスタンスを事前設定および事前起動する。この手順によって、データセンタ１０２は、インスタンスについてのリクエストを受信した時から、顧客がインスタンスを使用できる時までの時間を最小限にすることができる。
【００４８】
工程４０２は、データセンタ１０２が、インスタンスについての予測要求に基づいてインスタンスを事前準備することを例証する。この工程は、予測要求を決定し、それに応じてインスタンスを事前準備することを伴い得る。予測要求を決定するための実施例の手順は、図５にさらに記述され、例えば、インスタンスの事前準備についての目標、および事前準備に必要とされるインスタンスの設定パラメータを決定することを含む。この手順は、データセンタ１０２においてホストされたサービスとして、または外部データセンタ１０２ホストされたサービスとして実施することができ、データセンタ１０２のコンピューティングコンポーネントに提供することができる。
【００４９】
予測要求を決定すると、データセンタ１０２のコンピューティングコンポーネントは、対応する設定パラメータに基づいてこれらのインスタンスを事前準備する。通例、インスタンスの事前準備は、これらのインスタンスについてのリクエストを顧客から受信する前に、利用可能なコンピューティングリソースにおいてインスタンスを事前設定および事前起動することを伴う。事前設定は、図３の工程３１０〜３１６と同様の工程を伴い得、これによりコンピューティングコンポーネントは、リクエストを受信する前に、対応する設定パラメータに基づいて、インスタンスの機械イメージおよびさまざまなコンピューティングリソースを事前設定する。例えば、事前設定は、インスタンスをホストする領域、ゾーンおよびサーバコンピュータを決定し、機械イメージを保存するルートストレージデバイスを追加し、ストレージボリュームをインスタンスに割り当て、ネットワークセキュリティおよびインターフェースを設定することなどを含む。この実施例に追加的にまたは代替的に、コンピューティングコンポーネントは、図８の実施例の手順を実施し、事前準備したインスタンスのさまざまなコンピューティングリソースへの配置に関連する制約を考慮することによって、事前設定を最適化することができる。
【００５０】
事前起動工程は、機械イメージにアクセス、それをキャッシュ、解読および解凍し、それらの構成ファイルを変更することを含む。この実施の実施例は、図７にさらに記述される。図６に記述されるさらなる実施例では、インスタンスの事前起動は、インスタンスを起動およびアイドリングし、アイドリングしたインスタンスをルートストレージデバイスとスワッピングすることも伴う。
【００５１】
コンピューティングコンポーネントは、インスタンスを事前準備するための他の技術も使用することができる。実施例では、コンピューティングコンポーネントは、インスタンスを起動およびサスペンドし、その後、顧客からのリクエストに応じた数のインスタンスを再起動する。別の実施例では、コンピューティングコンポーネントは、インスタンスを起動し、それらのスナップショットを生成し、スナップショットをストレージボリュームに保存し、インスタンスを停止し、その後、リクエストに応じて、対応するスナップショットから多くのインスタンスを再び起動する。
【００５２】
インスタンスを事前準備すると、コンピューティングコンポーネントは、一定のタイムフレームの間それらを管理することができる。例えば、コンピューティングコンポーネントは、このタイムフレーム中に、インスタンスの設定パラメータの更新に基づいて、事前準備したインスタンスを再構成することができる。コンピューティングコンポーネントは、タイムフレーム内に顧客からのリクエストに応じて事前準備したインスタンスを起動しない場合には、事前準備したインスタンスを除去し、そのインスタンスに関連していたコンピューティングリソースを解放する。ただし、リクエストが受信された場合には、コンピューティングコンポーネントは、次に、本明細書に記述したようにインスタンスを起動する。
【００５３】
工程４０４は、データセンタ１０２（例えば、管理コンポーネント２１０）が、インスタンスについての顧客リクエストを受信して有効にすることを例証する。この工程は、時間を圧縮されるにもかかわらず、図３の工程３０２、３０４および３０８と同様の工程であってもよい。より詳しくは、受信したリクエストは、インスタンスに関連する顧客情報および設定パラメータを含む。データセンタ（例えば、管理コンポーネント２１０）は、顧客を認証し、顧客情報に基づいてその顧客がインスタンスを実行する許可を有しているか否かを決定する。認証および認可された場合には、データセンタは、インスタンスのステータスをペンディングに更新し、情報の中でも特に、ステータスの表示およびインスタンスの識別を顧客に返送する。データセンタはまた、リクエストにおける設定パラメータと、事前準備したインスタンスの設定パラメータとを比較することによって、リクエストをサーブし、かつリクエストを、事前準備したインスタンスに関連するサーバコンピュータに送信することができる、複数の事前準備したインスタンスのうちから事前準備したインスタンスを決定し、事前準備したインスタンスの起動を完了する。
【００５４】
工程４０６は、データセンタ１０２（例えば、展開コンポーネント２１４）が、事前準備したインスタンスから、リクエストされたインスタンスを起動することを例証する。通常、工程４０６は、インスタンスの起動を完了し、インスタンスが実行状態になるような、事前準備したインスタンスのアクティブ化を含むことができる。この工程は、例えば、インスタンス、リクエストにおいて受信したネットワークセキュリティおよびクレデンシャルに適用することによる、インスタンスと顧客との関連付けも含むことができる。この工程の実施は、工程４０２の実施によって決まる。例えば、事前準備したインスタンスがアイドリングされている場合には、サーバコンピュータは、実行するためのアイドリングしたインスタンスを呼び出す。同様に、事前準備したインスタンスが事前設定され、ブート状態にある場合には、サーバコンピュータは、機械イメージのオペレーティングシステムをブートする。同様に、インスタンスがサスペンドされている場合には、サーバコンピュータは、そのインスタンスをレジュームする、またはサーバコンピュータがスナップショットを生成し、インスタンスを停止した場合には、サーバコンピュータは、スナップショットからインスタンを再起動する。
【００５５】
工程４０８は、データセンタ１０２（例えば、管理コンポーネント２１０）が、インスタンスとの接続を確立するための情報を顧客コンピューティングシステムに提供することによって、インスタンスが使用状態にあることを顧客に通知することを例証する。この工程は、図３の工程３１８と同様の工程であってもよい。より詳しくは、データセンタ１０２（例えば、管理コンポーネント２１０）は、インスタンスのステータスを実行に更新し、顧客のクレデンシャルを使用して、インスタンスとの安全な接続を確立するための情報を顧客コンピューティングシステムに提供する。
【００５６】
起動するためのインスタンスをリクエストするときに、顧客は、利用可能なかつ組み合わせることが可能な設定パラメータのラージプールから、インスタンスについての構成を選択することができる。例えば、顧客は、多数の機械イメージからの機械イメージの選択、多数の計算インスタンスタイプからのインスタンスタイプの選択、および本明細書において前述したような他のインスタンス設定パラメータの選択を有する。さらに、各機械イメージおよびインスタンスは、顧客の具体的なニーズにカスタマイズすることができる。データセンタ１０２を多数の顧客にサービスするように構成できるため、これらの顧客がリクエストできるインスタンスの数および構成は、利用可能な構成の選択に少なくとも基づいて、指数関数的に増えることができる。それ故に、リクエストできる各々の構成の選択に基づくインスタンスの事前準備を実行できないことがある。代わりに、サービスは、インスタンスについての予測要求を決定し、利用可能であると予測されるコンピューティングリソースを決定し、予測要求と予測されたコンピューティングリソースアベイラビリティとのバランスをとり、それに応じてインスタンスを事前準備するように構成できる。
【００５７】
このサービスは、データセンタ１０２、またはデータセンタ１０２外部のコンピューティングノード（例えば、サーバ、異なるデータセンタにおけるコンピューティングコンポーネント、第三者コンピューティングリソースなど）においてホストすることができる。例えば、サービスは、サーバコンピュータ２０４においてホストされたスタンドアロンアプリケーションとして、または管理コンポーネント２１０もしくは展開コンポーネント２１４などの、データセンタのコンピューティングコンポーネントと一体化されたアプリケーションとして実施することができる。スタンドアロンアプリケーションの実施例を、事前準備コンポーネント６１８として図６および図７に示す。代替的な実施例では、サービスは、データセンタ１０２のコンピューティングコンポーネントとインターフェースし、コンピューティングコンポーネントから必要な情報を受信し（図５にさらに記述する）、受信した情報を使用して予測要求を決定し、予測要求についての情報をコンピューティングコンポーネントに返送するように、コンピューティングノードにおいて構成することができる。
【００５８】
図５を参照すると、この図は、予測要求を決定するための実施例の手順を例証する。説明の明確さのために、予測要求を決定するためのサービスは、本明細書において事前準備コンポーネントとして参照され、本明細書に前述したようなデータセンタ１０２内のまたはその外部のアプリケーションとして構成することができる。工程５０２は、事前準備コンポーネントが、インスタンスについてのリクエストの履歴を表すデータセットを考慮し、そのデータセットを解析してインスタンスについての予測されるリクエストを決定することを例証する。考慮されたデータセットは、リクエストおよび／または起動されたインスタンスに関連する履歴データ、並びに現在ホストされているインスタンスを表すデータを含むことができる。事前準備コンポーネントは、例えば、リクエストされた場所、リクエストしている顧客、リクエストの時刻などのファクタの組み合わせを使用して、データセットを選択することができる。例えば、事前準備コンポーネントは、一定の顧客（例えば、特定の顧客、多くの顧客またはすべての顧客）による、または必要とされる解析の包括度に応じた一定の期間（例えば、数日、数週間、数ヶ月、さらには数年）にわたる、具体的な場所（例えば、ある領域、アベイラビリティのゾーンなど）の範囲内のインスタンスについてのリクエストを考慮することができる。
【００５９】
次に、事前準備コンポーネントは、考慮されたデータセットを数学モデルにかけることによってそれを解析することができる。例えば、事前準備コンポーネントは、データセットからのデータを、機械イメージおよびインスタンスタイプに基づいたグループにソートし、各グループについてのカウントを得ることができる。グループの各々は、機械イメージおよびインスタンスタイプの組を表すことができる。事前準備コンポーネントは、長期にわたる各グループについてのカウントをプロットし、例えば、外挿法を使用してプロットされた曲線にフィットする数学的方程式を決定することができる。この方程式は、各グループについての予測要求を概算し、各グループに関連する追加のデータを考慮することによって、長期にわたって継続的に改善することができる。そのようなものとして、特定の組の機械イメージおよびインスタンスタイプについて、事前準備コンポーネントは、時間の関数として予測要求を表現すること（例えば、週の初日に特定のインスタンスタイプおよび機械イメージに対応する一千個のインスタンスを事前準備し、週の二日目にこれらのインスタンスの二千個を事前準備し、週の三日目にこれらのインスタンスの五百個を事前準備することなど）ができる。
【００６０】
事前準備コンポーネントは、インスタンスタイプもしくは機械イメージのいずれか、またはインスタンスの他の設定パラメータに基づいた類似の解析を利用することもできる。例えば、特定のタイプのインスタンスを特定のコンピューティングリソースにおいてのみホストできるようにデータセンタ１０２が構成された場合には、事前準備コンポーネントは、インスタンスタイプごとの予測要求を概算する数学的方程式を決定することができる。これらの方程式を使用して、インスタンスタイプをサポートできるコンピューティングリソースについての予測要求を概算することができる。そのようなものとして、この実施例では、事前準備コンポーネントは、インスタンスを事前準備するのに必要なコンピューティング容量を概算することができる。
【００６１】
オペレーティング５０４は、事前準備コンポーネントが、インスタンスの事前準備についての目標を設定することを例証する。インスタンスについての予測要求、場合によっては、コンピューティングリソースについての予測要求を概算した後、事前準備コンポーネントは、この概算に基づいて、インスタンスの事前準備についての目標をコンピューティングリソースに設定することができる。この目標は、インスタンスの設定パラメータ（例えば、インスタンスタイプ、機械イメージの識別子など）、インスタンスの総数、各インスタンスタイプの数、インスタンスがリクエストされると予測されるタイムフレーム、これらのインスタンスを事前準備すべき領域およびゾーンなどを含むことができる。例えば、一週間にわたるリクエストの履歴の解析は、十万個のリクエストされたインスタンスのうちの一万個が、ＦＥＤＯＲＡオペレーティングシステムを使用し、カリフォルニア州の特定のデータセンタ内の３２ビットアーキテクチャにおけるＡＰＡＣＨＥウェブサーバを実行するインスタンスであったことを示すことができる。この実施例の解析に基づいて、事前準備コンポーネントは、週間ベースで、カリフォルニア州の特定のデータセンタ内で起動されるこれらのＦＥＤＯＲＡ／ＡＰＡＣＨＥ／３２ビットアーキテクチャインスタンスのうちの一万個を顧客がリクエストすると予測する。そのようなものとして、事前準備コンポーネントは、特定のデータセンタ内のこれらのインスタンスのうちの一万個を事前準備することを目標とする。
【００６２】
しかしながら、リクエストできる各々の構成の選択（例えば、インスタンスタイプと機械イメージとの組み合わせ）に基づくインスタンスの事前準備を実行できない場合には、事前準備コンポーネントは、さらに、さまざまなファクタを予測要求に適用することによって、さまざまな構成の選択に関連する目標を修正することができる。これらのさまざまなファクタは、コンピューティングリソースアベイラビリティの統計的ファクタおよび考慮事項と、事前準備についての目標とされたインスタンスをデータセンタ１０２のリソースがサポートできることを確実にするために事前準備コンポーネントによって使用され得る制約との組み合わせを含むことができる。
【００６３】
工程５０６は、事前準備コンポーネントが、予測要求に適用されたさまざまな統計的ファクタに基づいて目標を改善することを例証する。実施形態では、事前準備コンポーネントは、平均値、ピーク値、谷値、閾値および標準偏差のいずれかまたはそれらの組み合わせを、予測要求に関連する解析したデータセットに適用することによって、目標を修正することができる。工程５０６を例証する前述の実施例に続いて、事前準備コンポーネントが、一週間にわたって、ＦＥＤＯＲＡ／ＡＰＡＣＨＥ／３２ビットアーキテクチャインスタンスが平均して一日約千五百回リクエストされたことを決定した場合には、事前準備コンポーネントは、一日としての、具体的な機械イメージについての目標としてその平均数を設定することができる。同様に、事前準備コンポーネントが、その一週間内において、その特定の構成を有するインスタンスの最大数がその週のうちの特定の日（例えば、水曜日）に起動され、同じインスタンスの最小数が別の日（例えば、金曜日）に起動されたことを決定した場合には、事前準備コンポーネントは、各週の水曜日および金曜日に、具体的なインスタンスタイプについてのそれぞれの目標として最大数および最小数を設定することができる。また、事前準備コンポーネントが、その一週間内に、わずかな比率のみ（例えば、０．１パーセント）のリクエストしか別のインスタンス構成に関連していないことを決定した場合には、事前準備コンポーネントは、初期目標が所定の閾値（例えば、最も多い構成の上位１０パーセントのインスタンスを事前準備することを要求する閾値）を下回った場合に、この構成タイプのインスタンスの事前準備についてのその目標を、１パーセント（例えば、百個のインスタンス）からゼロに修正することができる。
【００６４】
工程５０８は、事前準備コンポーネントが、コンピューティングデータセンタ１０２のリソースのアベイラビリティおよび制約に基づいて目標を改善することを例証する。事前準備コンポーネントは、さらに、インスタンスおよび／またはコンピューティングリソースについての予測要求と、そのコンピューティングリソースの予測アベイラビリティとのバランスをとるように目標を修正することができる。利用可能であると予測されるコンピューティングリソースを決定するために、事前準備コンポーネントは、前述と類似の解析をそのリソースの履歴使用に適用することもできる。例えば、事前準備コンポーネントは、カリフォルニア州の特定のデータセンタが平均して８０パーセント容量において一週間にわたって実行することを決定できる。それ故に、事前準備コンポーネントは、週間ベースでカリフォルニア州のデータセンタにおいて２０パーセントの利用可能な容量を有すると予測でき、この利用可能な容量を事前準備したインスタンスのためにリザーブすることができる。例証のために、週間ベースで、１パーセントの容量が百個のインスタンスをホストする能力に相当する場合には、カリフォルニア州のデータセンタにおいて２０パーセントの利用可能な容量は二千個のインスタンスに達する。それ故に、事前準備コンポーネントは、一万個のＦＥＤＯＲＡ／ＡＰＡＣＨＥ／３２ビットアーキテクチャインスタンスからそれらの二千個を事前準備するようにその目標を修正することができる。
【００６５】
さらなる実施形態では、事前準備コンポーネントはまた、リソースアベイラビリティに影響する何らかの計画的な機能停止または保守を解析し、この解析に基づいてリザーブ容量を更新することもできる。例えば、事前準備コンポーネントは、カリフォルニア州の特定のデータセンタが、計画的保守の故に、次の一週間に９０パーセントの容量まで下がることを決定した場合には、総計の利用可能なコンピューティング容量が超過しないように、リザーブ容量を２０パーセントから１０パーセントに抑制することを決定できる。
【００６６】
次に、事前準備コンポーネントは、インスタンスおよび／またはコンピューティングリソースについての予測要求と、コンピューティングリソースにおけるインスタンスの配置を制限し得る制約とのバランスもとることによって、その目標をさらに改善することができる。このバランシングは、図８に記述され、データセンタにおける利用可能な容量が超過しない、複数のコンピューティングリソースおよびデータセンタにわたる事前準備したインスタンスのバランスがとられた分配をサポートすることを確実にするために実施することができる。当業者は、これらのおよび他のタイプの解析を組み合わせて使用して、予測要求を定量化し、インスタンスの事前準備についての目標を改善することができることを認識する。
【００６７】
図６を参照すると、この図は、事前準備したインスタンスが図４の手順を実行するのに使用できるアイドルされた計算インスタンスを含む場合のデータセンタ１０２の実施例の構成を例証する。顧客コンピューティングシステムからインスタンスについてのリクエストを受信する前に、さまざまなコンピューティングデータセンタ１０２のリソースが、機械イメージ６２０からインスタンス６５０を事前準備するように構成される。例えば、サーバコンピュータ２０４が、（図６に示す事前準備コンポーネント６１８のような）事前準備コンポーネントを実行して事前準備したインスタンスの設定パラメータを決定し、そして管理コンポーネント２１０、展開コンポーネント２１４およびロードバランサコンポーネント２１６を実行して事前準備したインスタンス６５０のホストとしてサーバコンピュータ２０２を選択し、機械イメージ、ストレージボリューム６４０、ネットワークインターフェースおよびデバイス、並びに他のリソースを包含するルートストレージデバイス６３０を、事前準備したインスタンスに関連付ける。
【００６８】
図６は、サーバコンピュータ２０４においてホストされたスタンドアロンアプリケーションとして事前準備コンポーネント６１８を図示するが、この事前準備コンポーネントは、データセンタ１０２外部のコンピューティングノードにホストされてもよく、この構成では、事前準備したインスタンスの設定パラメータおよび予測要求に関連する情報が、本明細書に前述したようなサービスとして、データセンタのコンピューティングコンポーネント（例えば、管理コンポーネント２１０、展開コンポーネント２１４、ロードバランサコンポーネント２１６）に提供される。同様に、別の実施例では、事前準備コンポーネント６１８は、データセンタ１０２内のコンピュータサーバにホストされ、サーバコンピュータ２０４とインターフェースしてもよく、この構成では、事前準備コンポーネント６１８が、事前準備したインスタンスに関連する情報を、サーバコンピュータ２０４によって実行されるコンピューティングコンポーネントに提供する。
【００６９】
インスタンスを事前起動するために、インスタンスマネージャ２０８は、機械イメージ６２０にアクセスし、その構成ファイル６２６を変更し、変更された機械イメージからインスタンス６５０をブートする。この時点で、インスタンス６５０が起動され、インスタンスマネージャ２０８が、仮想メモリをそのゲストオペレーティングシステム６２２に割り当てる。この仮想メモリは、通常、そのＲＡＭなどの、サーバコンピュータ２０２の物理メモリにマッピングされる。また、この時点で、インスタンス６５０は、顧客コンピューティングシステムに接続していなく、アプリケーション６２４を実行しない。それ故に、顧客コンピューティングシステムからリクエストが受信されるまで、インスタンス６５０は、アイドリング状態にある。
【００７０】
インスタンスマネージャは、インスタンスがアイドリング状態にあることを検出すると、関連する物理メモリをディスクとスワッピングすることによって、サーバコンピュータにおいて実行している他のインスタンスからこの物理メモリを解放することができる。例えば、インスタンスマネージャは、関連する物理メモリのコンテンツを、ルートストレージデバイス６３２におけるスワップファイル６３２に保存し、その物理メモリを仮想メモリマッピングに更新する。
【００７１】
データセンタ１０２が顧客コンピューティングシステムからリクエストを受信するまで、インスタンスはアイドリング状態のままである。その後、管理コンポーネント２１０は、顧客を認証し、その顧客がインスタンスを使用する許可を有しているか否かを決定する。許可を有していると判断した場合には、展開コンポーネント２１４が、インスタンス６５０を使用してリクエストを満たすことができることを決定する。次に、展開コンポーネント２１４は、インスタンス６５０を開始することをロードバランサコンポーネント２１６に指示する。次に、ロードバランサコンポーネントは、インスタンスを起動するためにインスタンスマネージャ２０８を呼び出す。
【００７２】
インスタンスマネージャ２０８は、ロードバランサからの命令を受信してインスタンス６５０を起動すると、割り当てられた物理メモリにスワップファイルをロードし、物理メモリと仮想メモリとの間のマッピングを更新し、インスタンスに、マッピングされた仮想メモリとして物理メモリを使用させる。その時点において、インスタンスは、起動されるものとして、かつ顧客コンピューティングシステムに接続された状態にあるとみなされる。
【００７３】
図７は、顧客コンピューティングシステムからインスタンスについてのリクエストを受信する前にインスタンスを事前準備するためのデータセンタ１０２の別の実施例の構成を図示する。図７の構成では、データセンタのさまざまなコンピューティングコンポーネント（例えば、管理コンポーネント２１０、展開コンポーネント２１４、ロードバランサコンポーネント２１６、および事前準備コンポーネント６１８）が、サーバコンピュータ２０２においてインスタンス７５０を事前設定するが、これらはリクエストが受信されるまでブートしない。実施例の実施形態では、事前準備コンポーネント６１８は、リクエストを受信する前に、機械イメージ６２０にアクセス、それをキャッシュ、解読および解凍し、事前準備したインスタンス７５０に関連するさまざまなパラメータに基づいて、構成ファイル６２６を構文解析および変更するように、インスタンスマネージャ２０８に指示して実行させることができる。これらのパラメータは、例えば、事前準備したインスタンスの設定パラメータ、サーバコンピュータ２０２のハードウェアおよびシステム構成、追加されたストレージボリュームのアドレス指定、ネットワークインターフェースなどを含む。変更およびキャッシュ機械イメージを、図７に機械イメージ７６０として示す。
【００７４】
インスタンスについてのリクエストが受信されると、管理コンポーネント２１０が、顧客を認証および認可してインスタンスを起動する。次に、展開コンポーネント２１４が、事前準備したインスタンス７５０によってリクエストを満たすことができることを決定し、事前準備したインスタンスの起動を完了することをロードバランサコンポーネント２１６に指示する。次に、ロードバランサコンポーネントは、事前準備したインスタンスを起動するためにサーバコンピュータ２０２を呼び出す。サーバコンピュータのインスタンスマネージャ２０８は、事前設定された機械イメージ７６０をマウントしかつ読み出し、そのオペレーティングシステムをブートする。ブートが完了すると、インスタンスは、起動されるもの、かつ顧客コンピューティングシステムに接続できるものとみなされる。
【００７５】
図４の工程４０４〜４０８並びに図６および図７のシステムを、単一のインスタンスの文脈において本明細書に前述したが、より多い数、およそ数百個および数千個以上のインスタンスを利用することもできる。また、予測要求に基づいたインスタンスの事前準備についての目標の設定に加えて、さまざまなコンピューティングコンポーネント（例えば、事前準備コンポーネント６１８、展開コンポーネント２１４）は、サーバコンピュータにおける事前準備したインスタンスの配置に関連する制約を考慮して、それらを特定のサーバコンピュータに配置することができる。
【００７６】
図８は、そのような手順の実施例であり、コンピューティングリソースの使用および財務コストを最適化するように実施される。説明の明確さのために、事前準備コンポーネント６１８は、図８の実施例の手順を実行するものとして記述される。それでもなお、データセンタ１０２の他のコンポーネントまたはコンポーネントの組み合わせを使用することができ、それらが当業者に明らかであるはずである。
【００７７】
工程８０２は、事前準備コンポーネント６１８が、さまざまなサーバコンピュータにおける利用可能な容量を表す密度パラメータを決定することを例証する。事前準備コンポーネント６１８は、これらのパラメータを使用して、サーバコンピュータを効率的に使用する（例えば、大容量使用を目標にする）、並びにサーバコンピュータ内およびそれのいたるところの不具合の影響を低減する（例えば、特定の顧客の事前準備したインスタンスを複数のサーバコンピュータにわたって分配する）ような密度を目標にする。
【００７８】
工程８０４は、事前準備コンポーネント６１８が、サーバコンピュータにおいて同時に事前準備されているインスタンスの数を表す同時パラメータを決定することを例証する。事前準備コンポーネント６１８は、これらのパラメータを使用して、単一サーバコンピュータにおける短時間内の多数のインスタンスの事前準備に伴うホットスポットの形成を回避する。
【００７９】
工程８０６は、事前準備コンポーネント６１８が、事前準備したインスタンスを顧客に利用可能にすべきタイムフレームを決定することを例証する。このタイムフレームは、通常、例えば、利用可能な容量、およびアベイラビリティの対応する期間に関連するさまざまなパラメータに応じて決まる。タイムフレームが一旦設定されても、利用可能な容量が減少した場合、または予測されていなかった新規のトラフィックをデータセンタ１０２が受信した場合には、タイムフレームを短縮することができる。同様に、利用可能な容量が増大した場合、または計画されたトラフィックが予想外に減少した場合には、タイムフレームを延長することができる。
【００８０】
工程８０８は、事前準備コンポーネント６１８が、複数のゾーンおよび／または領域にわたるリソースアベイラビリティを表す領域およびゾーンパラメータを決定することを例証する。事前準備コンポーネント６１８は、これらのパラメータを使用して、領域またはゾーンのいずれかにおける不具合の顧客への影響を最小限にするように、事前準備したインスタンスを複数のゾーンおよび領域にわたってサーバコンピュータに分配する。この工程はまた、事前準備コンポーネント６１８が、事前準備されたインスタンを最もよくサポートするようなサーバコンピュータの互換性を決定することも含むことができる。例えば、事前準備したインスタンスは、１つの領域のみにおいて利用可能な特定のネットワーキングインターフェースを要求することができる。この実施例では、事前準備コンポーネント６１８は、事前準備したインスタンスを、その領域内のサーバコンピュータに配置する。
【００８１】
工程８０８は、事前準備コンポーネント６１８が、事前準備したインスタンスをサポートできるコンピューティングリソースを表す互換性パラメータを決定することを例証する。事前準備コンポーネント６１８は、特定のタイプのインスタンスが特定のコンピューティングリソースにおいてのみホストされ得るように、データセンタ１０２が構成されたときにこれらのパラメータを使用することができる。そのようなものとして、この工程では、事前準備コンポーネントは、事前準備したインスタンスを実際にサポートできるサーバコンピュータを決定し、事前準備したインスタンスをこれらのサーバコンピュータに積極的に配置することによって、事前準備したインスタンスの構成と、コンピュータサーバの構成との間の互換性を確実に持たせることができる。
【００８２】
工程８１２は、事前準備コンポーネント６１８が、インスタンスの事前準備に伴う財務コストを表す財務パラメータを決定することを例証する。例えば、特定のオペレーティングシステムのベンダーは、インスタンスごとの基準ではなく、サーバコンピュータごとの基準においてライセンス料を支払うことができる。換言すれば、サーバコンピュータにおいてホストされている、特定のオペレーティングシステムを実行するインスタンスの数にかかわらず、料金は均一である。そのような実施例では、事前準備コンポーネントは、特定のオペレーティングシステムを実行する事前準備したインスタンスを、その特定のオペレーティングシステムを持つ、インスタンスを既にホストしているサーバコンピュータに配置することによって、追加のライセンス料の負担を回避する。
【００８３】
工程８１４は、事前準備コンポーネント６１８が、事前準備したインスタンスをサーバコンピュータに配置することを例証する。この工程では、事前準備コンポーネント６１８は、前述のパラメータを組み合わせて、インスタンスの展開を最適化する。この最適化は、事前準備したインスタンスのサーバコンピュータへの配置に関連する多くの制約の優先順位を決めるおよびそれを最大限に生かすことを含むことができる。一旦選択されると、事前準備コンポーネント６１８は、図４の手順に記述するような、これらのコンピュータリソースへの事前準備したインスタンスの展開を開始する。
【００８４】
図９を参照すると、この図は、前述のソフトウェアコンポーネントを実行する能力があるコンピュータ８００についての実施例のコンピュータアーキテクチャを示す。図９に示すコンピュータアーキテクチャは、従来のサーバコンピュータ、ワークステーション、デスクトップコンピュータ、ラップトップ、タブレット、ネットワークアプライアンス、ＰＤＡ、電子リーダ、デジタル携帯電話、または他のコンピューティングデバイスを例証し、そしてこれを利用して、データセンタ１０２内、サーバコンピュータ２０２上、顧客コンピューティングシステム１０４上、または本明細書に言及した任意の他のコンピューティングシステムにおいて実行するものとして記述され、本明細書に提示されたソフトウェアコンポーネントの任意の態様を実行することができる。
【００８５】
コンピュータ９００は、ベースボード、または数多くのコンポーネントもしくはデバイスを、システムバスまたは他の電気通信パスを手段として接続できるプリント基板である「マザーボード」を含むことができる。１つ以上の中央処理装置（「ＣＰＵ」）９０４が、チップセット９０６ととともに動作することができる。ＣＰＵ９０４は、コンピュータ９００の工程に必須の算術および論理演算を実行する標準的なプログラマブルプロセッサであってもよい。
【００８６】
ＣＰＵ９０４は、状態間を差別化するおよび変化させるスイッチング素子の操作を通じて、ある離散的な物理的状態から次の状態に遷移させることによって、必須の工程を実行することができる。スイッチング素子は、通常、フリップフロップなどの、２つのバイナリ状態のうちの１つの状態を維持する電子回路、および論理ゲートなどの、１つ以上の他のスイッチング素子の状態の論理結合に基づいた出力状態を提供する電子回路を含むことができる。これらの基本的なスイッチング素子を組み合わせて、レジスタ、加減算器、算術論理演算ユニット、浮動小数点演算ユニットなどを含むより複雑な論理回路を作り出すことができる。
【００８７】
チップセット９０６は、ＣＰＵ９０４と、ベースボード上の残りのコンポーネントおよびデバイスとの間のインターフェースを提供することができる。チップセット９０６は、コンピュータ９００におけるメインメモリとして使用されるランダムアクセスメモリ（「ＲＡＭ」）９０８とのインターフェースを提供することができる。チップセット９０６は、さらに、コンピュータ９００の起動、並びにさまざまなコンポーネントおよびデバイス間の情報の転送を支援できる基本的ルーチンを保存するリードオンリメモリ（「ＲＯＭ」）９２０または不揮発性ＲＡＭ（「ＮＶＲＡＭ」）などのコンピュータ可読記憶媒体とのインターフェースを提供することができる。ＲＯＭ９２０またはＮＶＲＡＭはまた、本明細書に記述された実施形態に従うコンピュータ９００の工程に必須のコンピュータ可読命令などの他のソフトウェアコンポーネントも保存することができる。
【００８８】
コンピュータ９００は、ネットワーク２１８を通じたリモートコンピューティングデバイスおよびコンピュータシステムとの論理的接続を使用したネットワーク化された環境において動作することができる。チップセット９０６は、ギガビットイーサネットアダプタなどのネットワークインターフェースコントローラ（「ＮＩＣ」）９２２を通じたネットワークの接続性を提供するための機能性を含むことができる。ＮＩＣ９２２は、ネットワーク２１８を通じて、コンピュータ９００と他のコンピューティングデバイスとを接続する能力がある。コンピュータと他のタイプのネットワークおよびリモートコンピュータシステムとを接続する複数のＮＩＣ９２２がコンピュータ９００に存在できることが認識されるはずである。
【００８９】
コンピュータ９００は、コンピュータに不揮発性ストレージを提供するマスストレージデバイス９２８に接続することができる。マスストレージデバイス９２８は、より詳細を本明細書に記述したシステムプログラム、アプリケーションプログラム、他のプログラムモジュールおよびデータを保存することができる。マスストレージデバイス９２８は、チップセット９０６に接続されたストレージコントローラ９２４を通じてコンピュータ９００に接続することができる。マスストレージデバイス９２８は、１つ以上の物理ストレージユニットからなってもよい。ストレージコントローラ９２４は、シリアル接続ＳＣＳＩ（「ＳＡＳ」）インターフェース、シリアルアドバンスト・テクノロジ・アタッチメント（「ＳＡＴＡ」）インターフェース、ファイバチャンネル（「ＦＣ」）インターフェース、またはコンピュータと物理ストレージユニットとの間でデータを物理的に接続および転送するための他のタイプのインターフェースを通じて、物理ストレージユニットとインターフェース接続することができる。
【００９０】
コンピュータ９００は、保存されている情報を反映するように物理ストレージユニットの物理的状態を変形することによって、マスストレージデバイス９２８にデータを保存することができる。物理的状態の具体的な変形は、さまざまなファクタおよびこの記述の種々の実施に応じて決まり得る。そのようなファクタの実施例は、これらに限定されないが、マスストレージデバイス９２８が一次記憶装置または二次記憶装置として特徴づけられているかなどにかかわらず、物理ストレージユニットを実施するのに使用される技術を含むことができる。
【００９１】
例えば、コンピュータ９００は、ストレージコントローラ９２４を通じて命令を出すことによって情報をマスストレージデバイス９２８に保存することができ、これにより、磁気ディスクドライブユニット内の特定の場所の磁気特性、光学記憶装置内の特定の場所の反射もしくは屈折特性、または特定のコンデンサ、トランジスタもしくはソリッドステート記憶装置における他の離散コンポーネントの電気特性を変えることができる。本記述の範囲および精神から逸脱することなく、この記述を容易にするためだけに提供された前述の実施例によって、物理媒体の他の変形も可能である。コンピュータ９００は、さらに、物理ストレージユニット内の１つ以上の特定の場所の物理的状態または特性を検出することによって、マスストレージデバイス９２８から情報を読み出すことができる。
【００９２】
前述のマスストレージデバイス９２８に加えて、コンピュータ９００は、プログラムモジュール、データ構造または他のデータなどの情報を保存および取得するための他のコンピュータ可読ストレージ媒体へのアクセスを有することができる。コンピュータ可読ストレージ媒体が、非一時的データのストレージを提供し、コンピュータ９００によってアクセスできる任意の利用可能な媒体であってもよいことが当業者によって認識されるはずである。
【００９３】
限定されない実施例として、コンピュータ可読ストレージ媒体は、方法または技術において実装される、揮発性および不揮発性の、取り外し可能な媒体および取り外し不可能な媒体を含むことができる。コンピュータ可読ストレージ媒体は、これらに限定されないが、ＲＡＭ、ＲＯＭ、消去可能プログラマブルＲＯＭ（「ＥＰＲＯＭ」）、電気的消去可能プログラマブルＲＯＭ（「ＥＥＰＲＯＭ」）、フラッシュメモリもしくは他のソリッドステートメモリ技術、コンパクトディスクＲＯＭ（「ＣＤ−ＲＯＭ」）、デジタル多用途ディスク（「ＤＶＤ」）、高解像度ＤＶＤ（「ＨＤ−ＤＶＤ」）、ＢＬＵ−ＲＡＹもしくは他の光学ストレージ、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくは他の磁気記憶装置、または非一時的な方法で所望の情報を保存するのに使用できる任意の他の媒体を含む。
【００９４】
マスストレージデバイス９２８は、コンピュータ９００の動作を制御するのに利用されるオペレーティングシステムを保存することができる。一実施形態に従い、オペレーティングシステムは、ＬＩＮＵＸオペレーティングシステムのバージョンを含む。別の実施形態に従い、オペレーティングシステムは、マイクロソフトが提供するＷＩＮＤＯＷＳ  ＳＥＲＶＥＲオペレーティングシステムのバージョンを含む。さらなる実施形態に従い、オペレーティングシステムは、ＵＮＩＸオペレーティングシステムのバージョンを含むことができる。他のオペレーティングシステムも利用できることが認識されるはずである。マスストレージデバイス９２８は、管理コンポーネント２１０および／または前述の他のソフトウェアコンポーネントなどのコンピュータ９００によって利用される、他のシステムまたはアプリケーションプログラムおよびデータを保存することができる。
【００９５】
マスストレージデバイス９２８または他のコンピュータ可読ストレージ媒体はまた、コンピュータ９００にロードされると、汎用コンピューティングシステムからのコンピュータを本明細書に記述される実施形態を実施する能力がある専用コンピュータに変形するコンピュータ実行可能命令でエンコードすることもできる。これらのコンピュータ実行可能命令は、前述のようなＣＰＵ９０４による状態間の遷移方法を指定することによって、コンピュータ９００を変形する。コンピュータ９００は、コンピュータ９００によって実行されたときに図３および図４に関して記述した手順を実行するコンピュータ実行可能命令を保存するコンピュータ可読ストレージ媒体へのアクセスを有することができる。
【００９６】
コンピュータ９００は、キーボード、マウス、タッチパッド、タッチスクリーン、電子スタイラスなどの多くの入力デバイス、または他のタイプの入力デバイスからの入力を受信および処理するための入出力コントローラ９３２も含むことができる。同様に、入出力コントローラ９３２は、出力を、コンピュータモニタ、フラットパネルディスプレイなどのディスプレイ、デジタルプロジェクタ、プリンタ、プロッタまたは他のタイプの出力デバイスに提供することができる。コンピュータ９００は、図９に示すコンポーネントのすべては含まなくてもよく、図９に明白に示されない他のコンポーネントを含んでもよいし、図９に示すものとは完全に異なるアーキテクチャを利用してもよいことが認識される。
【００９７】
図面に図示するネットワークトポロジが、大いに単純化されており、本明細書に開示するさまざまなコンピューティングシステムを相互接続するのに、より多くのネットワークおよびネットワーキングデバイスを利用できることが認識されるはずである。これらのネットワークトポロジおよびデバイスは、当業者に明らかであるはずである。
【００９８】
図面のシステムが、単なる例示であり、他の実施も使用できることも認識されるはずである。その上、本明細書に開示する機能性を、ソフトウェア、ハードウェアまたはソフトウェアとハードウェアとの組み合わせにおいて実施できることが認識されるはずである。他の実施も当業者に明らかであるはずである。サーバ、ゲートウェイまたは他のコンピューティングデバイスが、記述したタイプの機能性と相互作用およびそれを実行できるハードウェアまたはソフトウェアの任意の組み合わせを備えることができることも認識されるはずである。これらには、制限なく、デスクトップまたは他のコンピュータ、データベースサーバ、ネットワークストレージデバイスおよび他のネットワークデバイス、ＰＤＡ、タブレット、携帯電話、無線電話、ポケットベル、電子手帳、インターネット家電、テレビベースのシステム（例えば、セットトップボックスおよび／またはデジタル式ビデオ録画再生装置もしくはデジタルビデオテープレコーダを使用したもの）、および適当な通信機能を含むさまざまな他の消費者製品が含まれる。さらに、図示したモジュールによってもたらされる機能性は、いくつかの実施形態では、より少ないモジュールにおいて組み合わされてもよいし、追加のモジュールに分配されてもよい。同様に、いくつかの実施形態では、図示したモジュールのいくつかの機能性はもたらされなくてもよいし、かつ／または他の追加の機能性が利用可能であってもよい。
【００９９】
先行するセクションに記述された工程、プロセス、方法およびアルゴリズムの各々は、１つ以上のコンピュータまたはコンピュータプロセッサによって実行されるコードモジュールにおいて具現され、かつそれによって完全にまたは部分的に自動化することができる。コードモジュールは、例えば、ハードドライブ、ソリッドステートメモリ、光ディスクなどの任意のタイプの非一時的コンピュータ可読媒体、またはコンピュータ記憶装置に保存することができる。プロセスおよびアルゴリズムは、特定用途向け集積回路において部分的にまたは全体的に実装することができる。開示したプロセスおよびプロセスステップの結果は、永続的に、さもなければ、例えば、揮発性または不揮発性ストレージなどの任意のタイプの非一時的コンピュータストレージに保存することができる。
【０１００】
前述のさまざまな特徴およびプロセスは、互いに独立して使用してもよいし、さまざまな様式において組み合わせてもよい。すべての可能なコンビネーションおよびサブコンビネーションが、本開示の範囲内にあると意図される。さらに、特定の方法またはプロセスブロックは、いくつかの実施では除外してもよい。本明細書に記述された方法およびプロセスはまた、任意の特定のシーケンスに制限されず、それに関連するブロックまたはステートは、適当な他のシーケンスにおいて実行することができる。例えば、記述したブロックまたはステートは、具体的に開示された以外の順序で実行してもよいし、複数のブロックまたはステートを、単一のブロックまたはステートに結合してもよい。実施例のブロックまたはステートは、順番に、並行して、または何らかの他の様式で実行してもよい。開示した実施例の実施形態にブロックまたはステートを追加してもよいし、それから除外してもよい。本明細書に記述された実施例のシステムおよびコンポーネントは、記述したものと異なって構成してもよい。例えば、開示した実施例の実施形態に要素を追加してもよいし、それから除外してもよいし、それに対して再配置してもよい。
【０１０１】
さまざまなアイテムが、使用中にメモリまたはストレージに保存されるものとして例証され、これらのアイテムまたはそれらの一部が、メモリ管理およびデータ保全を目的として、メモリと他のストレージデバイスとの間を転送され得ることも認識される。代替的に、他の実施形態では、ソフトウェアモジュールおよび／またはシステムのいくつかまたはすべては、コンピュータ間通信を通じて、別のデバイスにおけるメモリにおいて実行し、例証したコンピューティングシステムと通信することができる。なおその上に、いくつかの実施形態では、システムおよび／またはモジュールのいくつかまたはすべては、これらに限定されないが、１つ以上の特定用途向け集積回路（ＡＳＩＣ）、標準集積回路、（例えば、適当な命令を実行する、マイクロコントローラおよび／または組込コントローラを含む）コントローラ、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、結合プログラム可能論理回路（ＣＰＬＤ）などを含む、少なくとも部分的にファームウェアおよび／またはハードウェアにおいてなどの、他の様式で実施または提供することができる。モジュール、システムおよびデータ構造のいくつかまたはすべては、ハードディスク、メモリ、ネットワークまたは適当なドライブによってもしくは適当な接続を通じて読み出される可搬型媒体品などのコンピュータ可読媒体に（例えば、ソフトウェア命令または構造化データとして）保存することもできる。システム、モジュールおよびデータ構造は、無線ベースのおよび有線もしくはケーブルベースの媒体を含む、様々なコンピュータ可読伝送媒体において、（例えば、搬送波または他のアナログもしくはデジタル伝搬信号の一部として）、生成されたデータ信号として伝送することもできる。そしてこれは、（例えば、単一もしくは多重化アナログ信号の一部として、または複数の離散デジタルパケットもしくはフレームとして）様々な形態をとることができる。そのようなコンピュータプログラム製品は、他の実施形態では他の形態もとることができる。したがって、本発明は、他のコンピュータシステム構成とともに実践することができる。
【０１０２】
本明細書に使用される条件付き言語、例えば、特に、「ｃａｎ」、「ｃｏｕｌｄ」、「ｍｉｇｈｔ」、「ｍａｙ」、「ｅ．ｇ．」などは、別途記載がない限り、または使用される文脈内で別な様に理解されない限り、通常、特定の実施形態が、他の実施形態が含まない特定の特徴、要素および／またはステップを含むことを伝達することが意図される。それ故に、そのような条件付き言語は、通常、特徴、要素および／またはステップが何らかの様式において１つ以上の実施形態に必須である、または１つ以上の実施形態が、作者の入力または助言の有無にかかわらず、これらの特徴、要素および／またはステップが任意の特定の実施形態に含まれるか、またはそこで実行されるかを決定するための論理を必ず含むことを暗示することは意図しない。用語「備えている」、「含んでいる」、「有している」などは、同義的であり、制限のない様式で包括的に使用され、追加の要素、特徴、行為、工程などを除外するものではない。また、用語「または」は、その包括的意味で（かつ、その排他的意味ではない）使用され、そのため、使用される場合には、例えば、要素のリストを結びつけ、リストにおける要素の１つ、いくつかまたはすべてを意味する。
【０１０３】
特定の実施例の実施形態を記述したが、これらの実施形態は、単に実施例として提示され、本明細書に開示する本発明の範囲を限定するようには意図されない。それ故に、いかなる前の記述も、任意の特定の特徴、特性、ステップ、モジュールまたはブロックが必須または不可欠であることを暗示することは意図しない。実際、本明細書に記述された新規の方法およびシステムは、様々な他の形態で具現することができ、さらに、本明細書に開示する本発明の精神から逸脱することなく、本明細書に記述された方法およびシステムの形態にさまざまな排除、置き換えおよび変更を為すことができる。添付の特許請求の範囲およびそれらの均等物は、本明細書に開示する本発明の特定の範囲および精神内に収まるようなそのような形態または変更を含むように意図される。
【０１０４】
本開示の実施形態は、以下の条項を考慮して記述することができる。
（１）
ネットワーク接続を通じて互いに通信するように構成された複数のコンピューティングデバイスを備えた１つ以上のデータセンタと、
その内部にコンピュータ可読命令を保存した１つ以上のメモリと、を備えており、前記コンピュータ可読命令が、システムにおいて実行されたときに、前記システムに、少なくとも、
複数の機械イメージおよび複数の計算インスタンスタイプに関連する複数の計算インスタンスについての予測要求を決定させ、
前記予測要求に少なくとも部分的に基づいて、前記複数の計算インスタンスをホストするように構成された前記複数のコンピューティングデバイスのうちの１つ以上のコンピューティングデバイスを決定させ、
計算インスタンスを起動するためのリクエストを顧客ノードから受信する前に、前記複数の機械イメージおよび前記複数の計算インスタンスタイプに少なくとも部分的に基づいて、前記１つ以上のコンピューティングデバイスにおいて前記複数の計算インスタンスを起動およびアイドリングさせ、かつ
前記計算インスタンスを起動するための前記顧客ノードからの前記リクエストの受信に応答して、前記１つ以上のコンピューティングデバイスにおいてアイドリングされた、前記複数の機械イメージの１つから前記計算インスタンスを起動させる、計算インスタンスをプロビジョンおよび起動するためのシステム。
（２）
前記予測要求が、顧客ノードから受信したリクエストの履歴に少なくとも部分的に基づいて決定され、前記リクエストの履歴が、前記リクエストに関連する計算インスタンスの設定パラメータに少なくとも部分的に基づいてソートされる、条項１記載のシステム。
（３）
複数の計算インスタンスについての予測要求を決定するための前記命令が、前記システムにおいて実行されたときに、前記システムに、少なくとも、
計算インスタンスについてのリクエストの履歴を解析することによって、前記複数の計算インスタンスについての目標、および前記１つ以上のコンピューティングデバイスを決定させ、かつ
前記リクエストに関連する統計的ファクタに少なくとも部分的に基づいて前記目標を修正させる命令を含む、条項１記載のシステム。
（４）
前記複数のコンピューティングデバイスのうちから１つ以上のコンピューティングデバイスを決定するための前記命令が、前記システムにおいて実行されたときに、前記システムに、少なくとも、
前記複数のコンピューティングデバイスの予測されるアベイラビリティを決定させ、
前記複数の計算インスタンスの起動およびアイドリングに関連する制約を満たすように、前記予測要求と前記予測アベイラビリティとのバランスをとらせ、かつ
前記バランスに少なくとも部分的に基づいて前記１つ以上のコンピューティングデバイスを決定させる命令を含む、条項１記載のシステム。
（５）
予測要求に少なくとも部分的に基づく複数の事前設定された機械イメージを複数の計算ノードに提供することと、
計算インスタンスを起動するためのリクエストをユーザノードから受信した後に、前記計算インスタンスが、前記複数の事前設定された機械イメージのうちの少なくとも１つの機械イメージに関連することを決定することと、
前記決定に少なくとも部分的に基づいて、前記複数の計算ノードのうちの１つの計算ノードにおいて前記関連する機械イメージを使用して、前記計算インスタンスの起動を完了することと、を含む、方法。
（６）
前記予測要求が、計算インスタンスについての以前に受信したリクエストに少なくとも部分的に基づく、条項５記載の方法。
（７）
前記予測要求が、前記複数の事前設定された機械イメージに関連する複数の計算インスタンスのタイプ、および前記複数の事前設定された機械イメージに関連する識別子を含む、条項５記載の方法。
（８）
前記予測要求が、ユーザノードからの前記複数の計算インスタンスについてのリクエストが受信されると予測されるタイムフレーム、および前記ユーザノードからの前記リクエストに示されると予測される領域をさらに含む、条項７記載の方法。
（９）
前記機械イメージを保存するルートストレージデバイスからの前記機械イメージのキャッシング、
前記計算インスタンスの構成に少なくとも部分的に基づく前記機械イメージの構成ファイルの変更、および
前記計算インスタンスの前記構成に少なくとも部分的に基づく前記計算インスタンスへのストレージボリュームの割り当て、に少なくとも部分的に基づいて、前記機械イメージが前記計算ノードにおいて起動するように事前設定された、条項５記載の方法。
（１０）
前記計算インスタンスの起動の前記完了が、変更された前記構成ファイルに少なくとも部分的に基づいて、前記計算ノードにおいて前記機械イメージのオペレーティングシステムをブートすることを含む、条項９記載の方法。
（１１）
前記計算インスタンスの起動の前記完了が、
前記ユーザノードから前記リクエストを受信する前に、前記計算インスタンスを起動することと、
前記ユーザノードから前記リクエストを受信する前に、前記起動された計算インスタンスをアイドリングすることと、
前記ユーザノードからの前記リクエストの受信に応答して、前記アイドルされた計算インスタンスを起動することと、を含む、条項５記載の方法。
（１２）
システムにおいて実行されたときに、前記システムに、
複数の機械イメージに関連する複数の計算インスタンスについての要求を決定させる工程と、
複数の計算ノードにおける前記複数の計算インスタンスの起動に関連する制約に少なくとも部分的に基づいて、前記複数の機械イメージから前記複数の計算インスタンスを起動するように構成された前記複数の計算ノードを決定させる工程と、
前記複数の計算インスタンスのうちの計算インスタンスを起動するためのリクエストをユーザノードから受信する前に、複数のコンピューティングノードにおいて前記複数の機械イメージを構成させる工程と、
前記ユーザノードから前記リクエストを受信した後に、前記複数の計算ノードのうちの１つにおいて前記複数の構成された機械イメージの１つを使用して、特定の計算インスタンスの起動を完了させる工程と、を含む工程を実行させる命令を含む非一時的コンピュータ可読媒体。
（１３）
前記複数の計算インスタンスについての前記要求が、前記複数の計算インスタンスを起動するための予測されるリクエストに関連する、条項１２記載の非一時的コンピュータ可読媒体。
（１４）
前記システムにおいて実行されたときに、前記システムに、
起動されたインスタンスに関連する履歴を解析することによって、複数の計算インスタンスを起動するための前記予測リクエストに関連する複数の設定パラメータを決定させる工程と、
複数の計算ノードのアベイラビリティに少なくとも部分的に基づいて、前記複数の計算ノードにおける前記複数の計算インスタンスの起動に関連する目標を決定させる工程と、
前記目標に少なくとも部分的に基づいて、前記複数の設定パラメータのうちの１つ以上の設定パラメータを含む前記要求を設定させる工程と、を含む工程を実行させる命令をさらに含む、条項１３記載の非一時的コンピュータ可読媒体。
（１５）
前記複数の設定パラメータが、前記複数の計算インスタンスの数、前記複数の計算インスタンスのタイプ、および前記複数の機械イメージの識別子を含む、条項１４記載の非一時的コンピュータ可読媒体。
（１６）
前記履歴が複数のユーザノードに関連する前記起動されたインスタンスについてのリクエストに少なくとも部分的に基づき、前記起動されたインスタンスが特定の場所にホストされた、条項１４記載の非一時的コンピュータ可読媒体。
（１７）
前記制約が、前記複数の計算ノードにおいて利用可能な計算容量に少なくとも部分的に基づく、条項１２記載の非一時的コンピュータ可読媒体。
（１８）
前記制約が、前記複数の計算ノードのうちのある計算ノードにおいて同時に起動されるように構成された計算インスタンスの数に少なくとも部分的に基づく、条項１２記載の非一時的コンピュータ可読媒体。
（１９）
前記制約が、ゾーンまたは領域にわたる計算ノードのアベイラビリティに少なくとも部分的に基づく、条項１２記載の非一時的コンピュータ可読媒体。
（２０）
前記制約が、前記複数の機械イメージのうちの１つに関連するアプリケーションまたはオペレーティングシステムの実行に関連する料金に少なくとも部分的に基づく、条項１２記載の非一時的コンピュータ可読媒体。
（２１）
前記制約が、前記複数の計算ノードのうちの１つにおける、前記複数の機械イメージのうちの１つからの前記複数の計算インスタンスのうちの１つの起動に関連する料金に少なくとも部分的に基づく、条項１２記載の非一時的コンピュータ可読媒体。
（２２）
前記制約が、前記複数の計算インスタンスを起動するための前記複数の計算ノードの互換性に少なくとも部分的に基づく、条項１２記載の非一時的コンピュータ可読媒体。
【図１】
0006580035.tif 000002
【図２】
0006580035.tif 000003
【図３】
0006580035.tif 000004
【図４】
0006580035.tif 000005
【図５】
0006580035.tif 000006
【図６】
0006580035.tif 000007
【図７】
0006580035.tif 000008
【図８】
0006580035.tif 000009
【図９】
0006580035.tif 000010