JP6580035B2 - 事前設定および事前起動計算リソース - Google Patents

事前設定および事前起動計算リソース Download PDF

Info

Publication number
JP6580035B2
JP6580035B2 JP2016519600A JP2016519600A JP6580035B2 JP 6580035 B2 JP6580035 B2 JP 6580035B2 JP 2016519600 A JP2016519600 A JP 2016519600A JP 2016519600 A JP2016519600 A JP 2016519600A JP 6580035 B2 JP6580035 B2 JP 6580035B2
Authority
JP
Japan
Prior art keywords
instance
computing
instances
request
component
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2016519600A
Other languages
English (en)
Other versions
JP2016527604A (ja
Inventor
リチャード ジャック デ カット クリストファー
リチャード ジャック デ カット クリストファー
ラダクリシュナン アージュン
ラダクリシュナン アージュン
ヨハネス ニコラース ヴァン ダー マーウェ ジェイコブス
ヨハネス ニコラース ヴァン ダー マーウェ ジェイコブス
アルフレッド ゴードン グリーンフィールド ジェイムズ
アルフレッド ゴードン グリーンフィールド ジェイムズ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Amazon Technologies Inc
Original Assignee
Amazon Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Amazon Technologies Inc filed Critical Amazon Technologies Inc
Publication of JP2016527604A publication Critical patent/JP2016527604A/ja
Application granted granted Critical
Publication of JP6580035B2 publication Critical patent/JP6580035B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5033Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering data affinity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/50Network service management, e.g. ensuring proper service fulfilment according to agreements
    • H04L41/5041Network service management, e.g. ensuring proper service fulfilment according to agreements characterised by the time relationship between creation and deployment of a service
    • H04L41/5054Automatic deployment of services triggered by the service manager, e.g. service implementation by automatic configuration of network components
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/50Network service management, e.g. ensuring proper service fulfilment according to agreements
    • H04L41/508Network service management, e.g. ensuring proper service fulfilment according to agreements based on type of value added network service under agreement
    • H04L41/5096Network service management, e.g. ensuring proper service fulfilment according to agreements based on type of value added network service under agreement wherein the managed service relates to distributed or central networked applications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5014Reservation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/63Image based installation; Cloning; Build to order
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • H04L41/0813Configuration setting characterised by the conditions triggering a change of settings
    • H04L41/0816Configuration setting characterised by the conditions triggering a change of settings the condition being an adaptation, e.g. in response to network events

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Stored Programmes (AREA)
  • Information Transfer Between Computers (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • User Interface Of Digital Computer (AREA)

Description

関連出願の参照
本願は、2013年6月10日に出願された米国特許出願第13/914,225号の利益を主張するものであり、その開示はその全体が参照により本明細書に組み入れられる。
サービスプロバイダは、企業、大学、政府系機関および他のタイプの顧客などのさまざまな事業体にコンピューティングリソースを提供している。サービスプロバイダによって供給されるサービスは、事業体に、リソース割り当てにおける柔軟性、スケーラビリティの向上、運転コストの減少などをもたらしている。
サービスプロバイダは、一般的に、コンピューティングリソースをインスタンスの形態で提供する。インスタンスは、仮想機械、仮想機械インスタンスなどとして実施される場合がある。インスタンスの形態でコンピューティングリソースを提供する能力によって、サービスプロバイダは、サービスを利用するさまざまな事業体のニーズおよび要件に合う利用可能なコンピューティングリソースを動的にスケーリングすることができる。
図面全体を通じて、参照番号は、参照された要素間の一致を示すために再使用され得る。図面は、本明細書に記述される実施例の実施形態を図示するために提供され、本開示の範囲を限定することは意図しない。
実施形態に従う、データセンタの実施例の動作環境を図示する。 実施形態に従う、データセンタの実施例の構成を図示する。 インスタンスを起動するための実施例の手順を描写するフローチャートである。 実施形態に従う、インスタンスを起動するための別の実施例の手順を描写するフローチャートである。 実施形態に従う、予測要求を決定するための実施例の手順を描写するフローチャートである。 実施形態に従う、インスタンスを事前準備するデータセンタの実施例の構成を図示する。 実施形態に従う、インスタンスを事前準備するデータセンタの別の実施例の構成を図示する。 実施形態に従う、事前準備したインスタンスをコンピューティングリソースに配置するための実施例の手順を描写するフローチャートである。 本明細書に提示する実施形態に記述したさまざまなコンピューティングデバイスを実施するための実施例のコンピュータハードウェアアーキテクチャを図示する。
前述のように、サービスプロバイダは、コンピューティングリソースを、通例、コンピューティングインスタンスの形態で動的に事業体に提供する。事業体は、ほとんどの場合に、顧客、すなわち、サービスプロバイダの顧客と置き換え可能に本明細書において参照され、そして所望のコンピューティングインスタンスのタイプおよび構成を規定するための入力をサービスプロバイダに提供し、加えて、顧客がコンピューティングインスタンスを必要としている時に関する情報を提供する。この入力情報のすべてが、コンピューティングインスタンスを構成および起動するために、サービスプロバイダによって操作されるサービスによって使用される。起動プロセスは、通常、オンデマンドで起こり、顧客ニーズに反応する。しかしながら、起動プロセスは、即時ではなく、ほぼ即時でさえもない。むしろ、顧客は、起動がリクエストされた時と、インスタンスを顧客が使用できる状態になる時との間の顕著な時間遅延を体験する場合がある。顧客が体験する時間遅延は、そのコンピューティングリソースを構成してインスタンスを起動するサービスの結果としておよそ数分ともなることがある。その量の時間遅延は、顧客満足体験に影響を及ぼす可能性がある。
顧客満足体験を向上するために、サービスプロバイダは、インスタンスリクエストの履歴を解析し、その情報を使用してインスタンスの予測要求を決定することができる。この予測要求情報は、例えば、その顧客がリクエストすることをサービスプロバイダが予測するインスタンスの数およびタイプを含むことができる。予測要求情報に基づいて、サービスプロバイダは、コンピューティングリソースを事前設定し、事前設定されたコンピューティングリソースに計算インスタンスをプロビジョンすることによって、顧客がインスタンスをリクエストした時から、顧客がインスタンスを使用可能になる時までに要する時間を短縮することができる。サービスプロバイダは、顧客のコンピューティングデバイスからの、特定の構成のインスタンスを起動するためのリクエストを受信すると、プロビジョン済のインスタンスのうちのインスタンスを割り当てることによって、リクエストにサービスする。プロビジョン済のインスタンスを事前設定し、コンピューティングリソースに事前配置できるため、顧客は、顧客に転送されるインスタンスを制御するのみ、または顧客に接続するように(例えば、アイドリング状態からレジュームされて、またはキャッシュイメージからブートアップされて)起動されるインスタンスを待つのみでよい。
インスタンスおよびサービスのコンピューティングリソースの事前設定についてのさらなる詳細が、本明細書に提供される。本明細書に提示する主題が、コンピュータプロセス、コンピュータ制御の装置、コンピューティングシステム、またはコンピュータ可読記憶媒体などの製造品として実施できることが認識されるはずである。本明細書に記述される主題は、1つ以上のコンピューティングデバイスにおいて実行するプログラムモジュールの一般の文脈において提示するが、当業者は、他の実施を他のタイプのプログラムモジュールとの組み合わせにおいて実行できることを認識する。通常、プログラムモジュールは、ルーチン、プログラム、コンポーネント、データ構造、および特定のタスクを実行または特定の抽象データ型を実施する他のタイプの構造を含む。
当業者はまた、本明細書に記述された主題が、マルチプロセッサシステム、マイクロプロセッサベースの家庭用電化製品またはプログラマブル家庭用電化製品、ミニコンピュータ、メインフレームコンピュータ、ハンドヘルドコンピュータ、携帯情報端末、電子リーダ、携帯電話装置、専用ハードウェア装置、ネットワークアプライアンスなどを含む、本明細書に記述されたもの以外の他のコンピュータシステム構成において、またはそれらとともに実践できることも認識する。本明細書に記述される実施形態は、通信ネットワークを通じてリンクされたリモート処理装置によってタスクが実行される分散コンピューティング環境においても実践することができる。分散コンピューティング環境では、プログラムモジュールは、ローカルおよびリモート両方のメモリストレージデバイスに位置付けることができる。
計算ノードは、コンピューティングノードとしても参照されることがあり、コモディティハードウェアコンピュータ、仮想機械、コンピューティングクラスタおよびコンピューティングアプライアンスなどの種々のコンピューティング環境において実施することができる。これらのコンピューティングデバイスまたは環境のいくつかは、便宜上、計算ノードとして記述されることがある。
図1は、本明細書に記述される実施形態を実施することができる適切なコンピューティング環境の実施例を図示する。サービスプロバイダは、図示したコンピューティング環境を構成し、その顧客用の計算リソースおよび起動インスタンスを仮想化することができる。特に、図1は、プログラム実行サービス(「PES」)プラットフォーム108を含む例示の動作環境100を示すシステムおよびネットワーク図である。プラットフォーム108は、オンデマンドでインスタンスへのアクセスを提供するためのPES108として参照することができる。PESプラットフォーム108は、パーマネントでまたは必要に応じてアプリケーションを実行するための計算リソースを提供し、プライベートネットワークとして構成することができる。これらの計算リソースは、例えば、データ処理リソース、データストレージリソース、データ通信リソースなどのさまざまなタイプのリソースを含むことができる。各々のタイプの計算リソースは、汎用であってもよいし、多くの具体的な構成において利用可能なものであってもよい。例えば、データ処理リソースは、仮想機械インスタンスとして利用可能なものであってもよい。インスタンスは、例えば、ウェブサーバ、アプリケーションサーバ、媒体サーバ、データベースサーバなどを含むアプリケーションを実行するように構成できる。データストレージリソースは、ファイルストレージデバイス、ブロックストレージデバイスなどを含むことができる。
各々のタイプまたは構成の計算リソースは、種々のサイズのものを利用可能であり、例えば、多くのプロセッサ、大容量メモリおよび/もしくは大きなストレージ容量からなる大容量のリソース、並びに少数のプロセッサ、より少ない容量のメモリ、および/もしくはより小さいストレージ容量からなる小容量のリソースのものを利用可能である。顧客は、例えば、ウェブサーバとして多くの小容量の処理リソース、および/またはデータベースサーバとして1つの大容量の処理リソースを割り当てるように選択することができる。
PESプラットフォーム108によって提供される計算リソースは、1つ以上のデータセンタ102A、102B、102C〜102Nによって有効にすることができる。これらは、「データセンタ102」として単数で、または「データセンタ(複数)102」として複数形において本明細に参照され得る。データセンタ102は、コンピュータシステムおよび付随するコンポーネントを収容して動作させる施設であってもよく、冗長およびバックアップ電源、通信路、冷却およびセキュリティシステムを含むことができる。データセンタ102は、同じ施設内などの同じ地理的地域に位置付けることができ、高速光ファイバネットワークなどのプライベートネットワークを使用して相互接続し、PESプラットフォーム108のサービスプロバイダによって制御および管理することができる。データセンタ102はまた、地理的に異なる位置にわたって分布し、インターネットなどのパブリックネットワークを使用して部分的に相互接続することができる。本明細書に開示する概念および技術を実施するデータセンタ102の1つの例示の構成を、図2に関して後述する。
PESプラットフォーム108の顧客は、広域ネットワーク(「WAN」)106を通じて、データセンタ102によって提供された計算リソースにアクセスすることができる。図1にはWANを図示するが、ローカルエリアネットワーク(「LAN」)、インターネット、またはデータセンタ102とリモートの顧客および他のユーザとを接続する、当業界において公知の任意の他のネットワークトポロジおよびネットワーク接続を利用できることが認識されるはずである。そのようなネットワークの組み合わせも利用できることも認識されるはずである。
PESプラットフォーム108の顧客は、コンピューティングシステム104を利用して、データセンタ102によって提供された計算リソースにアクセスすることができる。(「顧客ノード」、「ユーザノード」などとしても参照され得る)顧客コンピューティングシステム104は、サーバコンピュータ、デスクトップもしくはラップトップコンピュータ、タブレットコンピュータ、無線電話、PDA、電子リーダ、ゲーム機、セットトップボックス、または任意の他のコンピューティングデバイスなどのPESプラットフォーム108にアクセスする能力があるコンピュータであってもよい。
詳細については後述するように、顧客コンピューティングシステム104を利用して、PESプラットフォーム108によって提供された計算リソースの態様を構成することができる。これに関連して、PESプラットフォーム108は、ウェブインターフェースを提供し、これを通じて、その動作の態様を、顧客コンピューティングシステム104において実行するウェブブラウザアプリケーションプログラムを使用して構成することができる。代替的に、顧客コンピューティングシステム104において実行するスタンドアロンアプリケーションプログラムは、設定動作を実行するための、PESプラットフォーム108によって露出されたアプリケーションプログラミングインターフェース(「API」)にアクセスすることができる。PESプラットフォーム108における新規の仮想機械インスタンスの起動を含む、PESプラットフォーム108の動作を設定するための他のメカニズムも利用することができる。
本明細書に開示する実施形態に従う、PESプラットフォーム108によって提供される取得した計算リソースの容量は、要求に応じてスケーリングすることができる。これに関連して、スケーリングは、「起動」もしくは「作製」としても本明細書に参照され得るインスタンス化、または「デスケーリング」としても本明細書に参照され得る「終了」として、要求に応じて計算リソースのインスタンスをインスタンス化するプロセスを指す。
自動スケーリングは、リソースについての要求に応じた増大または一時的静止に応答して計算リソースをスケーリングするための1つのメカニズムであり得る。自動スケーリングによって、PESプラットフォーム108の顧客は、顧客が規定した条件に従い取得した計算リソースをスケーリングすることができる。例として、要求に応じて、スパイクなどの特定の条件の発生に応じて、特定の様式において容量をスケーリングアップするようにルールを規定することができる。同様に、ルールを、要求に応じて、一時的静止などの他の条件の発生に応じて、特定の様式において容量をスケーリングダウンするように規定することもできる。仮想機械インスタンスを起動するための本明細書に開示するメカニズムは、顧客が手動でインスタンスを起動する場合、またはPESプラットフォーム108における自動スケーリングコンポーネントによってインスタンスが起動される場合に利用することができる。
PESプラットフォーム108は、計算リソースの新規のインスタンスの展開において顧客を援助するための展開コンポーネントを備えて構成することもできる。展開コンポーネントは、新規のインスタンスをどのように構成すべきかを記述するデータを含み得る、顧客からの設定を受信することができる。例えば、この設定は、新規のインスタンスにインストールすべき1つ以上のアプリケーションまたはソフトウェアコンポーネントを指定し、そして新規のインスタンスにおいて実行されるスクリプトおよび/または他のタイプのコード、どのようなアプリケーションキャッシュを準備すべきかを指定するキャッシュウォーミング論理、並びに他のタイプの情報を提供することができる。展開コンポーネントは、顧客が提供した設定およびキャッシュウォーミング論理を利用して、計算リソースの新規のインスタンスを起動、設定および用意する。
図2は、PESプラットフォーム108を実施するデータセンタ102の1つの構成を図示するコンピューティングシステム図である。図2に示す実施例のデータセンタ102は、いくつかのサーバコンピュータ202A、202B、202C、202D〜202Nを含むことができる。これらは、インスタンスをホストし、アプリケーションを実行するための計算リソースを提供するための、「サーバコンピュータ202」として単数で、または「サーバコンピュータ(複数)202」として複数形において本明細に参照され得る。サーバコンピュータ202は、前述の計算リソースを提供するように適切に構成されたスタンダードタワーまたはラックマウントサーバコンピュータであってもよい。例として、1つの実施では、サーバコンピュータ202は、「インスタンス206」として単数で、または「インスタンス(複数)206」として複数形において本明細に参照され得る、計算リソースのインスタンス206A〜206D〜206G〜206J〜206Nを提供するように構成できる。
インスタンス206は、仮想機械インスタンスであってもよい。当業界において公知のように、仮想機械インスタンスは、物理的機械のような、プログラムを実行する機械(すなわち、コンピュータ)のソフトウェア実装のインスタンスである。サーバは、機械(例えば、オペレーティングシステム、アプリケーションサーバおよびアプリケーション)のイメージを使用して、仮想機械インスタンスを起動することができる。このイメージは、機械イメージとしても参照され得、ソフトウェア構成、およびインスタンスをブートするのに必要なすべての情報を包含するテンプレートである。仮想機械インスタンスの実施例では、各サーバ202は、インスタンスを実行する能力があるインスタンスマネージャ208を実行するように構成できる。インスタンスマネージャ208は、例えば、ハイパーバイザであってもよいし、単一サーバ202における複数のインスタンス206の実行を可能にするように構成された別のタイプのプログラムであってもよい。前述のように、インスタンス206の各々は、アプリケーションのすべてまたは一部を実行するように構成できる。
本明細書に開示する実施形態を、主に仮想機械インスタンスの文脈において記述したが、他のタイプのインスタンスも本明細書に開示する概念および技術とともに利用できることが認識されるはずである。例として、本明細書に開示する技術は、ストレージリソースのインスタンス、データ通信リソースのインスタンス、および計算インスタンスとして参照され得るすべての他のタイプのリソースとともに利用することができる。本明細書に開示する実施形態はまた、仮想機械インスタンスを利用しなくても、コンピュータシステムにおいて直接にアプリケーションのすべてまたは一部を実行することができる。
図2に示すデータセンタ102は、「サーバコンピュータ204」として単数形において、または「サーバコンピュータ(複数)204」として複数形において参照され得る1つ以上のサーバコンピュータ204も含むことができる。これは、データセンタ102、サーバコンピュータ202およびインスタンス206の動作を管理するためのソフトウェアコンポーネントを実行するためにリザーブされている。特に、サーバコンピュータ204は、管理コンポーネント210を実行することができる。前述のように、PESプラットフォーム108の顧客は、顧客コンピューティングシステム104を利用して管理コンポーネント210にアクセスし、顧客が購買したPESプラットフォーム108およびインスタンス206の動作のさまざまな態様を設定することができる。例えば、顧客は、インスタンスを取得し、インスタンスの構成を規定および変更することができる。インスタンスの構成は、計算インスタンスを起動するためにデータセンタ102が使用する機械イメージのオペレーティングシステム、アプリケーションサーバ、アプリケーションなどを指定するパラメータを含むことができる。顧客はまた、インスタンスを起動するためのリクエストを管理コンポーネント210に提供し、取得したインスタンスを要求に応じてどのようにスケーリングするかについての設定を指定することができる。
簡潔に前述もしたように、自動スケーリングコンポーネント212は、PESプラットフォーム108の顧客が規定したルールに基づいて、インスタンス206をスケーリングすることができる。例えば、自動スケーリングコンポーネント212において顧客は、新規のインスタンスをインスタンス化すべき時を決定するのに使用されるルールをスケーリングアップし、既存のインスタンスを終了すべき時を決定するのに使用されるルールをスケーリングダウンすることを指定できる。
自動スケーリングコンポーネント212は、単一サーバコンピュータ204上において実行してもよいし、PESプラットフォーム108内の複数のサーバコンピュータ202にわたって並行して実行してもよい。さらに、自動スケーリングコンポーネント212は、PESプラットフォーム108内の異なるサーバコンピュータ202または他のコンピューティングデバイスにおいて実行する多くのサブコンポーネントからなることもできる。自動スケーリングコンポーネント212は、ソフトウェア、ハードウェアまたはそれらの任意の組み合わせとして実施することができる。自動スケーリングコンポーネント212は、例えば、内部管理ネットワークを通じて、PESプラットフォーム108内の利用可能な計算リソースを監視することができる。
簡潔に前述したように、データセンタ102は、計算リソースの新規のインスタンス206の展開において顧客を援助するための展開コンポーネント214を備えて構成することもできる。展開コンポーネント214は、新規のインスタンス206をどのように構成すべきかを記述するデータを含む、顧客からの設定を受信することができる。例えば、この設定は、新規のインスタンス206にインストールすべき1つ以上のアプリケーションを指定し、新規のインスタンス206を構成するために実行されるスクリプトおよび/または他のタイプのコード、どのようなアプリケーションキャッシュを準備すべきかを指定するキャッシュウォーミング論理、並びに他のタイプの情報を提供することができる。別の実施例では、顧客から受信した設定情報は、機械イメージの識別子および新規のインスタンス206のタイプを含むことができる。
展開コンポーネント214は、顧客が提供した設定およびキャッシュウォーミング論理を利用して、新規のインスタンス206を構成、用意および起動することができる。この構成、キャッシュウォーミング論理および他の情報は、管理コンポーネント210を使用する顧客によって指定されてもよいし、この情報を展開コンポーネント214に直接に提供することによって特定されてもよい。他のメカニズムも、展開コンポーネント214の動作を設定するのに利用できる。例えば、展開コンポーネント214は、機械イメージの識別子、および新規のインスタンス206のタイプのインスタンスをホストするように構成されたコンピューティングリソース(例えば、サーバコンピュータ202)に基づいて、新規のインスタンス206を起動することができる。
データセンタ102は、サーバコンピュータにわたってインスタンスの実行を分配するためのロードバランサコンポーネント216も実行することができる。ロードバランサコンポーネント216は、展開コンポーネント214、管理コンポーネント210内のアプリケーションであってもよいし、サーバコンピュータ204以外のサーバにおいて実行されてもよい。実施例では、ロードバランサコンポーネント216は、展開コンポーネント214から命令を受信し、データセンタ102内で利用可能なリソースを決定し、いかなるリソースも過度な使用または使用不足にならないようにインスタンスを利用可能なリソースに分配する。それ故に、インスタンスは、データセンタ102内の単一障害点に対して保護される。
図2に示す実施例のデータセンタ102では、サーバコンピュータ202とサーバコンピュータ204とを相互接続するのに適当なLAN218を利用することができる。LAN218は、図1に図示するWAN106にも接続することができる。図1および図2に図示するネットワークトポロジが、大いに単純化されており、本明細書に開示するさまざまなコンピューティングシステムを相互接続するのに、より多くのネットワーク、ネットワーク接続およびネットワーキングデバイスを利用できることが認識されるはずである。各データセンタ102間、各データセンタ102内の各サーバコンピュータ202間、PESプラットフォーム108の各々の顧客が取得したインスタンス206間のロードをバランシングするために、適当なロードバランシングデバイスまたはソフトウェアモジューも利用することができる。これらのネットワークトポロジおよびデバイスは、当業者に明らかであるはずである。
図2に記述されたデータセンタ102が、単なる例示であり、他の実施も利用できることが認識されるはずである。特に、管理コンポーネント210、自動スケーリングコンポーネント212、展開コンポーネント214、およびロードバランサコンポーネント216によって実行されるものとして本明細書に記述された機能性は、互いによって実行されてもよいし、他のコンポーネントによって実行されてもよいし、これらのまたは他のコンポーネントの組み合わせによって実行されてもよい。さらに、これらのコンポーネントの各々は、プログラム実行サービスPES108内部のサービスとして実施することができる。その上、この機能性を、ソフトウェア、ハードウェアまたはソフトウェアとハードウェアとの組み合わせにおいて実施できることが認識されるはずである。他の実施も当業者に明らかであるはずである。
図2のデータセンタ102においてインスタンスを起動するための実施例の手順を、図3および図4に記述する。説明の明確さのために、図3および図4は、単独の顧客に関連する単一のインスタンスに関して記述する。しかしながら、手順は、複数の顧客に関連し得る複数のインスタンスに関連して使用することもできる。その上、単独の顧客に関連するインスタンスは、単一データセンタ内においても、複数のデータセンタにわたっても起動することができる。なおその上に、データセンタ102およびデータセンタ102の実施例のコンポーネントが、実施例の手順を実行するものとして図3および図4に記述される。それでもなお、他のコンポーネントまたはコンポーネントの組み合わせを使用することができ、それらが当業者に明らかであるはずである。
通常、顧客コンピューティングシステム104から、インスタンスを起動するためのリクエストの受信に答えて、データセンタ102(すなわち、後述するデータセンタ内のコンピューティングコンポーネント)は、事前準備したインスタンスを使用してリクエストを満たすことができるか否かを決定する。リクエストを満たすことができる場合には、データセンタは、図4に記述された手順を実行し、そうでない場合には、図3に記述された手順を実行する。インスタンスを事前準備したインスタンスでは起動できない場合には、図3に示すように、データセンタ102は、リクエストに応じてそのコンピューティングリソースを構成し、インスタンスを起動し、顧客コンピューティングシステムがインスタンスとの接続を確立できる情報を提供する。図3は、コンピューティングデバイスにおいて動作するためのインスタンスを準備する一般のエンドツーエンドのプロセスを第一に例証するように提示される。その後、図4を、図3と対比して、事前準備したインスタンスが利用可能である場合に実現される起動時間の短縮を実証するために提示する。
図3を参照するように、工程302は、データセンタ102が、顧客コンピューティングシステムから、インスタンスを起動するためのリクエストを受信することを例証する。リクエストは、ウェブAPIへの呼び出しの形態であってもよく、通常、顧客の特性および所望のインスタンスの特性を特定する情報を含む。例えば、管理コンポーネント210は、インスタンスの何らかの構成特性を規定する入力パラメータに加えて、ユーザ名、パスワードおよび顧客のクレデンシャルを受信することができる。入力パラメータは、例えば、インスタンスを起動すべき機械イメージの識別子、計算インスタンスタイプ(例えば、プロセッサの数、メモリ容量、ストレージ容量、ネットワーク帯域幅などの、インスタンスが割り当てられるハードウェアリソースの量を表すタイプ識別子など)、利用されるネットワークセキュリティ、インスタンスに関連するストレージボリューム、および他の情報などを指定することができる。パラメータはまた、例えば、インスタンスにインストールすべき1つ以上のアプリケーションまたはソフトウェアコンポーネント、インスタンスにおいて実行されるスクリプトおよび/または他のタイプのコード、どのようなアプリケーションキャッシュを準備すべきかを指定するキャッシュウォーミング論理、並びに他のタイプの情報も指定することができる。
実施形態では、管理コンポーネント210は、顧客がそこから選択できるさまざまなインスタンス構成のリストの提供に応答した顧客コンピューティングシステムからリクエストを受信する。顧客の選択は、サービスプロバイダによって供給された機械イメージ、および計算インスタンスタイプを含むことができる。さらに、管理コンポーネント210によって、顧客は、例えば、インスタンスに到達できるネットワークトラフィックを制御するファイアウォールルールの形態のデフォルトまたは顧客ネットワークセキュリティを選択することができる。顧客がリクエストにおいて指定することもできる情報のタイプの他の実施例は、インスタンスを起動する領域内のゾーン、インスタンス名、起動されるインスタンスの数などを含む。
工程304は、データセンタ102がリクエストを有効にすることを例証する。実施例では、管理コンポーネント210は、APIリクエスト内のデジタル署名、ユーザ名およびパスワードなどに基づいて顧客を認証し、リクエストにおいて受信した顧客のクレデンシャルに基づいてインスタンスを起動する許可を顧客が有しているか否かを決定する。リクエストが有効である場合には、管理コンポーネント210は、(図3の工程308〜318に示す)インスタンスの起動を開始することを、または(図4の工程に示す)事前準備したインスタンスによってリクエストを満たすことを、展開コンポーネント214にリクエストする。
工程306は、データセンタ102が、事前準備したインスタンスの使用ではリクエストを満たせないことを決定することを例証する。この工程は、展開コンポーネント214が、事前準備したインスタンスのいずれも所望のインスタンスの特性に一致する特性を有さないことを決定することを含むことができる。そのように決定した場合には、展開コンポーネント214およびデータセンタ102の他のコンポーネントは、次に、工程308〜318に記述するように、顧客のための新規のインスタンスを起動する。
工程308は、データセンタ102が、インスタンス識別を顧客コンピューティングシステムに返送することを例証する。この工程は、展開コンポーネント214が、さらに、例えば、インスタンスをホストするデータセンタにおいて十分な容量が利用可能であるか否かを決定するためのリクエストを有効にすることを含むことができる。この決定には、例えば、インスタンスタイプ、機械イメージ、そして他の顧客のインスタンスおよびその使用パターンを含む顧客のプロフィールとともに、サーバコンピュータ202においてインスタンスをホストできるか否かなどの、リクエストからのさまざまなパラメータが考慮される。有効な場合には、展開コンポーネント214は、インスタンス識別を生成し、インスタンスステータスをペンディングに更新し、情報を管理コンポーネント210に返送する。次に、管理コンポーネントは、インスタンスのステータスおよび他のインスタンス関連情報の表示とともに、インスタンス識別を顧客コンピューティングシステムに伝送する。
工程302〜308は、同期して実行することができ、数秒以下で完了することができる。対照的に、インスタンスを起動する残りの工程は、通例、およそ数分などのより長い時間を消費し、非同期的に実行される。
工程310は、データセンタ102が、インスタンスを起動するためのさまざまなコンピューティングリソースを構成することを例証する。この工程では、展開コンポーネント214は、リクエストにおいて受信した情報を使用して、さまざまなコンピューティングリソースをセットアップすることができる。これによりサーバコンピュータ202は、機械イメージをブートアップすることによってインスタンスを起動することができる。例えば、展開コンポーネント214は、機械イメージを包含するルートストレージデバイスを決定し、ブロックレベル永続性記憶装置をインスタンスに割り当て、インターネットプロトコル(IP)アドレスをインスタンスに与え、ネットワークインターフェースをセットアップし、ルーティング情報を生成し、ファイアウォールを構成し、そして他の物理的および仮想リソースを、インスタンスに関連するサーバコンピュータに加える。
工程312は、データセンタ102が、インスタンスのためのホストを決定することを例証する。この工程は、展開コンポーネント214が、インスタンスを起動する特定のゾーンを決定し、ロードバランサコンポーネント216が、インスタンスが配置されたそのゾーン内の特定のサーバコンピュータを決定することを伴う。このゾーンは、あるゾーンの不具合に伴う別のゾーンへの影響を最小限にし、展開コンポーネント214およびロードバランサコンポーネント216が、複数のサーバコンピュータおよびゾーンにわたってインスタンスを分配するように構成されたコンピューティングリソースの集まりである。このインスタンスの分配は、例えば、コンピューティングリソースアベイラビリティ、フォールトトレランス要件、インスタンスをホストするための財務コストなどに関連し、複数のサーバコンピュータおよびゾーンにわたるインスタンスの配置を制限し得る多くの制約を受ける場合がある。
さまざまなパラメータを使用して、インスタンスをサーバコンピュータに配置するときに満たし得る制約の数を最適化することができる。これらのパラメータは、インスタンスの構成、サーバコンピュータの構成、ビジネス上の考慮事項、フォールトトレランス要件などに関連し得る。例えば、ロードバランサコンポーネント216は、特定のサーバコンピュータを考慮し、インスタンスのアーキテクチャおよびネットワーク要件をサポートできるか否かを決定する。ロードバランサコンポーネントはまた、特定のサーバコンピュータにおいて現在実行されている既存のインスタンスを決定し、いろいろな顧客の新規のインスタンスを同じサーバコンピュータによってホストできるかを検証する。特定のサーバコンピュータがこれらの要件を満たす場合には、ロードバランサは、インスタンスをそのサーバコンピュータに分配する。
さらなる実施例では、インスタンス、およびサーバコンピュータにおいてホストされている既存のインスタンスは、ベンダーに関連する同じオペレーティングシステムを有する。ベンダーが、サーバコンピュータにおいてホストされているインスタンスの数には依存しない、そのオペレーティングシステムを実行するためのライセンス料を請求する場合に、ロードバランサコンポーネントは、インスタンスをそのサーバコンピュータに分配する。その結果、インスタンスを起動するための財務コストを減少する。
別の実施例では、ロードバランサコンポーネント216は、サーバコンピュータにおけるインスタンスの目標密度を満たすように、インスタンスをサーバコンピュータに分配する。ロードバランサは、サーバコンピュータにおいて多数の他のインスタンスが同時に起動されているか否かも考慮し、そうである場合には、ホットスポットの形成を回避するために、別のサーバコンピュータを選択する。他のサーバコンピュータを選択する場合には、ロードバランサは、顧客に関連する他のインスタンスをホストしているサーバコンピュータを考慮し、可能であれば、インスタンスを、これらのインスタンスのいずれもまたは最小数しか現在ホストしていないサーバコンピュータに分配する。この選択によって、顧客におけるサーバコンピュータの何らかの不具合の影響が低減される。当業者は、これらのおよび他のパラメータを組み合わせて使用して、インスタンスを起動するためのサーバコンピュータを選択できることを認識する。
サーバコンピュータが選択されると、ロードバランサコンポーネント216は、インスタンスの構成についての情報をサーバコンピュータにパスし、サーバコンピュータについての情報を展開コンポーネント214にパスする。工程314は、データセンタ102が、インスタンスを起動するためのホストを呼び出すことを例証する。例えば、展開コンポーネント214は、インスタンスの起動を開始するためのコマンドをサーバコンピュータに送信する。
工程316は、データセンタ102が、ホストにおいてインスタンスを起動することを例証する。この工程では、サーバコンピュータにおいて実行するインスタンスマネージャ208が、インスタンスが起動されるパーティションを構成する。例えば、インスタンスマネージャは、ルートストレージデバイスからの機械イメージにアクセス、それをキャッシュ、解読および解凍する。インスタンスマネージャはまた、機械イメージ内の構成ファイル、およびインスタンスの設定パラメータに従う構成ファイルを構文解析する。次に、インスタンスマネージャは、インスタンスを開始する。これは、次に、変更された機械イメージをマウントしかつ読み出し、マスターブートレコードを探索し、オペレーティングシステムをブートする。インスタンスマネージャはまた、ストレージボリューム、デバイスインターフェースおよびネットワークインターフェースをインスタンスに加える。ブートプロセスが完了すると、アプリケーションおよびインスタンスの他のコンポーネントが実行できる状態になり、インスタンスマネージャは、顧客がインスタンスを使用できる状態になったことの表示を、管理コンポーネント210に伝送する。
工程318は、データセンタ102が、インスタンスとの接続を確立するための情報を顧客コンピューティングシステムに提供することによって、インスタンスが使用状態にあることを顧客に通知することを例証する。例えば、管理コンポーネント210は、インスタンスのステータスを実行ステータスに更新し、例えば、顧客のクレデンシャルを使用したセキュアシェル(SSH)プロトコルを利用して、顧客コンピューティングシステムとインスタンスとの安全な接続を促進する。管理コンポーネントはまた、顧客のインターフェースを、インスタンスの実行ステータスを反映するように更新し、そのコンピューティングシステムにおいてSSHクライアントを起動することを顧客に指示する。
前述のように、データセンタ102は、事前準備したインスタンスによってリクエストを満たすことができることを決定した場合に、図4の手順を実行する。通常、データセンタ102(すなわち、後述するようなデータセンタ内のコンピューティングコンポーネント)は、インスタンスについての予測要求に基づくリクエストを受信する前に、インスタンスを事前設定および事前起動する。この手順によって、データセンタ102は、インスタンスについてのリクエストを受信した時から、顧客がインスタンスを使用できる時までの時間を最小限にすることができる。
工程402は、データセンタ102が、インスタンスについての予測要求に基づいてインスタンスを事前準備することを例証する。この工程は、予測要求を決定し、それに応じてインスタンスを事前準備することを伴い得る。予測要求を決定するための実施例の手順は、図5にさらに記述され、例えば、インスタンスの事前準備についての目標、および事前準備に必要とされるインスタンスの設定パラメータを決定することを含む。この手順は、データセンタ102においてホストされたサービスとして、または外部データセンタ102ホストされたサービスとして実施することができ、データセンタ102のコンピューティングコンポーネントに提供することができる。
予測要求を決定すると、データセンタ102のコンピューティングコンポーネントは、対応する設定パラメータに基づいてこれらのインスタンスを事前準備する。通例、インスタンスの事前準備は、これらのインスタンスについてのリクエストを顧客から受信する前に、利用可能なコンピューティングリソースにおいてインスタンスを事前設定および事前起動することを伴う。事前設定は、図3の工程310〜316と同様の工程を伴い得、これによりコンピューティングコンポーネントは、リクエストを受信する前に、対応する設定パラメータに基づいて、インスタンスの機械イメージおよびさまざまなコンピューティングリソースを事前設定する。例えば、事前設定は、インスタンスをホストする領域、ゾーンおよびサーバコンピュータを決定し、機械イメージを保存するルートストレージデバイスを追加し、ストレージボリュームをインスタンスに割り当て、ネットワークセキュリティおよびインターフェースを設定することなどを含む。この実施例に追加的にまたは代替的に、コンピューティングコンポーネントは、図8の実施例の手順を実施し、事前準備したインスタンスのさまざまなコンピューティングリソースへの配置に関連する制約を考慮することによって、事前設定を最適化することができる。
事前起動工程は、機械イメージにアクセス、それをキャッシュ、解読および解凍し、それらの構成ファイルを変更することを含む。この実施の実施例は、図7にさらに記述される。図6に記述されるさらなる実施例では、インスタンスの事前起動は、インスタンスを起動およびアイドリングし、アイドリングしたインスタンスをルートストレージデバイスとスワッピングすることも伴う。
コンピューティングコンポーネントは、インスタンスを事前準備するための他の技術も使用することができる。実施例では、コンピューティングコンポーネントは、インスタンスを起動およびサスペンドし、その後、顧客からのリクエストに応じた数のインスタンスを再起動する。別の実施例では、コンピューティングコンポーネントは、インスタンスを起動し、それらのスナップショットを生成し、スナップショットをストレージボリュームに保存し、インスタンスを停止し、その後、リクエストに応じて、対応するスナップショットから多くのインスタンスを再び起動する。
インスタンスを事前準備すると、コンピューティングコンポーネントは、一定のタイムフレームの間それらを管理することができる。例えば、コンピューティングコンポーネントは、このタイムフレーム中に、インスタンスの設定パラメータの更新に基づいて、事前準備したインスタンスを再構成することができる。コンピューティングコンポーネントは、タイムフレーム内に顧客からのリクエストに応じて事前準備したインスタンスを起動しない場合には、事前準備したインスタンスを除去し、そのインスタンスに関連していたコンピューティングリソースを解放する。ただし、リクエストが受信された場合には、コンピューティングコンポーネントは、次に、本明細書に記述したようにインスタンスを起動する。
工程404は、データセンタ102(例えば、管理コンポーネント210)が、インスタンスについての顧客リクエストを受信して有効にすることを例証する。この工程は、時間を圧縮されるにもかかわらず、図3の工程302、304および308と同様の工程であってもよい。より詳しくは、受信したリクエストは、インスタンスに関連する顧客情報および設定パラメータを含む。データセンタ(例えば、管理コンポーネント210)は、顧客を認証し、顧客情報に基づいてその顧客がインスタンスを実行する許可を有しているか否かを決定する。認証および認可された場合には、データセンタは、インスタンスのステータスをペンディングに更新し、情報の中でも特に、ステータスの表示およびインスタンスの識別を顧客に返送する。データセンタはまた、リクエストにおける設定パラメータと、事前準備したインスタンスの設定パラメータとを比較することによって、リクエストをサーブし、かつリクエストを、事前準備したインスタンスに関連するサーバコンピュータに送信することができる、複数の事前準備したインスタンスのうちから事前準備したインスタンスを決定し、事前準備したインスタンスの起動を完了する。
工程406は、データセンタ102(例えば、展開コンポーネント214)が、事前準備したインスタンスから、リクエストされたインスタンスを起動することを例証する。通常、工程406は、インスタンスの起動を完了し、インスタンスが実行状態になるような、事前準備したインスタンスのアクティブ化を含むことができる。この工程は、例えば、インスタンス、リクエストにおいて受信したネットワークセキュリティおよびクレデンシャルに適用することによる、インスタンスと顧客との関連付けも含むことができる。この工程の実施は、工程402の実施によって決まる。例えば、事前準備したインスタンスがアイドリングされている場合には、サーバコンピュータは、実行するためのアイドリングしたインスタンスを呼び出す。同様に、事前準備したインスタンスが事前設定され、ブート状態にある場合には、サーバコンピュータは、機械イメージのオペレーティングシステムをブートする。同様に、インスタンスがサスペンドされている場合には、サーバコンピュータは、そのインスタンスをレジュームする、またはサーバコンピュータがスナップショットを生成し、インスタンスを停止した場合には、サーバコンピュータは、スナップショットからインスタンを再起動する。
工程408は、データセンタ102(例えば、管理コンポーネント210)が、インスタンスとの接続を確立するための情報を顧客コンピューティングシステムに提供することによって、インスタンスが使用状態にあることを顧客に通知することを例証する。この工程は、図3の工程318と同様の工程であってもよい。より詳しくは、データセンタ102(例えば、管理コンポーネント210)は、インスタンスのステータスを実行に更新し、顧客のクレデンシャルを使用して、インスタンスとの安全な接続を確立するための情報を顧客コンピューティングシステムに提供する。
起動するためのインスタンスをリクエストするときに、顧客は、利用可能なかつ組み合わせることが可能な設定パラメータのラージプールから、インスタンスについての構成を選択することができる。例えば、顧客は、多数の機械イメージからの機械イメージの選択、多数の計算インスタンスタイプからのインスタンスタイプの選択、および本明細書において前述したような他のインスタンス設定パラメータの選択を有する。さらに、各機械イメージおよびインスタンスは、顧客の具体的なニーズにカスタマイズすることができる。データセンタ102を多数の顧客にサービスするように構成できるため、これらの顧客がリクエストできるインスタンスの数および構成は、利用可能な構成の選択に少なくとも基づいて、指数関数的に増えることができる。それ故に、リクエストできる各々の構成の選択に基づくインスタンスの事前準備を実行できないことがある。代わりに、サービスは、インスタンスについての予測要求を決定し、利用可能であると予測されるコンピューティングリソースを決定し、予測要求と予測されたコンピューティングリソースアベイラビリティとのバランスをとり、それに応じてインスタンスを事前準備するように構成できる。
このサービスは、データセンタ102、またはデータセンタ102外部のコンピューティングノード(例えば、サーバ、異なるデータセンタにおけるコンピューティングコンポーネント、第三者コンピューティングリソースなど)においてホストすることができる。例えば、サービスは、サーバコンピュータ204においてホストされたスタンドアロンアプリケーションとして、または管理コンポーネント210もしくは展開コンポーネント214などの、データセンタのコンピューティングコンポーネントと一体化されたアプリケーションとして実施することができる。スタンドアロンアプリケーションの実施例を、事前準備コンポーネント618として図6および図7に示す。代替的な実施例では、サービスは、データセンタ102のコンピューティングコンポーネントとインターフェースし、コンピューティングコンポーネントから必要な情報を受信し(図5にさらに記述する)、受信した情報を使用して予測要求を決定し、予測要求についての情報をコンピューティングコンポーネントに返送するように、コンピューティングノードにおいて構成することができる。
図5を参照すると、この図は、予測要求を決定するための実施例の手順を例証する。説明の明確さのために、予測要求を決定するためのサービスは、本明細書において事前準備コンポーネントとして参照され、本明細書に前述したようなデータセンタ102内のまたはその外部のアプリケーションとして構成することができる。工程502は、事前準備コンポーネントが、インスタンスについてのリクエストの履歴を表すデータセットを考慮し、そのデータセットを解析してインスタンスについての予測されるリクエストを決定することを例証する。考慮されたデータセットは、リクエストおよび/または起動されたインスタンスに関連する履歴データ、並びに現在ホストされているインスタンスを表すデータを含むことができる。事前準備コンポーネントは、例えば、リクエストされた場所、リクエストしている顧客、リクエストの時刻などのファクタの組み合わせを使用して、データセットを選択することができる。例えば、事前準備コンポーネントは、一定の顧客(例えば、特定の顧客、多くの顧客またはすべての顧客)による、または必要とされる解析の包括度に応じた一定の期間(例えば、数日、数週間、数ヶ月、さらには数年)にわたる、具体的な場所(例えば、ある領域、アベイラビリティのゾーンなど)の範囲内のインスタンスについてのリクエストを考慮することができる。
次に、事前準備コンポーネントは、考慮されたデータセットを数学モデルにかけることによってそれを解析することができる。例えば、事前準備コンポーネントは、データセットからのデータを、機械イメージおよびインスタンスタイプに基づいたグループにソートし、各グループについてのカウントを得ることができる。グループの各々は、機械イメージおよびインスタンスタイプの組を表すことができる。事前準備コンポーネントは、長期にわたる各グループについてのカウントをプロットし、例えば、外挿法を使用してプロットされた曲線にフィットする数学的方程式を決定することができる。この方程式は、各グループについての予測要求を概算し、各グループに関連する追加のデータを考慮することによって、長期にわたって継続的に改善することができる。そのようなものとして、特定の組の機械イメージおよびインスタンスタイプについて、事前準備コンポーネントは、時間の関数として予測要求を表現すること(例えば、週の初日に特定のインスタンスタイプおよび機械イメージに対応する一千個のインスタンスを事前準備し、週の二日目にこれらのインスタンスの二千個を事前準備し、週の三日目にこれらのインスタンスの五百個を事前準備することなど)ができる。
事前準備コンポーネントは、インスタンスタイプもしくは機械イメージのいずれか、またはインスタンスの他の設定パラメータに基づいた類似の解析を利用することもできる。例えば、特定のタイプのインスタンスを特定のコンピューティングリソースにおいてのみホストできるようにデータセンタ102が構成された場合には、事前準備コンポーネントは、インスタンスタイプごとの予測要求を概算する数学的方程式を決定することができる。これらの方程式を使用して、インスタンスタイプをサポートできるコンピューティングリソースについての予測要求を概算することができる。そのようなものとして、この実施例では、事前準備コンポーネントは、インスタンスを事前準備するのに必要なコンピューティング容量を概算することができる。
オペレーティング504は、事前準備コンポーネントが、インスタンスの事前準備についての目標を設定することを例証する。インスタンスについての予測要求、場合によっては、コンピューティングリソースについての予測要求を概算した後、事前準備コンポーネントは、この概算に基づいて、インスタンスの事前準備についての目標をコンピューティングリソースに設定することができる。この目標は、インスタンスの設定パラメータ(例えば、インスタンスタイプ、機械イメージの識別子など)、インスタンスの総数、各インスタンスタイプの数、インスタンスがリクエストされると予測されるタイムフレーム、これらのインスタンスを事前準備すべき領域およびゾーンなどを含むことができる。例えば、一週間にわたるリクエストの履歴の解析は、十万個のリクエストされたインスタンスのうちの一万個が、FEDORAオペレーティングシステムを使用し、カリフォルニア州の特定のデータセンタ内の32ビットアーキテクチャにおけるAPACHEウェブサーバを実行するインスタンスであったことを示すことができる。この実施例の解析に基づいて、事前準備コンポーネントは、週間ベースで、カリフォルニア州の特定のデータセンタ内で起動されるこれらのFEDORA/APACHE/32ビットアーキテクチャインスタンスのうちの一万個を顧客がリクエストすると予測する。そのようなものとして、事前準備コンポーネントは、特定のデータセンタ内のこれらのインスタンスのうちの一万個を事前準備することを目標とする。
しかしながら、リクエストできる各々の構成の選択(例えば、インスタンスタイプと機械イメージとの組み合わせ)に基づくインスタンスの事前準備を実行できない場合には、事前準備コンポーネントは、さらに、さまざまなファクタを予測要求に適用することによって、さまざまな構成の選択に関連する目標を修正することができる。これらのさまざまなファクタは、コンピューティングリソースアベイラビリティの統計的ファクタおよび考慮事項と、事前準備についての目標とされたインスタンスをデータセンタ102のリソースがサポートできることを確実にするために事前準備コンポーネントによって使用され得る制約との組み合わせを含むことができる。
工程506は、事前準備コンポーネントが、予測要求に適用されたさまざまな統計的ファクタに基づいて目標を改善することを例証する。実施形態では、事前準備コンポーネントは、平均値、ピーク値、谷値、閾値および標準偏差のいずれかまたはそれらの組み合わせを、予測要求に関連する解析したデータセットに適用することによって、目標を修正することができる。工程506を例証する前述の実施例に続いて、事前準備コンポーネントが、一週間にわたって、FEDORA/APACHE/32ビットアーキテクチャインスタンスが平均して一日約千五百回リクエストされたことを決定した場合には、事前準備コンポーネントは、一日としての、具体的な機械イメージについての目標としてその平均数を設定することができる。同様に、事前準備コンポーネントが、その一週間内において、その特定の構成を有するインスタンスの最大数がその週のうちの特定の日(例えば、水曜日)に起動され、同じインスタンスの最小数が別の日(例えば、金曜日)に起動されたことを決定した場合には、事前準備コンポーネントは、各週の水曜日および金曜日に、具体的なインスタンスタイプについてのそれぞれの目標として最大数および最小数を設定することができる。また、事前準備コンポーネントが、その一週間内に、わずかな比率のみ(例えば、0.1パーセント)のリクエストしか別のインスタンス構成に関連していないことを決定した場合には、事前準備コンポーネントは、初期目標が所定の閾値(例えば、最も多い構成の上位10パーセントのインスタンスを事前準備することを要求する閾値)を下回った場合に、この構成タイプのインスタンスの事前準備についてのその目標を、1パーセント(例えば、百個のインスタンス)からゼロに修正することができる。
工程508は、事前準備コンポーネントが、コンピューティングデータセンタ102のリソースのアベイラビリティおよび制約に基づいて目標を改善することを例証する。事前準備コンポーネントは、さらに、インスタンスおよび/またはコンピューティングリソースについての予測要求と、そのコンピューティングリソースの予測アベイラビリティとのバランスをとるように目標を修正することができる。利用可能であると予測されるコンピューティングリソースを決定するために、事前準備コンポーネントは、前述と類似の解析をそのリソースの履歴使用に適用することもできる。例えば、事前準備コンポーネントは、カリフォルニア州の特定のデータセンタが平均して80パーセント容量において一週間にわたって実行することを決定できる。それ故に、事前準備コンポーネントは、週間ベースでカリフォルニア州のデータセンタにおいて20パーセントの利用可能な容量を有すると予測でき、この利用可能な容量を事前準備したインスタンスのためにリザーブすることができる。例証のために、週間ベースで、1パーセントの容量が百個のインスタンスをホストする能力に相当する場合には、カリフォルニア州のデータセンタにおいて20パーセントの利用可能な容量は二千個のインスタンスに達する。それ故に、事前準備コンポーネントは、一万個のFEDORA/APACHE/32ビットアーキテクチャインスタンスからそれらの二千個を事前準備するようにその目標を修正することができる。
さらなる実施形態では、事前準備コンポーネントはまた、リソースアベイラビリティに影響する何らかの計画的な機能停止または保守を解析し、この解析に基づいてリザーブ容量を更新することもできる。例えば、事前準備コンポーネントは、カリフォルニア州の特定のデータセンタが、計画的保守の故に、次の一週間に90パーセントの容量まで下がることを決定した場合には、総計の利用可能なコンピューティング容量が超過しないように、リザーブ容量を20パーセントから10パーセントに抑制することを決定できる。
次に、事前準備コンポーネントは、インスタンスおよび/またはコンピューティングリソースについての予測要求と、コンピューティングリソースにおけるインスタンスの配置を制限し得る制約とのバランスもとることによって、その目標をさらに改善することができる。このバランシングは、図8に記述され、データセンタにおける利用可能な容量が超過しない、複数のコンピューティングリソースおよびデータセンタにわたる事前準備したインスタンスのバランスがとられた分配をサポートすることを確実にするために実施することができる。当業者は、これらのおよび他のタイプの解析を組み合わせて使用して、予測要求を定量化し、インスタンスの事前準備についての目標を改善することができることを認識する。
図6を参照すると、この図は、事前準備したインスタンスが図4の手順を実行するのに使用できるアイドルされた計算インスタンスを含む場合のデータセンタ102の実施例の構成を例証する。顧客コンピューティングシステムからインスタンスについてのリクエストを受信する前に、さまざまなコンピューティングデータセンタ102のリソースが、機械イメージ620からインスタンス650を事前準備するように構成される。例えば、サーバコンピュータ204が、(図6に示す事前準備コンポーネント618のような)事前準備コンポーネントを実行して事前準備したインスタンスの設定パラメータを決定し、そして管理コンポーネント210、展開コンポーネント214およびロードバランサコンポーネント216を実行して事前準備したインスタンス650のホストとしてサーバコンピュータ202を選択し、機械イメージ、ストレージボリューム640、ネットワークインターフェースおよびデバイス、並びに他のリソースを包含するルートストレージデバイス630を、事前準備したインスタンスに関連付ける。
図6は、サーバコンピュータ204においてホストされたスタンドアロンアプリケーションとして事前準備コンポーネント618を図示するが、この事前準備コンポーネントは、データセンタ102外部のコンピューティングノードにホストされてもよく、この構成では、事前準備したインスタンスの設定パラメータおよび予測要求に関連する情報が、本明細書に前述したようなサービスとして、データセンタのコンピューティングコンポーネント(例えば、管理コンポーネント210、展開コンポーネント214、ロードバランサコンポーネント216)に提供される。同様に、別の実施例では、事前準備コンポーネント618は、データセンタ102内のコンピュータサーバにホストされ、サーバコンピュータ204とインターフェースしてもよく、この構成では、事前準備コンポーネント618が、事前準備したインスタンスに関連する情報を、サーバコンピュータ204によって実行されるコンピューティングコンポーネントに提供する。
インスタンスを事前起動するために、インスタンスマネージャ208は、機械イメージ620にアクセスし、その構成ファイル626を変更し、変更された機械イメージからインスタンス650をブートする。この時点で、インスタンス650が起動され、インスタンスマネージャ208が、仮想メモリをそのゲストオペレーティングシステム622に割り当てる。この仮想メモリは、通常、そのRAMなどの、サーバコンピュータ202の物理メモリにマッピングされる。また、この時点で、インスタンス650は、顧客コンピューティングシステムに接続していなく、アプリケーション624を実行しない。それ故に、顧客コンピューティングシステムからリクエストが受信されるまで、インスタンス650は、アイドリング状態にある。
インスタンスマネージャは、インスタンスがアイドリング状態にあることを検出すると、関連する物理メモリをディスクとスワッピングすることによって、サーバコンピュータにおいて実行している他のインスタンスからこの物理メモリを解放することができる。例えば、インスタンスマネージャは、関連する物理メモリのコンテンツを、ルートストレージデバイス632におけるスワップファイル632に保存し、その物理メモリを仮想メモリマッピングに更新する。
データセンタ102が顧客コンピューティングシステムからリクエストを受信するまで、インスタンスはアイドリング状態のままである。その後、管理コンポーネント210は、顧客を認証し、その顧客がインスタンスを使用する許可を有しているか否かを決定する。許可を有していると判断した場合には、展開コンポーネント214が、インスタンス650を使用してリクエストを満たすことができることを決定する。次に、展開コンポーネント214は、インスタンス650を開始することをロードバランサコンポーネント216に指示する。次に、ロードバランサコンポーネントは、インスタンスを起動するためにインスタンスマネージャ208を呼び出す。
インスタンスマネージャ208は、ロードバランサからの命令を受信してインスタンス650を起動すると、割り当てられた物理メモリにスワップファイルをロードし、物理メモリと仮想メモリとの間のマッピングを更新し、インスタンスに、マッピングされた仮想メモリとして物理メモリを使用させる。その時点において、インスタンスは、起動されるものとして、かつ顧客コンピューティングシステムに接続された状態にあるとみなされる。
図7は、顧客コンピューティングシステムからインスタンスについてのリクエストを受信する前にインスタンスを事前準備するためのデータセンタ102の別の実施例の構成を図示する。図7の構成では、データセンタのさまざまなコンピューティングコンポーネント(例えば、管理コンポーネント210、展開コンポーネント214、ロードバランサコンポーネント216、および事前準備コンポーネント618)が、サーバコンピュータ202においてインスタンス750を事前設定するが、これらはリクエストが受信されるまでブートしない。実施例の実施形態では、事前準備コンポーネント618は、リクエストを受信する前に、機械イメージ620にアクセス、それをキャッシュ、解読および解凍し、事前準備したインスタンス750に関連するさまざまなパラメータに基づいて、構成ファイル626を構文解析および変更するように、インスタンスマネージャ208に指示して実行させることができる。これらのパラメータは、例えば、事前準備したインスタンスの設定パラメータ、サーバコンピュータ202のハードウェアおよびシステム構成、追加されたストレージボリュームのアドレス指定、ネットワークインターフェースなどを含む。変更およびキャッシュ機械イメージを、図7に機械イメージ760として示す。
インスタンスについてのリクエストが受信されると、管理コンポーネント210が、顧客を認証および認可してインスタンスを起動する。次に、展開コンポーネント214が、事前準備したインスタンス750によってリクエストを満たすことができることを決定し、事前準備したインスタンスの起動を完了することをロードバランサコンポーネント216に指示する。次に、ロードバランサコンポーネントは、事前準備したインスタンスを起動するためにサーバコンピュータ202を呼び出す。サーバコンピュータのインスタンスマネージャ208は、事前設定された機械イメージ760をマウントしかつ読み出し、そのオペレーティングシステムをブートする。ブートが完了すると、インスタンスは、起動されるもの、かつ顧客コンピューティングシステムに接続できるものとみなされる。
図4の工程404〜408並びに図6および図7のシステムを、単一のインスタンスの文脈において本明細書に前述したが、より多い数、およそ数百個および数千個以上のインスタンスを利用することもできる。また、予測要求に基づいたインスタンスの事前準備についての目標の設定に加えて、さまざまなコンピューティングコンポーネント(例えば、事前準備コンポーネント618、展開コンポーネント214)は、サーバコンピュータにおける事前準備したインスタンスの配置に関連する制約を考慮して、それらを特定のサーバコンピュータに配置することができる。
図8は、そのような手順の実施例であり、コンピューティングリソースの使用および財務コストを最適化するように実施される。説明の明確さのために、事前準備コンポーネント618は、図8の実施例の手順を実行するものとして記述される。それでもなお、データセンタ102の他のコンポーネントまたはコンポーネントの組み合わせを使用することができ、それらが当業者に明らかであるはずである。
工程802は、事前準備コンポーネント618が、さまざまなサーバコンピュータにおける利用可能な容量を表す密度パラメータを決定することを例証する。事前準備コンポーネント618は、これらのパラメータを使用して、サーバコンピュータを効率的に使用する(例えば、大容量使用を目標にする)、並びにサーバコンピュータ内およびそれのいたるところの不具合の影響を低減する(例えば、特定の顧客の事前準備したインスタンスを複数のサーバコンピュータにわたって分配する)ような密度を目標にする。
工程804は、事前準備コンポーネント618が、サーバコンピュータにおいて同時に事前準備されているインスタンスの数を表す同時パラメータを決定することを例証する。事前準備コンポーネント618は、これらのパラメータを使用して、単一サーバコンピュータにおける短時間内の多数のインスタンスの事前準備に伴うホットスポットの形成を回避する。
工程806は、事前準備コンポーネント618が、事前準備したインスタンスを顧客に利用可能にすべきタイムフレームを決定することを例証する。このタイムフレームは、通常、例えば、利用可能な容量、およびアベイラビリティの対応する期間に関連するさまざまなパラメータに応じて決まる。タイムフレームが一旦設定されても、利用可能な容量が減少した場合、または予測されていなかった新規のトラフィックをデータセンタ102が受信した場合には、タイムフレームを短縮することができる。同様に、利用可能な容量が増大した場合、または計画されたトラフィックが予想外に減少した場合には、タイムフレームを延長することができる。
工程808は、事前準備コンポーネント618が、複数のゾーンおよび/または領域にわたるリソースアベイラビリティを表す領域およびゾーンパラメータを決定することを例証する。事前準備コンポーネント618は、これらのパラメータを使用して、領域またはゾーンのいずれかにおける不具合の顧客への影響を最小限にするように、事前準備したインスタンスを複数のゾーンおよび領域にわたってサーバコンピュータに分配する。この工程はまた、事前準備コンポーネント618が、事前準備されたインスタンを最もよくサポートするようなサーバコンピュータの互換性を決定することも含むことができる。例えば、事前準備したインスタンスは、1つの領域のみにおいて利用可能な特定のネットワーキングインターフェースを要求することができる。この実施例では、事前準備コンポーネント618は、事前準備したインスタンスを、その領域内のサーバコンピュータに配置する。
工程808は、事前準備コンポーネント618が、事前準備したインスタンスをサポートできるコンピューティングリソースを表す互換性パラメータを決定することを例証する。事前準備コンポーネント618は、特定のタイプのインスタンスが特定のコンピューティングリソースにおいてのみホストされ得るように、データセンタ102が構成されたときにこれらのパラメータを使用することができる。そのようなものとして、この工程では、事前準備コンポーネントは、事前準備したインスタンスを実際にサポートできるサーバコンピュータを決定し、事前準備したインスタンスをこれらのサーバコンピュータに積極的に配置することによって、事前準備したインスタンスの構成と、コンピュータサーバの構成との間の互換性を確実に持たせることができる。
工程812は、事前準備コンポーネント618が、インスタンスの事前準備に伴う財務コストを表す財務パラメータを決定することを例証する。例えば、特定のオペレーティングシステムのベンダーは、インスタンスごとの基準ではなく、サーバコンピュータごとの基準においてライセンス料を支払うことができる。換言すれば、サーバコンピュータにおいてホストされている、特定のオペレーティングシステムを実行するインスタンスの数にかかわらず、料金は均一である。そのような実施例では、事前準備コンポーネントは、特定のオペレーティングシステムを実行する事前準備したインスタンスを、その特定のオペレーティングシステムを持つ、インスタンスを既にホストしているサーバコンピュータに配置することによって、追加のライセンス料の負担を回避する。
工程814は、事前準備コンポーネント618が、事前準備したインスタンスをサーバコンピュータに配置することを例証する。この工程では、事前準備コンポーネント618は、前述のパラメータを組み合わせて、インスタンスの展開を最適化する。この最適化は、事前準備したインスタンスのサーバコンピュータへの配置に関連する多くの制約の優先順位を決めるおよびそれを最大限に生かすことを含むことができる。一旦選択されると、事前準備コンポーネント618は、図4の手順に記述するような、これらのコンピュータリソースへの事前準備したインスタンスの展開を開始する。
図9を参照すると、この図は、前述のソフトウェアコンポーネントを実行する能力があるコンピュータ800についての実施例のコンピュータアーキテクチャを示す。図9に示すコンピュータアーキテクチャは、従来のサーバコンピュータ、ワークステーション、デスクトップコンピュータ、ラップトップ、タブレット、ネットワークアプライアンス、PDA、電子リーダ、デジタル携帯電話、または他のコンピューティングデバイスを例証し、そしてこれを利用して、データセンタ102内、サーバコンピュータ202上、顧客コンピューティングシステム104上、または本明細書に言及した任意の他のコンピューティングシステムにおいて実行するものとして記述され、本明細書に提示されたソフトウェアコンポーネントの任意の態様を実行することができる。
コンピュータ900は、ベースボード、または数多くのコンポーネントもしくはデバイスを、システムバスまたは他の電気通信パスを手段として接続できるプリント基板である「マザーボード」を含むことができる。1つ以上の中央処理装置(「CPU」)904が、チップセット906ととともに動作することができる。CPU904は、コンピュータ900の工程に必須の算術および論理演算を実行する標準的なプログラマブルプロセッサであってもよい。
CPU904は、状態間を差別化するおよび変化させるスイッチング素子の操作を通じて、ある離散的な物理的状態から次の状態に遷移させることによって、必須の工程を実行することができる。スイッチング素子は、通常、フリップフロップなどの、2つのバイナリ状態のうちの1つの状態を維持する電子回路、および論理ゲートなどの、1つ以上の他のスイッチング素子の状態の論理結合に基づいた出力状態を提供する電子回路を含むことができる。これらの基本的なスイッチング素子を組み合わせて、レジスタ、加減算器、算術論理演算ユニット、浮動小数点演算ユニットなどを含むより複雑な論理回路を作り出すことができる。
チップセット906は、CPU904と、ベースボード上の残りのコンポーネントおよびデバイスとの間のインターフェースを提供することができる。チップセット906は、コンピュータ900におけるメインメモリとして使用されるランダムアクセスメモリ(「RAM」)908とのインターフェースを提供することができる。チップセット906は、さらに、コンピュータ900の起動、並びにさまざまなコンポーネントおよびデバイス間の情報の転送を支援できる基本的ルーチンを保存するリードオンリメモリ(「ROM」)920または不揮発性RAM(「NVRAM」)などのコンピュータ可読記憶媒体とのインターフェースを提供することができる。ROM920またはNVRAMはまた、本明細書に記述された実施形態に従うコンピュータ900の工程に必須のコンピュータ可読命令などの他のソフトウェアコンポーネントも保存することができる。
コンピュータ900は、ネットワーク218を通じたリモートコンピューティングデバイスおよびコンピュータシステムとの論理的接続を使用したネットワーク化された環境において動作することができる。チップセット906は、ギガビットイーサネットアダプタなどのネットワークインターフェースコントローラ(「NIC」)922を通じたネットワークの接続性を提供するための機能性を含むことができる。NIC922は、ネットワーク218を通じて、コンピュータ900と他のコンピューティングデバイスとを接続する能力がある。コンピュータと他のタイプのネットワークおよびリモートコンピュータシステムとを接続する複数のNIC922がコンピュータ900に存在できることが認識されるはずである。
コンピュータ900は、コンピュータに不揮発性ストレージを提供するマスストレージデバイス928に接続することができる。マスストレージデバイス928は、より詳細を本明細書に記述したシステムプログラム、アプリケーションプログラム、他のプログラムモジュールおよびデータを保存することができる。マスストレージデバイス928は、チップセット906に接続されたストレージコントローラ924を通じてコンピュータ900に接続することができる。マスストレージデバイス928は、1つ以上の物理ストレージユニットからなってもよい。ストレージコントローラ924は、シリアル接続SCSI(「SAS」)インターフェース、シリアルアドバンスト・テクノロジ・アタッチメント(「SATA」)インターフェース、ファイバチャンネル(「FC」)インターフェース、またはコンピュータと物理ストレージユニットとの間でデータを物理的に接続および転送するための他のタイプのインターフェースを通じて、物理ストレージユニットとインターフェース接続することができる。
コンピュータ900は、保存されている情報を反映するように物理ストレージユニットの物理的状態を変形することによって、マスストレージデバイス928にデータを保存することができる。物理的状態の具体的な変形は、さまざまなファクタおよびこの記述の種々の実施に応じて決まり得る。そのようなファクタの実施例は、これらに限定されないが、マスストレージデバイス928が一次記憶装置または二次記憶装置として特徴づけられているかなどにかかわらず、物理ストレージユニットを実施するのに使用される技術を含むことができる。
例えば、コンピュータ900は、ストレージコントローラ924を通じて命令を出すことによって情報をマスストレージデバイス928に保存することができ、これにより、磁気ディスクドライブユニット内の特定の場所の磁気特性、光学記憶装置内の特定の場所の反射もしくは屈折特性、または特定のコンデンサ、トランジスタもしくはソリッドステート記憶装置における他の離散コンポーネントの電気特性を変えることができる。本記述の範囲および精神から逸脱することなく、この記述を容易にするためだけに提供された前述の実施例によって、物理媒体の他の変形も可能である。コンピュータ900は、さらに、物理ストレージユニット内の1つ以上の特定の場所の物理的状態または特性を検出することによって、マスストレージデバイス928から情報を読み出すことができる。
前述のマスストレージデバイス928に加えて、コンピュータ900は、プログラムモジュール、データ構造または他のデータなどの情報を保存および取得するための他のコンピュータ可読ストレージ媒体へのアクセスを有することができる。コンピュータ可読ストレージ媒体が、非一時的データのストレージを提供し、コンピュータ900によってアクセスできる任意の利用可能な媒体であってもよいことが当業者によって認識されるはずである。
限定されない実施例として、コンピュータ可読ストレージ媒体は、方法または技術において実装される、揮発性および不揮発性の、取り外し可能な媒体および取り外し不可能な媒体を含むことができる。コンピュータ可読ストレージ媒体は、これらに限定されないが、RAM、ROM、消去可能プログラマブルROM(「EPROM」)、電気的消去可能プログラマブルROM(「EEPROM」)、フラッシュメモリもしくは他のソリッドステートメモリ技術、コンパクトディスクROM(「CD−ROM」)、デジタル多用途ディスク(「DVD」)、高解像度DVD(「HD−DVD」)、BLU−RAYもしくは他の光学ストレージ、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくは他の磁気記憶装置、または非一時的な方法で所望の情報を保存するのに使用できる任意の他の媒体を含む。
マスストレージデバイス928は、コンピュータ900の動作を制御するのに利用されるオペレーティングシステムを保存することができる。一実施形態に従い、オペレーティングシステムは、LINUXオペレーティングシステムのバージョンを含む。別の実施形態に従い、オペレーティングシステムは、マイクロソフトが提供するWINDOWS SERVERオペレーティングシステムのバージョンを含む。さらなる実施形態に従い、オペレーティングシステムは、UNIXオペレーティングシステムのバージョンを含むことができる。他のオペレーティングシステムも利用できることが認識されるはずである。マスストレージデバイス928は、管理コンポーネント210および/または前述の他のソフトウェアコンポーネントなどのコンピュータ900によって利用される、他のシステムまたはアプリケーションプログラムおよびデータを保存することができる。
マスストレージデバイス928または他のコンピュータ可読ストレージ媒体はまた、コンピュータ900にロードされると、汎用コンピューティングシステムからのコンピュータを本明細書に記述される実施形態を実施する能力がある専用コンピュータに変形するコンピュータ実行可能命令でエンコードすることもできる。これらのコンピュータ実行可能命令は、前述のようなCPU904による状態間の遷移方法を指定することによって、コンピュータ900を変形する。コンピュータ900は、コンピュータ900によって実行されたときに図3および図4に関して記述した手順を実行するコンピュータ実行可能命令を保存するコンピュータ可読ストレージ媒体へのアクセスを有することができる。
コンピュータ900は、キーボード、マウス、タッチパッド、タッチスクリーン、電子スタイラスなどの多くの入力デバイス、または他のタイプの入力デバイスからの入力を受信および処理するための入出力コントローラ932も含むことができる。同様に、入出力コントローラ932は、出力を、コンピュータモニタ、フラットパネルディスプレイなどのディスプレイ、デジタルプロジェクタ、プリンタ、プロッタまたは他のタイプの出力デバイスに提供することができる。コンピュータ900は、図9に示すコンポーネントのすべては含まなくてもよく、図9に明白に示されない他のコンポーネントを含んでもよいし、図9に示すものとは完全に異なるアーキテクチャを利用してもよいことが認識される。
図面に図示するネットワークトポロジが、大いに単純化されており、本明細書に開示するさまざまなコンピューティングシステムを相互接続するのに、より多くのネットワークおよびネットワーキングデバイスを利用できることが認識されるはずである。これらのネットワークトポロジおよびデバイスは、当業者に明らかであるはずである。
図面のシステムが、単なる例示であり、他の実施も使用できることも認識されるはずである。その上、本明細書に開示する機能性を、ソフトウェア、ハードウェアまたはソフトウェアとハードウェアとの組み合わせにおいて実施できることが認識されるはずである。他の実施も当業者に明らかであるはずである。サーバ、ゲートウェイまたは他のコンピューティングデバイスが、記述したタイプの機能性と相互作用およびそれを実行できるハードウェアまたはソフトウェアの任意の組み合わせを備えることができることも認識されるはずである。これらには、制限なく、デスクトップまたは他のコンピュータ、データベースサーバ、ネットワークストレージデバイスおよび他のネットワークデバイス、PDA、タブレット、携帯電話、無線電話、ポケットベル、電子手帳、インターネット家電、テレビベースのシステム(例えば、セットトップボックスおよび/またはデジタル式ビデオ録画再生装置もしくはデジタルビデオテープレコーダを使用したもの)、および適当な通信機能を含むさまざまな他の消費者製品が含まれる。さらに、図示したモジュールによってもたらされる機能性は、いくつかの実施形態では、より少ないモジュールにおいて組み合わされてもよいし、追加のモジュールに分配されてもよい。同様に、いくつかの実施形態では、図示したモジュールのいくつかの機能性はもたらされなくてもよいし、かつ/または他の追加の機能性が利用可能であってもよい。
先行するセクションに記述された工程、プロセス、方法およびアルゴリズムの各々は、1つ以上のコンピュータまたはコンピュータプロセッサによって実行されるコードモジュールにおいて具現され、かつそれによって完全にまたは部分的に自動化することができる。コードモジュールは、例えば、ハードドライブ、ソリッドステートメモリ、光ディスクなどの任意のタイプの非一時的コンピュータ可読媒体、またはコンピュータ記憶装置に保存することができる。プロセスおよびアルゴリズムは、特定用途向け集積回路において部分的にまたは全体的に実装することができる。開示したプロセスおよびプロセスステップの結果は、永続的に、さもなければ、例えば、揮発性または不揮発性ストレージなどの任意のタイプの非一時的コンピュータストレージに保存することができる。
前述のさまざまな特徴およびプロセスは、互いに独立して使用してもよいし、さまざまな様式において組み合わせてもよい。すべての可能なコンビネーションおよびサブコンビネーションが、本開示の範囲内にあると意図される。さらに、特定の方法またはプロセスブロックは、いくつかの実施では除外してもよい。本明細書に記述された方法およびプロセスはまた、任意の特定のシーケンスに制限されず、それに関連するブロックまたはステートは、適当な他のシーケンスにおいて実行することができる。例えば、記述したブロックまたはステートは、具体的に開示された以外の順序で実行してもよいし、複数のブロックまたはステートを、単一のブロックまたはステートに結合してもよい。実施例のブロックまたはステートは、順番に、並行して、または何らかの他の様式で実行してもよい。開示した実施例の実施形態にブロックまたはステートを追加してもよいし、それから除外してもよい。本明細書に記述された実施例のシステムおよびコンポーネントは、記述したものと異なって構成してもよい。例えば、開示した実施例の実施形態に要素を追加してもよいし、それから除外してもよいし、それに対して再配置してもよい。
さまざまなアイテムが、使用中にメモリまたはストレージに保存されるものとして例証され、これらのアイテムまたはそれらの一部が、メモリ管理およびデータ保全を目的として、メモリと他のストレージデバイスとの間を転送され得ることも認識される。代替的に、他の実施形態では、ソフトウェアモジュールおよび/またはシステムのいくつかまたはすべては、コンピュータ間通信を通じて、別のデバイスにおけるメモリにおいて実行し、例証したコンピューティングシステムと通信することができる。なおその上に、いくつかの実施形態では、システムおよび/またはモジュールのいくつかまたはすべては、これらに限定されないが、1つ以上の特定用途向け集積回路(ASIC)、標準集積回路、(例えば、適当な命令を実行する、マイクロコントローラおよび/または組込コントローラを含む)コントローラ、フィールドプログラマブルゲートアレイ(FPGA)、結合プログラム可能論理回路(CPLD)などを含む、少なくとも部分的にファームウェアおよび/またはハードウェアにおいてなどの、他の様式で実施または提供することができる。モジュール、システムおよびデータ構造のいくつかまたはすべては、ハードディスク、メモリ、ネットワークまたは適当なドライブによってもしくは適当な接続を通じて読み出される可搬型媒体品などのコンピュータ可読媒体に(例えば、ソフトウェア命令または構造化データとして)保存することもできる。システム、モジュールおよびデータ構造は、無線ベースのおよび有線もしくはケーブルベースの媒体を含む、様々なコンピュータ可読伝送媒体において、(例えば、搬送波または他のアナログもしくはデジタル伝搬信号の一部として)、生成されたデータ信号として伝送することもできる。そしてこれは、(例えば、単一もしくは多重化アナログ信号の一部として、または複数の離散デジタルパケットもしくはフレームとして)様々な形態をとることができる。そのようなコンピュータプログラム製品は、他の実施形態では他の形態もとることができる。したがって、本発明は、他のコンピュータシステム構成とともに実践することができる。
本明細書に使用される条件付き言語、例えば、特に、「can」、「could」、「might」、「may」、「e.g.」などは、別途記載がない限り、または使用される文脈内で別な様に理解されない限り、通常、特定の実施形態が、他の実施形態が含まない特定の特徴、要素および/またはステップを含むことを伝達することが意図される。それ故に、そのような条件付き言語は、通常、特徴、要素および/またはステップが何らかの様式において1つ以上の実施形態に必須である、または1つ以上の実施形態が、作者の入力または助言の有無にかかわらず、これらの特徴、要素および/またはステップが任意の特定の実施形態に含まれるか、またはそこで実行されるかを決定するための論理を必ず含むことを暗示することは意図しない。用語「備えている」、「含んでいる」、「有している」などは、同義的であり、制限のない様式で包括的に使用され、追加の要素、特徴、行為、工程などを除外するものではない。また、用語「または」は、その包括的意味で(かつ、その排他的意味ではない)使用され、そのため、使用される場合には、例えば、要素のリストを結びつけ、リストにおける要素の1つ、いくつかまたはすべてを意味する。
特定の実施例の実施形態を記述したが、これらの実施形態は、単に実施例として提示され、本明細書に開示する本発明の範囲を限定するようには意図されない。それ故に、いかなる前の記述も、任意の特定の特徴、特性、ステップ、モジュールまたはブロックが必須または不可欠であることを暗示することは意図しない。実際、本明細書に記述された新規の方法およびシステムは、様々な他の形態で具現することができ、さらに、本明細書に開示する本発明の精神から逸脱することなく、本明細書に記述された方法およびシステムの形態にさまざまな排除、置き換えおよび変更を為すことができる。添付の特許請求の範囲およびそれらの均等物は、本明細書に開示する本発明の特定の範囲および精神内に収まるようなそのような形態または変更を含むように意図される。
本開示の実施形態は、以下の条項を考慮して記述することができる。
(1)
ネットワーク接続を通じて互いに通信するように構成された複数のコンピューティングデバイスを備えた1つ以上のデータセンタと、
その内部にコンピュータ可読命令を保存した1つ以上のメモリと、を備えており、前記コンピュータ可読命令が、システムにおいて実行されたときに、前記システムに、少なくとも、
複数の機械イメージおよび複数の計算インスタンスタイプに関連する複数の計算インスタンスについての予測要求を決定させ、
前記予測要求に少なくとも部分的に基づいて、前記複数の計算インスタンスをホストするように構成された前記複数のコンピューティングデバイスのうちの1つ以上のコンピューティングデバイスを決定させ、
計算インスタンスを起動するためのリクエストを顧客ノードから受信する前に、前記複数の機械イメージおよび前記複数の計算インスタンスタイプに少なくとも部分的に基づいて、前記1つ以上のコンピューティングデバイスにおいて前記複数の計算インスタンスを起動およびアイドリングさせ、かつ
前記計算インスタンスを起動するための前記顧客ノードからの前記リクエストの受信に応答して、前記1つ以上のコンピューティングデバイスにおいてアイドリングされた、前記複数の機械イメージの1つから前記計算インスタンスを起動させる、計算インスタンスをプロビジョンおよび起動するためのシステム。
(2)
前記予測要求が、顧客ノードから受信したリクエストの履歴に少なくとも部分的に基づいて決定され、前記リクエストの履歴が、前記リクエストに関連する計算インスタンスの設定パラメータに少なくとも部分的に基づいてソートされる、条項1記載のシステム。
(3)
複数の計算インスタンスについての予測要求を決定するための前記命令が、前記システムにおいて実行されたときに、前記システムに、少なくとも、
計算インスタンスについてのリクエストの履歴を解析することによって、前記複数の計算インスタンスについての目標、および前記1つ以上のコンピューティングデバイスを決定させ、かつ
前記リクエストに関連する統計的ファクタに少なくとも部分的に基づいて前記目標を修正させる命令を含む、条項1記載のシステム。
(4)
前記複数のコンピューティングデバイスのうちから1つ以上のコンピューティングデバイスを決定するための前記命令が、前記システムにおいて実行されたときに、前記システムに、少なくとも、
前記複数のコンピューティングデバイスの予測されるアベイラビリティを決定させ、
前記複数の計算インスタンスの起動およびアイドリングに関連する制約を満たすように、前記予測要求と前記予測アベイラビリティとのバランスをとらせ、かつ
前記バランスに少なくとも部分的に基づいて前記1つ以上のコンピューティングデバイスを決定させる命令を含む、条項1記載のシステム。
(5)
予測要求に少なくとも部分的に基づく複数の事前設定された機械イメージを複数の計算ノードに提供することと、
計算インスタンスを起動するためのリクエストをユーザノードから受信した後に、前記計算インスタンスが、前記複数の事前設定された機械イメージのうちの少なくとも1つの機械イメージに関連することを決定することと、
前記決定に少なくとも部分的に基づいて、前記複数の計算ノードのうちの1つの計算ノードにおいて前記関連する機械イメージを使用して、前記計算インスタンスの起動を完了することと、を含む、方法。
(6)
前記予測要求が、計算インスタンスについての以前に受信したリクエストに少なくとも部分的に基づく、条項5記載の方法。
(7)
前記予測要求が、前記複数の事前設定された機械イメージに関連する複数の計算インスタンスのタイプ、および前記複数の事前設定された機械イメージに関連する識別子を含む、条項5記載の方法。
(8)
前記予測要求が、ユーザノードからの前記複数の計算インスタンスについてのリクエストが受信されると予測されるタイムフレーム、および前記ユーザノードからの前記リクエストに示されると予測される領域をさらに含む、条項7記載の方法。
(9)
前記機械イメージを保存するルートストレージデバイスからの前記機械イメージのキャッシング、
前記計算インスタンスの構成に少なくとも部分的に基づく前記機械イメージの構成ファイルの変更、および
前記計算インスタンスの前記構成に少なくとも部分的に基づく前記計算インスタンスへのストレージボリュームの割り当て、に少なくとも部分的に基づいて、前記機械イメージが前記計算ノードにおいて起動するように事前設定された、条項5記載の方法。
(10)
前記計算インスタンスの起動の前記完了が、変更された前記構成ファイルに少なくとも部分的に基づいて、前記計算ノードにおいて前記機械イメージのオペレーティングシステムをブートすることを含む、条項9記載の方法。
(11)
前記計算インスタンスの起動の前記完了が、
前記ユーザノードから前記リクエストを受信する前に、前記計算インスタンスを起動することと、
前記ユーザノードから前記リクエストを受信する前に、前記起動された計算インスタンスをアイドリングすることと、
前記ユーザノードからの前記リクエストの受信に応答して、前記アイドルされた計算インスタンスを起動することと、を含む、条項5記載の方法。
(12)
システムにおいて実行されたときに、前記システムに、
複数の機械イメージに関連する複数の計算インスタンスについての要求を決定させる工程と、
複数の計算ノードにおける前記複数の計算インスタンスの起動に関連する制約に少なくとも部分的に基づいて、前記複数の機械イメージから前記複数の計算インスタンスを起動するように構成された前記複数の計算ノードを決定させる工程と、
前記複数の計算インスタンスのうちの計算インスタンスを起動するためのリクエストをユーザノードから受信する前に、複数のコンピューティングノードにおいて前記複数の機械イメージを構成させる工程と、
前記ユーザノードから前記リクエストを受信した後に、前記複数の計算ノードのうちの1つにおいて前記複数の構成された機械イメージの1つを使用して、特定の計算インスタンスの起動を完了させる工程と、を含む工程を実行させる命令を含む非一時的コンピュータ可読媒体。
(13)
前記複数の計算インスタンスについての前記要求が、前記複数の計算インスタンスを起動するための予測されるリクエストに関連する、条項12記載の非一時的コンピュータ可読媒体。
(14)
前記システムにおいて実行されたときに、前記システムに、
起動されたインスタンスに関連する履歴を解析することによって、複数の計算インスタンスを起動するための前記予測リクエストに関連する複数の設定パラメータを決定させる工程と、
複数の計算ノードのアベイラビリティに少なくとも部分的に基づいて、前記複数の計算ノードにおける前記複数の計算インスタンスの起動に関連する目標を決定させる工程と、
前記目標に少なくとも部分的に基づいて、前記複数の設定パラメータのうちの1つ以上の設定パラメータを含む前記要求を設定させる工程と、を含む工程を実行させる命令をさらに含む、条項13記載の非一時的コンピュータ可読媒体。
(15)
前記複数の設定パラメータが、前記複数の計算インスタンスの数、前記複数の計算インスタンスのタイプ、および前記複数の機械イメージの識別子を含む、条項14記載の非一時的コンピュータ可読媒体。
(16)
前記履歴が複数のユーザノードに関連する前記起動されたインスタンスについてのリクエストに少なくとも部分的に基づき、前記起動されたインスタンスが特定の場所にホストされた、条項14記載の非一時的コンピュータ可読媒体。
(17)
前記制約が、前記複数の計算ノードにおいて利用可能な計算容量に少なくとも部分的に基づく、条項12記載の非一時的コンピュータ可読媒体。
(18)
前記制約が、前記複数の計算ノードのうちのある計算ノードにおいて同時に起動されるように構成された計算インスタンスの数に少なくとも部分的に基づく、条項12記載の非一時的コンピュータ可読媒体。
(19)
前記制約が、ゾーンまたは領域にわたる計算ノードのアベイラビリティに少なくとも部分的に基づく、条項12記載の非一時的コンピュータ可読媒体。
(20)
前記制約が、前記複数の機械イメージのうちの1つに関連するアプリケーションまたはオペレーティングシステムの実行に関連する料金に少なくとも部分的に基づく、条項12記載の非一時的コンピュータ可読媒体。
(21)
前記制約が、前記複数の計算ノードのうちの1つにおける、前記複数の機械イメージのうちの1つからの前記複数の計算インスタンスのうちの1つの起動に関連する料金に少なくとも部分的に基づく、条項12記載の非一時的コンピュータ可読媒体。
(22)
前記制約が、前記複数の計算インスタンスを起動するための前記複数の計算ノードの互換性に少なくとも部分的に基づく、条項12記載の非一時的コンピュータ可読媒体。

Claims (10)

  1. 計算インスタンスを起動するためのシステムであって、前記システムは、
    ネットワーク接続を通じて互いに通信するように構成された複数のコンピューティングデバイスを備えた1つ以上のデータセンタと、
    その内部にコンピュータ可読命令を保存した1つ以上のメモリと、
    を備えており、
    前記コンピュータ可読命令は、前記複数のコンピューティングデバイスのうちの1つのコンピューティングデバイスにおいて実行されたときに、前記1つのコンピューティングデバイスに、少なくとも、
    複数の機械イメージおよび複数の計算インスタンスタイプに関連付けられた複数の計算インスタンスについての予測される要求を決定させ、
    前記予測される要求および前記複数のコンピューティングデバイスの予測されるアベイラビリティに少なくとも部分的に基づいて、前記複数の計算インスタンスを起動するように構成された前記複数のコンピューティングデバイスのうちの1つ以上のコンピューティングデバイスを決定させ、
    計算インスタンスを起動するためのリクエストを顧客ノードから受信する前に、前記複数の機械イメージおよび前記複数の計算インスタンスタイプに少なくとも部分的に基づいて、決定された前記1つ以上のコンピューティングデバイスにおいて前記複数の計算インスタンスを起動後アイドリングさせ、
    前記計算インスタンスを起動するための前記顧客ノードからの前記リクエストの受信に応答して、決定された前記1つ以上のコンピューティングデバイスにおいてアイドリングされた、前記複数の計算インスタンスから前記計算インスタンスをアクティブ化する
    システム。
  2. 前記予測される要求は、顧客ノードから受信したリクエストの履歴に少なくとも部分的に基づいて決定され、前記リクエストの履歴は、前記リクエストに関連付けられた計算インスタンスの設定パラメータに少なくとも部分的に基づいてソートされる、
    請求項1記載のシステム。
  3. 複数の計算インスタンスについての予測される要求を決定するための前記命令は、前記コンピューティングデバイスにおいて実行されたときに、前記コンピューティングデバイスに、少なくとも、
    計算インスタンスについてのリクエストの履歴を解析することによって、前記複数の計算インスタンスおよび決定された前記1つ以上のコンピューティングデバイスについての目標を決定させ、
    前記リクエストに関連付けられた統計的ファクタに少なくとも部分的に基づいて前記目標を修正させる、
    令を含む、
    請求項1記載のシステム。
  4. 前記複数のコンピューティングデバイスのうちから1つ以上のコンピューティングデバイスを決定するための前記命令は、前記コンピューティングデバイスにおいて実行されたときに、前記コンピューティングデバイスに、少なくとも、
    事前準備したインスタンスの前記コンピューティングデバイスへの配置に関連する制約を満たすように、前記予測される要求と前記予測されるアベイラビリティとに少なくとも部分的に基づいて前記1つ以上のコンピューティングデバイスを決定させる、
    命令を含む、
    請求項1記載のシステム。
  5. コンピューティングデバイスによって実装される方法であって、前記方法は、
    複数の機械イメージおよび複数の計算インスタンスタイプに関連付けられた複数の計算インスタンスについての予測される要求を決定するステップと、
    前記予測される要求および前記複数のコンピューティングデバイスの予測されるアベイラビリティに少なくとも部分的に基づいて、前記複数の計算インスタンスを起動するように構成された前記複数のコンピューティングデバイスのうちの1つ以上のコンピューティングデバイスを決定するステップと、
    計算インスタンスを起動するためのリクエストを顧客ノードから受信する前に、前記複数の機械イメージおよび前記複数の計算インスタンスタイプに少なくとも部分的に基づいて、決定された前記1つ以上のコンピューティングデバイスにおいて前記複数の計算インスタンスを起動後アイドリングするステップと、
    前記計算インスタンスを起動するための前記顧客ノードからの前記リクエストの受信に応答して、決定された前記1つ以上のコンピューティングデバイスにおいてアイドリングされた、前記複数の計算インスタンスから前記計算インスタンスをアクティブ化するステップと、
    を含む方法。
  6. 前記予測される要求は、計算インスタンスについての以前に受信したリクエストに少なくとも部分的に基づく、
    請求項5記載の方法。
  7. 前記予測される要求は、前記複数の事前設定された機械イメージに関連付けられた複数の計算インスタンスのタイプ、および、前記複数の事前設定された機械イメージに関連付けられた識別子を含む、
    請求項5記載の方法。
  8. 前記予測される要求の概算に基づいて設定されるインスタンスの事前準備についての目標は、顧客ノードからの前記複数の計算インスタンスについてのリクエストが受信されると予測されるタイムフレーム、および、前記複数の計算インスタンスが起動される領域をさらに含む、
    請求項7記載の方法。
  9. 記機械イメージは、前記機械イメージを保存するルートストレージデバイスからキャッシュされ、
    前記機械イメージの構成ファイルは、前記計算インスタンスの構成に少なくとも部分的に基づいて変更される、または、
    ストレージボリュームは、前記計算インスタンスの前記構成に少なくとも部分的に基づいて前記計算インスタンスに割り当てられる、
    請求項5記載の方法。
  10. 前記計算インスタンスの起動を完了する前記ステップは、変更された前記構成ファイルに少なくとも部分的に基づいて、決定された前記1つ以上のコンピューティングデバイスにおいて前記機械イメージのオペレーティングシステムをブートするステップを含む、
    請求項9記載の方法。
JP2016519600A 2013-06-10 2014-06-10 事前設定および事前起動計算リソース Active JP6580035B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/914,225 US10489175B2 (en) 2013-06-10 2013-06-10 Pre-configure and pre-launch compute resources
US13/914,225 2013-06-10
PCT/US2014/041794 WO2014201053A1 (en) 2013-06-10 2014-06-10 Pre-configure and pre-launch compute resources

Publications (2)

Publication Number Publication Date
JP2016527604A JP2016527604A (ja) 2016-09-08
JP6580035B2 true JP6580035B2 (ja) 2019-09-25

Family

ID=52006437

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016519600A Active JP6580035B2 (ja) 2013-06-10 2014-06-10 事前設定および事前起動計算リソース

Country Status (8)

Country Link
US (1) US10489175B2 (ja)
EP (1) EP3008616A4 (ja)
JP (1) JP6580035B2 (ja)
CN (1) CN105324760B (ja)
AU (3) AU2014278257A1 (ja)
CA (1) CA2914940C (ja)
SG (1) SG11201510128UA (ja)
WO (1) WO2014201053A1 (ja)

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10489175B2 (en) 2013-06-10 2019-11-26 Amazon Technologies, Inc. Pre-configure and pre-launch compute resources
US10200301B1 (en) * 2014-03-28 2019-02-05 Amazon Technologies, Inc. Logical control groups for distributed system resources
US9998320B2 (en) * 2014-04-03 2018-06-12 Centurylink Intellectual Property Llc Customer environment network functions virtualization (NFV)
CN105204923A (zh) * 2014-06-27 2015-12-30 国际商业机器公司 用于资源预配置的方法和装置
US10924482B1 (en) * 2014-12-18 2021-02-16 Amazon Technologies, Inc. Virtual service authorization
CN104636186B (zh) * 2015-01-27 2018-02-13 华为技术有限公司 虚拟机内存管理方法、物理主机、pcie设备及其配置方法以及迁移管理设备
JP6478219B2 (ja) * 2015-02-13 2019-03-06 Kddi株式会社 統合制御サーバ、仮想アプリケーション構築システムおよびプログラム
US20170041386A1 (en) * 2015-08-05 2017-02-09 International Business Machines Corporation Provisioning a target hosting environment
WO2017075492A1 (en) * 2015-10-29 2017-05-04 Idac Holdings, Inc. Dynamic virtual machine management platform
US10025636B2 (en) * 2016-04-15 2018-07-17 Google Llc Modular electronic devices with contextual task management and performance
US11385919B1 (en) * 2016-07-12 2022-07-12 Amazon Technologies, Inc. Machine image launch system
US10397189B1 (en) * 2016-09-27 2019-08-27 Amazon Technologies, Inc. Peered virtual private network endpoint nodes
US10228955B2 (en) 2016-09-29 2019-03-12 International Business Machines Corporation Running an application within an application execution environment and preparation of an application for the same
US9888615B1 (en) 2016-12-22 2018-02-06 Amazon Technologies, Inc. Tape library rack module with environmentally isolated interior
US11102285B2 (en) * 2017-01-05 2021-08-24 Bank Of America Corporation Network routing tool
TWI648637B (zh) * 2017-11-30 2019-01-21 財團法人工業技術研究院 於平台部署與操作行動作業系統的系統及其方法
US10601954B2 (en) 2018-03-09 2020-03-24 Microsoft Technology Licensing, Llc Sandboxing requests for web services
CN108616397B (zh) * 2018-04-28 2019-05-03 无锡华云数据技术服务有限公司 部署确定方法及装置
US10911367B2 (en) * 2018-06-27 2021-02-02 Oracle International Corporation Computerized methods and systems for managing cloud computer services
US11157292B2 (en) * 2018-11-13 2021-10-26 Servicenow, Inc. Instance mapping engine and tools
CN109660658A (zh) * 2018-11-26 2019-04-19 广州微算互联信息技术有限公司 获取预启动的云手机的方法和云手机服务器
US10963282B2 (en) * 2018-12-11 2021-03-30 Amazon Technologies, Inc. Computing service with configurable virtualization control levels and accelerated launches
US10761875B1 (en) * 2018-12-13 2020-09-01 Amazon Technologies, Inc. Large scale compute instance launching
US20220129800A1 (en) * 2019-01-30 2022-04-28 IC Manage Inc. Global File Flow Forecasting System and Methods of Operation
EP3942409B1 (en) * 2019-03-22 2023-11-01 Amazon Technologies, Inc. Bin-packing virtual machine workloads using forecasted capacity usage
US11228643B2 (en) * 2019-06-04 2022-01-18 Capital One Services, Llc System and method for fast application auto-scaling
US11474827B1 (en) * 2019-08-20 2022-10-18 Amazon Technologies, Inc. Reboot migration between bare-metal servers
US10965737B1 (en) * 2019-11-29 2021-03-30 Amazon Technologies, Inc. Cloud computing in communications service provider networks
US10979534B1 (en) * 2019-11-29 2021-04-13 Amazon Technologies, Inc. Latency-based placement of cloud compute instances within communications service provider networks
US11418995B2 (en) 2019-11-29 2022-08-16 Amazon Technologies, Inc. Mobility of cloud compute instances hosted within communications service provider networks
US11676013B2 (en) * 2019-12-30 2023-06-13 International Business Machines Corporation Job-launch time reduction by node pre-configuration
CN111475235B (zh) * 2020-04-13 2023-09-12 北京字节跳动网络技术有限公司 函数计算冷启动的加速方法、装置、设备及存储介质
CN112506583A (zh) * 2020-12-21 2021-03-16 北京百度网讯科技有限公司 一种实例控制方法、装置、设备、存储介质以及程序产品
US11954473B2 (en) * 2021-09-20 2024-04-09 Microstrategy Incorporated Deployment architecture for multi-tenant cloud computing systems

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7577722B1 (en) * 2002-04-05 2009-08-18 Vmware, Inc. Provisioning of computer systems using virtual machines
US7603463B2 (en) * 2003-12-12 2009-10-13 Nortel Networks Limited Method and apparatus for allocating processing capacity of system processing units in an extranet gateway
JP4739272B2 (ja) 2007-04-19 2011-08-03 株式会社富士通アドバンストエンジニアリング 負荷分散装置、仮想サーバ管理システム、負荷分散方法および負荷分散プログラム
JP2009163440A (ja) 2007-12-28 2009-07-23 Nec Corp 負荷分散方法、負荷分散システム、負荷分散サーバ及び負荷分散プログラム
US8424007B1 (en) * 2008-09-30 2013-04-16 Symantec Corporation Prioritizing tasks from virtual machines
EP2404412B1 (en) 2009-03-02 2019-05-01 Twilio Inc. Method and system for a multitenancy telephone network
US8090797B2 (en) * 2009-05-02 2012-01-03 Citrix Systems, Inc. Methods and systems for launching applications into existing isolation environments
US8984503B2 (en) * 2009-12-31 2015-03-17 International Business Machines Corporation Porting virtual images between platforms
EP2521976B1 (en) 2010-01-08 2018-04-18 Sauce Labs, Inc. Real time verification of web applications
US8490088B2 (en) * 2010-09-10 2013-07-16 International Business Machines Corporation On demand virtual machine image streaming
JP2012068790A (ja) * 2010-09-22 2012-04-05 Internatl Business Mach Corp <Ibm> Osのイメージの選択装置、選択方法、及び選択プログラム
US8699499B2 (en) * 2010-12-08 2014-04-15 At&T Intellectual Property I, L.P. Methods and apparatus to provision cloud computing network elements
US8560699B1 (en) * 2010-12-28 2013-10-15 Amazon Technologies, Inc. Enforceable launch configurations
US8793684B2 (en) * 2011-03-16 2014-07-29 International Business Machines Corporation Optimized deployment and replication of virtual machines
US8417578B1 (en) * 2011-03-17 2013-04-09 Amazon Technologies, Inc. Customizing component configurations for utility computing
US8826277B2 (en) * 2011-11-29 2014-09-02 International Business Machines Corporation Cloud provisioning accelerator
CN102611734A (zh) 2011-12-16 2012-07-25 广州市品高软件开发有限公司 一种基于云计算的镜像实例启动方法及装置
US9712379B2 (en) * 2013-01-25 2017-07-18 Red Hat, Inc. Robust cloud instance launching
US9298443B2 (en) * 2013-02-14 2016-03-29 International Business Machines Corporation System and method for determining when cloud virtual machines need to be updated
US10489175B2 (en) 2013-06-10 2019-11-26 Amazon Technologies, Inc. Pre-configure and pre-launch compute resources

Also Published As

Publication number Publication date
US20140365626A1 (en) 2014-12-11
US10489175B2 (en) 2019-11-26
AU2017218941A1 (en) 2017-09-07
EP3008616A1 (en) 2016-04-20
AU2019213422A1 (en) 2019-08-29
AU2019213422B2 (en) 2020-05-28
CA2914940C (en) 2021-03-23
EP3008616A4 (en) 2017-03-01
JP2016527604A (ja) 2016-09-08
WO2014201053A1 (en) 2014-12-18
SG11201510128UA (en) 2016-01-28
CA2914940A1 (en) 2014-12-18
AU2014278257A1 (en) 2015-12-24
CN105324760A (zh) 2016-02-10
CN105324760B (zh) 2018-05-11

Similar Documents

Publication Publication Date Title
JP6580035B2 (ja) 事前設定および事前起動計算リソース
US8909767B2 (en) Cloud federation in a cloud computing environment
EP2619665B1 (en) Methods and systems for dynamically managing requests for computing capacity
US10789083B2 (en) Providing a virtual desktop service based on physical distance on network from the user terminal and improving network I/O performance based on power consumption
US20170134339A1 (en) Management of clustered and replicated systems in dynamic computing environments
KR20150124001A (ko) 클라우드 기반 웹 호스팅 시스템
US10884845B2 (en) Increasing processing capacity of processor cores during initial program load processing
US10884818B2 (en) Increasing processing capacity of virtual machines
US11907743B2 (en) System and method for relocating customer virtual machine instances in a multi-tenant cloud service
CN114579250A (zh) 一种构建虚拟集群的方法、装置及存储介质
US10986098B2 (en) Reverse identity federation in distributed cloud systems
WO2014036693A1 (zh) 一种业务部署的方法及装置
Kumar et al. SERVmegh: Framework for green cloud
US11017417B1 (en) Using incentives to manage computing resources
US10990434B2 (en) Increasing processing capacity of virtual machines for an abnormal event
Maenhaut et al. Efficient resource management in the cloud: From simulation to experimental validation using a low‐cost Raspberry Pi testbed
Haugerud et al. On automated cloud bursting and hybrid cloud setups using Apache Mesos
US9270530B1 (en) Managing imaging of multiple computing devices
Tan et al. An assessment of eucalyptus version 1.4
US11036406B2 (en) Thermally aware memory management
Seppänen Elastic Build System in a Hybrid Cloud Environment

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151222

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160107

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170131

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170227

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20170525

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170721

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20180109

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20190124

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20190419

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190516

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20190821

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190827

R150 Certificate of patent or registration of utility model

Ref document number: 6580035

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250