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

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

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

特許6860179管理されたコンテナインスタンスを有するシステムおよびその方法
<>
  • 特許6860179-管理されたコンテナインスタンスを有するシステムおよびその方法 図000003
  • 特許6860179-管理されたコンテナインスタンスを有するシステムおよびその方法 図000004
  • 特許6860179-管理されたコンテナインスタンスを有するシステムおよびその方法 図000005
  • 特許6860179-管理されたコンテナインスタンスを有するシステムおよびその方法 図000006
  • 特許6860179-管理されたコンテナインスタンスを有するシステムおよびその方法 図000007
  • 特許6860179-管理されたコンテナインスタンスを有するシステムおよびその方法 図000008
  • 特許6860179-管理されたコンテナインスタンスを有するシステムおよびその方法 図000009
  • 特許6860179-管理されたコンテナインスタンスを有するシステムおよびその方法 図000010
  • 特許6860179-管理されたコンテナインスタンスを有するシステムおよびその方法 図000011
  • 特許6860179-管理されたコンテナインスタンスを有するシステムおよびその方法 図000012
  • 特許6860179-管理されたコンテナインスタンスを有するシステムおよびその方法 図000013
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6860179
(24)【登録日】2021年3月30日
(45)【発行日】2021年4月14日
(54)【発明の名称】管理されたコンテナインスタンスを有するシステムおよびその方法
(51)【国際特許分類】
   G06F 9/50 20060101AFI20210405BHJP
   G06F 8/60 20180101ALI20210405BHJP
   G06F 9/455 20060101ALI20210405BHJP
【FI】
   G06F9/50 120A
   G06F8/60
   G06F9/455 150
【請求項の数】13
【全頁数】37
(21)【出願番号】特願2019-516173(P2019-516173)
(86)(22)【出願日】2017年9月29日
(65)【公表番号】特表2019-530095(P2019-530095A)
(43)【公表日】2019年10月17日
(86)【国際出願番号】US2017054489
(87)【国際公開番号】WO2018064568
(87)【国際公開日】20180405
【審査請求日】2019年3月28日
(31)【優先権主張番号】15/280,807
(32)【優先日】2016年9月29日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】506223509
【氏名又は名称】アマゾン・テクノロジーズ、インコーポレイテッド
(74)【代理人】
【識別番号】110000877
【氏名又は名称】龍華国際特許業務法人
(72)【発明者】
【氏名】ジャーデスメイアー、ダニエル ロバート
(72)【発明者】
【氏名】バークレイ、クリストファー ブライアン
(72)【発明者】
【氏名】スアレス、アンソニー ジョセフ
(72)【発明者】
【氏名】スリカンタ、アーチャナ
(72)【発明者】
【氏名】ロペス ビアギ、カルロス エドアルド
【審査官】 漆原 孝治
(56)【参考文献】
【文献】 国際公開第2016/077367(WO,A1)
【文献】 特表2013−543171(JP,A)
【文献】 国際公開第2016/126731(WO,A1)
【文献】 国際公開第2016/090292(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/50
G06F 8/60
G06F 9/455
(57)【特許請求の範囲】
【請求項1】
システムであって、プロセッサおよびメモリを伴って構成された少なくとも1つのコンピューティングデバイスを備え、前記メモリが、命令を含み、該命令が実行されると、前記システムに、
タスクを実行するためにコンテナに割り当てられ、インスタンスプールへと戻されることのできる一組の稼働中のインスタンスを含む、前記インスタンスプールを維持することであって、前記一組の稼働中のインスタンスの各インスタンスが、対応するインスタンスタイプを有し、前記インスタンスは、前記インスタンスタイプが、一組の性能特性を有するように選択される、維持することと、
少なくともタスク定義内の情報からコンテナをインスタンス化するための一組のパラメータを取得することであって、前記命令が実行されると、前記システムにさらに、
(a)対応するインスタスタイプに基づいて、前記インスタンスプールから、前記一組のパラメータのうち、前記対応するインスタンスタイプのインスタンス上の前記コンテナをインスタンス化するための最小数のパラメータを満たす、一組の性能特性を有するインスタンスを選択することであって、前記最小数は、前記タスク定義において指定される、選択することと、
(b)前記コンテナをインスタンス化するための前記一組のパラメータが、未プロビジョニングのインスタンスタイプを指定することを判断すると、前記インスタンスタイプが第2の組のパラメータを満たすように前記インスタンスプールから改善したインスタンスタイプのインスタンスを選択することであって、前記第2の組のパラメータは、前記一組のパラメータのうちの1または複数のパラメータを超える1または複数のパラメータを有する、選択することと、
の(a)および(b)のうちの少なくとも1つを行わせる、取得することと、
前記タスク定義に少なくとも部分的に基づいて、前記選択されたインスタンス上の前記コンテナをインスタンス化することと、を行わせる、システム。
【請求項2】
前記システムに前記インスタンスプールから前記インスタンスを選択させる前記命令が、さらに命令を含み、該命令が実行されると、前記システムに、
前記タスク定義から取得された前記一組のパラメータを分析して、前記インスタンスの一組の性能仕様を生成することであって、前記インスタンスの前記一組の性能仕様が、前記インスタンスのCPU仕様、前記インスタンスのメモリ仕様、または前記インスタンスのネットワーク帯域幅仕様、のうちの少なくとも1つを含む、生成することを行わせる、請求項1に記載のシステム。
【請求項3】
前記インスタンスの前記一組の性能仕様が、前記インスタンスのハードウェア要件を含み、前記インスタンスの前記ハードウェア要件が、フィールドプログラマブルゲートアレイ要件、特定用途向け集積回路要件、ハードウェアセキュリティモジュール要件、またはグラフィックス処理ユニット要件、のうちの少なくとも1つを指定する、請求項2に記載のシステム。
【請求項4】
前記タスク定義が、一組のコンテナを説明し、前記一組のコンテナの各コンテナが、1つ以上のコンテナ記述に対応する、請求項1〜3のいずれか一項に記載のシステム。
【請求項5】
前記命令は、前記システムに、さらにネットワークインターフェースを前記インスタンスにアタッチして、前記インスタンスを顧客の仮想ネットワークに接続することによって、および一時的なボリュームを前記インスタンスにアタッチすることによって、前記インスタンスをプロビジョニングすることを行わせ、前記一時的なボリュームは、前記コンテナが稼働している間に、データの読み出しおよび書き込みを行うために、前記コンテナによって使用可能である、請求項1〜4のいずれか一項に記載のシステム。
【請求項6】
前記インスタンスのインスタンスエージェントが、前記インスタンスを監視し、また、前記インスタンスの1つ以上のヘルスメトリックを、コンピューティングリソースサービスプロバイダによって提供されるコンテナ管理サービスに提供する、請求項1〜5のいずれか一項に記載のシステム。
【請求項7】
前記インスタンスエージェントが、1つ以上のリソース使用状況メトリックについて前記コンテナを監視し、前記1つ以上のリソース使用状況メトリックが、前記コンテナと関連付けられたリソースコストを決定するために使用可能である、請求項6に記載のシステム。
【請求項8】
方法であって、
タスクを実行するためにコンテナに割り当てられ、インスタンスのプールに戻されることのできる、稼働中のコンテナインスタンスのプールを維持する段階と、
インスタンスタイプが、コンテナを前記インスタンスタイプのインスタンス上でインスタンス化するための一組のパラメータを満たすか否かを判定することであって、前記コンテナをインスタンス化するための前記一組のパラメータが、前記コンテナのコンテナ記述に含まれる、判定することと、
インスタンスプールから前記インスタンスタイプのインスタンスを選択することであって、前記コンテナ記述で指定される最小数のパラメータを満たす一組の性能特性を有するインスタンスタイプを有する一組のインスタンスから、前記インスタンスを選択することと、前記コンテナ記述に含まれる一組のパラメータのうちの1または複数のパラメータを超える、1または複数のパラメータを含む第2のパラメータを満たすよう判定された改善したインスタンスタイプを有する前記インスタンスを前記インスタンスプールから選択することとのうちのいずれかを選択的に実行することを含む、選択することと、
前記コンテナを、前記コンテナ記述に基づいて、選択される前記インスタンス上でインスタンス化することと、を含む、方法。
【請求項9】
前記インスタンスを選択することが、前記インスタンスタイプのいかなるインスタンスも前記インスタンスプール内に存在しないと判定されると、前記インスタンスプールから前記インスタンスを選択することであって、インスタンスタイプが、前記コンテナを前記インスタンスタイプのインスタンス上でインスタンス化するための前記一組のパラメータの最小数のパラメータを満たす一組の性能特性を有し、パラメータの前記最小数が、前記コンテナ記述に指定される、選択することをさらに含む、請求項8に記載の方法。
【請求項10】
前記インスタンスが、コンピューティングリソースサービスプロバイダによって提供されたコンテナ管理サービスと通信するインスタンスエージェントを含み、前記インスタンスエージェントが、セキュリティ更新を前記インスタンスに適用するように構成され、前記セキュリティ更新が、前記コンテナ管理サービスから受信される、請求項8または9に記載の方法。
【請求項11】
改善されたインスタンスタイプを前記選択することは、未プロビジョニングインスタンスタイプを指定するという判定に少なくとも部分的に基づく、請求項8〜10のいずれか一項に記載の方法。
【請求項12】
前記インスタンスをプロビジョニングすることが、ネットワークインターフェースを前記インスタンスにアタッチすることをさらに含み、前記ネットワークインターフェースが、ウェブサービスインターフェイスを介して前記コンテナと通信することを可能にするように構成される、請求項8〜11のいずれか一項に記載の方法。
【請求項13】
前記コンテナが終了した結果として、前記インスタンスを前記インスタンスプールに戻すことをさらに含む、請求項8〜12のいずれか一項に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本出願は、2016年9月29日に出願された米国特許出願第15/280,807号、名称「MANAGED CONTAINER INSTANCES」の優先権を主張するものであり、その内容は、参照によりその全体が本明細書に組み込まれる。
【背景技術】
【0002】
現代のコンピュータシステムは、1つ以上のホストコンピュータシステム環境内で集合的に動作するコンピュータシステムの分散集合体として頻繁に実装される。この実装形態の一部として、アプリケーションのための軽量で、仮想化された実行環境であるソフトウェアコンテナが頻繁に使用される。コンテナは、サーバまたは仮想マシンのクラスタ全体にわたってアプリケーションを容易に稼働させること、および管理することを可能にする。コンテナとしてパッケージ化されたアプリケーションは、ローカルに、および計算サービス内等の様々な環境全体にわたって展開することができる。計算サービスは、仮想マシンをプロビジョニングして、顧客に代わってコンテナをホストし、それによって、クラスタ管理インフラストラクチャをインストールし、動作させ、スケーリングする必要性を排除することができる。
【図面の簡単な説明】
【0003】
様々な技術を、図面を参照しながら説明する。
【0004】
図1】コンテナインスタンスがコンテナ管理サービスを使用して管理される、例示的な環境を例示する。
図2】コンテナ管理サービスを使用してコンテナインスタンスを選択し、インスタンス化するための例示的なプロセスを例示する。
図3】コンテナ管理サービスを使用してコンテナインスタンスを選択し、インスタンス化するための例示的なプロセスを例示する。
図4】コンテナインスタンスが互いに隔離された例示的な環境を例示する。
図5】コンテナインスタンス上のコンテナが互いに隔離された例示的な環境を例示する。
図6】コンテナインスタンスをインスタンス化し、プロビジョニングするための例示的なプロセスを例示する。
図7】好適なコンテナインスタンスを選択するための例示的なプロセスを例示する。
図8】コンテナインスタンス内のコンテナがコンテナ管理サービスを使用してインスタンス化される例示的な環境を例示する。
図9】コンテナインスタンス内のコンテナがコンテナ管理サービスを使用してインスタンス化される例示的な環境を例示する。
図10】コンテナインスタンスマネージャを使用してコンテナインスタンスをインスタンス化するための例示的なプロセスを例示する。
図11】様々な実施形態を実施することができる環境を例示する。
【発明を実施するための形態】
【0005】
以下の開示は、コンテナ管理サービスを使用してコンテナインスタンス(すなわち、コンテナをホストするために使用される仮想マシンインスタンス)を管理するための技術を説明する。計算サービスへのアクセスを提供するコンピューティングリソースサービスプロバイダの顧客は、一組のソフトウェアコンテナを使用して行われるタスクを説明することができる。これらのソフトウェアコンテナは、単に「コンテナ」とも称される、アプリケーションのための軽量で、仮想化された実行環境であり、該仮想化された実行環境は、ソフトウェア、ファイル、およびシステムライブラリを含む、アプリケーションに必要とされる全てを含むそれ自体の完全なファイルシステムの中にアプリケーションを包含する。次に、コンテナ管理アプリケーションは、オペレーティングシステムのリソースを割り当てて、コンテナを稼働させる。
【0006】
上で説明したように、タスクは、アプリケーションを実行してタスクを行う1つ以上のコンテナによって指定することができる。例えば、コンピューティングリソースサービスプロバイダの顧客は、あるコンテナにおいて稼働するコンテンツ管理アプリケーション、および別のコンテナにおいて稼働するデータベースアプリケーションによってタスクを指定することができる。これらのアプリケーションの各々は、例えば、コンテンツ管理アプリケーションがデータベースにアクセスして、必要なリソースを決定および位置指定するように協調して実行する。タスクは、実行されると、インストールされたアプリケーションによって2つのコンテナを開始し、該コンテナを使用して、例えば、ウェブページを更新する(すなわち、コンテンツ管理アプリケーションは、データベースを使用して、更新されたコンテンツをチェックし、新しいコンテンツを発見した場合は、ウェブページを更新する)。
【0007】
タスクが指定されると、コンピューティングリソースサービスプロバイダの顧客は、必要とされる中央演算処理装置(「CPU」)の数、要求される各CPUの量、要求されるメモリの量、およびネットワーキングパラメータを含む、タスクを行うためのいくつかのパラメータを指定する。コンピューティングリソースサービスプロバイダの顧客はまた、タスクが実行されるべき場所(または「ゾーン」)を指定すること、例えば、スクラッチ記憶、ロギング、またはセキュリティのパラメータ等の、タスクと関連付けられた追加的なリソースを要求することもできる。
【0008】
コンピューティングリソースサービスプロバイダの顧客によってタスクの実行が要求されると、コンピュータシステムインスタンス(例えば、仮想マシン)が、コンテナをインスタンス化し、実行することができる顧客に提供される。これらのコンピュータシステムインスタンスを管理してコンピュータシステムインスタンスを提供する効率を向上させるための技術を本開示で説明する。
【0009】
コンテナ管理サービスが、コンピューティングリソースサービスプロバイダの顧客からタスク定義を受信すると、コンテナ管理サービスは、タスク定義を分析して、タスクを実行するために使用する最良のコンテナインスタンスを決定する。タスク定義に指定されたパラメータに基づいて、一組のコンテナインスタンスから十分な能力を有するコンテナインスタンスが選択される。よって、例えば、ウェブページがコンテンツ管理コンテナおよびデータベースコンテナを有する上で説明した更新タスク定義が、2つのCPU、4ギガバイト(「GB」)のメモリ、ネットワーク接続性(すなわち、ネットワークに接続する能力)、および最小帯域幅を有するネットワーク接続を要求するパラメータを含む場合、少なくともこれらの能力を有するインスタンスをコンテナ管理サービスによって選択して、タスクを行うことができる。
【0010】
本開示で説明される技術では、必要に応じて(すなわち、「オンザフライ」で)、一組の能力を有するインスタンスを作成することができるが、コンテナ管理サービスが、代わりに、タスクを行うために顧客に割り当て、次いで、プールに戻すことができる、稼働中のコンテナインスタンスのプールを維持する。異なるタイプのコンテナインスタンス(すなわち、一組の能力を有するコンテナインスタンス)の各々は、既にインスタンス化されて稼働中である多数のインスタンスを有することができ、タスク定義を受信すると、タスクのパラメータに基づいて、プールから稼働中のインスタンスが選択される。
【0011】
どの時点においても、いくつかの特定のタイプのコンテナインスタンスが、プールにおいて稼働中であり、また、利用可能であり得る。例えば、コンテナ管理サービスは、「A」、「B」、「C」、「D」、および「E」のラベルが付された、5つの異なるタイプの利用可能なコンテナインスタンスを有することができ、ここで、「A」は、最低の能力を有し、「E」は、最高の能力を有する。コンテナインスタンス「B」上で稼働させることができるタスク定義を受信した場合、プールからタイプ「B」のコンテナインスタンスを選択し、提供して、コンピューティングリソースサービスプロバイダの顧客のためのタスクを稼働させることができる。タスクは、多数のインスタンスを要求することができ、そのようなタスクについて、プールから多数の異なるタイプの多数のコンテナインスタンスを選択することができることに留意されたい。
【0012】
コンテナインスタンスのプールは、最初に、各タイプの多数のインスタンスを含む。しかしながら、コンテナインスタンスがコンピューティングリソースサービスプロバイダの顧客に割り当てられると、1つ以上のタイプのインスタンスが不足する、または利用不可能になる場合がある。例えば、100個のタイプ「B」インスタンスが存在し、95個が使用中である場合、10個のタイプ「B」インスタンスを要求するタスクに失敗する場合がある。タスクの失敗を回避するために、コンテナ管理サービスは、同等の(すなわち、同じCPU、ネットワーク、およびメモリパラメータを有するが、インスタンスと関連付けられた追加的なリソースを有する場合がある)インスタンスタイプを探し、そのタイプのインスタンスを代わりに提供する場合がある。同様に、コンテナ管理サービスは、より良好なインスタンスタイプ(すなわち、説明される例においてタイプ「C」、タイプ「D」、またはタイプ「E」のコンテナインスタンス等の、パラメータを超える能力を有するもの)を探す場合がある。インスタンスタイプは、コンテナをインスタンスタイプのインスタンス上でインスタンス化するための一組のパラメータを満たす、一組の性能特性を有する場合に選択することができ、ここで、性能特徴としては、メモリ、CPU、ネットワーク帯域幅が挙げられるが、これらに限定されない。加えて、特定のタイプのインスタンスが不足している(または利用不可能である)とき、コンテナ管理サービスは、インスタンスプール内の追加的なインスタンスをインスタンス化することによって、この不足を多少なりとも解消することができる。
【0013】
上記および下記の記述では、種々の技術を説明する。説明の目的で、本技術を実施する可能な方法の完全な理解を提供するために、特定の構成および詳細が記載される。しかしながら、当業者には、下で説明される技術が、具体的な詳細を伴うことなく異なる構成で実施され得ることも明らかになるであろう。さらに、公知の特徴は、説明されている技術を不明瞭にすることを回避するために、省略または単純化され得る。
【0014】
図1は、一実施形態に従って、コンテナ管理サービスを使用してコンテナインスタンスが管理される、例示的な環境100を例示する。図1に例示される実施例において、タスク定義102は、コンテナ管理サービス104において受信される。タスク定義102は、一実施形態において、グループとして開始するように割り当てられる一組のリンクされたコンテナ(すなわち、ホストコンピューティングシステム上で稼働させるときに、互いに関連付けられる一組のコンテナ)を指定するファイルである。タスク定義102は、タスクと関連付けられたコンテナを単一の物理マシン上で共有することが可能であるディスクおよびネットワークロケーションを指定することができる。タスク定義102は、次いで、タスクと関連付けられたコンテナを起動するために利用することができる。タスク定義102は、多数の物理ホストに分散されるコンテナを定義し、リンクすることができる。1つのタスク定義102は、多数のタスクを含み、スケジュールすることができる。いくつかの例において、「タスク」は、タスク定義102によって指定されたリソースのインスタンス化を指すことができ、また、1つ以上のコンテナを含むことができる。タスクは、新しいタスク定義をタスクに適用することによって修正することができる。
【0015】
上で説明したように、タスク定義102は、タスクと関連付けられたコンテナをインスタンス化するために必要とされる情報を指定する。タスク定義102は、下で説明されるように、例えば一組のリソースパラメータ(例えば、CPU仕様、メモリ仕様、ネットワーク仕様、および/またはハードウェア仕様)として、タスクと関連付けられたコンテナをインスタンス化するために必要とされる情報を指定する。タスク定義102は、コンテナイメージ(すなわち、以前にインスタンス化したイメージまたはスナップショット)として、またはイメージ仕様(すなわち、イメージをインスタンス化するために使用することができるイメージの記述)として、タスクと関連付けられたコンテナをインスタンス化するために必要とされる情報も指定する。イメージ仕様および/またはイメージは、コンピューティングリソースサービスプロバイダの顧客によって指定すること、コンピューティングリソースサービスプロバイダによって指定すること、または何らかの他のエンティティ(例えば、第3者)によって指定することができる。タスク定義102は、インスタンスおよび/またはタスクの隔離を提供するクラスタまたはグループ内のコンテナをインスタンス化することができる。コンテナおよび隔離は、本明細書で説明されるように、アプリケーションプログラミングインターフェース(「API」)の呼び出しを通して管理することができる。
【0016】
タスク定義の一例は、以下のようになり得る。
【0017】
例示的なタスク定義は、「db」と名付けられた第1のタスクが経路「postgresql」に位置付けられたソフトウェアイメージを有するように指定する。第1のタスクは、コンテナ管理サービス104によって割り当てられた1,001GBのメモリの処理配分である。同様に、タスク定義はまた、第2のタスクが「cms」と名付けられた経路「content_manager」に位置付けられたソフトウェアイメージを有するように指定する。第2のタスクもまた、コンテナ管理サービス104によって割り当てられた1,001GBのメモリの処理配分である。タスク定義は、第2のタスク(「cms」)が第1のタスク(「db」)にリンクすることを可能にすることを示す。この例において使用されるいくつかのユニットは、定数の中央処理装置シェアとして与えられる処理能力等の、定数として与えられるが、代わりに、他のユニットおよび他のタイプの値(例えば、総処理能力のパーセンテージ、総メモリのパーセンテージ)が、動的なリソース割り当てを可能にするために使用することができることが想定されることに留意されたい。
【0018】
コンテナ管理サービス104は、一群のコンピューティングリソースとすることができ、これは、集合的に動作して、タスクおよび関連付けられたコンテナを実行することができるコンテナインスタンスを提供し、管理することによって、本明細書で説明されるようにタスク定義を処理して、タスクを行う。タスク定義を処理し、また、タスクおよび関連付けられたコンテナを実行することができるコンテナインスタンスを提供し、管理するように構成されたコンピューティングリソースは、コンピュータシステム(プロセッサおよびメモリを含むコンピュータシステム)、ネットワーク、記憶デバイス、実行可能コード、サービス、プロセス、モジュール、またはアプリケーション、のうちの少なくとも1つを含む。タスク定義を処理し、また、タスクおよび関連付けられたコンテナを実行することができるコンテナインスタンスを提供し、管理するように構成されたコンピューティングリソースは、例えばコンピューティングリソースサービスプロバイダによってホストされる、共有ハードウェアに実装される仮想システムを含むことができる。コンテナ管理サービス104は、シングルシステムとして実装することができ、または、分散システムとして実装することができ、複数のインスタンスが集合的に動作して、タスク定義を処理し、タスクおよび関連付けられたコンテナを実行することができるコンテナインスタンスを提供し、管理する。コンテナ管理サービス104は、コンピューティングリソース(例えば、他のサービス)を使用して動作させることができ、該コンピューティングリソースは、コンテナ管理サービス104が、タスク定義を受信すること、コンテナインスタンスをインスタンス化すること、コンテナインスタンスと通信すること、および/または別の場合であればコンテナインスタンスを管理することを可能にする。
【0019】
コンテナ管理サービス104は、コンピューティングリソースサービスプロバイダの顧客が、下で説明されるようにコンテナインスタンス上のコンテナを使用してタスク実行することを可能にするために、コンピューティングリソースサービスプロバイダによって提供されるサービスとすることができる。コンピューティングリソースサービスプロバイダは、図2に関連して説明されるコンピューティングリソースサービスプロバイダ210に類似するコンピューティングリソースサービスプロバイダとすることができ、また、1つ以上のコンピューティングリソースサービスを、個々に、または分散コンピュータシステムのサービスの組み合わせとして、顧客に提供することができる。コンピューティングリソースサービスプロバイダの1つ以上のコンピューティングリソースサービスは、ネットワークを通じてアクセス可能とすることができ、また、仮想コンピュータシステムサービス、ブロックレベルデータ記憶サービス、暗号サービス、オンデマンドのデータ記憶サービス、通知サービス、認証サービス、ポリシー管理サービス、タスクサービス、および/または他のそのようなサービス等のサービスを含むことができる。説明される全ての実施形態が、説明されるサービスの全てを含むとは限らず、明確に説明されるサービスに加えて、またはその代替として、追加的なサービスを提供することができる。
【0020】
1つの例として、コンピューティングリソースサービスプロバイダは、データ記憶サービス、仮想コンピュータシステムサービス、および/またはウェブサービス等のコンピューティングリソースを提供するエンティティとすることができる。コンピューティングリソースサービスプロバイダの顧客は、ウェブサービスインターフェイスまたは任意の他のタイプの顧客インターフェースとすることができるインターフェースを介して、サービスのうちの1つ以上と通信することができる。コンピューティングリソースサービスプロバイダによって提供される各サービスは、それ自体のインターフェースを有することができ、サービスのサブセットは、共通インターフェースに加えて、またはその代わりに、対応する別個のインターフェースを有することができる。
【0021】
いくつかの例において、コンテナインスタンス(本明細書で「ソフトウェアコンテナインスタンス」とも称される)は、ソフトウェアコンテナを起動し、稼働させるように構成された(オペレーティングシステムを稼働させる物理コンピュータシステム等の、仮想または非仮想の)コンピュータシステムインスタンスを指すことができる。したがって、コンテナインスタンスは、顧客によって提供されたタスク定義に従ってコンテナ内のタスクを稼働させるように構成することができる。1つ以上のコンテナインスタンスは、コンテナの隔離したクラスタまたはグループを備えることができる。いくつかの例において、「クラスタ」は、クラスタに登録された(すなわち、関連付けられた)一組の1つ以上のコンテナインスタンスを指すことができる。したがって、コンテナインスタンスは、クラスタに登録された多数の異なるコンテナインスタンスのうちの1つとすることができ、クラスタの他のコンテナインスタンスは、同じまたは異なるタイプのコンテナを稼働させるように構成することができる。クラスタ内のコンテナインスタンスは、異なるインスタンスタイプのもの、または同じインスタンスタイプのものとすることができる。コンピューティングリソースサービスプロバイダの顧客は、2つ以上のクラスタを有することができる。したがって、顧客は、1つ以上のクラスタを開始し、次いで、アプリケーションプログラミングインターフェース呼び出しを通して、各クラスタ内のコンテナのユーザおよびアプリケーション隔離を管理することができる。
【0022】
コンテナ(「ソフトウェアコンテナ」とも称される)は、プログラム、データ、およびシステムライブラリを含むコンピュータシステムインスタンスの下で稼働する軽量の仮想マシンインスタンスとすることができる。コンテナを稼働させる(または実行する)と、稼働中のプログラム(すなわち、プロセス)が、同じコンピュータシステムインスタンス内で稼働する他のプロセスから隔離される。したがって、コンテナは、(例えば、オペレーティングシステムによって割り当てられたメモリ、CPU、および記憶装置を使用して)コンテナインスタンスのオペレーティングシステム上で各々稼働させ、互いに隔離して実行することができる(例えば、各コンテナは、オペレーティングシステムのファイルシステムの隔離したビューを有することができる)。コンテナの各々は、それ自体の名前空間を有することができ、コンテナ内で稼働するアプリケーションは、コンテナ名前空間内で利用可能なリソースへのアクセスを有することだけによって隔離される。したがって、コンテナは、それらの自体の名前空間内で1つ以上の単一アプリケーションを稼働させるための効果的な方法であり得る。コンテナカプセル化システムは、1つ以上のコンテナを、別個のユーザスペースインスタンスを稼働させるための仮想マシンを開始し、維持することと関連付けられたオーバーヘッドを伴わずに、単一の動作インスタンス内で稼働させることを可能にする。
【0023】
コンテナは、コンテナインスタンスに割り当てられたリソースから、指定されたリソースだけを有するように起動することができ、すなわち、コンテナは、ある量のメモリを有し、指定された量の処理能力を超えて利用しないように起動することができる。例えば、タスク定義102は、2つのCPUを指定することができるが、アプリケーション用のコンテナは、そうした2つのCPUの50%を超えることができない。コンテナのリソース割り当ては、タスク定義102で指定することができる。多数のコンテナを単一のホストコンピュータまたはホストコンテナインスタンス上で同時に稼働させることができ、ホストのリソースは、システムを使用してコンテナ間で効率的に割り当てることができる。一実施形態において、ホストは、1人の顧客だけから、コンテナインスタンス内の稼働中のコンテナをサポートする(本明細書において、「シングルテナント」環境と称される)。他の実施形態において、単一のホストは、多数の顧客がホスト上で稼働するコンテナインスタンスを有することを可能にすることができる(本明細書で「マルチテナント」環境と称される)。後者の場合、コンテナサービスは、顧客が他のコンテナ、クラスタ、またはコンテナインスタンスにアクセスできないことを確実にするために、セキュリティを提供することができる。
【0024】
異なるタイプのタスクは、異なるリソースパラメータを有することができ、また、異なる寿命を有することができる。したがって、コンテナは、動的にスケジュールして、コンテナインスタンスの基礎をなすオペレーティングシステムとは関係なく、スケジューラサービスによって稼働させることができ、よって、コンテナインスタンスの基礎をなすオペレーティングシステムは、ごく基本的なものであってもよい。代替的に、コンテナは、コンテナインスタンスにインストールされたスケジューラによって稼働するようにスケジュールすることができる。
【0025】
コンテナ管理サービス104がタスク定義102を受信すると、次いで、106で、コンテナ管理サービス104のインスタンスセレクタプログラム118は、データベースから1つを選択することによって、インスタンスプール108内の稼働中のインスタンスからインスタンスを選択することができる。インスタンスプール108は、多数の異なるインスタンスタイプのものであり得るいくつかの稼働中のインスタンス(本明細書において、「稼働中のインスタンス」とも称される)を含む。インスタンスタイプは、インスタンスによって提供される能力によるタイプである。よって、例えば、第1のインスタンスタイプは、2つのCPU、4GBのメモリ、および1ギガビットのネットワークインターフェースを有するタイプ「A」とすることができる。インスタンスプール108は、既に稼働中で、利用可能である数十の、数百の、または数千のタイプ「A」の稼働中のインスタンスを有することができる。第2のインスタンスタイプは、4つのCPU、8GBのメモリ、および1ギガビットのネットワークインターフェースを有するタイプ「B」とすることができる。インスタンスプール108はまた、既に稼働中で、利用可能である数十の、数百の、または数千のタイプ「B」の稼働中のインスタンスも有することができる。
【0026】
コンテナ管理サービス104のインスタンスセレクタプログラム118は、インスタンスプール108の利用可能なインスタンス110からインスタンス106を選択する。利用可能なインスタンス110は、コンピューティングリソースサービスプロバイダの顧客のコンテナをホストするために利用可能なインスタンスである。利用可能なインスタンス110は、そこで稼働中のいかなるコンテナも有しない指定されたタイプのインスタンスであるか、(シングルテナント環境で)そこで稼働中の他の顧客からのいかなるコンテナも有さず、かつ、タスクのためのコンテナをホストするために利用可能な十分なリソースを有するインスタンスであるか、または、(マルチテナント環境で)そこで稼働中の他の顧客からのコンテナを有することができるが、タスクのためのコンテナをホストするために利用可能な十分なリソースを有するインスタンスである。インスタンスが顧客に割り当てられると、インスタンスは、インスタンスプール108内の利用可能なインスタンス110から削除することができる。例えばインスタンスが終了したときに、インスタンスが顧客によって解放されると、インスタンスは、インスタンスプール108内の利用可能なインスタンス110に返すことができる。上で説明したように、部分的に割り当てられるインスタンスもまた、利用可能なインスタンス110であり得る。
【0027】
コンテナ管理サービス104は、本明細書で説明されるように、タスク定義102に基づいて、インスタンスプール108の利用可能なインスタンス110からインスタンス106を選択する。例えば、タスク定義102は、リソースを定義する一組のパラメータを指定することができ、該リソースは、インスタンス上のコンテナをインスタンス化し、タスク定義(例えば、CPUの数、メモリの量、ネットワーク帯域幅の量、専用ハードウェアの存在、その他)において指定されるタスクを行うために使用することができる。
【0028】
一実施形態において、コンテナ管理サービス104は、タスク定義を分析することができ、また、この分析の結果として、リソースを定義するその一組のパラメータが、コンテナをインスタンス化するためにプロビジョニング不足となるインスタンスタイプの選択をもたらすと判定することができる。例えば、タスク定義102は、タスクのための不十分な量のメモリに指定すること、またはタスクのためのネットワークインターフェースを指定しないことがあり得る。そのような一実施形態において、コンテナ管理サービス104は、第2の一組のパラメータに基づいて、インスタンスプール108の利用可能なインスタンス110からインスタンス106を選択することができ、第2の一組のパラメータのうちの1つ以上は、タスク定義102のパラメータのうちの1つ以上とは異なる(例えば、タスク定義102に指定されたインスタンスタイプよりも多くのリソースおよび/または能力を有する、改善されたインスタンスタイプの選択をもたらす)。
【0029】
例えば、タスク定義102は、タスクのために2GBのメモリが必要であると指定する場合があり、コンテナ管理サービス104は、タスクを分析し、タスクのために4GBのメモリが必要であると判定する場合がある。この例において、コンテナ管理サービス104は、一組のパラメータをタスク記述内に含むが4GBのパラメータと置換された2GBのパラメータを有する第2の一組のパラメータに基づいて、インスタンスプール108の利用可能なインスタンス110からインスタンス106を選択することができる。タスク定義102に指定されたパラメータとは異なり得るパラメータの他の例としては、追加的なCPU、異なるCPUタイプ、より高いCPUのパーセンテージ、より多いネットワーク帯域幅、より短い待ち時間、追加的な記憶量、異なる記憶タイプ、または専用ハードウェアが挙げられるが、これらに限定されない。
【0030】
一実施形態において、コンテナ管理サービス104は、タスク定義を分析することができ、また、この分析の結果として、リソースを定義するその一組のパラメータが、コンテナをインスタンス化するためにプロビジョニング過剰となるインスタンスタイプの選択をもたらすと判定することができる。そのような一実施形態において、コンテナ管理サービス104は、第2の一組のパラメータに基づいて、インスタンスプール108の利用可能なインスタンス110からインスタンス106を選択することができ、第2の一組のパラメータのうちの1つ以上は、タスク定義102のパラメータのうちの1つ以上とは異なる(例えば、タスク定義102に指定されたインスタンスタイプよりも少ないリソースおよび/または能力を有するインスタンスタイプの選択をもたらす)。例えば、タスク定義102は、タスクのために4GBのメモリが必要であると指定する場合があり、コンテナ管理サービス104は、タスクを分析し、タスクのために2GBのメモリが必要であると判定する場合がある。この例において、コンテナ管理サービス104は、一組のパラメータをタスク記述内に含むが2GBのパラメータと置換された4GBのパラメータを有する第2の一組のパラメータに基づいて、インスタンスプール108の利用可能なインスタンス110からインスタンス106を選択することができる。上で説明した例示的なパラメータはまた、この実施形態においても使用することができる(例えば、より少ないCPU、異なるCPUタイプ、より少ないCPUパーセンテージ、より少ないネットワーク帯域幅、より長い待ち時間、より少ない記憶量、異なる記憶タイプ、専用ハードウェアの除去)。
【0031】
選択されたインスタンスが識別されると、本明細書で説明されるように、112で、コンテナ管理サービス104は、タスク定義102に基づいて、インスタンスを顧客に割り当てることができ、116で、コンテナ管理サービスのタスクランチャ構成要素120は、割り当てられたインスタンス114上のタスクを起動すること(すなわち、タスクのためのコンテナを起動すること)ができる。
【0032】
図2は、図1に関連して、および一実施形態に従って説明されるように、コンテナ管理サービスを使用してコンテナインスタンスをインスタンス化し、プロビジョニングする、例示的な環境200を例示する。図2に例示される例示的な環境200において、ユーザ202は、206で、クライアントコンピューティングデバイス204を使用して、コンピューティングリソースサービスプロバイダ210によって提供される様々なサービスに接続することができる。ユーザ202は、クライアントコンピューティングデバイス204を使用して、206で、本明細書で説明されるネットワーク等のネットワーク208を通じて、コンピューティングリソースサービスプロバイダ210に接続することができる。コンピューティングリソースサービスプロバイダ210は、1つ以上のアプリケーション、プロセス、サービス、仮想マシン、および/もしくは他のそのようなコンピュータシステムエンティティを実行することができる、分散された環境、仮想化された環境、ならびに/またはデータセンター環境を提供することができる。ユーザ202は、人であってもよく、または1つ以上のリモートコンピュータシステムで稼働するプロセスであってもよく、またはいくつかの他のコンピュータシステムエンティティ、ユーザ、もしくはプロセスであってもよい。
【0033】
ユーザ202からコンピューティングリソースサービスプロバイダ210へのコマンドは、外部のコンピュータシステムによって、またはコンピューティングリソースサービスプロバイダ環境内によって生じ得る。206でコンピューティングリソースサービスプロバイダ210に接続するコマンドは、ユーザ202の直接的な介入を伴わずに、コンピューティングリソースサービスプロバイダ210および/またはその中の環境において動作するサービスに送信することができる(すなわち、206でコンピューティングリソースサービスプロバイダ210に接続するコマンドは、1つ以上のイベントに応答して自動的に生成することができる)。ユーザ202は、コンピューティングリソースサービスプロバイダ210の顧客と関連付けられた特権ユーザとすることができる。ユーザ202はまた、コンピューティングリソースサービスプロバイダ210と関連付けられた特権ユーザとすることもできる。
【0034】
コンピューティングリソースサービスプロバイダ210は、1つ以上のホストマシンへのアクセスを提供することができ、その上で動作させることができるように1つ以上の仮想マシンインスタンスへのアクセスを提供することができ、またはその中の環境内の1つ以上のサービスへのアクセスを提供することができる。コンピューティングリソースサービスプロバイダ210によって提供される1つ以上のサービスはまた、コンピューティングリソースサービスプロバイダ210の環境内で動作するホストマシン上で動作させることができるように、1つ以上の仮想マシンインスタンスとして実装すること、および/またはそれを利用することもできる。例えば、コンピューティングリソースサービスプロバイダ210は、様々なサービスを、ユーザ202が挙げられるが、これに限定されないユーザに提供することができ、ユーザは、ウェブサービスインターフェイスまたは任意の他のタイプのインターフェース等のインターフェースを介して、コンピューティングリソースサービスプロバイダ210と通信することができる。図2に例示される例示的な環境は、コンピューティングリソースサービスプロバイダ210に対する単一の接続またはインターフェースを示すが、その中の環境内で動作するサービスの各々は、それ自体のインターフェースを有することができ、また一般に、サービスのサブセットは、単一のインターフェースに加えて、またはその代わりに、対応するインターフェースを有することができる。
【0035】
コンピューティングリソースサービスプロバイダ210の環境内で動作するあるタイプのサービスの一例において、仮想コンピュータシステムサービスは、ユーザ202等の顧客に代わって仮想マシンインスタンスをインスタンス化するように構成された一群のコンピューティングリソースとすることができる。顧客は、(適切に構成され、認証されたAPI要求を介して)仮想コンピュータシステムサービスと相互作用して、コンピューティングリソースサービスプロバイダ210によってホストされ、動作される物理コンピューティングデバイス上でインスタンス化される仮想マシンインスタンスをプロビジョニングし、動作させることができる。仮想コンピュータシステムサービスは、インスタンスをインスタンス化し、インスタンスを構成し、リソースを提供してインスタンスを稼働させることによって、インスタンスをプロビジョニングすることができる。仮想コンピュータシステムサービスはまた、仮想マシンインスタンスを管理して、例えば、仮想マシンインスタンスをインスタンス化するように、および/または仮想マシンインスタンスのマイグレーションを管理するように構成することもできる。仮想マシンインスタンスは、種々の目的で、ウェブサイトをサポートするサーバとして動作させるために、ビジネスアプリケーションを動作させるために、または、一般に、顧客のための計算能力としての役割を果たすために使用することができる。仮想マシンインスタンスのための他のアプリケーションは、データベースアプリケーション、電子商取引アプリケーション、ビジネスアプリケーション、および/または他のアプリケーションをサポートするためのものとすることができる。
【0036】
上で説明したように、最初に、コンピューティングリソースサービスプロバイダ210のコンテナ管理サービス212は、タスク定義214を受信することができ、該タスク定義は、図2に例示される実施例において、206でネットワーク208を通じてコンピューティングリソースサービスプロバイダ210に接続するために使用されるクライアントコンピューティングデバイス204を使用するユーザ202によって提供される。コンテナ管理サービス212は、最初に、216で、本明細書で説明されるようにタスク定義を分析することができ、また、その分析の結果として、タスク定義214に少なくとも部分的に基づいて、218で、タスクを実行するために使用するインスタンスを選択することができる。コンテナ管理サービス212が選択するインスタンスは、インスタンスプール224内にあるインスタンスである。インスタンスプール224は、上で説明したように、いくつかの異なるインスタンスタイプのいくつかの利用可能なインスタンス226を含む。
【0037】
次いで、選択されたインスタンスが、コンテナ管理サービス212によってタスクに割り当てられる(本明細書において、ユーザ202に割り当てられるとも称される)。次いで、コンテナ管理サービス212は、割り当てられたインスタンス228を使用して、タスク220を起動する(すなわち、タスク定義214のコンテナを、割り当てられたインスタンス228上にインスタンス化する)。最後に、コンテナ管理サービス212は、222で、状況が変化したときにユーザ202を更新することを含む、タスクの状態をユーザ202に通知することができる。一実施形態において、通知は、例えば、ユニフォームリソースロケータ(「URI」)および/またはウェブインターフェースを使用して、タスクおよび/またはコンテナへのアクセスを含む。
【0038】
図3は、図1に関連して、および一実施形態に従って説明されるように、コンテナ管理サービスを使用してコンテナインスタンスを選択し、インスタンス化するための例示的なプロセス300を例示する。図1に関連して説明されるコンテナ管理サービス104等のコンテナ管理サービスは、図3に例示される例示的なプロセス300を行うことができる。コンテナ管理サービスは、302で、上で説明したように、最初に、タスク定義を受信することができ、次いで、304で、タスクを実行するために必要とされるインスタンスのタイプおよび数を決定することができる。
【0039】
コンテナ管理サービスは、304で、例えば、タスク定義から要件を読み出し、それらの要件を満たすインスタンスタイプを探し、そのインスタンスタイプにマッチするインスタンスを選択することによって、タスクを実行するために必要とされるインスタンスのタイプおよび数を決定することができる。2つ以上のインスタンスタイプが要件にマッチした場合、コンテナ管理サービスは、例えば最も安価なインスタンスまたは最低能力を有するがそれでも要件を満たすインスタンス等のインスタンスタイプの1つ以上のインスタンスランク付け基準に基づいて、または選好を示す顧客プロファイル等のいくつかの他の順位付け基準に従って、インスタンスタイプを選択することができる。コンテナ管理サービスはまた、304で、要件によって利用可能なインスタンスタイプをフィルタリングすること、例えば全てのインスタンスタイプから開始すること、および要件を満たさないインスタンスのタイプを排除することによって、タスクを実行するために必要とされるインスタンスのタイプおよび数も決定することができる。次いで、要件を満たすインスタンスタイプを、1つ以上のインスタンスランク付け基準に従ってランク付けすることができる。
【0040】
例えば、最良に適合するアルゴリズムを使用して、タスク定義の特性とインスタンスタイプの特性とをマッチさせることができる。アルゴリズムは、コンテナ管理サービスがタスク定義の全ての要件を満たす(すなわち、十分なメモリ、記憶装置、ネットワーキング、CPU、その他を有する)コンテナインスタンスを識別することを試みるように調整することができる。一実施形態では、過剰なリソースの量も計算し、それを使用してインスタンスを選択することができる。例えば、コンテナ管理サービスは、各インスタンスタイプの能力を定量化することができ、タスク定義に明確にまたは暗示的に定義された各能力は、2つの間の差を計算することができ、また、領域を計算することができる。より小さい領域は、インスタンスタイプとタスクの要件とのより良好なマッチを意味する。コンテナ管理サービスは、次いで、要件を満たし、かつ最もマッチするインスタンスタイプを選択するようにプログラムすることができ、または、他の構成において、コンテナ管理サービスは、最良に適合するもの以外の1つ以上のタイプの能力を有するインスタンスタイプを選択するようにプログラムすることができる。機械学習技術、顧客からのフィードバック、またはサービスプロバイダによる実験を使用して、選択プロセスを経時的に調整して、特定の種類のタスクに対する選択操作をどのように行うかを調整することができる。例えば、同じまたは類似するタスクの稼働を通じてタスク定義からタスクのタイプを推定することができる場合に、特定の種類のインスタンスタイプに加重することができる。
【0041】
タスクを実行するために必要とされるインスタンスのタイプおよび数は、上で説明したように、タスク定義と関連付けられたインスタンスの一組の性能仕様から決定することができる。インスタンスの一組の性能仕様は、上で説明したように、タスク定義から取得された一組のパラメータを分析することによって取得することができる。例えば、タスク定義は、8つのコンテナを指定する場合があり、各コンテナは、実行するために2つのCPUの50%、および2GBのメモリを要求する場合がある。タスクのこの一組のパラメータから、タスク定義は、8つのコンテナをインスタンス化するために8つのCPUおよび16GBのメモリを提供することができるインスタンスを要求する。この一組のリソースは、少なくとも8つのCPUおよび16GBのメモリを有する単一のインスタンスによって、または各々少なくとも4つのCPUおよび8GBのメモリを有する2つのインスタンスによって、または各々少なくとも2つのCPUおよび4GBのメモリを有する4つのインスタンスによって、またはインスタンスの組み合わせ(例えば、4つのCPUおよび8GBのメモリを有する1つのインスタンス、ならびに2つのCPUおよび4GBのメモリを有する2つのインスタンス)によって提供することができる。
【0042】
インスタンスの一組の性能仕様は、タスク定義を分析することによって取得することができる、インスタンスのCPU仕様(例えば、インスタンスを動作させるために2つのCPUの50%を要求する)を含むことができる。インスタンスの一組の性能仕様はまた、タスク定義を分析することによって取得することができる、インスタンスのメモリ仕様(例えば、インスタンスを実行するために2GBのメモリを要求する)も含むことができる。インスタンスの一組の性能仕様はまた、タスク定義を分析することによって取得することができる、インスタンスのネットワーク帯域幅仕様(例えば、インスタンスを実行するためのギガビットネットワーク)も含むことができる。
【0043】
インスタンスの一組の性能仕様はまた、インスタンスの1つ以上の要件も含むことができ、該要件は、追加的なハードウェアが挙げられるが、これに限定されない、インスタンスの1つ以上の追加的なハードウェア能力を指定することができる。例えば、インスタンスの一組の性能仕様は、フィールドプログラマブルゲートアレイ要件であるハードウェア要件を含むことができる。フィールドプログラマブルゲートアレイ要件は、フィールドプログラマブルゲートアレイをインスタンスのハードウェア仕様の一部とする、およびフィールドプログラマブルゲートアレイをタスクのためにインスタンス上でインスタンス化されるコンテナに対して利用可能にする、といったハードウェア要件である。別の例において、インスタンスの一組の性能仕様は、特定用途向け集積回路要件であるハードウェア要件を含むことができ、特定用途向け集積回路をタスクのためのインスタンス上でインスタンス化されるコンテナに利用可能にするように指定する。さらに別の例において、インスタンスの一組の性能仕様は、ハードウェアセキュリティモジュール要件、またはグラフィックス処理ユニット要件、またはメモリ要件(例えば、フラッシュメモリ)、またはいくつかの他のタイプの専用ハードウェアのハードウェア要件である、ハードウェア要件を含むことができる。想定され得るように、本明細書で説明されるインスタンスの要件の例は、単に例示的な実施例に過ぎず、よって、インスタンスの他のタイプの要件が本開示の範囲の範囲内にあるとみなすことができる。
【0044】
次に、コンテナ管理サービスは、306で、インスタンスプールからインスタンスのタイプおよび数を要求することができる。コンテナ管理サービスが、308で、要求されたインスタンスが利用可能であると判定した場合、全て本明細書で詳細に説明されるように、コンテナ管理サービスは、316で、インスタンスをプロビジョニングし、318で、タスクをインスタンス上でインスタンス化し、320で、コンテナをインスタンス上でインスタンス化し、322で、タスクアクセスを顧客に提供する。
【0045】
コンテナ管理サービスが、308で、要求されたインスタンスが利用可能であると判定しなかった場合、コンテナ管理サービスは、310で、例えば、追加的なインスタンスタイプを通して繰り返すことによって、およびそうした追加的なインスタンスタイプが、追加的なインスタンスタイプのインスタンスが十分なリソースを有するかどうかを判定するかどうかを判定することによって、代替のインスタンスタイプの選択を試行することができる。例えば、代替のインスタンスタイプは、代替のインスタンスタイプがタスクと関連付けられたコンテナを稼働させるのに十分なリソースを有するが、代替のインスタンスタイプが異なって構成された場合に(すなわち、代替のインスタンスタイプが、コンテナをインスタンス化するために指定された一組のパラメータを満たす一組の性能特性を有する場合に)選択することができる。代替のインスタンスタイプの1つの例は、元々の要求されたインスタンスタイプよりも大きい能力(例えば、より多いメモリ、はるかに強力なCPU、より大きいネットワーク帯域幅、または追加的なリソース)を有するインスタンスである。コンテナ管理サービスが、312で、代替のインスタンスタイプが利用可能であると判定した場合、全て本明細書で詳細に説明されるように、コンテナ管理サービスは、316で、インスタンスをプロビジョニングし、318で、タスクをインスタンス上でインスタンス化し、320で、コンテナをインスタンス上でインスタンス化し、322で、タスクアクセスを顧客に提供する。反対に、コンテナ管理サービスが、312で、代替のインスタンスタイプが利用可能であると判定しなかった場合、コンテナ管理サービスは、314で、タスクを稼働させるためのいかなる利用可能なインスタンスも存在しないと報告することが挙げられるが、これに限定されない、利用不能に関連する1つ以上の軽減動作を行うことができる。一実施形態において、コンテナ管理サービスは、要求されたタイプの追加的なインスタンスをインスタンス化し、そうした追加的なインスタンスをインスタンスプールに加え、そうした新しくインスタンス化された追加的なインスタンスを使用してタスクを実行することによって、利用不能に関連する1つ以上の軽減動作を行うことができる。
【0046】
図4は、図1に関連して、および一実施形態に従って説明されるように、コンテナインスタンスが互いに隔離された例示的な環境400を例示する。図4に例示される実施例において、コンピューティングリソースサービスプロバイダの顧客402は、上で説明したように、タスク定義を送信しており、また、タスク定義によって指定されたタスクを稼働させている複数のインスタンスが提供されている。上で説明したように、インスタンスのグループまたはクラスタであるインスタンスグループ406には、4つのインスタンスがあり、インスタンスの隔離を提供する。インスタンスグループ406のインスタンス404は、タスク410へのネットワークインターフェース408を有する。ネットワークインターフェース408は、タスク410を実行するためにインスタンス404がプロビジョニングされたときに(すなわち、サービスがインスタンスをプロビジョニングするときに)確立することができる。ネットワークインターフェース408は、顧客402が、(例えば、タスクの状態を監視するために、および/または結果を受信するために)タスクと通信するために、タスクとコンピューティングリソースサービスプロバイダの1つ以上のサービスとの間で通信するために、またはインスタンスを顧客の仮想ネットワークに接続するために使用することができる。一実施形態において、顧客の仮想ネットワークは、仮想プライベートネットワークであり、コンピューティングリソースサービスプロバイダによって顧客に提供され、コンピューティングリソースサービスプロバイダの他の顧客の仮想プライベートネットワークから隔離される。タスク410は、上で説明したように、タスク410がインスタンス404上で開始されたときにタスク410でインスタンス化された、1つ以上のコンテナ412を含む。
【0047】
図4に例示される実施例において、インスタンス404は、その上で稼働するエージェント414を有し、例えば、タスク410の状態をコンテナ管理サービスに報告する。コンテナ管理サービス416はまた、エージェント414を使用して、インスタンス404を監視してインスタンスの1つ以上のヘルスメトリックを収集すること(すなわち、潜在的なハードウェアおよび/またはソフトウェアの問題を決定すること)、その上で稼働するインスタンス404またはソフトウェアを更新すること、顧客402と通信すること、またはインスタンスの機能に関連する他のサービスを行うおよび/もしくは提供することもできる。一実施形態において、エージェント414は、その上で稼働するインスタンスおよび/またはタスクを監視して、タスクの稼働と関連付けられたコストを決定することができる。例えば、エージェント414は、インスタンスのCPUおよびメモリを監視すること、およびタスクの実行を通じて、どのリソースが、およびどのくらいのそうしたリソース量が使用されているのかを決定することができる。例えば、エージェント414は、CPUおよびメモリを監視して、タスクのリソース使用状況メトリック(例えば、どのくらいの量のメモリおよびCPUがタスクによって使用されているか)を決定することができる。次いで、これらのリソース使用状況メトリックを使用して、コンテナまたはタスクと関連付けられたリソースコストを決定することができる。次いで、タスクに使用される実際のリソースに基づいて、このリソースコストを顧客に割り当てることができる。したがって、より多くのCPU時間またはより多くのメモリを要求するタスクは、より少ないCPU時間またはより少ないメモリを要求するタスクよりも実行するためのコストが少なくなり得る。
【0048】
顧客はまた、プライシングモデルをタスク定義に指定することもでき、よって、例えば、顧客は、完了すべき特定の時間、「超えるべきではない」値、タスクの優先度(例えば、低優先度のタスクは、オフタイム中に実行され得る)、およびその他を指定することができる。例えば、コンピューティングリソースサービスプロバイダ環境によって提供される追加的なリソースは、リソースと関連付けられたコスト(例えば、CPU時間の1秒あたりのコスト、使用されるメモリの1メガバイト(「MB」)あたりのコスト、またはネットワーキング帯域幅を使用するためのコスト)を有することができる。コンピューティングリソースサービスプロバイダは、顧客についてそのようなリソース使用状況を監視することができ、さらに、例えばエージェントをインスタンスに使用してリソース使用状況を監視することによって、コンテナインスタンスをインスタンス化してコンテナをホストするために、顧客に提供されたリソースを監視することもできる。顧客は、コンテナをインスタンス化するために任意のリソースを使用することができるように指定するプライシングモデルをタスク定義に指定することができるが、そのようなリソースが、固定コスト、または1時間あたりのコストを超えないこと、またはいくつかの他のコスト仕様に従うことを前提とする。同様に、顧客は、タスクを遅延させて、例えば次の数日以内に稼働させて、コンピューティングリソースサービスプロバイダのオフピークの時間中に存在し得る、より少ないリソースコストを利用するように指定することができる。上で説明したように、タスク410はまた、リソースの要求を指定すること、および/またはコンピューティングリソースサービスプロバイダ環境内で動作する他のサービス418にリソースを提供することもできる。例えば、タスクは、ネットワークインターフェース408を介して、データベースサービスと、またはブロック記憶サービスと、またはいくつかの他のサービスと通信し、そうした他のサービス418からリソースを要求することができる。これらの他のサービス418および/またはこれらの他のサービス418のコスト制限もまた、タスク410のタスク定義に指定することができる。
【0049】
図4に例示される実施例において、インスタンスグループ406のインスタンスは、互いに隔離される。したがって、インスタンス404は、顧客402によってインスタンス422も関連付けられている場合であっても、インスタンスグループ内の別のインスタンス422との通信420を有しない。同様に、インスタンス422は、インスタンスグループ406内のインスタンス426とのいかなる通信428も有さず、また、インスタンス426もインスタンス404とのいかなる通信424も有しない。インスタンスの各々は、あたかもそれがインスタンスグループ406内で単独であるかのように動作し、タスクと他のサービス418との間の通信、エージェント414とコンテナ管理サービス416との間の通信、およびタスク410とネットワークインターフェース408を使用する顧客402との間の通信だけを維持する。
【0050】
図5は、図1に関連して、および一実施形態に従って説明されるように、コンテナインスタンス上のコンテナが互いに隔離された例示的な環境500を例示する。図5に例示される実施例において、インスタンス内の各タスクは、他のタスクから隔離される。インスタンス502は、タスク504と、タスク510とを有する。タスク504は、上で説明したように、コンテナ516を含む。図5には例示されていないが、タスク504は、上で説明したように、ネットワークインターフェース508を介して他のサービスと通信することができる。タスク504へのアクセスは、全て上で説明したように、ネットワークインターフェース508を使用して顧客506に提供される。同様に、上で説明したように、タスク510は、コンテナ518を含み、さらに、他のサービスと通信することもできる。同じく全て上で説明したように、タスク510へのアクセスは、ネットワークインターフェース512を使用して顧客514に提供される。
【0051】
タスク504およびタスク510がどちらもインスタンス502上で稼働している場合であっても、ならびにどちらも、タスクおよびインスタンス502に関する状況の更新をコンテナ管理サービス524に提供するエージェント522によって監視されている場合であっても、タスク504は、タスク510と通信526しない。タスク504とタスク510との間のこの隔離(すなわち、通信の不足)は、顧客506および顧客514は、同じエンティティであるシングルテナント環境であっても存在し得る。一実施形態において、コンテナ管理サービス524は、タスク間でこの隔離を実施し、コンテナ間の通信だけを可能にする。タスク間のこの隔離は、コンテナ管理サービス524によって実施して、タスクが改竄されるのを、または別様には他のタスクが改変されるのを防止することができる。別の実施形態において、コンテナ管理サービス524は、例えばコンテナが改竄されるのを、または別様には他のコンテナが改変されるのを防止するように、コンテナ間で隔離を実施する。
【0052】
図6は、図1に関連して、および一実施形態に従って説明されるように、コンテナインスタンスをインスタンス化し、プロビジョニングするための例示的なプロセス600を例示する。図1に関連して説明されるコンテナ管理サービス104等のコンテナ管理サービスは、図6に例示される例示的なプロセス600を行うことができる。上で説明したように、最初に、コンテナ管理サービスは、602で、インスタンスプールからインスタンスを選択することができる。次に、コンテナ管理サービスは、604で、インスタンスを顧客に割り当てることができる(すなわち、タスク定義に従ってタスクを実行するためのインスタンスを顧客に割り当てることができる)。次に、コンテナ管理サービスは、606で、タスクフレームワークを作成することができる。本明細書で使用するとき、「タスクフレームワーク」は、タスク(および関連付けられたコンテナ)の実行環境である。タスクフレームワークは、タスクと関連付けられたネットワークインターフェースを維持し、タスクと関連付けられた任意の他のリソースを維持し、それらがインスタンス化されるときにタスク内のコンテナを追跡し、コンテナ間の通信を維持し、上で説明したサービスとの通信を維持し、また、タスクを監視するためのエージェントをインスタンスと接続する。
【0053】
次いで、コンテナ管理サービスは、608で、例えばネットワークインターフェースをインスタンス化し、そのネットワークインターフェースと関連付けられたリソース(例えば、ハードウェアインターフェース、および/またはハードウェアインターフェースの仮想化、ネットワークインターフェースと関連付けられたアドレス、ソフトウェア、および/または他のリソース)を割り当てることによって、ネットワークインターフェースをタスクフレームワークにアタッチすることができる。ネットワークインターフェースは、例えばコンテナイメージをタスクフレームワークに提供することができるように、タスクインスタンス化の初期の時点で、タスクフレームワークにアタッチすることができる。ネットワークインターフェースはまた、顧客がタスクインスタンス化を監視することができるように、タスクインスタンス化の初期の時点で、タスクフレームワークにアタッチすることもできる。一実施形態において、ネットワークインターフェースは、タスクインスタンス化の後の時点で、例えばコンテナインスタンスを実行し始めるときに、タスクフレームワークにアタッチされる。
【0054】
次いで、コンテナ管理サービスは、610で、スクラッチボリューム(本明細書において、「一時的なボリューム」とも称される)をタスクフレームワークにアタッチするべきかどうかを判定することができる。本明細書で使用するとき、スクラッチボリュームは、タスク(およびタスクと関連付けられたコンテナ)を使用して一時データを記憶することができる、一時ボリュームである。スクラッチボリュームは、典型的に、タスクおよび関連付けられたコンテナのライフタイムを超えて持続しないという点で一時的である。図6には例示されていないが、コンテナ管理サービスはまた、追加的なボリューム(すなわち、追加的な記憶デバイス)をタスクフレームワークまたはインスタンスにアタッチするべきかどうかを判定することもできる。例えば、コンテナ管理サービスは、例えば記憶サービスからの共有ボリュームを、コンテナインスタンス間、タスク間、タスクフレームワーク間、またはコンテナ間で共有するように要求することができ、そのような共有ボリュームは、インスタンスおよび/またはコンテナにアタッチされる。コンテナ管理サービスはまた、例えばブロック記憶サービスからの、ブロック記憶ボリュームを、コンテナインスタンス間、タスクフレームワーク間、またはコンテナ間で共有し、かつ、インスタンスおよび/またはコンテナにアタッチするように要求することもでき、そのようなブロック記憶ボリュームは、インスタンスおよび/またはコンテナにアタッチされる。
【0055】
コンテナ管理サービスが、610で、スクラッチボリュームをタスクフレームワークにアタッチするべきであると判定した場合、コンテナ管理サービスは、612で、スクラッチボリュームをタスクフレームワークにアタッチすることができる。次いで、コンテナ管理サービスは、614で、インスタンスをプロビジョニングするための、タスクフレームワークを提供するための、および/またはコンピューティングリソースサービスプロバイダのサービスへのアクセスと関連付けられたコンテナをプロビジョニングするための任意の動作を完了することができる。一実施形態において、コンテナ管理サービスは、614で、例えば、インスタンスをコンピューティングリソースサービスプロバイダの1つ以上のセキュリティグループに登録することによって、ネットワークインターフェースの登録およびプロビジョニングを完了することによって、またはインスタンス上のコンテナをコンテナ管理サービスに接続することによって、インスタンスをプロビジョニングするための任意の動作を完了することができる。反対に、コンテナ管理サービスが、610で、スクラッチボリュームをタスクフレームワークにアタッチするべきであると判定しなかった場合、コンテナ管理サービスは、上で説明したように、614で、インスタンスをプロビジョニングするための、タスクフレームワークを提供するための、および/またはコンピューティングリソースサービスプロバイダのサービスへのアクセスと関連付けられたコンテナをプロビジョニングするための任意の動作を完了することができる。
【0056】
次いで、コンテナ管理サービスは、上で説明したように、616で、例えば、タスクおよび/または関連付けられたコンテナインスタンスを監視することができるように、タスクフレームワークをインスタンスエージェントに登録することができる。次に、コンテナ管理サービスは、618で、コンテナをコンテナリポジトリからダウンロードするかどうか、またはコンテナイメージボリュームをタスクフレームワークにアタッチするかどうかを判定することができる。コンテナ管理サービスが、618で、コンテナリポジトリからコンテナをダウンロードすると判定した場合、コンテナ管理サービスは、次に、コンテナイメージリポジトリを位置指定することができ、620で、下で説明されるように、コンテナイメージリポジトリからコンテナイメージをダウンロードすることができ、また、624で、例えばインスタンスのロケータを、および/またはインスタンス上のタスク(複数可)のネットワークインターフェースへのアクセスを顧客に提供することによって、タスクへのアクセスを顧客に提供することができる。反対に、コンテナ管理サービスが、618で、コンテナリポジトリからコンテナをダウンロードすると判定しなかった場合、コンテナ管理サービスは、コンテナイメージボリュームを生成することができ、622で、下で説明されるように、コンテナイメージボリュームをタスクフレームワークにアタッチすることができ、また、624で、タスクへのアクセスを顧客に提供することができる。
【0057】
図7は、図1に関連して、および一実施形態に従って説明されるように、好適なコンテナインスタンスを選択するための例示的なプロセス700を例示する。図1に関連して説明されるコンテナ管理サービス104等のコンテナ管理サービスは、図7に例示される例示的なプロセス700を行うことができる。図7に例示される例示的なプロセスにおいて、コンテナ管理サービスは、最初に、702で、一組のインスタンスタイプから1つのインスタンスタイプを選択することができる。次に、コンテナ管理サービスは、上で説明したように、704で、選択されたインスタンスタイプが、タスク定義に指定された所望のインスタンスタイプにマッチするかどうかを判定することができる。コンテナ管理サービスは、704で、例えば選択されたインスタンスタイプが、タスク定義に指定されたコンテナをホストするための十分なリソースを有する場合に、選択されたインスタンスタイプが、タスク定義に指定された所望のインスタンスタイプにマッチすると判定することができる。
【0058】
選択されたインスタンスタイプが、704で、タスク定義に指定された所望のインスタンスタイプにマッチすると判定しなかった場合、コンテナ管理サービスは、706で、評価するための利用可能な次のタイプが存在するかどうかを判定することができる。コンテナ管理サービスが、706で、評価するための利用可能な次のタイプが存在すると判定した場合、コンテナ管理サービスは、702で、次のインスタンスタイプを選択し、また、704で、そのタイプがマッチするかどうかを判定することができる。コンテナ管理サービスが、706で、評価するための利用可能な次のタイプが存在すると判定しなかった場合、コンテナ管理サービスは、708で、いくつかの実施形態において、デフォルトのインスタンスタイプを使用して、タスク定義のタスクのコンテナを実行することができる。コンテナ管理サービスが、708で、デフォルトのインスタンスタイプを使用して、タスク定義のタスクのコンテナを実行することができると判定した場合、コンテナ管理サービスは、712で、そのデフォルトのインスタンスタイプが利用可能である(すなわち、デフォルトのインスタンスタイプが、稼働中であり、インスタンスプールで利用可能である)と判定することができる。同様に、選択されたインスタンスタイプが、704で、タスク定義に指定された所望のインスタンスタイプにマッチすると判定した場合、コンテナ管理サービスは、712で、そのインスタンスタイプが利用可能である(すなわち、インスタンスタイプのインスタンスが、稼働中であり、インスタンスプールで利用可能である)と判定することができる。
【0059】
コンテナ管理サービスが、708で、デフォルトのインスタンスタイプを使用して、タスク定義のタスクのコンテナを実行することができると判定しなかった場合、コンテナ管理サービスは、710で、図3に関連して上で説明したように、1つ以上の利用不能緩和動作を行うことができる。
【0060】
コンテナ管理サービスが、712で、要求されたタイプのインスタンスが利用可能である(すなわち、インスタンスタイプのインスタンスが、稼働中であり、インスタンスプールで利用可能である)と判定した場合、コンテナ管理サービスは、上で説明したように、714で、インスタンスを選択し、716で、インスタンスをプロビジョニングし、また、718で、タスクへのアクセスを提供することができる。反対に、コンテナ管理サービスが、712で、要求されたタイプのインスタンスが利用可能であると判定しなかった(すなわち、稼働中であり、インスタンスプールで利用可能であるいかなるインスタンスも存在しない)場合、コンテナ管理サービスは、上で説明したように、720で、タスクと関連付けられたコンテナをホストするために選択することができる任意の同等のインスタンスタイプが存在するかどうかを判定することができる。
【0061】
コンテナ管理サービスが、720で、タスクと関連付けられたコンテナをホストするために選択することができる任意の同等のインスタンスタイプが存在すると判定しなかった場合、コンテナ管理サービスは、710で、上で説明したものを含む、1つ以上の利用不能の軽減動作を行うことができる。
【0062】
反対に、コンテナ管理サービスが、720で、タスクと関連付けられたコンテナをホストするために選択することができる同等のインスタンスタイプが存在すると判定した場合、コンテナ管理サービスは、722で、同等のインスタンスタイプが利用可能である(すなわち、同等のインスタンスタイプのインスタンスが稼働中であり、インスタンスプールで利用可能である)かどうかを判定することができる。コンテナ管理サービスが、722で、同等のインスタンスタイプが利用可能である(すなわち、同等のインスタンスタイプのインスタンスが稼働中であり、インスタンスプールで利用可能である)と判定した場合、コンテナ管理サービスは、上で説明したように、714で、インスタンスを選択し、716で、インスタンスをプロビジョニングし、また、718で、タスクへのアクセスを提供することができる。反対に、コンテナ管理サービスが、722で、要求されたタイプのインスタンスが利用可能であると判定しなかった(すなわち、稼働中であり、インスタンスプールで利用可能であるいかなる同等のインスタンスタイプのインスタンスも存在しない)と判定した場合、コンテナ管理サービスは、724で、例えばインスタンスプール内のインスタンスタイプの1つ以上の新しいインスタンスをインスタンス化することによって、追加的なインスタンスを提供するためにスケールアップするかどうかを判定することができる。例えば、インスタンスプール内にいかなるタイプ「A」の利用可能なインスタンスも存在しないので、コンテナ管理サービスが、例えばタイプ「A」の任意のインスタンスを取得し、プロビジョニングすることができなかった場合、コンテナ管理サービスは、インスタンスプール内のタイプ「A」の1つ以上の新しいインスタンスをインスタンス化することができる。
【0063】
追加的なインスタンスは、タスク定義によって決定されるように、コンテナをインスタンス化するための一組のパラメータを満たす一組の性能特性を有するインスタンスタイプのものとすることができる。インスタンスはまた、同等のインスタンスタイプのものとすることができ、ここで、同等のインスタンスタイプは、コンテナをインスタンスタイプのインスタンス上でインスタンス化するための一組のパラメータの最小数のパラメータを満たす一組の性能特性を有し、ここで、最小数は、コンテナ記述に指定される。例えば、コンテナをインスタンス上でインスタンス化するための一組のパラメータは、CPU(すなわち、インスタンスのCPU仕様)、メモリ(すなわち、インスタンスのメモリ仕様)、またはネットワーク帯域幅(すなわち、インスタンスのネットワーク帯域幅仕様)についてパラメータを指定することができるが、コンテナ記述は、これらのうちの2つだけ(例えば、メモリおよびネットワーク帯域幅)が厳密に必要であると指定することができる。したがって、代わりに、2つのパラメータを満たす(すなわち、コンテナをインスタンスタイプのインスタンス上でインスタンス化するための一組のパラメータの最小数のパラメータを満たす)同等のインスタンスタイプを使用することができる。
【0064】
コンテナ管理サービスが、724で、追加的なインスタンスを提供するためにスケールアップすると判定しなかった場合、コンテナ管理サービスは、710で、上で説明したように、1つ以上の利用不能の軽減動作を行うことができる。反対に、コンテナ管理サービスが、724で、追加的なインスタンスを提供するためにスケールアップすると判定した場合、管理サービスは、726で、追加的なインスタンスをインスタンス化することができ、また、上で説明したように、714で、追加的なインスタンスからインスタンスを選択し、716で、インスタンスをプロビジョニングし、また、718で、タスクへのアクセスを提供することができる。
【0065】
図8は、図1に関連して、および一実施形態に従って説明されるように、コンテナインスタンス内のコンテナがコンテナ管理サービスを使用してインスタンス化される例示的な環境800を例示する。図8に例示される実施例において、コンテナ管理サービス802は、804で、イメージリポジトリ806からコンテナイメージ822取り出すことができる。コンテナイメージ822は、コンテナをインスタンス化するために使用することができるコンテナのイメージである。コンテナイメージ822は、コンテナを動作させるために必要とされるソフトウェアおよびデータを含む。よって、例えば、コンテナイメージ822は、コンテナのためのオペレーティングシステムと、コンテナをコンテナインスタンスとインターフェースするためのドライバと、実行することができるソフトウェアと、データと、実行されたときに、コンテナに、タスクと関連付けられたアクションを行わせる1つ以上のスクリプトとを含むことができる。イメージリポジトリ806は、そのようなコンテナイメージの検索可能なリポジトリである。
【0066】
次いで、コンテナ管理サービス802は、808でコンテナイメージがコンテナイメージボリューム818にコピーされる前に、824で、コンテナイメージを処理することができる。コンテナ管理サービス802は、824で、例えばコンテナイメージを暗号化すること、またはコンテナイメージを圧縮することによって、コンテナイメージを処理することができる。コンテナイメージボリューム818は、物理的または仮想的のいずれかであり、また、1つ以上のコンテナイメージを含む、記憶デバイスである。コンテナイメージボリューム818は、820で、インスタンス810等のインスタンスにマウントすること(すなわち、インスタンスのオペレーティングシステムを使用して、インスタンスに動作的にアタッチすること)ができる。次いで、インスタンス810によってコンテナイメージボリューム818を使用して、タスク814と関連付けられたコンテナ812をインスタンス化することができる。図8には例示されていないが、上で説明したように、タスク814は、ネットワークインターフェースを有することができる。コンテナイメージボリューム818は、上で説明したスクラッチボリューム816(または一時的なボリューム)とは別体であり得ることに留意されたい。一実施形態において、コンテナイメージボリューム818は、読み出し専用のインスタンスにマウントされる(すなわち、その結果、コンテナイメージボリューム818だけからインスタンスを読み出すことができる)。
【0067】
図9は、図1に関連して、および一実施形態に従って説明されるように、コンテナインスタンス内のコンテナがコンテナ管理サービスを使用してインスタンス化される例示的な環境900を例示する。図9に例示される実施例において、コンテナ管理サービス902は、920で、インスタンス910に命令して、904で、イメージリポジトリ906からコンテナイメージ918を取り出すことができる。コンテナ管理サービス902は、920で、インスタンス910に命令して、例えばネットワークインターフェース916を使用してコンテナイメージ918のリソースロケータをインスタンス910に提供することによって、904で、イメージリポジトリ906からコンテナイメージ918を取り出すことができる。上で説明したように、イメージリポジトリ906は、908で、ネットワークインターフェース916を使用して、コンテナイメージ918を、インスタンス910上で稼働するタスク914に提供することができる。一実施形態において、上で説明したように、ネットワークインターフェース916は、タスクと通信するために顧客によって使用されるネットワークインターフェースとは異なる。次いで、インスタンス910によってコンテナイメージ918を使用して、タスク914と関連付けられた1つ以上のコンテナ912をインスタンス化することができる。図9には例示されていないが、上で説明したように、インスタンス910は、スクラッチボリューム(または、一時的なボリューム)を有することができる。
【0068】
図10は、図1に関連して、および一実施形態に従って説明されるように、コンテナインスタンスマネージャを使用してコンテナインスタンスをインスタンス化するための例示的なプロセス1000を例示する。図1に関連して説明されるコンテナ管理サービス104等のコンテナ管理サービスは、図10に例示される例示的なプロセス1000を行うことができる。コンテナ管理サービスは、最初に、1002で、タスク定義を受信し、また、そのタスク定義に少なくとも部分的に基づいて、1004で、タスクを実行するために必要とされる1つまたは複数のインスタンスタイプを決定することができる。コンテナ管理サービスは、次いで、1006で、インスタンスプールから必要とされるインスタンスタイプの1つ以上のインスタンスを選択し、また、1008で、選択されたインスタンスをプロビジョニングすることができる。コンテナ管理サービスは、次いで、1010で、タスクをインスタンス上で作成することができ(すなわち、上で説明したようにタスクフレームワークを作成することができ)、1012で、タスクのコンテナをインスタンス化することができ、また、最後に、1014で、タスクへのアクセスを顧客に提供することができる。
【0069】
本開示の実施形態は、以下の付記を考慮して説明することができる。
1.ソフトウェアコンテナインスタンスを管理するためのコンピュータ実装の方法であって、
実行可能命令を伴って構成された1つ以上のコンピュータシステムの制御下で、
コンテナ管理サービスにおいてタスクのタスク定義を受信することであって、タスク定義が、コンテナ記述を含み、コンテナ記述が、コンテナをインスタンス化するための一組のパラメータを含み、一組のパラメータが、コンテナのCPUの数およびメモリの量を含む、受信することと、
コンテナ記述に少なくとも部分的に基づいて、コンテナをインスタンス化するために使用可能なインスタンスタイプを決定することであって、インスタンスタイプが、コンテナをインスタンス化するための一組のパラメータを満たす一組の性能特性を有する、決定することと、
インスタンスプールからインスタンスタイプのインスタンスを選択することであって、インスタンスプールが、1つ以上の稼働中のインスタンスを含む、選択することと、
インスタンスをプロビジョニングして、タスクを実行することと、
インスタンス上のコンテナをインスタンス化することと、
タスクへのアクセスを、タスクと関連付けられた顧客に提供することであって、アクセスが、顧客がタスクと相互作用することを可能にする、提供することと、を含む、方法。
2.タスク定義が、コンテナがサービスと通信するためのものであることを示し、インスタンスと関連付けられたネットワークインターフェースを、サービスへの接続を可能にするように構成することをさらに含む、付記1に記載のコンピュータ実装の方法。
3.コンテナをインスタンス化することが、コンテナイメージボリュームをインスタンスにマウントすることを含み、コンテナイメージボリュームが、そこに記憶された、タスク定義に指定されたコンテナイメージを有する、付記1または2に記載のコンピュータ実装の方法。
4.コンテナをインスタンス化することが、
インスタンスと関連付けられたネットワークインターフェースを使用して、コンテナリポジトリからコンテナイメージを取り出すことと、
コンテナイメージを使用して、コンテナをインスタンス化することと、を含む、付記1〜3のいずれかに記載のコンピュータ実装の方法。
5.システムであって、プロセッサおよびメモリを伴って構成された少なくとも1つのコンピューティングデバイスを備え、メモリが、命令を含み、該命令が実行されると、システムに、
インスタンスプールからインスタンスを選択することであって、インスタンスプールが、一組の稼働中のインスタンスを含み、一組の稼働中のインスタンスの各インスタンスが、対応するインスタンスタイプを有し、インスタンスは、インスタンスタイプが、少なくともタスク定義内の情報から取得されたコンテナをインスタンス化するための一組のパラメータを満たす一組の性能特性を有するように選択され、インスタンスが、コンテナと関連付けられた顧客に割り当てられる、選択することと、
インスタンスをプロビジョニングすることと、
タスク定義に少なくとも部分的に基づいて、インスタンス上のコンテナをインスタンス化することと、を行わせる、システム。
6.システムにインスタンスプールからインスタンスを選択させる命令が、さらに命令を含み、該命令が実行されると、システムに、
タスク定義から取得された一組のパラメータを分析して、インスタンスの一組の性能仕様を生成することであって、インスタンスの一組の性能仕様が、インスタンスのCPU仕様、インスタンスのメモリ仕様、またはインスタンスのネットワーク帯域幅仕様、のうちの少なくとも1つを含む、生成することと、
一組の性能仕様を満たすリソースを含むインスタンスに少なくとも部分的に基づいて、インスタンスプールからインスタンスを選択することと、を行わせる、付記5に記載のシステム。
7.インスタンスの一組の性能仕様が、インスタンスのハードウェア要件を含み、インスタンスのハードウェア要件が、フィールドプログラマブルゲートアレイ要件、特定用途向け集積回路要件、ハードウェアセキュリティモジュール要件、またはグラフィックス処理ユニット要件、のうちの少なくとも1つを指定する、付記6に記載のシステム。
8.タスク定義が、一組のコンテナを説明し、一組のコンテナの各コンテナが、1つ以上のコンテナ記述に対応する、付記5〜7のいずれかに記載のシステム。
9.システムが、ネットワークインターフェースをインスタンスにアタッチして、インスタンスを顧客の仮想ネットワークに接続することによって、インスタンスをプロビジョニングする、付記5〜8のいずれかに記載のシステム。
10.一時的なボリュームをインスタンスにアタッチすることによって、インスタンスをプロビジョニングし、一時的なボリュームは、コンテナが稼働している間に、データの読み出しおよび書き込みを行うために、コンテナによって使用可能である、付記5〜9のいずれかに記載のシステム。
11.インスタンスのインスタンスエージェントが、インスタンスを監視し、また、インスタンスの1つ以上のヘルスメトリックを、コンピューティングリソースサービスプロバイダによって提供されるコンテナ管理サービスに提供する、付記5〜10のいずれかに記載のシステム。
12.インスタンスエージェントが、1つ以上のリソース使用状況メトリックについてコンテナを監視し、1つ以上のリソース使用状況メトリックが、コンテナと関連付けられたリソースコストを決定するために使用可能である、付記11に記載のシステム。
13.そこに記憶された実行可能命令を有する非一時的コンピュータ可読記憶媒体であって、コンピュータシステムの1つ以上のプロセッサによって実行された結果として、コンピュータシステムに、少なくとも、
インスタンスタイプが、コンテナをインスタンスタイプのインスタンス上でインスタンス化するための一組のパラメータを満たすように、インスタンスタイプを決定することであって、コンテナをインスタンス化するための一組のパラメータが、コンテナのコンテナ記述に含まれる、決定することと、
インスタンスプールからインスタンスタイプのインスタンスを選択することであって、インスタンスプールが、一組の稼働中のインスタンスを含む、選択することと、
インスタンスを、コンテナと関連付けられた顧客に割り当てさせることと、
コンテナを、コンテナ記述に対応するインスタンス上でインスタンス化することと、を行わせる、非一時的コンピュータ可読記憶媒体。
14.コンピュータシステムにインスタンスタイプを決定させる命令が、さらに命令を含み、該命令が、1つ以上のプロセッサによって実行された結果として、コンピュータシステムに、インスタンスタイプの一組のパラメータに少なくとも部分的に基づいて、インスタンスタイプを決定させ、インスタンスタイプが、コンテナをインスタンスタイプのインスタンス上でインスタンス化するための一組のパラメータを満たす一組の性能特性を有する、付記13に記載の非一時的コンピュータ可読記憶媒体。
15.コンピュータシステムにインスタンスプールからインスタンスタイプのインスタンスを選択させる命令が、命令をさらに含み、該命令が、1つ以上のプロセッサによって実行された結果として、コンピュータシステムに、インスタンスプール内にいかなるインスタンスタイプのインスタンスも存在しないと判定されると、インスタンスタイプのインスタンス上のコンテナをインスタンス化するための一組のパラメータの最小数のパラメータを満たす一組の性能特性を有するインスタンスタイプを有する一組のインスタンスからインスタンスを選択させ、最小数が、コンテナ記述に指定される、付記13または14に記載の非一時的コンピュータ可読記憶媒体。
16.コンピュータシステムに、インスタンスプールからインスタンスタイプのインスタンスを選択させる命令が、命令をさらに含み、該命令が、1つ以上のプロセッサによって実行された結果として、コンピュータシステムに、インスタンスプール内にいかなるインスタンスタイプのインスタンスも存在しないと判定されると、
インスタンスプール内のインスタンスタイプの1つ以上の新しいインスタンスをインスタンス化することと、
インスタンスタイプの1つ以上の新しいインスタンスからンスタンスを選択することと、を行わせる、付記13〜15のいずれかに記載の非一時的コンピュータ可読記憶媒体。
17.インスタンスが、コンピューティングリソースサービスプロバイダによって提供されたコンテナ管理サービスと通信するインスタンスエージェントを含み、エージェントが、セキュリティ更新をインスタンスに適用するように構成され、セキュリティ更新が、コンテナ管理サービスから受信される、付記13〜16のいずれかに記載の非一時的コンピュータ可読記憶媒体。
18.コンピュータシステムに、インスタンスタイプを決定させる命令が、命令をさらに含み、該命令が、1つ以上のプロセッサによって実行された結果として、コンピュータシステムに、インスタンスタイプが第2の一組のパラメータを満たすようにインスタンスタイプを決定させ、第2の一組のパラメータが、一組のパラメータのうちの1つ以上のパラメータとは異なる1つ以上のパラメータを含み、一組のパラメータのうちの1つ以上のパラメータとは異なる1つ以上のパラメータは、コンテナをインスタンス化するための一組のパラメータが、未プロビジョニングコンテナを指定するという判定に少なくとも部分的に基づいて選択される、付記13〜17のいずれかに記載の非一時的コンピュータ可読記憶媒体。
19.コンピュータシステムに、インスタンスをプロビジョニングさせる命令が、さらに命令を含み、該命令が、1つ以上のプロセッサによって実行された結果として、コンピュータシステムに、ネットワークインターフェースをインスタンスにアタッチさせ、ネットワークインターフェースが、ウェブサービスインターフェイスを介してコンテナと通信することを可能にするように構成される、付記13〜18のいずれかに記載の非一時的コンピュータ可読記憶媒体。
20.命令が、命令をさらに含み、該命令が、1つ以上のプロセッサによって実行された結果として、コンピュータシステムに、コンテナが終了した結果として、インスタンスをインスタンスプールに戻させる、付記13〜19のいずれかに記載の非一時的コンピュータ可読記憶媒体。
【0070】
図11は、種々の実施形態に従って態様を実施するための例示的な環境1100の態様を例示する。認識されるように、説明の目的でウェブに基づく環境が使用されるが、種々の実施形態を実現するために、必要に応じて、異なる環境が使用され得る。環境は、電子クライアントデバイス1102を含み、該デバイスとしては、適切なネットワーク1104を通じて要求、メッセージ、または情報を送信および/または受信し、また、いくつかの実施形態において、情報をデバイスのユーザに搬送するように動作可能な、任意の適切なデバイスを挙げることができる。そのようなクライアントデバイスの例としては、パーソナルコンピュータ、携帯電話、ハンドヘルドメッセージングデバイス、ラップトップコンピュータ、タブレットコンピュータ、セットトップボックス、携帯情報端末、組み込み型コンピュータシステム、電子ブックリーダ等が挙げられる。ネットワークとしては、イントラネット、インターネット、セルラーネットワーク、ローカルエリアネットワーク、衛星ネットワーク、もしくは任意の他のそのようなネットワーク、および/またはそれらの組み合わせを含む、任意の適切なネットワークを挙げることができる。そのようなシステムに使用される構成要素は、選択されたネットワークおよび/または選択環境のタイプに少なくとも部分的に依存し得る。そのようなネットワークを介して通信するための数多くのプロトコルおよび構成要素は公知であり、本明細書では詳細に論じない。ネットワークを通じた通信は、有線接続または無線接続、およびそれらの組み合わせによって可能にすることができる。本実施例では、環境が、要求を受信し、それに応じてコンテンツを提供するためのウェブサーバ1106を含むので、ネットワークは、インターネットおよび/または他の公的にアドレス指定可能な通信ネットワークを含むが、他のネットワークの場合、当業者に明らになるように、類似する目的を果たす代替のデバイスを使用することができる。
【0071】
例示的な環境は、少なくとも1つのアプリケーションサーバ1108と、データストア1110とを含む。連鎖され得るまたは別様には構成され得る、適切なデータストアからデータを取得する等の作業を行うように相互作用することができる、いくつかのアプリケーションサーバ、層もしくは他の要素、過程、または構成要素があり得ることを理解されたい。サーバは、本明細書で使用されるとき、ハードウェアデバイスまたは仮想コンピュータシステム等の種々の方法で実現され得る。いくつかの文脈において、サーバは、コンピュータシステム上で実行されているプログラムモジュールを指し得る。本明細書で使用される「データストア」という用語は、別途指示がない限り、または文脈から明らかでない限り、データを記憶し、それにアクセスし、それを取り出すことができる任意のデバイスまたはデバイスの組み合わせを指し、任意の数のデータサーバ、データベース、データ記憶デバイス、データ記憶媒体、およびそれらの任意の組み合わせを、任意の標準型、分散型、仮想、またはクラスタ型の環境において含み得る。アプリケーションサーバは、クライアントデバイスのための1つ以上のアプリケーションの態様を実行するために、必要に応じて、データストアと統合するための、およびアプリケーションのためのデータアクセスおよびビジネス論理ロジックの一部または全部を取り扱うための、任意の適切なハードウェア、ソフトウェア、およびファームウェアを含むことができる。アプリケーションサーバは、データストアと協働してアクセス制御サービスを提供し得、また、テキスト、グラフィックス、音声、ビデオ、および/またはユーザに提供するために使用可能な他のコンテンツが挙げられるが、これらに限定されない、コンテンツを生成することが可能であり、該コンテンツは、ハイパーテキストマークアップ言語(「HTML」)、拡張マークアップ言語(「XML」)、JavaScript(登録商標)、カスケーティングスタイルシート(「CSS」)、JavaScript(登録商標) Object Notation(JSON)、および/または別の適切なクライアント側構造化言語の形態で、ウェブサーバによってユーザに提供され得る。クライアントデバイスに転送されるコンテンツは、クライアントデバイスによって処理されて、ユーザに聴覚的に、視覚的に、および/または他の感覚を通して知覚可能である形態が挙げられるが、これらに限定されない、1つ以上の形態でコンテンツを提供し得る。全ての要求および応答の取り扱い、ならびにクライアントデバイス1102とアプリケーションサーバ1108との間のコンテンツの送達は、この例において、PHP:ハイパーテキストプリプロセッサ(「PHP」)、Python、Ruby、Perl、Java(登録商標)、HTML、XML、JSON、および/または別の適切なサーバ側構造化言語を使用するウェブサーバによって取り扱うことができる。さらに、単一のデバイスによって行われるように本明細書で説明される動作は、別途文脈から明らかでない限り、分散型システムおよび/または仮想システムを形成し得る複数のデバイスによって集合的に行われ得る。
【0072】
データストア1110は、複数の別個のデータテーブル、データベース、データ文書、動的データ記憶スキーム、および/または特定の本開示の態様に関するデータ記憶するための他のデータ記憶機構および媒体を含むことができる。例えば、例示されるデータストアは、製品側のコンテンツを提供するために使用することができる、製品データ1112およびユーザ情報1116を記憶するための機構を含み得る。データストアはまた、ログデータ1114を記憶するための機構も含むように示され、該機構は、レポーティング、分析、または他のそのような目的のために使用することができる。ページ画像情報およびアクセス権利情報等の、データストアに記憶する必要があり得る、数多くの他の態様があり得、それらは、必要に応じて上で列記した機構のいずれかに、またはデータストア1110の追加的な機構に記憶することができることを理解されたい。データストア1110は、該データストアそれと関連付けられた論理を通して、アプリケーションサーバ1108から命令を受信し、該命令に応じてデータを取得する、更新する、または別様には処理する。アプリケーションサーバ1108は、受信した命令に応じて、静的データ、動的データ、または静的データおよび動的データの組み合わせを提供し得る。ウェブログ(ブログ)に使用されるデータ等の動的データ、ショッピングアプリケーション、ニュースサービス、および他のそのようなアプリケーションは、本明細書で説明されるようなサーバ側構造化言語によって生成され得、またはアプリケーションサーバ上で、もしくはその制御下で動作するコンテンツ管理システム(「CMS」)によって提供され得る。1つの例において、ユーザは、ユーザが動作させるデバイスを通して、特定のタイプの品目の検索要求を提出し得る。この事例において、データストアは、ユーザの識別情報を検証するためにユーザ情報にアクセスし得、また、そのタイプの品目に関する情報を取得するために、カタログの詳細情報にアクセスすることができる。次いで、ユーザがユーザデバイス1102上のブラウザを介して視聴することができるウェブページ上の結果リスト等で、情報をユーザに返すことができる。関心の特定の品目の情報は、ブラウザの専用ページまたはウインドウで視聴することができる。しかしながら、本開示の実施形態は、必ずしもウェブページのコンテンツに限定されるわけではなく、より全般的には、処理要求全般に適用可能であり得、ここで、要求は、必ずしもコンテンツに対する要求ではないことに留意されたい。
【0073】
各サーバは、一般的に、そのサーバの一般的な管理および操作のための実行可能プログラム命令を提供するオペレーティングシステムを含み、また、一般的に、サーバのプロセッサによって実行されたときに(すなわち、実行された結果として)、サーバがその意図する機能を行うことを可能にする命令を記憶する、コンピュータ可読記憶媒体(例えば、ハードディスク、ランダムアクセスメモリ、読み出し専用メモリ等)を含む。
【0074】
環境は、1つの実施形態において、1つ以上のコンピュータネットワークまたは直接接続を使用して、通信リンクを介して相互接続される複数のコンピュータシステムおよび構成要素を利用する、分散型および/または仮想コンピューティング環境である。しかしながら、そのようなシステムは、図11で例示されるよりも少ない数または多い数の構成要素を有するシステムで十分同等に動作できることが、当業者に認識されるであろう。したがって、図11の例示的な環境1100に例示されるシステムの描写は、本質的に例示的なものであり、本開示の範囲を限定するものではないとみなされるべきである。
【0075】
種々の実施形態はさらに、多種多様な動作環境で実現することができ、いくつかの事例において、数多くのアプリケーションのうちのいずれかを動作させるために使用することができる1つ以上のユーザコンピュータ、コンピューティングデバイス、または処理デバイスを含むことができる。ユーザまたはクライアントデバイスとしては、標準的なオペレーティングシステムを稼働させるデスクトップコンピュータ、ラップトップコンピュータ、またはタブレットコンピュータ等の、数多くの汎用パーソナルコンピュータ、ならびに、モバイルソフトウェアを稼働させる、かつ数多くのネットワーキングおよびメッセージングプロトコルをサポートすることができる、セルラーデバイス、無線デバイス、およびハンドヘルドデバイスのうちのいずれかを挙げることができる。そのようなシステムとしてはまた、開発およびデータベース管理等の目的で、種々の市販のオペレーティングシステムおよび他の既知のアプリケーションのいずれかを稼働させる、数多くのワークステーションも挙げることができる。これらのデバイスとしてはまた、ネットワークを介して通信することができる、ダミー端末、シンクライアント、ゲーミングシステム、および他のデバイス等の、他の電子デバイスも挙げることができる。これらのデバイスとしてはまた、ネットワークを介して通信することが可能な仮想マシン、ハイパーバイザ、および他の仮想デバイス等の仮想デバイスも挙げることができる。
【0076】
本開示の種々の実施形態は、伝送制御プロトコル/インターネットプロトコル(「TCP/IP」)、ユーザデータグラムプロトコル(「UDP」)、オープンシステムインターコネクション(「OSI」)モデルの種々の層で動作するプロトコル、ファイル転送プロトコル(「FTP」)、ユニバーサルプラグアンドプレイ(「UpnP」)、ネットワークファイルシステム(「NFS」)、共通インターネットファイルシステム(「CIFS」)、およびAppleTalk等の、様々な市販のプロトコルのいずれかを使用して通信をサポートするための、当業者によく知られている、少なくとも1つのネットワークを利用する。ネットワークは、例えば、ローカルエリアネットワーク、ワイドエリアネットワーク、仮想プライベートネットワーク、インターネット、イントラネット、エクストラネット、公衆交換電話ネットワーク、赤外線ネットワーク、無線ネットワーク、衛星ネットワーク、およびそれらの任意の組み合わせとすることができる。いくつかの実施形態では、コネクション型プロトコルを使用して、ネットワークエンドポイント間で通信することができる。コネクション型プロトコル(接続ベースのプロトコルと呼ばれることもある)は、順序付けられたストリームでデータを伝送することが可能である。コネクション型プロトコルは、信頼性の高いもの、または信頼性の低いものとすることができる。例えば、TCPプロトコルは、信頼性の高いコネクション型プロトコルである。非同期転送モード(「ATM」)およびフレームリレーは、信頼性の低いコネクション型プロトコルである。コネクション型プロトコルは、保証された順序を伴わずにパケットを伝送するUDP等のパケット型プロトコルとは対照的である。
【0077】
ウェブサーバを利用する実施形態において、ウェブサーバは、ハイパーテキストトランスファープロトコル(「HTTP」)サーバ、FTPサーバ、共通ゲートウェイインターフェース(「CGI」)サーバ、データサーバ、Java(登録商標)サーバ、Apacheサーバ、およびビジネスアプリケーションサーバを含む、様々な任意のサーバまたは中間層アプリケーションのうちのいずれかを稼働させることができる。サーバ(複数可)はまた、ユーザデバイスからの要求に応答して、Java(登録商標)、C、C#、もしくはC++等の任意のプログラミング言語、またはRuby、PHP、Perl、Python、もしくはTCL等の任意のスクリプト言語、ならびにそれらの組み合わせで書かれた1つ以上のスクリプトまたはプログラムとして実現され得る1つ以上のウェブアプリケーションを実行すること等によって、プログラムまたはスクリプトを実行することも可能であり得る。サーバ(複数可)としてはまた、Oracle(登録商標)、Microsoft(登録商標)、Sybase(登録商標)、およびIBM(登録商標)から市販されているもの、ならびにMySQL、Postgres、SQLite、MongoDB、および構造化データまたは非構造化データを記憶すること、取り出すこと、それにアクセスすることが可能な任意の他のサーバが挙げられるがそれらに限定されない、データベースサーバも挙げることができる。データベースサーバとしては、テーブルベースのサーバ、文書ベースのサーバ、非構造化サーバ、リレーショナルサーバ、非リレーショナルサーバ、またはこれらのおよび/または他のデータベースサーバの組み合わせを挙げることができる。
【0078】
環境は、上で論じたように、種々のデータストア、ならびに他のメモリおよび記憶媒体を含むことができる。これらは、コンピュータの1つ以上に対してローカルな(および/もしくはその中に存在する)記憶媒体上、またはネットワーク全体にわたるコンピュータのいずれかもしくは全てからリモートな記憶媒体上等の、様々な場所に存在することができる。特定の一組の実施形態において、情報は、当業者によく知られているストレージエリアネットワーク(「SAN」)の中に存在し得る。同様に、コンピュータ、サーバ、または他のネットワークデバイスに起因する機能を行うための任意の必要なファイルを、必要に応じてローカルおよび/またはリモートに記憶することができる。システムがコンピュータ制御のデバイスを含む場合、そのような各デバイスは、バスを介して電気的に連結することができるハードウェア要素を含むことができ、該要素は、例えば、少なくとも1つの中央処理装置(「CPU」または「プロセッサ」)と、少なくとも1つの入力デバイス(例えば、マウス、キーボード、コントローラ、タッチスクリーン、またはキーパッド)と、少なくとも1つの出力デバイス(例えば、表示デバイス、プリンタ、またはスピーカ)とを含む。そのようなシステムはまた、ディスクドライブ、光記憶デバイス、およびランダムアクセスメモリ(「RAM」)または読み出し専用メモリ(「ROM」)等の固体記憶デバイス、ならびにリムーバブル媒体デバイス、メモリカード、フラッシュカード等の、1つ以上の記憶デバイスも含むことができる。
【0079】
そのようなデバイスはまた、上で説明したように、コンピュータ可読記憶媒体リーダ、通信デバイス(例えば、モデム、ネットワークカード(無線または有線)、赤外線通信デバイス等)、およびワーキングメモリも含むことができる。コンピュータ可読記憶媒体リーダは、リモート、ローカル、固定の、および/またはリムーバブル記憶デバイスを表すコンピュータ可読記憶媒体、ならびにコンピュータ可読情報を一時的におよび/または永続的に含む、記憶する、伝送する、および取り出すための記憶媒体と接続することができるか、または該記憶媒体を受容するように構成することができる。システムおよび種々のデバイスはまた、一般的に、オペレーティングシステム、およびクライアントアプリケーションまたはウェブブラウザ等のアプリケーションプログラムを含む、少なくとも1つのワーキングメモリデバイス内に位置する数多くのソフトウェアアプリケーション、モジュール、サービス、または他の要素も含む。加えて、カスタマイズされたハードウェアも使用することができ、および/または特定の要素を、ハードウェア、ソフトウェア(アプレット等のポータブルソフトウェアを含む)、または双方に実装することができる。さらに、ネットワーク入力/出力デバイス等の他のコンピューティングデバイスへの接続を用いることができる。
【0080】
コードまたはコードの一部分を含むための記憶媒体およびコンピュータ可読媒体としては、RAM、ROM、電気的消去可能プログラマブル読み出し専用メモリ(「EEPROM」)、フラッシュメモリ、もしくは他のメモリ技術、コンパクトディスク読み出し専用メモリ(「CD−ROM」)、デジタル多用途ディスク(DVD)、もしくは他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、もしくは他の磁気記憶デバイス、または所望の情報を記憶するために使用することができ、かつシステムデバイスによってアクセスすることができる任意の他の媒体を含む、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータ等の情報を記憶および/または伝送するための任意の方法または技術で実現される揮発性および不揮発性のリムーバブル媒体および非リムーバブル媒体等が挙げられるが、それらに限定されない、記憶媒体および通信媒体を含む、当該技術分野で既知であるまたは使用されている、任意の適切な媒体が挙げられる。本明細書で提供される開示および教示に基づいて、当業者は、種々の実施形態を実施するための他の方法および/または方法を認識するであろう。
【0081】
故に、本明細書および図面は、限定的な意味ではなく、例示的な意味であるとみなされるべきである。しかしながら、特許請求の範囲に記載される本発明のより広範な趣旨および範囲から逸脱することなく、種々の修正および変更が行われ得ることが明らかになるであろう。
【0082】
他の変形例は、本開示の趣旨の範囲内である。したがって、開示される手法は、種々の修正物および代替構造が可能であるが、その特定の例示される実施形態を図面に示し、上で詳細に説明した。しかしながら、本発明を、開示する1つまたは複数の特定の形態に限定することは意図しておらず、それとは逆に、添付の特許請求の範囲によって定義されるような本発明の趣旨および範囲の範囲内に入る全ての修正物、代替の構成物、および均等物を網羅することを意図することを理解されたい。
【0083】
開示された実施形態を説明する文脈における(特に以下の特許請求の範囲の文脈における)「a」および「an」および「the」という用語、ならびに類似の指示対象の使用は、本明細書で別途指示されない限り、または文脈によって明らかに否定されない限り、単数および複数の両方を網羅するものと解釈されたい。「備える(comprising)」、「有する(having)」、「含む(including)」、および「含有する(containing)」という用語は、別途注記のない限り、オープンエンドの用語(すなわち、「含むが、それに限定されない」ことを意味する)として解釈されたい。「接続される(connected)」という用語は、未修正であるとき、および物理的接続を指すときに、途中に中断がある場合であっても、部分的または全体的にその中に含まれる、取り付けられる、または互いに接合されるものとして解釈されたい。本明細書での値の範囲の列挙は、本明細書で別途指示されない限り、単に、その範囲内に入る各別個の値を個々に参照する簡単な方法としての役割を果たすように意図されたものであり、各別個の値は、本明細書で個々に列挙されているかのように、本明細書に組み込まれる。「組」(例えば、「一組の品目」)という用語の使用は、別途注記のない限り、または文脈と矛盾しない限り、1つ以上の部材を備える、空でない集合であるものとして解釈されたい。さらに、別途注記のない限り、または文脈と矛盾しない限り、対応する組の「サブセット」という用語は、必ずしも対応する組の適切なサブセットを意味するものではなく、サブセットおよび対応する組は、同等であり得る。
【0084】
「A、B、およびCのうちの少なくとも1つ(at least one of A,B,and C)」または「A、BおよびCのうちの少なくとも1つ(at least one of A,B and C)」という形態の慣用句等の接続語は、別途具体的に提示されない限り、または別様には明らかに文脈と矛盾しない限り、そうでなければ、その文脈は、一般に、品目、用語等がAまたはBまたはC、またはAおよびBおよびCの組の任意の空でないサブセットであり得ることを提示するために使用されるものと理解されたい。例えば、上の接続語句で使用される3つの項を有する組の例示的な例において、「A、B、およびCのうちの少なくとも1つ(at least one of A,B,and C)」および「A、BおよびCのうちの少なくとも1つ(at least one of A,B and C)」は、{A}、{B}、{C}、{A、B}、{A、C}、{B、C}、{A、B、C}という組のうちのいずれかを指す。したがって、そのような接続語は、一般に、特定の実施形態が、少なくとも1つのA、少なくとも1つのB、少なくとも1つのCが各々存在することを必要とすることを意味することを意図しない。
【0085】
本明細書に記載される全ての方法は、本明細書に別途記載のない限り、または文脈に明らかな矛盾がない限り、任意の好適な順序で行うことができる。本明細書で説明されるプロセス(またはその変形および/または組み合わせ)は、実行可能命令を伴って構成された1つ以上のコンピュータシステムの制御下で行うことができ、また、ハードウェアまたはその組み合わせによって、1つ以上のプロセッサ上で集合的に実行するコード(例えば、実行可能命令、1つ以上のコンピュータプログラム、または1つ以上のアプリケーション)として実施することができる。このコードは、例えば1つ以上のプロセッサによって実行可能な複数の命令を含むコンピュータプログラムの形態で、コンピュータ可読記憶媒体に記憶することができる。コンピュータ可読記憶媒体は、非一時的とすることができる。いくつかの実施形態において、コードは、実行可能命令を記憶した一組の1つ以上の非一時的コンピュータ可読記憶媒体に記憶され、該命令は、コンピュータシステムの1つ以上のプロセッサによって実行されたときに(すなわち、実行された結果として)、コンピュータシステムに、本明細書で説明される動作を行わせる。一組の非一時的コンピュータ可読記憶媒体は、多数の非一時的コンピュータ可読記憶媒体を備えることができ、多数の非一時的コンピュータ可読記憶媒体の個々の非一時的記憶媒体の1つ以上は、多数の非一時的コンピュータ可読記憶媒体が全てのコードを集合的に記憶している間、全てのコードが存在しない場合がある。さらに、いくつかの例において、実行可能命令は、異なる命令が異なるプロセッサによって実行されるように実行される。例示的な例として、非一時的コンピュータ可読記憶媒体は、命令を記憶することができる。主CPUは、命令のうちのいくつかを実行することができ、グラフィックスプロセッサユニットは、他の命令を実行することができる。一般に、コンピュータシステムの異なる構成要素は、別個のプロセッサを有することができ、異なるプロセッサは、命令の異なるサブセットを実行することができる。
【0086】
故に、いくつかの例において、コンピュータシステムは、本明細書で説明されるプロセスの動作を単独で、または集合的に行う、1つ以上のサービスを実行するように構成される。そのようなコンピュータシステムは、例えば、動作を行うことを可能にする適用可能なハードウェアおよび/またはソフトウェアを伴って構成することができる。さらに、本開示の種々の実施形態を実施するコンピュータシステムは、いくつかの例では、単一のデバイスとすることができ、他の例では、多数のデバイスを含む分散型コンピュータシステムとすることができ、該デバイスは、分散型コンピュータシステムが本明細書で説明される動作を行うように、かつ単一のデバイスが全ての動作を行うことができないように、異なって動作する。
【0087】
本明細書で提供される任意のおよび全ての例、または例示的な言葉(例えば「等(such as)」は、単に、本発明の実施形態をより明確にすることを意図しているに過ぎず、別途特許請求されていない限り、本発明の範囲を限定するものではない。明細書の中のいかなる言葉も、特許請求されていない何らかの要素が本発明の実践に必須であることを示すものではないと解釈されたい。
【0088】
本発明を行うための、発明者等に既知の最良の方法を含む、本開示の実施形態が本明細書で説明される。当業者には、上の説明を読むことにより、こうした実施形態の変形例が明らかとなり得る。本発明者らは、そのような変形例を必要に応じて採用することを予期し、本発明者らは、本明細書で具体的に説明されるもの以外で本開示が実践されることを意図する。故に、本開示の範囲は、適用法によって許容される本明細書に添付される特許請求の範囲に記載される主題の全ての修正物および等価物を含む。さらに、上で説明される要素の全ての可能な変形例におけるその要素の任意の組み合わせは、本明細書で別途指示されない限り、または明らかに文脈と矛盾しない限り、本開示の範囲によって包含される。
【0089】
本明細書に列挙される出版物、特許出願、および特許を含む全ての参考文献は、あたかも各参考文献が参照により組み込まれると個別にかつ具体的に示され、その全体が本明細書に記載されているのと同程度まで、参照により本明細書に組み込まれる。
[項目1]
システムであって、プロセッサおよびメモリを伴って構成された少なくとも1つのコンピューティングデバイスを備え、上記メモリが、命令を含み、該命令が実行されると、上記システムに、
インスタンスプールからインスタンスを選択することであって、上記インスタンスプールが、一組の稼働中のインスタンスを含み、上記一組の稼働中のインスタンスの各インスタンスが、対応するインスタンスタイプを有し、上記インスタンスは、上記インスタンスタイプが、少なくともタスク定義内の情報から取得されたコンテナをインスタンス化するための一組のパラメータを満たす一組の性能特性を有するように選択され、上記インスタンスが、上記コンテナと関連付けられた顧客に割り当てられる、選択することと、
上記インスタンスをプロビジョニングすることと、
上記タスク定義に少なくとも部分的に基づいて、上記インスタンス上の上記コンテナをインスタンス化することと、を行わせる、システム。
[項目2]
上記システムに上記インスタンスプールから上記インスタンスを選択させる上記命令が、さらに命令を含み、該命令が実行されると、上記システムに、
上記タスク定義から取得された上記一組のパラメータを分析して、上記インスタンスの一組の性能仕様を生成することであって、上記インスタンスの上記一組の性能仕様が、上記インスタンスのCPU仕様、上記インスタンスのメモリ仕様、または上記インスタンスのネットワーク帯域幅仕様、のうちの少なくとも1つを含む、生成することと、
上記一組の性能仕様を満たすリソースを含む上記インスタンスに少なくとも部分的に基づいて、上記インスタンスプールから上記インスタンスを選択することと、を行わせる、項目1に記載のシステム。
[項目3]
上記インスタンスの上記一組の性能仕様が、上記インスタンスのハードウェア要件を含み、上記インスタンスの上記ハードウェア要件が、フィールドプログラマブルゲートアレイ要件、特定用途向け集積回路要件、ハードウェアセキュリティモジュール要件、またはグラフィックス処理ユニット要件、のうちの少なくとも1つを指定する、項目2に記載のシステム。
[項目4]
上記タスク定義が、一組のコンテナを説明し、上記一組のコンテナの各コンテナが、1つ以上のコンテナ記述に対応する、項目1に記載のシステム。
[項目5]
上記システムが、ネットワークインターフェースを上記インスタンスにアタッチして、上記インスタンスを上記顧客の仮想ネットワークに接続することによって、および一時的なボリュームを上記インスタンスにアタッチすることによって、上記インスタンスをプロビジョニングし、上記一時的なボリュームは、上記コンテナが稼働している間に、データの読み出しおよび書き込みを行うために、上記コンテナによって使用可能である、項目1に記載のシステム。
[項目6]
上記インスタンスのインスタンスエージェントが、上記インスタンスを監視し、また、上記インスタンスの1つ以上のヘルスメトリックを、コンピューティングリソースサービスプロバイダによって提供されるコンテナ管理サービスに提供する、項目1に記載のシステム。
[項目7]
上記インスタンスエージェントが、1つ以上のリソース使用状況メトリックについて上記コンテナを監視し、上記1つ以上のリソース使用状況メトリックが、上記コンテナと関連付けられたリソースコストを決定するために使用可能である、項目6に記載のシステム。
[項目8]
方法であって、
インスタンスタイプが、コンテナを上記インスタンスタイプのインスタンス上でインスタンス化するための一組のパラメータを満たすように、上記インスタンスタイプを決定することであって、上記コンテナをインスタンス化するための上記一組のパラメータが、上記コンテナのコンテナ記述に含まれる、決定することと、
インスタンスプールから上記インスタンスタイプのインスタンスを選択することであって、上記インスタンスプールが、一組の稼働中のインスタンスを含む、選択することと、
上記インスタンスを、上記コンテナと関連付けられた顧客に割り当てさせることと、
上記コンテナを、上記コンテナ記述に対応する上記インスタンス上でインスタンス化することと、を含む、方法。
[項目9]
上記インスタンスタイプを決定することが、上記インスタンスタイプの上記一組のパラメータに少なくとも部分的に基づいて、上記インスタンスタイプを決定することをさらに含み、上記インスタンスタイプが、上記コンテナを上記インスタンスタイプのインスタンス上でインスタンス化するための上記一組のパラメータを満たす一組の性能特性を有する、項目8に記載の方法。
[項目10]
上記インスタンスタイプの上記インスタンスを選択することが、上記インスタンスタイプのいかなるインスタンスも上記インスタンスプール内に存在しないと判定されると、一組のインスタンスから上記インスタンスを選択することであって、インスタンスタイプが、上記コンテナを上記インスタンスタイプのインスタンス上でインスタンス化するための上記一組のパラメータの最小数のパラメータを満たす一組の性能特性を有し、上記最小数が、上記コンテナ記述に指定される、選択することをさらに含む、項目8に記載の方法。
[項目11]
上記インスタンスタイプの上記インスタンスを選択することが、
上記インスタンスプール内の上記インスタンスタイプの1つ以上の新しいインスタンスをインスタンス化することと、
上記インスタンスタイプの上記1つ以上の新しいインスタンスから上記インスタンスを選択することと、をさらに含む、項目8に記載の方法。
[項目12]
上記インスタンスが、コンピューティングリソースサービスプロバイダによって提供されたコンテナ管理サービスと通信するインスタンスエージェントを含み、上記エージェントが、セキュリティ更新を上記インスタンスに適用するように構成され、上記セキュリティ更新が、上記コンテナ管理サービスから受信される、項目8に記載の方法。
[項目13]
上記インスタンスタイプを決定することは、上記インスタンスタイプが第2の一組のパラメータを満たすように、上記インスタンスタイプを決定することをさらに含み、上記第2の一組のパラメータが、上記一組のパラメータのうちの1つ以上のパラメータとは異なる1つ以上のパラメータを含み、上記一組のパラメータのうちの上記1つ以上のパラメータとは異なる上記1つ以上のパラメータは、上記コンテナをインスタンス化するための上記一組のパラメータが、未プロビジョニングコンテナを指定するという判定に少なくとも部分的に基づいて選択される、項目8に記載の方法。
[項目14]
上記インスタンスをプロビジョニングすることが、ネットワークインターフェースを上記インスタンスにアタッチすることをさらに含み、上記ネットワークインターフェースが、ウェブサービスインターフェイスを介して上記コンテナと通信することを可能にするように構成される、項目8に記載の方法。
[項目15]
上記コンテナが終了した結果として、上記インスタンスを上記インスタンスプールに戻すことをさらに含む、項目8に記載の方法。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11