(58)【調査した分野】(Int.Cl.,DB名)
前記コンテナをインスタンスすることは、リソースについての要求が前記コンテナに送信される前に、前記コンテナをインスタンス化するために、前記DNS要求内の情報を利用することを含むことを特徴とする請求項1記載のコンピュータ実施方法。
前記コンテナに格納され、前記クライアント・デバイスにより送信される前記要求の経路が、ロード・バランサを介してコンテナに指定され、前記DNSサービスは、前記ロード・バランサのIPアドレスを前記クライアント・デバイスに送るよう構成され、
前記リソースは仮想マシン、ウェブ・リソース、画像、ウェブ・フォーム、静止ウェブページ、ウェブサイトまたはアプリケーション・プログラミング・インタフェースであることを特徴とする請求項2に記載のコンピュータ実施方法。
前記要求は、ドメイン・ネーム・システム(DNS)サービスにより受信され、前記DNSサービスは、インターネット・プロトコル(IP)アドレスを前記コンテナに与えるよう構成されるロード・バランシング・レイヤと動作可能に相互接続されることを特徴とする請求項4に記載のシステム。
前記ロード・バランシング・レイヤは、タイマに動作可能に相互接続され、前記コンテナのインスタンス化と前記コンテナ内のリソースについての次回の要求の間の時間を監視するよう構成されることを特徴とする請求項5に記載のシステム。
前記ロード・バランシング・レイヤは、タイム・アウト値を制御するよう構成され、タイム・アウト値が最大値に等しいとき、前記ロード・バランシング・レイヤは、動作状態を終了するように前記コンテナにメッセージを送信するように構成され、前記最大値は、予め定めた値または動的に設定される値であればよいことを特徴とする請求項5に記載のシステム。
前記1つ以上のサービスは、少なくとも2つのコンテナをインスタンス化するように前記ロード・バランシング・レイヤにメッセージを送信するようにさらに構成され、前記少なくとも2つのコンテナは、第1のリソース、及び前記第1のリソースがアクセス可能な第2のリソースを含むことを特徴とする請求項5に記載のシステム。
前記ロード・バランシング・レイヤは、今後の要求を処理するために、前記要求に関連する時間値に少なくとも一部基づいて決定される長さの時間だけ、前記コンテナをインスタンス化したままにするように構成されることを特徴とする請求項5に記載のシステム。
前記コンテナをインスタンス化したままにする前記長さの時間を決定することは、前記コンテナが実行されている場所、コンピュータのサイクル数、最大または最小の財務コスト、または前記コンテナに格納される少なくとも1つのリソースに関する媒体の肯定応答に少なくとも一部基づいて前記長さの時間を決定することを含むことを特徴とする請求項9に記載のシステム。
前記コンテナのライフ・サイクル中、前記コンテナについてのラン・タイムを動的に設定することをさらに含み、前記ラン・タイムは地理的回転の関数、前記コンテナへのアクセスを要求するユーザの地理的場所の関数、または前記コンテナがホストしているリソースの種類の関数に少なくとも一部基づくことを特徴とする請求項9に記載のシステム。
実行可能な指示を格納した非一時的コンピュータ可読ストレージ媒体であって、コンピュータ・システムの1つ以上のプロセッサに実行されると、前記コンピュータ・システムに少なくとも、
コンテナに関連する第1の識別子を、ネットワーク・コンポーネントに格納されるリソースの第2の識別子に転換する旨のクライアント・デバイスによる要求を検出し、
検出の結果、前記ネットワーク・コンポーネントをインスタンス化して、前記クライアント・デバイスが前記第2の識別子を参照して要求を送信する前に、前記ネットワーク・コンポーネントに関連するキャッシュを予め暖機することを特徴とする非一時的コンピュータ可読ストレージ媒体。
前記指示は、前記1つ以上のプロセッサに実行されると、前記コンピュータ・システムに、前記ネットワーク・コンポーネントの前記キャッシュ内のリソースの記録を維持させる指示をさらに備え、前記リソースの記録は、前記クライアント・デバイス、クライアント・デバイスのカスタマ、及び/または前記クライアント・デバイスが要求するサービスに関する情報を含み、
前記コンピュータ・システムに前記ネットワーク・コンポーネントの前記キャッシュ内のリソースの記録を維持させる前記指示は、
前記コンピュータ・システムに、前記要求に対応するリソースの記録について前記キャッシュを検索させ、前記要求を解決するために前記リソースの記録を利用させる指示をさらに含むことを特徴とする請求項12に記載の非一時的コンピュータ可読ストレージ媒体。
前記指示は、前記1つ以上のプロセッサに実行されると、ネットワーク・コンポーネントが前記ネットワーク・コンポーネントの前記キャッシュ内にリソースに関するデータをプリロードすることに応じて、前記コンピュータ・システムに、仮想マシンまたはコンテナをインスタンス化させる指示をさらに備え、前記コンピュータ・システムに前記仮想マシンまたは前記コンテナをインスタンス化させる指示は、前記コンピュータ・システムに、前記リソースの種類を含むメッセージを選択的に送信させる指示をさらに含み、前記リソースの前記種類は、仮想マシン、ウェブ・リソース、画像、ウェブ・フォーム、静止ウェブページ、またはアプリケーション・プログラミング・インタフェースを含むことを特徴とする請求項12に記載の非一時的コンピュータ可読ストレージ媒体。
前記指示は、前記1つ以上のプロセッサに実行されると、前記コンピュータ・システムに、ユーザの要求を送るために、存在点(PoP)の場所を決定させる指示をさらに備え、
前記コンピュータ・システムに、前記ユーザの要求を送るために、前記PoPの場所を決定させる指示は、前記コンピュータ・システムに、前記PoPの場所にメッセージを送信させる指示をさらに含み、前記メッセージは入ってくるアクティビティの通知を含むことを特徴とする請求項12に記載の非一時的コンピュータ可読ストレージ媒体。
【発明を実施するための形態】
【0007】
以下の記載では、様々な実施形態について説明する。説明の目的ために、実施形態が完全に理解されるように、具体的な構成及び詳細を記載する。しかしながら、実施形態は具体的な詳細がなくとも実施され得ることも、当業者には明らかであろう。さらに、記載する実施形態が不明瞭にならないように、公知の特徴を省略または簡略化することがある。
【0008】
本明細書で記載し、示唆する技術には、要求処理の高速化、コンピューティング・リソースの高効率化、及び待ち時間の短縮のために、コンテナなどのリソースの配置及び実行を調整するサービスの実施態様が含まれる。コンテナが実行中でない場合、デスク・スペース以外のリソースが全く利用されない、例えば、停止したコンテナ、つまり動作状態に維持されていないコンテナは、中央処理装置(CPU)またはメモリなどのリソースを全く使用しない。
【0009】
例示的な実施形態は、例えば、仮想マシンに関連するオーバヘッドが生じることなく、コンピュータ・リソース及びシステムを仮想化するためのドメイン・ネーム・システム(DNS)、ロード・バランサ、データベース及びコンテナを活用するウェブ・サービスを含む。DNSサーバが、ウェブ・サービス上でホストされるサイトについてDNSルックアップを受信すると、サーバは、リソースについてのユーザ要求の経路を指定するのに(例えば待ち時間に関して)最良な領域を決定し、ユーザ・データグラム・プロトコル・パケットなどの小さなメッセージをその領域内でサービスをホストしているロード・バランサに送信し、その後DNSルックアップに応答するよう構成される。ロード・バランサを、エンド・ユーザが最初のGET、PUTまたは他の要求をするまでに、コンテナが既にインスタンス化されるように、DNSサービスの通知を使用して、コンテナを起動するように構成してもよい。いくつかの例示としての実施形態において、あるユーザ要求が、追加の要求があるかもしれないと示すことがしばしばあるので、コンテナは所定の期間動作状態を維持することができ、ロード・バランサはコンテナの状態の情報をデータベースに維持することができる。DNSサーバ及びロード・バランサを、追加の要求の経路を既に実行しているコンテナに指定するためにこの情報を使用するようにさらに構成してもよい。コンテナがもはや不要になると、ロード・バランサ、コンテナを保持するオペレーティング・システムまたは他のシステム・コンポーネントが、コンピュータ、メモリ及びネットワーク・リソースを必要なときのみ使用して、必要に応じて非常に高速で初期化できるように、コンテナの停止または再インスタンス化を開始することができる。
【0010】
ドメイン・ネーム・システム(DNS)サービスが、エンド・ユーザの経路を1つ以上の通信ネットワーク・アプリケーションに指定する方法をカスタマに与えるように構成してもよい。例えば、DNSサービスを、ユニフォーム・リソース・ロケータ(URL)など人間が読み取り可能な名称を、インターネットを介して互いに接続するためにコンピュータ・システム同士が使用する数値インターネット・プロトコル(IP)アドレスに変換するよう構成してもよい。このように、コンピューティング・リソース・サービス・プロバイダが提供する1つ以上のサービスへのアクセス要求を、データ・ゾーン内で動作するインフラに接続させるようにDNSサービスを構成してもよい。
【0011】
例示としての実施形態は、DNSクエリが識別子または仮想マシンに関連する固有の識別子を含んでなるDNSサービスによる、クライアント・デバイスのDNSクエリを処理方法及びシステムを含む。いくつかの実施形態において、実際の要求がクライアント・デバイスから送られる前に、リソースを有効にする、または起動する(リソースの消費がより少ない停止状態から覚醒させる)ために、DNSクエリを使用して、クライアント・デバイスがアクセス要求をしているリソースへのメッセージ送信を開始することができる。
【0012】
クライアント側コンピューティング・デバイスを、クライアント・デバイスが送信したDNSクエリを解決するために、1つ以上のサービス・プロバイダ及び/またはネットワークを通じたネットワーク・プロバイダと通信するよう構成することも可能であり、ここで、サービス・プロバイダはDNSサービス・プロバイダに関連するコンピューティング・デバイスに対応する。サービス・プロバイダを、例えば、サーバ、ルータなどを収納する物理的な場所など、コンピューティング・ネットワーク上のノードに対応する任意の数の存在点(PoP)インタフェースを含む、様々なコンピューティング・リソースと関連付けることができる。ネットワークのクライアント・デバイスを与えるように、PoPの場所を、物理的通信ネットワーの端から端まで地理的に分散させることもできる。サービス・プロバイダは、さらに、クライアント・デバイスからのDNSクエリを解決するのに使用されるDNSサーバのコンピューティング・デバイスを含み得るDNSコンポーネントを含むことができる。DNSコンポーネントは、さらに、ロード・バランシングなど通信を容易にするハードウエア及び/またはソフトウエア・コンポーネントを含んでいてもよい。サービス・プロバイダは、さらに、ネットワークのネットワーク・リソース、デバイス及び/またはコンポーネントの状態に関する情報を維持するために使用されるリソース・キャッシュ・コンポーネントを含むことができる。
【0013】
クライアント・デバイスは、コンテナ、仮想マシン、自動スケーリング・グループ、ファイル・ベースのデータベース・ストレージ・システム、ブロック・ストレージ・サービス、冗長データ・ストレージ・サービス、データ・アーカイブ・サービス、データ・ウェアハウジング・サービス、ユーザ・アクセス管理サービス、コンテンツ・管理サービス、及び及び/または他のそのようなコンピュータ・システム・サービスなど、コンピュータ・サービスへのアクセスを含んでよい、サービス・プロバイダによって提供されるサービスへアクセスしてもよい。追加のサービスとしては、ディレクトリ・サービス、及びディレクトリ・サービスに関連するユーザ・リソース、ポリシー・リソース、ネットワーク・リソース及び及び/またはストレージ・リソースなど、コンピュータ・システム・サービスへのアクセスが含まれていてもよい。いくつかの分散型及び/または仮想化コンピュータ・システム環境において、コンピュータ・サービスに関連するリソースは、物理的デバイス、仮想デバイス、物理的及び/または仮想デバイスの組み合わせ、または他のそのようなデバイスの実施形態であってよい。
【0014】
ネットワーク・プロバイダは、仮想マシン、仮想リソースまたはコンテナなど、複数の仮想化方法を介して、アプリケーションをホストするネットワーク・コンポーネントを含むことができる。ネットワーク・コンポーネントは、複数の仮想マシンを提供する、またはコンテナもしくは仮想マシンなど仮想マシンの作成を動的に行わせるのに必要なハードウエア及びソフトウエアを含むコンピューティング・デバイスと動作可能に相互接続する、またはコンピューティング・デバイスを含むことができる。ネットワーク・コンポーネントはさらに、クライアント・デバイス、サービス・プロバイダ、DNSサービスなど、他のネットワーク・デバイスと通信するためのソフトウエア/ハードウエア・コンポーネントを使用する、または含むことができ、ここで、仮想化マシンを選択するためにネットワーク・コンポーネントを使用して、情報をDNSサーバに提供し、経路指定要求を容易にすることができる。
【0015】
クライアント・デバイスのカスタマとネットワーク・プロバイダが通信していなければ、カスタマとネットワーク・プロバイダとの通信プロセスは、ネットワーク・プロバイダが、利用可能なリソースにアクセスするために、登録プロセスから開始すればよい。登録プロセスは多種の情報を含むことができ、例えば、ネットワーク・プロバイダとの登録プロセスは、クライアント・デバイスのハードウエア及び/またはソフトウエアの種類の特定、セキュリティ・パラメータの構成、序列、サービスの質、識別情報などを含むことができる。クライアント・デバイスのカスタマは、さらに、類似する機能についてサービス・プロバイダで登録してもよく、サービス・プロバイダがまだDNS処理の許可を得ていなければ、サービス・プロバイダがドメインについてのDNSクエリを処理し、リソースを管理するよう要求してもよい。
【0016】
クライアント・デバイスは、ユニバーサル・リソース・アイデンティファイアとも呼ばれるユニフォーム・リソース・アイデンティファイア(URI)などのリソース識別子、より具体的にはURLを使用して、ネットワーク・プロバイダのコンポーネントまたはコンピューティング・デバイスと対話することができる。URLは、通常、ウェブページなどのリソースを参照するための具体的なストリングである。URLは、通信ネットワークの異なるネットワーク・コンポーネントに対する指示に類似する多数の情報を与える。URLは、通常、例えば識別子、ページ・アドレス、フォルダ名、マシン名など、リソースのプロトコル、ホスト、及び可能な経路を含む。例えば、
http://www.domain_name.com/path_information
URLは、クエリ、ポート番号または具体的なリソースに関連する他の詳細などの追加情報を含んでいてもよい。
【0017】
ドメイン名は、通常英数字からなり、具体的なリソースについて数値インターネット・プロトコル(IP)アドレスに変換される。URLのドメイン名の部分は、リソースを管理するためにネットワーク・プロバイダが使用する識別子に対応する固有識別子など、追加情報を含んでいてもよい。例えば、上で挙げたURLの例の代わりに、URLに含まれる固有識別子は次のようなものでよい。
http://www.unique.domain_name.com/path_information
他の一例としての実施形態において、URLのドメイン名の部分は、サービス・レベル情報、金融情報、地理情報、存在点情報を直接または間接的に特定するための追加情報を含んでいてもよい。例えば、URLは次のようなものでよい。ttp://www.billing.unique.host_domain.com/path_informatio
【0018】
(クライアントなどの)ブラウザのアドレス・バーに入力するURLを、DNSクエリ内のユーザのコンピュータがDNSサーバに送信するが、DNSサーバは、URLで与えられたドメイン情報(DNSクエリのDNS部分)をIPアドレスに変換するよう通常構成されている。代替の一例としての実施形態は、ハイパーリンクを用いたユーザによる項目クリックの後にDNSクエリが送られること、自動プロセスによってクエリが作成されることなどを含む。DNSクエリを解決した上で、DNSサーバは、クライアント・デバイスにロード・バランサのIPアドレスを与える応答を送信する。しかしながら、DNSサーバがクライアント・デバイスからリソースについてのクエリを受信するのと同時またはほぼ同時に、DNSサーバは、ロード・バランサにメッセージを送信して、ロード・バランサに、要求したリソースが位置する仮想リソースを有効にするよう要求する。クライアント・デバイスがIPアドレスを受信すると同時、またはほぼ同時に(コンテナが有効になった時間と同時、またはほぼ同時という場合と同様に)、クライアント・デバイスは、リソースについてロード・バランサに要求を送信する。ロード・バランサは、その要求を、仮想リソースが動作可能に相互接続される仮想リソース・ストアに転送し、仮想リソース及びロード・バランサが要求をユーザに戻す。DNSサーバは、DNSサービスまたはDNS処理システムなど、より大きなシステムのコンポーネントであってもよいことを理解されたい。
【0019】
例えば、ユーザは画像データベースのウェブサイトから画像を取り出したいとする。この状況で、ユーザは、画像データベースのウェブサイトのURLを自身のブラウザに入力して、DNSクエリを送信し、応答を待つが、このDNSクエリ及び解決プロセスはユーザに効果的に不可視化される。ユーザが要求したURLについてIPアドレスを受信した上で、ユーザのデバイスは、画像についての要求をプロキシ・サーバに送信するが、プロキシ・サーバは、ロード・バランサなどの中間サーバでありうる。要求されたデータは、コンテナ・サービス内のコンテナに格納されているので、ロード・バランサは、要求されたデータの場所を判定し、データを非常に早くユーザに提供することができる。
【0020】
図1は、様々な実施形態に係る態様を実施するための環境100の一例としての実施形態である。説明のために、インターネット環境100を使用するが、様々な実施形態を実施するよう、適宜別の環境を使用してもよいことは理解されよう。環境は、電子クライアント・デバイス102を含み、クライアント102には、好適なネットワーク101を介して要求、メッセージまたは情報を送り、いくつかの実施形態においては、情報をデバイスのユーザに送り返すよう動作可能な好適なデバイスが含まれる。このようなクライアント・デバイスの例として、パーソナル・コンピュータ、携帯電話、ハンドヘルド・メッセージ・デバイス、ラップトップ・コンピュータ、タブレット・コンピュータ、セットトップ・ボックス、パーソナル・データ・アシスタント(PDA)、埋め込み型コンピュータ・システム、電子ブック・リーダなどが挙げられる。ネットワークとしては、イントラネット、インターネット、セルラー・ネットワーク、ローカル・エリア・ネットワーク、衛星ネットワーク、または他のネットワーク及び/またはこれらの組み合わせを含む任意の好適なネットワークを挙げることができる。このようなシステムで使用されるコンポーネントは、ネットワークの種類及び/または選択した環境に少なくとも一部依存する。このようなネットワークを介した通信のためのプロトコル及びコンポーネントは公知であるので、ここで詳細に述べない。ネットワークを介した通信は、有線または無線接続及びその組み合わせにより有効になる。
【0021】
一例としての実施形態は、ドメイン・ネーム・システム(DNS)サーバ105にインターネットなどのネットワーク101を介して接続されるクライアント・デバイス102を含む。クライアント・デバイスのユーザが、クライアント・デバイスでウェブ・ブラウザ(クライアント)にユニバーサル・リソース・ロケータ(URL)を入力すると、これが(不図示の)DNSリゾルバを有効にする。DNSリゾルバはDNSのクライアント側にあり、問い合わせをしたリソースを完全に変換するために、例えばドメイン名をインターネット・プロトコル(IP)アドレスに変換するために、クライアントのクエリを開始して、順番付けるよう構成される。このプロセスはユーザに可視化されている。
【0022】
図1に戻って、DNSリゾルバは、要求したドメインについてのIPアドレスを受信するために、DNSクエリ106をDNSサーバに送信する。DNSサーバがDNSクエリを受信すると、DNSサーバは、少なくとも2つの動作を同時またはほぼ同時に実行するように構成される。代替の一例としての実施形態では、複数の動作は、任意のシーケンス及びタイミング配置で実行される。第1の動作は、メッセージをロード・バランサ110に送ること134であり、第2の動作は、DNSクエリを解決して、クライアント・デバイスに応答することである(以下で詳細に説明する)。第1の動作の一例としての実施形態では、DNSサーバは、ハードウエアまたはソフトウエアであってよいロード・バランサにメッセージを送信する。メッセージには、ユーザ・データグラム・プロトコル(UDP)メッセージが含まれてよく、UDPメッセージはデータグラムと呼ばれ、1から2キロバイトの短いメッセージで、ロード・バランサまたはロード・バランシング・レイヤに、コンテナのリソースについて、要求を作成中または作成予定であることを通知するものであってよい。メッセージは、要求をより効率的に処理するため、要求の受信を予想してインスタンス化するよう要求するためのものである。
【0023】
代替の一例としての実施形態は、DNSクエリ自体を転送するなど、より複雑なメッセージを送信してもよい。代替の一例としての実施形態では、DNSサーバは、コンテナに関連するURIまたはURLの結果としてメッセージを選択的に与えるようさらに構成され、識別子がいずれのコンテナとも関連がない場合はメッセージをさらに送ることはない。さらに別の一例としての実施形態は、メッセージ134などのメッセージを、リソースを起動するために、その種類のメッセージを受信するよう構成された任意のネットワーク・コンポーネントに送信することを含む。例えば、リソースはキャッシュ内のある項目であってよく、その場合、メッセージはブロック・レベルのデータ・ストレージ・サービスに送信され、サービスに画像をメモリにロードするよう要求する。代替の一例としての実施形態は、メッセージを第1の場所から仲介を伴わないバックエンド・ネットワーク・コンポーネントに送信することを含むようにしてもよい。
【0024】
ロード・バランサ110は、通常、プロキシ・サーバもしくは仲介のネットワーク・コンポーネント上で実行されるソフトウエア・アプリケーション、または、クライアントが与えるバックエンド・サーバつまりネットワーク・コンポーネント、もしくは別のネットワーク・コンポーネントに要求を転送することを含む複数の目的で使われるハードウエア・ロード・バランサである。この一例としての実施形態では、ロード・バランサは、クライアント・デバイスが要求したリソースを格納するコンテナを有効にするよう要求するメッセージをDNSサーバから受信する。通常、ロード・バランサは多数の追加の特徴を有しており、ここで示す一例としての実施形態でも同様に使用され、例えば、ロード・バランサはサーバの有効化、直接的なサーバ復帰、ヘルス・チェック、HTTPをキャッシュに格納、優先度付きキューイングなどを優先させることができる。
図1の一例としての実施形態では、ロード・バランサは、固有識別子、ユニフォーム・リソース・インジケータ(URI)、ユニフォーム・リソース・ロケータ(URL)などによって識別されてよいリソースの名前に基づいて、リソースを格納するコンテナの場所を知る。
【0025】
ロード・バランサ110がメッセージを転送し(138)が、メッセージ138は少なくともコンテナ121のURIまたはURLを含み、コンテナ121はリソース・サービス120に格納されている何千または何百万ものコンテナの一つであってよい。メッセージ138は、コンテナにリソースが要求される予定であること、差し迫る要求に効率的に応答するために、コンテナを動作状態にする(起動させる)必要があることを通知する。メッセージを受信すると、コンテナは起動またはインスタンス化されて動作状態になる。いくつかの例としての実施形態では、一旦インスタンス化されると、コンテナは、パブリックまたはプライベートIPアドレスである、自身のIPアドレスを持つ。ロード・バランサは、トラフィックをコンテナに転送するために、ロード・バランサのローカル・データべースまたはロード・バランサと動作可能に相互接続したローカル・データベースの検索を実行して、新たにインスタンス化されたコンテナのパブリックまたはプライベートIPアドレスを判定する。
【0026】
いくつかの例としての実施形態において、要求されているリソースがロード・バランサまたはDNSサーバに知られている場合、コンテナを、複数のリソースがコンテナに格納されているかぎり、正確なリソース131を特定するよう構成することができる。通常、コンテナは、任意の種類のリソース、例えば、静止したウェブサイトのコピー、ウェブ・リソース、ウェブサイト、画像、ウェブ・フォーム、実行可能なコード、アプリケーション・プログラミング・インタフェース(API)などを収納することができる。いくつかの一例としての実施形態では、データまたはリソースに、ネットワーク・デバイスなど別の場所からコンテナがアクセスしてもよい。
【0027】
図1に戻って、上述のとおり、DNSサーバは、ほぼ同時に2つの動作を行う。第2の動作は、DNSクエリを解決して、応答メッセージをDNSサーバからクライアント・デバイスに送信して(107)、要求されたリソースのIPアドレスを与える。クライアント・デバイスが要求したIPアドレスを受信すると、クライアント・デバイスは、所定のリソースについての要求メッセージを送信することができる(132)。この一例としての実施形態では、要求は、仲介のネットワーク・コンポーネント(ロード・バランサ)を通じてクライアントから送られ、その後、要求が、有効化されたコンテナに転送される(141)。代替の一例としての実施形態では、要求をコンテナもしくはリソースに直接提供する、または2つ以上の仲介もしくはプロキシ・サーバを介して送信するようにしてもよい。リソース131についての要求を受信すると、コンテナは、ロード・バランサを介して即座に要求を戻し142、次に要求をクライアント・デバイスに与える133。
【0028】
図2は、仮想マシン225及びコンテナ・リソース245を示すブロック
図200の一例を示す。通常、仮想マシンは、物理的マシンのようにプログラムを実行するマシン(すなわちコンピュータ)内のソフトウエア実装の仮想化である。従来の仮想化では、各仮想マシンについてオペレーティング・システムのフル画像が必要となる。通常、仮想マシン(VM)は、ホストのオペレーティング・システム226を実行しているホスト・マシンから、仮想化されたデバイス及びネットワークを介してリソースにアクセスする。通常、仮想マシンは、リソースが大量にあり、ホスト・マシンは所与の時間で限られた数のVMしか実行させることができない。システムの仮想マシンの場合、各々が完全なオペレーティング・システム227a―227c、完全なリソースのセット228a―228c、各特定の仮想マシンに適用可能な任意のプロセス229a―229cを維持する。
【0029】
例えば、要求を処理する仮想マシンを、要求を処理するためにインスタンス化することができる。特に、物理的なホストを使用して、要求についてサービスを提供するという特定の目的のために仮想マシンをインスタンス化する。物理的なホストまたは物理的なホストと通信する別のコンピュータ・システムが要求を受信すると、物理的なホストはデータ・ストレージからの情報にアクセスし、物理的なホストは要求を処理するのに好適なアプリケーションを含む仮想マシンをインスタンス化することができる。要求に関連して、仮想マシンがもはや必要でなくなると、仮想マシンを非インスタンス化してもよい。物理的なホストは、他の仮想マシンなどの他の目的でコンピューティング・リソースを使用できるように、仮想マシンに割り当てられていたコンピューティング・リソースの割り当てを停止してもよい。このように、物理的なホストは、要求についてサービスを提供するために仮想マシンが使用されていない場合、コンピューティング・リソースが仮想マシンの専用になることを回避する。今後要求を受信することがあれば、物理的なホストは、適宜少なくとも1つの仮想マシンをインスタンス化すればよい。
【0030】
コンテナ245は、単一の制御ホスト246上で、複数の孤立システム、ここではコンテナまたはコンテナと呼ぶ、を実行させるためのオペレーティング・システム・レベルの仮想化方法である。単一のオペレーティング・システム(OS)を有するコンテナの一例としての実施形態は、コンテナの仮想化によってゲストを分離させるが、ホスト・マシンのハードウエアの仮想化をしようとしないので、通常より効率的である。ハードウエア仮想化の代わりに、コンテナの仮想化では、アプリケーションのプロセス248a―248gなど、各仮想環境についてコンテナを作成し、コンテナはカーネルなどのユーザ・ツールを使用して実行させることができ、ユーザ・ツールは、各コンテナが同一のカーネル下でファイル・システム、プロセス、メモリ、デバイスなどを管理するようにリソース管理を行い、プロセスを分離することができる。コンテナの一例としての実施形態は、単一のOS及び他のリソース247(例えば、バイナリ・ファイル、ライブラリ・リソースなど)を管理、共有することができる。コンテナの実施形態は、ホスト・マシンなど同一のカーネル上で実行されるが、所望であれば異なるパッケージ・ツリーまたは分散を実行させることができる。コンテナは通常同一のOSから展開されるので、コンテナの作成及び維持は、仮想マシンと比較してはるかに単純である。
【0031】
いくつかの実施形態において、単一のハードウエア、例えば、コンピュータまたはサーバは、何千ものコンテナを実行させることができ、コンテナが物理的な電気機器のディスク上のカーネルを共有し、そのハードウエア上のコンテナが、マシンのリソースすべて、例えば、メモリ、CPUなどを共有する。コンテナを伴うオーバヘッドの削減は、非常に多くのコンテナ(例えば数十万)の作成、提供が可能となり、各コンテナのスタートアップ及びシャットダウン速度を高速化することができるという利点のさらなる追加につながる。いくつかの一例としてのコンテナでは、ホスト―マシン・アップデートなど、システム全体に及ぶ変更は各コンテナにおいて見ることができる。コンテナは、オンデマンドすなわちユーザまたは動作可能に相互接続したデバイスからの要求を受けて、インスタンス化し、命令を受けて停止または休止状態になってから再インスタンス化することができるように構成されるので、コンテナが実行していない場合、ホスト・マシンのハード・ドライブ・スペースを除きほぼ全くリソースを消費しない。コンテナは例示のために広範囲に使用しているが、本明細書で提供する技術を、例えば、オンデマンドでインスタンス化される仮想マシンなどの他のリソースについて使用することもできる。本明細書は、2013年8月12日出願の米国特許第13/964,977号、「PER REQUEST COMPUTER SYSTEM INSTANCE(要求毎のコンピュータ・システムのインスタンス化)」の全開示をあらゆる目的のために参照により本明細書に組み込む。
【0032】
図3は、キャッシュの暖機に使用されるドメイン・ネーム・システム(DNS)のクエリを示す環境300の一例を示している。知られているとおり、キャッシュは、情報またはデータについての今後の要求を迅速に行えるよう、透過的に情報またはデータを格納するように構成されたネットワーク・コンポーネントである。サーバのようなネットワークまたはネットワークのコンポーネントのいずれのレベルにおいてもキャッシュをサポートする場合の課題の一つが、クライアント・デバイスのカスタマがリソースまたは情報について要求をしていない場合は特に、キャッシュを最新(フレッシュ)で空でない(暖機)状態で維持することである。
【0033】
暖機したキャッシュによって、カスタマの要求への応答が速くなり、情報についての要求がされ、キャッシュを非動作状態から起動させなくてはならない場合に発生する待ち時間を削減することができる。いくつかの実施形態において、キャッシュが非動作状態(コールド)の場合、カスタマの要求またはアプリケーションの要求を受信した際、待ち時間及び処理量の削減などの性能問題が生じる。キャッシュを暖機状態に維持することにより、多くの効果が得られる。例えば、キャッシュが起動するたびにボリュームまたはデータベースのキャッシュで同一または類似のクエリを受信する場合、ボリュームまたはデータベースへの新しいクエリの実行時間を短縮化し、性能を向上させる。
【0034】
キャッシュをリロード(暖機)する一例としての実施形態は、サーバが、サーバのボリュームまたはサーバと動作可能に相互接続したデータベースが過去に記録したデータまたはファイルを包含かどうかを判定することを含む。ボリュームが過去に記録した情報を包含する場合、サーバを、空でない状態にキャッシュを維持するために、キャッシュに情報をロードするように構成してもよい。
【0035】
図3の一例としての実施形態において、クライアント・デバイス302のカスタマは、ネットワーク301を介して、URLに関連するIPアドレスを要求するDNSクエリ306をDNSサーバ305に送信する。ほぼ同時刻または同時に、DNSサーバは、キャッシュの初期化を要求する334メッセージをプロキシ・サーバ330に送信し、DNSクエリを解決して、IPアドレスを含むメッセージ307をクライアント・デバイスに与えるように構成される。プロキシ・サーバ330へのDNSメッセージ334一例としての実施形態は、データグラムと呼ばれるユーザ・データグラム・プロトコル(UDP)メッセージが含まれ、データグラムは、キャッシュ335に、情報についての要求が到来しつつあることを通知する1から2キロバイトの短いメッセージ、またはデータベース336からのキャッシュのプリロード・ファイル337を要求する、より長いデータグラムであってよい。データベース336及びキャッシュ335は、追加のネットワーク・コンポーネントを介して直接または間接的に動作可能に相互接続すればよい。このような一例としての実施形態では、プロキシ・サーバへのファイルについてのクライアント要求が送信される(332)と、プロキシ・サーバは、キャッシュを暖機し、要求された情報をキャッシュにプリロードするような効率的な方法で、要求に応える(333)ように構成される。キャッシュを予め暖機するまたは暖機することには、高速仮想マシン、データ・ファイル、ストレージ・システム、データベースまたは仮想コンピュータ・システムを予め暖機することが含まれる。プロキシ・サーバは、DNSとクライアント間の任意の仲介サーバであってよく、例えば、プロキシ・サーバはロード・バランサであるかロード・バランシング・レイヤを含む。
【0036】
代替の一例としての実施形態では、DNSサーバでのキャッシュへの格納は、クライアント・デバイスからDNSクエリを受信後のDNS解決処理中に行うことができる。要求またはクエリの記録は、ネットワーク・オーバヘッド及び要求を解決するDNSサーバへの負荷を軽減するために、キャッシュ妥当性または有効期間として知られている期間中にキャッシュに格納すればよい。クエリの記録は、所定期間DNSサーバに関連するキャッシュに残るため、ネットワーク・アクティビティに従って動的に調整されるか、ネットワーク・アドミニストレータなどに従って予め決定することができる。別の例としての実施形態は、DNSサービス・コンポーネントを、DNSクエリにより効率的に応答するために、対応のIPアドレスに関連するドメイン名をキャッシュに格納するように構成することを含むことができる。
【0037】
図4は、
図1に関連して記載し、例示したDNSサーバ105などのDNSサーバによるDNSクエリに応答するのに使用されるプロセス400の一例を示す。1つの実施形態において、プロセス400は、DNSクエリをクライアント・デバイスから受信すること(402)を含み、DNSクエリは、クライアント・デバイスによって、上述のようにネットワークを介して提示されるものでよい。要求は、例えば、クライアント・デバイスのカスタマによって、DNSサーバまたは
図1に関連して述べたようなDNS用のサービス処理システムで受信される。
図4を参照すると、DNSサービス・サーバは、ユーザ・データグラム・プロトコル(UDP)メッセージをロード・バランサに送信する(404)。ロード・バランサは、ハードウエア、またはソフトウエア・アプリケーション内のロード・バランシング・レイヤでありうる。代替の実施形態は、DNSサーバが、UDPメッセージをプロキシ・サーバもしくは別のネットワーク・コンポーネントに送信する、またはUDPメッセージを複数の仲介コンポーネントを介して送信することを含むことができる。代替の一例としての実施形態は、DNSサーバが、UDP以外のプロトコルを使用して、異なるメッセージまたは要求を送信することを含む。
【0038】
UDPメッセージの送信と並行して、DNSサービスは、DNSクエリを解決して、ロード・バランサのインターネット・プロトコル(IP)アドレスを、DNSクエリを送信したクライアントのクライアント・デバイスに送信するように構成される(410)。代替の例としての実施形態は、IPアドレスの送信とは別の時間にUDPメッセージをクライアント・デバイスに送信することを含む。プロセス400が継続すると、ロード・バランサのIPアドレスがクライアント・デバイスに送信された後、クライアント・デバイスはロード・バランサに接続すればよい(412)。
【0039】
プロセス400が継続すると、DNSサーバがUDPメッセージをロード・バランサに送信後、DNSサーバは、
図1に関連して例示し説明したコンテナ121などのコンテナを有効にする旨の通知を送信する(406)。DNSサーバは、コンテナ、コンテナを管理するリソース・サービス、コンテナをサポートするハードウエア・コンポーネントもしくはファーム、ロード・バランサもしくはロード・バランシング・レイヤ、またはコンテナと通信可能な他のネットワーク・コンポーネントに直接通知を送信してもよい。
図4に戻って、DNSサーバまたは他のネットワーク・コンポーネントは、DNSクエリに関連するリソースを格納するコンテナの識別子をロード・バランサに転送する(408)ように構成してもよい。1つの例示としての実施形態では、ロード・バランサのIPアドレスは、DNSがホストするパブリックIPアドレスである。代替の一例としての実施形態では、ロード・バランサのIPアドレスは、異なるまたは別のウェブ・サービスによってホストされ、追加のアクションを必要とする。例えば、コンテナはプライベートIPアドレスを持っているので、IPアドレスはインターネットで公的に人目に触れることはなく、したがって、このような場合、ロード・バランサは、すべてのトラフィックをプロキシする、例えば、ロード・バランサをプロキシするよう構成される。さらに別の例としての実施形態は、インスタンス化されているコンテナが、パブリックIPアドレスを受信するので、コンテナはインターネットで人目に触れ、したがって、クライアント及びコンテナは、ロード・バランサまたは他のプロキシを必要とすることなく直接通信する。
【0040】
プロセス400が継続されると、UDPメッセージの送信と並行して、DNSサーバは、DNSクエリを解決して、ロード・バランサのIPアドレスをクライアント・デバイスに送信し(410)、クライアント・デバイスがロード・バランサと接続する(412)。代替の例としての実施形態では、クライアント・デバイスを、コンテナと直接接続するように構成してもよい。
【0041】
図5は、
図1に関連して例示し、説明したコンテナ121などの仮想リソースが有効かどうかを判定するのに使用されるプロセス500の一例を示す。プロセス500は、DNSサーバまたはサービスにより、仮想リソースのリソース識別子に関連するDNSクエリを獲得する(502)ことにより開始する。リソース識別子は、DNSクエリの一部に含まれる固有識別子であってよい。DNSサーバは、さらに、仮想リソースに関連するもしくは動作可能に相互接続されたロード・バランシング・レイヤまたはロード・バランサに、ステータス要求通知を送信する(504)。ロード・バランサが、仮想リソースのステータスが有効かどうかを判定する(506)、例えば、コンテナが現在インスタンス化されているかどうかを判定することによって、プロセス500は継続する。コンテナが有効である場合、DNSサーバはDNSクエリを解決してもよい(512)。コンテナが有効でない場合、DNSサーバまたは他のネットワーク・コンポーネントは、仮想リソースを有効化するようメッセージを送信する(508)ように構成される。DNSサーバまたは他のネットワーク・コンポーネントは、仮想リソースの識別子をロード・バランサに送信または転送するように構成され、仮想リソースが再度インスタンス化されることになる(510)。仮想リソースが有効である時点で、DNSサーバはDNSクエリを解決してもよい(512)。
【0042】
図6は、ドメイン・ネーム・システム情報をインターネット・プロトコル・アドレスに関連付けるのに使われるようなプロセス600の一例を示す。プロセス600は、多くのネットワーク・コンポーネントのうちの一つ、例えばDNSサービスによって実行することができる。DNSサービスは、クライアント・デバイスからDNSクエリを受信し(602)、ドメイン名についてDNSクエリの少なくとも一部を構文解析する(604)。DNSサービスは、ドメイン名をリソース識別子に関連付け(606)、リソース識別子を、DNSサービスに関連するキャッシュに記録する(608)。代替の例としての実施形態では、DNSサービスは、リソース識別子を、DNSサービスにアクセス可能なデータベースまたはファイルに記録することができる。記録には、クライアント・デバイスのカスタマについて知られている追加情報、例えば課金契約、サービス契約の質、サービス・プロバイダ情報、ネットワーク・プロバイダ情報などが含まれていてよい。
図6に戻って、DNSサービスは、類似するリソース識別子について、DNSサービスに関連するキャッシュを検索する(610)。リソースが既にキャッシュに存在する場合、リソースの記録を比較して、情報が失われているまたは更新されているものがあるかどうかを判定する。DNSサービスは、現在または今後、DNSクエリを解決するためにリソース識別子を利用することができる(612)。
【0043】
図7は、本開示の様々な実施形態が実施されうる環境700の一例を示す。環境700では、コンピューティング・リソース・サービス・プロバイダ703が、様々なサービスをカスタマ702に提供してもよい。カスタマ702は、動作し、ビジネス・ニーズを管理するために、・コンピューティング・リソース・サービス・プロバイダ703が提供する様々なサービスを利用するような組織であってよい。
図7に示すように、カスタマ702は、インターネットなど1つ以上の通信ネットワーク701を通じてコンピューティング・リソース・サービス・プロバイダ703と通信してもよい。カスタマ702からコンピューティング・リソース・サービス・プロバイダ703への通信の中には、コンピューティング・リソース・サービス・プロバイダ703に、本明細書に記載の様々な技術またはその変形にしたがって動作させるものがある。コンテナ・リソース・サービス707は、コンテナを実行させることができるハードウエアの1つまたは複数のフリートで維持されるハードウエア及び仮想コンピュータ・システムの集合体であってよい。
【0044】
ドメイン・ネーム・システム(DNS)サービス706を、エンド・ユーザの経路を1つ以上の通信ネットワーク・アプリケーションに指定する方法をカスタマに与えるように構成してもよい。例えば、DNSサービス706を、ユニフォーム・リソース・ロケータ(URL)など人間が読み取り可能な名称を、インターネットを介して互いに接続するためにコンピュータ・システムが使用する数値インターネット・プロトコル(IP)アドレスに変換するよう構成してもよい。したがって、DNSサービス706を、コンピューティング・リソース・サービス・プロバイダが提供する1つ以上のサービスにアクセスする要求を、特定のデータ・ゾーン内で動作するインフラに接続させるよう構成してもよい。さらに、DNSサービス706を、コンピューティング・リソース・サービス・プロバイダ703のカスタマの経路が、別のプロバイダが運営する別のオペレーティング・システムなど、特定のデータ・ゾーン外のインフラに指定されるように構成してもよい。
【0045】
さらに、コンピューティング・リソース・サービス・プロバイダ703は、カスタマのニーズに基づいて1つ以上の他のサービス704を管理してもよい。例えば、コンピューティング・リソース・サービス・プロバイダ703は、コンピューティング・リソース・サービス・プロバイダ703の各カスタマ702について、カスタマのアカウント情報を管理するよう共同で動作するコンピューティング・リソースの集合体からなるアカウント・サービスを保てばよい。アカウント・サービスは、例えば、コンピューティング・リソース・サービス・プロバイダ703の各カスタマ702について、カスタマ名、アドレス、電話番号、請求書の詳細及び他の個人識別情報を含めてもよい。さらに、アカウント・サービスは、コンピューティング・リソース・サービス・プロバイダ703が提供する1つ以上のサービスにアクセスするための正当な権限をカスタマ702が有していることを立証するのに使用されるような、暗号キーまたは他の身分証明を含んでいてもよい。他のサービスとしては、認証サービス、他のサービスを管理するサービス及び/または他のサービスが含まれるが、これらに限定されることはない。
【0046】
図8は様々な実施形態にかかる態様を実施するための一例としての環境800の態様を示す。説明のために、ウェブ・ベースの環境を使用するが、様々な実施形態を実施するよう、適宜別の環境を使用してもよいことは理解されよう。環境には、電子クライアント・デバイス802を含み、クライアント・デバイス802には、好適なネットワーク804を介して要求、メッセージまたは情報を送り、いくつかの実施形態においては、情報をデバイスのユーザに送り返すよう動作可能な好適なデバイスが含まれる。このようなクライアント・デバイスの例として、パーソナル・コンピュータ、携帯電話、ハンドヘルド・メッセージ・デバイス、ラップトップ・コンピュータ、タブレット・コンピュータ、セットトップ・ボックス、パーソナル・データ・アシスタント(PDA)、埋め込み型コンピュータ・システム、電子ブック・リーダなどが挙げられる。ネットワークとしては、イントラネット、インターネット、セルラー・ネットワーク、ローカル・エリア・ネットワーク、衛星ネットワーク、または他のネットワーク及び/またはこれらの組み合わせを含む任意の好適なネットワークを挙げることができる。このようなシステムで使用されるコンポーネントは、ネットワークの種類及び/または選択した環境に少なくとも一部依存する。このようなネットワークを介した通信のためのプロトコル及びコンポーネントは公知であるので、ここでは詳細に述べない。ネットワークを介した通信は、有線または無線接続及びその組み合わせにより有効になる。この例では、当業者には自明なように、他のネットワークについては、同様な目的を与える代替のデバイスを使用することができるが、環境が要求を受信して、要求への応答としてコンテンツを与えるようなウェブ・サーバ806を含むように、ネットワークはインターネットを含む。
【0047】
例示した環境は、アプリケーション・サーバ808及びデータ・ストア810を少なくとも含む。好適なデータ・ストアからデータを獲得するなどのタスクを行うよう相互作用可能なように連鎖、そうでなければ構成されるアプリケーション・サーバ、レイヤもしくは他の要素、プロセスもしくはコンポーネントがいくつかあることを理解されたい。本明細書で使用するサーバは、ハードウエア・デバイスまたは仮想コンピュータ・システムなど、様々な方法で実装してもよい。いくつかの文脈では、サーバは、コンピュータ・システム上で実行されるプログラミング・モジュールを指すことがある。本明細書で使用しているように、別段の記載があるとき、または文脈から明らかであるときを除き、「データ・ストア」という用語は、データを格納でき、データにアクセスでき、データを取り出し可能な任意のデバイスまたはデバイスの組み合わせを指し、任意の標準的、分散型、仮想型またはクラスタ型環境における、任意の組み合わせ及び数のデータ・サーバ、データベース、データ・ストレージ・デバイス及びデータ・ストレージ・メディアが含まれるものであってよい。アプリケーション・サーバは、クライアント・デバイスについて1つ以上のアプリケーションの態様を実行するために、必要に応じてデータ・ストアと統合化し、各アプリケーションについてデータ・アクセス及びビジネス・ロジックのいくつかまたはすべてに対処するための任意のハードウエア、ソフトウエア及びファームウェアを含むことができる。アプリケーション・サーバによって、データ・ストアと協働してアクセス制御サービスを提供してもよく、ハイパーテキスト・マークアップ言語(「HTML」)、拡張マークアップ言語(「XML」)、ジャバスクリプト、カスケーディング・スタイル・シート(「CSS」)または別の好適なクライアント側の構造化言語の形式でウェブ・サーバがユーザに与えられるような、テキスト、グラフィック、音声、ビデオ及び/またはユーザに提供するために利用可能な他のコンテンツを含む、ただしこれらに限定されることはない、コンテンツを生成することができる。クライアント・デバイスに転送されるコンテンツを、クライアント・デバイスが処理して、ユーザに聞き取り可能に、視覚的に及び/または触覚、味覚、嗅覚を含めた他の感覚を通じて認識可能な形態を含む、ただしこれらに限定されることはない、1つ以上の形態でコンテンツを提供するようにしてもよい。クライアント・デバイス802とアプリケーション・サーバ808との間のコンテンツのやり取りと同様にすべての要求及び応答の対処は、PHP:ハイパーテキスト・プリプロセッサ(「PHP」)、Python(登録商標)、Ruby(登録商標)、Perl(登録商標)、Java(登録商標)、HTML、XMLまたはこの例における他の好適なサーバ側の構造化言語を使用してウェブが対処することができる。本明細書で検討する構造化コードは、本明細書の他の箇所で検討したような任意の好適なデバイスまたはホスト・マシン上で実行可能であるので、ウェブ及びアプリケーション・サーバは必須ではなく、単なる一例としてのコンポーネントであることを理解されたい。さらに、単一のデバイスによって実行されるような本明細書に記載の動作は、文脈から明らかなときを除き、分散型及び/または仮想システムの形態をとるような、複数のデバイスによって共同で実行してもよい。
【0048】
データ・ストア810は、いくつかの別個のデータ・テーブル、データベース、データ・ドキュメント、動的データ・ストレージ・スキーム及び/または本開示の特定の態様に関連するデータ格納のためのデータ・ストレージ機構及びメディアを含むことができる。例えば、例示のデータ・ストアは、プロダクション・データ812及び及びユーザ情報816を格納するための機構を含んでいてもよく、データ812、816を生産側にコンテンツを提供するために使用することができる。さらに、データ・ストアは、ログ・データ814を格納するための機構を含むものとして示されており、データ813をレポート、解析または他のそのような目的のために使用することができる。適宜、上で挙げた機構のいずれか、またはデータ・ストア810の追加の機構に格納可能なページ画像情報及びアクセス権情報など、データ・ストアに格納する必要がある他の多くの態様があることを理解されたい。データ・ストア810は、関連のロジックを通じて、アプリケーション・サーバ808から指示を受信し、指示に応答してデータを獲得し、更新または処理するよう動作可能である。アプリケーション・サーバ808は、受信した指示に応答して、静的データ、動的データまたは静的と動的データの組み合わせを与える。ウェブ・ログ(ブログ)、ショッピング・アプリケーション、ニュース・サービス及び他のこのようなアプリケーションで使用されるデータなどの動的データを、本明細書で記載のようなサーバ側の構造化言語によって生成してもよく、またはアプリケーション・サーバ上またはアプリケーション・サーバによる制御の下作動するコンテンツ管理システム(「CMS」)によって提供してもよい。一つの例では、ユーザは、ユーザ操作のデバイスを通じて、ある種類の項目について検索要求を提出することがある。この場合、データ・ストアは、ユーザの身元を立証するためにユーザ情報にアクセスして、当該種類の項目についての情報を獲得するためにカタログ詳細情報にアクセスすることができる。次に、ユーザがユーザのデバイス802上でブラウザを介して見ることが可能なウェブページでリスト化された結果などで、情報をユーザに戻すことができる。特定の対象項目についての情報を、専用のページまたはブラウザのウィンドウで見ることができる。しかしながら、本開示の実施形態は、ウェブページのコンテンツに必ずしも限定されることはなく、通常、要求を処
理するのにより一般的に適用可能なものであってよく、その場合、要求は必ずしもコンテンツについての要求ではないということに注意されたい。
【0049】
各サーバは、典型的には、一般管理及び当該サーバの動作についての実行可能なプログラム指令を与えるオペレーティング・システムを含み、典型的には、サーバのプロセッサによる実行時、サーバが意図する機能を果たすことを可能にする指令を格納する(ハード・ディスク、ランダム・アクセス・メモリ、リード・オンリー・メモリなど)コンピュータ可読ストレージ媒体を通常含む。オペレーティング・システム及びサーバの一般的な機能についての好適な実施は、公知または市販されており、当業者により、特に本明細書の開示に照らして容易に実施される。
【0050】
1つの実施形態において、環境は、1つ以上のコンピュータ・ネットワークまたは直接接続を用いて、通信リンクを介して相互接続するいくつかのコンピュータ・システム及びコンポーネントを利用する分散型及び/または仮想コンピュータ環境である。しかしながら、そのようなシステムは、
図8に示すコンポーネントより少ないまたははるかに多い数のコンポーネントを有するシステムでも同様に首尾よく動作可能であることは当業者には理解されるであろう。したがって、
図8のシステム800の図示は、本来例示的なものであり、開示の範囲を制限するものではないとみなされるべきである。
【0051】
さらに、様々な実施形態は、広範な動作環境で実施可能であり、いくつかの場合では、複数のアプリケーションのいずれかを動作させるのに使用可能な1つ以上のコンピュータ、コンピューティング・デバイスまたは処理デバイスを含むことができる。ユーザまたはクライアント・デバイスは、標準のオペレーティング・システムで実行されるデスクトップ、ラップトップまたはタブレット・コンピュータ、ならびに携帯電話用ソフトウエアを実行させ、複数のネットワーキング及びメッセージング・プロトコルをサポート可能な無線及び携帯デバイスなど、複数の汎用パーソナル・コンピュータのいずれかを含むことができる。さらに、このようなシステムは、開発及びデータベース管理などの目的で、様々な市販のオペレーティング・システム及び他の知られたアプリケーションを実行させる複数のワークステーションを含むことができる。さらに、これらのデバイスは、ダミー端末、シン・クライアント、ゲーム機及びネットワークを介して通信可能な他のデバイスなど、他の電子デバイスを含むことができる。さらに、これらのデバイスは、仮想マシン、ハイパーバイザ、及びネットワークを介して通信可能な他の仮想デバイスを含むことができる。
【0052】
本開示の様々な実施形態は、伝送制御プロトコル/インターネット・プロトコル(「TCP/IP」)、ユーザ・データグラム・プロトコル(「UDP」)、オープン・システム・インターコネクション(「OSI」)モデルの様々なレイヤで動作するプロトコル、ファイル転送プロトコル(「FTP」)、ユニバーサル・プラグ・アンド・プレイ(「UpnP」)、ネットワーク・ファイル・システム(「NFS」)、共通インターネット・ファイル・システム(「CIFS」)及びアップル・トークなど、市販の様々なプロトコルのいずれかを使用して通信をサポートするために、当業者になじみ深い少なくとも1つのネットワークを利用する。ネットワークは、例えば、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、仮想プライベート・ネットワーク、インターネット、イントラネット、エクストラネット、公衆交換電話網、赤外線ネットワーク、ワイヤレス・ネットワーク、衛星ネットワーク、及びこれらの組み合わせである。
【0053】
ウェブ・サーバを利用する実施形態において、ウェブ・サーバは、ハイパーテキスト・トランスファ・プロトコル(「HTTP」)サーバ、FTPサーバ、コモン・ゲートウェイ・インタフェース(「CGI」)サーバ、データ・サーバ、ジャバ・サーバ、アパッチ・サーバ、及びビジネス・アプリケーション・サーバを含む、様々なサーバまたはミッドティア・アプリケーションのいずれかを実行させることができる。さらに、サーバはJava(登録商標)、C,C#若しくはC++などのいずれかのプログラミング言語、またはRuby(登録商標)、PHP、Perl(登録商標)、Python(登録商標)もしくはTCL、及びこれらの組み合わせのいずれかで書かれた1つ以上のスクリプトまたはプログラムとして実装される1つ以上のウェブ・アプリケーションを実行するなどして、ユーザのデバイスからの要求に応じてプログラムまたはスクリプトを実行することができる。さらに、サーバは、MySQL、Postgres(登録商標)、MongoDB(登録商標)、及び構造化または非構造化データの格納、取り出し、アクセスが可能な他のあらゆるサーバなどのオープン・ソース・サーバとともに、Oracle(登録商標)、Microsoft(登録商標)、Sybase(登録商標)、IBM(登録商標)から市販されているデータベース・サーバ、ただしこれらに限定されることはないデータベース・サービスを含む。データベース・サーバは、テーブル型サーバ、ドキュメント型サーバ、非構造化サーバ、リレーショナル・サーバ、非リレーショナル・サーバまたはこれらのサーバおよび及び/または他のデータベース・サーバの組み合わせを含んでいてよい。
【0054】
環境は、上述の様々なデータ・ストア、その他メモリ及びストレージ媒体を含み得る。これらは、コンピュータのうち1つ以上のコンピュータに固有の(及び/または存在する)、またはネットワークの端から端までコンピュータのいずれかまたはすべてからストレージ媒体上などの様々な場所に存在可能である。ある特定の実施形態のセットにおいて、情報は、当業者にはなじみ深いストレージ・エリア・ネットワーク(「SAN」)に存在すればよい。同様に、コンピュータ、サーバまたは他のネットワーク・デバイスに起因する機能を実行するために必要なファイルを、適宜局所的及び/または遠隔に格納すればよい。システムがコンピュータ化したデバイスを含む場合、そのようなデバイスは各々バスを介して電子的に接続されるハードウエア要素を含み、要素は、例えば、少なくとも1つの中央処理装置(「CPU」または「プロセッサ」)、少なくとも1つの入力装置(例えば、マウス、キーボード、コントローラ、タッチ・スクリーンまたはキーパッド)及び少なくとも1つの出力装置(例えば、表示装置、プリンタまたはスピーカ)を含む。さらに、このようなシステムは、ディスク・ドライブ、光学ストレージ・デバイス、及びランダム・アクセス・メモリ(「RAM」)またはリード・オンリー・メモリ(「ROM」)などの固体ストレージ・デバイスなどの1つ以上のストレージ・デバイス、ならびにリムーバブル・メディア・デバイス、メモリ・カード、フラッシュ・カードなどを含んでいてもよい。
【0055】
さらに、そのようなデバイスは、コンピュータ可読ストレージ媒体リーダ、通信装置(例えば、モデム、ネットワーク・カード(無線または有線)、赤外線通信装置など)、及び上述の作業メモリを含んでいてもよい。コンピュータ可読ストレージ媒体リーダは、リモート、ローカル、固定及び/またはリムーバブル・ストレージ・デバイス、ならびに一時的及び/または永続的にコンピュータ可読情報を含み、格納し、送信し、及び取り出すためのストレージ媒体を表わすコンピュータ可読ストレージ媒体と接続する、またはコンピュータ可読ストレージ媒体を受け入れるように構成することができる。さらに、システム及び様々なデバイスは、典型的には、少なくとも1つの作業メモリ内に位置する複数のソフトウエア・アプリケーション、モジュール、サービスまたは他の要素を含み、クライアント・アプリケーションまたはウェブ・ブラウザなどのオペレーティング・システム及びアプリケーション・プログラムを含む。代替の実施形態は上述の実施形態からの多数の変形を有してもよいことを理解されたい。例えば、ハードウエア、(アプレットなどの携帯用ソフトウエアを含む)ソフトウエア、またはハードウエアとソフトウエアの両方で、カスタマイズされたハードウエアを使用してもよく、及び/または特定の要素を実装してもよい。さらに、ネットワーク入出力装置など別のコンピューティング・デバイスへの接続を用いてもよい。
【0056】
コードまたはコードの一部を含むストレージ媒体及びコンピュータ可読媒体としては、当該技術で知られているまたは使用されている任意の好適な媒体を挙げることができる。任意の好適な媒体は、ストレージ媒体および通信媒体を含み、揮発性媒体、不揮発性媒体、取り外し可能媒体、固定の媒体であってストレージ及び/またはコンピュータ読み込み可能指示、データ構造、プログラム・モジュールまたは他のデータなどの情報伝達のための任意の方法または技術で実装され、RAM、ROM、Electrically Erasable Programmable Read−Only Memory(「EEPROM」)、フラッシュメモリ、若しくは他のメモリ技術、Compact Disc Read−Only Memory(「CD−ROM」)、デジタル多目的ディスク(DVD)または他の光メモリ、磁気カセット、磁気テープ、磁気ディスク記憶装置、若しくは他の磁気ストレージ・デバイスまたは任意の他の媒体であって、それらは所望の情報を記憶するために使用されることができ、及びシステムデバイスによりアクセスすることができる。本明細書で示した開示及び教示に基づき、当業者であれば当該の様々な実施形態を実装するためのほかのやり方及び/または方法を理解するであろう。
【0057】
したがって、明細書および及び図面は限定的な意味ではなく、むしろ例示的な意味であるとみなされるものである。しかしながら、特許請求の範囲に記載のような発明のより広範な要旨及び範囲から逸脱することなく、様々な改良や変更が考えられることは明らかであろう。
【0058】
他の変形は本開示の要旨の範囲内である。よって、開示の技術は様々な変更及び代替の構造を受けやすいものの、そのうちいくつかの例示的な実施形態を図面に示し、上で詳細に説明してきた。しかしながら、本発明を1つまたは複数の特定の形態に限定する意図はなく、逆に、添付の特許請求の範囲で定義するように、発明の要旨及び範囲内の変形、代替の構造及び等価物をすべて包含することを意図していると理解されたい。
【0059】
開示の実施形態を説明する文脈における(特に以下の特許請求の範囲の文脈における)用語「1つの(a/an)」、「その(the)」、及び類似の指示対象は、本明細書で特段示されているときを除き、または明らかに文脈と矛盾するときを除き、単数及び複数のいずれも含むとして解釈されるべきである。用語「備える(comprising)」、「有する(having)」、「含む(including)」及び「含む(containing)」は、制限なしの用語(すなわち、「含むが、それに限定されることはない(including, but not limited to,)」を意味する)ものとして解釈されるべきである。限定されておらず、物理的な接続を指す場合の用語「接続された(connected)」は、何か介在するものがあっても、部分的または全体的に中に含まれる、取り付けられている、または結合しているとして解釈されるべきである。本明細書の値の範囲の言及は、特段示されているときを除き、範囲内に収まるそれぞれ別個の値を個々に言及する簡潔な方法の働きをすると単に意図しているものであり、それぞれの別個の値は、個々に本明細書で言及されているかのように、明細書に取り入れられる。用語「集合/セット(set)(例えば、「項目の集合/セット(a set of items)」)または「部分集合/サブセット(subset)」は、特段の記載があるときを除き、または文脈と明らかに矛盾するときを除き、1つ以上のメンバーからなる非空の集まりとして解釈されるべきである。さらに、特段の記載があるときを除き、または文脈と明らかに矛盾するときを除き、対応する集合/セットの「部分集合/サブセット(subset)」という用語は、対応する集合/セットの正式な部分集合/サブセットを必ずしも示すものではなく、部分集合/サブセットと対応の集合/セットが等しいものであってもよい。
【0060】
「A、B、およびCのうち少なくとも1つの」または「A、BおよびCのうち少なくとも1つの」という形式の言い回しなどの接続語は、別段の記載があるとき、または文脈と明らかに矛盾するときを除き、項目、用語などが、A、B、Cのいずれか、またはAとBとCの集合の非空部分集合であることを示すために通常使用されるような文脈で理解する。例えば、3つのメンバーを有する集合の例では、「A、B、Cのうち少なくとも1つの」という接続語は、{A}、{B}、{C}、{A、B}、{A、C}、{B、C}、{A、B、C}の集合のうちのいずれかを指す。したがって、このような接続語は、概して、いくつかの実施形態で、Aの少なくとも1つ、Bの少なくとも1つ、及びCの少なくとも1つがそれぞれ存在しなければならないことを示唆する意図はない。
【0061】
本明細書で記載のプロセスの動作は、本明細書で別段の示唆があるとき、または明らかに文脈と矛盾するときを除き、任意の好適な順序で実行することができる。本明細書で記載のプロセス(またはその変形及び/または組み合わせ)を、実行可能な指示で構成された1つ以上のコンピュータ・システムの制御の下実行してよく、コード(例えば、実行可能な指示、1つ以上のコンピュータ・プログラム、または1つ以上のアプリケーションなど)として実装してもよい。コードは、コンピュータ可読ストレージ媒体に、例えば、1つ以上のプロセッサによって実行可能な複数の指示からなるコンピュータ・プログラムの形態で格納されてよい。コンピュータ可読ストレージ媒体は非一時的なものであってよい。
【0062】
本明細書のありとあらゆる例、または例を示す言葉(例えば、「such as」)の使用は、発明の実施形態をより明らかにするためだけのものであり、特許請求の範囲で別段の記載があるときを除き、発明の範囲を限定するものではない。明細書のいずれの言葉も、特許請求の範囲に記載されない要素がいずれも、発明の実施に必須であると解釈されるものではない。
【0063】
実施形態の変形は、上記の説明を読み取ることで、当業者には明らかであろう。本発明者は、このような変形を適宜使用するしたがって、本開示の範囲は、適用可能な法律が認めるように、添付の特許請求の範囲に記載される主題のすべての変形及び等価物を含む。さらに、すべての可能な変形における上述の要素のいかなる組み合わせも、本明細書で特段示されているとき、または明らかに文脈と矛盾するときを除き、本開示の範囲に包含される。
【0064】
本明細書で引用した出版物、特許出願及び特許を含めたすべての引例を、各引例が参照することによって援用されるものと個々に、具体的に示され、その全体を本明細書に記載されているかのように、同程度に参照することによってここに援用する。
【0065】
開示の実施形態を以下の条項に照らして説明する。
条項
1.コンテナをインスタンス化するためのコンピュータ実施方法であって、
実行可能な指示で構成された1つ以上のコンピュータの制御の下で、
ドメイン・ネーム・システム(DNS)サービスから、インターネット・プロトコル(IP)アドレスに送信された、ユニフォーム・リソース・ロケータ(URL)を解決するためのクライアント・デバイスによるDNS要求を示すメッセージを受信することと、
前記メッセージを受信した結果、前記コンテナをインスタンス化することにより、前記インスタンス化されたコンテナが前記IPアドレスに送信された前記要求を処理することができることと、
前記クライアント・デバイスから、前記IPアドレスを対象にする要求を受信することと、前記受信した要求を前記インスタンス化されたコンテナに送ることとを含むコンピュータ実施方法。
2.前記コンテナをインスタンスすることは、リソースについての要求が前記コンテナに送信される前に、前記コンテナをインスタンス化するために、前記DNS要求内の情報を利用することを含むことを特徴とする条項1または2に記載のコンピュータ実施方法。
3.前記コンテナに格納され、前記クライアント・デバイスにより送信される前記要求の経路が、ロード・バランサを介してコンテナに指定され、前記DNSサービスは、前記ロード・バランサのIPアドレスを前記クライアント・デバイスに送るよう構成されることを特徴とする先行する条項のいずれかに記載のコンピュータ実施方法。
4.前記リソースは仮想マシン、ウェブ・リソース、画像、ウェブ・フォーム、静止ウェブページ、ウェブサイトまたはアプリケーション・プログラミング・インタフェースであることを特徴とする先行する条項のいずれかに記載のコンピュータ実施方法。
5.1つ以上のサービスを実装するよう構成される少なくとも1つのコンピューティング・デバイスを備えシステムであって、前記1つ以上のサービスは、
コンテナに格納されるリソースの第1の識別子を、前記コンテナに格納されるリソースの第2の識別子に転換する旨の要求を要求元から受信し、
前記コンテナをインスタンス化するよう動作可能な、要求元とは異なるシステムに、前記コンテナに格納されるリソースについての前記第1の識別子を伴う前記要求の通知を送信するよう構成されることを特徴とするシステム。
6.前記要求は、ドメイン・ネーム・システム(DNS)サービスにより受信され、前記DNSサービスは、インターネット・プロトコル(IP)アドレスを前記コンテナに与えるよう構成されるロード・バランシング・レイヤと動作可能に相互接続されることを特徴とする条項5に記載のシステム。
7.前記ロード・バランシング・レイヤは、タイマに動作可能に相互接続され、前記コンテナのインスタンス化と前記コンテナ内のリソースについての次回の要求の間の時間を監視するよう構成されることを特徴とする条項5に記載のシステム。
8.前記ロード・バランシング・レイヤは、タイム・アウト値を制御するよう構成され、タイム・アウト値が最大値に等しいとき、前記ロード・バランシング・レイヤは、動作状態を終了するように前記コンテナにメッセージを送信するように構成され、前記最大値は、予め定めた値または動的に設定される値であればよいことを特徴とする条項5から7のいずれかに記載のシステム。
9.前記1つ以上のサービスは、少なくとも2つのコンテナをインスタンス化するように前記ロード・バランシング・レイヤにメッセージを送信するようにさらに構成され、前記少なくとも2つのコンテナは、第1のリソース、及び前記第1のリソースがアクセス可能な第2のリソースを含むことを特徴とする条項5から8のいずれかに記載のシステム。
10.前記ロード・バランシング・レイヤは、今後の要求を処理するために、前記要求に関連する時間値に少なくとも一部基づいて決定される長さの時間だけ、前記コンテナをインスタンス化したままにするように構成されることを特徴とする条項5から9のいずれかに記載のシステム。
11.前記コンテナをインスタンス化したままにする前記長さの時間を決定することは、前記コンテナが実行されている場所、コンピュータのサイクル数、最大または最小の財務コスト、または前記コンテナに格納される少なくとも1つのリソースに関する媒体の肯定応答に少なくとも一部基づいて前記長さの時間を決定することを含むことを特徴とする条項10に記載のシステム。
12.前記コンテナのライフ・サイクル中、前記コンテナについてのラン・タイムを動的に設定することをさらに含み、前記ラン・タイムは地理的回転の関数、前記コンテナへのアクセスを要求するユーザの地理的場所の関数、または前記コンテナがホストしているリソースの種類の関数に少なくとも一部基づくことを特徴とする条項10に記載のシステム。
13.実行可能な指示を格納した非一時的コンピュータ可読ストレージ媒体であって、コンピュータ・システムの1つ以上のプロセッサに実行されると、前記コンピュータ・システムに、
コンテナに関連する第1の識別子を、ネットワーク・コンポーネントに格納されるリソースの第2の識別子に転換する旨のクライアント・デバイスによる要求を検出し、
検出の結果、前記ネットワーク・コンポーネントをインスタンス化して、前記クライアント・デバイスが前記第2の識別子を参照して要求を送信する前に、前記ネットワーク・コンポーネントに関連するキャッシュを予め暖機させることを特徴とする非一時的コンピュータ可読ストレージ媒体。
14.前記指示は、前記1つ以上のプロセッサに実行されると、前記コンピュータ・システムに、ドメイン・ネーム・システム(DNS)サーバに動作可能に相互接続されるキャッシュを維持させる指示をさらに備えることを特徴とする条項13に記載の非一時的コンピュータ可読ストレージ媒体。
15.前記指示は、前記1つ以上のプロセッサに実行されると、前記コンピュータ・システムに、前記ネットワーク・コンポーネントの前記キャッシュ内のリソースの記録を維持させる指示をさらに備え、前記リソースの記録は、前記クライアント・デバイス、クライアント・デバイスのカスタマ、及び/または前記クライアント・デバイスが要求するサービスに関する情報を含むことを特徴とする条項13または14に記載の非一時的コンピュータ可読ストレージ媒体。
16.前記コンピュータ・システムに前記ネットワーク・コンポーネントの前記キャッシュ内のリソースの記録を維持させる指示は、前記コンピュータ・システムに、
前記要求に対応するリソースの記録について前記キャッシュを検索させ、
前記要求を解決するために前記リソースの記録を利用させる指示をさらに備えることを特徴とする条項15に記載の非一時的コンピュータ可読ストレージ媒体。
17.前記指示は、前記1つ以上のプロセッサに実行されると、ネットワーク・コンポーネントが前記ネットワーク・コンポーネントの前記キャッシュ内にリソースに関するデータをプリロードすることに応じて、前記コンピュータ・システムに、仮想マシンまたはコンテナをインスタンス化させる指示をさらに備えることを特徴とする条項13から16のいずれかに記載の非一時的コンピュータ可読ストレージ媒体。
18.前記コンピュータ・システムに前記仮想マシンまたは前記コンテナをインスタンス化させる指示は、前記コンピュータ・システムに、前記リソースの種類を含むメッセージを送信させる指示をさらに含み、前記リソースの前記種類は、仮想マシン、ウェブ・リソース、画像、ウェブ・フォーム、静止ウェブページ、またはアプリケーション・プログラミング・インタフェースを含むことを特徴とする条項17に記載の非一時的コンピュータ可読ストレージ媒体。
19.前記指示は、前記1つ以上のプロセッサに実行されると、前記コンピュータ・システムに、ユーザの要求を送るために、存在点(PoP)の場所を決定させる指示をさらに備えることを特徴とする条項13から18のいずれかに記載の非一時的コンピュータ可読ストレージ媒体。
20.前記コンピュータ・システムに、前記ユーザの要求を送るために、前記PoPの場所を決定させる指示は、前記コンピュータ・システムに、前記PoPの場所にメッセージを送信させる指示をさらに含み、前記メッセージは入ってくるアクティビティの通知を含むことを特徴とする条項19に記載の非一時的コンピュータ可読ストレージ媒体。