(57)【特許請求の範囲】
【請求項１】
エンタープライズ・ベース・ネットワークからコンピュート・サービス・プロバイダのマルチテナント・ネットワークへアプリケーションを移行する方法を実行するためにそれらの上にインストラクションを含むコンピュータ可読ストレージであって、
前記方法が、 
前記エンタープライズ・ベース・ネットワークでサーバ・コンピュータによりホストされた少なくとも１つのアプリケーションによるコンピューティング・リソースの使用と関連したリソース監視メトリックを前記マルチテナント・ネットワークで受信すること、
前記リソース監視メトリックに基づき、前記コンピュート・サービス・プロバイダの前記マルチテナント・ネットワーク内のサーバ・コンピュータによりホストされた仮想マシン・インスタンス用の仮想マシン・インスタンス・タイプを選択すること、及び
前記エンタープライズ・ベース・ネットワークから前記マルチテナント・ネットワーク内の前記サーバ・コンピュータによりホストされた前記仮想マシン・インスタンスへ前記少なくとも１つのアプリケーションを移行すること、を備え、
前記エンタープライズ・ベース・ネットワークの前記仮想マシン・インスタンスは、前記エンタープライズ・ベース・ネットワークの第二仮想マシン・インスタンスに階層的に依存しており、
前記アプリケーションの移行において、前記仮想マシン・インスタンスと前記第２仮想マシン・インスタンスとの依存性情報が前記エンタープライズ・ベース・ネットワークから前記マルチテナント・ネットワークへ維持される、前記コンピュータ可読ストレージ。
【請求項２】
前記仮想マシン・インスタンスを前記マルチテナント・ネットワークに移動させるため、前記選択は、前記マルチテナント・ネットワーク内の前記サーバ・コンピュータと関連した性能メトリックへ前記リソース監視メトリックをマッチングさせることを備える、請求項１に記載の前記コンピュータ可読ストレージ。
【請求項３】
前記リソース監視メトリックは、前記エンタープライズ・ベース・ネットワーク内のＣＰＵリソース、メモリリソース、及びディスクＩ／Ｏリソースの使用状況である、
請求項２に記載の前記コンピュータ可読ストレージ。
【請求項４】
前記エンタープライズ・ベース・ネットワーク内の物理ネットワーク・トポロジは、前記マルチテナント・ネットワーク内でシミュレーションされる、請求項１に記載の前記コンピュータ可読ストレージ。
【請求項５】
前記少なくとも１つのアプリケーションを前記移行することは、
前記エンタープライズ・ベース・ネットワークと互換性がある仮想マシン・インスタンス・フォーマットから前記マルチテナント・ネットワークと互換性がある仮想マシン・インスタンス・フォーマットへ前記１つ以上の仮想マシン・インスタンスを変換すること、及び
前記マルチテナント・ネットワークと互換性がある少なくとも１つのドライバを使用することを有する、
ことをさらに備える、請求項１に記載の前記コンピュータ可読ストレージ。
【請求項６】
前記マルチテナント・ネットワーク内の前記サーバ・コンピュータによりホストされた前記仮想マシン・インスタンス用の前記仮想マシン・インスタンス・タイプを前記選択することは、自動的に及びユーザ介入なしで行われる、請求項１に記載の前記コンピュータ可読ストレージ。
【請求項７】
前記仮想マシン・インスタンス・タイプ及び前記マルチテナント・ネットワーク内の前記サーバ・コンピュータ用のサーバ・コンピュータ・タイプの一方または両方のための少なくとも１つのリコメンデーションを提供し、
前記少なくとも１つのリコメンデーションに応答して、前記仮想マシン・インスタンス・タイプ及び前記サーバ・コンピュータ用の前記サーバ・コンピュータ・タイプの選択を受信する、
ことをさらに備える、請求項１に記載の前記コンピュータ可読ストレージ。
【請求項８】
前記マルチテナント・ネットワークからの情報用のＡＰＩ要求に応答して前記リソース監視メトリックを提供する、
ことをさらに備える、請求項１に記載の前記コンピュータ可読ストレージ。
【請求項９】
前記ＡＰＩ要求に応答して、前記エンタープライズ・ベース・ネットワークで前記少なくとも１つのアプリケーションにより使用された前記コンピューティング・リソースと関連した少なくとも１つのプライベート・ネットワークを識別する情報を受信し、前記コンピューティング・リソースは、ホスト・ネーム及びホストＩＰアドレスにより識別される、
ことをさらに備える、請求項８に記載の前記コンピュータ可読ストレージ。
【請求項１０】
前記マルチテナント・ネットワーク内に前記サーバ・コンピュータ用のプライベート・ネットワークを作成し、
前記マルチテナント・ネットワーク内の前記サーバ・コンピュータ用に、前記エンタープライズ・ベース・ネットワークで前記コンピューティング・リソースのネーム及びＩＰアドレスと同じである、前記ネーム及び前記ＩＰアドレスを割り当てる、
ことをさらに備える、請求項９に記載の前記コンピュータ可読ストレージ。
【請求項１１】
エンタープライズ・ベース・ネットワークからコンピュート・サービス・プロバイダのマルチテナント・ネットワークへアプリケーションを移行するシステムであって、
前記マルチテナント・ネットワークを形成するように共に連結され且つ顧客アカウントと関連した複数の仮想マシンを実行する複数のホスト・サーバ・コンピュータ、及び
アプリケーション移行サービス部、を備え、
前記アプリケーション移行サービス部は、
前記エンタープライズ・ベース・ネットワーク内の第二仮想マシン・インスタンスに階層的に依存する前記エンタープライズ・ベース・ネットワーク内の第一仮想マシン・インスタンス上にホストされたアプリケーションを移行する要求を受信することに応答して、前記マルチテナント・ネットワーク内でコンピューティング・リソースと関連した性能メトリックへ前記アプリケーションによる前記エンタープライズ・ベース・ネットワーク内のコンピューティング・リソースの使用状況をマッピングし、
前記マッピングに基づき仮想マシン・インスタンス・タイプ及びサーバ・コンピュータ・タイプを前記マルチテナント・ネットワーク内で選択し、
前記エンタープライズ・ベース・ネットワークから前記選択された仮想マシン・インスタンス・タイプの第一仮想マシン・インスタンス及び前記第二仮想マシン・インスタンスへ、前記第一仮想マシン・インスタンスと前記第二仮想マシン・インスタンスとの依存性情報を含む前記第一及び前記第二仮想マシン・インスタンスを移行し、前記マルチテナント・ネットワーク内で前記選択されたサーバ・コンピュータ・タイプのサーバ・コンピュータによりホストされることで、前記エンタープライズ・ベース・ネットワークから前記マルチテナント・ネットワークへ前記アプリケーションを移行する、
ように操作可能である、システム。
【請求項１２】
前記アプリケーション移行サービス部は、前記マルチテナント・ネットワーク内で前記エンタープライズ・ベース・ネットワーク内の物理ネットワーク・トポロジを構成するようにシミュレートする
、請求項１１に記載の前記システム。
【請求項１３】
前記アプリケーション移行サービス部は、
前記エンタープライズ・ベース・ネットワーク内の前記アプリケーションによるコンピューティング・リソースの前記使用を示すリソース監視メトリックを前記マルチテナント・ネットワークで受信する、
ように操作可能である、請求項１１に記載の前記システム。
【請求項１４】
前記アプリケーション移行サービス部は、
ＡＰＩ要求に応答して、前記エンタープライズ・ベース・ネットワーク内の前記第一仮想マシン・インスタンス及び前記少なくとも１つの第二仮想マシン・インスタンスをホストする少なくとも１つのサーバ・コンピュータと関連したプライベート・サブネットワークを示す情報を受信し、
前記マルチテナント・ネットワークで仮想プライベート・ネットワークを作成し、
前記仮想プライベート・ネットワーク内で前記サーバ・コンピュータ用のプライベート・サブネットワークを立ち上げる、
ように操作可能である、請求項１１に記載の前記システム。
【請求項１５】
前記アプリケーション移行サービス部は、
前記第一仮想マシン・インスタンスが前記マルチテナント・ネットワーク内の前記サーバ・コンピュータへ移行された後に、前記第一仮想マシン・インスタンスへ、前記エンタープライズ・ベース・ネットワーク内で前記第一仮想マシン・インスタンスへ割り当てられたＩＰアドレスを割り当てさせる、
ように操作可能である、請求項１１に記載の前記システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、エンタープライズ・ベース・ネットワーク及びマルチテナント・ネットワーク間でのアプリケーションの移行に関する。
【背景技術】
【０００２】
クラウド・コンピューティングは、遠隔位置で利用可能であり、インターネットのような、ネットワーク経由でアクセス可能であるコンピューティング・リソース（ハードウェア及びソフトウェア）の使用である。仮想サーバまたは多くのサーバ・コンピュータを含むクラウド・コンピューティング環境のような、多くのコンピューティング・デバイスを含むコンピューティング環境において、コンピューティング・リソースの使用は、コスト優位性及び／または変化するコンピューティング・リソースのニーズに迅速に適応する能力を有する複数の利点を提供することが可能である。
【０００３】
拡張するクラウド・コンピューティング・リソースを使用すること関連してプライベート・エンタープライズ・ネットワークのために考慮すべき重要なことは、プライベート、エンタープライズ・ベース・ネットワークからクラウド・コンピューティング環境へアプリケーションを移動させる（または移行する）ことのしやすさである。たとえば、既存のエンタープライズ・ベースのネットワーク・アプリケーションの複雑さは、アプリケーション移行タスクに、時間がかかり、エラーが発生しやすく、及び危険な試みである可能性がある。
【発明の概要】
【課題を解決するための手段】
【０００４】
本発明は、エンタープライズ・ベース・ネットワークからコンピュート・サービス・プロバイダのマルチテナント・ネットワークへアプリケーションを移行する方法を実行するためにそれらの上にインストラクションを含むコンピュータ可読ストレージであって、前記方法が、
前記エンタープライズ・ベース・ネットワークでサーバ・コンピュータによりホストされた少なくとも１つのアプリケーションによるコンピューティング・リソースの使用と関連したリソース監視メトリックを前記マルチテナント・ネットワークで受信し、
前記コンピュート・サービス・プロバイダの前記マルチテナント・ネットワーク内のサーバ・コンピュータによりホストされた仮想マシン・インスタンス用の仮想マシン・インスタンス・タイプを選択し、前記選択が前記リソース監視メトリックに少なくとも部分的に基づき、
前記エンタープライズ・ベース・ネットワークから前記マルチテナント・ネットワーク内の前記サーバ・コンピュータによりホストされた前記仮想マシン・インスタンスへ前記少なくとも１つのアプリケーションを移行する、
ことを備える、前記コンピュータ可読ストレージに関する。
【図面の簡単な説明】
【０００５】
【図１】本開示の例示的な実施形態に従い、エンタープライズ・ベース・ネットワークからコンピュート・サービス環境へのアプリケーションの移行を説明するネットワーク図である。
【図２Ａ】アプリケーションの移行を支援するプライベート・コンピュータ・ネットワークを作成して設定するリモート・クライアントを含むインタラクションの例示的な実施形態を説明するネットワーク図である。
【図２Ｂ】アプリケーションの移行を支援するプライベート・コンピュータ・ネットワークを作成して設定するリモート・クライアントを含むインタラクションの例示的な実施形態を説明するネットワーク図である。
【図３】クライアントへのアプリケーションの移行を支援するコンピュータ・ネットワークを提供する際の使用のために相互接続されたコンピューティング・システムの例示的な実施形態を説明するネットワーク図である。
【図４】本開示の例示的な実施形態に従い、アプリケーション移行サービスを使用してマルチテナント環境内で実行する複数の仮想マシン・インスタンスを示す例示的なシステム図である。
【図５】１つの実施形態により１つ以上のアプリケーションを移行するために使用されることができる、制御プレーンと関連した複数の管理コンポーネントを含む例示的なシステムのさらなる詳細を示す。
【図６】本開示の１つの実施形態により構成されることができるアプリケーション移行関連の機能性をホスト・コンピュータが有しながら、仮想マシン・インスタンスを実行するために使用されたハードウェア・アセットである、複数のホスト・コンピュータ、ルータ及びスイッチの実施例を示す。
【図７】本開示の実施形態に従い、エンタープライズ・ベース・ネットワークからコンピュート・サービス・プロバイダのマルチテナント・ネットワークへアプリケーションを移行する例示的な方法のフローチャートである。
【図８】本開示の実施形態に従い、エンタープライズ・ベース・ネットワークからコンピュート・サービス・プロバイダのマルチテナント・ネットワークへアプリケーションを移行する別の例示的な方法のフローチャートである。
【図９】本開示の実施形態に従い、エンタープライズ・ベース・ネットワークからコンピュート・サービス・プロバイダのマルチテナント・ネットワークへアプリケーションを移行するさらに別の例示的な方法のフローチャートである。
【図１０】記載されたイノベーションを実施することができる適切なコンピューティング環境の一般化された実施例を描写する。
【発明を実施するための形態】
【０００６】
仮想マシン・イメージは、仮想環境内で仮想マシンを立ち上げるために必要とされるオペレーティング・システム（たとえば、リナックス）及び他のデータを含む。仮想マシン・イメージは、物理コンピュータのディスク・ボリュームに類似し、マシンを起動するために必要とされるファイル・システム、オペレーティング・システム及び他のコンポーネントを含むことができる。仮想マシンを立ち上げるために、ハードウェアを選択する必要がある。このハードウェア選択は、さまざまな異なるサイズのメモリ、ＣＰＵ能力、Ｉ／Ｏ性能、及びその他のものを許可することができる、インスタンス・タイプを介して達成されることができる。仮想マシン・イメージ及びインスタンス・タイプの組み合わせは、マルチテナント・ネットワーク環境でホスト・サーバ・コンピュータなど、クラウド・コンピューティング・リソース上で立ち上げられることができる、「インスタンス」または仮想マシンを作成するために使用されることが可能である。
【０００７】
本明細書で使用されるように、用語「仮想マシン」及び「仮想マシン・インスタンス」は、入れ替えできる。
【０００８】
本明細書で使用されるように、用語「コンピュート・サービス・プロバイダ」は、１人以上の最後の受信者へサービスとしてコンピューティング能力及びストレージ容量を提供可能なクラウド・プロバイダを示すことが可能である。コンピュート・サービス・プロバイダは、機構（すなわち、コンピュート・サービス・プロバイダが「プライベート・クラウド環境」を提示することができる）により、またはこれの代わりに編成のために確立されることが可能である。他の例において、コンピュート・サービス・プロバイダは、複数の顧客が独自に操作する、マルチテナント環境（すなわち、パブリック・クラウド環境）を支援することが可能である。この点について、複数の顧客（たとえば、複数の企業）は、マルチテナント環境内でサーバ・コンピュータのようなリソースを借りることが可能である。
【０００９】
本明細書で使用されるように、用語「エンタープライズ・ベース・ネットワーク」（または「エンタープライズ・プライベート・ネットワーク」または「エンタープライズ・ネットワーク」）は、企業（たとえば、株式会社または別の事業）が所有するコンピュータ・システムのネットワークを示すことが可能である。一般的に、エンタープライズ・ベース・ネットワーク内での情報アクセスは、会社の従業員に限定される。その意味で、エンタープライズ・ネットワークは、シングルテナント・システムである。しかしながら、データは、ウェブ・インタフェースのような、企業ポータルを介して外部ユーザに利用可能であることができる。一般的に、エンタープライズ・ネットワークのサーバ・コンピュータを第三者は、賃借不可能である。
【００１０】
本明細書で使用されるように、用語、仮想マシンを「移動させる」または「移行する」は、一方のサーバ・コンピュータから他方のサーバ・コンピュータへ仮想マシンを移動させることを示す。たとえば、仮想マシンは、現在のサーバ・コンピュータでの実行を終了し、またはその他の方法で中断し、別のサーバ・コンピュータで立ち上げられる。この点について、１つ以上のソフトウェア・パッケージング及び配信フォーマット（たとえば、オープン仮想化フォーマット、またはＯＶＦ）は、新規のサーバ・コンピュータへ仮想マシンをパッケージ化して移行するために使用されることができる。
【００１１】
本明細書で使用されるように、用語「リソース監視メトリック」は、アプリケーション（またはアプリケーションを実行するために使用された仮想マシン）によるコンピューティング・リソースの実用を有することができる。たとえば、コンピューティング・リソースは、アプリケーション（または仮想マシン）をホストする１つ以上のサーバ・コンピュータと関連することができ、ＣＰＵリソース、メモリ・リソース、利用可能なストレージ・リソース、ディスクＩ／Ｏの利用、及びその他のものの使用を有することができる。このようなメトリックの監視は、所定の（たとえば、一定の）期間にわたり実行されることができ、平均値（標準偏差調整の有無にかかわらず）は、生成されることができる。あるいはまた、特定の時点でのリソースの使用状況を示すことができる、このようなメトリックのスナップショットを生成することができる。
【００１２】
本明細書で使用されるように、用語「性能メトリック」は、ホスト・サーバ（またはサーバによりホストされた仮想マシン）のアーキテクチャと関連した１つ以上のメトリックまたは特性を有することができる。たとえば、ホスト・サーバ・アーキテクチャは、つぎの性能メトリック、ＣＰＵ速度、メモリ容量、ストレージ容量、ネットワーク・カード特性（たとえば、速度）、ビデオ・カード特性（たとえば、解像度及びビデオ処理速度）、ディスクＩ／Ｏ速度、及びその他のもののうちの１つ以上により特徴づけられることができる。
【００１３】
図１は、本開示の例示的な実施形態に従い、エンタープライズ・ベース・ネットワークからコンピュート・サービス環境へのアプリケーションの移行を説明するネットワーク図である。図１を参照して、コンピュート・サービス環境１００は、最後の受信者のコミュニティへのサービスとしてコンピューティング能力及びストレージ容量を提供可能なコンピュート・サービス・プロバイダ（すなわち、クラウド・プロバイダ）であってもよい。コンピュート・サービス環境／プロバイダについてのさらなる詳細は、図４〜６を参照して本明細書で開示される。コンピュート・サービス環境１００は、複数のホスト・サーバ・コンピュータ１０５ａ、．．．、１０５ｎ、アプリケーション移行サービス部１４０ａ、及びエンドポイント１４５を有する。
【００１４】
ホスト・サーバ・コンピュータ（たとえば、１０５ａ）は、ＣＰＵ１１０、メモリ１１５、及びストレージ１２０を含むことができる。ホスト・サーバ１０５ａは、ハイパーバイザ１２５、または複数の仮想マシン・インスタンス（ＶＭＩ）１３０ａ、．．．、１３０ｎの実行を有効にするように設定された別のタイプのプログラムを実行するように設定されることができる。
【００１５】
ウェブ・サービスは、通常クラウド・コンピューティングで使用される。ウェブ・サービスは、ウェブまたはクラウド経由でネットワーク・アドレスに提供されたソフトウェア機能である。クライアントは、サーバへウェブ・サービス要求を開始し、サーバは、この要求を処理して適切な応答を返す。一般的にクライアント・ウェブ・サービス要求は、たとえば、ＡＰＩ要求を使用して開始される。簡略化目的のために、一般にウェブ・サービス要求は、ＡＰＩ要求として以下で記載されるが、他のウェブ・サービス要求を行うことが可能であることを理解する。ＡＰＩ要求は、最も一般的にＨＴＴＰベースのウェブ・サーバにより、ウェブを介して公開されるＪＳＯＮまたはＸＭＬで通常表現される、定められた要求応答メッセージ・システムへのプログラマティック・インタフェースである。このようにして、特定の実装において、ＡＰＩは、拡張可能マークアップ言語（ＸＭＬ）またはＪａｖａＳｃｒｉｐｔ（登録商標）オブジェクト表記（ＪＳＯＮ）形式内にあることが可能である、応答メッセージの構造の定義に加えて、１セットのハイパーテキスト・トランスファ・プロトコル（ＨＴＴＰ）要求メッセージとして定義されることが可能である。ＡＰＩは、特定のタスクを達成すること、またはソフトウェア・コンポーネントとのインタラクションを許可することを備える、動作を実行する１セットの機能またはルーティンを指定することが可能である。ウェブ・サービスがクライアント・デバイスからＡＰＩ要求を受信するときに、ウェブ・サービスは、この要求への応答を生成し、要求で識別されたエンドポイントへこの応答を送信することが可能である。
【００１６】
コンピュート・サービス環境１００は、アプリケーション移行サービス部１４０ａからのＡＰＩ要求１９０のような、ＡＰＩ要求を受信して処理するように設計されたＤＮＳアドレスである、エンドポイント１４５を含む。関心の特定のＡＰＩ要求は、以下で記載されるような、プライベート・サブネット情報１５０、依存性情報１５５、及びリソース監視メトリック１６０と関連したＡＰＩ要求１９０である。
【００１７】
アプリケーション移行サービス部１４０ａは、適切な回路、ロジック、及び／またはコードを含むことができ、リモート・サーバ・コンピュータ（たとえば、クライアント・プライベート・ネットワーク１７０内のホスト・コンピュータ１７５ａ）上で動作する１つ以上のアプリケーション（たとえば、アプリケーション１８５）を移行するように操作可能であることができる。アプリケーションの移行は、クライアント・プライベート・ネットワーク１７０でアプリケーション移行サービス部１４０ｂから受信した、たとえば、プライベート・サブネット情報１５０、依存性情報１５５、及びリソース監視メトリック１６０のうちの１つ以上に基づくことができる。
【００１８】
クライアント・プライベート・ネットワーク１７０は、エンタープライズ・ベース・ネットワークのような、リモート・クライアント・ネットワークであってもよい。クライアント・ネットワーク１７０は、複数のホスト・サーバ・コンピュータ１７５ａ、．．．、１７５ｎを含むことができる。例示的なホスト・サーバ・コンピュータ（たとえば、１７５ａ）は、ＣＰＵ１７１、メモリ１７２、及びストレージ１７３を含むことができる。ホスト・サーバ（たとえば、１７５ａ）は、ＶＭＩ１８０ａ〜１８０ｃのような、１つ以上のＶＭＩを実行するように構成されることができる。アプリケーション１８５のような、１つ以上のアプリケーションは、ＶＭＩ（たとえば、ＶＭＩ１８０ａ）上で動作していることができる。アプリケーション１８５は、１つ以上の追加のＶＭＩ（たとえば、ＶＭＩ１８０ｂ〜１８０ｃ）に依存している可能性がある。たとえば、アプリケーション１８５は、ＶＭＩ１８０ａ上にインストールされることができるが、アプリケーション１８５で使用された追加の機能性（たとえば、１つ以上のデータベースまたは追加のソフトウェア・モジュール）は、他のＶＭＩ（たとえば、ＶＭＩ１８０ｂ〜１８０ｃ）上にインストールされることができる。この点について、移行（たとえば、クライアント・プライベート・ネットワーク１７０からコンピュート・サービス・プロバイダ１００へ）用のアプリケーション１８５を選択するときインスタンスで、アプリケーション１８５（すなわち、ＶＭＩ１８０ａ）を実行するＶＭＩは、アプリケーション１８５が依存する（または使用する）任意の残りのＶＭＩ（すなわち、ＶＭＩ１８０ｂ〜１８０ｃ）と共に移行されることができる。
【００１９】
またクライアント・プライベート・ネットワークは、コンピュート・サービス環境１００へ、プライベート・サブネット情報１５０、依存性情報１５５、またはリソース監視メトリック１６０のうちの１つ以上を提供するように操作可能であることができる、アプリケーション移行サービス・コンポーネント１４０ｂを有することができる。たとえば、アプリケーション移行サービス１４０ｂは、エンドポイント１４５を介してアプリケーション移行サービス部１４０ａと直接通信することができる（たとえば、１４０ｂが１５０、１５５、または１６０のような情報を報告する通信を定期的に開始することができる、あるいは、１４０ｂがＡＰＩ要求１９０に応答してこのような情報を提供することができる）。アプリケーション移行サービス部１４０ａ及び１４０ｂは、たとえば、それぞれコンピュート・サービス環境１００及びクライアント・プライベート・ネットワーク１７０内のサーバ・コンピュータのオペレーティング・システム上で動作するソフトウェア・アプリケーションであってもよい。
【００２０】
操作中に、ユーザ・インタフェース１２２は、ホスト・コンピュータ１７５ａでアクティブ化される（たとえば、ユーザにより）ことができる。ユーザ・インタフェース１２２は、クライアント・プライベート・ネットワーク１７０からコンピュート・サービス環境１００へ移行されるアプリケーションを識別する入力を受信するためにテキスト・ボックス１２２ａ（または別のインタフェース）を含むことができる。たとえば、ユーザは、テキスト・ボックス１２２ａ内のアプリケーション１８５のネームを表示することができ、つぎに「移行」ボタン１２２ｂを押すことで（または画面タップのような、別のタイプのユーザ・インタフェース、及びその他のものをアクティブ化することで）移行プロセスを開始することができる。
【００２１】
アプリケーション１８５のネームを受信した後に、コンピュート・サービス環境１００内のアプリケーション移行サービス部１４０ａは、ＡＰＩ要求１９０のうちの１つを使用して、ホスト１７５ａ及びＶＭＩ１８０ａ〜１８０ｃのうちの１つ以上がクライアント・プライベート・ネットワーク１７０（たとえば、仮想プライベート・クラウド、仮想ローカル・エリア・ネットワーク、及びその他のもの）のプライベート・サブネットワーク（またはサブネット）内にあるかどうかを示すことができる、プライベート・サブネット情報１５０を取得することができる。つぎにアプリケーション移行サービス部１４０ａは、移行（たとえば、ＶＰＣ／サブネット作成及び割り当て１４１ａ）後に、コンピュート・サービス環境１００内にプライベート・ネットワーク（たとえば、仮想プライベート・クラウド）を作成し、ＶＭＩをホストするためにサブネットを割り当てることができる。
【００２２】
アプリケーション移行サービス部１４０ａは、アプリケーション移行サービス１４０ｂから依存性情報１５５を取得することができる。この依存性情報１５５は、アプリケーション１８５が使用できる（または依存できる）任意の他のＶＭＩ（すなわち、ＶＭＩ１８０ｂ〜１８０ｃ）と同様にアプリケーション１８５が動作している仮想マシン（すなわち、ＶＭＩ１８０ａ）を識別する情報を含むことができる。つぎにアプリケーション移行サービス部１４０ａは、アプリケーション移行サービス１４０ｂからリソース監視メトリック１６０を取得することができる。このリソース監視メトリック１６０は、アプリケーション１８５、ＶＭＩが実行するアプリケーション１８５（すなわち、ＶＭＩ１８０ａ）、及びアプリケーション１８５が依存するＶＭＩ（すなわち、ＶＭＩ１８０ｂ〜１８０ｃ）のうちのいずれかのうちの１つ以上によるコンピューティング・リソースの使用を示すことができる。たとえば、リソース監視メトリック１６０は、ホスト・コンピュータ１７５ａと関連した（ホスト・コンピュータ１７５ａを使用してＶＭＩ１８０ａ〜１８０ｃを実行するので）、ＣＰＵリソース、メモリ・リソース、利用可能なストレージ・リソース、ディスクＩ／Ｏ使用率、及びその他のものを含むことができる。サーバ・コンピュータ１７５ａ、．．．、１７５ｎのうちの別の１つからの依存しているＶＭＩ１８０ｂ〜１８０ｃのうちの１つ以上を実行するときにインスタンスにおいて、つぎにリソース監視メトリック１６０は、同様にそのホスト・コンピュータと関連したリソースのためのコンピューティング・リソースの使用をまた示す。リソース監視メトリック１６０は、ＣＰＵ１７１により、またはホスト・コンピュータ１７５ａ（または残りのホスト・コンピュータ１７５ａ、．．．、１７５ｎのうちのいずれか）内の専用モジュール（図示せず）により収集されることができる。
【００２３】
依存性情報１５５及びリソース監視メトリック１６０を取得した後に、アプリケーション移行サービス部１４０ａは、ホスト・サーバ１０５ａ（または残りのホスト・サーバ１０５ａ、．．．、１０５ｎのうちのいずれか）の性能メトリック１３９とリソース監視メトリック１６０のうちの１つ以上をマッチングさせ、仮想マシン・インスタンス・タイプ（ＶＭＩ１８０ａ〜１８０ｃを移行するために）及びコンピュート・サービス環境１００内のホスト・サーバ・コンピュータ・タイプを選択し、クライアント・プライベート・ネットワーク１７０から移行されたＶＭＩ（移行されたアプリケーションを含む）をホストすることができる。性能メトリック１３９は、ホスト・サーバ・コンピュータ１０５ａ（または残りのホスト・サーバ１０５ａ、．．．、１０５ｎのいずれか）のために、ＣＰＵ速度、メモリ容量、ストレージ容量、ネットワーク・カード特性（たとえば、速度）、ビデオ・カード特性（たとえば、解像度及びビデオ処理速度）、ディスクＩ／Ｏ速度、及びその他のもののうちの１つ以上を含むことができる。
【００２４】
例示的な実施形態において、ＶＭＩ１８０ａ（アプリケーション１８５を実行する）及び依存しているＶＭＩ１８０ｂ〜１８０ｃは、クライアント・プライベート・ネットワーク１７０内でホスト・サーバ・コンピュータ１７５ａによりすべてホストされることができる。リソース監視メトリック１６０は、ＶＭＩ１８０ａ〜１８０ｃ（たとえば、ＶＭＩ１８０ａ〜１８０ｃが合計５ＧＢのディスク・スペース、１ＧＢのＲＡＭ、１．７ＧＨｚのＣＰＵクロック速度などを使用していることができる）により使用されたホスト１７５ａのコンピューティング・リソース量を示すことができる。仮想プライベート・クラウド（ＶＰＣ）及びサブネットの作成及び割り当て（１４１ａで）後に、アプリケーション移行サービス部１４０ａは、ホスト・サーバ・コンピュータ１０５ａ、．．．、１０５ｎのうちの１つ以上のための性能メトリック１３９とリソース監視メトリック１６０をマッチングさせることで仮想マシン・インスタンス・タイプ及びホスト・サーバ・コンピュータ・タイプ（アプリケーション１８５を移行するとＶＭＩ１８０ａ〜１８０ｃを立ち上げるために）を選択することができる。ＶＭＩ及びホスト・コンピュータ・タイプの選択を図１の１４１ｂとして反映する。
【００２５】
たとえば、アプリケーション移行サービス部１４０ａは、１ＧＢのＲＡＭ及び５ＧＢのディスク・スペースと関連した仮想マシン・インスタンス・タイプ、ならびに２ＧＨｚのＣＰＵクロック速度、１．５ＧＢのＲＡＭ、及び７ＧＢのディスク・スペース（たとえば、ホスト・サーバ・コンピュータ１０５ａ）と関連したホスト・サーバ・コンピュータ・タイプを選択することができる。この点について、性能メトリック１３９とリソース監視メトリック１６０をマッチングさせることで、コンピュート・サービス環境１００内のコンピューティング・リソースの効率的利用を達成することができ、アプリケーション１８５を移行して、選択されたホスト・コンピュータ・タイプのホスト・コンピュータによりホストされる、選択されたＶＭＩタイプのＶＭＩ上へ依存性情報１５５（すなわち、ＶＭＩ１８０ａ〜１８０ｃ）により識別されたＶＭＩを立ち上げるためにＶＭＩ及びホスト・サーバ・コンピュータ・タイプを選択できる。
【００２６】
依存しているＶＭＩ１８０ｂ〜１８０ｃ（すなわち、アプリケーション１８５が依存し、依存性情報１５５により識別されるＶＭＩ）は、クライアント・プライベート・ネットワーク１７０内の異なるホスト・コンピュータ（たとえば、１７５ｎ）によりホストされるときにインスタンスにおいて、リソース監視メトリック１６０は、ホスト・サーバ・コンピュータ１７５ａ及び１７５ｎと関連したコンピューティング・リソースの使用を有することができる。つぎにアプリケーション移行サービス部１４０ａは、ホスト・サーバ・コンピュータ１０５ａ、．．．、１０５ｎのうちの１つ以上のための性能メトリック１３９とリソース監視メトリック１６０をマッチングさせることで２つのホスト・サーバ・コンピュータ（第一ホスト・サーバ・コンピュータ上のＶＭＩ１８０ａ、及び第二ホスト・サーバ・コンピュータ上のＶＭＩ１８０ｂ〜１８０ｃを立ち上げるために）用のＶＭＩタイプ及びホスト・サーバ・コンピュータ・タイプを選択することができる。
【００２７】
つぎにＶＭＩ１８０ａ〜１８０ｃをクライアント・プライベート・ネットワーク１７０からコンピュート・サービス環境１００へ移行することができる。さらに特に、少なくとも１つのファイル・パッキング・フォーマット（たとえば、ＯＶＦ）は、ＶＭＩ１８０ａ〜１８０ｃをパッケージ化し、これらをコンピュート・サービス環境１００へ移行し、これらを選択されたＶＭＩタイプのＶＭＩ上で立ち上げるために使用され、ホスト／ＶＭＩタイプ選択１４１ｂにより示されるように選択されたホスト・サーバ・コンピュータ・タイプのホスト・サーバによりホストされることができる。移行されたＶＭＩ１８０ａ〜１８０ｃは、選択されたホスト・サーバ・コンピュータのうちの１つ以上によりホストされた、選択されたＶＭＩ上に転送されて（すなわち、ＶＭＩ転送１４１ｃ）立ち上げられることができる。この点について、アプリケーション移行サービス部１４０ａは、ソース・フォーマット（たとえば、クライアント・プライベート・ネットワーク１７０と互換性があるＶＭＩのフォーマット）から宛先フォーマット（たとえば、コンピュート・サービス環境１００と互換性があるＶＭＩのフォーマット）へ移行インスタンスを変換するように操作可能であることができる。また変換中に、アプリケーション移行サービス部１４０ａは、コンピュート・サービス環境１００で宛先フォーマット内の移行されたＶＭＩを実行するために必要な１つ以上のドライバをインストールすることができる。
【００２８】
本開示の例示的な実施形態に従い、またアプリケーション移行サービス部１４０ａは、ホストするサーバ（たとえば、ホスト・サーバ１７５ａ用のＩＰアドレスＩＰ１）と関連したＩＰアドレス及び／またはＶＭＩ１８０ａ〜１８０ｃのＩＰアドレスだけでなく、ＶＭＩ１８０ａ〜１８０ｃをホストするホスト・サーバ（またはサーバ）のネームも取得することができる。つぎにアプリケーション移行サービス部１４０ａは、以前にホストしたサーバ（１７５ａ）のネーム及びＩＰアドレスへ移行されたＶＭＩをホストするホスト・サーバ（１０５ａ）のネーム及びＩＰアドレスを変更することでＩＰ及びホスト・ネーム変更１４１ｄを実行することができる。加えて、ＩＰ及びホスト・ネーム変更１４１ｄは、ＶＭＩ１８０ａ〜１８０ｃのＩＰアドレスと同じである移行されたＶＭＩのＩＰアドレスを変更することができる。
【００２９】
本開示の別の例示的な実施形態に従い、アプリケーション移行サービス部１４０ａが性能メトリック１３９とリソース監視メトリック１６０のマッチングを実行した後に、移行されたアプリケーション及びＶＭＩをホストするために決定されたＶＭＩタイプ及びサーバ・コンピュータ・タイプは、確認または代替の選択のためにクライアント・プライベート・ネットワーク１７０へ通信されることができる。たとえば、クライアント・プライベート・ネットワーク１７０は、ユーザ・インタフェース（１２２のような）を使用して、コンピュート・サービス環境１００により実行されたＶＭＩタイプ及びホスト・サーバ・コンピュータ・タイプの自動選択を表示することができる。つぎにクライアント・プライベート・ネットワーク１７０でユーザは、このような自動選択を確認することができる、または移行されたアプリケーション１８５及びＶＭＩ１８０ａ〜１８０ｃを立ち上げる際の使用のために異なるＶＭＩタイプ及びサーバ・コンピュータ・タイプの代替の選択を指定することができる。
【００３０】
図２Ａ及び２Ｂは、アプリケーションの移行を支援する、プライベート・コンピュータ・ネットワークを作成して設定するリモート・クライアントを伴うインタラクションの例示的な実施形態を説明するネットワーク図である。図２Ａは、リモート・クライアントがこのクライアントによる使用のためにコンピュータ・ネットワークを作成して設定することを可能にするコンピュート・サービス・プロバイダ２０５の例示的な実施形態を説明するネットワーク図である。この実施例において、作成され設定されるコンピュータ・ネットワークは、クライアントの既存のプライベート・コンピュータ・ネットワークへのプライベート・ネットワーク拡張であり、コンピュート・サービス・プロバイダ２０５は、１つ以上のパブリック・ネットワーク２００経由で（たとえば、インターネット経由で）クライアント（図示せず）へこのような機能性を提供する。このようにして、リモート・クライアントは、コンピュート・サービス・プロバイダ（「ＣＳＰ」）２０５を使用し、パブリック・ネットワーク２００経由でクラウド・コンピューティング技術を使用することなどにより、彼らのプライベート・コンピュータ・ネットワークのサイズ及び／または能力を動的に変更することができる。
【００３１】
特に、図２Ａの実施例において、複数のクライアント（図示せず）は、コンピュータ・ネットワーク拡張２２０のうちの少なくともいくつかがパブリック・ネットワーク２００（たとえば、相互接続２００ａ及び２００ｂ経由で確立されたＶＰＮ接続を介して）経由で１つ以上の対応するクライアント・プライベート・ネットワーク２３０から安全なプライベート・アクセスを有効にするように設定されながら、ＣＳＰマネージャ・モジュール２１０とパブリック・ネットワーク２００経由でインタラクトしていて、既存のリモート・クライアント・プライベート・ネットワーク２３０へさまざまなプライベート・コンピュータ・ネットワーク拡張２２０を作成して設定する。この例示的な実施形態において、マネージャ・モジュール２１０は、プライベート・コンピュータ・ネットワーク拡張２２０を提供するために、ＣＳＰ２０５のさまざまな他のモジュール（図示せず）及びＣＳＰ２０５が使用するさまざまなコンピューティング・ノード及びネットワーキング・デバイス（図示せず）と一緒になど、リモート・クライアントへＣＳＰ２０５の機能性を提供する際に支援する。少なくともいくつかの実施形態において、ＣＳＰマネージャ・モジュール２１０は、ＣＳＰ２０５の１つ以上のコンピューティング・システム（図示せず）上で動作することができ、クライアントの代わりにＣＳＰ２０５のいくつかのまたはすべての機能性にアクセスするために（たとえば、プライベート・ネットワーク拡張２２０の使用を作成、設定、及び／または開始するために）モジュール２１０とリモート・コンピューティング・システムがプログラムでインタラクトすることを可能にする１つ以上のＡＰＩを提供することができる。加えて、少なくともいくつかの実施形態において、クライアントは、いくつかのまたはすべてのこのような動作を実行するためにモジュール２１０（たとえば、モジュール２１０により提供されたユーザ・インタフェースを介して）と代わりに手動でインタラクトすることができる。またＣＳＰ２０５は、図１を参照して説明されるように機能性を備える、アプリケーション移行サービス部１４０ａを含むことができる。
【００３２】
パブリック・ネットワーク２００は、たとえば、インターネットのような、別個の当事者によりできる限り操作された、リンクされたネットワークの公的にアクセス可能なネットワークであってもよい。リモート・クライアント・プライベート・ネットワーク２３０は、非特権ユーザへ部分的にまたは全体的にアクセス不可能であり、クライアントのコンピューティング・システム及び／または他のネットワーク接続されたデバイスを含む、法人または他のプライベート・ネットワーク（たとえば、家、大学など）のような、１つ以上の既存のプライベート・ネットワークを各々含むことができる。例示的な実施形態において、クライアント・プライベート・ネットワーク２３０は、１つのアプリケーション（たとえば、図１のＶＭＩ１８０に類似するＶＭＩ１）を実行する１つのＶＭＩ、及び複数のＶＭＩ（たとえば、ＶＭＩ１上で動作するアプリケーションが依存するＶＭＩ２及びＶＭＩ３）を含むことができる。ＶＭＩ、ＶＭＩ１〜ＶＭＩ３をプライベート・サブネット２４５に接続することができる（たとえば、ＶＭＩ１〜ＶＭＩ３を実行するホスト・サーバ・コンピュータをサブネット２４５に接続することができる）。
【００３３】
図示された実施例において、提供されたネットワーク拡張２２０は、複数のコンピューティング・ノード（図示せず）を各々含み、これらのうちの少なくともいくつかは、ＣＳＰ２０５の制御により、またはその他の方法でＣＳＰ２０５の制御下で提供され、各々の提供されたネットワーク拡張２２０は、それらを提供するクライアントによりさまざまな方式で設定されることができる。図示された実施形態の各々のネットワーク拡張２２０は、それを作成するクライアントによりのみアクセス可能であるプライベート・コンピュータ・ネットワークであってもよいが、他の実施形態において、クライアントのためにＣＳＰ２０５で提供された少なくともいくつかのコンピュータ・ネットワークは、公的にアクセス可能であることができる、及び／または他の既存のコンピュータ・ネットワークへ拡張ではないスタンドアロン・コンピュータ・ネットワークであってもよい。同様に、実施例において提供されたコンピュータ・ネットワーク２２０は、プライベート・ネットワークであるリモート・クライアント・コンピュータ・ネットワーク２３０へ拡張でありながら、他の実施形態において、提供されたコンピュータ・ネットワーク２２０は、プライベート・ネットワークではないクライアント・コンピュータ・ネットワーク２３０への拡張であってもよい。
【００３４】
本開示の例示的な実施形態に従い、アプリケーション移行サービス部１４０ａは、提供されたコンピュータ・ネットワーク２２０内でクライアント・プライベート・ネットワーク２３０から１つ以上のサーバ・コンピュータへ、アプリケーション、それが動作しているＶＭＩ（たとえば、ＶＭＩ１）、及び任意の依存しているＶＭＩ（たとえば、ＶＭＩ２〜ＶＭＩ３）を移行することができる（図１を参照して説明されたアプリケーション移行機能性と同様に）。加えて、移行されたＶＭＩ１〜ＶＭＩ３は、図２Ａで図示されるように、コンピュート・サービス・プロバイダ２０５内のプライベート・サブネット２５０で接続されることができる。
【００３５】
クライアントのために提供された、リモート・クライアントのプライベート・コンピュータ・ネットワーク２３０及び対応するプライベート・コンピュータ・ネットワーク拡張２２０間のプライベート・アクセスは、安全なプライベート方式のパブリック・ネットワーク２００経由で相互通信を可能にする、それらの間のＶＰＮ接続または他の安全な接続を確立することなどにより、さまざまな方式で有効にされることができる。たとえば、ＣＳＰ２０５は、そのコンピューティング・ノード及び他のコンピューティング・システム上で適切な設定を自動的に実行し、ＣＳＰ２０５によりホストされた１つ以上のＶＰＮ機構（たとえば、ソフトウェア及び／またはハードウェアＶＰＮ機構）を自動的に設定することなどにより、クライアントの特定のプライベート・ネットワーク拡張２２０へのＶＰＮアクセスを有効にすることができる、及び／またはクライアントへの適切な設定情報（たとえば、クレデンシャル、アクセス・ポイント、及び／または他のパラメータ）を自動的に提供して、リモート・クライアント・プライベート・ネットワーク２３０上にホストされたＶＰＮ機構がＶＰＮアクセスを確立することを可能にすることができる。ＶＰＮアクセスを適切に有効にした及び／または設定した後に、ＶＰＮ接続は、ＩＰｓｅｃ（「インターネット・プロトコル・セキュリティ」）または他の適切な通信技術を使用してクライアントにより開始されるような、リモート・クライアント・プライベート・ネットワーク及びプライベート・ネットワーク拡張間に確立されることができる。たとえば、いくつかの実施形態において、ＶＰＮ接続または他の安全な接続は、ＩＰｓｅｃベースのＶＰＮ接続の代わりになど、データ伝送用のＭＰＬＳ（「マルチ・プロトコル・ラベル・スイッチング」）を使用するネットワークへ、またはこれらの間に確立されることができる。
【００３６】
加えて、図示された実施形態において、さまざまなネットワーク・アクセス可能なリモート・リソース・サービス２４０は、リモート・クライアント・プライベート・ネットワーク２３０上のコンピューティング・システムへ含む、パブリック・ネットワーク２００経由でリモート・コンピューティング・システムに利用可能である。リソース・サービス２４０は、さまざまなタイプのコンピューティング関連のリソースへのアクセスを有するリモート・コンピューティング・システムを提供する、少なくともいくつかのリソース・サービス２４０のためなど、リモート・コンピューティング・システムへさまざまな機能性を提供することができる。さらに、ＣＳＰ２０５により提供される少なくともいくつかのプライベート・ネットワーク拡張２２０は、少なくともいくつかのリモート・リソース・サービス２４０へのプライベートまたは他の特殊なアクセスを提供するように設定されることができるため、提供されたアクセスがプライベート・ネットワーク拡張２２０の部分である仮想接続２１５を介してローカルに提供されるようにプライベート・ネットワーク拡張２２０のコンピューティング・ノードへ任意選択で出現するが、リモート・リソース・サービス２４０との実際の通信は、パブリック・ネットワーク２００（たとえば、相互接続２００ｂ及び２００ｃを介して）経由で発生することができる。リモート・リソース・サービスへのこのようなプライベートまたは他の特殊なアクセスを確立して使用することについての追加の詳細は、他の箇所でより詳細に考察される。
【００３７】
先に述べたように、提供されたネットワーク拡張２２０は、さまざまな方式でクライアントにより各々設定されることができる。たとえば、少なくともいくつかの実施形態において、ＣＳＰ２０５は、クライアントへ提供されたネットワーク拡張での使用に利用可能である複数のコンピューティング・ノードを提供するため、各提供されたネットワーク拡張２２０は、提供されたネットワーク拡張の部分としての使用に専用である複数のこのようなコンピューティング・ノードのクライアントが設定した数量を含むことができる。特に、クライアントは、モジュール２１０とインタラクトし、このクライアントのために提供されたコンピュータ・ネットワークに最初に含まれるコンピューティング・ノードの数量を設定することができる（たとえば、ＣＳＰ２０５により提供されたＡＰＩとの１回以上のプログラマティック・インタラクションを介して）。加えて、少なくともいくつかのこのような実施形態において、コンピューティング・ノードは、提供されたコンピュータ・ネットワークがすでにクライアントにより使用中であった（たとえば、特定のコンピューティング・ノード上の特定のプログラムの実行の開始または終了を示すことで）後のなど、クライアントの提供されたコンピュータ・ネットワークに後で動的に追加またはこれから除去されることができる（たとえば、ＣＳＰ２０５により提供されたＡＰＩとの１回以上のプログラマティック・インタラクションを介して）。さらに、ＣＳＰ２０５は、たとえば、さまざまな性能特性（たとえば、プロセッサ速度、利用可能なメモリ、利用可能なストレージなど）及び／または他の能力を有するコンピューティング・ノードのような、少なくともいくつかの実施形態において、複数の異なるタイプのコンピューティング・ノードを提供することができる。このような場合に、  少なくともいくつかのこのような実施形態において、クライアントは、このクライアントのために提供されたコンピュータ・ネットワークに含まれるコンピューティング・ノードのタイプを指定することができる。
【００３８】
加えて、少なくともいくつかの実施形態において、クライアントは、モジュール２１０とインタラクトし、このクライアントのために提供されたコンピュータ・ネットワーク用のネットワーク・アドレスを設定することができ（たとえば、ＣＳＰ２０５により提供されたＡＰＩとの１回以上のプログラマティック・インタラクションを介して）、ネットワーク・アドレスは、提供されたコンピュータ・ネットワークが既にクライアントにより使用中であった後など、少なくともいくつかのこのような実施形態においてクライアントの提供されたコンピュータ・ネットワークのために後で動的に、追加、除去、または変更されることができる。たとえば、設定されている特定の提供されたコンピュータ・ネットワークが既存のリモート・クライアント・コンピュータ・ネットワークへの拡張である場合に、クライアントは、１つ以上のアドレス範囲（たとえば、クラスレス・ドメイン間ルーティング（「ＣＩＤＲ」）・アドレス・ブロック）、または既存のリモート・クライアント・コンピュータ・ネットワークにより使用された１サブセットのネットワーク・アドレスである他のグループのネットワーク・アドレスを指定することができるため、指定されたネットワーク・アドレスは、提供されたコンピュータ・ネットワークのコンピューティング・ノードのために使用される。このように設定されたネットワーク・アドレスは、いくつかの状況において、パブリック・ネットワーク２００上のコンピューティング・システムから直接ではなくアドレス指定可能な仮想またはプライベート・ネットワーク・アドレスであってもよく（たとえば、既存のリモート・クライアント・コンピュータ・ネットワーク及び対応する提供されたネットワーク拡張がクライアント・コンピュータ・ネットワーク及びその提供されたネットワーク拡張のためにネットワーク・アドレス変換技術及び／または仮想ネットワーキング技術を使用する場合）、他の状況において、少なくともいくつかの設定されたネットワーク・アドレスは、パブリック・ネットワーク２００上でコンピューティング・システムから直接アドレス指定可能なパブリック・ネットワーク・アドレス（たとえば、静的なインターネット・ルーティング可能なＩＰアドレスまたは他の非変更ネットワーク・アドレスであるパブリック・ネットワーク・アドレス）であってもよい。
【００３９】
他の実施形態において、ＣＳＰ２０５は、ＣＳＰ２０５による使用に利用可能なネットワーク・アドレスに基づき、提供されたコンピュータ・ネットワークなどへ対応する既存のリモート・コンピュータ・ネットワークにより使用されたネットワーク・アドレスに関連するネットワーク・アドレスを選択することに基づくなど、少なくともいくつかの提供されたコンピュータ・ネットワーク拡張の少なくともいくつかのコンピューティング・ノードのために使用されるネットワーク・アドレスを自動的に選択することができる。加えて、サブストレート・ネットワーク上のオーバーレイ・ネットワークを使用することなどにより、ＣＳＰ２０５がクライアントへ仮想ネットワークを提供する、少なくともいくつかの実施形態において、複数のクライアントが彼らのそれぞれ提供されたコンピュータ・ネットワークのために同じまたは重複したネットワーク・アドレスを指定する場合でさえ、彼らの提供されたコンピュータ・ネットワークのために使用される任意のネットワーク・アドレスを各クライアントが指定することを可能にすることができ、このような実施形態において、ＣＳＰ２０５は、各クライアントのために別個にネットワーク・アドレスを管理するため、第一クライアントは、第一クライアントの提供されたコンピュータ・ネットワーク用の特定の指定されたネットワーク・アドレスと関連した第一コンピューティング・ノードを有することができ、一方、別個の第二クライアントは、第二クライアントの提供されたコンピュータ・ネットワーク用の同じ特定の指定されたネットワーク・アドレスと関連した別個の第二コンピューティング・ノードを有することができる。
【００４０】
ネットワーク・アドレスが提供されたコンピュータ・ネットワークのために設定される、またはその他の方法で決定されると、ＣＳＰ２０５は、ＤＨＣＰ（「動的ホスト構成プロトコル」）、またはネットワーク・アドレスなどの動的割り当てのための他の技術を使用することで、ランダム方式でなど、提供されたコンピュータ・ネットワークのために選択されたさまざまなコンピューティング・ノードへネットワーク・アドレスを割り当てることができる。加えて、パブリック・ネットワーク・アドレスを特定のコンピュータ・ネットワークのために使用する場合でも、ＣＳＰ２０５は、他の方式での使用のためにこれらのパブリック・ネットワーク・アドレスのうちの１つ以上をマッピングし、特定のパブリック・ネットワーク・アドレスを使用して他の箇所でより詳細に説明されるように特定のリモート・リソース・サービスのためのアクセス機構として動作することなどができ、したがってその特定のコンピュータ・ネットワークのコンピューティング・ノードによりその特定のパブリック・ネットワーク・アドレスへ送信された通信は、特定のパブリック・ネットワーク・アドレスを割り当てるインターネットまたは他のネットワーク上に別のコンピューティング・システムへよりも、対応するリモート・リソース・サービスへ転送される。図２Ｂは、設定されたネットワーク・アドレスを使用する実施例についての追加の詳細を提供し、提供されたコンピュータ・ネットワーク内の通信をルーティングする。
【００４１】
加えて、少なくともいくつかの実施形態において、クライアントは、モジュール２１０とインタラクトし、このクライアントのために提供されたコンピュータ・ネットワークのためのネットワーク・トポロジ情報を設定する（たとえば、ＣＳＰ２０５により提供されたＡＰＩとの１回以上のプログラマティック・インタラクションを介して）ことができ、このようなネットワーク・トポロジ情報は、提供されたコンピュータ・ネットワークがすでにこのクライアントにより使用中であった後など、少なくともいくつかのこのような実施形態で提供されたコンピュータ・ネットワークのために後で動的に変更されることができる。たとえば、クライアントは、提供されたコンピュータ・ネットワークの部分である特定のタイプのネットワーキング・デバイス（たとえば、ルータ、スイッチなど）及び／または他のネットワーク・デバイスまたはノード（たとえば、ファイアウォール、プロキシ、ネットワーク・ストレージ・デバイス、プリンタなど）を指定することができる、及び／または共にグルーピングされる、またはその他の方法で共通の相互通信特性（たとえば、相互通信をフィルタリングしないサブネットの部分である、及び／または特定のネットワーキング・デバイスと関連する特定の１サブセットのコンピューティング・ノード）を共有する、提供されたコンピュータ・ネットワークの複数のサブセットのコンピューティング・ノードを指定することができる。
【００４２】
加えて、提供されたコンピュータ・ネットワークのために指定された設定情報は、少なくともいくつかの実施形態において、ルーティング情報、またはネットワーキング・デバイス及び／またはコンピューティング・デバイスのグループ間の他の相互接続情報を含むことができる。さらに、少なくともいくつかの実施形態において、ＣＳＰ２０５は、複数の地理的位置で（たとえば、複数の地理的に分散されたデータ・センタで）利用可能なコンピューティング・ノードを提供することができ、さらに提供されたコンピュータ・ネットワークへクライアントが指定した設定情報は、提供されたコンピュータ・ネットワークのコンピューティング・ノードが設置される（たとえば、複数の地理的位置に設置されたそれらを含むことで提供されたコンピュータ・ネットワークのコンピューティング・ノード間にフォールト・トレランスを提供する）１つ以上の地理的位置を示すことができる、及び／またはその他の方法でＣＳＰ２０５により使用され１つ以上のこのような地理的位置を選択する、提供されたコンピュータ・ネットワークのコンピューティング・ノードを相互運用する方法の選好または要件についての情報を提供することができる（たとえば、コンピューティング・ノード相互通信についての最小または最大ネットワーク・レイテンシまたは帯域、コンピューティング・ノード間の最小または最大ネットワーク近接性、コンピューティング・ノード間の最小または最大地理的近接性など、すべてのこのような地理的位置で利用不可能である特定のリソースまたは機能性へのローカル・アクセスを有する、クライアントのリモート・コンピュータ・ネットワークへ及び／またはリモート・リソース・サービスへなど、他の外部コンピューティング・システムに関して指定された位置を有する）。
【００４３】
他の箇所でより詳細に考察されるように、少なくともいくつかの実施形態において、提供されたコンピュータ・ネットワークのコンピューティング・ノード間の相互接続及び相互通信は、ＣＳＰ２０５の下層・サブストレート・ネットワークを使用して管理され、このような場合に、一部またはすべての設定されたネットワーク・トポロジ情報は、少なくともいくつかのこのような実施形態において、ＣＳＰ２０５の下層・サブストレート・ネットワーク及び対応するモジュールを使用してシミュレーションを行うことができる。たとえば、ＣＳＰ２０５により提供された各コンピューティング・ノードは、その関連したコンピューティング・ノードへ及びこれらからの通信を管理するＣＳＰ２０５のノード通信マネージャ・モジュールと関連することができる。このような場合に、コンピューティング・ノード用の関連した通信マネージャ・モジュールを使用することでファイアウォール・デバイスのシミュレーションを行い、１つ以上のシミュレーションを行ったファイアウォール・デバイスと合致した方式でコンピューティング・ノードへ及び／またはこれからの通信を許可しない、またはその他の方法でこれらを処理することができる。このようなノード通信マネージャ・モジュールは、コンピューティング・ノード間で相互通信が通じる方法、及びこれが通じるかどうかを制御することで、ならびに適切な応答情報を含む情報（たとえば、ＡＲＰ、またはアドレス解決プロトコル、要求）のためのコンピューティング・ノードからの要求へ応答することでルータ及びサブネットのシミュレーションを同様に行うことができる。ＣＳＰ２０５の１つ以上の外部通信マネージャ・モジュールは、ＣＳＰ２０５により提供されたコンピューティング・ノード及び外部コンピューティング・システム間の通信を管理し、同様にファイアウォール・デバイスのシミュレーションを行い指定されたネットワーク・アクセス制約を強制し、リモート・リソース・サービス用に設定されたアクセス機構を管理してリモート・クライアントのプライベート・コンピュータ・ネットワークへの接続を保護することなどができる。他のタイプのネットワーク・トポロジ情報のシミュレーションを同様に行うことができ、いくつかの実施形態においてＣＳＰ２０５のさまざまなモジュールの使用についての追加の詳細を図３に関して以下で考察する。
【００４４】
加えて、少なくともいくつかの実施形態において、クライアントは、モジュール２１０とインタラクトし、このクライアントのために提供されたコンピュータ・ネットワーク用のさまざまなネットワーク・アクセス制約情報を設定する（たとえば、ＣＳＰ２０５により提供されたＡＰＩとの１回以上のプログラマティック・インタラクションを介して）ことができ、このようなネットワーク・アクセス制約情報は、提供されたコンピュータ・ネットワークがすでにクライアントにより使用中であった後など、少なくともいくつかのこのような実施形態で提供されたコンピュータ・ネットワークのために動的に後で変更されることができる。たとえば、クライアントは、つぎの、通信方向（着信対発信）、通信タイプ（たとえば、画像を除くテキスト用のＨＴＴＰ要求を許可すること及びＦＴＰ要求を許可しないことなど、含まれたコンテンツ・タイプ及び／または使用された通信プロトコル・タイプに基づく）、他のコンピューティング・システムの位置（たとえば、提供されたコンピュータ・ネットワークの部分、提供されたコンピュータ・ネットワークに対応するリモート・クライアント・コンピュータ・ネットワークの部分、提供されたコンピュータ・ネットワーク及び任意の対応するリモート・クライアント・コンピュータ・ネットワークの外部に、プライベートまたは他の特殊なアクセスが確立されているリモート・リソース・サービスの部分などであるかどうか）、他のコンピューティング・システム・タイプなどのうちの１つ以上に基づくなど、提供されたコンピュータ・ネットワークの他のコンピューティング・ノードと及び／または他の外部コンピューティング・システムと、提供されたコンピュータ・ネットワークの一部またはすべてのコンピューティング・ノードが通信することを可能にするかどうか及びその方法についての情報を指定することができる。加えて、他の箇所でより詳細に考察されるように、少なくともいくつかの実施形態において、提供されたコンピュータ・ネットワークは、提供されたコンピュータ・ネットワークの部分またはその他の方法でこれへローカルに設定されたアクセス機構を介してなど、１つ以上のリモート・リソース・サービスへのプライベートまたは他の特殊なアクセスを提供するように設定されることができる。ネットワーク・トポロジ情報及び他のルーティング情報のためのものと同様の方式で、ＣＳＰ２０５は、さまざまな方式で提供されたコンピュータ・ネットワーク用のネットワーク・アクセス制約情報を強制することができる。いくつかの実施形態において、提供されたコンピュータ・ネットワーク用の通信を管理することに関連した追加の詳細は、図３に関して以下で考察される。
【００４５】
図２Ｂは、この実施例において提供されたコンピュータ・ネットワーク２２０Ａが図２Ａのリモート・プライベート・コンピュータ・ネットワーク２３０のうちの１つなど、クライアントのリモート・プライベート・コンピュータ・ネットワークへのプライベート・ネットワーク拡張でありながら、このクライアントについてのＣＳＰ２０５（またはコンピュート・サービス・プロバイダの他の実施形態）により提供されることができる例示的なコンピュータ・ネットワーク２２０Ａについての追加の詳細を説明する。この実施例において、提供されたコンピュータ・ネットワーク２２０Ａ用のさまざまな接続及び通信経路は、設定可能なネットワーク・アクセス制約及びネットワーク・トポロジのタイプを説明する概念的な方式で示され、図３は、例示的に提供されたコンピュータ・ネットワーク２２０Ａなど提供されたコンピュータ・ネットワークを作成するために使用されることができる下層・サブストレート・ネットワーク及び接続の実施例についての追加の詳細を説明する。
【００４６】
特に、図２Ｂにおいて、提供されたコンピュータ・ネットワーク２２０Ａは、さまざまなコンピューティング・ノードがこの実施例において（たとえば、図示されない、異なるサブネット及び／または関連して設定されたネットワーキング・デバイスに対応するように）論理グループ２６４、２６５及び２６６で設定されながら、第一地理的位置１  ２６０に（たとえば、地理的位置１の第一データ・センタに）設置されるＣＳＰ２０５により提供されたさまざまなコンピューティング・ノード（またはホスト・サーバ・コンピュータ）を含む。この実施例において、単一の概念的な仮想ルータ２６２は、発生する可能性がある異なるタイプの通信を説明するために、地理的位置１で示され、これらのコンピューティング・ノード及び他のコンピューティング・システム間の通信を制御するが、提供されたコンピュータ・ネットワーク２２０Ａは、地理的位置１で複数の、または設定されないネットワーキング・デバイスを実際に含むことができ、コンピュータ・ネットワーク２２０Ａは、下層・サブストレート・ネットワーク及び下層・サブストレート・ネットワークなどを経由して通信を制御する関連したモジュールを使用することで、複数の物理的な相互接続されたルータまたは他のネットワーキング・デバイスを介してなど、さまざまな方式で地理的位置１に設定可能なネットワーク・サービスにより実装されることができる。この実施例において、仮想ルータ２６２は、提供されたコンピュータ・ネットワーク２２０Ａ上の対応する宛先コンピューティング・ノードへ提供されたコンピュータ・ネットワーク２２０Ａ内のネットワーク・アドレスへ送信される通信をルーティングする、及び適切に提供されたコンピュータ・ネットワーク２２０Ａの外側の他のネットワーク・アドレスへの他の通信をルーティングするなど、設定されたネットワーク・トポロジ情報、リモート・リソース・サービスへの設定されたプライベートまたは他の特殊なアクセス、及び他の設定されたネットワーク・アクセス制約情報を含む、提供されたコンピュータ・ネットワーク２２０Ａ用に設定された情報に従い操作する。さらに、設定されたファイアウォール・デバイス、設定されたネットワーク・トポロジ情報、または他の設定されたネットワーク・アクセス制約により許可されない通信は、仮想ルータ２６２により遮断される、またはその他の方法でこれにより管理されることができる。
【００４７】
この実施例において、コンピュータ・ネットワーク２２０Ａは、例示的なクライアント１のために提供され、クライアント１のリモート・コンピュータ・ネットワークへのネットワーク拡張である。クライアント１のリモート・コンピュータ・ネットワークは、第一遠隔位置サイトＡ２９０で複数のコンピューティング・システム（図示せず）を含み、仮想ルータ２６２は、地理的位置１で仮想通信リンク２７０を介してこれらの複数のコンピューティング・システムと通信するように設定される。たとえば、提供されたコンピュータ・ネットワーク２２０Ａは、サイトＡ２９０で複数のコンピューティング・システムへの１つ以上の設定されたＶＰＮ接続を含むことができ、通信リンク２７０は、１つ以上のこのようなＶＰＮ接続に対応することができる。加えて、クライアント１のリモート・コンピュータ・ネットワークは、図示された任意選択のサイトＢ２９２のような、１つ以上の他の位置にコンピューティング・システムを任意選択で含むことができ、このような場合に、さらに仮想ルータ２６２は、サイトＢ２９２へ任意選択の仮想通信リンク２７２を介して（たとえば、サイトＢへ直接に１つ以上の他の設定されたＶＰＮ接続を介して）など、他の位置でこれらの他のコンピューティング・システムと通信するように設定されることができる。
【００４８】
複数のＶＰＮ接続または他の安全な接続をリモート・コンピュータ・ネットワークのリモート・コンピューティング・システムへ使用するときに、各接続は、１サブセットのリモート・コンピューティング・システムに対応し（たとえば、これらのリモート・コンピューティング・システムに対応するリモート・コンピュータ・ネットワークの１サブセットのネットワーク・アドレスと関連することで）、通信を適切な接続へルーティングさせることができる。他の実施形態において、複数の接続が冗長な代替物である（たとえば、ロード・バランシングのために使用される）場合など、複数のＶＰＮ接続または他の安全な接続は、１つ以上の位置でリモート・コンピューティング・システムに使用されることができるが、リモート・コンピューティング・システムのいずれかへの通信を各々支援することができる。さらに、いくつかの実施形態において、クライアントのリモート・コンピュータ・ネットワークは、複数のサイトで複数のコンピューティング・システムを含むことができるが、リソース・コンピューティング・システムへの単一のＶＰＮ接続または他の安全な接続は、リモート・コンピュータ・ネットワークが適切なサイト及びコンピューティング・システムへの通信をルーティングするために応答可能でありながら、使用されることができる。
【００４９】
加えて、提供されたコンピュータ・ネットワーク２２０Ａは、提供されたコンピュータ・ネットワーク２２０Ａのコンピューティング・ノード及びインターネット２９６または他のパブリック・ネットワーク上で一般にアクセス可能な他の外部コンピューティング・システム間のすべての通信を、一部の通信を、または通信なしで許可するように設定されることができる。少なくともいくつかのこのような外部の通信を許可する場合に、さらに仮想ルータ２６２は、提供されたコンピュータ・ネットワーク２２０Ａ用の任意選択の仮想境界ルータ２５５と一緒になど、提供されたコンピュータ・ネットワーク２２０Ａの任意選択の仮想通信リンク２７８を介してこれらの複数の外部コンピューティング・システムと通信するように設定されることができる。仮想境界ルータ２５５は、地理的位置１でＣＳＰ２０５（たとえば、ＣＳＰ２０５のこれらのコンピューティング・ノードを使用するクライアントへＣＳＰ２０５により提供された複数のコンピュータ・ネットワークを支援する実際のデバイス）により、下層・サブストレート・ネットワーク経由で通信を制御する下層・サブストレート・ネットワーク及び関連したモジュール（たとえば、許可されない通信がサブストレート・ネットワーク上へ提供されたコンピュータ・ネットワーク２２０ａのコンピューティング・ノードにより送信されるのを防ぐために）を使用することによるなど、提供された外部コンピューティング・システム及びさまざまなコンピューティング・ノード間の通信を管理する１つ以上の実際のファイアウォール・デバイスまたは境界ルータ・デバイスを使用して、ＣＳＰ２０５などにより、さまざまな方式で物理的に実現されることができる。さらにまた、仮想境界ルータ２５５は、サイトＡ及びＢでリモート・クライアントのコンピュータ・ネットワークへ、１つ以上のリモート・リソース・サービスへなど、提供されたコンピュータ・ネットワーク２２０Ａの外部に他のコンピューティング・システムへの他の通信を管理する際にさらに概念的に割り当てることができる。
【００５０】
加えて、提供されたコンピュータ・ネットワーク２２０Ａは、提供されたコンピュータ・ネットワーク２２０Ａの１つ以上のネットワーク・アドレスを割り当て、これらの１つ以上のリモート・リソース・サービスを表すことで、及びこれらの割り当てられたネットワーク・アドレスへ送信された通信のために行われるように特定の動作を任意選択で設定することなどにより、１つ以上のリモート・リソース・サービスへのプライベートまたは他の特殊なアクセスを提供するように設定されることができる。この実施例において、仮想ルータ２６２は、提供されたコンピュータ・ネットワーク２２０ａの仮想通信リンク２７４経由でリモート・リソース・サービス２９４へのローカル・アクセスを提供するように設定されている。このようにして、たとえば、提供されたコンピュータ・ネットワーク２２０ａのコンピューティング・ノードのうちの１つが通信リンク２７４へマッピングされる提供されたコンピュータ・ネットワーク２２０ａの特定のネットワーク・アドレスへの通信を送信する場合に、仮想ルータは、提供されたコンピュータ・ネットワーク２２０ａ（たとえば、インターネットまたは他のパブリック・ネットワークを介して）の外部にリモート・リソース・サービス２９４へその通信を転送することができる。他の実施形態において、リモート・リソース・サービス２９４は、ＣＳＰ２０５の部分である、またはその他の方法で地理的位置１にインタフェースを実装することができ、このような場合に、通信リンク２７４にマッピングされる提供されたコンピュータ・ネットワーク２２０Ａの特定のネットワーク・アドレスへ送信された通信は、処理するためにリモート・リソース・サービスのそのインタフェースへ代わりに転送されることができる。
【００５１】
加えて、仮想通信リンク２７４は、少なくともいくつかの実施形態において、それらをリモート・リソース・サービス２９４に転送する前に１つ以上の方式でこれらの通信を変更するように、またはその他の方法で特殊な方式でリモート・リソース・サービス２９４にアクセスするような、さまざまな方式でこのリンクを介して送信された通信を管理するように設定されることができる。たとえば、図示された実施形態において、仮想通信リンク２７４は、リモート・リソース・サービス２９４により提供された１サブセットのコンピューティング関連のリソースがそのネームスペースの部分でありながら、リモート・リソース・サービス２９４内の特定のネームスペースに対応するように設定されることができる。それに応じて、仮想通信リンク２７４は、特定のネームスペースと関連したネームまたは他の識別子を使用して通信を変更または変換することで、特定のネームスペースを示すことを支援するリモート・リソース・サービスの特定のインタフェースを使用することでなど、特定のネームスペース内のリソースにアクセスするように設定されることができる。
【００５２】
加えて、仮想通信リンク２７４が特定のネームスペースに対応するように、またはその他の方法でリモート・リソース・サービス２９４により提供された１サブセットのリソースに対応するように設定される場合に、さらに提供されたコンピュータ・ネットワーク２２０Ａは、同じリモート・リソース・サービス２９４にまた対応する１つ以上の他の仮想通信リンクを含むように任意選択で設定されることができるが、他の方式でリモート・リソース・サービス２９４にアクセスするように設定される。たとえば、提供されたコンピュータ・ネットワーク２２０Ａは、別個の第二ネームスペースに対応する、任意の特定のネームスペースに対応しない、通信リンク２７４のために使用された顧客識別子とは異なるリモート・リソース・サービス２９４の顧客の識別子を使用するなどのように、仮想通信リンク２７４のものと異なる方式でリモート・リソース・サービス２９４にアクセスするように設定される別個の仮想通信リンク２７６を任意選択で含むことができる。この実施例において、仮想通信リンク２７４及び２７６は、それぞれリンク２７４及び２７６用のＩＤ１及びＩＤ２としてこの実施例で表現される、異なる識別子（たとえば、異なるネームスペース識別子）を使用するように設定される。このようにして、提供されたコンピュータ・ネットワーク２２０ａのコンピューティング・ノードは、リモート・リソース２９４から異なるタイプの機能性にアクセス可能であることができる。さらに、本明細書で図示されないが、提供されたコンピュータ・ネットワーク２２０Ａは、これらの他のリモート・リソース・サービスへ他の仮想通信リンクを使用して１つ以上の他のリモート・リソース・サービス（図示せず）にアクセスするように同様に設定されることができる。
【００５３】
リモート・リソース・サービス２９４の特定のネームスペースにアクセスするように仮想通信リンク２７４を設定することに加えて、またはこれをすることの代わりに、仮想通信リンクは、少なくともいくつかの実施形態において、リモート・リソース・サービス２９４へ追加情報を提供し、提供されたコンピュータ・ネットワーク２２０ａである場合に通信の位置または他のソースをリモート・リソース・サービス２９４が有効にすることを可能にするように設定されることができる。たとえば、図示された実施形態において、仮想通信リンク２７４は、コンピュート・サービス・プロバイダにより、またはリモート・リソース・サービス２９４により提供されたコンピュータ・ネットワーク２２０ａと関連する１つ以上の特定の識別子または他のアクセス制御インジケータに対応するように設定されることができるため、仮想通信リンク２７４を介してアクセスされるリモート・リソース・サービス２９４により提供された１サブセットの新規の及び／または既存のコンピューティング関連のリソースは、これらのリソースへのアクセスを制限する際にリモート・リソース・サービス２９４による使用のために、アクセス制御インジケータ（複数を含む）と関連する。
【００５４】
それに応じて、仮想通信リンク２７４は、追加のインジケータ（複数を含む）を含む通信を変更する、通信の変更なしで通信に加えて追加のインジケータ（複数を含む）を送信する、このような追加のインジケータ（複数を含む）を含むことを支援するリモート・リソース・サービスの特定のインタフェースを使用するなど、さまざまな方式で提供されたコンピュータ・ネットワーク２２０ａと関連した指定された追加のインジケータ（複数を含む）を使用するように設定されることができる。加えて、仮想通信リンク２７４が１つ以上の追加のインジケータに対応するように設定される場合に、提供されたコンピュータ・ネットワーク２２０Ａは、同じリモート・リソース・サービス２９４にまた対応する１つ以上の他の仮想通信リンクを含むように任意選択でさらに設定されることができるが、他の方式でリモート・リソース・サービス２９４にアクセスするように設定される。たとえば、提供されたコンピュータ・ネットワーク２２０Ａは、任意の追加のインジケータを使用しないでリモート・リソース・サービス２９４にアクセスするように（たとえば、その他の方法で公的に利用可能な場合にリモート・リソース・サービス２９４へ同じアクセスを提供するように）、仮想通信リンク２７４で使用されたものと異なる１つ以上の他の追加のアクセス制御インジケータを使用するように、仮想通信リンク２７４のために使用された顧客識別子と異なるリモート・リソース・サービス２９４の顧客の識別子を使用するようになど、別個の仮想通信リンク２７６を任意選択で設定することができる。さらに、本明細書で図示されないが、提供されたコンピュータ・ネットワーク２２０ａは、仮想通信リンク２７４と同じ１つ以上の追加のインジケータを使用するように設定される、またはその他の方法で設定される他の仮想通信リンクなど、これらの他のリモート・リソース・サービスへの他の仮想通信リンクを使用する１つ以上の他のリモート・リソース・サービス（図示せず）にアクセスするように同様に設定されることができる。
【００５５】
本開示の例示的な実施形態に従い、アプリケーション２８０ｄは、クライアント・プライベート・ネットワークのサイトＡ２９０のホスト・サーバによりホストされたＶＭＩ２８０ａ上で動作していることができる。またアプリケーション２８０ｄは、ＶＭＩ２８０ｂ〜２８０ｃにより提供された機能性を利用することができる（すなわち、これに依存することができる）。加えて、提供されたコンピュータ・ネットワーク２２０Ａは、図１を参照して記述されるような機能性を提供する、アプリケーション移行サービス部１４０ａを使用することができる。たとえば、アプリケーション移行サービス部１４０ａを使用して、提供されたネットワーク２２０Ａ内のホスト・サーバ２６４へアプリケーション２８０ｄを移行することができる。さらに特に、ホスト・コンピュータ２６４で、図１を参照して説明されるようにＶＭＩ２８０ａ〜２８０ｃを移行し、それぞれＶＭＩ１、ＶＭＩ２、及びＶＭＩ３として立ち上げることができる。たとえば、２つの異なるサーバ・コンピュータがＶＭＩ２８０ｂ〜２８０ｃ及びＶＭＩ２８０ａをホストするときにインスタンスにおいて、つぎにすべてのＶＭＩを移行すると、ＶＭＩ２８０ｂ〜２８０ｃは、提供されたコンピュータ・ネットワーク２２０Ａで異なるサーバ（たとえば、ホスト・サーバ２６５）でＶＭＩ２〜ＶＭＩ３として立ち上げられることができる。さらに元のＶＭＩ２８０ａ〜２８０ｃがプライベート・サブネット２８０ｅ内にあったため、移行時に、また新規のＶＭＩ、ＶＭＩ１〜ＶＭＩ３をプライベート・サブネット２５０Ａに配置することができる。
【００５６】
図示された実施形態において、地理的位置１でＣＳＰ２０５のコンピューティング・ノードに加えて、さらに提供されたコンピュータ・ネットワーク２２０Ａは、第二地理的位置２  ２８０に（たとえば、地理的位置２で別個の第二データ・センタに）設置されるＣＳＰ２０５により提供されたコンピューティング・ノード２８４を含むことができる。それに応じて、仮想ルータ２６２は、地理的位置２で提供されたコンピュータ・ネットワーク２２０ａの部分へ任意選択の仮想通信リンク２６８を含むように設定されることができる。この実施例において、同様に地理的位置２で提供されたコンピュータ・ネットワーク２２０Ａの部分は、仮想通信リンク２８８を介して地理的位置１に提供されたコンピュータ・ネットワーク２２０Ａの部分と通信することを備えるコンピューティング・ノード２８４への、またはこれらからの通信を管理するように概念的な仮想ルータ２８２で図示される。異なる地理的位置でのＣＳＰ２０５のコンピューティング・ノード間のこのような通信は、インターネットまたは他のパブリック・ネットワーク（たとえば、ＣＳＰ２０５により支援された暗号化を使用するなど、安全なトンネルの部分として）経由で通信を送信することで、私的で安全な方式で（たとえば、地理的位置間の専用のリース・ラインを介して）通信を送信することなどにより、さまざまな実施形態においてさまざまな方式で処理されることができる。加えて、本明細書で図示されないが、地理的位置２で提供されたコンピュータ・ネットワーク２２０Ａの部分は、リモート・クライアントのプライベート・ネットワーク（たとえば、地理的位置１への任意のＶＰＮ接続とは異なる１つ以上のＶＰＮ接続を介して）へ、リモート・リソース・サービスへ、インターネットへなど、地理的位置１での部分のために図示された同じタイプの他の仮想通信リンクの一部またはすべてを同様に含むことができる。
【００５７】
図２Ｂの例示的に提供されたコンピュータ・ネットワーク２２０Ａを例示的な目的のために含むこと、ならびにクライアントのためにＣＳＰ２０５により提供された他のコンピュータ・ネットワークがすべてのタイプの設定された通信リンク及びネットワーク・トポロジ情報を含まない可能性がある、及び／または本明細書で図示されない他のタイプの設定された通信リンク及びネットワーク・トポロジ情報を含む可能性があることを理解するであろう。たとえば、いくつかの実施形態及び状況において、提供されたコンピュータ・ネットワークは、コンピューティング・ノードに加えて、またはこれらの代わりに設定されたデバイス及び他のリソースを含むことができ、このような場合に、各このような他のリソースは、提供されたコンピュータ・ネットワークのネットワーク・アドレスを任意選択で割り当てられることができる。さらに、図２Ｂで図示された概念的なデバイス及び通信リンクは、さまざまなタイプの下層物理デバイス、接続及びモジュールを使用して実現されることができる。加えて、本明細書で図示されないが、クライアントは、提供されたコンピュータ・ネットワークからであろうと、または代替の他のリモート・コンピューティング・システムからであろうとも、サブスクライブ／登録してリソースを使用する、さまざまなクレデンシャル（たとえば、ユーザＩＤ、パスワードなど）を受信／作成する、提供されたコンピュータ・ネットワーク（たとえば、プライベート企業ネットワークへのネットワーク拡張）から後にアクセスされる他のリモート・コンピューティング・システム（たとえば、リモート・プライベート企業ネットワークの部分である）からリソース及び／またはネームスペースを作成するなど、リモート・リソース・サービスとのさまざまな他のタイプのインタラクションを実行することができる。
【００５８】
図３は、コンピュート・サービス・プロバイダの実施形態によるなど、コンピュータ・ネットワークを提供する際に使用のためのコンピューティング・システムの例示的な実施形態を図示するネットワーク図である。特に、この実施例において、複数の物理コンピューティング・システムは、データ・センタ３００内の同じ場所に設置され、さまざまなネットワーキング・デバイス及び１つ以上の物理ネットワークを介して相互接続される。この実施例において、コンピュート・サービス・プロバイダが物理コンピューティング・システム及び他のデバイスを使用して、仮想ネットワークとして各提供されたコンピュータ・ネットワークを確立して維持することで、及び仮想ネットワークをオーバーレイするサブストレート・ネットワークとして物理ネットワーク（複数を含む）を使用することで、クライアントのために複数のコンピュータ・ネットワークを提供する。たとえば、図２Ｂの実施例に関して、データ・センタ３００を地理的位置１に設置することができ、図示された物理コンピューティング・システムを使用して、提供されたコンピュータ・ネットワーク２２０Ａのコンピューティング・ノード２６４、２６５及び２６６を提供することができる。オーバーレイ・ネットワーク及び下層・サブストレート・ネットワークの使用は、少なくともいくつかの実施形態において提供されたコンピュータ・ネットワークのコンピューティング・ノードへ透過的であることができる。
【００５９】
このようにして、この実施例において、コンピュート・サービス・プロバイダにより提供されたコンピュータ・ネットワークは、下層物理サブストレート・ネットワークを介して通信を送信する仮想オーバーレイ・ネットワークとして実装される。提供された仮想オーバーレイ・ネットワークは、いくつかの実施形態において通信をカプセル化しないで（たとえば、物理サブストレート・ネットワークのネットワーキング・プロトコルのために設定された通信に仮想ネットワーク用の仮想ネットワーク・アドレス情報を組み込むことで）など、さまざまな実施形態のさまざまな方式で実装されることができる。１つの例示的な実施例として、仮想ネットワークは、３２ビット１Ｐｖ４（「インターネット・プロトコル・バージョン４」）ネットワーク・アドレスを使用して実装されることができ、これらの３２ビット仮想ネットワーク・アドレスは、通信パケット若しくは他のデータ伝送（たとえば、ステートレスＩＰ／ＩＣＭＰ変換、またはＳＩＩＴを使用して）のヘッダを書き換えること、またはその他の方法でこのようなデータ伝送を変更して、それらを設定する第一ネットワーキング・プロトコルから別個の第二ネットワーキング・プロトコルへそれらを変換することによってなど、物理サブストレート・ネットワークにより使用された１２８ビット１Ｐｖ６（「インターネット・プロトコル・バージョン６」）ネットワーク・アドレスの部分として組み込まれることができる。
【００６０】
別の例示的な実施例として、仮想ネットワーク及びサブストレート・ネットワークの両方は、同じネットワーク・アドレッシング・プロトコル（たとえば、１Ｐｖ４または１Ｐｖ６）を使用して実装されることができ、仮想ネットワーク・アドレスを使用して提供された仮想オーバーレイ・ネットワークを介して送信されたデータ伝送は、サブストレート・ネットワーク経由でこの伝送を送信しているが、元の仮想ネットワーク・アドレスを変更されたデータ伝送に格納しながら、またはその他の方法でそれらがサブストレート・ネットワークを終了させるときにそれらの元の形式へデータ伝送を復元できるように追跡しながら、サブストレート・ネットワークに対応する異なる物理ネットワーク・アドレスを使用するように変更されることができる。他の実施形態において、通信のカプセル化を使用して、少なくともいくつかのオーバーレイ・ネットワークを実現することができる。
【００６１】
図３の図示された実施例は、コンピュート・サービス・プロバイダの実施形態により操作された複数の物理コンピューティング・システムを備えるデータ・センタ３００を含む。データ・センタ３００は、データ・センタ３００の外部で１つ以上のパブリック・ネットワーク３３５に接続され、プライベート・ネットワーク３４０を介して１つ以上のリモート・コンピューティング・システム３４５ａへ、他の地理的位置で複数のコンピューティング・システムを各々含む１つ以上の他のグローバルにアクセス可能なデータ・センタ３６０へ、及び１つ以上の他のリモート・コンピューティング・システム３４５ｂへ、アクセスを提供する。パブリック・ネットワーク３３５は、たとえば、インターネットのような、おそらくさまざまな別個の当事者により運営された、ネットワークのうちの公的にアクセス可能なネットワークであってもよく、プライベート・ネットワーク３４０は、たとえば、プライベート・ネットワーク３４０の外部のコンピューティング・システムから全体的にまたは部分的にアクセス不可能である企業ネットワークであってもよい。コンピューティング・システム３４５ｂは、たとえば、インターネットへ直接接続する（たとえば、電話線、ケーブル・モデム、デジタル加入者線（「ＤＳＬ」）など）各々ホーム・コンピューティング・システムであってもよい。
【００６２】
この実施例において、提供された仮想コンピュータ・ネットワークの設定をコンピュート・サービス・プロバイダのマネージャ・モジュール３１０により容易にし、コンピュート・サービス・プロバイダの複数の他のモジュールを使用してサブストレート・ネットワークに入る及び／またはこれを出る通信を変更することで物理サブストレート・ネットワーク・エッジからなど、提供されたコンピュータ・ネットワークの機能性を実装する。特に、この実施例において、コンピュート・サービス・プロバイダの複数のノード通信マネージャ・モジュールは、図示されたノード通信マネージャ・モジュール３０９ａ、３０９ｄ及び３５０のような、関連したコンピューティング・ノードへ及びこれらからの通信を各々管理する。加えて、この実施例において、コンピュート・サービス・プロバイダの外部通信マネージャ・モジュール３７０は、以下でより詳細に考察されるような、データ・センタ３００内の物理コンピューティング・システム及び外部コンピューティング・システム間の通信を管理する。この実施例において単一の外部通信マネージャ・モジュール３７０のみを図示するが、冗長性及びロード・バランシングのためなど、複数のデバイスを使用してモジュール３７０の機能性を実装できることを理解するであろう。
【００６３】
データ・センタ３００は、複数の物理コンピューティング・システム（たとえば、１つ以上の仮想マシン・インスタンスを実行するホスト・サーバ・コンピュータ）３０５ａ〜３０５ｄ及び３５５ａ〜３５５ｎだけではなく、関連したコンピューティング・システム３５５ａ〜３５５ｎ用の通信を管理する１つ以上の他のコンピューティング・システム（図示せず）上で実行するＣＳＰノード通信マネージャ・モジュール３５０、ならびに１つ以上のコンピューティング・システム（図示せず）上で実行するコンピュート・サービス・プロバイダのマネージャ・モジュール３１０も含む。この例示的な実施形態において、各物理コンピューティング・システム３０５ａ〜３０５ｄは、複数の仮想マシンのコンピューティング・ノードをホストし、仮想マシン（「ＶＭ」）ノード通信マネージャ・モジュール（たとえば、物理コンピューティング・システム用の仮想マシンのハイパーバイザ・モニタの部分として）、またコンピューティング・システム３０５ａ上のＣＳＰ  ＶＭノード通信マネージャ・モジュール３０９ａ及び仮想マシン３０７ａ、ならびにコンピューティング・システム３０５ｄ上のＣＳＰ  ＶＭノード通信マネージャ・モジュール３０９ｄ及び仮想マシン３０７ｄを含む。クライアントのために提供されたコンピュータ・ネットワークの別個のコンピューティング・ノードとしてコンピュート・サービス・プロバイダは、各仮想マシン・コンピューティング・ノードを使用することができる。物理コンピューティング・システム３５５ａ〜３５５ｎは、この実施例において、いずれの仮想マシンも実行しないので、コンピュート・サービス・プロバイダによりクライアントのために提供されたコンピュータ・ネットワークの部分である別個のコンピューティング・ノードとして各々動作することができる。他の実施形態において、データ・センタですべてか無かの物理コンピューティング・システムは、仮想マシンをホストすることができる。
【００６４】
たとえば、リモート・コンピューティング・システム３４５ａは、エンタープライズ・ベース・ネットワークの部分であってもよい。アプリケーションＡＰＰ１は、エンタープライズ・ベース・ネットワークのリモート・コンピューティング・システム３４５ａのホスト・サーバ３９０によりホストされたＶＭＩ１上で動作していることができる。またアプリケーションＡＰＰ１は、同じホスト・サーバ３９０によりまたホストされたＶＭＩ２及びＶＭＩ３により提供された機能性を利用することができる（すなわち、これらに依存することができる）。コンピュート・サービス・プロバイダ（たとえば、パブリック・クラウド・ネットワーク）のデータ・センタ３００は、図１を参照して記述されたような機能性を提供する、アプリケーション移行サービス１４０ａを使用することができる。たとえば、アプリケーション移行サービス１４０ａを使用して、データ・センタ３００内のホスト・サーバ３０５ｂへアプリケーションＡＰＰ１を移行することができる。さらに特に、図１を参照して説明されるように、ＶＭＩ１〜ＶＭＩ３は、ホスト３９０から移行され、データ・センタ３００内のホスト・コンピュータ３０５ｂで、それぞれＶＭＩ１、ＶＭＩ２、及びＶＭＩ３として立ち上げられることができる。
【００６５】
元のＶＭＩ（リモート・コンピューティング・システム３４５ａ内のホスト３９０上で動作するＶＭＩ１〜ＶＭＩ３）をプライベート・サブネット３９１に接続できる。移行時に、また新規に立ち上げられたＶＭＩ（ホスト・サーバ３０５ｂ内のＶＭＩ１〜ＶＭＩ３）をプライベート・サブネット３９３内に配置できる。加えて、移行プロセスの部分として、ホスト・サーバ・コンピュータ３０５ｂのネーム及びＩＰアドレスは、コンピューティング・システム３４５ａのエンタープライズ・ベース・ネットワーク内のホスト・サーバ３９０のネーム（たとえば、「ホスト１」）及びＩＰアドレス（たとえば、ＩＰ１）と同じであるように変更されることができる。
【００６６】
さらにこの例示的なデータ・センタは、スイッチ３１５ａ及び３１５ｂ、エッジ・ルータ３２５ａ〜３２５ｃ、ならびにコア・ルータ３３０ａ〜３３０ｃのような、複数の物理ネットワーキング・デバイスを含む。スイッチ３１５ａは、物理コンピューティング・システム３０５ａ〜３０５ｃを含む物理ネットワークの部分であり、エッジ・ルータ３２５ａへ接続される。スイッチ３１５ｂは、物理コンピューティング・システム３０５ｄ、３５５ａ〜３５５ｎ、ならびにＣＳＰノード通信マネージャ・モジュール３５０及びＣＳＰシステム・マネージャ・モジュール３１０を提供するコンピューティング・システム（複数を含む）を含む別個の物理ネットワークの部分であり、エッジ・ルータ３２５ｂへ接続される。スイッチ３１５ａ〜３１５ｂにより確立された物理ネットワークは、エッジ・ルータ３２５ａ〜３２５ｃ及びコア・ルータ３３０ａ〜３３０ｃを含む、仲介相互接続ネットワーク３２０を介して各他の及び他のネットワーク（たとえば、パブリック・ネットワーク３３５）に順に接続される。エッジ・ルータ３２５ａ〜３２５ｃは、２つ以上のネットワーク間のゲートウェイを提供する。たとえば、エッジ・ルータ３２５ａは、スイッチ３１５ａにより確立された物理ネットワーク及び相互接続ネットワーク３２０間のゲートウェイを提供する。エッジ・ルータ３２５ｃは、相互接続ネットワーク３２０及びパブリック・ネットワーク３３５間のゲートウェイを提供する。コア・ルータ３３０ａ〜３３０ｃは、このようなデータ伝送の特性（たとえば、ソース及び／または宛先サブストレート・ネットワーク・アドレス、プロトコル識別子などを含むヘッダ情報）及び／または相互接続ネットワーク３２０自体の特性（たとえば、物理ネットワーク・トポロジに基づくルータなど）に適切に基づくようにパケットまたは他のデータ伝送を転送することなどにより、相互接続ネットワーク３２０内の通信を管理する。
【００６７】
図示されたノード通信マネージャ・モジュールは、関連したコンピューティング・ノードへ及びこれらから送信された通信を管理する。たとえば、ノード通信マネージャ・モジュール３０９ａは、関連した仮想マシン・コンピューティング・ノード３０７ａを管理し、ノード通信マネージャ・モジュール３０９ｄは、関連した仮想マシン・コンピューティング・ノード３０７ｄを管理し、各他のノード通信マネージャ・モジュールは、１グループの１つ以上の他の関連したコンピューティング・ノードのための通信を同様に管理することができる。図示されたノード通信マネージャ・モジュールは、コンピューティング・ノード間の通信を管理し、仲介物理サブストレート・ネットワーク（たとえば、相互接続ネットワーク３２０ならびにスイッチ３１５ａ及び３１５ｂと関連した物理ネットワーク）経由で特定の仮想ネットワークをオーバーレイすることができ、ファイアウォール・ポリシー及び他のネットワーク・アクセス制約を実装し、このような通信を制御することができる。外部通信マネージャ・モジュール３７０は、データ・センタ３００に出入りする外部通信を管理し、さらにこのような外部通信についてデータ・センタ３００内のサブストレート・ネットワーク経由でオーバーレイ・ネットワークを実装する。外部通信マネージャ・モジュール３７０は、データ・センタ３００の外部のリモート・リソース・サービスへのプライベートまたは他の特殊なアクセス、及び任意選択で外部リモート・クライアント・コンピュータ・ネットワークへの少なくともいくつかのＶＰＮ接続を許可する提供されたコンピュータ・ネットワーク用の少なくともいくつかの設定されたアクセス機構を含む、ファイアウォール・ポリシー及び他のネットワーク・アクセス制約を実装する動作を行うことができる、または代わりにこのようなＶＰＮ接続のコンピュート・サービス・プロバイダの部分を実装する他のハードウェア及び／またはソフトウェア（図示せず）と併せて動作することができる。
【００６８】
このようにして、１つの例示的な実施例として、コンピューティング・システム３０５ａ上の仮想マシン・コンピューティング・ノード３０７ａのうちの１つは、コンピューティング・システム３０５ｄ上の仮想マシン・コンピューティング・ノード３０７ｄのうちの１つ及びコンピューティング・システム３５５ａ（及びコンピュート・サービス・プロバイダによりまた使用される、このデータ・センタ内の、または１つ以上の他のデータ・センタ３６０内の任意選択で他のコンピューティング・ノード）に加えて、ならびに１Ｐｖ４が仮想ネットワーク用の仮想ネットワーク・アドレスを表すために使用されながら、クライアント用の特定の提供された仮想コンピュータ・ネットワーク（たとえば、図２Ｂの提供されたコンピュータ・ネットワーク２２０Ａ）の部分であってもよい。他の仮想マシン・コンピューティング・ノード３０７ａ、仮想マシン・コンピューティング・ノード３０７ｄ、及びコンピューティング・システム３５５ｂ〜３５５ｎ（他の図示されたコンピューティング・ノードと同様に）は、他のクライアントへ提供される他のコンピュータ・ネットワークに現在専用であることができる、提供されたコンピュータ・ネットワークへ現在割り当てられずコンピュート・サービス・プロバイダによる使用のために利用可能であることができる、及び／またはまた同じ特定の提供された仮想コンピュータ・ネットワークの部分であってもよい。つぎに特定の提供された仮想コンピュータ・ネットワークの部分である仮想マシン・コンピューティング・ノード３０７ａ上のクライアントのために実行するプログラムは、その宛先仮想マシン・コンピューティング・ノード３０７ｄへ割り当てられるその提供された仮想コンピュータ・ネットワーク用の仮想ネットワーク・アドレスを指定することなどにより、特定の提供された仮想コンピュータ・ネットワークの仮想マシン・コンピューティング・ノード３０７ｄへ発信通信（図示せず）を送信することができる。ノード通信マネージャ・モジュール３０９ａは、この発信通信を受信し、少なくともいくつかの実施形態において、仮想マシン・コンピューティング・ノード３０７ａを送信することについて及び／または宛先仮想マシン・コンピューティング・ノード３０７ｄについて以前に設定された情報に基づき、及び／またはシステム・マネージャ・モジュール３１０と動的にインタラクトする（たとえば、承認決定を取得するため、一部またはすべてのこのような情報を取得するためなど）ことなどにより、発信通信の送信を承認するかどうかを判定する。
【００６９】
ノード通信マネージャ・モジュール３０９ａが発信通信を承認することを決定する（またはこのような承認決定を実行しない）場合に、モジュール３０９ａは、この通信用の宛先仮想ネットワーク・アドレスに対応する実際の物理サブストレート・ネットワーク位置を決定する。この実施例において、相互接続ネットワークは、１Ｐｖ６を使用して相互接続ネットワークを介して接続されたコンピューティング・ノード用の実際のネットワーク・アドレスを表し、モジュール３０９ａは、発信通信のヘッダを書き換えて、実際の１Ｐｖ６サブストレート・ネットワーク・アドレスを使用してノード通信マネージャ・モジュール３０９ｄへこの発信通信を送信する。ノード通信マネージャ・モジュール３０９ａは、実際の１Ｐｖ６宛先ネットワーク・アドレスを決定し、たとえば、システム・マネージャ・モジュール３１０と動的にインタラクトすることで宛先仮想コンピューティング・ノード３０７ｄの仮想ネットワーク・アドレスのために使用することができる、またはその情報を先に決定し格納することができる（たとえば、アドレス解決プロトコルを使用する要求またはＡＲＰのような、その宛先仮想ネットワーク・アドレスについての情報のために仮想マシン・コンピューティング・ノード３０７ａを送信することから事前の要求に応答して）。この実施例において、使用される実際の１Ｐｖ６宛先ネットワーク・アドレスは、仮想宛先ネットワーク・アドレス及び追加情報を埋め込み、カプセル化せずにオーバーレイ・ネットワーク経由で通信を送信する。
【００７０】
ノード通信マネージャ・モジュール３０９ｄが相互接続ネットワーク３２０を介して通信を受信するときに、それは、実際の１Ｐｖ６宛先ネットワーク・アドレスから仮想宛先ネットワーク・アドレス及び追加情報を抽出し、通信を送信する仮想マシン・コンピューティング・ノード３０７ｄのこれに決定する。つぎにノード通信マネージャ・モジュール３０９ｄは、実際の１Ｐｖ６ソース・ネットワーク・アドレスから仮想ソース・ネットワーク・アドレス及び追加情報を抽出すること、ならびにその仮想ソース・ネットワーク・アドレスを含むコンピューティング・ノードがこの通信（この実施例において、ノード通信マネージャ・モジュール３０９ａ）を転送したノード通信マネージャ・モジュールにより実際に管理されることを確認することなどにより、この通信を宛先仮想マシン・コンピューティング・ノード３０７ｄのために承認するかどうかを任意選択で判定し、悪意のある送信者によるソース・ネットワーク・アドレスのなりすましを防ぐ。この通信を承認すると決定する（またはノード通信マネージャ・モジュール３０９ｄがこのような承認決定を実行しない）場合に、つぎにモジュール３０９ｄは、着信通信のヘッダを書き換え、ソース・ネットワーク・アドレスとして仮想マシン・コンピューティング・ノードの仮想ネットワーク・アドレスを送信することを使用することで、及び宛先ネットワーク・アドレスとして宛先仮想マシン・コンピューティング・ノードの仮想ネットワーク・アドレスを使用することなどにより、仮想ネットワーク用の適切な１Ｐｖ４ネットワーク・アドレスを使用して宛先仮想マシン・コンピューティング・ノード３０７ｄへ着信通信を送信する。
【００７１】
着信通信のヘッダを書き換えた後に、つぎにモジュール３０９ｄは、宛先仮想マシン・コンピューティング・ノードへ変更された通信を転送する。少なくともいくつかの実施形態において、着信通信を宛先仮想マシンへ転送する前に、またモジュール３０９ｄは、セキュリティに関連した追加のステップを実行することができる。たとえば、モジュール３０９ｄは、仮想マシン・コンピューティング・ノードを送信することを承認して宛先仮想マシンと通信する（たとえば、同じ顧客または他のエンティティと関連する、コンピューティング・ノードを承認して相互通信する異なるエンティティと関連するなど、同じ仮想ネットワーク及び／またはその提供された仮想ネットワークのために指定されたネットワーク・アクセス制約情報に属していることに基づき）こと、及び／または着信通信がモジュール３０９ｄにより事前に取得された情報に基づき、またはシステム・マネージャ・モジュール３１０とインタラクトすることに基づくなど、許可されたタイプのものであることを検証することができる。
【００７２】
仮想マシン・コンピューティング・ノード３０７ａを送信することがデータ・センタ３００の外部の１つ以上の意図された宛先コンピューティング・システムへ発信通信（図示せず）を代わりに（またはこれに加えて）送信する場合に、ノード通信マネージャ・モジュール３０９ａは、同様の方式で発信通信を受信して処理する。意図された外部宛先コンピューティング・システムは、たとえば、同じ特定の提供された仮想コンピュータ・ネットワークの部分である（たとえば、特定の提供されたコンピュータ・ネットワークが拡張であるリモート仮想クライアント・コンピュータ・ネットワーク上で、またはコンピュート・サービス・プロバイダによりまた使用されて特定の仮想コンピュータ・ネットワークの一部を提供する別のデータ・センタ３６０で）別のコンピューティング・ノード、リモート・リソース・サービスのコンピューティング・システム、インターネット上で公的にアクセス可能なコンピューティング・システムなどであってもよい。少なくともいくつかの実施形態及び状況において、モジュール３０９ａは、発信通信の送信を承認するかどうかを最初に判定することができ、このような場合に、通信用の宛先ネットワーク・アドレスに対応する実際の物理サブストレート・ネットワーク位置を決定する。この実施例において、決定された物理サブストレート・ネットワーク位置は、モジュール３７０がノード通信マネージャ・モジュールにその他の方法で割り当てられないすべての仮想及び／または実際のネットワーク・アドレスと関連するような場合などに、外部通信マネージャ・モジュール３７０に対応する。モジュール３７０が相互接続ネットワーク３２０を介して通信を受信するときに、それは受信した通信から宛先ネットワーク・アドレス及び追加情報を同様に抽出し、この通信を転送するかどうか及びこのことをする方法を判定し、意図された宛先のための通信を承認するかどうかを任意選択で判定することを備える。通信を承認することを決定する（またはモジュール３７０がこのような承認決定を実行しない）場合に、つぎにモジュール３７０は、着信通信のヘッダを書き換えて、適切な１Ｐｖ４パブリック・ネットワーク・アドレス（またはパブリック・ネットワーク３３５に適切な他のネットワーク・アドレス）を使用して、この着信通信を宛先に送信し、つぎにパブリック・ネットワーク３３５経由で変更された通信を転送する。
【００７３】
このようにして、上述したように、外部通信マネージャ・モジュール３７０は、これらのリモート・リソース・サービスのために設定されたアクセス機構を介してリモート・リソース・サービスへ送信された発信通信を含む、図示された実施形態において提供されたコンピュータ・ネットワークからの発信通信を処理する。特定の提供されたコンピュータ・ネットワーク用に設定されたアクセス機構を介してリモート・リソース・サービスへこの発信通信を送信している場合に、モジュール３７０及び／または送信するコンピューティング・ノードの関連したノード通信マネージャ・モジュールは、少なくともいくつかの実施形態及び状況において動作をさらに行うことができる。たとえば、特定の提供された仮想コンピュータ・ネットワークは、そのリモート・リソース・サービスの特定のネームスペースにマッピングされる特定のリモート・リソース・サービス（たとえば、コンピューティング・システム３４５ｂのうちの１つ以上を介して、または別のデータ・センタ３６０で１つ以上のコンピューティング・システムを介して提供されたリモート・リソース・サービス）のために設定されたアクセス機構を有することができ、仮想マシン・コンピューティング・ノード３０７ａを送信することは、その設定されたアクセス機構を介して通信を送信することができる。特定の提供されたコンピュータ・ネットワーク用のそのリモート・リソース・サービスへ設定されたアクセス機構は、たとえば、その設定されたアクセス機構を表すために割り当てられる特定の提供されたコンピュータ・ネットワークの仮想ネットワーク・アドレスであってもよく、このような場合に、その割り当てられた仮想ネットワーク・アドレスは、モジュール３７０と関連し、発信通信をモジュール３７０に送信させることができる。
【００７４】
このような発信通信をパブリック・ネットワーク３３５を介してリモート・リソース・サービスへ転送する前に、モジュール３７０は、参照する発信通信を変更するために、またはその他の方法でアクセス機構が対応する特定のネームスペースを使用するためなどに、使用されたアクセス機構用の設定を反映するさまざまな動作を行うことができる。このような状況において、モジュール３７０は、ローカルに設定情報を格納することで、システム・マネージャ・モジュール３１０に接触して設定情報を取得することなどによるような、さまざまな方式でアクセス機構用のネームスペース及び他の設定情報を決定することができる。加えて、モジュール３７０は、コンピュート・サービス・プロバイダへ事前に提供された対応する設定情報（たとえば、ネームスペースを示す１つ以上の特定のメッセージ・パラメータの表示、ネームスペース識別子を任意選択で含むことができるネームまたは参照リソースに使用された１つ以上の特定のメッセージ・パラメータの表示、ネームスペースを示すことが可能である、またはその他の方法でネームスペース情報を使用するメッセージ・タイプの表示など）を含むリモート・リソース・サービスなどにより、さまざまな方式で特定のネームスペースを使用して通信を変更する方法及びこれらを変更するときを判定することができる。
【００７５】
１つの特定の例示的な実施例として、リモート・リソース・サービスは、データ・ストレージ・サービスを提供することができ、発信通信は、特定のストレージ関連のリソースにアクセスする（たとえば、格納されたオブジェクトまたは他のグループの格納されたデータを取得する）要求であってもよい。このような場合に、特定のストレージ・リソースは、提供されたコンピュータ・ネットワークの外部の（たとえば、クライアントのリモート・プライベート・コンピュータ・ネットワーク上の）コンピューティング・システムを使用することなどにより、クライアントにより画定されたネームスペースの部分としてクライアントにより事前に作成されていることができる。その同じネームスペースを使用するように特定の提供されたコンピュータ・ネットワーク用のアクセス機構を設定することで、提供されたコンピュータ・ネットワークのコンピューティング・ノードは、クライアントの既存の格納されたリソースにアクセスしてこれを使用することができる。例示的な実施例として、クライアントのリモート・プライベート・コンピュータ・ネットワークが企業ネットワークである場合に、クライアントは、第一ネームスペースに細心の注意を要する人的リソースを格納するため、第二ネームスペースに制限されたソフトウェア開発ソフトウェア及び他のデータを格納するため、ならびに第三ネームスペースを介して企業全体に一般的に利用可能である他の企業データを格納するためなど、異なるタイプのデータを格納するために異なるネームスペースを使用することができる。
【００７６】
コンピュート・サービス・プロバイダの提供されたコンピュータ・ネットワークを特定の１サブセットの企業（たとえば、人事担当者）のみが使用する場合に、特定の提供されたコンピュータ・ネットワークのためのリモート・リソース・サービスへのアクセス機構は、細心の注意を要する人的リソース・データ用の第一ネームスペースを使用するように設定されることができる。さらに、特定の提供されたコンピュータ・ネットワークは、一般的に利用可能な企業データ用の第三ネームスペースを使用するためなど、リモート・リソース・サービス（たとえば、提供されたコンピュータ・ネットワークの異なる割り当てられた仮想ネットワーク・アドレスを使用して）に設定された第二アクセス機構を任意選択で有することができ、特定の提供されたコンピュータ・ネットワークのコンピューティング・ノードは、特定の提供されたコンピュータ・ネットワークの異なるローカル仮想ネットワーク・アドレスとインタラクトして、異なるグループのリソースへのアクセス権を取得することができる。
【００７７】
別の例示的な実施例として、特定の提供されたコンピュータ・ネットワーク用のリモート・リソース・サービスへのアクセス機構は、特定の提供されたコンピュータ・ネットワークのコンピューティング・ノードのみがこれらのコンピューティング・ノードにより作成され使用されるストレージ・リソースへのアクセス権を有することを可能にするように代わりに設定されることができる。このような場合に、コンピュート・サービス・プロバイダは、新規のネームスペースを自動的に生成する（たとえば、特定の提供されたコンピュータ・ネットワークのコンピューティング・ノードへその情報を提供しないで）こと、または設定情報を有するクライアントにより示される新規のネームスペースを使用することなどにより、特定の提供されたコンピュータ・ネットワークで使用する新規のネームスペースを決定することができ、この新規のネームスペースを使用するようにアクセス機構を設定することができる。さらにコンピュート・サービス・プロバイダまたは特定の提供されたコンピュータ・ネットワークのコンピューティング・ノードは、リモート・リソース・サービスに依存している、リモート・リソース・サービス内に新規のネームスペースを作成する最初の動作を行う必要がある可能性がある。新規のネームスペースが利用可能であると、特定の提供されたコンピュータ・ネットワークのコンピューティング・ノードは、設定されたアクセス機構を同様に使用して、リモート・リソース・サービスとインタラクトし、新規のネームスペースの部分である新規の格納されたリソースを作成してこのように格納されたリソースにアクセスすることができ、外部通信マネージャ・モジュール３７０は、新規のネームスペースを使用するように適切に発信通信を同様に変更する。
【００７８】
特定のリモート・リソース・サービス内の特定のネームスペースに対応する設定されたアクセス機構を実現するように設定されることに加えて、またはこのことの代わりに、外部通信マネージャ・モジュール３７０は、いくつかの実施形態において、そのアクセス機構を介してそのリモート・リソース・サービスへ送信された一部またはすべての通信のためのアクセス制御に関連した１つ以上の追加のインジケータを含むように設定されることができ、仮想マシン・コンピューティング・ノード３０７ａを送信することは、その設定されたアクセス機構を介する通信のように送信することができる。パブリック・ネットワーク３３５を介してこのような発信通信をリモート・リソース・サービスへ転送する前に、モジュール３７０は、リモート・リソース・サービスに固有の方式で通信のヘッダ及び／または本体を変更することなどにより、アクセス機構が対応する１つ以上の追加のインジケータを含むように、発信通信を変更することなどにより、使用されたアクセス機構のための設定を反映するさまざまな動作を行うことができる（たとえば、リモート・リソース・サービスは、仮想マシン・コンピューティング・ノード３０７ａを送信することにより指定された任意のインジケータの代わりであろうと、またはこれに加えてであろうと、１つ以上のアクセス制御インジケータのクライアント仕様がリモート・リソース・サービスにより支援された方式で１つ以上の追加のインジケータを含むことを可能にする場合に）。このような状況において、モジュール３７０は、ローカルに情報を格納すること、システム・マネージャ・モジュール３１０に接触して情報を取得することなどによるような、さまざまな方式でアクセス機構用の追加のインジケータ（複数を含む）を決定することができる。加えて、モジュール３７０は、コンピュート・サービス・プロバイダへ事前に提供された対応する設定情報（たとえば、このようなアクセス制御インジケータを示す１つ以上の特定のメッセージ・パラメータの表示、１つ以上のこのようなアクセス制御インジケータを任意選択で含むことができる、リソースにアクセスするために使用された１つ以上の特定のメッセージ・パラメータの表示、１つ以上のこのようなアクセス制御インジケータを指定することが可能である、またはその他の方法でこのようなアクセス制御インジケータを使用するメッセージ・タイプの表示など）を含むリモート・リソース・サービスによるような、さまざまな方式で特定の追加のインジケータ（複数を含む）を使用するように通信を変更する方法及びこれを変更するときを決定することができる。
【００７９】
設定されたアクセス機構を有するネームスペース情報の使用について事前に考察された実施例と同様な方式で、リモート・リソース・サービスは、データ・ストレージ・サービスを提供することができ、発信通信は、特定のストレージ関連のリソースにアクセスする（たとえば、格納されたオブジェクトまたは他のグループの格納されたデータを取得する）要求であってもよい。このような場合に、特定のストレージ・リソースは、送信する仮想マシン・コンピューティング・ノード３０７ａが所属する提供されたコンピュータ・ネットワークのコンピューティング・ノードのうちの１つにより事前に作成されていることができる、または現在の通信の部分として新規に作成またはアクセスされていることができる。いくつかの実施形態において、さらにコンピュート・サービス・プロバイダは、リモート・リソース・サービスに依存している、リモート・リソース・サービス内での使用のために１つ以上の追加のインジケータを指定する（たとえば、それらを定義する）最初の動作を行う必要がある可能性がある。送信する仮想マシン・コンピューティング・ノード３０７ａ及び関連したクライアントは、追加のインジケータ（複数を含む）の使用に気付かない可能性があるが、外部通信マネージャ・モジュール３７０は、関連したインジケータ（複数を含む）に適切な発信通信をそれでも変更する。
【００８０】
さらに、上述したように、外部通信マネージャ・モジュール３７０は、特定のリモート・コンピュータ・ネットワークへ設定されたＶＰＮ接続を介して送信された発信通信のような、提供されたコンピュータ・ネットワーク拡張から拡張が対応するリモート・コンピュータ・ネットワークへである図示された実施形態で発信通信を処理する。少なくともいくつかの実施形態において、コンピュート・サービス・プロバイダは、ＶＰＮ接続を確立する際にクライアントによる使用のために遠隔位置へ適切なハードウェア・デバイス、ソフトウェア及び／または設定情報を配信させるように、データ・センタ３００へ遠隔の位置からデータ・センタ３００でクライアントのために提供されたコンピュータ・ネットワークへのこのようなＶＰＮ接続の確立をクライアントがプログラムで開始することを可能にするリモート・アクセス確立ＡＰＩを提供する。たとえば、コンピューティング・システム３４５ｂのうちの１つは、このようなハードウェア・デバイス及び／またはソフトウェアを販売またはその他の方法で提供するオンライン小売店に対応することができ、このような場合にコンピュート・サービス・プロバイダは、この小売店が提供する別々のＡＰＩを使用して、クライアントに対応する遠隔位置または他の指定された位置への配信用のこのようなハードウェア・デバイス及び／またはソフトウェアを注文することができる（たとえば、クライアント用のコンピュート・サービス・プロバイダが事前に格納する情報に基づく、クライアントのためにこの小売店が事前に格納する情報に基づくなど、コンピュート・サービス・プロバイダの提供されたＡＰＩを呼び出す部分としてクライアントが指定するように）。このようなＶＰＮ接続または他の安全な接続を確立してクライアントが提供されたコンピュータ・ネットワークへのリモート・アクセス権を有することを可能にすると、さらにモジュール３７０は、安全な接続が対応する遠隔位置に１つ以上の宛先コンピューティング・システムのために意図される発信通信を送信するために安全な接続を使用することでなどにより、安全な接続を支援する動作を行うことができる。
【００８１】
このようにして、図３に関して上述されたように、少なくともいくつかの実施形態において、コンピュート・サービス・プロバイダは、コンピュート・サービス・プロバイダのさまざまなノード通信マネージャ・モジュール及びコンピュート・サービス・プロバイダの１つ以上の外部通信マネージャ・モジュールを使用するような、下層サブストレート・ネットワークを使用してオーバーレイ・ネットワークとしてそれらを実現することでクライアントへ仮想コンピュータ・ネットワークを提供する。少なくともいくつかの実施形態において、さらに１つ以上のシステム・マネージャ・モジュールは、どのコンピューティング・ノードがどの提供された仮想ネットワークに属するかを追跡及び／または管理することで、ならびに特定の仮想ネットワークのために使用された（たとえば、特定の顧客または他のエンティティにより）仮想ネットワーク・アドレスに対応する実際の物理サブストレート・ネットワーク・アドレスについての情報を提供することなどにより、コンピューティング・ノード間の通信を設定することを容易にすることができる。加えて、システム・マネージャ・モジュールは、対象の物理コンピューティング・システム上の仮想マシン・コンピューティング・ノードの表示及び仮想マシンが関連する提供された仮想ネットワークの表示を受信し、つぎに仮想ネットワークと仮想マシンを関連付けるために対象の物理コンピューティング・システム用の仮想マシン・ノード通信マネージャ・モジュールの設定を開始することができる、またはノード通信マネージャ・モジュールは、その設定を代わりに開始することができる（たとえば、仮想マシンが通信を最初に開始または受信するときに）。
【００８２】
少なくともいくつかの実施形態において、承認されない通信の検出及び／または防止は、先に述べたように仮想ネットワークをオーバーレイする１つ以上の仲介サブストレート・ネットワークのトポロジに少なくとも部分的に基づくことができる。このような実施形態において、サブストレート・ネットワーク経由での通信用のこのようなコンピューティング・ノードのために使用された物理ネットワーク・アドレスは、コンピューティング・ノードの仮想ネットワーク・アドレスの表示を含み、コンピューティング・ノードの関連したノード通信マネージャ・モジュール（たとえば、サブネットワークまたはノード通信マネージャ・モジュールが通信を管理するサブストレート・ネットワークの他の部分）の位置に対応するサブストレート・ネットワークのためのパーシャル・ネットワーク・アドレスを含む。このようにして、悪意のあるユーザに対して仮想ネットワークの部分であるコンピューティング・ノード用の有効な物理ネットワーク・アドレスを正確に構築するために、悪意のあるユーザは、コンピューティング・ノードが属している仮想ネットワークについての情報へのアクセス権を得る必要があり、関連したノード通信マネージャ・モジュール用のパーシャル・ネットワーク・アドレスを決定するためにコンピューティング・ノードの物理サブストレート・ネットワーク位置のトポロジについての情報へのアクセス権を得る必要があり、物理ネットワーク・アドレスを構築するその情報を使用する方法を判定する必要がある。
【００８３】
構築された物理ネットワーク・アドレスの有効性は、構築された物理ネットワーク・アドレス内に埋め込まれた仮想アドレスが対応するコンピューティング・ノードを識別すること、及びその識別されたコンピューティング・ノードの位置がパーシャル・ネットワーク・アドレスに対応するサブストレート・ネットワークの部分内のコンピューティング・ノードのうちの１つ（たとえば、パーシャル・ネットワーク・アドレスが対応するノード通信マネージャ・モジュールにより管理されたコンピューティング・ノードのうちの１つ）に対応することを検証することなどにより、さまざまな方式で確認されることができる。加えて、構築された物理ネットワーク・アドレスの有効性は、宛先コンピューティング・ノード（たとえば、ソース物理ネットワーク・アドレスが有効であることを検証する）のために意図された着信通信を受信するノード通信マネージャ・モジュールによる、示されて管理されたコンピューティング・ノードの代わりにノード通信マネージャ・モジュールからとされるメッセージ（たとえば、関心の意図された宛先コンピューティング・ノードのための物理ネットワーク・アドレスを要求するメッセージ）を受信するマネージャ・モジュールによるなどのような、さまざまな時間に確認されることができる。
【００８４】
図４は、本開示の例示的な実施形態に従い、アプリケーション移行サービスを使用してマルチテナント環境で動作する複数の仮想マシン・インスタンスを示す例示的なシステム図である。さらに特に、図４は、本明細書で記述された実施形態を使用可能な１つの環境を図示するネットワーク・ベースのコンピュート・サービス・プロバイダ４００のコンピューティング・システム図である。背景として、コンピュート・サービス・プロバイダ４００（すなわち、クラウド・プロバイダ）は、最後の受信者のコミュニティ（たとえば、テナントまたは顧客）へのサービスとしてコンピューティング能力及びストレージ容量を配信できる。
【００８５】
例示的な実施形態において、コンピュート・サービス・プロバイダ４００は、組織によりまたはこれの代わりにこの組織のために確立されることが可能である。すなわち、コンピュート・サービス・プロバイダ４００は、「プライベート・クラウド環境」を提示することができる。別の実施形態において、コンピュート・サービス・プロバイダ４００は、複数の顧客が独立して操作する、マルチテナント環境（すなわち、パブリック・クラウド環境）を支援する。この点について、複数の顧客（たとえば、複数の企業）は、マルチテナント環境内の、サーバ・コンピュータのような、リソースを借りることが可能である。
【００８６】
一般的に言えば、コンピュート・サービス・プロバイダ４００は、つぎのモデル、サービスとしてのインフラストラクチャ（「ＩａａＳ」）、サービスとしてのプラットフォーム（「ＰａａＳ」）、及び／またはサービスとしてのソフトウェア（「ＳａａＳ」）を提供することが可能である。他のモデルを提供することが可能である。ＩａａＳモデルについては、コンピュート・サービス・プロバイダ４００は、物理または仮想マシン及び他のリソースとしてコンピュータを提供することが可能である。ハイパーバイザは、さらに以下で記載されるように、仮想マシンをゲストとして実行することが可能である。ＰａａＳモデルは、オペレーティング・システム、プログラミング言語実行環境、データベース、及びウェブ・サーバを含むことが可能なコンピューティング・プラットフォームを配信する。アプリケーション開発者は、下層・ハードウェア及びソフトウェアを購入するコスト及びこれを管理するコストなしでコンピュート・サービス・プロバイダ・プラットフォーム上で彼らのソフトウェア・ソリューションを開発及び実行することが可能である。ＳａａＳモデルは、コンピュート・サービス・プロバイダ内のアプリケーション・ソフトウェアのインストール及び操作を許可する。いくつかの実施形態において、エンド・ユーザは、ウェブ・ブラウザまたは他の軽量な顧客アプリケーションを実行する、デスクトップ・コンピュータ、ラップトップ、タブレット、スマートフォン、などのようなネットワーク接続された顧客デバイスを使用してコンピュート・サービス・プロバイダ４００にアクセスする。当業者は、コンピュート・サービス・プロバイダ４００を「クラウド」環境として記述可能であることを認識するであろう。
【００８７】
特定の図示されたコンピュート・サービス・プロバイダ４００は、複数のサーバ・コンピュータ４０２Ａ〜４０２Ｄを含む。４つのサーバ・コンピュータのみを示すが、任意の数を使用可能であり、大規模なセンタは、数千のサーバ・コンピュータを含むことが可能である。サーバ・コンピュータ４０２Ａ〜４０２Ｄは、ソフトウェア・インスタンス４０６Ａ〜４０６Ｄを実行するためのコンピューティング・リソースを提供することが可能である。１つの実施形態において、インスタンス４０６Ａ〜４０６Ｄは、仮想マシンである。当該技術分野において知られているように、仮想マシンは、物理マシンのようにアプリケーションを実行するマシン（すなわち、コンピュータ）のソフトウェア実装のインスタンスである。この実施例において、各サーバ・コンピュータ４０２Ａ〜４０２Ｄは、ハイパーバイザ４０８、または単一のサーバ上の複数のインスタンス４０６の実行を有効にするように設定された別のタイプのプログラムを実行するように設定されることが可能である。たとえば、各サーバ４０２Ａ〜４０２Ｄは、各仮想マシン・パーティションが仮想マシン・インスタンスを実行可能でありながら、１つ以上の仮想マシン・パーティションを支援するように設定される（たとえば、ハイパーバイザ４０８を介して）ことが可能である（たとえば、サーバ・コンピュータ４０２Ａが対応する仮想マシン・インスタンスを各々実行する３つの仮想マシン・パーティションを支援するように設定されることが可能である）。加えて、各インスタンス４０６は、１つ以上のアプリケーションを実行するように設定されることが可能である。
【００８８】
例示的な実施形態において、また各サーバ・コンピュータ４０２Ａ〜４０２Ｄは、アプリケーション移行サービス部（ＡＭＳ）（たとえば、４４０Ａ〜４４０Ｄ）及び性能メトリック・モジュール（たとえば、４４１Ａ〜４４１Ｄ）を備えることができる。アプリケーション移行サービス部４４０Ａ〜４４０Ｄは、図１を参照して記述されたアプリケーション移行サービス部１４０ａと同様の機能性を有することができる。加えて、性能メトリック・モジュール４４１Ａ〜４４１Ｄは、アプリケーション移行サービス部がエンタープライズ・ベース・ネットワークからコンピュート・サービス・プロバイダ４００のクラウド・ネットワークへアプリケーション（及び関連した仮想マシン・インスタンス）を移行するときに、ＶＭＩタイプ及びホスト・サーバ・タイプを判定する目的のために対応するホスト（４０２Ａ〜４０２Ｄ）用の性能メトリックを提供することができる。性能メトリック・モジュール４４１Ａ〜４４１Ｄは、図１の性能メトリック・モジュール１３９に類似する機能性を有する。
【００８９】
またコンピュート・サービス・プロバイダ４００は、アプリケーション移行サービス部４４０を備えることができる。アプリケーション移行サービス部４４０は、適切な回路、ロジック、及び／またはコードを含むことができ、リソース監視メトリック、依存性情報、及びプライベート・サブネット情報を使用してエンタープライズ・ベース・ネットワーク（すなわち、プライベート・クライアント・ネットワーク）からコンピュート・サービス・プロバイダのクラウド・ネットワークへアプリケーションを移行することを備える、本明細書で記述された機能性（たとえば、図１〜３を参照して記述されたアプリケーション移行サービス部１４０ａの機能性に類似する）を実行するように操作可能であることができる。アプリケーション移行サービス部４４０は、専用サーバ（サーバ４０２Ａ〜４０２Ｄに類似する）として、プロバイダ４００内のスタンドアロン・サービスとして実装されることができる、及び／または管理機能を実行するサーバ・コンピュータ４０４の部分として（または上記で説明されるように、個々のサーバ・コンピュータ４０２Ａ〜４０２Ｄの部分として）実装されることができる。たとえば、アプリケーション移行サービス部４４０は、サーバのオペレーティング・システム上で動作するソフトウェア・アプリケーションとして（たとえば、管理コンポーネント４１０（図５で示されるような）の部分として）実装されることができる。
【００９０】
本明細書で開示された実施形態を仮想マシンのコンテキストで主に記述するが、本明細書で開示された概念及び技術で他のタイプのインスタンスを利用可能であることを理解するべきである。たとえば、本明細書で開示された技術は、ストレージ・リソース、データ通信リソース、及び他のタイプのコンピューティング・リソースで利用可能である。また本明細書で開示された実施形態は、仮想マシン・インスタンスを利用しないでコンピュータ・システム上で直接アプリケーションのすべてまたは一部を実行することができる。
【００９１】
１つ以上のサーバ・コンピュータ４０４は、ソフトウェア・コンポーネントを実行して、サーバ・コンピュータ４０２、インスタンス４０６、ハイパーバイザ４０８、及び／またはアプリケーション移行サービス４４０の操作を管理するために予約されることが可能である。たとえば、サーバ・コンピュータ４０４は、管理コンポーネント４１０を実行することが可能である。顧客は、管理コンポーネント４１０にアクセスし、顧客が購入したインスタンス４０６の操作のさまざまな態様を設定することが可能である。たとえば、顧客は、インスタンスを購入、賃借またはリースし、インスタンスの設定に変更を行うことが可能である。また顧客は、購入したインスタンスを要求に応じてスケーリングする方法について設定を指定することが可能である。さらに管理コンポーネント４１０は、アプリケーション移行サービス４４０に関連したポリシーのような、顧客ポリシーを実装するポリシー・ドキュメント（たとえば、図５の５６４）を含むことが可能である。
【００９２】
さらにサーバ・コンピュータ４０４は、アプリケーション移行サービス４４０により処理メモリとして使用されることができる、メモリ４５２を含むことができる。オート・スケーリング・コンポーネント４１２は、顧客が定義したルールに基づきインスタンス４０６をスケーリングすることが可能である。１つの実施形態において、オート・スケーリング・コンポーネント４１２は、新規のインスタンスをインスタンス化するときを決定する際の使用のためのスケールアップ・ルール、及び既存のインスタンスを終了するときを決定する際の使用のためのスケールダウン・ルールを顧客が指定することを可能にする。オート・スケーリング・コンポーネント４１２は、異なるサーバ・コンピュータ４０２上で実行する複数のサブコンポーネントまたは他のコンピューティング・デバイスからなることが可能である。オート・スケーリング・コンポーネント４１２は、内部管理ネットワーク経由で利用可能なコンピューティング・リソースを監視して必要性に基づき利用可能なリソースを変更することが可能である。
【００９３】
展開コンポーネント４１４は、コンピューティング・リソースの新規のインスタンス４０６の展開で顧客を支援するために使用されることが可能である。この展開コンポーネントは、アカウントの所有者、クレジット・カード情報、所有者の出身国などのような、インスタンスと関連したアカウント情報へのアクセスを有することが可能である。展開コンポーネント４１４は、新規のインスタンス４０６を設定する方法を記述するデータを含む顧客からの設定を受信することが可能である。たとえば、この設定は、新規のインスタンス４０６にインストールされる１つ以上のアプリケーションを指定する、新規のインスタンス４０６を設定するために実行されるスクリプト及び／または他のタイプのコードを提供する、アプリケーション・キャッシュを用意する方法を指定するキャッシュ・ロジック、及び他のタイプの情報を提供することが可能である。展開コンポーネント４１４は、顧客が提供した設定及びキャッシュ・ロジックを利用して、新規のインスタンス４０６を設定し、提供し、立ち上げることが可能である。この設定、キャッシュ・ロジック、及び他の情報は、管理コンポーネント４１０を使用して顧客により、または展開コンポーネント４１４へ直接にこの情報を提供することにより指定されることができる。インスタンス・マネージャ（たとえば、図５の５５０）は、展開コンポーネント４１４の部分とみなされることが可能である。
【００９４】
顧客アカウント情報４１５は、マルチテナント環境の顧客と関連した任意の所望の情報を含むことが可能である。たとえば、顧客アカウント情報は、顧客に固有の識別子、顧客アドレス、請求情報、ライセンス情報、インスタンスを立ち上げるためのカスタマイズ・パラメータ、スケジューリング情報、オート・スケーリング・パラメータ、アカウントにアクセスするために使用された以前のＩＰアドレス、及びその他のものを含むことが可能である。
【００９５】
ネットワーク４３０は、サーバ・コンピュータ４０２Ａ〜４０２Ｄ及びサーバ・コンピュータ４０４を相互接続するために利用されることが可能である。ネットワーク４３０は、ローカル・エリア・ネットワーク（ＬＡＮ）であることが可能であり、ワイド・エリア・ネットワーク（ＷＡＮ）４４０に接続されることが可能であるため、エンド・ユーザは、コンピュート・サービス・プロバイダ４００にアクセスすることが可能である。図４で図示されたネットワーク・トポロジが簡素化され、さらに多くのネットワーク及びネットワーキング・デバイスを利用して本明細書で開示されたさまざまなコンピューティング・システムに相互接続することが可能であることを理解するべきである。
【００９６】
さらに図５は、１つの実施形態により１つ以上の仮想マシン・インスタンスを移行するために使用されることができる、制御プレーンと関連した複数の管理コンポーネントを含む例示的なシステムの詳細を示す。さらに特に、図５は、コンピュート・サービス・プロバイダ４００のマルチテナント・ネットワーク内の不連続な移行サービス１４０を実装できる、管理コンポーネント４１０をより詳細に図示する。
【００９７】
インスタンス（図４のインスタンス４０６のような）にアクセスする及びこれらを利用するために、顧客デバイスを使用可能である。顧客デバイス５１０は、携帯電話、スマートフォン、ハンドヘルド・コンピュータ、パーソナル・デジタル・アシスタント（ＰＤＡ）、デスクトップ・コンピュータなどを含む、さまざまなコンピューティング・デバイス、モバイルまたはその他のもののいずれかであることが可能である。顧客デバイス５１０は、アプリケーション・プログラミング・インタフェース（ＡＰＩ）要求を受信して処理するように設計されたＤＮＳアドレスであることが可能である、エンドポイント５１２を介してコンピュート・サービス・プロバイダ４００と通信可能である。特に、エンドポイント５１２は、ＡＰＩを公開するように設定されたウェブ・サーバであることが可能である。ＡＰＩ要求（たとえば、図１の１９０）を使用して、顧客デバイス５１０は、本明細書で記述された機能性のいずれかを実装する要求（たとえば、図１を参照して記述されるような、アプリケーションを移行するために、依存性情報１５５、リソース監視メトリック１６０、及びプライベート・サブネット情報１５０を要求する）を行うことが可能である。コンピュート・サービス・プロバイダ４００の内部にあることが可能である、他のサービス５１５は、エンドポイント５１２に同様のＡＰＩ要求を行うことが可能である。たとえば、顧客デバイス５１０は、アプリケーションを移行することと関連した顧客要求を通信するＡＰＩ要求（たとえば、図１の１９０）を使用できる（たとえば、顧客は、コンピュート・サービス・プロバイダからのリコメンデーションに応じて、アプリケーションを移行するためにＶＭＩ及びホストを選択する目的のためにＶＭＩタイプ及びホスト・サーバ・タイプのリコメンデーションを確認することができ、また顧客は、移行用の特定のタイプのＶＭＩ及びホストの彼ら自身の選択を提供することができる）。クライアント１１４からのＡＰＩ要求（たとえば、１９０）は、アドミッション制御５１４を介して、及びアプリケーション移行サービス４４０上で通過して、ポリシー・ドキュメント５６４にアクセスする、及び／または移行関連のサービスを要求することが可能である。管理ポータル５６６は、顧客またはコンピュート・サービス・プロバイダ３００のいずれかの管理者によりポリシー・ドキュメント５６４にアクセスしてこれへの変更を行うために使用されることが可能である。
【００９８】
ポリシー・ドキュメント５６４は、たとえば、エンタープライズ・ベース・ネットワークからコンピュート・サービス・プロバイダへアプリケーションを移行するときにＶＭＩタイプ及びサーバ・コンピュータ・タイプを選択することに関して１つ以上のポリシーを指定することができる。より詳細には、ポリシー・ドキュメント５６４は、１つ以上のＶＭＩタイプ及び１つ以上のサーバ・アーキテクチャ・タイプ（たとえば、メモリ、ＣＰＵ速度、ディスク・スペースなどに基づき）を指定することができ、利用可能なホスト・サーバ及びＶＭＩのリソース監視メトリック及び性能メトリックのマッチングに基づき自動的に選択されることが可能である、ＶＭＩタイプ及びサーバ・アーキテクチャ・タイプの両方のリコメンデーションを提供することができる。
【００９９】
コンピュート・サービス・プロバイダ４００内に（及び／または管理コンポーネント４１０内に）含まれることができる、または含まれることができない他の一般的な管理サービスは、アドミッション制御５１４、たとえば、アドミッション制御ウェブ・サービスとして共に動作する１つ以上のコンピュータを含む。アドミッション制御５１４は、コンピュート・サービス・プロバイダ４００内のサービスまたはデータ・ストレージのＡＰＩ要求を認証し、有効にし、アンパックすることが可能である。容量トラッカ５１６は、容量の予測、プロビジョニング、ならびにリアルタイム設定及び割り当ての観点から物理的なインベントリを管理及び設定することで、異なるインスタンス・タイプの必要性を満たすためにサーバが設定される必要がある方法を決定するために応答可能である。容量トラッカ５１６は、容量プール・データベース５１８内に利用可能なインベントリのプールを維持する。また容量トラッカ５１６は、容量レベルを監視してリソースが容易に利用可能である、またはこれが制限されているかどうかが分かることが可能である。
【０１００】
インスタンス・マネージャ５５０は、ネットワークでの仮想マシン・インスタンスの立ち上げ及び終了を制御する。インストラクションを受信して（ＡＰＩ要求を介してのような）インスタンスを立ち上げるとき、インスタンス・マネージャ５５０は、容量プール５１８からリソースを移動させてホスト・サーバ・コンピュータ上での決定でインスタンスを立ち上げる。インスタンス・マネージャに類似するのは、ストレージ・マネージャ５２２及びネットワーク・リソース・マネージャ５２４である。ストレージ・マネージャ５２２は、ストレージ・ボリュームの開始及び終了に関し、ネットワーク・リソース・マネージャ５２４は、ルータ、スイッチ、サブネットなどの開始及び終了に関する。パーティション５４０のネットワークは、図６に関してさらに記述され、インスタンスを立ち上げる物理層を含む。
【０１０１】
アプリケーション移行サービス部４４０は、本明細書で記述された（たとえば、１４０ａ及び／または１４０ｂを参照して記述されるような）移行関連の機能性を実行することができる。アプリケーション移行サービス部４４０は、容量トラッカ５１６と通信し、インスタンス（または顧客エンティティにより要求された他のネットワーク・リソース）を移行して立ち上げるために使用されることが可能である、利用可能なパーティション及び／またはホスト・サーバについての情報を受信することができる。加えて、アドミッション制御５１４との通信は、移行されたインスタンスを立ち上げるために使用されることができ、パーティション５４０のネットワークとの通信は、複数のパーティション（たとえば、１つ以上のサーバ・コンピュータ上で動作する複数のＶＭＩを移行する）に影響を与える移行関連の機能性を実行するために使用されることができる。
【０１０２】
図６は、ホスト・コンピュータが本開示の１つの実施形態により設定されることができるアプリケーション移行関連の機能性を有しながら、仮想マシン・インスタンスを実行するために使用されたハードウェア・アセットである、複数のホスト・コンピュータ、ルータ及びスイッチの実施例を示す。さらに特に、図６は、パーティション６４０のネットワーク及びそれらと関連した物理ハードウェアを図示する。パーティション６４０のネットワークは、ルータ６１６のような、ルータにより互いに結合された、データ・センタ６１０ａ、．．．、６１０ｎのような、複数のデータ・センタを含むことが可能である。
【０１０３】
ルータ６１６は、受信したパケットのアドレス情報を読み出し、パケットの宛先を判定する。異なるデータ・センタがホスト・サーバ・コンピュータを含むことをルータが決定した場合に、つぎにそのデータ・センタへパケットを転送する。パケットをデータ・センタ６１０ａ内のホストへアドレス指定する場合に、つぎにパケットのパブリックＩＰアドレスをプライベートＩＰアドレスへ変換する、ネットワーク・アドレス変換器（ＮＡＴ）６１８へこのパケットを伝える。またＮＡＴ６１８は、データ・センタ６１０ａの外側にバインドされるパブリック・アドレスへプライベート・アドレスを変換する。追加のルータ６２０は、ＮＡＴ６１８に連結され、ホスト・サーバ・コンピュータの１つ以上のラック６３０へパケットをルーティングすることが可能である。各ラック６３０は、複数のホスト・サーバ・コンピュータに連結されたスイッチ６３２を含むことが可能である。６４１の拡大図で特定のホスト・サーバ・コンピュータを示す。
【０１０４】
各ホスト６４１は、ネットワーク・インタフェース・カード、１つ以上のＣＰＵ、メモリ、及びその他のもの（図６で図示せず）を含むことができる、下層・ハードウェア６５０を含む。ハードウェア６５０上の１層を実行するのは、ハイパーバイザまたはカーネル層６６０である。ハイパーバイザまたはカーネル層６６０は、タイプ１またはタイプ２のハイパーバイザとして分類されることが可能である。タイプ１のハイパーバイザは、ホスト・ハードウェア６５０上で直接動作し、ハードウェアを制御してゲスト・オペレーティング・システムを管理する。タイプ２のハイパーバイザは、従来のオペレーティング・システム環境内で動作する。このようにして、タイプ２の環境で、ハイパーバイザは、オペレーティング・システム上で動作する別個の層であることが可能であり、このオペレーティング・システムは、システム・ハードウェアとインタラクトする。異なるタイプのハイパーバイザは、Ｘｅｎベース、Ｈｙｐｅｒ−Ｖ、ＥＳＸｉ／ＥＳＸ、リナックスなどを含むが、他のハイパーバイザは、また使用されることが可能である。
【０１０５】
管理層６７０は、ハイパーバイザの部分である、またはそれらから分離されることが可能であり、一般にハードウェア６５０にアクセスするために必要なデバイス・ドライバを含む。パーティション６８０は、ハイパーバイザによる隔離の論理ユニットである。各パーティション６８０は、ハードウェア層のメモリ、ＣＰＵ割り当て、ストレージなどのそれ自体の部分を割り当てられることが可能である。加えて、各パーティションは、仮想マシン及びそれ自体のゲスト・オペレーティング・システム（たとえば、ＶＭＩ１がパーティション１上で動作していることができ、ＶＭＩｎがパーティションｎ上で動作していることができる）を含むことが可能である。このような場合に、各パーティション６８０は、他のパーティションから独立してそれ自体の仮想マシンを支援するように設計された容量の抽象的な部分である。
【０１０６】
加えて、仮想マシン・インスタンス（たとえば、ＶＭＩ１）を移行する（たとえば、コンピューティング・システム３４５ａのクライアント・プライベート・ネットワーク３４０内のホスト・サーバ３９０からコンピュート・サービス・プロバイダのデータ・センタ３００内のホスト・サーバ３０５ｂへ）ときに、新規に立ち上げられたＶＭＩ１は、コンピューティング・システム３４５ａの前のＶＭＩ１のために使用されたものと同じパブリック及びプライベートＩＰアドレスと関連する。これは、ＮＡＴ６１８の拡大図６４３で図示される。６４３でわかるように、各ＶＭＩがデータ・センタ６１０ａで立ち上げられたとしても、その後、アプリケーション／ＶＭＩ移行（またはデータ・センタ６１０ａ内のＶＭＩを実行する各サーバ）は、移行されたエンタープライズ・ベース・ネットワークＶＭＩのパブリック／プライベートＩＰアドレスと同じである、パブリックＩＰアドレス（ＩＰ１、．．．、ＩＰｎ）及びプライベートＩＰアドレス（ＰＩＰ１、．．．、ＰＩＰｎ）と関連する。加えて、またルーティング情報（すなわち、ＶＭＩをホストする特定のサーバ・コンピュータ用のルーティング情報）は、別のままであってもよい（たとえば、ルーティング情報「ルーティング１」がＶＭＩ１と関連し、ルーティング情報「ルーティングｎ」がＶＭＩｎと関連する）。
【０１０７】
図７は、本開示の実施形態に従い、エンタープライズ・ベース・ネットワークからコンピュート・サービス・プロバイダのマルチテナント・ネットワークへアプリケーションを移行する例示的な方法のフローチャートである。図１〜３及び７を参照して、第一仮想マシン・インスタンス上で動作するアプリケーションを移行する要求をエンタープライズ・ベース・ネットワーク内で受信できるときに、例示的な方法７００は、７０２で開始することができる。たとえば、ユーザは、インタフェース１２２を使用して、アプリケーション・ネーム（たとえば、アプリケーション１８５のネーム）を指定することができ、ソフトウェア・ボタン１２２ｂをアクティブ化することで移行を開始することができる。
【０１０８】
７０４で、アプリケーションの依存性は、エンタープライズ・ベース・ネットワーク内の少なくとも１つの第二仮想マシン・インスタンスを識別することで決定されることができ、この少なくとも１つの第二仮想マシン・インスタンスがこのアプリケーションと関連する。たとえば、このアプリケーション移行サービス部１４０ａは、ＡＰＩ要求１９０のうちの１つを使用して、依存性情報１５５を取得することができる。依存性情報１５５は、移行のために選択されたアプリケーション（たとえば、１８５）を識別することができ、ＶＭＩ（たとえば、１８０ａ）上でそれは動作して、１つ以上の追加のＶＭＩをアプリケーション１８５は使用するまたはこれらにアプリケーション１８５は依存する（たとえば、ＶＭＩ１８０ｂ〜１８０ｃ）。
【０１０９】
７０６で、第一仮想マシン・インスタンス及び少なくとも１つの第二仮想マシン・インスタンスにより使用されたハードウェア・リソースと関連したリソース監視メトリックを受信することができる。たとえば、アプリケーション移行サービス部１４０ａは、ＡＰＩ要求１９０のうちの１つを使用して、ＶＭＩ１８０ａ〜１８０ｃ（すなわち、ＶＭＩ１８０ａ〜１８０ｃをホストするホスト・サーバ１７５ａと関連したコンピューティング・リソース）によりホスト・サーバ・コンピューティング・リソースの使用で情報を提供する、リソース監視メトリック１６０を取得することができる。７０８で、サーバ・コンピュータ・タイプ及び仮想マシン・インスタンス・タイプは、リソース監視メトリックに基づき、各々、少なくとも、第一仮想マシン・インスタンス及び第二仮想マシン・インスタンス用のマルチテナント・ネットワークで決定されることができる。
【０１１０】
たとえば、依存性情報１５５及びリソース監視メトリック１６０を取得した後に、アプリケーション移行サービス部１４０ａは、ホスト・サーバ１０５ａ（または残りのホスト・サーバ１０５ａ、．．．、１０５ｎのいずれか）の性能メトリック１３９とリソース監視メトリック１６０のうちの１つ以上をマッチングさせ、コンピュート・サービス環境１００内の仮想マシン・インスタンス・タイプ（ＶＭＩ１８０ａ〜１８０ｃを移行するための）及びホスト・サーバ・コンピュータ・タイプを選択し、またはその他の方法で決定し（たとえば、５６４のようなポリシー・ドキュメントから）、クライアント・プライベート・ネットワーク１７０から移行されたＶＭＩ（移行されたアプリケーションを含む）をホストすることができる。この性能メトリック１３９は、ホスト・サーバ・コンピュータ１０５ａ（または残りのホスト・サーバ１０５ａ、．．．、１０５ｎのいずれか）のための、ＣＰＵ速度、メモリ容量、ストレージ容量、ネットワーク・カード特性（たとえば、速度）、ビデオ・カード特性（たとえば、解像度及びビデオ処理速度）、ディスクＩ／Ｏ速度、及びその他のもののうちの１つ以上を含むことができる。
【０１１１】
７１０で、第一仮想マシン・インスタンス及び少なくとも１つの第二仮想マシン・インスタンスは、エンタープライズ・ベース・ネットワークから決定された仮想マシン・インスタンス・タイプの少なくとも１つの仮想マシン・インスタンスへ移行されることができる。たとえば、ＶＭＩ１８０ａ〜１８０ｃは、クライアント・プライベート・ネットワーク１７０からコンピュート・サービス環境１００へ移行されることができる。さらに特に、少なくとも１つのファイル・パッキング・フォーマット（たとえば、ＯＶＦ）は、ＶＭＩ１８０ａ〜１８０ｃをパッケージ化し、それらをコンピュート・サービス環境１００へ移行し、それらを選択されたＶＭＩタイプのＶＭＩ上で立ち上げるために使用され、ホスト／ＶＭＩタイプ選択１４１ｂにより示されるような選択されたホスト・サーバ・コンピュータ・タイプのホスト・サーバによりホストされることができる。移行されたＶＭＩ１８０ａ〜１８０ｃは、選択されたホスト・サーバ・コンピュータのうちの１つ以上によりホストされた、選択されたＶＭＩ上に転送され（すなわち、ＶＭＩ転送１４１ｃ）、立ち上げられることができる。
【０１１２】
第一仮想マシン・インスタンス（たとえば、１８０ａ）は、エンタープライズ・ベース・ネットワーク（１７０）から、コンピュート・サービス環境１００で決定された仮想マシン・インスタンス・タイプ（たとえば、１３０ａ、．．．、１３０ｎのうちの１つ）の少なくとも１つの第一仮想マシン・インスタンスへ移行されることができる。少なくとも１つの第二仮想マシン・インスタンス（１８０ｂ〜１８０ｃ）は、エンタープライズ・ベース・ネットワーク（１７０）から決定された仮想マシン・インスタンス・タイプの少なくとも１つの第二仮想マシン・インスタンスへ移行され、少なくとも１つの第一及び少なくとも１つの第二仮想マシン・インスタンスがマルチテナント・ネットワーク（１００）内のサーバ・コンピュータ（１０５ａ）によりホストされることができる。
【０１１３】
エンタープライズ・ベース・ネットワーク（１７０）は、プライベート・ネットワークを含むことができる。アプリケーション移行サービス部１４０ａは、第一仮想マシン・インスタンス（１８０ａ）及び少なくとも１つの第二仮想マシン・インスタンス（１８０ｂ〜１８０ｃ）がプライベート・ネットワークのサブネットワーク内にあるかどうかを判定することができる。第一仮想マシン・インスタンス（１８０ａ）及び少なくとも１つの第二仮想マシン・インスタンス（１８０ｂ〜１８０ｃ）がプライベート・ネットワークのサブネットワーク（２４５）内にある場合に、アプリケーション移行サービス部１４０ａは、移行されたアプリケーションを実行する少なくとも１つの仮想マシン・インスタンス（ＶＭＩ１）用のマルチテナント・ネットワーク（２０５）内にサブネットワーク（２５０）を作成することができる。
【０１１４】
アプリケーション移行サービス部１４０ａは、エンタープライズ・ベース・ネットワーク内の第一仮想マシン・インスタンス（１８０ａ）及び少なくとも１つの第二仮想マシン・インスタンス（１８０ｂ〜１８０ｃ）をホストする少なくとも１つのホスト・サーバ・コンピュータ（１７５ａ）用のネーム及びＩＰアドレスを決定することができる。アプリケーション移行サービス部１４０ａは、マルチテナント・ネットワーク内のサーバ・コンピュータ・タイプのサーバ・コンピュータ（たとえば、１０５ａ）へネーム及びＩＰアドレスを割り当てることができ、このネーム及びＩＰアドレスがエンタープライズ・ベース・ネットワーク（１７０）内の少なくとも１つのホスト・サーバ・コンピュータ（たとえば、１７５ａ）と関連したネーム及びＩＰアドレスと同じである。
【０１１５】
図８は、本開示の実施形態に従い、エンタープライズ・ベース・ネットワークからコンピュート・サービス・プロバイダのマルチテナント・ネットワークへアプリケーションを移行する別の例示的な方法のフローチャートである。図１〜３及び８を参照して、例示的な方法８００は、エンタープライズ・ベース・ネットワークでサーバ・コンピュータによりホストされた少なくとも１つのアプリケーションによりコンピューティング・リソースの使用と関連したリソース監視メトリックをマルチテナント・ネットワークで受信できるとき、８０２で開始することができる。たとえば、アプリケーション移行サービス部１４０ａは、ＡＰＩ要求１９０のうちの１つを使用して、アプリケーション１８５と関連したＶＭＩ１８０ａ〜１８０ｃによるホスト・サーバ・コンピューティング・リソース（すなわち、アプリケーション１８５がリソースを使用している、ＶＭＩ１８０ａ〜１８０ｃをホストするホスト・サーバ１７５ａと関連したコンピューティング・リソース）の使用で情報を提供する、リソース監視メトリック１６０を取得することができる。
【０１１６】
８０４で、仮想マシン・インスタンス・タイプは、コンピュート・サービス・プロバイダのマルチテナント・ネットワーク内のサーバ・コンピュータによりホストされた仮想マシン・インスタンスのために選択され、この選択は、リソース監視メトリックに少なくとも部分的に基づくことができる。たとえば、依存性情報１５５及びリソース監視メトリック１６０を取得した後、アプリケーション移行サービス部１４０ａは、リソース監視メトリック１６０のうちの１つ以上をホスト・サーバ１０５ａ（または残りのホスト・サーバ１０５ａ、．．．、１０５ｎのいずれか）の性能メトリック１３９とマッチングさせ、コンピュート・サービス環境１００内の仮想マシン・インスタンス・タイプ（ＶＭＩ１８０ａ〜１８０ｃを移行するために）及びホスト・サーバ・コンピュータ・タイプを選択し、またはその他の方法で決定し（たとえば、５６４のようなポリシー・ドキュメントから）、クライアント・プライベート・ネットワーク１７０から移行されたＶＭＩ（移行されたアプリケーションを含む）をホストすることができる。性能メトリック１３９は、ホスト・サーバ・コンピュータ１０５ａ（または残りのホスト・サーバ１０５ａ、．．．、１０５ｎのうちのいずれか）のために、ＣＰＵ速度、メモリ容量、ストレージ容量、ネットワーク・カード特性（たとえば、速度）、ビデオ・カード特性（たとえば、解像度及びビデオ処理速度）、ディスクＩ／Ｏ速度、及びその他のもののうちの１つ以上を含むことができる。
【０１１７】
８０６で、少なくとも１つのアプリケーションは、エンタープライズ・ベース・ネットワークからマルチテナント・ネットワーク内のサーバ・コンピュータによりホストされた仮想マシン・インスタンスへ移行されることができる。たとえば、ＶＭＩ１８０ａ〜１８０ｃは、クライアント・プライベート・ネットワーク１７０からコンピュート・サービス環境１００へ移行されることができる。さらに特に、少なくとも１つのファイル・パッキング・フォーマット（たとえば、ＯＶＦ）は、ホスト／ＶＭＩタイプ選択１４１ｂにより示されるように、ＶＭＩ１８０ａ〜１８０ｃをパッケージ化し、それらをコンピュート・サービス環境１００へ移行し、それらを選択されたＶＭＩタイプのＶＭＩ上で立ち上げるために使用され、選択されたホスト・サーバ・コンピュータ・タイプのホスト・サーバによりホストされることができる。移行されたＶＭＩ１８０ａ〜１８０ｃは、選択されたホスト・サーバ・コンピュータのうちの１つ以上によりホストされた選択されたＶＭＩ上に転送され（すなわち、ＶＭＩ転送１４１ｃ）、これらの上で立ち上げられることができる。
【０１１８】
図９は、本開示の実施形態に従い、エンタープライズ・ベース・ネットワークからコンピュート・サービス・プロバイダのマルチテナント・ネットワークへアプリケーションを移行するさらに別の例示的な方法のフローチャートである。図１〜３及び９を参照して、例示的な方法９００は、エンタープライズ・ベース・ネットワーク内の第一仮想マシン・インスタンス上でホストされたアプリケーションを移行する要求を受信することに応答するとき、エンタープライズ・ベース・ネットワーク内のアプリケーションをホストする少なくとも１つの第二仮想マシン・インスタンスを決定することができる、９０２で開始できる。たとえば、アプリケーション移行サービス部１４０ａは、ＡＰＩ要求１９０のうちの１つを使用して依存性情報１５５を取得することができる。この依存性情報１５５は、仮想マシン（すなわち、ＶＭＩ１８０ａ）、及びアプリケーション１８５が使用できる（または依存することができる）任意の他のＶＭＩ（すなわち、ＶＭＩ１８０ｂ〜１８０ｃ）上でアプリケーション１８５が動作していることを識別することができる。
【０１１９】
９０４で、アプリケーションによるエンタープライズ・ベース・ネットワーク内のコンピューティング・リソースの使用状況は、マルチテナント・ネットワーク内のコンピューティング・リソースと関連した性能メトリックにマッピングすることができる。９０６で、仮想マシン・インスタンス・タイプ及びサーバ・コンピュータ・タイプは、マッピングに少なくとも部分的に基づきマルチテナント・ネットワーク内で選択されることができる。たとえば、依存性情報１５５及びリソース監視メトリック１６０を取得した後に、アプリケーション移行サービス部１４０ａは、ホスト・サーバ１０５ａ（または残りのホスト・サーバ１０５ａ、．．．、１０５ｎのいずれか）の性能メトリック１３９へリソース監視メトリック１６０のうちの１つ以上をマッピングし、コンピュート・サービス環境１００内の仮想マシン・インスタンス・タイプ（ＶＭＩ１８０ａ〜１８０ｃを移行するための）及びホスト・サーバ・コンピュータ・タイプを選択し、クライアント・プライベート・ネットワーク１７０から移行されたＶＭＩ（移行されたアプリケーションを含む）をホストすることができる。性能メトリック１３９は、ホスト・サーバ・コンピュータ１０５ａ（または残りのホスト・サーバ１０５ａ、．．．、１０５ｎのうちのいずれか）のために、ＣＰＵ速度、メモリ容量、ストレージ容量、ネットワーク・カード特性（たとえば、速度）、ビデオ・カード特性（たとえば、解像度及びビデオ処理速度）、ディスクＩ／Ｏ速度、及びその他のもののうちの１つ以上を含むことができる。
【０１２０】
９０８で、第一仮想マシン・インスタンスは、エンタープライズ・ベース・ネットワークから選択された仮想マシン・インスタンス・タイプの第一仮想マシン・インスタンスへ移行され、マルチテナント・ネットワーク内の選択されたサーバ・コンピュータ・タイプのサーバ・コンピュータによりホストされることができることで、エンタープライズ・ベース・ネットワークからマルチテナント・ネットワークへアプリケーションを移行する。たとえば、ＶＭＩ１８０ａ〜１８０ｃは、クライアント・プライベート・ネットワーク１７０からコンピュート・サービス環境１００へ移行されることができる。さらに特に、少なくとも１つのファイル・パッキング・フォーマット（たとえば、ＯＶＦ）は、ホスト／ＶＭＩタイプ選択１４１ｂにより示されるように、ＶＭＩ１８０ａ〜１８０ｃをパッケージ化し、それらをコンピュート・サービス環境１００へ移行し、それらを選択されたＶＭＩタイプのＶＭＩ上で立ち上げるために使用され、選択されたホスト・サーバ・コンピュータ・タイプのホスト・サーバによりホストされることができる。移行されたＶＭＩ１８０ａ〜１８０ｃは、選択されたホスト・サーバ・コンピュータのうちの１つ以上によりホストされた、選択されたＶＭＩ上に転送され（すなわち、ＶＭＩ転送１４１ｃ）、これらの上で立ち上げられることができる。
【０１２１】
本開示の例示的な実施形態に従い、図７〜９で記述された方法のいずれかを参照して、アプリケーション移行サービス部１４０ａは、ホスト／ＶＭＩタイプ選択（１４１ｂ）及びＶＭＩ転送（１４１ｃ）の前に、最初のステップとしてＶＰＣ及びサブネットの作成及び割り当て（１４１ａ）を実行することができる。
【０１２２】
本開示の実施形態を以下の条項の観点で記載することが可能である。
【０１２３】
＜条項１＞
エンタープライズ・ベース・ネットワークからコンピュート・サービス・プロバイダのマルチテナント・ネットワークへアプリケーションを移行する方法であって、
前記エンタープライズ・ベース・ネットワーク内の第一仮想マシン・インスタンスで動作するアプリケーションを移行する要求を受信し、
前記エンタープライズ・ベース・ネットワーク内の少なくとも１つの第二仮想マシン・インスタンスを識別することで前記アプリケーションの依存性を決定し、前記少なくとも１つの第二仮想マシン・インスタンスが前記アプリケーションと関連し、
前記第一仮想マシン・インスタンス及び前記少なくとも１つの第二仮想マシン・インスタンスにより使用されたハードウェア・リソースと関連したリソース監視メトリックを受信し、前記ハードウェア・リソースが前記第一仮想マシン・インスタンス及び前記少なくとも１つの第二仮想マシン・インスタンスをホストする少なくとも１つのホスト・サーバ・コンピュータと関連し、
前記リソース監視メトリックに基づき、各々、少なくとも、前記第一仮想マシン・インスタンス及び前記第二仮想マシン・インスタンスのための前記マルチテナント・ネットワークでサーバ・コンピュータ・タイプ及び仮想マシン・インスタンス・タイプを決定し、
前記エンタープライズ・ベース・ネットワークから前記決定された仮想マシン・インスタンス・タイプの少なくとも１つの仮想マシン・インスタンスへ前記第一仮想マシン・インスタンス及び前記少なくとも１つの第二仮想マシン・インスタンスを移行し、前記少なくとも１つの仮想マシン・インスタンスが前記マルチテナント・ネットワーク内の前記決定されたサーバ・コンピュータ・タイプのサーバ・コンピュータによりホストされることで、前記エンタープライズ・ベース・ネットワークから前記マルチテナント・ネットワークへ前記アプリケーションを移行する、
ことを備える、前記方法。
＜条項２＞
前記移行は、
前記エンタープライズ・ベース・ネットワークから前記決定された仮想マシン・インスタンス・タイプの少なくとも１つの第一仮想マシン・インスタンスへ前記第一仮想マシン・インスタンスを移行し、
前記エンタープライズ・ベース・ネットワークから前記決定された仮想マシン・インスタンス・タイプの少なくとも１つの第二仮想マシン・インスタンスへ前記少なくとも１つの第二仮想マシン・インスタンスを移行し、前記少なくとも１つの第一及び少なくとも１つの第二仮想マシン・インスタンスが前記マルチテナント・ネットワーク内の前記サーバ・コンピュータによりホストされる、
ことを備える、条項１に記載の前記方法。
＜条項３＞
前記エンタープライズ・ベース・ネットワークは、プライベート・ネットワークを備え、前記方法は、
前記第一仮想マシン・インスタンス及び前記少なくとも１つの第二仮想マシン・インスタンスが前記プライベート・ネットワークの単一のサブネットワークまたは複数の別個のサブネットワーク内にあるかどうかを判定する、
ことをさらに備える、条項１に記載の前記方法。
＜条項４＞
前記第一仮想マシン・インスタンス及び前記少なくとも１つの第二仮想マシン・インスタンスが前記プライベート・ネットワークの単一のサブネットワーク内にあるときに、前記移行されたアプリケーションを実行する前記少なくとも１つの仮想マシン・インスタンスのための前記マルチテナント・ネットワーク内にサブネットワークを作成し、
前記第一仮想マシン・インスタンス及び前記少なくとも１つの第二仮想マシン・インスタンスが前記プライベート・ネットワークの複数の別個のサブネットワーク内にあるときに、前記マルチテナント・ネットワーク内に少なくとも１つの第一サブネットワーク及び第二サブネットワークを作成し、前記第一サブネットワークが前記決定された仮想マシン・インスタンス・タイプの少なくとも１つの第一仮想マシン・インスタンスをホストするためのものであり、前記第二サブネットワークが前記決定された仮想マシン・インスタンス・タイプの少なくとも１つの第二仮想マシン・インスタンスをホストするためのものである、
ことを備える、条項３に記載の前記方法。
＜条項５＞
前記エンタープライズ・ベース・ネットワーク内の前記第一仮想マシン・インスタンス及び前記少なくとも１つの第二仮想マシン・インスタンスをホストする前記少なくとも１つのホスト・サーバ・コンピュータ用のネーム及びＩＰアドレスを決定する、
ことを備える、条項１に記載の前記方法。
＜条項６＞
前記マルチテナント・ネットワーク内で前記サーバ・コンピュータ・タイプの前記サーバ・コンピュータへネーム及びＩＰアドレスを割り当て、前記ネーム及び前記ＩＰアドレスは、前記エンタープライズ・ベース・ネットワーク内の前記少なくとも１つのホスト・サーバ・コンピュータと関連したネーム及びＩＰアドレスと同じである、
ことを備える、条項５に記載の前記方法。
＜条項７＞
エンタープライズ・ベース・ネットワークからコンピュート・サービス・プロバイダのマルチテナント・ネットワークへアプリケーションを移行する方法を実行するためにその上にインストラクションを含むコンピュータ可読ストレージであって、前記方法が、
前記エンタープライズ・ベース・ネットワークでサーバ・コンピュータによりホストされた少なくとも１つのアプリケーションによりコンピューティング・リソースの使用と関連したリソース監視メトリックを前記マルチテナント・ネットワークで受信し、
前記コンピュート・サービス・プロバイダの前記マルチテナント・ネットワーク内のサーバ・コンピュータによりホストされた仮想マシン・インスタンス用の仮想マシン・インスタンス・タイプを選択し、前記選択は、前記リソース監視メトリックに少なくとも部分的に基づき、
前記エンタープライズ・ベース・ネットワークから前記マルチテナント・ネットワーク内の前記サーバ・コンピュータによりホストされた前記仮想マシン・インスタンスへ前記少なくとも１つのアプリケーションを移行する、
ことを備える、前記コンピュータ可読ストレージ。
＜条項８＞
前記選択は、前記リソース監視メトリックを前記マルチテナント・ネットワーク内で前記サーバ・コンピュータと関連した性能メトリックへマッチングさせることを備える、条項７に記載の前記コンピュータ可読ストレージ。
＜条項９＞
前記リソース監視メトリックは、前記エンタープライズ・ベース・ネットワーク内の、ＣＰＵ、メモリ、及びディスクＩ／Ｏの前記少なくとも１つのアプリケーションによる実用を有し、
前記性能メトリックは、前記マルチテナント環境内の前記サーバ・コンピュータのＣＰＵ速度、メモリ容量、及びディスクＩ／Ｏ速度を有する、
条項８に記載の前記コンピュータ可読ストレージ。
＜条項１０＞
前記エンタープライズ・ベース・ネットワーク内の移行サービスから依存性情報を取得し、前記依存性情報は、前記アプリケーションと関連した１つ以上の仮想マシン・インスタンスを識別して前記エンタープライズ・ベース・ネットワーク内で実行する、
ことをさらに備える、条項７に記載の前記コンピュータ可読ストレージ。
＜条項１１＞
前記少なくとも１つのアプリケーションを前記移行することは、
前記マルチテナント・ネットワーク内の前記サーバ・コンピュータによりホストされた対応する１つ以上の仮想マシン・インスタンスへ前記エンタープライズ・ベース・ネットワークから前記１つ以上の仮想マシン・インスタンスを移行し、前記移行は、前記エンタープライズ・ベース・ネットワークと互換性のある仮想マシン・インスタンス・フォーマットから前記マルチテナント・ネットワークと互換性のある仮想マシン・インスタンス・フォーマットへ前記１つ以上の仮想マシン・インスタンスを変換すること、及び前記マルチテナント・ネットワークと互換性のある少なくとも１つのドライバを使用することを備える、
ことをさらに備える、条項１０に記載の前記コンピュータ可読ストレージ。
＜条項１２＞
前記マルチテナント・ネットワーク内の前記サーバ・コンピュータによりホストされた前記仮想マシン・インスタンス用の前記仮想マシン・インスタンス・タイプを前記選択することは、自動的に、及びユーザの介入なしで行われる、条項７に記載の前記コンピュータ可読ストレージ。
＜条項１３＞
前記仮想マシン・インスタンス・タイプ及び前記マルチテナント・ネットワーク内の前記サーバ・コンピュータ用のサーバ・コンピュータ・タイプの一方または両方のために少なくとも１つのリコメンデーションを提供し、
前記少なくとも１つのリコメンデーションに応答して、前記仮想マシン・インスタンス・タイプ及び前記サーバ・コンピュータ用の前記サーバ・コンピュータ・タイプの選択を受信する、
ことをさらに備える、条項７に記載の前記コンピュータ可読ストレージ。
＜条項１４＞
前記マルチテナント・ネットワークからの情報用のＡＰＩ要求に応答して前記リソース監視メトリックを受信する、
ことをさらに備える、条項７に記載の前記コンピュータ可読ストレージ。
＜条項１５＞
前記ＡＰＩ要求に応答して、前記エンタープライズ・ベース・ネットワークで前記少なくとも１つのアプリケーションにより使用された前記コンピューティング・リソースと関連した少なくとも１つのプライベート・ネットワークを識別する情報を受信し、前記コンピューティング・リソースは、ホスト・ネーム及びホストＩＰアドレスにより識別される、
ことをさらに備える、条項１４に記載の前記コンピュータ可読ストレージ。
＜条項１６＞
前記マルチテナント・ネットワーク内の前記サーバ・コンピュータ用のプライベート・ネットワークを作成し、
前記エンタープライズ・ベース・ネットワークで前記コンピューティング・リソースの前記ネーム及び前記ＩＰアドレスと同じである、前記マルチテナント・ネットワーク内の前記サーバ・コンピュータ用のネーム及びＩＰアドレスを割り当てる、
ことをさらに備える、条項１５に記載の前記コンピュータ可読ストレージ。
＜条項１７＞
エンタープライズ・ベース・ネットワークからコンピュート・サービス・プロバイダのマルチテナント・ネットワークへアプリケーションを移行するシステムであって、
前記マルチテナント・ネットワークを形成するために共に連結された複数のホスト・サーバ・コンピュータ、及び
アプリケーション移行サービス、
を備え、
前記ホスト・サーバ・コンピュータの少なくとも一部は、顧客アカウントと関連した複数の仮想マシンを実行するためのものであり、
前記アプリケーション移行サービスは、
前記エンタープライズ・ベース・ネットワーク内の第一仮想マシン・インスタンス上でホストされたアプリケーションを移行する要求を受信することに応答して、前記エンタープライズ・ベース・ネットワーク内の前記アプリケーションをホストする少なくとも１つの第二仮想マシン・インスタンスを決定し、
前記マルチテナント・ネットワーク内のコンピューティング・リソースと関連した性能メトリックへ前記アプリケーションによる前記エンタープライズ・ベース・ネットワーク内のコンピューティング・リソースの使用をマッピングし、
前記マッピングに少なくとも部分的に基づき仮想マシン・インスタンス・タイプ及びサーバ・コンピュータ・タイプを前記マルチテナント・ネットワーク内で選択し、
前記エンタープライズ・ベース・ネットワークから前記選択された仮想マシン・インスタンス・タイプの第一仮想マシン・インスタンスへ前記第一仮想マシン・インスタンスを移行し、前記マルチテナント・ネットワーク内で前記選択されたサーバ・コンピュータ・タイプのサーバ・コンピュータによりホストされることで、前記エンタープライズ・ベース・ネットワークから前記マルチテナント・ネットワークへ前記アプリケーションを移行する、
ように操作可能である、
前記システム。
＜条項１８＞
前記アプリケーション移行サービスは、
前記エンタープライズ・ベース・ネットワークから前記選択された仮想マシン・インスタンス・タイプの少なくとも１つの第二仮想マシン・インスタンスへ前記少なくとも１つの第二仮想マシン・インスタンスを移行し、前記マルチテナント・ネットワーク内の前記選択されたサーバ・コンピュータ・タイプの前記サーバ・コンピュータによりホストされる、
ように操作可能である、条項１７に記載の前記システム。
＜条項１９＞
前記アプリケーション移行サービスは、
前記エンタープライズ・ベース・ネットワーク内の前記アプリケーションによるコンピューティング・リソースの前記使用を示すリソース監視メトリックを前記マルチテナント・ネットワークで受信する、
ように操作可能である、条項１７に記載の前記システム。
＜条項２０＞
前記アプリケーション移行サービスは、
ＡＰＩ要求に応答して、前記エンタープライズ・ベース・ネットワーク内の前記第一仮想マシン・インスタンス及び前記少なくとも１つの第二仮想マシン・インスタンスをホストする少なくとも１つのサーバ・コンピュータと関連したプライベート・サブネットワークを示す情報を受信し、
前記マルチテナント・ネットワークで仮想プライベート・ネットワークを作成し、
前記仮想プライベート・ネットワーク内の前記サーバ・コンピュータ用のプライベート・サブネットワークを立ち上げる、
ように操作可能である、条項１７に記載の前記システム。
【０１２４】
図１０は、記述されたイノベーションを実施することができる適切なコンピューティング環境１０００の一般化された実施例を描写する。コンピューティング環境１０００は、多様な汎用または専用コンピューティング・システムでイノベーションを実施できる場合に、使用または機能性の範囲について何らかの限定を示唆することを意図しない。たとえば、コンピューティング環境１０００は、さまざまなコンピューティング・デバイス（たとえば、デスクトップ・コンピュータ、ラップトップ・コンピュータ、サーバ・コンピュータ、タブレット・コンピュータなど）のうちのいずれかであることが可能である。
【０１２５】
図１０を参照して、コンピューティング環境１０００は、１つ以上の処理ユニット１０１０、１０１５及びメモリ１０２０、１０２５を含む。図１０において、この基本構成１０３０は、破線内に含まれる。処理ユニット１０１０、１０１５は、コンピュータ実行可能インストラクションを実行する。処理ユニットは、汎用中央処理装置（ＣＰＵ）、特定用途向け集積回路（ＡＳＩＣ）内のプロセッサまたは任意の他のタイプのプロセッサであることが可能である。マルチプロセッシング・システムにおいて、複数の処理ユニットは、処理能力を増加させるコンピュータ実行可能インストラクションを実行する。たとえば、図１０は、中央処理装置１０１０だけでなくグラフィックス・プロセッシング・ユニットまたはコプロセッシング・ユニット１０１５も示す。有形メモリ１０２０、１０２５は、処理ユニット（複数を含む）によりアクセス可能な、揮発性メモリ（たとえば、レジスタ、キャッシュ、ＲＡＭ）、不揮発性メモリ（たとえば、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュ・メモリなど）、またはこの２つのいくつかの組み合わせであってもよい。メモリ１０２０、１０２５は、処理ユニット（複数を含む）による実行に適切なコンピュータ実行可能インストラクションの形式で、本明細書で記述された１つ以上のイノベーションを実施するソフトウェア１０８０を格納する。
【０１２６】
コンピューティング・システムは、追加の特性を有することができる。たとえば、コンピューティング環境１０００は、ストレージ１０４０、１つ以上の入力デバイス１０５０、１つ以上の出力デバイス１０６０、及び１つ以上の通信接続１０７０を含む。バス、制御装置、またはネットワークのような相互接続機構（図示せず）は、コンピューティング環境１０００のコンポーネントを相互接続する。一般的に、オペレーティング・システムのソフトウェア（図示せず）は、コンピューティング環境１０００内で実行する他のソフトウェア用の操作環境を提供し、コンピューティング環境１０００のコンポーネントのアクティブ化を調整する。
【０１２７】
有形ストレージ１０４０は、取り外し可能、または取り外し不可能とすることができ、磁気ディスク、磁気テープ若しくはカセット、ＣＤ−ＲＯＭ、ＤＶＤ、または非一時的な方式で情報を格納するために使用されることが可能であり、コンピューティング環境１０００内でアクセスされることが可能である任意の他の媒体を含む。ストレージ１０４０は、本明細書で記述された１つ以上のイノベーションを実施するソフトウェア１０８０用のインストラクションを格納する。
【０１２８】
入力デバイス（複数を含む）１０５０は、キーボード、マウス、ペン、若しくはトラックボールのようなタッチ入力デバイス、音声入力デバイス、走査デバイス、またはコンピューティング環境１０００に入力を提供する別のデバイスであってもよい。出力デバイス（複数を含む）１０６０は、ディスプレイ、プリンタ、スピーカ、ＣＤライタ、またはコンピューティング環境１０００から出力を提供する別のデバイスであってもよい。
【０１２９】
通信接続（複数を含む）１０７０は、別のコンピューティング・エンティティへ通信媒体経由での通信を有効にする。通信媒体は、コンピュータ実行可能インストラクション、オーディオ若しくはビデオ入力若しくは出力、または変調されたデータ信号の他のデータのような情報を伝達する。変調されたデータ信号は、その特性セットのうちの１つ以上を含み、この信号の情報を符号化するような方式で変更された信号である。制限ではなく実施例として、通信媒体は、電気、光、ＲＦ、または他のキャリアを使用することが可能である。
【０１３０】
開示された方法のいくつかの操作は、特に好適なプレゼンテーションのための順序を説明されるが、以下に記載される特定の言語が特定の順序を必要としない限り、説明のこの方式が再編成を包含することを理解するべきである。たとえば、順次説明された操作は、いくつかの場合において、再編成、または同時に実行される可能性がある。さらに、簡単にするために、添付の図面は、他の方法と併せて開示された方法を使用可能であるさまざまな方式を示さない可能性がある。
【０１３１】
開示された方法のいずれかは、１つ以上のコンピュータ可読記憶媒体（たとえば、１つ以上の光学媒体ディスク、揮発性メモリ・コンポーネント（ＤＲＡＭまたはＳＲＡＭのような）、または不揮発性メモリ・コンポーネント（フラッシュ・メモリまたはハード・ドライブのような））上に格納され、コンピュータ（たとえば、スマートフォン、またはコンピューティング・ハードウェアを含む他の携帯機器を含む、任意の市販のコンピュータ）上で実行されるコンピュータ実行可能インストラクションとして実装されることが可能である。用語コンピュータ可読記憶媒体は、信号及び搬送波のような、通信接続を含まない。開示された技術を実現するためにコンピュータ実行可能インストラクションのいずれかだけでなく、開示された実施形態の実施中に作成され使用された任意のデータも、１つ以上のコンピュータ可読記憶媒体上に格納されることが可能である。コンピュータ実行可能インストラクションは、たとえば、ウェブ・ブラウザまたは他のソフトウェア・アプリケーション（リモート・コンピューティング・アプリケーションのような）を介してアクセスまたはダウンロードされる専用のソフトウェア・アプリケーションまたはソフトウェア・アプリケーションの部分であることが可能である。このようなソフトウェアは、たとえば、１つ以上のネットワーク・コンピュータを使用して、単一のローカル・コンピュータ（たとえば、任意の適切な市販のコンピュータ）上で、またはネットワーク環境内で（たとえば、インターネット、ワイド・エリア・ネットワーク、ローカル・エリア・ネットワーク、クライアント・サーバ・ネットワーク（クラウド・コンピューティング・ネットワークのような）、または他のこのようなネットワークを介して）実行されることが可能である。
【０１３２】
明確にするために、ソフトウェア・ベースの実装の特定の選択された態様のみを記述する。当該技術分野において周知である他の詳細を省略する。たとえば、開示された技術が任意の特定のコンピュータ言語またはプログラムに限定されないことを理解するべきである。たとえば、開示された技術は、Ｃ＋＋、Ｊａｖａ（登録商標）、Ｐｅｒｌ、ＪａｖａＳｃｒｉｐｔ（登録商標）、Ａｄｏｂｅ  Ｆｌａｓｈ（登録商標）、または任意の他の適切なプログラミング言語で書き込まれたソフトウェアにより実現されることが可能である。同様に、開示された技術は、任意の特定のコンピュータまたはハードウェア・タイプに限定されない。適切なコンピュータ及びハードウェアの特定の詳細は、周知であり本開示で詳細に記載される必要がない。
【０１３３】
ソフトウェアの代わりに、少なくとも部分的に、１つ以上のハードウェア・ロジック・コンポーネントが本明細書で記述された任意の機能性を実行可能であることをまたよく理解するべきである。たとえば、限定しないが、使用されることが可能な例示的なタイプのハードウェア・ロジック・コンポーネントは、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、プログラム用途向け集積回路（ＡＳＩＣ）、プログラム用途向け標準品（ＡＳＳＰ）、システムオンチップ・システム（ＳＯＣ）、コンプレックス・プログラマブル・ロジック・デバイス（ＣＰＬＤ）などを含む。
【０１３４】
さらに、ソフトウェア・ベースの実施形態（たとえば、コンピュータに開示された方法のいずれかを実行させるコンピュータ実行可能インストラクションを含む）のいずれかは、適切な通信手段を介して、アップロード、ダウンロード、または遠隔でアクセスされることが可能である。このように適切な通信手段は、たとえば、インターネット、ワールド・ワイド・ウェブ、イントラネット、ソフトウェア・アプリケーション、ケーブル（光ファイバ・ケーブルを含む）、磁気通信、電磁通信（ＲＦ、マイクロ波、及び赤外線通信を含む）、電子通信、または他のこのような通信手段を含む。
【０１３５】
開示された方法、装置、及びシステムは、決して限定するものとして解釈されるべきではない。代わりに、本開示は、単独でならびに互いに関してさまざまな組み合わせ及び副次的な組み合わせにおいて、さまざまな開示された実施形態のすべての新規で非自明な特徴及び態様のために行われる。開示された方法、装置、及びシステムは、任意の特定の態様または特徴またはそれらの組み合わせに限定されず、そして開示された実施形態は、任意の１つ以上の特定の利点が存在する、または問題が解決される必要があることにも限定されない。
【０１３６】
開示された本発明の原理を適用することができる多くの可能な実施形態の観点から、図示された実施形態が本発明の好ましい実施例のみであること、及び本発明の範囲を限定するものとして解釈されるべきではないことを認識するべきである。むしろ、本発明の範囲は、以下の特許請求の範囲により画定される。したがって我々は、我々の発明として、これらの特許請求の範囲内に入るすべてのものを主張する。
【図１】
0006403800.tif 000002
【図２Ａ】
0006403800.tif 000003
【図２Ｂ】
0006403800.tif 000004
【図３】
0006403800.tif 000005
【図４】
0006403800.tif 000006
【図５】
0006403800.tif 000007
【図６】
0006403800.tif 000008
【図７】
0006403800.tif 000009
【図８】
0006403800.tif 000010
【図９】
0006403800.tif 000011
【図１０】
0006403800.tif 000012