仮想マシン・イメージは、仮想環境内で仮想マシンを立ち上げるために必要とされるオペレーティング・システム(たとえば、リナックス)及び他のデータを含む。仮想マシン・イメージは、物理コンピュータのディスク・ボリュームに類似し、マシンを起動するために必要とされるファイル・システム、オペレーティング・システム及び他のコンポーネントを含むことができる。仮想マシンを立ち上げるために、ハードウェアを選択する必要がある。このハードウェア選択は、さまざまな異なるサイズのメモリ、CPU能力、I/O性能、及びその他のものを許可することができる、インスタンス・タイプを介して達成されることができる。仮想マシン・イメージ及びインスタンス・タイプの組み合わせは、マルチテナント・ネットワーク環境でホスト・サーバ・コンピュータなど、クラウド・コンピューティング・リソース上で立ち上げられることができる、「インスタンス」または仮想マシンを作成するために使用されることが可能である。
本明細書で使用されるように、用語「仮想マシン」及び「仮想マシン・インスタンス」は、入れ替えできる。
本明細書で使用されるように、用語「コンピュート・サービス・プロバイダ」は、1人以上の最後の受信者へサービスとしてコンピューティング能力及びストレージ容量を提供可能なクラウド・プロバイダを示すことが可能である。コンピュート・サービス・プロバイダは、機構(すなわち、コンピュート・サービス・プロバイダが「プライベート・クラウド環境」を提示することができる)により、またはこれの代わりに編成のために確立されることが可能である。他の例において、コンピュート・サービス・プロバイダは、複数の顧客が独自に操作する、マルチテナント環境(すなわち、パブリック・クラウド環境)を支援することが可能である。この点について、複数の顧客(たとえば、複数の企業)は、マルチテナント環境内でサーバ・コンピュータのようなリソースを借りることが可能である。
本明細書で使用されるように、用語「エンタープライズ・ベース・ネットワーク」(または「エンタープライズ・プライベート・ネットワーク」または「エンタープライズ・ネットワーク」)は、企業(たとえば、株式会社または別の事業)が所有するコンピュータ・システムのネットワークを示すことが可能である。一般的に、エンタープライズ・ベース・ネットワーク内での情報アクセスは、会社の従業員に限定される。その意味で、エンタープライズ・ネットワークは、シングルテナント・システムである。しかしながら、データは、ウェブ・インタフェースのような、企業ポータルを介して外部ユーザに利用可能であることができる。一般的に、エンタープライズ・ネットワークのサーバ・コンピュータを第三者は、賃借不可能である。
本明細書で使用されるように、用語、仮想マシンを「移動させる」または「移行する」は、一方のサーバ・コンピュータから他方のサーバ・コンピュータへ仮想マシンを移動させることを示す。たとえば、仮想マシンは、現在のサーバ・コンピュータでの実行を終了し、またはその他の方法で中断し、別のサーバ・コンピュータで立ち上げられる。この点について、1つ以上のソフトウェア・パッケージング及び配信フォーマット(たとえば、オープン仮想化フォーマット、またはOVF)は、新規のサーバ・コンピュータへ仮想マシンをパッケージ化して移行するために使用されることができる。
本明細書で使用されるように、用語「リソース監視メトリック」は、アプリケーション(またはアプリケーションを実行するために使用された仮想マシン)によるコンピューティング・リソースの実用を有することができる。たとえば、コンピューティング・リソースは、アプリケーション(または仮想マシン)をホストする1つ以上のサーバ・コンピュータと関連することができ、CPUリソース、メモリ・リソース、利用可能なストレージ・リソース、ディスクI/Oの利用、及びその他のものの使用を有することができる。このようなメトリックの監視は、所定の(たとえば、一定の)期間にわたり実行されることができ、平均値(標準偏差調整の有無にかかわらず)は、生成されることができる。あるいはまた、特定の時点でのリソースの使用状況を示すことができる、このようなメトリックのスナップショットを生成することができる。
本明細書で使用されるように、用語「性能メトリック」は、ホスト・サーバ(またはサーバによりホストされた仮想マシン)のアーキテクチャと関連した1つ以上のメトリックまたは特性を有することができる。たとえば、ホスト・サーバ・アーキテクチャは、つぎの性能メトリック、CPU速度、メモリ容量、ストレージ容量、ネットワーク・カード特性(たとえば、速度)、ビデオ・カード特性(たとえば、解像度及びビデオ処理速度)、ディスクI/O速度、及びその他のもののうちの1つ以上により特徴づけられることができる。
図1は、本開示の例示的な実施形態に従い、エンタープライズ・ベース・ネットワークからコンピュート・サービス環境へのアプリケーションの移行を説明するネットワーク図である。図1を参照して、コンピュート・サービス環境100は、最後の受信者のコミュニティへのサービスとしてコンピューティング能力及びストレージ容量を提供可能なコンピュート・サービス・プロバイダ(すなわち、クラウド・プロバイダ)であってもよい。コンピュート・サービス環境/プロバイダについてのさらなる詳細は、図4〜6を参照して本明細書で開示される。コンピュート・サービス環境100は、複数のホスト・サーバ・コンピュータ105a、...、105n、アプリケーション移行サービス部140a、及びエンドポイント145を有する。
ホスト・サーバ・コンピュータ(たとえば、105a)は、CPU110、メモリ115、及びストレージ120を含むことができる。ホスト・サーバ105aは、ハイパーバイザ125、または複数の仮想マシン・インスタンス(VMI)130a、...、130nの実行を有効にするように設定された別のタイプのプログラムを実行するように設定されることができる。
ウェブ・サービスは、通常クラウド・コンピューティングで使用される。ウェブ・サービスは、ウェブまたはクラウド経由でネットワーク・アドレスに提供されたソフトウェア機能である。クライアントは、サーバへウェブ・サービス要求を開始し、サーバは、この要求を処理して適切な応答を返す。一般的にクライアント・ウェブ・サービス要求は、たとえば、API要求を使用して開始される。簡略化目的のために、一般にウェブ・サービス要求は、API要求として以下で記載されるが、他のウェブ・サービス要求を行うことが可能であることを理解する。API要求は、最も一般的にHTTPベースのウェブ・サーバにより、ウェブを介して公開されるJSONまたはXMLで通常表現される、定められた要求応答メッセージ・システムへのプログラマティック・インタフェースである。このようにして、特定の実装において、APIは、拡張可能マークアップ言語(XML)またはJavaScript(登録商標)オブジェクト表記(JSON)形式内にあることが可能である、応答メッセージの構造の定義に加えて、1セットのハイパーテキスト・トランスファ・プロトコル(HTTP)要求メッセージとして定義されることが可能である。APIは、特定のタスクを達成すること、またはソフトウェア・コンポーネントとのインタラクションを許可することを備える、動作を実行する1セットの機能またはルーティンを指定することが可能である。ウェブ・サービスがクライアント・デバイスからAPI要求を受信するときに、ウェブ・サービスは、この要求への応答を生成し、要求で識別されたエンドポイントへこの応答を送信することが可能である。
コンピュート・サービス環境100は、アプリケーション移行サービス部140aからのAPI要求190のような、API要求を受信して処理するように設計されたDNSアドレスである、エンドポイント145を含む。関心の特定のAPI要求は、以下で記載されるような、プライベート・サブネット情報150、依存性情報155、及びリソース監視メトリック160と関連したAPI要求190である。
アプリケーション移行サービス部140aは、適切な回路、ロジック、及び/またはコードを含むことができ、リモート・サーバ・コンピュータ(たとえば、クライアント・プライベート・ネットワーク170内のホスト・コンピュータ175a)上で動作する1つ以上のアプリケーション(たとえば、アプリケーション185)を移行するように操作可能であることができる。アプリケーションの移行は、クライアント・プライベート・ネットワーク170でアプリケーション移行サービス部140bから受信した、たとえば、プライベート・サブネット情報150、依存性情報155、及びリソース監視メトリック160のうちの1つ以上に基づくことができる。
クライアント・プライベート・ネットワーク170は、エンタープライズ・ベース・ネットワークのような、リモート・クライアント・ネットワークであってもよい。クライアント・ネットワーク170は、複数のホスト・サーバ・コンピュータ175a、...、175nを含むことができる。例示的なホスト・サーバ・コンピュータ(たとえば、175a)は、CPU171、メモリ172、及びストレージ173を含むことができる。ホスト・サーバ(たとえば、175a)は、VMI180a〜180cのような、1つ以上のVMIを実行するように構成されることができる。アプリケーション185のような、1つ以上のアプリケーションは、VMI(たとえば、VMI180a)上で動作していることができる。アプリケーション185は、1つ以上の追加のVMI(たとえば、VMI180b〜180c)に依存している可能性がある。たとえば、アプリケーション185は、VMI180a上にインストールされることができるが、アプリケーション185で使用された追加の機能性(たとえば、1つ以上のデータベースまたは追加のソフトウェア・モジュール)は、他のVMI(たとえば、VMI180b〜180c)上にインストールされることができる。この点について、移行(たとえば、クライアント・プライベート・ネットワーク170からコンピュート・サービス・プロバイダ100へ)用のアプリケーション185を選択するときインスタンスで、アプリケーション185(すなわち、VMI180a)を実行するVMIは、アプリケーション185が依存する(または使用する)任意の残りのVMI(すなわち、VMI180b〜180c)と共に移行されることができる。
またクライアント・プライベート・ネットワークは、コンピュート・サービス環境100へ、プライベート・サブネット情報150、依存性情報155、またはリソース監視メトリック160のうちの1つ以上を提供するように操作可能であることができる、アプリケーション移行サービス・コンポーネント140bを有することができる。たとえば、アプリケーション移行サービス140bは、エンドポイント145を介してアプリケーション移行サービス部140aと直接通信することができる(たとえば、140bが150、155、または160のような情報を報告する通信を定期的に開始することができる、あるいは、140bがAPI要求190に応答してこのような情報を提供することができる)。アプリケーション移行サービス部140a及び140bは、たとえば、それぞれコンピュート・サービス環境100及びクライアント・プライベート・ネットワーク170内のサーバ・コンピュータのオペレーティング・システム上で動作するソフトウェア・アプリケーションであってもよい。
操作中に、ユーザ・インタフェース122は、ホスト・コンピュータ175aでアクティブ化される(たとえば、ユーザにより)ことができる。ユーザ・インタフェース122は、クライアント・プライベート・ネットワーク170からコンピュート・サービス環境100へ移行されるアプリケーションを識別する入力を受信するためにテキスト・ボックス122a(または別のインタフェース)を含むことができる。たとえば、ユーザは、テキスト・ボックス122a内のアプリケーション185のネームを表示することができ、つぎに「移行」ボタン122bを押すことで(または画面タップのような、別のタイプのユーザ・インタフェース、及びその他のものをアクティブ化することで)移行プロセスを開始することができる。
アプリケーション185のネームを受信した後に、コンピュート・サービス環境100内のアプリケーション移行サービス部140aは、API要求190のうちの1つを使用して、ホスト175a及びVMI180a〜180cのうちの1つ以上がクライアント・プライベート・ネットワーク170(たとえば、仮想プライベート・クラウド、仮想ローカル・エリア・ネットワーク、及びその他のもの)のプライベート・サブネットワーク(またはサブネット)内にあるかどうかを示すことができる、プライベート・サブネット情報150を取得することができる。つぎにアプリケーション移行サービス部140aは、移行(たとえば、VPC/サブネット作成及び割り当て141a)後に、コンピュート・サービス環境100内にプライベート・ネットワーク(たとえば、仮想プライベート・クラウド)を作成し、VMIをホストするためにサブネットを割り当てることができる。
アプリケーション移行サービス部140aは、アプリケーション移行サービス140bから依存性情報155を取得することができる。この依存性情報155は、アプリケーション185が使用できる(または依存できる)任意の他のVMI(すなわち、VMI180b〜180c)と同様にアプリケーション185が動作している仮想マシン(すなわち、VMI180a)を識別する情報を含むことができる。つぎにアプリケーション移行サービス部140aは、アプリケーション移行サービス140bからリソース監視メトリック160を取得することができる。このリソース監視メトリック160は、アプリケーション185、VMIが実行するアプリケーション185(すなわち、VMI180a)、及びアプリケーション185が依存するVMI(すなわち、VMI180b〜180c)のうちのいずれかのうちの1つ以上によるコンピューティング・リソースの使用を示すことができる。たとえば、リソース監視メトリック160は、ホスト・コンピュータ175aと関連した(ホスト・コンピュータ175aを使用してVMI180a〜180cを実行するので)、CPUリソース、メモリ・リソース、利用可能なストレージ・リソース、ディスクI/O使用率、及びその他のものを含むことができる。サーバ・コンピュータ175a、...、175nのうちの別の1つからの依存しているVMI180b〜180cのうちの1つ以上を実行するときにインスタンスにおいて、つぎにリソース監視メトリック160は、同様にそのホスト・コンピュータと関連したリソースのためのコンピューティング・リソースの使用をまた示す。リソース監視メトリック160は、CPU171により、またはホスト・コンピュータ175a(または残りのホスト・コンピュータ175a、...、175nのうちのいずれか)内の専用モジュール(図示せず)により収集されることができる。
依存性情報155及びリソース監視メトリック160を取得した後に、アプリケーション移行サービス部140aは、ホスト・サーバ105a(または残りのホスト・サーバ105a、...、105nのうちのいずれか)の性能メトリック139とリソース監視メトリック160のうちの1つ以上をマッチングさせ、仮想マシン・インスタンス・タイプ(VMI180a〜180cを移行するために)及びコンピュート・サービス環境100内のホスト・サーバ・コンピュータ・タイプを選択し、クライアント・プライベート・ネットワーク170から移行されたVMI(移行されたアプリケーションを含む)をホストすることができる。性能メトリック139は、ホスト・サーバ・コンピュータ105a(または残りのホスト・サーバ105a、...、105nのいずれか)のために、CPU速度、メモリ容量、ストレージ容量、ネットワーク・カード特性(たとえば、速度)、ビデオ・カード特性(たとえば、解像度及びビデオ処理速度)、ディスクI/O速度、及びその他のもののうちの1つ以上を含むことができる。
例示的な実施形態において、VMI180a(アプリケーション185を実行する)及び依存しているVMI180b〜180cは、クライアント・プライベート・ネットワーク170内でホスト・サーバ・コンピュータ175aによりすべてホストされることができる。リソース監視メトリック160は、VMI180a〜180c(たとえば、VMI180a〜180cが合計5GBのディスク・スペース、1GBのRAM、1.7GHzのCPUクロック速度などを使用していることができる)により使用されたホスト175aのコンピューティング・リソース量を示すことができる。仮想プライベート・クラウド(VPC)及びサブネットの作成及び割り当て(141aで)後に、アプリケーション移行サービス部140aは、ホスト・サーバ・コンピュータ105a、...、105nのうちの1つ以上のための性能メトリック139とリソース監視メトリック160をマッチングさせることで仮想マシン・インスタンス・タイプ及びホスト・サーバ・コンピュータ・タイプ(アプリケーション185を移行するとVMI180a〜180cを立ち上げるために)を選択することができる。VMI及びホスト・コンピュータ・タイプの選択を図1の141bとして反映する。
たとえば、アプリケーション移行サービス部140aは、1GBのRAM及び5GBのディスク・スペースと関連した仮想マシン・インスタンス・タイプ、ならびに2GHzのCPUクロック速度、1.5GBのRAM、及び7GBのディスク・スペース(たとえば、ホスト・サーバ・コンピュータ105a)と関連したホスト・サーバ・コンピュータ・タイプを選択することができる。この点について、性能メトリック139とリソース監視メトリック160をマッチングさせることで、コンピュート・サービス環境100内のコンピューティング・リソースの効率的利用を達成することができ、アプリケーション185を移行して、選択されたホスト・コンピュータ・タイプのホスト・コンピュータによりホストされる、選択されたVMIタイプのVMI上へ依存性情報155(すなわち、VMI180a〜180c)により識別されたVMIを立ち上げるためにVMI及びホスト・サーバ・コンピュータ・タイプを選択できる。
依存しているVMI180b〜180c(すなわち、アプリケーション185が依存し、依存性情報155により識別されるVMI)は、クライアント・プライベート・ネットワーク170内の異なるホスト・コンピュータ(たとえば、175n)によりホストされるときにインスタンスにおいて、リソース監視メトリック160は、ホスト・サーバ・コンピュータ175a及び175nと関連したコンピューティング・リソースの使用を有することができる。つぎにアプリケーション移行サービス部140aは、ホスト・サーバ・コンピュータ105a、...、105nのうちの1つ以上のための性能メトリック139とリソース監視メトリック160をマッチングさせることで2つのホスト・サーバ・コンピュータ(第一ホスト・サーバ・コンピュータ上のVMI180a、及び第二ホスト・サーバ・コンピュータ上のVMI180b〜180cを立ち上げるために)用のVMIタイプ及びホスト・サーバ・コンピュータ・タイプを選択することができる。
つぎにVMI180a〜180cをクライアント・プライベート・ネットワーク170からコンピュート・サービス環境100へ移行することができる。さらに特に、少なくとも1つのファイル・パッキング・フォーマット(たとえば、OVF)は、VMI180a〜180cをパッケージ化し、これらをコンピュート・サービス環境100へ移行し、これらを選択されたVMIタイプのVMI上で立ち上げるために使用され、ホスト/VMIタイプ選択141bにより示されるように選択されたホスト・サーバ・コンピュータ・タイプのホスト・サーバによりホストされることができる。移行されたVMI180a〜180cは、選択されたホスト・サーバ・コンピュータのうちの1つ以上によりホストされた、選択されたVMI上に転送されて(すなわち、VMI転送141c)立ち上げられることができる。この点について、アプリケーション移行サービス部140aは、ソース・フォーマット(たとえば、クライアント・プライベート・ネットワーク170と互換性があるVMIのフォーマット)から宛先フォーマット(たとえば、コンピュート・サービス環境100と互換性があるVMIのフォーマット)へ移行インスタンスを変換するように操作可能であることができる。また変換中に、アプリケーション移行サービス部140aは、コンピュート・サービス環境100で宛先フォーマット内の移行されたVMIを実行するために必要な1つ以上のドライバをインストールすることができる。
本開示の例示的な実施形態に従い、またアプリケーション移行サービス部140aは、ホストするサーバ(たとえば、ホスト・サーバ175a用のIPアドレスIP1)と関連したIPアドレス及び/またはVMI180a〜180cのIPアドレスだけでなく、VMI180a〜180cをホストするホスト・サーバ(またはサーバ)のネームも取得することができる。つぎにアプリケーション移行サービス部140aは、以前にホストしたサーバ(175a)のネーム及びIPアドレスへ移行されたVMIをホストするホスト・サーバ(105a)のネーム及びIPアドレスを変更することでIP及びホスト・ネーム変更141dを実行することができる。加えて、IP及びホスト・ネーム変更141dは、VMI180a〜180cのIPアドレスと同じである移行されたVMIのIPアドレスを変更することができる。
本開示の別の例示的な実施形態に従い、アプリケーション移行サービス部140aが性能メトリック139とリソース監視メトリック160のマッチングを実行した後に、移行されたアプリケーション及びVMIをホストするために決定されたVMIタイプ及びサーバ・コンピュータ・タイプは、確認または代替の選択のためにクライアント・プライベート・ネットワーク170へ通信されることができる。たとえば、クライアント・プライベート・ネットワーク170は、ユーザ・インタフェース(122のような)を使用して、コンピュート・サービス環境100により実行されたVMIタイプ及びホスト・サーバ・コンピュータ・タイプの自動選択を表示することができる。つぎにクライアント・プライベート・ネットワーク170でユーザは、このような自動選択を確認することができる、または移行されたアプリケーション185及びVMI180a〜180cを立ち上げる際の使用のために異なるVMIタイプ及びサーバ・コンピュータ・タイプの代替の選択を指定することができる。
図2A及び2Bは、アプリケーションの移行を支援する、プライベート・コンピュータ・ネットワークを作成して設定するリモート・クライアントを伴うインタラクションの例示的な実施形態を説明するネットワーク図である。図2Aは、リモート・クライアントがこのクライアントによる使用のためにコンピュータ・ネットワークを作成して設定することを可能にするコンピュート・サービス・プロバイダ205の例示的な実施形態を説明するネットワーク図である。この実施例において、作成され設定されるコンピュータ・ネットワークは、クライアントの既存のプライベート・コンピュータ・ネットワークへのプライベート・ネットワーク拡張であり、コンピュート・サービス・プロバイダ205は、1つ以上のパブリック・ネットワーク200経由で(たとえば、インターネット経由で)クライアント(図示せず)へこのような機能性を提供する。このようにして、リモート・クライアントは、コンピュート・サービス・プロバイダ(「CSP」)205を使用し、パブリック・ネットワーク200経由でクラウド・コンピューティング技術を使用することなどにより、彼らのプライベート・コンピュータ・ネットワークのサイズ及び/または能力を動的に変更することができる。
特に、図2Aの実施例において、複数のクライアント(図示せず)は、コンピュータ・ネットワーク拡張220のうちの少なくともいくつかがパブリック・ネットワーク200(たとえば、相互接続200a及び200b経由で確立されたVPN接続を介して)経由で1つ以上の対応するクライアント・プライベート・ネットワーク230から安全なプライベート・アクセスを有効にするように設定されながら、CSPマネージャ・モジュール210とパブリック・ネットワーク200経由でインタラクトしていて、既存のリモート・クライアント・プライベート・ネットワーク230へさまざまなプライベート・コンピュータ・ネットワーク拡張220を作成して設定する。この例示的な実施形態において、マネージャ・モジュール210は、プライベート・コンピュータ・ネットワーク拡張220を提供するために、CSP205のさまざまな他のモジュール(図示せず)及びCSP205が使用するさまざまなコンピューティング・ノード及びネットワーキング・デバイス(図示せず)と一緒になど、リモート・クライアントへCSP205の機能性を提供する際に支援する。少なくともいくつかの実施形態において、CSPマネージャ・モジュール210は、CSP205の1つ以上のコンピューティング・システム(図示せず)上で動作することができ、クライアントの代わりにCSP205のいくつかのまたはすべての機能性にアクセスするために(たとえば、プライベート・ネットワーク拡張220の使用を作成、設定、及び/または開始するために)モジュール210とリモート・コンピューティング・システムがプログラムでインタラクトすることを可能にする1つ以上のAPIを提供することができる。加えて、少なくともいくつかの実施形態において、クライアントは、いくつかのまたはすべてのこのような動作を実行するためにモジュール210(たとえば、モジュール210により提供されたユーザ・インタフェースを介して)と代わりに手動でインタラクトすることができる。またCSP205は、図1を参照して説明されるように機能性を備える、アプリケーション移行サービス部140aを含むことができる。
パブリック・ネットワーク200は、たとえば、インターネットのような、別個の当事者によりできる限り操作された、リンクされたネットワークの公的にアクセス可能なネットワークであってもよい。リモート・クライアント・プライベート・ネットワーク230は、非特権ユーザへ部分的にまたは全体的にアクセス不可能であり、クライアントのコンピューティング・システム及び/または他のネットワーク接続されたデバイスを含む、法人または他のプライベート・ネットワーク(たとえば、家、大学など)のような、1つ以上の既存のプライベート・ネットワークを各々含むことができる。例示的な実施形態において、クライアント・プライベート・ネットワーク230は、1つのアプリケーション(たとえば、図1のVMI180に類似するVMI1)を実行する1つのVMI、及び複数のVMI(たとえば、VMI1上で動作するアプリケーションが依存するVMI2及びVMI3)を含むことができる。VMI、VMI1〜VMI3をプライベート・サブネット245に接続することができる(たとえば、VMI1〜VMI3を実行するホスト・サーバ・コンピュータをサブネット245に接続することができる)。
図示された実施例において、提供されたネットワーク拡張220は、複数のコンピューティング・ノード(図示せず)を各々含み、これらのうちの少なくともいくつかは、CSP205の制御により、またはその他の方法でCSP205の制御下で提供され、各々の提供されたネットワーク拡張220は、それらを提供するクライアントによりさまざまな方式で設定されることができる。図示された実施形態の各々のネットワーク拡張220は、それを作成するクライアントによりのみアクセス可能であるプライベート・コンピュータ・ネットワークであってもよいが、他の実施形態において、クライアントのためにCSP205で提供された少なくともいくつかのコンピュータ・ネットワークは、公的にアクセス可能であることができる、及び/または他の既存のコンピュータ・ネットワークへ拡張ではないスタンドアロン・コンピュータ・ネットワークであってもよい。同様に、実施例において提供されたコンピュータ・ネットワーク220は、プライベート・ネットワークであるリモート・クライアント・コンピュータ・ネットワーク230へ拡張でありながら、他の実施形態において、提供されたコンピュータ・ネットワーク220は、プライベート・ネットワークではないクライアント・コンピュータ・ネットワーク230への拡張であってもよい。
本開示の例示的な実施形態に従い、アプリケーション移行サービス部140aは、提供されたコンピュータ・ネットワーク220内でクライアント・プライベート・ネットワーク230から1つ以上のサーバ・コンピュータへ、アプリケーション、それが動作しているVMI(たとえば、VMI1)、及び任意の依存しているVMI(たとえば、VMI2〜VMI3)を移行することができる(図1を参照して説明されたアプリケーション移行機能性と同様に)。加えて、移行されたVMI1〜VMI3は、図2Aで図示されるように、コンピュート・サービス・プロバイダ205内のプライベート・サブネット250で接続されることができる。
クライアントのために提供された、リモート・クライアントのプライベート・コンピュータ・ネットワーク230及び対応するプライベート・コンピュータ・ネットワーク拡張220間のプライベート・アクセスは、安全なプライベート方式のパブリック・ネットワーク200経由で相互通信を可能にする、それらの間のVPN接続または他の安全な接続を確立することなどにより、さまざまな方式で有効にされることができる。たとえば、CSP205は、そのコンピューティング・ノード及び他のコンピューティング・システム上で適切な設定を自動的に実行し、CSP205によりホストされた1つ以上のVPN機構(たとえば、ソフトウェア及び/またはハードウェアVPN機構)を自動的に設定することなどにより、クライアントの特定のプライベート・ネットワーク拡張220へのVPNアクセスを有効にすることができる、及び/またはクライアントへの適切な設定情報(たとえば、クレデンシャル、アクセス・ポイント、及び/または他のパラメータ)を自動的に提供して、リモート・クライアント・プライベート・ネットワーク230上にホストされたVPN機構がVPNアクセスを確立することを可能にすることができる。VPNアクセスを適切に有効にした及び/または設定した後に、VPN接続は、IPsec(「インターネット・プロトコル・セキュリティ」)または他の適切な通信技術を使用してクライアントにより開始されるような、リモート・クライアント・プライベート・ネットワーク及びプライベート・ネットワーク拡張間に確立されることができる。たとえば、いくつかの実施形態において、VPN接続または他の安全な接続は、IPsecベースのVPN接続の代わりになど、データ伝送用のMPLS(「マルチ・プロトコル・ラベル・スイッチング」)を使用するネットワークへ、またはこれらの間に確立されることができる。
加えて、図示された実施形態において、さまざまなネットワーク・アクセス可能なリモート・リソース・サービス240は、リモート・クライアント・プライベート・ネットワーク230上のコンピューティング・システムへ含む、パブリック・ネットワーク200経由でリモート・コンピューティング・システムに利用可能である。リソース・サービス240は、さまざまなタイプのコンピューティング関連のリソースへのアクセスを有するリモート・コンピューティング・システムを提供する、少なくともいくつかのリソース・サービス240のためなど、リモート・コンピューティング・システムへさまざまな機能性を提供することができる。さらに、CSP205により提供される少なくともいくつかのプライベート・ネットワーク拡張220は、少なくともいくつかのリモート・リソース・サービス240へのプライベートまたは他の特殊なアクセスを提供するように設定されることができるため、提供されたアクセスがプライベート・ネットワーク拡張220の部分である仮想接続215を介してローカルに提供されるようにプライベート・ネットワーク拡張220のコンピューティング・ノードへ任意選択で出現するが、リモート・リソース・サービス240との実際の通信は、パブリック・ネットワーク200(たとえば、相互接続200b及び200cを介して)経由で発生することができる。リモート・リソース・サービスへのこのようなプライベートまたは他の特殊なアクセスを確立して使用することについての追加の詳細は、他の箇所でより詳細に考察される。
先に述べたように、提供されたネットワーク拡張220は、さまざまな方式でクライアントにより各々設定されることができる。たとえば、少なくともいくつかの実施形態において、CSP205は、クライアントへ提供されたネットワーク拡張での使用に利用可能である複数のコンピューティング・ノードを提供するため、各提供されたネットワーク拡張220は、提供されたネットワーク拡張の部分としての使用に専用である複数のこのようなコンピューティング・ノードのクライアントが設定した数量を含むことができる。特に、クライアントは、モジュール210とインタラクトし、このクライアントのために提供されたコンピュータ・ネットワークに最初に含まれるコンピューティング・ノードの数量を設定することができる(たとえば、CSP205により提供されたAPIとの1回以上のプログラマティック・インタラクションを介して)。加えて、少なくともいくつかのこのような実施形態において、コンピューティング・ノードは、提供されたコンピュータ・ネットワークがすでにクライアントにより使用中であった(たとえば、特定のコンピューティング・ノード上の特定のプログラムの実行の開始または終了を示すことで)後のなど、クライアントの提供されたコンピュータ・ネットワークに後で動的に追加またはこれから除去されることができる(たとえば、CSP205により提供されたAPIとの1回以上のプログラマティック・インタラクションを介して)。さらに、CSP205は、たとえば、さまざまな性能特性(たとえば、プロセッサ速度、利用可能なメモリ、利用可能なストレージなど)及び/または他の能力を有するコンピューティング・ノードのような、少なくともいくつかの実施形態において、複数の異なるタイプのコンピューティング・ノードを提供することができる。このような場合に、 少なくともいくつかのこのような実施形態において、クライアントは、このクライアントのために提供されたコンピュータ・ネットワークに含まれるコンピューティング・ノードのタイプを指定することができる。
加えて、少なくともいくつかの実施形態において、クライアントは、モジュール210とインタラクトし、このクライアントのために提供されたコンピュータ・ネットワーク用のネットワーク・アドレスを設定することができ(たとえば、CSP205により提供されたAPIとの1回以上のプログラマティック・インタラクションを介して)、ネットワーク・アドレスは、提供されたコンピュータ・ネットワークが既にクライアントにより使用中であった後など、少なくともいくつかのこのような実施形態においてクライアントの提供されたコンピュータ・ネットワークのために後で動的に、追加、除去、または変更されることができる。たとえば、設定されている特定の提供されたコンピュータ・ネットワークが既存のリモート・クライアント・コンピュータ・ネットワークへの拡張である場合に、クライアントは、1つ以上のアドレス範囲(たとえば、クラスレス・ドメイン間ルーティング(「CIDR」)・アドレス・ブロック)、または既存のリモート・クライアント・コンピュータ・ネットワークにより使用された1サブセットのネットワーク・アドレスである他のグループのネットワーク・アドレスを指定することができるため、指定されたネットワーク・アドレスは、提供されたコンピュータ・ネットワークのコンピューティング・ノードのために使用される。このように設定されたネットワーク・アドレスは、いくつかの状況において、パブリック・ネットワーク200上のコンピューティング・システムから直接ではなくアドレス指定可能な仮想またはプライベート・ネットワーク・アドレスであってもよく(たとえば、既存のリモート・クライアント・コンピュータ・ネットワーク及び対応する提供されたネットワーク拡張がクライアント・コンピュータ・ネットワーク及びその提供されたネットワーク拡張のためにネットワーク・アドレス変換技術及び/または仮想ネットワーキング技術を使用する場合)、他の状況において、少なくともいくつかの設定されたネットワーク・アドレスは、パブリック・ネットワーク200上でコンピューティング・システムから直接アドレス指定可能なパブリック・ネットワーク・アドレス(たとえば、静的なインターネット・ルーティング可能なIPアドレスまたは他の非変更ネットワーク・アドレスであるパブリック・ネットワーク・アドレス)であってもよい。
他の実施形態において、CSP205は、CSP205による使用に利用可能なネットワーク・アドレスに基づき、提供されたコンピュータ・ネットワークなどへ対応する既存のリモート・コンピュータ・ネットワークにより使用されたネットワーク・アドレスに関連するネットワーク・アドレスを選択することに基づくなど、少なくともいくつかの提供されたコンピュータ・ネットワーク拡張の少なくともいくつかのコンピューティング・ノードのために使用されるネットワーク・アドレスを自動的に選択することができる。加えて、サブストレート・ネットワーク上のオーバーレイ・ネットワークを使用することなどにより、CSP205がクライアントへ仮想ネットワークを提供する、少なくともいくつかの実施形態において、複数のクライアントが彼らのそれぞれ提供されたコンピュータ・ネットワークのために同じまたは重複したネットワーク・アドレスを指定する場合でさえ、彼らの提供されたコンピュータ・ネットワークのために使用される任意のネットワーク・アドレスを各クライアントが指定することを可能にすることができ、このような実施形態において、CSP205は、各クライアントのために別個にネットワーク・アドレスを管理するため、第一クライアントは、第一クライアントの提供されたコンピュータ・ネットワーク用の特定の指定されたネットワーク・アドレスと関連した第一コンピューティング・ノードを有することができ、一方、別個の第二クライアントは、第二クライアントの提供されたコンピュータ・ネットワーク用の同じ特定の指定されたネットワーク・アドレスと関連した別個の第二コンピューティング・ノードを有することができる。
ネットワーク・アドレスが提供されたコンピュータ・ネットワークのために設定される、またはその他の方法で決定されると、CSP205は、DHCP(「動的ホスト構成プロトコル」)、またはネットワーク・アドレスなどの動的割り当てのための他の技術を使用することで、ランダム方式でなど、提供されたコンピュータ・ネットワークのために選択されたさまざまなコンピューティング・ノードへネットワーク・アドレスを割り当てることができる。加えて、パブリック・ネットワーク・アドレスを特定のコンピュータ・ネットワークのために使用する場合でも、CSP205は、他の方式での使用のためにこれらのパブリック・ネットワーク・アドレスのうちの1つ以上をマッピングし、特定のパブリック・ネットワーク・アドレスを使用して他の箇所でより詳細に説明されるように特定のリモート・リソース・サービスのためのアクセス機構として動作することなどができ、したがってその特定のコンピュータ・ネットワークのコンピューティング・ノードによりその特定のパブリック・ネットワーク・アドレスへ送信された通信は、特定のパブリック・ネットワーク・アドレスを割り当てるインターネットまたは他のネットワーク上に別のコンピューティング・システムへよりも、対応するリモート・リソース・サービスへ転送される。図2Bは、設定されたネットワーク・アドレスを使用する実施例についての追加の詳細を提供し、提供されたコンピュータ・ネットワーク内の通信をルーティングする。
加えて、少なくともいくつかの実施形態において、クライアントは、モジュール210とインタラクトし、このクライアントのために提供されたコンピュータ・ネットワークのためのネットワーク・トポロジ情報を設定する(たとえば、CSP205により提供されたAPIとの1回以上のプログラマティック・インタラクションを介して)ことができ、このようなネットワーク・トポロジ情報は、提供されたコンピュータ・ネットワークがすでにこのクライアントにより使用中であった後など、少なくともいくつかのこのような実施形態で提供されたコンピュータ・ネットワークのために後で動的に変更されることができる。たとえば、クライアントは、提供されたコンピュータ・ネットワークの部分である特定のタイプのネットワーキング・デバイス(たとえば、ルータ、スイッチなど)及び/または他のネットワーク・デバイスまたはノード(たとえば、ファイアウォール、プロキシ、ネットワーク・ストレージ・デバイス、プリンタなど)を指定することができる、及び/または共にグルーピングされる、またはその他の方法で共通の相互通信特性(たとえば、相互通信をフィルタリングしないサブネットの部分である、及び/または特定のネットワーキング・デバイスと関連する特定の1サブセットのコンピューティング・ノード)を共有する、提供されたコンピュータ・ネットワークの複数のサブセットのコンピューティング・ノードを指定することができる。
加えて、提供されたコンピュータ・ネットワークのために指定された設定情報は、少なくともいくつかの実施形態において、ルーティング情報、またはネットワーキング・デバイス及び/またはコンピューティング・デバイスのグループ間の他の相互接続情報を含むことができる。さらに、少なくともいくつかの実施形態において、CSP205は、複数の地理的位置で(たとえば、複数の地理的に分散されたデータ・センタで)利用可能なコンピューティング・ノードを提供することができ、さらに提供されたコンピュータ・ネットワークへクライアントが指定した設定情報は、提供されたコンピュータ・ネットワークのコンピューティング・ノードが設置される(たとえば、複数の地理的位置に設置されたそれらを含むことで提供されたコンピュータ・ネットワークのコンピューティング・ノード間にフォールト・トレランスを提供する)1つ以上の地理的位置を示すことができる、及び/またはその他の方法でCSP205により使用され1つ以上のこのような地理的位置を選択する、提供されたコンピュータ・ネットワークのコンピューティング・ノードを相互運用する方法の選好または要件についての情報を提供することができる(たとえば、コンピューティング・ノード相互通信についての最小または最大ネットワーク・レイテンシまたは帯域、コンピューティング・ノード間の最小または最大ネットワーク近接性、コンピューティング・ノード間の最小または最大地理的近接性など、すべてのこのような地理的位置で利用不可能である特定のリソースまたは機能性へのローカル・アクセスを有する、クライアントのリモート・コンピュータ・ネットワークへ及び/またはリモート・リソース・サービスへなど、他の外部コンピューティング・システムに関して指定された位置を有する)。
他の箇所でより詳細に考察されるように、少なくともいくつかの実施形態において、提供されたコンピュータ・ネットワークのコンピューティング・ノード間の相互接続及び相互通信は、CSP205の下層・サブストレート・ネットワークを使用して管理され、このような場合に、一部またはすべての設定されたネットワーク・トポロジ情報は、少なくともいくつかのこのような実施形態において、CSP205の下層・サブストレート・ネットワーク及び対応するモジュールを使用してシミュレーションを行うことができる。たとえば、CSP205により提供された各コンピューティング・ノードは、その関連したコンピューティング・ノードへ及びこれらからの通信を管理するCSP205のノード通信マネージャ・モジュールと関連することができる。このような場合に、コンピューティング・ノード用の関連した通信マネージャ・モジュールを使用することでファイアウォール・デバイスのシミュレーションを行い、1つ以上のシミュレーションを行ったファイアウォール・デバイスと合致した方式でコンピューティング・ノードへ及び/またはこれからの通信を許可しない、またはその他の方法でこれらを処理することができる。このようなノード通信マネージャ・モジュールは、コンピューティング・ノード間で相互通信が通じる方法、及びこれが通じるかどうかを制御することで、ならびに適切な応答情報を含む情報(たとえば、ARP、またはアドレス解決プロトコル、要求)のためのコンピューティング・ノードからの要求へ応答することでルータ及びサブネットのシミュレーションを同様に行うことができる。CSP205の1つ以上の外部通信マネージャ・モジュールは、CSP205により提供されたコンピューティング・ノード及び外部コンピューティング・システム間の通信を管理し、同様にファイアウォール・デバイスのシミュレーションを行い指定されたネットワーク・アクセス制約を強制し、リモート・リソース・サービス用に設定されたアクセス機構を管理してリモート・クライアントのプライベート・コンピュータ・ネットワークへの接続を保護することなどができる。他のタイプのネットワーク・トポロジ情報のシミュレーションを同様に行うことができ、いくつかの実施形態においてCSP205のさまざまなモジュールの使用についての追加の詳細を図3に関して以下で考察する。
加えて、少なくともいくつかの実施形態において、クライアントは、モジュール210とインタラクトし、このクライアントのために提供されたコンピュータ・ネットワーク用のさまざまなネットワーク・アクセス制約情報を設定する(たとえば、CSP205により提供されたAPIとの1回以上のプログラマティック・インタラクションを介して)ことができ、このようなネットワーク・アクセス制約情報は、提供されたコンピュータ・ネットワークがすでにクライアントにより使用中であった後など、少なくともいくつかのこのような実施形態で提供されたコンピュータ・ネットワークのために動的に後で変更されることができる。たとえば、クライアントは、つぎの、通信方向(着信対発信)、通信タイプ(たとえば、画像を除くテキスト用のHTTP要求を許可すること及びFTP要求を許可しないことなど、含まれたコンテンツ・タイプ及び/または使用された通信プロトコル・タイプに基づく)、他のコンピューティング・システムの位置(たとえば、提供されたコンピュータ・ネットワークの部分、提供されたコンピュータ・ネットワークに対応するリモート・クライアント・コンピュータ・ネットワークの部分、提供されたコンピュータ・ネットワーク及び任意の対応するリモート・クライアント・コンピュータ・ネットワークの外部に、プライベートまたは他の特殊なアクセスが確立されているリモート・リソース・サービスの部分などであるかどうか)、他のコンピューティング・システム・タイプなどのうちの1つ以上に基づくなど、提供されたコンピュータ・ネットワークの他のコンピューティング・ノードと及び/または他の外部コンピューティング・システムと、提供されたコンピュータ・ネットワークの一部またはすべてのコンピューティング・ノードが通信することを可能にするかどうか及びその方法についての情報を指定することができる。加えて、他の箇所でより詳細に考察されるように、少なくともいくつかの実施形態において、提供されたコンピュータ・ネットワークは、提供されたコンピュータ・ネットワークの部分またはその他の方法でこれへローカルに設定されたアクセス機構を介してなど、1つ以上のリモート・リソース・サービスへのプライベートまたは他の特殊なアクセスを提供するように設定されることができる。ネットワーク・トポロジ情報及び他のルーティング情報のためのものと同様の方式で、CSP205は、さまざまな方式で提供されたコンピュータ・ネットワーク用のネットワーク・アクセス制約情報を強制することができる。いくつかの実施形態において、提供されたコンピュータ・ネットワーク用の通信を管理することに関連した追加の詳細は、図3に関して以下で考察される。
図2Bは、この実施例において提供されたコンピュータ・ネットワーク220Aが図2Aのリモート・プライベート・コンピュータ・ネットワーク230のうちの1つなど、クライアントのリモート・プライベート・コンピュータ・ネットワークへのプライベート・ネットワーク拡張でありながら、このクライアントについてのCSP205(またはコンピュート・サービス・プロバイダの他の実施形態)により提供されることができる例示的なコンピュータ・ネットワーク220Aについての追加の詳細を説明する。この実施例において、提供されたコンピュータ・ネットワーク220A用のさまざまな接続及び通信経路は、設定可能なネットワーク・アクセス制約及びネットワーク・トポロジのタイプを説明する概念的な方式で示され、図3は、例示的に提供されたコンピュータ・ネットワーク220Aなど提供されたコンピュータ・ネットワークを作成するために使用されることができる下層・サブストレート・ネットワーク及び接続の実施例についての追加の詳細を説明する。
特に、図2Bにおいて、提供されたコンピュータ・ネットワーク220Aは、さまざまなコンピューティング・ノードがこの実施例において(たとえば、図示されない、異なるサブネット及び/または関連して設定されたネットワーキング・デバイスに対応するように)論理グループ264、265及び266で設定されながら、第一地理的位置1 260に(たとえば、地理的位置1の第一データ・センタに)設置されるCSP205により提供されたさまざまなコンピューティング・ノード(またはホスト・サーバ・コンピュータ)を含む。この実施例において、単一の概念的な仮想ルータ262は、発生する可能性がある異なるタイプの通信を説明するために、地理的位置1で示され、これらのコンピューティング・ノード及び他のコンピューティング・システム間の通信を制御するが、提供されたコンピュータ・ネットワーク220Aは、地理的位置1で複数の、または設定されないネットワーキング・デバイスを実際に含むことができ、コンピュータ・ネットワーク220Aは、下層・サブストレート・ネットワーク及び下層・サブストレート・ネットワークなどを経由して通信を制御する関連したモジュールを使用することで、複数の物理的な相互接続されたルータまたは他のネットワーキング・デバイスを介してなど、さまざまな方式で地理的位置1に設定可能なネットワーク・サービスにより実装されることができる。この実施例において、仮想ルータ262は、提供されたコンピュータ・ネットワーク220A上の対応する宛先コンピューティング・ノードへ提供されたコンピュータ・ネットワーク220A内のネットワーク・アドレスへ送信される通信をルーティングする、及び適切に提供されたコンピュータ・ネットワーク220Aの外側の他のネットワーク・アドレスへの他の通信をルーティングするなど、設定されたネットワーク・トポロジ情報、リモート・リソース・サービスへの設定されたプライベートまたは他の特殊なアクセス、及び他の設定されたネットワーク・アクセス制約情報を含む、提供されたコンピュータ・ネットワーク220A用に設定された情報に従い操作する。さらに、設定されたファイアウォール・デバイス、設定されたネットワーク・トポロジ情報、または他の設定されたネットワーク・アクセス制約により許可されない通信は、仮想ルータ262により遮断される、またはその他の方法でこれにより管理されることができる。
この実施例において、コンピュータ・ネットワーク220Aは、例示的なクライアント1のために提供され、クライアント1のリモート・コンピュータ・ネットワークへのネットワーク拡張である。クライアント1のリモート・コンピュータ・ネットワークは、第一遠隔位置サイトA290で複数のコンピューティング・システム(図示せず)を含み、仮想ルータ262は、地理的位置1で仮想通信リンク270を介してこれらの複数のコンピューティング・システムと通信するように設定される。たとえば、提供されたコンピュータ・ネットワーク220Aは、サイトA290で複数のコンピューティング・システムへの1つ以上の設定されたVPN接続を含むことができ、通信リンク270は、1つ以上のこのようなVPN接続に対応することができる。加えて、クライアント1のリモート・コンピュータ・ネットワークは、図示された任意選択のサイトB292のような、1つ以上の他の位置にコンピューティング・システムを任意選択で含むことができ、このような場合に、さらに仮想ルータ262は、サイトB292へ任意選択の仮想通信リンク272を介して(たとえば、サイトBへ直接に1つ以上の他の設定されたVPN接続を介して)など、他の位置でこれらの他のコンピューティング・システムと通信するように設定されることができる。
複数のVPN接続または他の安全な接続をリモート・コンピュータ・ネットワークのリモート・コンピューティング・システムへ使用するときに、各接続は、1サブセットのリモート・コンピューティング・システムに対応し(たとえば、これらのリモート・コンピューティング・システムに対応するリモート・コンピュータ・ネットワークの1サブセットのネットワーク・アドレスと関連することで)、通信を適切な接続へルーティングさせることができる。他の実施形態において、複数の接続が冗長な代替物である(たとえば、ロード・バランシングのために使用される)場合など、複数のVPN接続または他の安全な接続は、1つ以上の位置でリモート・コンピューティング・システムに使用されることができるが、リモート・コンピューティング・システムのいずれかへの通信を各々支援することができる。さらに、いくつかの実施形態において、クライアントのリモート・コンピュータ・ネットワークは、複数のサイトで複数のコンピューティング・システムを含むことができるが、リソース・コンピューティング・システムへの単一のVPN接続または他の安全な接続は、リモート・コンピュータ・ネットワークが適切なサイト及びコンピューティング・システムへの通信をルーティングするために応答可能でありながら、使用されることができる。
加えて、提供されたコンピュータ・ネットワーク220Aは、提供されたコンピュータ・ネットワーク220Aのコンピューティング・ノード及びインターネット296または他のパブリック・ネットワーク上で一般にアクセス可能な他の外部コンピューティング・システム間のすべての通信を、一部の通信を、または通信なしで許可するように設定されることができる。少なくともいくつかのこのような外部の通信を許可する場合に、さらに仮想ルータ262は、提供されたコンピュータ・ネットワーク220A用の任意選択の仮想境界ルータ255と一緒になど、提供されたコンピュータ・ネットワーク220Aの任意選択の仮想通信リンク278を介してこれらの複数の外部コンピューティング・システムと通信するように設定されることができる。仮想境界ルータ255は、地理的位置1でCSP205(たとえば、CSP205のこれらのコンピューティング・ノードを使用するクライアントへCSP205により提供された複数のコンピュータ・ネットワークを支援する実際のデバイス)により、下層・サブストレート・ネットワーク経由で通信を制御する下層・サブストレート・ネットワーク及び関連したモジュール(たとえば、許可されない通信がサブストレート・ネットワーク上へ提供されたコンピュータ・ネットワーク220aのコンピューティング・ノードにより送信されるのを防ぐために)を使用することによるなど、提供された外部コンピューティング・システム及びさまざまなコンピューティング・ノード間の通信を管理する1つ以上の実際のファイアウォール・デバイスまたは境界ルータ・デバイスを使用して、CSP205などにより、さまざまな方式で物理的に実現されることができる。さらにまた、仮想境界ルータ255は、サイトA及びBでリモート・クライアントのコンピュータ・ネットワークへ、1つ以上のリモート・リソース・サービスへなど、提供されたコンピュータ・ネットワーク220Aの外部に他のコンピューティング・システムへの他の通信を管理する際にさらに概念的に割り当てることができる。
加えて、提供されたコンピュータ・ネットワーク220Aは、提供されたコンピュータ・ネットワーク220Aの1つ以上のネットワーク・アドレスを割り当て、これらの1つ以上のリモート・リソース・サービスを表すことで、及びこれらの割り当てられたネットワーク・アドレスへ送信された通信のために行われるように特定の動作を任意選択で設定することなどにより、1つ以上のリモート・リソース・サービスへのプライベートまたは他の特殊なアクセスを提供するように設定されることができる。この実施例において、仮想ルータ262は、提供されたコンピュータ・ネットワーク220aの仮想通信リンク274経由でリモート・リソース・サービス294へのローカル・アクセスを提供するように設定されている。このようにして、たとえば、提供されたコンピュータ・ネットワーク220aのコンピューティング・ノードのうちの1つが通信リンク274へマッピングされる提供されたコンピュータ・ネットワーク220aの特定のネットワーク・アドレスへの通信を送信する場合に、仮想ルータは、提供されたコンピュータ・ネットワーク220a(たとえば、インターネットまたは他のパブリック・ネットワークを介して)の外部にリモート・リソース・サービス294へその通信を転送することができる。他の実施形態において、リモート・リソース・サービス294は、CSP205の部分である、またはその他の方法で地理的位置1にインタフェースを実装することができ、このような場合に、通信リンク274にマッピングされる提供されたコンピュータ・ネットワーク220Aの特定のネットワーク・アドレスへ送信された通信は、処理するためにリモート・リソース・サービスのそのインタフェースへ代わりに転送されることができる。
加えて、仮想通信リンク274は、少なくともいくつかの実施形態において、それらをリモート・リソース・サービス294に転送する前に1つ以上の方式でこれらの通信を変更するように、またはその他の方法で特殊な方式でリモート・リソース・サービス294にアクセスするような、さまざまな方式でこのリンクを介して送信された通信を管理するように設定されることができる。たとえば、図示された実施形態において、仮想通信リンク274は、リモート・リソース・サービス294により提供された1サブセットのコンピューティング関連のリソースがそのネームスペースの部分でありながら、リモート・リソース・サービス294内の特定のネームスペースに対応するように設定されることができる。それに応じて、仮想通信リンク274は、特定のネームスペースと関連したネームまたは他の識別子を使用して通信を変更または変換することで、特定のネームスペースを示すことを支援するリモート・リソース・サービスの特定のインタフェースを使用することでなど、特定のネームスペース内のリソースにアクセスするように設定されることができる。
加えて、仮想通信リンク274が特定のネームスペースに対応するように、またはその他の方法でリモート・リソース・サービス294により提供された1サブセットのリソースに対応するように設定される場合に、さらに提供されたコンピュータ・ネットワーク220Aは、同じリモート・リソース・サービス294にまた対応する1つ以上の他の仮想通信リンクを含むように任意選択で設定されることができるが、他の方式でリモート・リソース・サービス294にアクセスするように設定される。たとえば、提供されたコンピュータ・ネットワーク220Aは、別個の第二ネームスペースに対応する、任意の特定のネームスペースに対応しない、通信リンク274のために使用された顧客識別子とは異なるリモート・リソース・サービス294の顧客の識別子を使用するなどのように、仮想通信リンク274のものと異なる方式でリモート・リソース・サービス294にアクセスするように設定される別個の仮想通信リンク276を任意選択で含むことができる。この実施例において、仮想通信リンク274及び276は、それぞれリンク274及び276用のID1及びID2としてこの実施例で表現される、異なる識別子(たとえば、異なるネームスペース識別子)を使用するように設定される。このようにして、提供されたコンピュータ・ネットワーク220aのコンピューティング・ノードは、リモート・リソース294から異なるタイプの機能性にアクセス可能であることができる。さらに、本明細書で図示されないが、提供されたコンピュータ・ネットワーク220Aは、これらの他のリモート・リソース・サービスへ他の仮想通信リンクを使用して1つ以上の他のリモート・リソース・サービス(図示せず)にアクセスするように同様に設定されることができる。
リモート・リソース・サービス294の特定のネームスペースにアクセスするように仮想通信リンク274を設定することに加えて、またはこれをすることの代わりに、仮想通信リンクは、少なくともいくつかの実施形態において、リモート・リソース・サービス294へ追加情報を提供し、提供されたコンピュータ・ネットワーク220aである場合に通信の位置または他のソースをリモート・リソース・サービス294が有効にすることを可能にするように設定されることができる。たとえば、図示された実施形態において、仮想通信リンク274は、コンピュート・サービス・プロバイダにより、またはリモート・リソース・サービス294により提供されたコンピュータ・ネットワーク220aと関連する1つ以上の特定の識別子または他のアクセス制御インジケータに対応するように設定されることができるため、仮想通信リンク274を介してアクセスされるリモート・リソース・サービス294により提供された1サブセットの新規の及び/または既存のコンピューティング関連のリソースは、これらのリソースへのアクセスを制限する際にリモート・リソース・サービス294による使用のために、アクセス制御インジケータ(複数を含む)と関連する。
それに応じて、仮想通信リンク274は、追加のインジケータ(複数を含む)を含む通信を変更する、通信の変更なしで通信に加えて追加のインジケータ(複数を含む)を送信する、このような追加のインジケータ(複数を含む)を含むことを支援するリモート・リソース・サービスの特定のインタフェースを使用するなど、さまざまな方式で提供されたコンピュータ・ネットワーク220aと関連した指定された追加のインジケータ(複数を含む)を使用するように設定されることができる。加えて、仮想通信リンク274が1つ以上の追加のインジケータに対応するように設定される場合に、提供されたコンピュータ・ネットワーク220Aは、同じリモート・リソース・サービス294にまた対応する1つ以上の他の仮想通信リンクを含むように任意選択でさらに設定されることができるが、他の方式でリモート・リソース・サービス294にアクセスするように設定される。たとえば、提供されたコンピュータ・ネットワーク220Aは、任意の追加のインジケータを使用しないでリモート・リソース・サービス294にアクセスするように(たとえば、その他の方法で公的に利用可能な場合にリモート・リソース・サービス294へ同じアクセスを提供するように)、仮想通信リンク274で使用されたものと異なる1つ以上の他の追加のアクセス制御インジケータを使用するように、仮想通信リンク274のために使用された顧客識別子と異なるリモート・リソース・サービス294の顧客の識別子を使用するようになど、別個の仮想通信リンク276を任意選択で設定することができる。さらに、本明細書で図示されないが、提供されたコンピュータ・ネットワーク220aは、仮想通信リンク274と同じ1つ以上の追加のインジケータを使用するように設定される、またはその他の方法で設定される他の仮想通信リンクなど、これらの他のリモート・リソース・サービスへの他の仮想通信リンクを使用する1つ以上の他のリモート・リソース・サービス(図示せず)にアクセスするように同様に設定されることができる。
本開示の例示的な実施形態に従い、アプリケーション280dは、クライアント・プライベート・ネットワークのサイトA290のホスト・サーバによりホストされたVMI280a上で動作していることができる。またアプリケーション280dは、VMI280b〜280cにより提供された機能性を利用することができる(すなわち、これに依存することができる)。加えて、提供されたコンピュータ・ネットワーク220Aは、図1を参照して記述されるような機能性を提供する、アプリケーション移行サービス部140aを使用することができる。たとえば、アプリケーション移行サービス部140aを使用して、提供されたネットワーク220A内のホスト・サーバ264へアプリケーション280dを移行することができる。さらに特に、ホスト・コンピュータ264で、図1を参照して説明されるようにVMI280a〜280cを移行し、それぞれVMI1、VMI2、及びVMI3として立ち上げることができる。たとえば、2つの異なるサーバ・コンピュータがVMI280b〜280c及びVMI280aをホストするときにインスタンスにおいて、つぎにすべてのVMIを移行すると、VMI280b〜280cは、提供されたコンピュータ・ネットワーク220Aで異なるサーバ(たとえば、ホスト・サーバ265)でVMI2〜VMI3として立ち上げられることができる。さらに元のVMI280a〜280cがプライベート・サブネット280e内にあったため、移行時に、また新規のVMI、VMI1〜VMI3をプライベート・サブネット250Aに配置することができる。
図示された実施形態において、地理的位置1でCSP205のコンピューティング・ノードに加えて、さらに提供されたコンピュータ・ネットワーク220Aは、第二地理的位置2 280に(たとえば、地理的位置2で別個の第二データ・センタに)設置されるCSP205により提供されたコンピューティング・ノード284を含むことができる。それに応じて、仮想ルータ262は、地理的位置2で提供されたコンピュータ・ネットワーク220aの部分へ任意選択の仮想通信リンク268を含むように設定されることができる。この実施例において、同様に地理的位置2で提供されたコンピュータ・ネットワーク220Aの部分は、仮想通信リンク288を介して地理的位置1に提供されたコンピュータ・ネットワーク220Aの部分と通信することを備えるコンピューティング・ノード284への、またはこれらからの通信を管理するように概念的な仮想ルータ282で図示される。異なる地理的位置でのCSP205のコンピューティング・ノード間のこのような通信は、インターネットまたは他のパブリック・ネットワーク(たとえば、CSP205により支援された暗号化を使用するなど、安全なトンネルの部分として)経由で通信を送信することで、私的で安全な方式で(たとえば、地理的位置間の専用のリース・ラインを介して)通信を送信することなどにより、さまざまな実施形態においてさまざまな方式で処理されることができる。加えて、本明細書で図示されないが、地理的位置2で提供されたコンピュータ・ネットワーク220Aの部分は、リモート・クライアントのプライベート・ネットワーク(たとえば、地理的位置1への任意のVPN接続とは異なる1つ以上のVPN接続を介して)へ、リモート・リソース・サービスへ、インターネットへなど、地理的位置1での部分のために図示された同じタイプの他の仮想通信リンクの一部またはすべてを同様に含むことができる。
図2Bの例示的に提供されたコンピュータ・ネットワーク220Aを例示的な目的のために含むこと、ならびにクライアントのためにCSP205により提供された他のコンピュータ・ネットワークがすべてのタイプの設定された通信リンク及びネットワーク・トポロジ情報を含まない可能性がある、及び/または本明細書で図示されない他のタイプの設定された通信リンク及びネットワーク・トポロジ情報を含む可能性があることを理解するであろう。たとえば、いくつかの実施形態及び状況において、提供されたコンピュータ・ネットワークは、コンピューティング・ノードに加えて、またはこれらの代わりに設定されたデバイス及び他のリソースを含むことができ、このような場合に、各このような他のリソースは、提供されたコンピュータ・ネットワークのネットワーク・アドレスを任意選択で割り当てられることができる。さらに、図2Bで図示された概念的なデバイス及び通信リンクは、さまざまなタイプの下層物理デバイス、接続及びモジュールを使用して実現されることができる。加えて、本明細書で図示されないが、クライアントは、提供されたコンピュータ・ネットワークからであろうと、または代替の他のリモート・コンピューティング・システムからであろうとも、サブスクライブ/登録してリソースを使用する、さまざまなクレデンシャル(たとえば、ユーザID、パスワードなど)を受信/作成する、提供されたコンピュータ・ネットワーク(たとえば、プライベート企業ネットワークへのネットワーク拡張)から後にアクセスされる他のリモート・コンピューティング・システム(たとえば、リモート・プライベート企業ネットワークの部分である)からリソース及び/またはネームスペースを作成するなど、リモート・リソース・サービスとのさまざまな他のタイプのインタラクションを実行することができる。
図3は、コンピュート・サービス・プロバイダの実施形態によるなど、コンピュータ・ネットワークを提供する際に使用のためのコンピューティング・システムの例示的な実施形態を図示するネットワーク図である。特に、この実施例において、複数の物理コンピューティング・システムは、データ・センタ300内の同じ場所に設置され、さまざまなネットワーキング・デバイス及び1つ以上の物理ネットワークを介して相互接続される。この実施例において、コンピュート・サービス・プロバイダが物理コンピューティング・システム及び他のデバイスを使用して、仮想ネットワークとして各提供されたコンピュータ・ネットワークを確立して維持することで、及び仮想ネットワークをオーバーレイするサブストレート・ネットワークとして物理ネットワーク(複数を含む)を使用することで、クライアントのために複数のコンピュータ・ネットワークを提供する。たとえば、図2Bの実施例に関して、データ・センタ300を地理的位置1に設置することができ、図示された物理コンピューティング・システムを使用して、提供されたコンピュータ・ネットワーク220Aのコンピューティング・ノード264、265及び266を提供することができる。オーバーレイ・ネットワーク及び下層・サブストレート・ネットワークの使用は、少なくともいくつかの実施形態において提供されたコンピュータ・ネットワークのコンピューティング・ノードへ透過的であることができる。
このようにして、この実施例において、コンピュート・サービス・プロバイダにより提供されたコンピュータ・ネットワークは、下層物理サブストレート・ネットワークを介して通信を送信する仮想オーバーレイ・ネットワークとして実装される。提供された仮想オーバーレイ・ネットワークは、いくつかの実施形態において通信をカプセル化しないで(たとえば、物理サブストレート・ネットワークのネットワーキング・プロトコルのために設定された通信に仮想ネットワーク用の仮想ネットワーク・アドレス情報を組み込むことで)など、さまざまな実施形態のさまざまな方式で実装されることができる。1つの例示的な実施例として、仮想ネットワークは、32ビット1Pv4(「インターネット・プロトコル・バージョン4」)ネットワーク・アドレスを使用して実装されることができ、これらの32ビット仮想ネットワーク・アドレスは、通信パケット若しくは他のデータ伝送(たとえば、ステートレスIP/ICMP変換、またはSIITを使用して)のヘッダを書き換えること、またはその他の方法でこのようなデータ伝送を変更して、それらを設定する第一ネットワーキング・プロトコルから別個の第二ネットワーキング・プロトコルへそれらを変換することによってなど、物理サブストレート・ネットワークにより使用された128ビット1Pv6(「インターネット・プロトコル・バージョン6」)ネットワーク・アドレスの部分として組み込まれることができる。
別の例示的な実施例として、仮想ネットワーク及びサブストレート・ネットワークの両方は、同じネットワーク・アドレッシング・プロトコル(たとえば、1Pv4または1Pv6)を使用して実装されることができ、仮想ネットワーク・アドレスを使用して提供された仮想オーバーレイ・ネットワークを介して送信されたデータ伝送は、サブストレート・ネットワーク経由でこの伝送を送信しているが、元の仮想ネットワーク・アドレスを変更されたデータ伝送に格納しながら、またはその他の方法でそれらがサブストレート・ネットワークを終了させるときにそれらの元の形式へデータ伝送を復元できるように追跡しながら、サブストレート・ネットワークに対応する異なる物理ネットワーク・アドレスを使用するように変更されることができる。他の実施形態において、通信のカプセル化を使用して、少なくともいくつかのオーバーレイ・ネットワークを実現することができる。
図3の図示された実施例は、コンピュート・サービス・プロバイダの実施形態により操作された複数の物理コンピューティング・システムを備えるデータ・センタ300を含む。データ・センタ300は、データ・センタ300の外部で1つ以上のパブリック・ネットワーク335に接続され、プライベート・ネットワーク340を介して1つ以上のリモート・コンピューティング・システム345aへ、他の地理的位置で複数のコンピューティング・システムを各々含む1つ以上の他のグローバルにアクセス可能なデータ・センタ360へ、及び1つ以上の他のリモート・コンピューティング・システム345bへ、アクセスを提供する。パブリック・ネットワーク335は、たとえば、インターネットのような、おそらくさまざまな別個の当事者により運営された、ネットワークのうちの公的にアクセス可能なネットワークであってもよく、プライベート・ネットワーク340は、たとえば、プライベート・ネットワーク340の外部のコンピューティング・システムから全体的にまたは部分的にアクセス不可能である企業ネットワークであってもよい。コンピューティング・システム345bは、たとえば、インターネットへ直接接続する(たとえば、電話線、ケーブル・モデム、デジタル加入者線(「DSL」)など)各々ホーム・コンピューティング・システムであってもよい。
この実施例において、提供された仮想コンピュータ・ネットワークの設定をコンピュート・サービス・プロバイダのマネージャ・モジュール310により容易にし、コンピュート・サービス・プロバイダの複数の他のモジュールを使用してサブストレート・ネットワークに入る及び/またはこれを出る通信を変更することで物理サブストレート・ネットワーク・エッジからなど、提供されたコンピュータ・ネットワークの機能性を実装する。特に、この実施例において、コンピュート・サービス・プロバイダの複数のノード通信マネージャ・モジュールは、図示されたノード通信マネージャ・モジュール309a、309d及び350のような、関連したコンピューティング・ノードへ及びこれらからの通信を各々管理する。加えて、この実施例において、コンピュート・サービス・プロバイダの外部通信マネージャ・モジュール370は、以下でより詳細に考察されるような、データ・センタ300内の物理コンピューティング・システム及び外部コンピューティング・システム間の通信を管理する。この実施例において単一の外部通信マネージャ・モジュール370のみを図示するが、冗長性及びロード・バランシングのためなど、複数のデバイスを使用してモジュール370の機能性を実装できることを理解するであろう。
データ・センタ300は、複数の物理コンピューティング・システム(たとえば、1つ以上の仮想マシン・インスタンスを実行するホスト・サーバ・コンピュータ)305a〜305d及び355a〜355nだけではなく、関連したコンピューティング・システム355a〜355n用の通信を管理する1つ以上の他のコンピューティング・システム(図示せず)上で実行するCSPノード通信マネージャ・モジュール350、ならびに1つ以上のコンピューティング・システム(図示せず)上で実行するコンピュート・サービス・プロバイダのマネージャ・モジュール310も含む。この例示的な実施形態において、各物理コンピューティング・システム305a〜305dは、複数の仮想マシンのコンピューティング・ノードをホストし、仮想マシン(「VM」)ノード通信マネージャ・モジュール(たとえば、物理コンピューティング・システム用の仮想マシンのハイパーバイザ・モニタの部分として)、またコンピューティング・システム305a上のCSP VMノード通信マネージャ・モジュール309a及び仮想マシン307a、ならびにコンピューティング・システム305d上のCSP VMノード通信マネージャ・モジュール309d及び仮想マシン307dを含む。クライアントのために提供されたコンピュータ・ネットワークの別個のコンピューティング・ノードとしてコンピュート・サービス・プロバイダは、各仮想マシン・コンピューティング・ノードを使用することができる。物理コンピューティング・システム355a〜355nは、この実施例において、いずれの仮想マシンも実行しないので、コンピュート・サービス・プロバイダによりクライアントのために提供されたコンピュータ・ネットワークの部分である別個のコンピューティング・ノードとして各々動作することができる。他の実施形態において、データ・センタですべてか無かの物理コンピューティング・システムは、仮想マシンをホストすることができる。
たとえば、リモート・コンピューティング・システム345aは、エンタープライズ・ベース・ネットワークの部分であってもよい。アプリケーションAPP1は、エンタープライズ・ベース・ネットワークのリモート・コンピューティング・システム345aのホスト・サーバ390によりホストされたVMI1上で動作していることができる。またアプリケーションAPP1は、同じホスト・サーバ390によりまたホストされたVMI2及びVMI3により提供された機能性を利用することができる(すなわち、これらに依存することができる)。コンピュート・サービス・プロバイダ(たとえば、パブリック・クラウド・ネットワーク)のデータ・センタ300は、図1を参照して記述されたような機能性を提供する、アプリケーション移行サービス140aを使用することができる。たとえば、アプリケーション移行サービス140aを使用して、データ・センタ300内のホスト・サーバ305bへアプリケーションAPP1を移行することができる。さらに特に、図1を参照して説明されるように、VMI1〜VMI3は、ホスト390から移行され、データ・センタ300内のホスト・コンピュータ305bで、それぞれVMI1、VMI2、及びVMI3として立ち上げられることができる。
元のVMI(リモート・コンピューティング・システム345a内のホスト390上で動作するVMI1〜VMI3)をプライベート・サブネット391に接続できる。移行時に、また新規に立ち上げられたVMI(ホスト・サーバ305b内のVMI1〜VMI3)をプライベート・サブネット393内に配置できる。加えて、移行プロセスの部分として、ホスト・サーバ・コンピュータ305bのネーム及びIPアドレスは、コンピューティング・システム345aのエンタープライズ・ベース・ネットワーク内のホスト・サーバ390のネーム(たとえば、「ホスト1」)及びIPアドレス(たとえば、IP1)と同じであるように変更されることができる。
さらにこの例示的なデータ・センタは、スイッチ315a及び315b、エッジ・ルータ325a〜325c、ならびにコア・ルータ330a〜330cのような、複数の物理ネットワーキング・デバイスを含む。スイッチ315aは、物理コンピューティング・システム305a〜305cを含む物理ネットワークの部分であり、エッジ・ルータ325aへ接続される。スイッチ315bは、物理コンピューティング・システム305d、355a〜355n、ならびにCSPノード通信マネージャ・モジュール350及びCSPシステム・マネージャ・モジュール310を提供するコンピューティング・システム(複数を含む)を含む別個の物理ネットワークの部分であり、エッジ・ルータ325bへ接続される。スイッチ315a〜315bにより確立された物理ネットワークは、エッジ・ルータ325a〜325c及びコア・ルータ330a〜330cを含む、仲介相互接続ネットワーク320を介して各他の及び他のネットワーク(たとえば、パブリック・ネットワーク335)に順に接続される。エッジ・ルータ325a〜325cは、2つ以上のネットワーク間のゲートウェイを提供する。たとえば、エッジ・ルータ325aは、スイッチ315aにより確立された物理ネットワーク及び相互接続ネットワーク320間のゲートウェイを提供する。エッジ・ルータ325cは、相互接続ネットワーク320及びパブリック・ネットワーク335間のゲートウェイを提供する。コア・ルータ330a〜330cは、このようなデータ伝送の特性(たとえば、ソース及び/または宛先サブストレート・ネットワーク・アドレス、プロトコル識別子などを含むヘッダ情報)及び/または相互接続ネットワーク320自体の特性(たとえば、物理ネットワーク・トポロジに基づくルータなど)に適切に基づくようにパケットまたは他のデータ伝送を転送することなどにより、相互接続ネットワーク320内の通信を管理する。
図示されたノード通信マネージャ・モジュールは、関連したコンピューティング・ノードへ及びこれらから送信された通信を管理する。たとえば、ノード通信マネージャ・モジュール309aは、関連した仮想マシン・コンピューティング・ノード307aを管理し、ノード通信マネージャ・モジュール309dは、関連した仮想マシン・コンピューティング・ノード307dを管理し、各他のノード通信マネージャ・モジュールは、1グループの1つ以上の他の関連したコンピューティング・ノードのための通信を同様に管理することができる。図示されたノード通信マネージャ・モジュールは、コンピューティング・ノード間の通信を管理し、仲介物理サブストレート・ネットワーク(たとえば、相互接続ネットワーク320ならびにスイッチ315a及び315bと関連した物理ネットワーク)経由で特定の仮想ネットワークをオーバーレイすることができ、ファイアウォール・ポリシー及び他のネットワーク・アクセス制約を実装し、このような通信を制御することができる。外部通信マネージャ・モジュール370は、データ・センタ300に出入りする外部通信を管理し、さらにこのような外部通信についてデータ・センタ300内のサブストレート・ネットワーク経由でオーバーレイ・ネットワークを実装する。外部通信マネージャ・モジュール370は、データ・センタ300の外部のリモート・リソース・サービスへのプライベートまたは他の特殊なアクセス、及び任意選択で外部リモート・クライアント・コンピュータ・ネットワークへの少なくともいくつかのVPN接続を許可する提供されたコンピュータ・ネットワーク用の少なくともいくつかの設定されたアクセス機構を含む、ファイアウォール・ポリシー及び他のネットワーク・アクセス制約を実装する動作を行うことができる、または代わりにこのようなVPN接続のコンピュート・サービス・プロバイダの部分を実装する他のハードウェア及び/またはソフトウェア(図示せず)と併せて動作することができる。
このようにして、1つの例示的な実施例として、コンピューティング・システム305a上の仮想マシン・コンピューティング・ノード307aのうちの1つは、コンピューティング・システム305d上の仮想マシン・コンピューティング・ノード307dのうちの1つ及びコンピューティング・システム355a(及びコンピュート・サービス・プロバイダによりまた使用される、このデータ・センタ内の、または1つ以上の他のデータ・センタ360内の任意選択で他のコンピューティング・ノード)に加えて、ならびに1Pv4が仮想ネットワーク用の仮想ネットワーク・アドレスを表すために使用されながら、クライアント用の特定の提供された仮想コンピュータ・ネットワーク(たとえば、図2Bの提供されたコンピュータ・ネットワーク220A)の部分であってもよい。他の仮想マシン・コンピューティング・ノード307a、仮想マシン・コンピューティング・ノード307d、及びコンピューティング・システム355b〜355n(他の図示されたコンピューティング・ノードと同様に)は、他のクライアントへ提供される他のコンピュータ・ネットワークに現在専用であることができる、提供されたコンピュータ・ネットワークへ現在割り当てられずコンピュート・サービス・プロバイダによる使用のために利用可能であることができる、及び/またはまた同じ特定の提供された仮想コンピュータ・ネットワークの部分であってもよい。つぎに特定の提供された仮想コンピュータ・ネットワークの部分である仮想マシン・コンピューティング・ノード307a上のクライアントのために実行するプログラムは、その宛先仮想マシン・コンピューティング・ノード307dへ割り当てられるその提供された仮想コンピュータ・ネットワーク用の仮想ネットワーク・アドレスを指定することなどにより、特定の提供された仮想コンピュータ・ネットワークの仮想マシン・コンピューティング・ノード307dへ発信通信(図示せず)を送信することができる。ノード通信マネージャ・モジュール309aは、この発信通信を受信し、少なくともいくつかの実施形態において、仮想マシン・コンピューティング・ノード307aを送信することについて及び/または宛先仮想マシン・コンピューティング・ノード307dについて以前に設定された情報に基づき、及び/またはシステム・マネージャ・モジュール310と動的にインタラクトする(たとえば、承認決定を取得するため、一部またはすべてのこのような情報を取得するためなど)ことなどにより、発信通信の送信を承認するかどうかを判定する。
ノード通信マネージャ・モジュール309aが発信通信を承認することを決定する(またはこのような承認決定を実行しない)場合に、モジュール309aは、この通信用の宛先仮想ネットワーク・アドレスに対応する実際の物理サブストレート・ネットワーク位置を決定する。この実施例において、相互接続ネットワークは、1Pv6を使用して相互接続ネットワークを介して接続されたコンピューティング・ノード用の実際のネットワーク・アドレスを表し、モジュール309aは、発信通信のヘッダを書き換えて、実際の1Pv6サブストレート・ネットワーク・アドレスを使用してノード通信マネージャ・モジュール309dへこの発信通信を送信する。ノード通信マネージャ・モジュール309aは、実際の1Pv6宛先ネットワーク・アドレスを決定し、たとえば、システム・マネージャ・モジュール310と動的にインタラクトすることで宛先仮想コンピューティング・ノード307dの仮想ネットワーク・アドレスのために使用することができる、またはその情報を先に決定し格納することができる(たとえば、アドレス解決プロトコルを使用する要求またはARPのような、その宛先仮想ネットワーク・アドレスについての情報のために仮想マシン・コンピューティング・ノード307aを送信することから事前の要求に応答して)。この実施例において、使用される実際の1Pv6宛先ネットワーク・アドレスは、仮想宛先ネットワーク・アドレス及び追加情報を埋め込み、カプセル化せずにオーバーレイ・ネットワーク経由で通信を送信する。
ノード通信マネージャ・モジュール309dが相互接続ネットワーク320を介して通信を受信するときに、それは、実際の1Pv6宛先ネットワーク・アドレスから仮想宛先ネットワーク・アドレス及び追加情報を抽出し、通信を送信する仮想マシン・コンピューティング・ノード307dのこれに決定する。つぎにノード通信マネージャ・モジュール309dは、実際の1Pv6ソース・ネットワーク・アドレスから仮想ソース・ネットワーク・アドレス及び追加情報を抽出すること、ならびにその仮想ソース・ネットワーク・アドレスを含むコンピューティング・ノードがこの通信(この実施例において、ノード通信マネージャ・モジュール309a)を転送したノード通信マネージャ・モジュールにより実際に管理されることを確認することなどにより、この通信を宛先仮想マシン・コンピューティング・ノード307dのために承認するかどうかを任意選択で判定し、悪意のある送信者によるソース・ネットワーク・アドレスのなりすましを防ぐ。この通信を承認すると決定する(またはノード通信マネージャ・モジュール309dがこのような承認決定を実行しない)場合に、つぎにモジュール309dは、着信通信のヘッダを書き換え、ソース・ネットワーク・アドレスとして仮想マシン・コンピューティング・ノードの仮想ネットワーク・アドレスを送信することを使用することで、及び宛先ネットワーク・アドレスとして宛先仮想マシン・コンピューティング・ノードの仮想ネットワーク・アドレスを使用することなどにより、仮想ネットワーク用の適切な1Pv4ネットワーク・アドレスを使用して宛先仮想マシン・コンピューティング・ノード307dへ着信通信を送信する。
着信通信のヘッダを書き換えた後に、つぎにモジュール309dは、宛先仮想マシン・コンピューティング・ノードへ変更された通信を転送する。少なくともいくつかの実施形態において、着信通信を宛先仮想マシンへ転送する前に、またモジュール309dは、セキュリティに関連した追加のステップを実行することができる。たとえば、モジュール309dは、仮想マシン・コンピューティング・ノードを送信することを承認して宛先仮想マシンと通信する(たとえば、同じ顧客または他のエンティティと関連する、コンピューティング・ノードを承認して相互通信する異なるエンティティと関連するなど、同じ仮想ネットワーク及び/またはその提供された仮想ネットワークのために指定されたネットワーク・アクセス制約情報に属していることに基づき)こと、及び/または着信通信がモジュール309dにより事前に取得された情報に基づき、またはシステム・マネージャ・モジュール310とインタラクトすることに基づくなど、許可されたタイプのものであることを検証することができる。
仮想マシン・コンピューティング・ノード307aを送信することがデータ・センタ300の外部の1つ以上の意図された宛先コンピューティング・システムへ発信通信(図示せず)を代わりに(またはこれに加えて)送信する場合に、ノード通信マネージャ・モジュール309aは、同様の方式で発信通信を受信して処理する。意図された外部宛先コンピューティング・システムは、たとえば、同じ特定の提供された仮想コンピュータ・ネットワークの部分である(たとえば、特定の提供されたコンピュータ・ネットワークが拡張であるリモート仮想クライアント・コンピュータ・ネットワーク上で、またはコンピュート・サービス・プロバイダによりまた使用されて特定の仮想コンピュータ・ネットワークの一部を提供する別のデータ・センタ360で)別のコンピューティング・ノード、リモート・リソース・サービスのコンピューティング・システム、インターネット上で公的にアクセス可能なコンピューティング・システムなどであってもよい。少なくともいくつかの実施形態及び状況において、モジュール309aは、発信通信の送信を承認するかどうかを最初に判定することができ、このような場合に、通信用の宛先ネットワーク・アドレスに対応する実際の物理サブストレート・ネットワーク位置を決定する。この実施例において、決定された物理サブストレート・ネットワーク位置は、モジュール370がノード通信マネージャ・モジュールにその他の方法で割り当てられないすべての仮想及び/または実際のネットワーク・アドレスと関連するような場合などに、外部通信マネージャ・モジュール370に対応する。モジュール370が相互接続ネットワーク320を介して通信を受信するときに、それは受信した通信から宛先ネットワーク・アドレス及び追加情報を同様に抽出し、この通信を転送するかどうか及びこのことをする方法を判定し、意図された宛先のための通信を承認するかどうかを任意選択で判定することを備える。通信を承認することを決定する(またはモジュール370がこのような承認決定を実行しない)場合に、つぎにモジュール370は、着信通信のヘッダを書き換えて、適切な1Pv4パブリック・ネットワーク・アドレス(またはパブリック・ネットワーク335に適切な他のネットワーク・アドレス)を使用して、この着信通信を宛先に送信し、つぎにパブリック・ネットワーク335経由で変更された通信を転送する。
このようにして、上述したように、外部通信マネージャ・モジュール370は、これらのリモート・リソース・サービスのために設定されたアクセス機構を介してリモート・リソース・サービスへ送信された発信通信を含む、図示された実施形態において提供されたコンピュータ・ネットワークからの発信通信を処理する。特定の提供されたコンピュータ・ネットワーク用に設定されたアクセス機構を介してリモート・リソース・サービスへこの発信通信を送信している場合に、モジュール370及び/または送信するコンピューティング・ノードの関連したノード通信マネージャ・モジュールは、少なくともいくつかの実施形態及び状況において動作をさらに行うことができる。たとえば、特定の提供された仮想コンピュータ・ネットワークは、そのリモート・リソース・サービスの特定のネームスペースにマッピングされる特定のリモート・リソース・サービス(たとえば、コンピューティング・システム345bのうちの1つ以上を介して、または別のデータ・センタ360で1つ以上のコンピューティング・システムを介して提供されたリモート・リソース・サービス)のために設定されたアクセス機構を有することができ、仮想マシン・コンピューティング・ノード307aを送信することは、その設定されたアクセス機構を介して通信を送信することができる。特定の提供されたコンピュータ・ネットワーク用のそのリモート・リソース・サービスへ設定されたアクセス機構は、たとえば、その設定されたアクセス機構を表すために割り当てられる特定の提供されたコンピュータ・ネットワークの仮想ネットワーク・アドレスであってもよく、このような場合に、その割り当てられた仮想ネットワーク・アドレスは、モジュール370と関連し、発信通信をモジュール370に送信させることができる。
このような発信通信をパブリック・ネットワーク335を介してリモート・リソース・サービスへ転送する前に、モジュール370は、参照する発信通信を変更するために、またはその他の方法でアクセス機構が対応する特定のネームスペースを使用するためなどに、使用されたアクセス機構用の設定を反映するさまざまな動作を行うことができる。このような状況において、モジュール370は、ローカルに設定情報を格納することで、システム・マネージャ・モジュール310に接触して設定情報を取得することなどによるような、さまざまな方式でアクセス機構用のネームスペース及び他の設定情報を決定することができる。加えて、モジュール370は、コンピュート・サービス・プロバイダへ事前に提供された対応する設定情報(たとえば、ネームスペースを示す1つ以上の特定のメッセージ・パラメータの表示、ネームスペース識別子を任意選択で含むことができるネームまたは参照リソースに使用された1つ以上の特定のメッセージ・パラメータの表示、ネームスペースを示すことが可能である、またはその他の方法でネームスペース情報を使用するメッセージ・タイプの表示など)を含むリモート・リソース・サービスなどにより、さまざまな方式で特定のネームスペースを使用して通信を変更する方法及びこれらを変更するときを判定することができる。
1つの特定の例示的な実施例として、リモート・リソース・サービスは、データ・ストレージ・サービスを提供することができ、発信通信は、特定のストレージ関連のリソースにアクセスする(たとえば、格納されたオブジェクトまたは他のグループの格納されたデータを取得する)要求であってもよい。このような場合に、特定のストレージ・リソースは、提供されたコンピュータ・ネットワークの外部の(たとえば、クライアントのリモート・プライベート・コンピュータ・ネットワーク上の)コンピューティング・システムを使用することなどにより、クライアントにより画定されたネームスペースの部分としてクライアントにより事前に作成されていることができる。その同じネームスペースを使用するように特定の提供されたコンピュータ・ネットワーク用のアクセス機構を設定することで、提供されたコンピュータ・ネットワークのコンピューティング・ノードは、クライアントの既存の格納されたリソースにアクセスしてこれを使用することができる。例示的な実施例として、クライアントのリモート・プライベート・コンピュータ・ネットワークが企業ネットワークである場合に、クライアントは、第一ネームスペースに細心の注意を要する人的リソースを格納するため、第二ネームスペースに制限されたソフトウェア開発ソフトウェア及び他のデータを格納するため、ならびに第三ネームスペースを介して企業全体に一般的に利用可能である他の企業データを格納するためなど、異なるタイプのデータを格納するために異なるネームスペースを使用することができる。
コンピュート・サービス・プロバイダの提供されたコンピュータ・ネットワークを特定の1サブセットの企業(たとえば、人事担当者)のみが使用する場合に、特定の提供されたコンピュータ・ネットワークのためのリモート・リソース・サービスへのアクセス機構は、細心の注意を要する人的リソース・データ用の第一ネームスペースを使用するように設定されることができる。さらに、特定の提供されたコンピュータ・ネットワークは、一般的に利用可能な企業データ用の第三ネームスペースを使用するためなど、リモート・リソース・サービス(たとえば、提供されたコンピュータ・ネットワークの異なる割り当てられた仮想ネットワーク・アドレスを使用して)に設定された第二アクセス機構を任意選択で有することができ、特定の提供されたコンピュータ・ネットワークのコンピューティング・ノードは、特定の提供されたコンピュータ・ネットワークの異なるローカル仮想ネットワーク・アドレスとインタラクトして、異なるグループのリソースへのアクセス権を取得することができる。
別の例示的な実施例として、特定の提供されたコンピュータ・ネットワーク用のリモート・リソース・サービスへのアクセス機構は、特定の提供されたコンピュータ・ネットワークのコンピューティング・ノードのみがこれらのコンピューティング・ノードにより作成され使用されるストレージ・リソースへのアクセス権を有することを可能にするように代わりに設定されることができる。このような場合に、コンピュート・サービス・プロバイダは、新規のネームスペースを自動的に生成する(たとえば、特定の提供されたコンピュータ・ネットワークのコンピューティング・ノードへその情報を提供しないで)こと、または設定情報を有するクライアントにより示される新規のネームスペースを使用することなどにより、特定の提供されたコンピュータ・ネットワークで使用する新規のネームスペースを決定することができ、この新規のネームスペースを使用するようにアクセス機構を設定することができる。さらにコンピュート・サービス・プロバイダまたは特定の提供されたコンピュータ・ネットワークのコンピューティング・ノードは、リモート・リソース・サービスに依存している、リモート・リソース・サービス内に新規のネームスペースを作成する最初の動作を行う必要がある可能性がある。新規のネームスペースが利用可能であると、特定の提供されたコンピュータ・ネットワークのコンピューティング・ノードは、設定されたアクセス機構を同様に使用して、リモート・リソース・サービスとインタラクトし、新規のネームスペースの部分である新規の格納されたリソースを作成してこのように格納されたリソースにアクセスすることができ、外部通信マネージャ・モジュール370は、新規のネームスペースを使用するように適切に発信通信を同様に変更する。
特定のリモート・リソース・サービス内の特定のネームスペースに対応する設定されたアクセス機構を実現するように設定されることに加えて、またはこのことの代わりに、外部通信マネージャ・モジュール370は、いくつかの実施形態において、そのアクセス機構を介してそのリモート・リソース・サービスへ送信された一部またはすべての通信のためのアクセス制御に関連した1つ以上の追加のインジケータを含むように設定されることができ、仮想マシン・コンピューティング・ノード307aを送信することは、その設定されたアクセス機構を介する通信のように送信することができる。パブリック・ネットワーク335を介してこのような発信通信をリモート・リソース・サービスへ転送する前に、モジュール370は、リモート・リソース・サービスに固有の方式で通信のヘッダ及び/または本体を変更することなどにより、アクセス機構が対応する1つ以上の追加のインジケータを含むように、発信通信を変更することなどにより、使用されたアクセス機構のための設定を反映するさまざまな動作を行うことができる(たとえば、リモート・リソース・サービスは、仮想マシン・コンピューティング・ノード307aを送信することにより指定された任意のインジケータの代わりであろうと、またはこれに加えてであろうと、1つ以上のアクセス制御インジケータのクライアント仕様がリモート・リソース・サービスにより支援された方式で1つ以上の追加のインジケータを含むことを可能にする場合に)。このような状況において、モジュール370は、ローカルに情報を格納すること、システム・マネージャ・モジュール310に接触して情報を取得することなどによるような、さまざまな方式でアクセス機構用の追加のインジケータ(複数を含む)を決定することができる。加えて、モジュール370は、コンピュート・サービス・プロバイダへ事前に提供された対応する設定情報(たとえば、このようなアクセス制御インジケータを示す1つ以上の特定のメッセージ・パラメータの表示、1つ以上のこのようなアクセス制御インジケータを任意選択で含むことができる、リソースにアクセスするために使用された1つ以上の特定のメッセージ・パラメータの表示、1つ以上のこのようなアクセス制御インジケータを指定することが可能である、またはその他の方法でこのようなアクセス制御インジケータを使用するメッセージ・タイプの表示など)を含むリモート・リソース・サービスによるような、さまざまな方式で特定の追加のインジケータ(複数を含む)を使用するように通信を変更する方法及びこれを変更するときを決定することができる。
設定されたアクセス機構を有するネームスペース情報の使用について事前に考察された実施例と同様な方式で、リモート・リソース・サービスは、データ・ストレージ・サービスを提供することができ、発信通信は、特定のストレージ関連のリソースにアクセスする(たとえば、格納されたオブジェクトまたは他のグループの格納されたデータを取得する)要求であってもよい。このような場合に、特定のストレージ・リソースは、送信する仮想マシン・コンピューティング・ノード307aが所属する提供されたコンピュータ・ネットワークのコンピューティング・ノードのうちの1つにより事前に作成されていることができる、または現在の通信の部分として新規に作成またはアクセスされていることができる。いくつかの実施形態において、さらにコンピュート・サービス・プロバイダは、リモート・リソース・サービスに依存している、リモート・リソース・サービス内での使用のために1つ以上の追加のインジケータを指定する(たとえば、それらを定義する)最初の動作を行う必要がある可能性がある。送信する仮想マシン・コンピューティング・ノード307a及び関連したクライアントは、追加のインジケータ(複数を含む)の使用に気付かない可能性があるが、外部通信マネージャ・モジュール370は、関連したインジケータ(複数を含む)に適切な発信通信をそれでも変更する。
さらに、上述したように、外部通信マネージャ・モジュール370は、特定のリモート・コンピュータ・ネットワークへ設定されたVPN接続を介して送信された発信通信のような、提供されたコンピュータ・ネットワーク拡張から拡張が対応するリモート・コンピュータ・ネットワークへである図示された実施形態で発信通信を処理する。少なくともいくつかの実施形態において、コンピュート・サービス・プロバイダは、VPN接続を確立する際にクライアントによる使用のために遠隔位置へ適切なハードウェア・デバイス、ソフトウェア及び/または設定情報を配信させるように、データ・センタ300へ遠隔の位置からデータ・センタ300でクライアントのために提供されたコンピュータ・ネットワークへのこのようなVPN接続の確立をクライアントがプログラムで開始することを可能にするリモート・アクセス確立APIを提供する。たとえば、コンピューティング・システム345bのうちの1つは、このようなハードウェア・デバイス及び/またはソフトウェアを販売またはその他の方法で提供するオンライン小売店に対応することができ、このような場合にコンピュート・サービス・プロバイダは、この小売店が提供する別々のAPIを使用して、クライアントに対応する遠隔位置または他の指定された位置への配信用のこのようなハードウェア・デバイス及び/またはソフトウェアを注文することができる(たとえば、クライアント用のコンピュート・サービス・プロバイダが事前に格納する情報に基づく、クライアントのためにこの小売店が事前に格納する情報に基づくなど、コンピュート・サービス・プロバイダの提供されたAPIを呼び出す部分としてクライアントが指定するように)。このようなVPN接続または他の安全な接続を確立してクライアントが提供されたコンピュータ・ネットワークへのリモート・アクセス権を有することを可能にすると、さらにモジュール370は、安全な接続が対応する遠隔位置に1つ以上の宛先コンピューティング・システムのために意図される発信通信を送信するために安全な接続を使用することでなどにより、安全な接続を支援する動作を行うことができる。
このようにして、図3に関して上述されたように、少なくともいくつかの実施形態において、コンピュート・サービス・プロバイダは、コンピュート・サービス・プロバイダのさまざまなノード通信マネージャ・モジュール及びコンピュート・サービス・プロバイダの1つ以上の外部通信マネージャ・モジュールを使用するような、下層サブストレート・ネットワークを使用してオーバーレイ・ネットワークとしてそれらを実現することでクライアントへ仮想コンピュータ・ネットワークを提供する。少なくともいくつかの実施形態において、さらに1つ以上のシステム・マネージャ・モジュールは、どのコンピューティング・ノードがどの提供された仮想ネットワークに属するかを追跡及び/または管理することで、ならびに特定の仮想ネットワークのために使用された(たとえば、特定の顧客または他のエンティティにより)仮想ネットワーク・アドレスに対応する実際の物理サブストレート・ネットワーク・アドレスについての情報を提供することなどにより、コンピューティング・ノード間の通信を設定することを容易にすることができる。加えて、システム・マネージャ・モジュールは、対象の物理コンピューティング・システム上の仮想マシン・コンピューティング・ノードの表示及び仮想マシンが関連する提供された仮想ネットワークの表示を受信し、つぎに仮想ネットワークと仮想マシンを関連付けるために対象の物理コンピューティング・システム用の仮想マシン・ノード通信マネージャ・モジュールの設定を開始することができる、またはノード通信マネージャ・モジュールは、その設定を代わりに開始することができる(たとえば、仮想マシンが通信を最初に開始または受信するときに)。
少なくともいくつかの実施形態において、承認されない通信の検出及び/または防止は、先に述べたように仮想ネットワークをオーバーレイする1つ以上の仲介サブストレート・ネットワークのトポロジに少なくとも部分的に基づくことができる。このような実施形態において、サブストレート・ネットワーク経由での通信用のこのようなコンピューティング・ノードのために使用された物理ネットワーク・アドレスは、コンピューティング・ノードの仮想ネットワーク・アドレスの表示を含み、コンピューティング・ノードの関連したノード通信マネージャ・モジュール(たとえば、サブネットワークまたはノード通信マネージャ・モジュールが通信を管理するサブストレート・ネットワークの他の部分)の位置に対応するサブストレート・ネットワークのためのパーシャル・ネットワーク・アドレスを含む。このようにして、悪意のあるユーザに対して仮想ネットワークの部分であるコンピューティング・ノード用の有効な物理ネットワーク・アドレスを正確に構築するために、悪意のあるユーザは、コンピューティング・ノードが属している仮想ネットワークについての情報へのアクセス権を得る必要があり、関連したノード通信マネージャ・モジュール用のパーシャル・ネットワーク・アドレスを決定するためにコンピューティング・ノードの物理サブストレート・ネットワーク位置のトポロジについての情報へのアクセス権を得る必要があり、物理ネットワーク・アドレスを構築するその情報を使用する方法を判定する必要がある。
構築された物理ネットワーク・アドレスの有効性は、構築された物理ネットワーク・アドレス内に埋め込まれた仮想アドレスが対応するコンピューティング・ノードを識別すること、及びその識別されたコンピューティング・ノードの位置がパーシャル・ネットワーク・アドレスに対応するサブストレート・ネットワークの部分内のコンピューティング・ノードのうちの1つ(たとえば、パーシャル・ネットワーク・アドレスが対応するノード通信マネージャ・モジュールにより管理されたコンピューティング・ノードのうちの1つ)に対応することを検証することなどにより、さまざまな方式で確認されることができる。加えて、構築された物理ネットワーク・アドレスの有効性は、宛先コンピューティング・ノード(たとえば、ソース物理ネットワーク・アドレスが有効であることを検証する)のために意図された着信通信を受信するノード通信マネージャ・モジュールによる、示されて管理されたコンピューティング・ノードの代わりにノード通信マネージャ・モジュールからとされるメッセージ(たとえば、関心の意図された宛先コンピューティング・ノードのための物理ネットワーク・アドレスを要求するメッセージ)を受信するマネージャ・モジュールによるなどのような、さまざまな時間に確認されることができる。
図4は、本開示の例示的な実施形態に従い、アプリケーション移行サービスを使用してマルチテナント環境で動作する複数の仮想マシン・インスタンスを示す例示的なシステム図である。さらに特に、図4は、本明細書で記述された実施形態を使用可能な1つの環境を図示するネットワーク・ベースのコンピュート・サービス・プロバイダ400のコンピューティング・システム図である。背景として、コンピュート・サービス・プロバイダ400(すなわち、クラウド・プロバイダ)は、最後の受信者のコミュニティ(たとえば、テナントまたは顧客)へのサービスとしてコンピューティング能力及びストレージ容量を配信できる。
例示的な実施形態において、コンピュート・サービス・プロバイダ400は、組織によりまたはこれの代わりにこの組織のために確立されることが可能である。すなわち、コンピュート・サービス・プロバイダ400は、「プライベート・クラウド環境」を提示することができる。別の実施形態において、コンピュート・サービス・プロバイダ400は、複数の顧客が独立して操作する、マルチテナント環境(すなわち、パブリック・クラウド環境)を支援する。この点について、複数の顧客(たとえば、複数の企業)は、マルチテナント環境内の、サーバ・コンピュータのような、リソースを借りることが可能である。
一般的に言えば、コンピュート・サービス・プロバイダ400は、つぎのモデル、サービスとしてのインフラストラクチャ(「IaaS」)、サービスとしてのプラットフォーム(「PaaS」)、及び/またはサービスとしてのソフトウェア(「SaaS」)を提供することが可能である。他のモデルを提供することが可能である。IaaSモデルについては、コンピュート・サービス・プロバイダ400は、物理または仮想マシン及び他のリソースとしてコンピュータを提供することが可能である。ハイパーバイザは、さらに以下で記載されるように、仮想マシンをゲストとして実行することが可能である。PaaSモデルは、オペレーティング・システム、プログラミング言語実行環境、データベース、及びウェブ・サーバを含むことが可能なコンピューティング・プラットフォームを配信する。アプリケーション開発者は、下層・ハードウェア及びソフトウェアを購入するコスト及びこれを管理するコストなしでコンピュート・サービス・プロバイダ・プラットフォーム上で彼らのソフトウェア・ソリューションを開発及び実行することが可能である。SaaSモデルは、コンピュート・サービス・プロバイダ内のアプリケーション・ソフトウェアのインストール及び操作を許可する。いくつかの実施形態において、エンド・ユーザは、ウェブ・ブラウザまたは他の軽量な顧客アプリケーションを実行する、デスクトップ・コンピュータ、ラップトップ、タブレット、スマートフォン、などのようなネットワーク接続された顧客デバイスを使用してコンピュート・サービス・プロバイダ400にアクセスする。当業者は、コンピュート・サービス・プロバイダ400を「クラウド」環境として記述可能であることを認識するであろう。
特定の図示されたコンピュート・サービス・プロバイダ400は、複数のサーバ・コンピュータ402A〜402Dを含む。4つのサーバ・コンピュータのみを示すが、任意の数を使用可能であり、大規模なセンタは、数千のサーバ・コンピュータを含むことが可能である。サーバ・コンピュータ402A〜402Dは、ソフトウェア・インスタンス406A〜406Dを実行するためのコンピューティング・リソースを提供することが可能である。1つの実施形態において、インスタンス406A〜406Dは、仮想マシンである。当該技術分野において知られているように、仮想マシンは、物理マシンのようにアプリケーションを実行するマシン(すなわち、コンピュータ)のソフトウェア実装のインスタンスである。この実施例において、各サーバ・コンピュータ402A〜402Dは、ハイパーバイザ408、または単一のサーバ上の複数のインスタンス406の実行を有効にするように設定された別のタイプのプログラムを実行するように設定されることが可能である。たとえば、各サーバ402A〜402Dは、各仮想マシン・パーティションが仮想マシン・インスタンスを実行可能でありながら、1つ以上の仮想マシン・パーティションを支援するように設定される(たとえば、ハイパーバイザ408を介して)ことが可能である(たとえば、サーバ・コンピュータ402Aが対応する仮想マシン・インスタンスを各々実行する3つの仮想マシン・パーティションを支援するように設定されることが可能である)。加えて、各インスタンス406は、1つ以上のアプリケーションを実行するように設定されることが可能である。
例示的な実施形態において、また各サーバ・コンピュータ402A〜402Dは、アプリケーション移行サービス部(AMS)(たとえば、440A〜440D)及び性能メトリック・モジュール(たとえば、441A〜441D)を備えることができる。アプリケーション移行サービス部440A〜440Dは、図1を参照して記述されたアプリケーション移行サービス部140aと同様の機能性を有することができる。加えて、性能メトリック・モジュール441A〜441Dは、アプリケーション移行サービス部がエンタープライズ・ベース・ネットワークからコンピュート・サービス・プロバイダ400のクラウド・ネットワークへアプリケーション(及び関連した仮想マシン・インスタンス)を移行するときに、VMIタイプ及びホスト・サーバ・タイプを判定する目的のために対応するホスト(402A〜402D)用の性能メトリックを提供することができる。性能メトリック・モジュール441A〜441Dは、図1の性能メトリック・モジュール139に類似する機能性を有する。
またコンピュート・サービス・プロバイダ400は、アプリケーション移行サービス部440を備えることができる。アプリケーション移行サービス部440は、適切な回路、ロジック、及び/またはコードを含むことができ、リソース監視メトリック、依存性情報、及びプライベート・サブネット情報を使用してエンタープライズ・ベース・ネットワーク(すなわち、プライベート・クライアント・ネットワーク)からコンピュート・サービス・プロバイダのクラウド・ネットワークへアプリケーションを移行することを備える、本明細書で記述された機能性(たとえば、図1〜3を参照して記述されたアプリケーション移行サービス部140aの機能性に類似する)を実行するように操作可能であることができる。アプリケーション移行サービス部440は、専用サーバ(サーバ402A〜402Dに類似する)として、プロバイダ400内のスタンドアロン・サービスとして実装されることができる、及び/または管理機能を実行するサーバ・コンピュータ404の部分として(または上記で説明されるように、個々のサーバ・コンピュータ402A〜402Dの部分として)実装されることができる。たとえば、アプリケーション移行サービス部440は、サーバのオペレーティング・システム上で動作するソフトウェア・アプリケーションとして(たとえば、管理コンポーネント410(図5で示されるような)の部分として)実装されることができる。
本明細書で開示された実施形態を仮想マシンのコンテキストで主に記述するが、本明細書で開示された概念及び技術で他のタイプのインスタンスを利用可能であることを理解するべきである。たとえば、本明細書で開示された技術は、ストレージ・リソース、データ通信リソース、及び他のタイプのコンピューティング・リソースで利用可能である。また本明細書で開示された実施形態は、仮想マシン・インスタンスを利用しないでコンピュータ・システム上で直接アプリケーションのすべてまたは一部を実行することができる。
1つ以上のサーバ・コンピュータ404は、ソフトウェア・コンポーネントを実行して、サーバ・コンピュータ402、インスタンス406、ハイパーバイザ408、及び/またはアプリケーション移行サービス440の操作を管理するために予約されることが可能である。たとえば、サーバ・コンピュータ404は、管理コンポーネント410を実行することが可能である。顧客は、管理コンポーネント410にアクセスし、顧客が購入したインスタンス406の操作のさまざまな態様を設定することが可能である。たとえば、顧客は、インスタンスを購入、賃借またはリースし、インスタンスの設定に変更を行うことが可能である。また顧客は、購入したインスタンスを要求に応じてスケーリングする方法について設定を指定することが可能である。さらに管理コンポーネント410は、アプリケーション移行サービス440に関連したポリシーのような、顧客ポリシーを実装するポリシー・ドキュメント(たとえば、図5の564)を含むことが可能である。
さらにサーバ・コンピュータ404は、アプリケーション移行サービス440により処理メモリとして使用されることができる、メモリ452を含むことができる。オート・スケーリング・コンポーネント412は、顧客が定義したルールに基づきインスタンス406をスケーリングすることが可能である。1つの実施形態において、オート・スケーリング・コンポーネント412は、新規のインスタンスをインスタンス化するときを決定する際の使用のためのスケールアップ・ルール、及び既存のインスタンスを終了するときを決定する際の使用のためのスケールダウン・ルールを顧客が指定することを可能にする。オート・スケーリング・コンポーネント412は、異なるサーバ・コンピュータ402上で実行する複数のサブコンポーネントまたは他のコンピューティング・デバイスからなることが可能である。オート・スケーリング・コンポーネント412は、内部管理ネットワーク経由で利用可能なコンピューティング・リソースを監視して必要性に基づき利用可能なリソースを変更することが可能である。
展開コンポーネント414は、コンピューティング・リソースの新規のインスタンス406の展開で顧客を支援するために使用されることが可能である。この展開コンポーネントは、アカウントの所有者、クレジット・カード情報、所有者の出身国などのような、インスタンスと関連したアカウント情報へのアクセスを有することが可能である。展開コンポーネント414は、新規のインスタンス406を設定する方法を記述するデータを含む顧客からの設定を受信することが可能である。たとえば、この設定は、新規のインスタンス406にインストールされる1つ以上のアプリケーションを指定する、新規のインスタンス406を設定するために実行されるスクリプト及び/または他のタイプのコードを提供する、アプリケーション・キャッシュを用意する方法を指定するキャッシュ・ロジック、及び他のタイプの情報を提供することが可能である。展開コンポーネント414は、顧客が提供した設定及びキャッシュ・ロジックを利用して、新規のインスタンス406を設定し、提供し、立ち上げることが可能である。この設定、キャッシュ・ロジック、及び他の情報は、管理コンポーネント410を使用して顧客により、または展開コンポーネント414へ直接にこの情報を提供することにより指定されることができる。インスタンス・マネージャ(たとえば、図5の550)は、展開コンポーネント414の部分とみなされることが可能である。
顧客アカウント情報415は、マルチテナント環境の顧客と関連した任意の所望の情報を含むことが可能である。たとえば、顧客アカウント情報は、顧客に固有の識別子、顧客アドレス、請求情報、ライセンス情報、インスタンスを立ち上げるためのカスタマイズ・パラメータ、スケジューリング情報、オート・スケーリング・パラメータ、アカウントにアクセスするために使用された以前のIPアドレス、及びその他のものを含むことが可能である。
ネットワーク430は、サーバ・コンピュータ402A〜402D及びサーバ・コンピュータ404を相互接続するために利用されることが可能である。ネットワーク430は、ローカル・エリア・ネットワーク(LAN)であることが可能であり、ワイド・エリア・ネットワーク(WAN)440に接続されることが可能であるため、エンド・ユーザは、コンピュート・サービス・プロバイダ400にアクセスすることが可能である。図4で図示されたネットワーク・トポロジが簡素化され、さらに多くのネットワーク及びネットワーキング・デバイスを利用して本明細書で開示されたさまざまなコンピューティング・システムに相互接続することが可能であることを理解するべきである。
さらに図5は、1つの実施形態により1つ以上の仮想マシン・インスタンスを移行するために使用されることができる、制御プレーンと関連した複数の管理コンポーネントを含む例示的なシステムの詳細を示す。さらに特に、図5は、コンピュート・サービス・プロバイダ400のマルチテナント・ネットワーク内の不連続な移行サービス140を実装できる、管理コンポーネント410をより詳細に図示する。
インスタンス(図4のインスタンス406のような)にアクセスする及びこれらを利用するために、顧客デバイスを使用可能である。顧客デバイス510は、携帯電話、スマートフォン、ハンドヘルド・コンピュータ、パーソナル・デジタル・アシスタント(PDA)、デスクトップ・コンピュータなどを含む、さまざまなコンピューティング・デバイス、モバイルまたはその他のもののいずれかであることが可能である。顧客デバイス510は、アプリケーション・プログラミング・インタフェース(API)要求を受信して処理するように設計されたDNSアドレスであることが可能である、エンドポイント512を介してコンピュート・サービス・プロバイダ400と通信可能である。特に、エンドポイント512は、APIを公開するように設定されたウェブ・サーバであることが可能である。API要求(たとえば、図1の190)を使用して、顧客デバイス510は、本明細書で記述された機能性のいずれかを実装する要求(たとえば、図1を参照して記述されるような、アプリケーションを移行するために、依存性情報155、リソース監視メトリック160、及びプライベート・サブネット情報150を要求する)を行うことが可能である。コンピュート・サービス・プロバイダ400の内部にあることが可能である、他のサービス515は、エンドポイント512に同様のAPI要求を行うことが可能である。たとえば、顧客デバイス510は、アプリケーションを移行することと関連した顧客要求を通信するAPI要求(たとえば、図1の190)を使用できる(たとえば、顧客は、コンピュート・サービス・プロバイダからのリコメンデーションに応じて、アプリケーションを移行するためにVMI及びホストを選択する目的のためにVMIタイプ及びホスト・サーバ・タイプのリコメンデーションを確認することができ、また顧客は、移行用の特定のタイプのVMI及びホストの彼ら自身の選択を提供することができる)。クライアント114からのAPI要求(たとえば、190)は、アドミッション制御514を介して、及びアプリケーション移行サービス440上で通過して、ポリシー・ドキュメント564にアクセスする、及び/または移行関連のサービスを要求することが可能である。管理ポータル566は、顧客またはコンピュート・サービス・プロバイダ300のいずれかの管理者によりポリシー・ドキュメント564にアクセスしてこれへの変更を行うために使用されることが可能である。
ポリシー・ドキュメント564は、たとえば、エンタープライズ・ベース・ネットワークからコンピュート・サービス・プロバイダへアプリケーションを移行するときにVMIタイプ及びサーバ・コンピュータ・タイプを選択することに関して1つ以上のポリシーを指定することができる。より詳細には、ポリシー・ドキュメント564は、1つ以上のVMIタイプ及び1つ以上のサーバ・アーキテクチャ・タイプ(たとえば、メモリ、CPU速度、ディスク・スペースなどに基づき)を指定することができ、利用可能なホスト・サーバ及びVMIのリソース監視メトリック及び性能メトリックのマッチングに基づき自動的に選択されることが可能である、VMIタイプ及びサーバ・アーキテクチャ・タイプの両方のリコメンデーションを提供することができる。
コンピュート・サービス・プロバイダ400内に(及び/または管理コンポーネント410内に)含まれることができる、または含まれることができない他の一般的な管理サービスは、アドミッション制御514、たとえば、アドミッション制御ウェブ・サービスとして共に動作する1つ以上のコンピュータを含む。アドミッション制御514は、コンピュート・サービス・プロバイダ400内のサービスまたはデータ・ストレージのAPI要求を認証し、有効にし、アンパックすることが可能である。容量トラッカ516は、容量の予測、プロビジョニング、ならびにリアルタイム設定及び割り当ての観点から物理的なインベントリを管理及び設定することで、異なるインスタンス・タイプの必要性を満たすためにサーバが設定される必要がある方法を決定するために応答可能である。容量トラッカ516は、容量プール・データベース518内に利用可能なインベントリのプールを維持する。また容量トラッカ516は、容量レベルを監視してリソースが容易に利用可能である、またはこれが制限されているかどうかが分かることが可能である。
インスタンス・マネージャ550は、ネットワークでの仮想マシン・インスタンスの立ち上げ及び終了を制御する。インストラクションを受信して(API要求を介してのような)インスタンスを立ち上げるとき、インスタンス・マネージャ550は、容量プール518からリソースを移動させてホスト・サーバ・コンピュータ上での決定でインスタンスを立ち上げる。インスタンス・マネージャに類似するのは、ストレージ・マネージャ522及びネットワーク・リソース・マネージャ524である。ストレージ・マネージャ522は、ストレージ・ボリュームの開始及び終了に関し、ネットワーク・リソース・マネージャ524は、ルータ、スイッチ、サブネットなどの開始及び終了に関する。パーティション540のネットワークは、図6に関してさらに記述され、インスタンスを立ち上げる物理層を含む。
アプリケーション移行サービス部440は、本明細書で記述された(たとえば、140a及び/または140bを参照して記述されるような)移行関連の機能性を実行することができる。アプリケーション移行サービス部440は、容量トラッカ516と通信し、インスタンス(または顧客エンティティにより要求された他のネットワーク・リソース)を移行して立ち上げるために使用されることが可能である、利用可能なパーティション及び/またはホスト・サーバについての情報を受信することができる。加えて、アドミッション制御514との通信は、移行されたインスタンスを立ち上げるために使用されることができ、パーティション540のネットワークとの通信は、複数のパーティション(たとえば、1つ以上のサーバ・コンピュータ上で動作する複数のVMIを移行する)に影響を与える移行関連の機能性を実行するために使用されることができる。
図6は、ホスト・コンピュータが本開示の1つの実施形態により設定されることができるアプリケーション移行関連の機能性を有しながら、仮想マシン・インスタンスを実行するために使用されたハードウェア・アセットである、複数のホスト・コンピュータ、ルータ及びスイッチの実施例を示す。さらに特に、図6は、パーティション640のネットワーク及びそれらと関連した物理ハードウェアを図示する。パーティション640のネットワークは、ルータ616のような、ルータにより互いに結合された、データ・センタ610a、...、610nのような、複数のデータ・センタを含むことが可能である。
ルータ616は、受信したパケットのアドレス情報を読み出し、パケットの宛先を判定する。異なるデータ・センタがホスト・サーバ・コンピュータを含むことをルータが決定した場合に、つぎにそのデータ・センタへパケットを転送する。パケットをデータ・センタ610a内のホストへアドレス指定する場合に、つぎにパケットのパブリックIPアドレスをプライベートIPアドレスへ変換する、ネットワーク・アドレス変換器(NAT)618へこのパケットを伝える。またNAT618は、データ・センタ610aの外側にバインドされるパブリック・アドレスへプライベート・アドレスを変換する。追加のルータ620は、NAT618に連結され、ホスト・サーバ・コンピュータの1つ以上のラック630へパケットをルーティングすることが可能である。各ラック630は、複数のホスト・サーバ・コンピュータに連結されたスイッチ632を含むことが可能である。641の拡大図で特定のホスト・サーバ・コンピュータを示す。
各ホスト641は、ネットワーク・インタフェース・カード、1つ以上のCPU、メモリ、及びその他のもの(図6で図示せず)を含むことができる、下層・ハードウェア650を含む。ハードウェア650上の1層を実行するのは、ハイパーバイザまたはカーネル層660である。ハイパーバイザまたはカーネル層660は、タイプ1またはタイプ2のハイパーバイザとして分類されることが可能である。タイプ1のハイパーバイザは、ホスト・ハードウェア650上で直接動作し、ハードウェアを制御してゲスト・オペレーティング・システムを管理する。タイプ2のハイパーバイザは、従来のオペレーティング・システム環境内で動作する。このようにして、タイプ2の環境で、ハイパーバイザは、オペレーティング・システム上で動作する別個の層であることが可能であり、このオペレーティング・システムは、システム・ハードウェアとインタラクトする。異なるタイプのハイパーバイザは、Xenベース、Hyper−V、ESXi/ESX、リナックスなどを含むが、他のハイパーバイザは、また使用されることが可能である。
管理層670は、ハイパーバイザの部分である、またはそれらから分離されることが可能であり、一般にハードウェア650にアクセスするために必要なデバイス・ドライバを含む。パーティション680は、ハイパーバイザによる隔離の論理ユニットである。各パーティション680は、ハードウェア層のメモリ、CPU割り当て、ストレージなどのそれ自体の部分を割り当てられることが可能である。加えて、各パーティションは、仮想マシン及びそれ自体のゲスト・オペレーティング・システム(たとえば、VMI1がパーティション1上で動作していることができ、VMInがパーティションn上で動作していることができる)を含むことが可能である。このような場合に、各パーティション680は、他のパーティションから独立してそれ自体の仮想マシンを支援するように設計された容量の抽象的な部分である。
加えて、仮想マシン・インスタンス(たとえば、VMI1)を移行する(たとえば、コンピューティング・システム345aのクライアント・プライベート・ネットワーク340内のホスト・サーバ390からコンピュート・サービス・プロバイダのデータ・センタ300内のホスト・サーバ305bへ)ときに、新規に立ち上げられたVMI1は、コンピューティング・システム345aの前のVMI1のために使用されたものと同じパブリック及びプライベートIPアドレスと関連する。これは、NAT618の拡大図643で図示される。643でわかるように、各VMIがデータ・センタ610aで立ち上げられたとしても、その後、アプリケーション/VMI移行(またはデータ・センタ610a内のVMIを実行する各サーバ)は、移行されたエンタープライズ・ベース・ネットワークVMIのパブリック/プライベートIPアドレスと同じである、パブリックIPアドレス(IP1、...、IPn)及びプライベートIPアドレス(PIP1、...、PIPn)と関連する。加えて、またルーティング情報(すなわち、VMIをホストする特定のサーバ・コンピュータ用のルーティング情報)は、別のままであってもよい(たとえば、ルーティング情報「ルーティング1」がVMI1と関連し、ルーティング情報「ルーティングn」がVMInと関連する)。
図7は、本開示の実施形態に従い、エンタープライズ・ベース・ネットワークからコンピュート・サービス・プロバイダのマルチテナント・ネットワークへアプリケーションを移行する例示的な方法のフローチャートである。図1〜3及び7を参照して、第一仮想マシン・インスタンス上で動作するアプリケーションを移行する要求をエンタープライズ・ベース・ネットワーク内で受信できるときに、例示的な方法700は、702で開始することができる。たとえば、ユーザは、インタフェース122を使用して、アプリケーション・ネーム(たとえば、アプリケーション185のネーム)を指定することができ、ソフトウェア・ボタン122bをアクティブ化することで移行を開始することができる。
704で、アプリケーションの依存性は、エンタープライズ・ベース・ネットワーク内の少なくとも1つの第二仮想マシン・インスタンスを識別することで決定されることができ、この少なくとも1つの第二仮想マシン・インスタンスがこのアプリケーションと関連する。たとえば、このアプリケーション移行サービス部140aは、API要求190のうちの1つを使用して、依存性情報155を取得することができる。依存性情報155は、移行のために選択されたアプリケーション(たとえば、185)を識別することができ、VMI(たとえば、180a)上でそれは動作して、1つ以上の追加のVMIをアプリケーション185は使用するまたはこれらにアプリケーション185は依存する(たとえば、VMI180b〜180c)。
706で、第一仮想マシン・インスタンス及び少なくとも1つの第二仮想マシン・インスタンスにより使用されたハードウェア・リソースと関連したリソース監視メトリックを受信することができる。たとえば、アプリケーション移行サービス部140aは、API要求190のうちの1つを使用して、VMI180a〜180c(すなわち、VMI180a〜180cをホストするホスト・サーバ175aと関連したコンピューティング・リソース)によりホスト・サーバ・コンピューティング・リソースの使用で情報を提供する、リソース監視メトリック160を取得することができる。708で、サーバ・コンピュータ・タイプ及び仮想マシン・インスタンス・タイプは、リソース監視メトリックに基づき、各々、少なくとも、第一仮想マシン・インスタンス及び第二仮想マシン・インスタンス用のマルチテナント・ネットワークで決定されることができる。
たとえば、依存性情報155及びリソース監視メトリック160を取得した後に、アプリケーション移行サービス部140aは、ホスト・サーバ105a(または残りのホスト・サーバ105a、...、105nのいずれか)の性能メトリック139とリソース監視メトリック160のうちの1つ以上をマッチングさせ、コンピュート・サービス環境100内の仮想マシン・インスタンス・タイプ(VMI180a〜180cを移行するための)及びホスト・サーバ・コンピュータ・タイプを選択し、またはその他の方法で決定し(たとえば、564のようなポリシー・ドキュメントから)、クライアント・プライベート・ネットワーク170から移行されたVMI(移行されたアプリケーションを含む)をホストすることができる。この性能メトリック139は、ホスト・サーバ・コンピュータ105a(または残りのホスト・サーバ105a、...、105nのいずれか)のための、CPU速度、メモリ容量、ストレージ容量、ネットワーク・カード特性(たとえば、速度)、ビデオ・カード特性(たとえば、解像度及びビデオ処理速度)、ディスクI/O速度、及びその他のもののうちの1つ以上を含むことができる。
710で、第一仮想マシン・インスタンス及び少なくとも1つの第二仮想マシン・インスタンスは、エンタープライズ・ベース・ネットワークから決定された仮想マシン・インスタンス・タイプの少なくとも1つの仮想マシン・インスタンスへ移行されることができる。たとえば、VMI180a〜180cは、クライアント・プライベート・ネットワーク170からコンピュート・サービス環境100へ移行されることができる。さらに特に、少なくとも1つのファイル・パッキング・フォーマット(たとえば、OVF)は、VMI180a〜180cをパッケージ化し、それらをコンピュート・サービス環境100へ移行し、それらを選択されたVMIタイプのVMI上で立ち上げるために使用され、ホスト/VMIタイプ選択141bにより示されるような選択されたホスト・サーバ・コンピュータ・タイプのホスト・サーバによりホストされることができる。移行されたVMI180a〜180cは、選択されたホスト・サーバ・コンピュータのうちの1つ以上によりホストされた、選択されたVMI上に転送され(すなわち、VMI転送141c)、立ち上げられることができる。
第一仮想マシン・インスタンス(たとえば、180a)は、エンタープライズ・ベース・ネットワーク(170)から、コンピュート・サービス環境100で決定された仮想マシン・インスタンス・タイプ(たとえば、130a、...、130nのうちの1つ)の少なくとも1つの第一仮想マシン・インスタンスへ移行されることができる。少なくとも1つの第二仮想マシン・インスタンス(180b〜180c)は、エンタープライズ・ベース・ネットワーク(170)から決定された仮想マシン・インスタンス・タイプの少なくとも1つの第二仮想マシン・インスタンスへ移行され、少なくとも1つの第一及び少なくとも1つの第二仮想マシン・インスタンスがマルチテナント・ネットワーク(100)内のサーバ・コンピュータ(105a)によりホストされることができる。
エンタープライズ・ベース・ネットワーク(170)は、プライベート・ネットワークを含むことができる。アプリケーション移行サービス部140aは、第一仮想マシン・インスタンス(180a)及び少なくとも1つの第二仮想マシン・インスタンス(180b〜180c)がプライベート・ネットワークのサブネットワーク内にあるかどうかを判定することができる。第一仮想マシン・インスタンス(180a)及び少なくとも1つの第二仮想マシン・インスタンス(180b〜180c)がプライベート・ネットワークのサブネットワーク(245)内にある場合に、アプリケーション移行サービス部140aは、移行されたアプリケーションを実行する少なくとも1つの仮想マシン・インスタンス(VMI1)用のマルチテナント・ネットワーク(205)内にサブネットワーク(250)を作成することができる。
アプリケーション移行サービス部140aは、エンタープライズ・ベース・ネットワーク内の第一仮想マシン・インスタンス(180a)及び少なくとも1つの第二仮想マシン・インスタンス(180b〜180c)をホストする少なくとも1つのホスト・サーバ・コンピュータ(175a)用のネーム及びIPアドレスを決定することができる。アプリケーション移行サービス部140aは、マルチテナント・ネットワーク内のサーバ・コンピュータ・タイプのサーバ・コンピュータ(たとえば、105a)へネーム及びIPアドレスを割り当てることができ、このネーム及びIPアドレスがエンタープライズ・ベース・ネットワーク(170)内の少なくとも1つのホスト・サーバ・コンピュータ(たとえば、175a)と関連したネーム及びIPアドレスと同じである。
図8は、本開示の実施形態に従い、エンタープライズ・ベース・ネットワークからコンピュート・サービス・プロバイダのマルチテナント・ネットワークへアプリケーションを移行する別の例示的な方法のフローチャートである。図1〜3及び8を参照して、例示的な方法800は、エンタープライズ・ベース・ネットワークでサーバ・コンピュータによりホストされた少なくとも1つのアプリケーションによりコンピューティング・リソースの使用と関連したリソース監視メトリックをマルチテナント・ネットワークで受信できるとき、802で開始することができる。たとえば、アプリケーション移行サービス部140aは、API要求190のうちの1つを使用して、アプリケーション185と関連したVMI180a〜180cによるホスト・サーバ・コンピューティング・リソース(すなわち、アプリケーション185がリソースを使用している、VMI180a〜180cをホストするホスト・サーバ175aと関連したコンピューティング・リソース)の使用で情報を提供する、リソース監視メトリック160を取得することができる。
804で、仮想マシン・インスタンス・タイプは、コンピュート・サービス・プロバイダのマルチテナント・ネットワーク内のサーバ・コンピュータによりホストされた仮想マシン・インスタンスのために選択され、この選択は、リソース監視メトリックに少なくとも部分的に基づくことができる。たとえば、依存性情報155及びリソース監視メトリック160を取得した後、アプリケーション移行サービス部140aは、リソース監視メトリック160のうちの1つ以上をホスト・サーバ105a(または残りのホスト・サーバ105a、...、105nのいずれか)の性能メトリック139とマッチングさせ、コンピュート・サービス環境100内の仮想マシン・インスタンス・タイプ(VMI180a〜180cを移行するために)及びホスト・サーバ・コンピュータ・タイプを選択し、またはその他の方法で決定し(たとえば、564のようなポリシー・ドキュメントから)、クライアント・プライベート・ネットワーク170から移行されたVMI(移行されたアプリケーションを含む)をホストすることができる。性能メトリック139は、ホスト・サーバ・コンピュータ105a(または残りのホスト・サーバ105a、...、105nのうちのいずれか)のために、CPU速度、メモリ容量、ストレージ容量、ネットワーク・カード特性(たとえば、速度)、ビデオ・カード特性(たとえば、解像度及びビデオ処理速度)、ディスクI/O速度、及びその他のもののうちの1つ以上を含むことができる。
806で、少なくとも1つのアプリケーションは、エンタープライズ・ベース・ネットワークからマルチテナント・ネットワーク内のサーバ・コンピュータによりホストされた仮想マシン・インスタンスへ移行されることができる。たとえば、VMI180a〜180cは、クライアント・プライベート・ネットワーク170からコンピュート・サービス環境100へ移行されることができる。さらに特に、少なくとも1つのファイル・パッキング・フォーマット(たとえば、OVF)は、ホスト/VMIタイプ選択141bにより示されるように、VMI180a〜180cをパッケージ化し、それらをコンピュート・サービス環境100へ移行し、それらを選択されたVMIタイプのVMI上で立ち上げるために使用され、選択されたホスト・サーバ・コンピュータ・タイプのホスト・サーバによりホストされることができる。移行されたVMI180a〜180cは、選択されたホスト・サーバ・コンピュータのうちの1つ以上によりホストされた選択されたVMI上に転送され(すなわち、VMI転送141c)、これらの上で立ち上げられることができる。
図9は、本開示の実施形態に従い、エンタープライズ・ベース・ネットワークからコンピュート・サービス・プロバイダのマルチテナント・ネットワークへアプリケーションを移行するさらに別の例示的な方法のフローチャートである。図1〜3及び9を参照して、例示的な方法900は、エンタープライズ・ベース・ネットワーク内の第一仮想マシン・インスタンス上でホストされたアプリケーションを移行する要求を受信することに応答するとき、エンタープライズ・ベース・ネットワーク内のアプリケーションをホストする少なくとも1つの第二仮想マシン・インスタンスを決定することができる、902で開始できる。たとえば、アプリケーション移行サービス部140aは、API要求190のうちの1つを使用して依存性情報155を取得することができる。この依存性情報155は、仮想マシン(すなわち、VMI180a)、及びアプリケーション185が使用できる(または依存することができる)任意の他のVMI(すなわち、VMI180b〜180c)上でアプリケーション185が動作していることを識別することができる。
904で、アプリケーションによるエンタープライズ・ベース・ネットワーク内のコンピューティング・リソースの使用状況は、マルチテナント・ネットワーク内のコンピューティング・リソースと関連した性能メトリックにマッピングすることができる。906で、仮想マシン・インスタンス・タイプ及びサーバ・コンピュータ・タイプは、マッピングに少なくとも部分的に基づきマルチテナント・ネットワーク内で選択されることができる。たとえば、依存性情報155及びリソース監視メトリック160を取得した後に、アプリケーション移行サービス部140aは、ホスト・サーバ105a(または残りのホスト・サーバ105a、...、105nのいずれか)の性能メトリック139へリソース監視メトリック160のうちの1つ以上をマッピングし、コンピュート・サービス環境100内の仮想マシン・インスタンス・タイプ(VMI180a〜180cを移行するための)及びホスト・サーバ・コンピュータ・タイプを選択し、クライアント・プライベート・ネットワーク170から移行されたVMI(移行されたアプリケーションを含む)をホストすることができる。性能メトリック139は、ホスト・サーバ・コンピュータ105a(または残りのホスト・サーバ105a、...、105nのうちのいずれか)のために、CPU速度、メモリ容量、ストレージ容量、ネットワーク・カード特性(たとえば、速度)、ビデオ・カード特性(たとえば、解像度及びビデオ処理速度)、ディスクI/O速度、及びその他のもののうちの1つ以上を含むことができる。
908で、第一仮想マシン・インスタンスは、エンタープライズ・ベース・ネットワークから選択された仮想マシン・インスタンス・タイプの第一仮想マシン・インスタンスへ移行され、マルチテナント・ネットワーク内の選択されたサーバ・コンピュータ・タイプのサーバ・コンピュータによりホストされることができることで、エンタープライズ・ベース・ネットワークからマルチテナント・ネットワークへアプリケーションを移行する。たとえば、VMI180a〜180cは、クライアント・プライベート・ネットワーク170からコンピュート・サービス環境100へ移行されることができる。さらに特に、少なくとも1つのファイル・パッキング・フォーマット(たとえば、OVF)は、ホスト/VMIタイプ選択141bにより示されるように、VMI180a〜180cをパッケージ化し、それらをコンピュート・サービス環境100へ移行し、それらを選択されたVMIタイプのVMI上で立ち上げるために使用され、選択されたホスト・サーバ・コンピュータ・タイプのホスト・サーバによりホストされることができる。移行されたVMI180a〜180cは、選択されたホスト・サーバ・コンピュータのうちの1つ以上によりホストされた、選択されたVMI上に転送され(すなわち、VMI転送141c)、これらの上で立ち上げられることができる。
本開示の例示的な実施形態に従い、図7〜9で記述された方法のいずれかを参照して、アプリケーション移行サービス部140aは、ホスト/VMIタイプ選択(141b)及びVMI転送(141c)の前に、最初のステップとしてVPC及びサブネットの作成及び割り当て(141a)を実行することができる。
本開示の実施形態を以下の条項の観点で記載することが可能である。
<条項1>
エンタープライズ・ベース・ネットワークからコンピュート・サービス・プロバイダのマルチテナント・ネットワークへアプリケーションを移行する方法であって、
前記エンタープライズ・ベース・ネットワーク内の第一仮想マシン・インスタンスで動作するアプリケーションを移行する要求を受信し、
前記エンタープライズ・ベース・ネットワーク内の少なくとも1つの第二仮想マシン・インスタンスを識別することで前記アプリケーションの依存性を決定し、前記少なくとも1つの第二仮想マシン・インスタンスが前記アプリケーションと関連し、
前記第一仮想マシン・インスタンス及び前記少なくとも1つの第二仮想マシン・インスタンスにより使用されたハードウェア・リソースと関連したリソース監視メトリックを受信し、前記ハードウェア・リソースが前記第一仮想マシン・インスタンス及び前記少なくとも1つの第二仮想マシン・インスタンスをホストする少なくとも1つのホスト・サーバ・コンピュータと関連し、
前記リソース監視メトリックに基づき、各々、少なくとも、前記第一仮想マシン・インスタンス及び前記第二仮想マシン・インスタンスのための前記マルチテナント・ネットワークでサーバ・コンピュータ・タイプ及び仮想マシン・インスタンス・タイプを決定し、
前記エンタープライズ・ベース・ネットワークから前記決定された仮想マシン・インスタンス・タイプの少なくとも1つの仮想マシン・インスタンスへ前記第一仮想マシン・インスタンス及び前記少なくとも1つの第二仮想マシン・インスタンスを移行し、前記少なくとも1つの仮想マシン・インスタンスが前記マルチテナント・ネットワーク内の前記決定されたサーバ・コンピュータ・タイプのサーバ・コンピュータによりホストされることで、前記エンタープライズ・ベース・ネットワークから前記マルチテナント・ネットワークへ前記アプリケーションを移行する、
ことを備える、前記方法。
<条項2>
前記移行は、
前記エンタープライズ・ベース・ネットワークから前記決定された仮想マシン・インスタンス・タイプの少なくとも1つの第一仮想マシン・インスタンスへ前記第一仮想マシン・インスタンスを移行し、
前記エンタープライズ・ベース・ネットワークから前記決定された仮想マシン・インスタンス・タイプの少なくとも1つの第二仮想マシン・インスタンスへ前記少なくとも1つの第二仮想マシン・インスタンスを移行し、前記少なくとも1つの第一及び少なくとも1つの第二仮想マシン・インスタンスが前記マルチテナント・ネットワーク内の前記サーバ・コンピュータによりホストされる、
ことを備える、条項1に記載の前記方法。
<条項3>
前記エンタープライズ・ベース・ネットワークは、プライベート・ネットワークを備え、前記方法は、
前記第一仮想マシン・インスタンス及び前記少なくとも1つの第二仮想マシン・インスタンスが前記プライベート・ネットワークの単一のサブネットワークまたは複数の別個のサブネットワーク内にあるかどうかを判定する、
ことをさらに備える、条項1に記載の前記方法。
<条項4>
前記第一仮想マシン・インスタンス及び前記少なくとも1つの第二仮想マシン・インスタンスが前記プライベート・ネットワークの単一のサブネットワーク内にあるときに、前記移行されたアプリケーションを実行する前記少なくとも1つの仮想マシン・インスタンスのための前記マルチテナント・ネットワーク内にサブネットワークを作成し、
前記第一仮想マシン・インスタンス及び前記少なくとも1つの第二仮想マシン・インスタンスが前記プライベート・ネットワークの複数の別個のサブネットワーク内にあるときに、前記マルチテナント・ネットワーク内に少なくとも1つの第一サブネットワーク及び第二サブネットワークを作成し、前記第一サブネットワークが前記決定された仮想マシン・インスタンス・タイプの少なくとも1つの第一仮想マシン・インスタンスをホストするためのものであり、前記第二サブネットワークが前記決定された仮想マシン・インスタンス・タイプの少なくとも1つの第二仮想マシン・インスタンスをホストするためのものである、
ことを備える、条項3に記載の前記方法。
<条項5>
前記エンタープライズ・ベース・ネットワーク内の前記第一仮想マシン・インスタンス及び前記少なくとも1つの第二仮想マシン・インスタンスをホストする前記少なくとも1つのホスト・サーバ・コンピュータ用のネーム及びIPアドレスを決定する、
ことを備える、条項1に記載の前記方法。
<条項6>
前記マルチテナント・ネットワーク内で前記サーバ・コンピュータ・タイプの前記サーバ・コンピュータへネーム及びIPアドレスを割り当て、前記ネーム及び前記IPアドレスは、前記エンタープライズ・ベース・ネットワーク内の前記少なくとも1つのホスト・サーバ・コンピュータと関連したネーム及びIPアドレスと同じである、
ことを備える、条項5に記載の前記方法。
<条項7>
エンタープライズ・ベース・ネットワークからコンピュート・サービス・プロバイダのマルチテナント・ネットワークへアプリケーションを移行する方法を実行するためにその上にインストラクションを含むコンピュータ可読ストレージであって、前記方法が、
前記エンタープライズ・ベース・ネットワークでサーバ・コンピュータによりホストされた少なくとも1つのアプリケーションによりコンピューティング・リソースの使用と関連したリソース監視メトリックを前記マルチテナント・ネットワークで受信し、
前記コンピュート・サービス・プロバイダの前記マルチテナント・ネットワーク内のサーバ・コンピュータによりホストされた仮想マシン・インスタンス用の仮想マシン・インスタンス・タイプを選択し、前記選択は、前記リソース監視メトリックに少なくとも部分的に基づき、
前記エンタープライズ・ベース・ネットワークから前記マルチテナント・ネットワーク内の前記サーバ・コンピュータによりホストされた前記仮想マシン・インスタンスへ前記少なくとも1つのアプリケーションを移行する、
ことを備える、前記コンピュータ可読ストレージ。
<条項8>
前記選択は、前記リソース監視メトリックを前記マルチテナント・ネットワーク内で前記サーバ・コンピュータと関連した性能メトリックへマッチングさせることを備える、条項7に記載の前記コンピュータ可読ストレージ。
<条項9>
前記リソース監視メトリックは、前記エンタープライズ・ベース・ネットワーク内の、CPU、メモリ、及びディスクI/Oの前記少なくとも1つのアプリケーションによる実用を有し、
前記性能メトリックは、前記マルチテナント環境内の前記サーバ・コンピュータのCPU速度、メモリ容量、及びディスクI/O速度を有する、
条項8に記載の前記コンピュータ可読ストレージ。
<条項10>
前記エンタープライズ・ベース・ネットワーク内の移行サービスから依存性情報を取得し、前記依存性情報は、前記アプリケーションと関連した1つ以上の仮想マシン・インスタンスを識別して前記エンタープライズ・ベース・ネットワーク内で実行する、
ことをさらに備える、条項7に記載の前記コンピュータ可読ストレージ。
<条項11>
前記少なくとも1つのアプリケーションを前記移行することは、
前記マルチテナント・ネットワーク内の前記サーバ・コンピュータによりホストされた対応する1つ以上の仮想マシン・インスタンスへ前記エンタープライズ・ベース・ネットワークから前記1つ以上の仮想マシン・インスタンスを移行し、前記移行は、前記エンタープライズ・ベース・ネットワークと互換性のある仮想マシン・インスタンス・フォーマットから前記マルチテナント・ネットワークと互換性のある仮想マシン・インスタンス・フォーマットへ前記1つ以上の仮想マシン・インスタンスを変換すること、及び前記マルチテナント・ネットワークと互換性のある少なくとも1つのドライバを使用することを備える、
ことをさらに備える、条項10に記載の前記コンピュータ可読ストレージ。
<条項12>
前記マルチテナント・ネットワーク内の前記サーバ・コンピュータによりホストされた前記仮想マシン・インスタンス用の前記仮想マシン・インスタンス・タイプを前記選択することは、自動的に、及びユーザの介入なしで行われる、条項7に記載の前記コンピュータ可読ストレージ。
<条項13>
前記仮想マシン・インスタンス・タイプ及び前記マルチテナント・ネットワーク内の前記サーバ・コンピュータ用のサーバ・コンピュータ・タイプの一方または両方のために少なくとも1つのリコメンデーションを提供し、
前記少なくとも1つのリコメンデーションに応答して、前記仮想マシン・インスタンス・タイプ及び前記サーバ・コンピュータ用の前記サーバ・コンピュータ・タイプの選択を受信する、
ことをさらに備える、条項7に記載の前記コンピュータ可読ストレージ。
<条項14>
前記マルチテナント・ネットワークからの情報用のAPI要求に応答して前記リソース監視メトリックを受信する、
ことをさらに備える、条項7に記載の前記コンピュータ可読ストレージ。
<条項15>
前記API要求に応答して、前記エンタープライズ・ベース・ネットワークで前記少なくとも1つのアプリケーションにより使用された前記コンピューティング・リソースと関連した少なくとも1つのプライベート・ネットワークを識別する情報を受信し、前記コンピューティング・リソースは、ホスト・ネーム及びホストIPアドレスにより識別される、
ことをさらに備える、条項14に記載の前記コンピュータ可読ストレージ。
<条項16>
前記マルチテナント・ネットワーク内の前記サーバ・コンピュータ用のプライベート・ネットワークを作成し、
前記エンタープライズ・ベース・ネットワークで前記コンピューティング・リソースの前記ネーム及び前記IPアドレスと同じである、前記マルチテナント・ネットワーク内の前記サーバ・コンピュータ用のネーム及びIPアドレスを割り当てる、
ことをさらに備える、条項15に記載の前記コンピュータ可読ストレージ。
<条項17>
エンタープライズ・ベース・ネットワークからコンピュート・サービス・プロバイダのマルチテナント・ネットワークへアプリケーションを移行するシステムであって、
前記マルチテナント・ネットワークを形成するために共に連結された複数のホスト・サーバ・コンピュータ、及び
アプリケーション移行サービス、
を備え、
前記ホスト・サーバ・コンピュータの少なくとも一部は、顧客アカウントと関連した複数の仮想マシンを実行するためのものであり、
前記アプリケーション移行サービスは、
前記エンタープライズ・ベース・ネットワーク内の第一仮想マシン・インスタンス上でホストされたアプリケーションを移行する要求を受信することに応答して、前記エンタープライズ・ベース・ネットワーク内の前記アプリケーションをホストする少なくとも1つの第二仮想マシン・インスタンスを決定し、
前記マルチテナント・ネットワーク内のコンピューティング・リソースと関連した性能メトリックへ前記アプリケーションによる前記エンタープライズ・ベース・ネットワーク内のコンピューティング・リソースの使用をマッピングし、
前記マッピングに少なくとも部分的に基づき仮想マシン・インスタンス・タイプ及びサーバ・コンピュータ・タイプを前記マルチテナント・ネットワーク内で選択し、
前記エンタープライズ・ベース・ネットワークから前記選択された仮想マシン・インスタンス・タイプの第一仮想マシン・インスタンスへ前記第一仮想マシン・インスタンスを移行し、前記マルチテナント・ネットワーク内で前記選択されたサーバ・コンピュータ・タイプのサーバ・コンピュータによりホストされることで、前記エンタープライズ・ベース・ネットワークから前記マルチテナント・ネットワークへ前記アプリケーションを移行する、
ように操作可能である、
前記システム。
<条項18>
前記アプリケーション移行サービスは、
前記エンタープライズ・ベース・ネットワークから前記選択された仮想マシン・インスタンス・タイプの少なくとも1つの第二仮想マシン・インスタンスへ前記少なくとも1つの第二仮想マシン・インスタンスを移行し、前記マルチテナント・ネットワーク内の前記選択されたサーバ・コンピュータ・タイプの前記サーバ・コンピュータによりホストされる、
ように操作可能である、条項17に記載の前記システム。
<条項19>
前記アプリケーション移行サービスは、
前記エンタープライズ・ベース・ネットワーク内の前記アプリケーションによるコンピューティング・リソースの前記使用を示すリソース監視メトリックを前記マルチテナント・ネットワークで受信する、
ように操作可能である、条項17に記載の前記システム。
<条項20>
前記アプリケーション移行サービスは、
API要求に応答して、前記エンタープライズ・ベース・ネットワーク内の前記第一仮想マシン・インスタンス及び前記少なくとも1つの第二仮想マシン・インスタンスをホストする少なくとも1つのサーバ・コンピュータと関連したプライベート・サブネットワークを示す情報を受信し、
前記マルチテナント・ネットワークで仮想プライベート・ネットワークを作成し、
前記仮想プライベート・ネットワーク内の前記サーバ・コンピュータ用のプライベート・サブネットワークを立ち上げる、
ように操作可能である、条項17に記載の前記システム。
図10は、記述されたイノベーションを実施することができる適切なコンピューティング環境1000の一般化された実施例を描写する。コンピューティング環境1000は、多様な汎用または専用コンピューティング・システムでイノベーションを実施できる場合に、使用または機能性の範囲について何らかの限定を示唆することを意図しない。たとえば、コンピューティング環境1000は、さまざまなコンピューティング・デバイス(たとえば、デスクトップ・コンピュータ、ラップトップ・コンピュータ、サーバ・コンピュータ、タブレット・コンピュータなど)のうちのいずれかであることが可能である。
図10を参照して、コンピューティング環境1000は、1つ以上の処理ユニット1010、1015及びメモリ1020、1025を含む。図10において、この基本構成1030は、破線内に含まれる。処理ユニット1010、1015は、コンピュータ実行可能インストラクションを実行する。処理ユニットは、汎用中央処理装置(CPU)、特定用途向け集積回路(ASIC)内のプロセッサまたは任意の他のタイプのプロセッサであることが可能である。マルチプロセッシング・システムにおいて、複数の処理ユニットは、処理能力を増加させるコンピュータ実行可能インストラクションを実行する。たとえば、図10は、中央処理装置1010だけでなくグラフィックス・プロセッシング・ユニットまたはコプロセッシング・ユニット1015も示す。有形メモリ1020、1025は、処理ユニット(複数を含む)によりアクセス可能な、揮発性メモリ(たとえば、レジスタ、キャッシュ、RAM)、不揮発性メモリ(たとえば、ROM、EEPROM、フラッシュ・メモリなど)、またはこの2つのいくつかの組み合わせであってもよい。メモリ1020、1025は、処理ユニット(複数を含む)による実行に適切なコンピュータ実行可能インストラクションの形式で、本明細書で記述された1つ以上のイノベーションを実施するソフトウェア1080を格納する。
コンピューティング・システムは、追加の特性を有することができる。たとえば、コンピューティング環境1000は、ストレージ1040、1つ以上の入力デバイス1050、1つ以上の出力デバイス1060、及び1つ以上の通信接続1070を含む。バス、制御装置、またはネットワークのような相互接続機構(図示せず)は、コンピューティング環境1000のコンポーネントを相互接続する。一般的に、オペレーティング・システムのソフトウェア(図示せず)は、コンピューティング環境1000内で実行する他のソフトウェア用の操作環境を提供し、コンピューティング環境1000のコンポーネントのアクティブ化を調整する。
有形ストレージ1040は、取り外し可能、または取り外し不可能とすることができ、磁気ディスク、磁気テープ若しくはカセット、CD−ROM、DVD、または非一時的な方式で情報を格納するために使用されることが可能であり、コンピューティング環境1000内でアクセスされることが可能である任意の他の媒体を含む。ストレージ1040は、本明細書で記述された1つ以上のイノベーションを実施するソフトウェア1080用のインストラクションを格納する。
入力デバイス(複数を含む)1050は、キーボード、マウス、ペン、若しくはトラックボールのようなタッチ入力デバイス、音声入力デバイス、走査デバイス、またはコンピューティング環境1000に入力を提供する別のデバイスであってもよい。出力デバイス(複数を含む)1060は、ディスプレイ、プリンタ、スピーカ、CDライタ、またはコンピューティング環境1000から出力を提供する別のデバイスであってもよい。
通信接続(複数を含む)1070は、別のコンピューティング・エンティティへ通信媒体経由での通信を有効にする。通信媒体は、コンピュータ実行可能インストラクション、オーディオ若しくはビデオ入力若しくは出力、または変調されたデータ信号の他のデータのような情報を伝達する。変調されたデータ信号は、その特性セットのうちの1つ以上を含み、この信号の情報を符号化するような方式で変更された信号である。制限ではなく実施例として、通信媒体は、電気、光、RF、または他のキャリアを使用することが可能である。
開示された方法のいくつかの操作は、特に好適なプレゼンテーションのための順序を説明されるが、以下に記載される特定の言語が特定の順序を必要としない限り、説明のこの方式が再編成を包含することを理解するべきである。たとえば、順次説明された操作は、いくつかの場合において、再編成、または同時に実行される可能性がある。さらに、簡単にするために、添付の図面は、他の方法と併せて開示された方法を使用可能であるさまざまな方式を示さない可能性がある。
開示された方法のいずれかは、1つ以上のコンピュータ可読記憶媒体(たとえば、1つ以上の光学媒体ディスク、揮発性メモリ・コンポーネント(DRAMまたはSRAMのような)、または不揮発性メモリ・コンポーネント(フラッシュ・メモリまたはハード・ドライブのような))上に格納され、コンピュータ(たとえば、スマートフォン、またはコンピューティング・ハードウェアを含む他の携帯機器を含む、任意の市販のコンピュータ)上で実行されるコンピュータ実行可能インストラクションとして実装されることが可能である。用語コンピュータ可読記憶媒体は、信号及び搬送波のような、通信接続を含まない。開示された技術を実現するためにコンピュータ実行可能インストラクションのいずれかだけでなく、開示された実施形態の実施中に作成され使用された任意のデータも、1つ以上のコンピュータ可読記憶媒体上に格納されることが可能である。コンピュータ実行可能インストラクションは、たとえば、ウェブ・ブラウザまたは他のソフトウェア・アプリケーション(リモート・コンピューティング・アプリケーションのような)を介してアクセスまたはダウンロードされる専用のソフトウェア・アプリケーションまたはソフトウェア・アプリケーションの部分であることが可能である。このようなソフトウェアは、たとえば、1つ以上のネットワーク・コンピュータを使用して、単一のローカル・コンピュータ(たとえば、任意の適切な市販のコンピュータ)上で、またはネットワーク環境内で(たとえば、インターネット、ワイド・エリア・ネットワーク、ローカル・エリア・ネットワーク、クライアント・サーバ・ネットワーク(クラウド・コンピューティング・ネットワークのような)、または他のこのようなネットワークを介して)実行されることが可能である。
明確にするために、ソフトウェア・ベースの実装の特定の選択された態様のみを記述する。当該技術分野において周知である他の詳細を省略する。たとえば、開示された技術が任意の特定のコンピュータ言語またはプログラムに限定されないことを理解するべきである。たとえば、開示された技術は、C++、Java(登録商標)、Perl、JavaScript(登録商標)、Adobe Flash(登録商標)、または任意の他の適切なプログラミング言語で書き込まれたソフトウェアにより実現されることが可能である。同様に、開示された技術は、任意の特定のコンピュータまたはハードウェア・タイプに限定されない。適切なコンピュータ及びハードウェアの特定の詳細は、周知であり本開示で詳細に記載される必要がない。
ソフトウェアの代わりに、少なくとも部分的に、1つ以上のハードウェア・ロジック・コンポーネントが本明細書で記述された任意の機能性を実行可能であることをまたよく理解するべきである。たとえば、限定しないが、使用されることが可能な例示的なタイプのハードウェア・ロジック・コンポーネントは、フィールド・プログラマブル・ゲート・アレイ(FPGA)、プログラム用途向け集積回路(ASIC)、プログラム用途向け標準品(ASSP)、システムオンチップ・システム(SOC)、コンプレックス・プログラマブル・ロジック・デバイス(CPLD)などを含む。
さらに、ソフトウェア・ベースの実施形態(たとえば、コンピュータに開示された方法のいずれかを実行させるコンピュータ実行可能インストラクションを含む)のいずれかは、適切な通信手段を介して、アップロード、ダウンロード、または遠隔でアクセスされることが可能である。このように適切な通信手段は、たとえば、インターネット、ワールド・ワイド・ウェブ、イントラネット、ソフトウェア・アプリケーション、ケーブル(光ファイバ・ケーブルを含む)、磁気通信、電磁通信(RF、マイクロ波、及び赤外線通信を含む)、電子通信、または他のこのような通信手段を含む。
開示された方法、装置、及びシステムは、決して限定するものとして解釈されるべきではない。代わりに、本開示は、単独でならびに互いに関してさまざまな組み合わせ及び副次的な組み合わせにおいて、さまざまな開示された実施形態のすべての新規で非自明な特徴及び態様のために行われる。開示された方法、装置、及びシステムは、任意の特定の態様または特徴またはそれらの組み合わせに限定されず、そして開示された実施形態は、任意の1つ以上の特定の利点が存在する、または問題が解決される必要があることにも限定されない。
開示された本発明の原理を適用することができる多くの可能な実施形態の観点から、図示された実施形態が本発明の好ましい実施例のみであること、及び本発明の範囲を限定するものとして解釈されるべきではないことを認識するべきである。むしろ、本発明の範囲は、以下の特許請求の範囲により画定される。したがって我々は、我々の発明として、これらの特許請求の範囲内に入るすべてのものを主張する。