(57)【特許請求の範囲】
【請求項１】
クラウドデスクトップを領域間で移行するための方法であって、
前記クラウドデスクトップを、現在の領域から、ユーザコンピューティングデバイスから前記現在の領域までのネットワークレイテンシ、または前記現在の領域に対する前記ユーザコンピューティングデバイスの地理的場所のうちの少なくとも１つに基づいて、移行することを決定することと、
前記クラウドデスクトップを移行する先の移行先領域を、前記ユーザコンピューティングデバイスから前記移行先領域までのネットワークレイテンシ、または前記移行先領域に対する前記ユーザコンピューティングデバイスの地理的場所のうちの少なくとも１つに基づいて、特定することと、
前記クラウドデスクトップのデータボリュームを前記現在の領域から前記移行先領域にコピーすることであって、前記データボリュームが、前記クラウドデスクトップのユーザに関連するユーザデータを含む、前記コピーすることと、
前記現在の領域における前記データボリューム及び前記移行先領域における前記データボリュームを前記コピー中に同期して維持することと、
前記コピーの完了と同時に、
前記現在の領域における前記クラウドデスクトップに関連する現在のユーザセッションをフリーズすること、
前記現在のユーザセッションの現在のメモリ及びプロセッサの状態を前記移行先領域にコピーすること、
前記コピーされたデータボリュームならびに現在のメモリ及びプロセッサの状態を使用して、前記移行先領域におけるクラウドデスクトップインスタンスを開始すること、ならびに
前記現在のユーザセッションを前記移行先領域における前記クラウドデスクトップインスタンスに接続し直すことと、を含み、
前記現在のメモリ及び前記プロセッサの状態を前記移行先領域にコピーすることにより、現在の領域における前記クラウドデスクトップで動作するアプリケーションを前記移行先領域において前記クラウドデスクトップインスタンスで動作することを可能とする、前記方法。
【請求項２】
前記決定することが、
前記ユーザコンピューティングデバイスから前記現在の領域までの前記ネットワークレイテンシを計算することと、
前記ユーザコンピューティングデバイスから前記現在の領域までの前記ネットワークレイテンシが、レイテンシ閾値を超えることを判定することと、
を含む、請求項１に記載の方法。
【請求項３】
前記計算することが、ピング動作を行うことを含み、前記ピング動作が、前記ユーザコンピューティングデバイスによって前記現在の領域に送信されるパケットのタイムシグネチャを決定する、請求項２に記載の方法。
【請求項４】
前記決定することが、
前記ユーザコンピューティングデバイスの現在の地理的場所を特定することと、
前記クラウドデスクトップが、前記現在の領域に対する前記ユーザコンピューティングデバイスの前記現在の地理的場所に基づいて、移行すべきであることを決定することと、
を含む、請求項１に記載の方法。
【請求項５】
前記現在の地理的場所が、前記ユーザコンピューティングデバイスのＩＰアドレスによって特定される、請求項４に記載の方法。
【請求項６】
前記決定することが、
ユーザ及び前記クラウドデスクトップに関連する管理者のうちの一方に、前記クラウドデスクトップを移行するように促すことと、
前記クラウドデスクトップを前記移行先領域に移行するための選択をユーザ及び管理者のうちの前記一方から受け取ることと、
を含む、請求項１に記載の方法。
【請求項７】
前記特定することが、
１つまたは複数の候補領域を特定することと、
前記ユーザコンピューティングデバイスから前記１つまたは複数の候補領域までのネットワークレイテンシ、あるいは前記１つまたは複数の候補領域に対する前記ユーザコンピューティングデバイスの地理的場所のうちの少なくとも１つに基づいて、前記移行先領域を決定するために前記１つまたは複数の候補領域を評価することと、
を含む、請求項１に記載の方法。
【請求項８】
前記特定することが、
１つまたは複数の候補領域を特定することと、
前記ユーザコンピューティングデバイスから前記１つまたは複数の候補領域までのレイテンシ、あるいは前記１つまたは複数の候補領域に対する前記ユーザコンピューティングデバイスの地理的場所のうちの少なくとも１つに基づいて、前記移行先領域を決定するために前記１つまたは複数の候補領域を評価することと、
を含む、請求項１に記載の方法。
【請求項９】
仮想デスクトップをデータセンタ間で移行するためのコンピューティングシステムであって、
現在のデータセンタであって、仮想デスクトップ及びデータボリュームを含み、前記データボリュームが、前記仮想デスクトップのユーザに関連するユーザデータを含む、前記現在のデータセンタと、
１つまたは複数の候補データセンタと、
管理構成要素であって、
仮想デスクトップを、前記現在のデータセンタから、ユーザコンピューティングデバイスから前記現在のデータセンタまでのネットワークレイテンシ、または前記現在のデータセンタに対する前記ユーザコンピューティングデバイスの地理的場所のうちの少なくとも１つに基づいて、移行することを決定すること、
前記仮想デスクトップを移行する先の前記１つまたは複数の候補データセンタのうちの１つを移行先データセンタとして、前記ユーザコンピューティングデバイスから前記移行先データセンタまでのネットワークレイテンシ、または前記移行先データセンタに対する前記ユーザコンピューティングデバイスの地理的場所のうちの少なくとも１つに基づいて、特定すること、
前記仮想デスクトップの前記データボリュームを前記現在のデータセンタから前記移行先データセンタに移動させること、
現在のユーザセッションの現在のメモリ及びプロセッサの状態を前記移行先領域にコピーすること、
前記移行されたデータボリュームならびに前記コピーされた現在のメモリ及びプロセッサの状態を使用して、前記移行先データセンタにおける前記仮想デスクトップのインスタンスを開始すること、
前記現在のメモリ及び前記プロセッサの状態を前記移行先データセンタにコピーすることにより、現在のデータセンタにおいて前記仮想デスクトップで動作するアプリケーションを前記移行先領域において前記仮想デスクトップインスタンスで動作することを可能とすること
を含む動作を行うように構成された、前記管理構成要素と、
前記仮想デスクトップの前記データボリューム及び１つまたは複数のデータセンタをトラッキングする制御プレーンレイヤであって、
ユーザ接続要求を受け取ると同時に、前記ユーザ接続要求を前記移行先データセンタにおいて動作する前記仮想デスクトップのインスタンスに向けること、
を含む動作を行うように構成された、前記制御プレーンレイヤと、
を含む、前記コンピューティングシステム。
【請求項１０】
前記ユーザコンピューティングデバイスから前記移行先データセンタまでの前記ネットワークレイテンシが、前記ユーザコンピューティングデバイスから前記現在のデータセンタまでのネットワークレイテンシよりも小さい、請求項９に記載のコンピューティングシステム。
【請求項１１】
前記管理構成要素が、
前記現在のデータセンタにおいて動作する前記仮想デスクトップのインスタンスをシャットダウンすることを含むさらなる動作を行うように構成されている、請求項９に記載のコンピューティングシステム。
【請求項１２】
前記管理構成要素が、
前記現在のデータセンタにおける前記データボリュームのコピー及び前記移行先データセンタにおける前記データボリュームのコピーを前記移動中に同期して維持することと、
前記移動の完了と同時に、
前記現在のデータセンタにおける前記仮想デスクトップに関連する現在のユーザセッションをフリーズすること、
前記現在のユーザセッションを前記移行先データセンタにおける前記仮想デスクトップの前記開始されたインスタンスに接続し直すことと、を含み、
前記現在のメモリ及び前記プロセッサの状態をコピーすること及び前記移行先データセンタで前記インスタンスを開始することは、前記移行の完了後に実行すること、を含むさらなる動作を行うように構成されている、請求項９に記載のコンピューティングシステム。
【請求項１３】
クラウドベースのサービスを領域間で移行するための動作を行うための命令を記憶したコンピュータ可読ストレージ媒体であって、前記動作が、
クラウドベースのサービスを、現在の領域から、ユーザコンピューティングデバイスから前記現在の領域までのネットワークレイテンシ、または前記現在の領域に対する前記ユーザコンピューティングデバイスの地理的場所のうちの少なくとも１つに基づいて、移行することを決定することと、
前記クラウドベースのサービスを移行する先の移行先領域を、前記ユーザコンピューティングデバイスから前記移行先領域までのネットワークレイテンシ、または前記移行先領域に対する前記ユーザコンピューティングデバイスの地理的場所のうちの少なくとも１つに基づいて、特定することと、
前記クラウドベースのサービスのデータボリュームを前記現在の領域から前記移行先領域にコピーすることと、
前記クラウドベースのサービスに関連する現在のユーザセッションの現在のメモリ及びプロセッサの状態を前記移行先領域にコピーすることと、
前記移行先領域における前記データボリューム並びにコピーされた前記現在のメモリ及びプロセッサの状態を使用して、クラウドベースのサービスインスタンスを開始することと、
前記クラウドベースのサービスに関連する前記現在のユーザセッションを前記移行先領域における前記クラウドベースのサービスインスタンスに接続することと、を含み、
前記現在のメモリ及び前記プロセッサの状態を前記移行先領域にコピーすることにより、前記クラウドベースのサービスで動作するアプリケーションを前記移行先領域において前記クラウドベースのサービスで動作することを可能とする、前記コンピュータ可読ストレージ媒体。
【請求項１４】
前記動作が、
前記現在の領域における前記データボリュームのコピー及び前記移行先領域における前記データボリュームのコピーを前記コピー中に同期して維持することと、
前記コピーの完了と同時に、
前記現在の領域における前記クラウドベースのサービスに関連する前記現在のユーザセッションをフリーズすることを含む、
請求項１３に記載のコンピュータ可読ストレージ媒体。
【請求項１５】
前記決定することが、
前記ユーザコンピューティングデバイスから前記現在の領域までの前記ネットワークレイテンシを計算することと、
前記ネットワークレイテンシが、レイテンシ閾値を超えることを判定することと、
を含む、請求項１３に記載のコンピュータ可読ストレージ媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想デスクトップの移行に関する。
【背景技術】
【０００２】
クラウドコンピューティングは、遠隔の位置で利用できるとともに、インターネットなどのネットワークを介してアクセスできるコンピューティングリソース（ハードウェア及びソフトウェア）の利用法である。ユーザは、これらのコンピューティングリソース（ストレージ及びコンピューティングパワーを含む）をオンデマンドでユーティリティとして買うことができる。クラウドコンピューティングは、ユーザのデータ、ソフトウェア、及びコンピュータ計算をリモートサービスに任せる。仮想コンピューティングリソースを使用すると、コストの利点及び／または変化するコンピューティングリソースのニーズに迅速に適応する能力を含むいくつかの利点を得ることができる。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
仮想デスクトップ環境は、クラウドにおいて、または組織サイトにおけるサーバにおいてホストされ得る。クラウド上のデスクトップコンピューティング環境（本明細書では以降、「クラウドデスクトップ」と呼ぶ）は、ユーザがパーソナルコンピューティングデバイスとの間で接続することができるクラウドの中のサーバにおいて動作する仮想デスクトップ環境を提供する。組織サイトにおけるデスクトップコンピューティング環境（本明細書では以降、「オンプレミス仮想デスクトップ」と呼ぶ）は、組織もしくは組織に関連するユーザによって所有される、及び／または操作されるサーバにおいて動作する仮想デスクトップ環境を提供する。多くの仮想デスクトップが、一定した利用可能性を提供し、ここでは、仮想デスクトップインスタンスが、クラウドの中の１つまたは複数のサーバにおいて、あるいは１つまたは複数の組織サーバにおいて継続的に動作する。しかしながら、仮想デスクトップは、それらが、ネットワークを介して、サーバ（たとえば、クラウドにおいて動作する）からユーザデバイスに、リアルタイムのユーザ対話型デスクトップセッションをストリーミングせざるを得ないので、ネットワークレイテンシに大きく影響を受けやすい。クラウド仮想セッションが高いレイテンシである場合、ユーザは、ユーザが、たとえば、自分のマウスを動かすとき、またはオーディオをストリーミングしようと試みるとき、ユーザエクスペリエンスを低下させる遅延を経験する場合がある。加えて、ネットワークレイテンシは、ユーザデバイスと仮想デスクトップ環境との間の地理的距離とともに増加する場合がある。
【図面の簡単な説明】
【０００４】
【図１】クラウドデスクトップ環境のコンピューティングシステム略図である。
【図２】デスクトップを移行する例示的な方法を示す流れ図である。
【図３】デスクトップを移行する別の例示的な方法を示す流れ図である。
【図４】クラウドデスクトップ環境の別のコンピューティングシステム略図である。
【図５】デスクトップを移行する別の例示的な方法を示す流れ図である。
【図６】マルチテナント環境において動作する複数の仮想マシンインスタンスを示す例示的なシステム略図である。
【図７】制御プレーンに関連する複数の管理構成要素を含む例示的なシステムのさらなる詳細を示す。
【図８】仮想マシンインスタンスを実行するのに使用されるハードウェア資産である、複数のホストコンピュータ、ルータ、及びスイッチの一例を示す。
【図９】様々なユーザデバイスに対してクラウドデスクトップリソースを提供することができるクラウドデスクトップ環境の略図である。
【図１０】記載された革新が実装され得る適切なコンピューティング環境の一般化された例を示す。
【発明を実施するための形態】
【０００５】
概観
以下の説明は、性能を向上させる（たとえば、ネットワークレイテンシを低減させ、帯域幅を増大させるなどの）ために、仮想デスクトップ（たとえば、クラウドデスクトップ、及び／または別のタイプの仮想デスクトップ）を場所（たとえば、領域）間で移行するための技法及び解決策を対象とする。たとえば、地理的場所またはネットワークレイテンシに基づいて、ユーザのクラウドデスクトップインスタンスをある領域から別の領域に移行すると、クラウドデスクトップは、より応答性が高くなり得るので、より喜ばしいユーザエクスペリエンスが得られる可能性がある。本明細書に使用するとき、「ユーザデバイス」という用語は、クラウドデスクトップセッションをホストすることができる任意のタイプのコンピューティングデバイス（たとえば、サーバコンピュータ、デスクトップコンピュータ、ラップトップ、タブレット、モバイルフォン、または別のタイプのコンピューティングデバイス）を示す。
【０００６】
クラウドデスクトップは、クラウドの中のサーバにおいて動作することができる。たとえば、クラウドデスクトップインスタンスは、クラウドにおいて動作することができ、ここでは、クラウドデスクトップセッションが、ユーザデバイスにおけるユーザの対話を取り込み、クラウド上の異なる場所において動作するデスクトップインスタンスにおいてその対話を適用する。しかしながら、この対話は、ネットワークレイテンシ、帯域幅、ジッター（たとえば、ネットワークパケットラウンドトリップ回数の変動）、及び／または他の性能測定結果に大きく影響を受ける場合がある。クラウドデスクトップセッションが高いレイテンシである場合、ユーザは、ユーザデバイスのディスプレイ上のラグまたはギザギザした動作を経験し得る。ネットワークレイテンシは、ユーザデバイスとクラウドの中のサーバとの間の地理的距離とともに増加することが多い。ネットワークレイテンシを低減させるためには、クラウドデスクトップについてのサーバ構成要素は、ユーザデバイスに対して高いレイテンシを示す領域から、ユーザデバイスに対してより低いレイテンシを示す領域に移行され得る。本明細書では以降、諸例のうちのいずれにおいても、「データセンタ」及び「領域」という用語は、相互交換可能に使用され得る。データセンタは、クラウドデスクトップについてのサーバ構成要素をホストする物理的な場所を示すことができる。各データセンタは、領域内に位置してよい。しかしながら、１対１の関係性が、データセンタと領域との間に必ずしもあるとは限らない。たとえば、１つの領域が、複数のデータセンタを収容する場合がある。地理的領域は、ユーザデバイスを起点とする距離を包含するエリアを示すことができる。地理的領域はまた、ユーザが位置している可能性がある、及び／またはデータセンタがホストされる可能性がある都市、州、場所の名前、もしくは任意の他の呼称を示すこともある。
【０００７】
特定の実施形態においては、クラウドデスクトップが、現在の領域から、ユーザコンピューティングデバイスから現在の領域までのネットワークレイテンシと、現在の領域に対するユーザコンピューティングデバイスの地理的場所とのうちの少なくとも１つに基づいて、移行すべきであることが決定され得る。クラウドデスクトップが移行されることになる先の移行先領域が、ユーザコンピューティングデバイスから移行先領域までのネットワークレイテンシと、移行先領域に対するユーザコンピューティングデバイスの地理的場所とのうちの少なくとも１つに基づいて、特定可能である。現在の領域において動作するクラウドデスクトップの第１のインスタンスが、シャットダウン可能であり、クラウドデスクトップのユーザに関連するユーザデータを含むクラウドデスクトップのデータボリュームが、現在の領域から移行先領域に移動可能である。次いで、移行先領域におけるクラウドデスクトップの第２のインスタンスが、移動したデータボリュームを使用して起動され得る。ユーザ接続要求を受け取ると同時に、ユーザは、移行先領域におけるクラウドデスクトップの第２のインスタンスに向けられ得る。
【０００８】
別の実施形態においては、クラウドデスクトップをデータセンタ間で移行するためのコンピューティング環境が提供され得る。このコンピューティング環境は、クラウドデスクトップのデータボリューム及び１つまたは複数のデータセンタをトラッキングする制御プレーンレイヤと、クラウドデスクトップ及びデータボリュームを含んでいる現在のデータセンタと、１つまたは複数の候補データセンタと、管理構成要素とを含んでよい。管理構成要素は、クラウドデスクトップが、現在のデータセンタから、ユーザコンピューティングデバイスから現在のデータセンタまでのネットワークレイテンシと、現在のデータセンタに対するユーザコンピューティングデバイスの地理的場所とのうちの少なくとも１つに基づいて、移行すべきであることを決定するために、及びクラウドデスクトップを、ユーザコンピューティングデバイスから移行先データセンタまでのネットワークレイテンシと、移行先データセンタに対するユーザコンピューティングデバイスの地理的場所とのうちの少なくとも１つに基づいて、移行するための候補データセンタの１つを特定するために使用され得る。クラウドデスクトップのデータボリュームは、現在のデータセンタから、特定された候補データセンタに移動可能である。次いで、ユーザ接続要求を受け取ると同時に、ユーザは、特定された候補データセンタにおけるクラウドデスクトップのインスタンスに向けられ得る。
【０００９】
別の実施形態においては、クラウドデスクトップが、現在の領域から移行すべきであることが決定され得る。クラウドデスクトップが移行されることになる先の移行先領域が、特定可能である。クラウドデスクトップのデータボリュームが、現在の領域から移行先領域にコピーされ得るとともに、現在の領域におけるデータボリュームと移行先領域におけるデータボリュームとが、同期して維持される。コピーの完了と同時に、クラウドデスクトップに関連する現在のユーザセッションが、現在の領域においてフリーズされ得、現在のユーザセッションの現在のメモリ及びプロセッサの状態が、移行先領域にコピーされ得る。次いで、第２のクラウドデスクトップインスタンスが、移行先領域におけるデータボリュームならびに現在のメモリ及びプロセッサの状態を使用して、開始され得、現在のユーザセッションは、第２のクラウドデスクトップインスタンスに接続し直しされ得る。
【００１０】
したがって、クラウドデスクトップは、別の領域に移動可能であり、それにより、クラウドデスクトップの性能は、向上する。また、クラウドデスクトップが、クラウドデスクトップの性能を向上させること以外の理由で、別の領域に移動する場合があることも理解すべきである。たとえば、クラウドデスクトップは、障害回復処理の一部として、別の領域に移動する場合がある。データセンタの停止状態（またはデータセンタの予定された停止状態）がある場合、クラウドデスクトップは、事前対応的にまたは事後対応的に移動し得る。したがって、ユーザは、自分のクラウドデスクトップが、データセンタ停止状態に起因して移動したことを承知している必要はない。前述のシナリオは、クラウドデスクトップが移行されることを受ける唯一のシナリオではなく、他のシナリオもまた、クラウドデスクトップを移行するために存在し得る。たとえば、サーバメンテナンスでは、クラウドデスクトップが移行される必要がある場合がある。
【００１１】
クラウドデスクトップ
図１は、クラウドデスクトップ環境１００のコンピューティングシステム略図である。ユーザは、たとえば、ユーザデバイス１４０において動作するクラウドデスクトップクライアントアプリケーション１４２を介して、クラウドデスクトップセッションを立ち上げることができる。クラウドデスクトップクライアントアプリケーション１４２は、ユーザデバイス１４０を、ある領域におけるサーバ１１０において動作するクラウドデスクトップインスタンス１１２に接続し得る。クラウドデスクトップクライアントアプリケーション１４２は、オペレーティングシステム環境の体裁を模倣することができ、それにより、ユーザには、ユーザデバイス１４０が、ユーザデバイス１４０においてローカルにクラウドデスクトップインスタンス１１２を実行しているように見える。ユーザデバイス１４０はまた、健康モニタ１４４も含むことができる。健康モニタ１４４は、ユーザデバイス４０とクラウドデスクトップインスタンス１１２との間のネットワーク接続をモニタリングする。健康モニタ１４４は、クラウドデスクトップクライアントアプリケーション１４２とは分離しているように描かれているが、健康モニタ１４４が、そうではなく、クラウドデスクトップクライアントアプリケーション１４２の一部であってもよい。また、健康モニタ１４４は、ユーザデバイス１４０において位置付けられているように描かれている。しかしながら、健康モニタが、そうではなく、クラウドデスクトップ環境１００の中に位置付けられてもよい。たとえば、健康モニタサーバが、クラウドデスクトップ環境１００に存在することがある。さらには、健康モニタは、クラウドデスクトップインスタンスをホストするサーバのうちの１つまたは複数において存在することもある。
【００１２】
先の例においては、クラウドデスクトップクライアントアプリケーションについて説明している。しかしながら、クラウドデスクトップクライアントアプリケーションが、必ずしも使用される必要があるわけではない。いくつかの実施形態においては、クラウドデスクトップインスタンスは、ウェブブラウザにおいて見ることができ、ブラウザは、クラウドデスクトップのコンテンツを表示する。
【００１３】
制御プレーン１３０が、クラウドデスクトップインスタンス１１２が動作している領域の場所を特定する。たとえば、クラウドデスクトップクライアントアプリケーション１４２は、単一のアクセスポイント（たとえば、接続マネージャ（図示せず））を経由して、クラウドデスクトップに接続してよい。制御プレーン１３０は、サーバ１１０において動作するクラウドデスクトップインスタンス１１２を指し示す。したがって、ユーザがクラウドデスクトップに接続するとき、制御プレーン１３０は、クラウドデスクトップインスタンス１１２が位置付けられている領域を指し示す。制御プレーン１３０はまた、接続が行われ得る先の他の領域に関する情報も有する。したがって、ユーザが領域を変更する場合（または、変更が自動的に行われる場合）、制御プレーン１３０は、新規領域において動作するクラウドデスクトップインスタンスを指し示すことになる。図１は、２つの領域を表示しているが、この描写は、例示目的のためであり、多くのさらなる領域が存在する。また、領域ごとに単一のサーバが描かれており、ここでは、多くのサーバが、１つの領域の中に存在する場合がある。加えて、制御プレーン１３０が、クラウドデスクトップサーバとは分離しているように描かれているが、それは、サーバのうちの１つまたは複数において位置付けられてもよい。
【００１４】
クラウドデスクトップインスタンスは、ある領域内のサーバ１１０においてホストされる。サーバ１１０は、ユーザのクラウドデスクトップのインスタンスを提供する。サーバ１１０は、ユーザデバイス１４０から入力を受け取り、クラウドデスクトップインスタンス１１２において動作し、ユーザデバイス１４０における入力をクラウドデスクトップインスタンス１１２への入力に変換する。たとえば、ユーザがユーザデバイス１４０において動作しているクラウドデスクトップセッション上のアイコンをクリックする場合、サーバ１１０上の対応するアプリケーションは、クラウドデスクトップインスタンス１１２において実行されることになる。クラウドデスクトップインスタンス１１２は、ユーザが、仮想デスクトップなど、コンピューティングリソース、またはコンピュートノードにアクセスすることを可能にするためにインスタンス化される仮想マシンを含んでよい。代替としては、クラウドデスクトップインスタンス１１２は、仮想マシンを使用せず、サーバ１１０において作成され得る。
【００１５】
クラウドデスクトップインスタンス１１２は、デスクトップ環境を含む場合がある。デスクトップ環境は、仮想デスクトップを表す任意のタイプの環境を含み得る。たとえば、デスクトップ環境は、クラウドデスクトップに記憶されるファイル及び／またはアプリケーションと対話するためのインターフェースを含むことができる。いくつかの場合においては、デスクトップ環境は、別のインスタンスによって含まれる、もしくはホストされるデータ及び／またはアプリケーションにアクセスするためのショートカットを含んでもよい。さらには、いくつかの場合においては、デスクトップ環境は、デスクトップの他にファイル及びアプリケーションにアクセスするための追加または代替のインターフェースを提供することができる。たとえば、デスクトップ環境は、ファイルマネージャを含むことも、またはファイルマネージャとすることもできる。いくつかの場合においては、下層のオペレーティングシステム及び／またはハードウェアにかかわらず、デスクトップ環境は、特定のルックアンドフィールを提示し得る。たとえば、デスクトップ環境は、Ｗｉｎｄｏｗｓ（登録商標）デスクトップ、Ｌｉｎｕｘ（登録商標）デスクトップ、またはｉＯＳ（登録商標）デスクトップをまねるように構成可能である。他の場合においては、インスタンスは、ユーザによって選択される仮想マシンコンピューティングリソースの一部であってもよい。そのような場合においては、デスクトップ環境は、仮想マシンコンピューティングリソースのための選択されたオペレーティングシステム（たとえば、Ｗｉｎｄｏｗｓ、Ｌｉｎｕｘなど）のデスクトップ環境としてよい。
【００１６】
先の例においては、領域の中のクラウドデスクトップを実行する単一のサーバ１１０について説明している。しかしながら、複数のサーバが、クラウドデスクトップに使用可能であることは理解され得る。たとえば、個別のサーバが、デスクトップについてのデータボリュームを含んでいる場合がある。
【００１７】
ユーザが、異なる領域から自分のクラウドデスクトップにアクセスしたい場合、ユーザのクラウドデスクトップのデータボリュームが、以前の領域から新規領域におけるサーバ１２０に移動することができ、新規クラウドデスクトップインスタンス１２２が、開始され得る。
【００１８】
たとえば、ユーザは、様々な要因に基づいて、自分のクラウドデスクトップを別の領域に移動させることに決める場合がある。たとえば、ユーザが、ある地理的領域に居住する（すなわち、その地理的領域のデータセンタが、クラウドデスクトップインスタンスをホストする）が、ある時間期間にわたって異なる地理的領域にいることになる場合、ユーザは、自分のクラウドデスクトップを新規地理的領域に移動させることに決める場合がある。場所は、たとえば、ユーザデバイスのＩＰアドレスによって決定され得る。代替としては、クラウドデスクトップアプリケーションは、ユーザのネットワークの健康状態が悪いこと、またはそのレイテンシは、ユーザが自分のクラウドデスクトップを別の領域に移行する場合に向上する可能性があることを（たとえば、健康モニタ１４４またはネットワークモニタを介して）ユーザにアラートし得る。このアラートは、クラウドデスクトップセッションの開始において、クラウドデスクトップセッション中の特定の時刻において、ユーザの指図において（たとえば、ユーザがそのネットワーク速度をテストするためのアプリケーションを開く）、またはクラウドデスクトップセッション全体を通じて一定間隔において行われ得る。
【００１９】
先の例においては、クラウドデスクトップセッションについて説明している。クラウドデスクトップセッションは、第１のインスタンスへの接続が、ユーザを接続解除することなしに（たとえば、ユーザは、単一のセッションにログインされる）、第２のインスタンスに向け直しされる場合のセッションを示し得ることを理解すべきである。クラウドデスクトップセッションはまた、第１のインスタンスへの接続が落とされ、第２のインスタンスへの第２の接続が開始される（たとえば、ユーザには、自分のセッションが接続し直しているという指示が与えられ得る）場合のセッションを示し得る。クラウドデスクトップセッションは、先の説明に限定されず、ある領域における第１のインスタンス及び別の領域における第２のインスタンスへのユーザデバイスからの接続を可能にする任意のセッションとしてよい。
【００２０】
地理的領域及びレイテンシ
データセンタが、地理的領域に位置付けられる。たとえば、単一の領域（たとえば、オレゴン州ポートランド）が、データセンタ（たとえば、ポートランドデータセンタ）をホストする場合がある。別の領域（たとえば、フロリダ州マイアミ）が、異なるデータセンタ（たとえば、マイアミデータセンタ）をホストする場合がある。ユーザのクラウドデスクトップは、データセンタのうちの任意のデータセンタにおいてホストされ得る。自分のクラウドデスクトップ（すなわち、クラウドデスクトップインスタンス）に接続したいと望んでいるユーザは、自分のユーザデバイスを介して、自分のクラウドデスクトップインスタンスを含んでいるデータセンタにアクセスし得る。ユーザのクラウドデスクトップインスタンスを含んでいるデータセンタは、ユーザのクラウドデスクトップについて最初に起動されるデータセンタとしてよい。しかしながら、ユーザが場所を変更する（たとえば、ユーザがマイアミから仕事をしたいと思う）場合、ユーザの最初のデータセンタは、地理的に距離がある場合があり（たとえば、クラウドデスクトップが、ポートランドデータセンタにおいてホストされる）、及び／またはユーザのクラウドデスクトップセッションは、高いレイテンシに悩まされる場合がある。したがって、ユーザにより近いデータセンタにクラウドデスクトップを位置付けることが望ましい場合がある。たとえば、ユーザコンピューティングデバイスから現在の領域までのネットワークレイテンシは、計算可能であり、レイテンシ閾値は、クラウドデスクトップが移動すべきであるかどうかを決定するのに使用され得る。
【００２１】
さらには、レイテンシは、ユーザデバイスに対するデータセンタの距離以外の理由で増加する場合がある。ユーザがどのようにデータセンタに（ネットワークを介して）接続しているのかに応じて、レイテンシは、その接続に応じて増加する場合がある。たとえば、ユーザがデータセンタに接続することを試み、ユーザデバイスからデータセンタへのネットワークトポロジーが長く、または低速の接続を介して進む場合、レイテンシは、可能性としては高くなる。したがって、ユーザデバイスと移行先データセンタとの間の地理的距離を減少させると、ネットワークレイテンシを改善させることができる。しかしながら、これは、いつでもその場合であるとは限らない。たとえば、データセンタがユーザデバイスに地理的に近いが、ユーザデバイスからデータセンタへの接続が低速である場合、地理的に遠くに離れてはいるが、データセンタとユーザデバイスとの間のより高速な接続を介してデータセンタに接続することによって、ユーザは、より良い性能を経験し得る。
【００２２】
いくつかの実施形態においては、移行先領域は、ネットワークレイテンシに基づくのではなく他の基準に基づいて選択され得る。たとえば、国が、データストレージに関する規則及び規定を有する場合、移行先領域は、それらの規則及び規定に基づいて選択され得る。さらには、ストレージのコストがデータセンタ間で異なる場合、ユーザは、料金構造に基づいて移行先領域を選択する場合がある。地理的領域の選択は、上記に限定されず、任意の数の要因が、移行先領域を決定するのに使用され得る。たとえば、地理的場所についての履歴レイテンシデータがある場合、移行先領域は、その履歴レイテンシデータに基づいて決定され得る。
【００２３】
クラウドデスクトップの移行
図２は、仮想デスクトップ（たとえば、クラウドデスクトップ、またはオンプレミス仮想デスクトップなどの別のタイプの仮想デスクトップ）を移行する例示的な方法を示す流れ図である。２１０においては、クラウドデスクトップを、現在の領域から、ユーザコンピューティングデバイスから現在の領域までのネットワークレイテンシと、現在の領域に対するユーザコンピューティングデバイスの地理的場所とのうちの少なくとも１つに基づいて、移行することの決定が行われる。たとえば、ユーザは、ネットワーク健康状態が悪い（たとえば、接続の高レイテンシまたは信頼性）という指示を受け取り得る。したがって、クラウドデスクトップセッションは、ユーザが、クラウドデスクトップボリュームを異なる領域に移動させることを推奨してよい。ユーザは、自分のクラウドデスクトップを移行するように促される場合があり、ユーザの選択に基づいて、クラウドデスクトップを移行する決定が行われ得る。決定は、ユーザによる要求と同時に、ユーザのクラウドデスクトップセッションの開始において行われる場合があり、またはネットワークのステータスは、引き続きモニタリングされ得る。加えて、クラウドデスクトップに関連する管理者もまた、（たとえば、管理者が、ネットワークレイテンシが閾値を超えたという指示を受け取った場合）ユーザのクラウドデスクトップを移動させるように促される場合があり、管理者は、クラウドデスクトップを異なる領域に移行することを決定してよい。
【００２４】
２２０においては、クラウドデスクトップを移行する先の移行先領域が、ユーザコンピューティングデバイスから移行先領域までのネットワークレイテンシと、移行先領域に対するユーザコンピューティングデバイスの地理的場所とのうちの少なくとも１つに基づいて、特定される。ユーザには、ユーザに地理的に近いデータセンタのリストが提供され得る。代替としては、クラウドデスクトップは、いくつかのデータセンタにピング送信し、受け取ったパケットのタイムシグネチャを使用して、移行先領域を決定し得る。移行先領域は、ユーザによって特定される場合があり、または移行先は、自動的に決定される場合もある。たとえば、一旦、クラウドデスクトップが移行すべきであると決定されると、移行先領域は、ユーザからの入力なしに特定され得る。複数の候補領域がある場合がある。たとえば、ユーザデバイスから１つまたは複数の候補領域までのネットワークレイテンシと、１つまたは複数の候補領域に対するユーザコンピューティングデバイスの地理的場所とに基づいて、候補領域は、移行先領域を決定するために評価され得る。
【００２５】
２３０においては、現在の領域において動作しているクラウドデスクトップの現在のインスタンス（すなわち、第１のインスタンス）が、シャットダウンされる。クラウドデスクトップボリュームは、移動することになるので、ボリュームが、移行中に、確実に変更されない（すなわち、クラウドデスクトップにおいて変更を行うユーザから）ようにするために、クラウドデスクトップセッションは、一時停止され得る。たとえば、セッションは、プログレスバー、またはクラウドデスクトップが移動の最中である、もしくはそうでなければ、現在のところ利用できないという何らかの他の指示を表示してよい。
【００２６】
２４０においては、クラウドデスクトップのデータボリュームが、現在の領域から移行先領域に移動する。データボリュームは、クラウドデスクトップのユーザに関連するユーザデータ、アプリケーションデータ、アプリケーションソフトウェア、オペレーティングシステムソフトウェア、またはクラウドデスクトップを移行先領域に移動させるのに必要な他の何かを含み得る。
【００２７】
２５０においては、クラウドデスクトップの新規インスタンス（すなわち、第２のインスタンス）が、移動したデータボリュームを使用して、移行先領域において起動される。第２のインスタンスは、オペレーティングシステム画像、現在の領域からのユーザのクラウドデスクトップインスタンス、移動したデータボリューム、及び／またはクラウドデスクトップの第２のインスタンスに使用される任意の他のソフトウェアもしくは設定から作成し直しされ得る。
【００２８】
２６０においては、ユーザ接続要求を受け取ると同時に、ユーザ接続要求は、移行先領域におけるクラウドデスクトップの第２のインスタンスに向けられる。ユーザは、自分のクラウドデスクトップが移動したという指示を受け取ることができ、またはクラウドデスクトップは、ユーザへの通知なしに移動してよい。加えて、ユーザは、クラウドデスクトップがどこに移動したのかということについて承知している必要はない。たとえば、ユーザは、自分のクラウドデスクトップが移動したということが示される指示を受け取り得る。
【００２９】
図３は、仮想デスクトップ（たとえば、クラウドデスクトップ、またはオンプレミス仮想デスクトップなどの別のタイプの仮想デスクトップ）を移行する別の例示的な方法を示す流れ図である。３１０においては、クラウドデスクトップを、現在のデータセンタから、ユーザコンピューティングデバイスから現在のデータセンタまでのネットワークレイテンシと、現在のデータセンタに対するユーザコンピューティングデバイスの地理的場所とのうちの少なくとも１つに基づいて、移行することの決定が行われる。決定は、ユーザによる要求と同時に、ユーザのクラウドデスクトップセッションの開始において行われる場合があり、またはネットワークのステータスは、引き続きモニタリングされ得る。
【００３０】
３２０においては、クラウドデスクトップを移行する先の候補データセンタのうちの１つは、ユーザコンピューティングデバイスから移行先データセンタまでのネットワークレイテンシと、移行先データセンタに対するユーザコンピューティングデバイスの地理的場所とのうちの少なくとも１つに基づいて、移行先データセンタとして特定される。ユーザには、ユーザに地理的に近い候補データセンタのリストが提供され得る。代替としては、クラウドデスクトップは、いくつかの候補データセンタにピング送信し、ユーザコンピューティングデバイスから移行先データセンタまでのネットワークレイテンシが、ユーザコンピューティングデバイスから現在のデータセンタまでのレイテンシよりも小さいデータセンタを選択してよい。
【００３１】
３３０においては、クラウドデスクトップのデータボリュームが、現在のデータセンタから移行先データセンタに移動する。３４０においては、ユーザ接続要求を受け取ると同時に、ユーザ接続要求は、移行先データセンタにおいて動作しているクラウドデスクトップのインスタンスに向けられる。管理構成要素が、前述のステップのうちのいずれかの性能において使用され得る。
【００３２】
図４は、クラウドデスクトップ環境４００のコンピューティングシステム略図であり、図５は、デスクトップを移行する例示的な方法を示す流れ図である。ユーザは、たとえば、ユーザデバイス４４０において動作しているクラウドデスクトップクライアントアプリケーション４４２を介して、クラウドデスクトップセッションを立ち上げてよい。クラウドデスクトップクライアントアプリケーション４４２は、ある領域におけるサーバ４１０において動作しているクラウドデスクトップインスタンス４１２にユーザデバイス４４０を接続し得る。
【００３３】
５１０においては、クラウドデスクトップを、現在の領域から、移行することの決定が行われる。決定は、ユーザによる要求と同時に、ユーザのクラウドデスクトップセッションの開始において行われる場合があり、またはネットワークのステータスは、引き続きモニタリングされ得る。決定は、ユーザデバイス４４０上の健康モニタ４４４によって行われ得る。制御プレーン４３０が、クラウドデスクトップインスタンス４１２が動作している領域の場所を特定する。
【００３４】
５２０においては、クラウドデスクトップを移行する先の移行先領域が、特定される。ユーザには、ユーザに地理的に近いデータセンタのリストが提供され得る。代替として、クラウドデスクトップは、いくつかのデータセンタにピング送信し、受け取ったパケットのタイムシグネチャを使用して、移行先領域を決定してよい。
【００３５】
５３０においては、クラウドデスクトップのデータボリュームが、現在の領域から移行先領域にコピーされる。データボリュームは、ユーザデータ、アプリケーションデータ、アプリケーションソフトウェア、オペレーティングシステムソフトウェア、またはクラウドデスクトップを移行先領域に移動させるのに必要な他の何かを含んでよい。５４０においては、現在の領域におけるクラウドデスクトップのデータボリュームと、移行先領域におけるクラウドデスクトップのデータボリュームとは、コピー中に同期して維持される。たとえば、データボリュームが、たとえばユーザが新規文書を保存することに起因して変更された場合、データボリュームに対する変更は、現在の領域におけるデータボリュームと、移行先領域におけるデータボリュームとが確実に同じに見えるようにコピーされることになる。
【００３６】
５５０においては、コピーが完了したとき、現在の領域におけるクラウドデスクトップに関連する現在のユーザセッションは、フリーズされる（たとえば、現在のユーザセッションは、それが、新規インスタンスに接続し直しされ得るまで、ロックまたは一時停止される）。これにより、新規変更は、現在の領域においては全く行われ得ないことが確実になり、それにより、現在の領域におけるデータボリュームと、移行先領域におけるデータボリュームとが、同期から外れることになる。目下の例では、現在のユーザセッションをフリーズすることについて説明しているが、現在のユーザセッションは、フリーズされる必要はない。たとえば、現在の領域における変更は、たとえば、ユーザが、移行先領域において動作するインスタンスに切り替えられるまで、記録さ及び上方に移動可能である。
【００３７】
５６０においては、現在の領域における現在のメモリ及びプロセッサの状態は、移行先領域にコピーされる。５７０においては、移行先領域におけるサーバ４２０上の第２のクラウドデスクトップインスタンス４２２が、コピーされたデータボリュームならびに現在のメモリ及びプロセッサの状態を使用して開始される。これにより、第２のクラウドデスクトップインスタンス４２２は、現在の領域において動作していたクラウドデスクトップインスタンス４１２と実質的には同じに見えることが可能になる。たとえば、データボリュームをコピーする前に現在の領域におけるクラウドデスクトップインスタンス４１２において動作していたいずれのアプリケーションも、第２のクラウドデスクトップインスタンス４２２において動作していることになる。
【００３８】
５８０においては、現在のユーザセッションは、第２のクラウドデスクトップインスタンス４２２に接続し直しされる。現在の領域におけるクラウドデスクトップインスタンスと、第２のクラウドデスクトップインスタンスとの体裁は同じに見える（すなわち、デスクトップ体裁が同じである）ので、ユーザは、クラウドデスクトップが移行先領域に移動したことすら承知していない場合がある。
【００３９】
上記の説明においては、「移動する」及び「コピーする」という用語は、相互交換可能に使用される。コピー及び／または移動動作の性質に起因して、コピー／移動動作が完了するまで、コピーがソースデバイスに残ることができることを理解すべきである。当技術分野においてよく理解されるように、これにより、デバイスの接続が失われた、シャットダウンしたなどの場合に、データ持続性が可能になる。
【００４０】
したがって、クラウドデスクトップインスタンスは、クライアントデバイスに対して、地理的により近い、またはレイテンシがより低い移行先領域において動作しているので、ユーザは、クラウドデスクトップを使用しているとき、より良い性能を経験するはずである。
【００４１】
クラウドコンピューティング環境
図６は、本明細書に説明する実施形態がこの中で使用可能な１つの環境を示すネットワークベースのコンピュートサービスプロバイダ６００のコンピューティングシステム略図である。バックグランドとして、コンピュートサービスプロバイダ６００（すなわち、クラウドプロバイダ）は、最終受信側のコミュニティに対するサービスとしてコンピューティング及びストレージ容量を配信することができる。例示的な実施形態においては、コンピュートサービスプロバイダは、組織によってまたは組織の代わりに、組織のために確立され得る。つまり、コンピュートサービスプロバイダ６００は、「プライベートクラウド環境」を提案し得る。別の実施形態においては、コンピュートサービスプロバイダ６００は、マルチテナント環境をサポートし、ここでは、複数の顧客が、独立して操作する（すなわち、パブリッククラウド環境）。概して言えば、コンピュートサービスプロバイダ６００は、次のモデル：Ｉｎｆｒａｓｔｒｕｃｔｕｒｅ  ａｓ  ａ  Ｓｅｒｖｉｃｅ（「ＩａａＳ」）、Ｐｌａｔｆｏｒｍ  ａｓ  ａ  Ｓｅｒｖｉｃｅ（「ＰａａＳ」）、及び／またはＳｏｆｔｗａｒｅ  ａｓ  ａ  Ｓｅｒｖｉｃｅ（「ＳａａＳ」）を提供することができる。他のモデルが提供可能である。ＩａａＳモデルの場合、コンピュートサービスプロバイダ６００は、物理または仮想マシン、及び他のリソースとしてコンピュータを提案することができる。仮想マシンは、さらに後述するように、ハイパーバイザによってゲストとして実行され得る。ＰａａＳモデルは、言語実行環境、データベース、及びウェブサーバをプログラミングするオペレーティングシステムを含むことができるコンピューティングプラットフォームを配信する。アプリケーション開発者は、下層ハードウェア及びソフトウェアを買う、ならびに管理するコスト負担なしに、コンピュートサービスプロバイダプラットフォームにおいて自分のソフトウェアソリューションを開発し、実行することができる。ＳａａＳモデルは、コンピュートサービスプロバイダにおけるアプリケーションソフトウェアのインストール及び操作を可能にする。いくつかの実施形態においては、最終ユーザは、ウェブブラウザまたは他の軽量クライアントアプリケーションを実行する、デスクトップコンピュータ、ラップトップ、タブレット、スマートフォンなどのネットワーク化されたクライアントデバイスを使用して、コンピュートサービスプロバイダ６００にアクセスする。コンピュートサービスプロバイダ６００が、「クラウド」環境として説明され得ることは、当業者なら認識するであろう。
【００４２】
具体的に例示されたコンピュートサービスプロバイダ６００は、複数のサーバコンピュータ６０２Ａ〜６０２Ｄを含む。４つのサーバコンピュータしか示されていないが、任意の数が使用可能であり、大きいセンタが、数千ものサーバコンピュータを含み得る。サーバコンピュータ６０２Ａ〜６０２Ｄは、ソフトウェアインスタンス６０６Ａ〜６０６Ｄを実行するためのコンピューティングリソースを提供することができる。１つの実施形態においては、インスタンス６０６Ａ〜６０６Ｄは、仮想マシンである。当技術分野においては知られているように、仮想マシンは、物理マシンと同様にアプリケーションを実行するマシン（すなわち、コンピュータ）のソフトウェア実施態様の一例である。仮想マシンの例においては、サーバ６０２Ａ〜６０２Ｄのそれぞれは、ハイパーバイザ６０８、または単一のサーバ上の複数のインスタンス６０６の実行を可能にするように構成された別のタイプのプログラムを実行するように構成可能である。追加として、インスタンス６０６のそれぞれは、１つまたは複数のアプリケーションを実行するように構成可能である。
【００４３】
本明細書に開示される実施形態は、主として、仮想マシンの文脈で説明しているが、他のタイプのインスタンスが、本明細書に開示される概念及び技術とともに利用可能であることは理解すべきである。例として、本明細書に開示される技術は、ストレージリソース、データ通信リソースとともに、及び他のタイプのコンピューティングリソースとともに利用可能である。本明細書に開示される実施形態はまた、仮想マシンインスタンスを利用せずに、アプリケーションのすべてまたは一部分をコンピュータシステムにおいて直接、実行することもあり得る。
【００４４】
１つまたは複数のサーバコンピュータコンピュータ６０４が、サーバコンピュータ６０２及びインスタンス６０６の動作を管理するためのソフトウェア構成要素を実行するために確保され得る。たとえば、サーバコンピュータ６０４は、管理構成要素６１０を実行することができる。顧客は、顧客が購入したインスタンス６０６の動作の様々な態様を構成設定するために管理構成要素６１０にアクセスすることができる。たとえば、顧客は、インスタンスを購入する、借りるまたは貸し出し、インスタンスの構成設定に変更を行うことができる。顧客はまた、購入されたインスタンスが、需要に応えてどのようにスケーリングすべきであるかに関して設定を指定することができる。管理コンポーネントは、顧客ポリシーを実装するポリシー文書をさらに含むことができる。自動スケーリング構成要素６１２が、顧客によって定義されるルールに基づいてインスタンス６０６をスケーリングすることができる。１つの実施形態においては、自動スケーリング構成要素６１２により、顧客は、新規インスタンスがいつインスタンス化されるべきであるかを決定する際に使用するためのスケールアップルール、及び既存のインスタンスがいつ打ち切られるべきであるかを決定する際に使用するためのスケールダウンルールを指定することが可能になる。自動スケーリング構成要素６１２は、相異なるサーバコンピュータ６０２または他のコンピューティングデバイスにおいて実行するいくつかの副構成要素から成る場合がある。自動スケーリング構成要素６１２は、内部管理ネットワークを介して利用可能なコンピューティングリソースをモニタリングし、ニーズに基づいて利用可能なリソースを修正することができる。
【００４５】
展開構成要素６１４が、コンピューティングリソースの新規インスタンス６０６の展開において顧客を支援するのに使用され得る。展開構成要素は、誰がアカウントのオーナーであるのか、クレジットカード情報、オーナーの国名など、インスタンスに関連するアカウント情報にアクセスすることができる。展開構成要素６１４は、新規インスタンス６０６がどのように構成設定されるべきであるかを記述するデータを含む、顧客からの構成設定を受け取ることができる。たとえば、構成設定は、新規インスタンス６０６にインストールすべき１つまたは複数のアプリケーションを指定すること、新規インスタンス６０６を構成設定するように実行すべきスクリプト及び／または他のタイプのコードを提供すること、アプリケーションキャッシュがどのように準備されるべきであるかを指定するキャッシュロジック、ならびに他のタイプの情報を提供することができる。展開構成要素６１４は、新規インスタンス６０６を構成設定し、事前準備をし、立ち上げるために、顧客提供の構成設定及びキャッシュロジックを利用することができる。構成設定、キャッシュロジック、及び他の情報は、管理構成要素６１０を使用する顧客によって、または展開構成要素６１４に直接この情報を提供することによって指定され得る。インスタンスマネージャは、展開構成要素の一部と見なすことができる。
【００４６】
顧客アカウント情報６１５が、マルチテナント環境の顧客に関連する任意の所望の情報を含むことができる。たとえば、顧客アカウント情報には、顧客の一意の識別子、顧客アドレス、支払情報、ライセンシング情報、インスタンスを立ち上げるためのカスタマイズパラメータ、スケジューリング情報、自動スケーリングパラメータ、アカウントにアクセスするのに使用される、以前のＩＰアドレスなどが含まれ得る。
【００４７】
健康モニタ６１６が、サーバコンピュータ６０２に対するユーザデバイスの健康状態（たとえば、ネットワークレイテンシ）をトラッキングすることができる。たとえば、健康モニタ６１６が、健康状態が悪い（たとえば、ネットワークレイテンシが高い）ことを決定する場合、健康モニタ６１６は、ユーザにアラートすることができる。
【００４８】
移行構成要素６１８が、データボリュームをあるデータセンタから別のデータセンタに移行するのに使用され得る。移行構成要素６１８は、接続及び場所情報を含むそれ自体のデータストアを有することができる。たとえば、接続及び場所情報は、移行先領域を特定するのに使用され得る。図６においては、健康モニタ６１６及び移行構成要素６１８は、個別の構成要素として描かれている。健康モニタ６１６及び／または移行構成要素６１８はまた、別の構成要素（たとえば、管理構成要素６１０）の一部であってもよいことを理解すべきである。さらには、管理構成要素はまた、クラウドデスクトップを管理するためにクラウドデスクトップ管理構成要素を含むことができる。クラウドデスクトップ管理構成要素もまた、クラウドデスクトップを移行するのに使用され得る。
【００４９】
ネットワーク６３０が、サーバコンピュータ６０２Ａ〜６０２Ｄとサーバコンピュータ６０４とを相互接続するのに利用可能である。ネットワーク６３０は、ローカルエリアネットワーク（ＬＡＮ）であってよく、ワイドエリアネットワーク（広域ネットワーク：ＷＡＮ）６４０に接続されてよく、それにより、最終ユーザは、コンピュートサービスプロバイダ６００にアクセスすることができる。図６に示すネットワークトポロジーが単純化されていること、ならびにさらに多くのネットワーク及びネットワーキングデバイスが、本明細書に開示される様々なコンピューティングシステムを相互接続するのに利用可能であることを認識すべきである。
【００５０】
図７は、コンピュートサービスプロバイダ６００のマルチテナント環境に使用可能な管理構成要素７０６をさらに詳細に示している。インスタンス（図６のインスタンス６０６など）にアクセスする、及びそれを利用するために、クライアントデバイスが使用可能である。クライアントデバイス７１０は、モバイル、またはそうでなければ、セルフォン、スマートフォン、ハンドヘルドコンピュータ、Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ（パーソナルデジタルアシスタント：ＰＤＡ）、デスクトップコンピュータなどを含む多様なコンピューティングデバイスのうちのいずれかとすることができる。クライアントデバイス７１０は、エンドポイント７１２を経由して、コンピュートサービスプロバイダ６００と通信することができ、このエンドポイント７１２は、ＡＰＩ要求を受け取り、処理するように設計されたＤＮＳアドレスとすることができる。具体的には、エンドポイント７１２は、ＡＰＩを公表するように構成されたウェブサーバとすることができる。ＡＰＩ要求を使用して、クライアント７１０は、本明細書に説明する機能性のいずれかを実装するように要求を行うことができる。コンピュートサービスプロバイダ６００の内部にあることができる他のサービス７１５は、同様に、エンドポイント７１２にＡＰＩ要求を行うことができる。
【００５１】
コンピュートサービスプロバイダ６００に含まれている場合も、または含まれていない場合もある他の一般管理サービスは、許可制御部７１４、たとえば、許可制御ウェブサービスとして一緒に動作する１つまたは複数のコンピュータを含むことができる。許可制御部７１４は、コンピュートサービスプロバイダ６００内でのサービスまたはデータストレージのＡＰＩ要求を認証し、検証し、アンパックすることができる。容量トラッカ７１６は、容量の予測、プロビジョニング、ならびにリアルタイムの構成設定および割当ての観点で、物理的インベントリを管理し、構成設定することによって、相異なるインスタンスタイプのニーズを満たすために、サーバがどのように構成設定される必要があるかを決定することを担う。容量トラッカ７１６は、容量プールデータベース７１８に、利用可能なインベントリのプールを維持する。容量トラッカ７１６はまた、リソースがすぐに利用可能であるか、それとも制限されているかを知るために、容量レベルをモニタリングすることができる。インスタンスマネージャ７５０は、ネットワークにおけるインスタンスの立上げ及び打切りを制御する。インスタンスを立ち上げる命令が（たとえば、ＡＰＩ要求を介して）受領されるとき、インスタンスマネージャは、容量プール７１８からリソースを引き出し、インスタンスを立ち上げて、ホストサーバコンピュータを決める。ストレージマネージャ７２２及びネットワークリソースマネージャ７２４は、インスタンスマネージャと同様である。ストレージマネージャ７２２は、ストレージボリュームの開始及び打切りに関係し、一方、ネットワークリソースマネージャ７２４は、ルータ、スイッチ、サブネットなどの開始及び打切りに関係する。ネットワークパーティション７４０については、図６との関連でさらに説明し、インスタンスが立ち上げられる物理レイヤを含む。
【００５２】
健康モニタリングサービス７６０が、顧客がコンピュートサービスプロバイダ６００において実行するリソース及びアプリケーションについてモニタリングを行うことができる。システム管理者は、健康モニタリングサービス７６０を使用して、測定基準を収集し、トラッキングし、アプリケーションがどのように動作しているかに対する知見を得ることができる。たとえば、健康モニタリングサービス７６０は、アプリケーション性能及び操作上の健康状態へのシステム全体にわたる可視性を可能にすることができる。健康モニタリングサービス７６０によって生成される測定基準は、測定基準データベース７６２に記憶され得る。
【００５３】
図８は、ネットワークパーティション８４０、及びそれに関連する物理ハードウェアを示している。ネットワークパーティション８４０は、データセンタ８１０など、ルータ８１６によって一緒に連結される複数のデータセンタを含むことができる。ルータ８１６は、受け取ったパケットにおけるアドレス情報を読み取り、パケットの宛先を決定する。ルータが、異なるデータセンタはホストサーバコンピュータを含んでいると判断する場合には、パケットは、そのデータセンタに転送される。パケットが、データセンタ８１０の中のホストにアドレス指定される場合には、それは、パケットのパブリックＩＰアドレスをプライベートＩＰアドレスに変換するネットワークアドレストランスレータ（ＮＡＴ）８１８に引き渡される。ＮＡＴはまた、プライベートアドレスを、データセンタ８１０の外側にバインドされるパブリックアドレスに変換する。追加のルータ８２０が、ホストサーバコンピュータの１つまたは複数のラック８３０にパケットを経路指定するためにＮＡＴに連結され得る。各ラック８３０は、複数のホストサーバコンピュータに連結されるスイッチ８３２を含むことができる。特定のホストサーバコンピュータが、８４０において拡大図で示されている。
【００５４】
各ホスト８４０は、１つまたは複数のＣＰＵ、メモリ、ストレージデバイスなどを含む下層ハードウェア８５０を有する。ハードウェア８５０の上側のレイヤを実行しているのが、ハイパーバイザまたはカーネルレイヤ８６０である。ハイパーバイザまたはカーネルレイヤは、タイプ１またはタイプ２ハイパーバイザとして分類され得る。タイプ１ハイパーバイザは、ホストハードウェア８５０において直接、動作して、ハードウェアを制御し、ゲストオペレーティングシステムを管理する。タイプ２ハイパーバイザは、従来のオペレーティングシステム環境内で動作する。したがって、タイプ２環境においては、ハイパーバイザは、オペレーティングシステムの上側で動作する別個のレイヤとすることができ、オペレーティングシステムは、システムハードウェアとやり取りする。相異なるタイプのハイパーバイザには、Ｘｅｎベース、Ｈｙｐｅｒ−Ｖ、ＥＳＸｉ／ＥＳＸ、Ｌｉｎｕｘなどが含まれるが、他のハイパーバイザが使用可能である。管理レイヤ８７０がハイパーバイザの一部であっても、またはそれとは分離していることがあり、概して、ハードウェア８５０にアクセスするのに必要なデバイスドライバを含む。パーティション８８０は、ハイパーバイザによる隔離したロジック装置である。各パーティション８８０には、ハードウェアレイヤのメモリ、ＣＰＵ割当て、ストレージなどのそれ自体の部分が割り当てられ得る。追加として、各パーティションは、仮想マシン、及びそれ自体のゲストオペレーティングシステムを含むことができる。したがって、各パーティションは、他のパーティションとは独立してそれ自体の仮想マシンをサポートするように設計された容量の抽象的な一部分である。
【００５５】
インスタンスにおいて実行するいずれのアプリケーションも、管理レイヤ８７０を使用してモニタリング可能であり、次いで、この管理レイヤ８７０は、測定基準を、測定基準データベース７６２に記憶するために健康モニタリングサービス７６０に引き渡すことができる。追加として、管理レイヤ８７０は、立ち上がったときに動作しているインスタンス、使用されているオペレーティングシステム、実行されているアプリケーションなどの数を健康モニタリングサービス７６０に引き渡すことができる。すべてのそのような測定基準は、健康モニタリングサービス７６０による消費に使用され得、測定基準データベース７６２に記憶され得る。
【００５６】
クラウドデスクトップ環境
図９は、クラウドデスクトップリソースを様々なユーザデバイスに提供することができるクラウドデスクトップ環境の略図である。クラウドデスクトップ環境は、諸革新が任意のタイプのコンピューティングデバイスにおいて実装されるとき、使用または機能性の範囲に関していずれの限定も示唆することを意図していない。たとえば、コンピューティングが、多様なコンピューティングデバイス（たとえば、サーバコンピュータ、デスクトップコンピュータ、ラップトップ、タブレット、モバイルフォン、または別のタイプのコンピューティングデバイス）のうちのいずれかとすることができる。
【００５７】
図９を参照すると、クラウドデスクトップ環境は、１つまたは複数のユーザデバイス９０２Ａ、９０２Ｂ、９０２Ｃを含んでよい。ユーザデバイス９０２Ａ、９０２Ｂ、及び９０２Ｃのそれぞれは、同じ領域にあっても、または相異なる領域にあってもよい。たとえば、ユーザデバイス９０２Ａが、ある領域（たとえば、オフィス）の中のユーザによって使用され得、ユーザデバイス９０２Ｂ及び９０２Ｃが、異なる領域の中（たとえば、出張中）のユーザによって使用され得る。ユーザは、通常は、ある領域（すなわち、領域１）に位置している自分のクラウドデスクトップにアクセスすることができる。領域は、ユーザに関連するクラウドデスクトップをホストする１つまたは複数のデータセンタ９１２Ａ〜９１２Ｎを含んでいることができる。
【００５８】
ユーザが、異なる地理的場所にいる（すなわち、ユーザが、異なる地理的場所におけるユーザコンピューティングデバイス９０２Ｂまたは９０２Ｃを介して、自分のクラウドデスクトップにアクセスすることを試みている）ことが決定される場合に、ユーザのクラウドデスクトップセッションは、異なる領域に（たとえば、領域１から領域２に）移動することができる。別の例としては、クラウドデスクトップインスタンスが異なる領域に（すなわち、領域１から領域２に）移動した場合、ユーザのクラウドデスクトップセッション性能が向上することになることが決定され得る。したがって、ユーザに関連するデータボリュームが、領域１から領域２に移動し、ここで、クラウドデスクトップセッションは、新規領域において、データセンタ９２２Ａ〜９２２Ｎのうちの少なくとも１つにおいてホスト可能である。
【００５９】
本明細書には、クラウドデスクトップが移行されることについて説明しているが、実施形態のうちのいずれもが、クラウドベースのサービスにも適用可能であることを理解すべきである。たとえば、音楽ストリーミングサービスまたはデータベースなどのクラウドベースのサービスが新規領域に移行される場合に、より良く行うことになることが決定される場合、記載の実施形態のうちのいずれもが、クラウドベースのサービスを異なる領域に移行するのに使用され得る。
【００６０】
本開示の実施形態は、次の条項を考慮して説明することができる。
１．クラウドデスクトップを領域間で移行するための方法であって、
前記クラウドデスクトップを、現在の領域から、ユーザコンピューティングデバイスから前記現在の領域までのネットワークレイテンシ、または前記現在の領域に対する前記ユーザコンピューティングデバイスの地理的場所のうちの少なくとも１つに基づいて、移行することを決定することと、
前記クラウドデスクトップを移行する先の移行先領域を、前記ユーザコンピューティングデバイスから前記移行先領域までのネットワークレイテンシ、または前記移行先領域に対する前記ユーザコンピューティングデバイスの地理的場所のうちの少なくとも１つに基づいて、特定することと、
前記クラウドデスクトップのデータボリュームを前記現在の領域から前記移行先領域にコピーすることであって、前記データボリュームが、前記クラウドデスクトップのユーザに関連するユーザデータを含む、前記コピーすることと、
前記現在の領域における前記データボリューム及び前記移行先領域における前記データボリュームを前記コピー中に同期して維持することと、
前記コピーの完了と同時に、
前記現在の領域における前記クラウドデスクトップに関連する現在のユーザセッションをフリーズすること、
前記現在のユーザセッションの現在のメモリ及びプロセッサの状態を前記移行先領域にコピーすること、
前記コピーされたデータボリュームならびに現在のメモリ及びプロセッサの状態を使用して、前記移行先領域におけるクラウドデスクトップインスタンスを開始すること、ならびに
前記現在のユーザセッションを前記移行先領域における前記クラウドデスクトップインスタンスに接続し直すことと、
を含む、前記方法。
【００６１】
２．前記決定することが、
前記ユーザコンピューティングデバイスから前記現在の領域までの前記ネットワークレイテンシを計算することと、
前記ユーザコンピューティングデバイスから前記現在の領域までの前記ネットワークレイテンシが、レイテンシ閾値を超えることを判定することと、
を含む、請求項１に記載の方法。
【００６２】
３．前記計算することが、ピング動作を行うことを含み、前記ピング動作が、前記ユーザコンピューティングデバイスによって前記現在の領域に送信されるパケットのタイムシグネチャを決定する、請求項２に記載の方法。
【００６３】
４．前記決定することが、
前記ユーザコンピューティングデバイスの現在の地理的場所を特定することと、
前記クラウドデスクトップが、前記現在の領域に対する前記ユーザコンピューティングデバイスの前記現在の地理的場所に基づいて、移行すべきであることを決定することと、
を含む、請求項１に記載の方法。
【００６４】
５．前記現在の地理的場所が、前記ユーザコンピューティングデバイスのＩＰアドレスによって特定される、請求項４に記載の方法。
【００６５】
６．前記決定することが、
ユーザ及び前記クラウドデスクトップに関連する管理者のうちの一方に、前記クラウドデスクトップを移行するように促すことと、
前記クラウドデスクトップを前記移行先領域に移行するための選択をユーザ及び管理者のうちの前記一方から受け取ることと、
を含む、請求項１に記載の方法。
【００６６】
７．前記決定することが、前記クラウドデスクトップのユーザからの入力なしに、前記現在のユーザセッション中に自動的に行われる、請求項１に記載の方法。
【００６７】
８．前記特定することが、
１つまたは複数の候補領域を特定することと、
前記ユーザコンピューティングデバイスから前記１つまたは複数の候補領域までのネットワークレイテンシ、あるいは前記１つまたは複数の候補領域に対する前記ユーザコンピューティングデバイスの地理的場所のうちの少なくとも１つに基づいて、前記移行先領域を決定するために前記１つまたは複数の候補領域を評価することと、
を含む、請求項１に記載の方法。
【００６８】
９．前記特定することが、
前記ユーザコンピューティングデバイスの現在の地理的場所についての履歴ネットワークレイテンシデータに少なくとも基づいて、前記移行先領域を特定すること、
を含む、請求項１に記載の方法。
【００６９】
１０．前記特定することが、
１つまたは複数の候補領域を特定することと、
前記ユーザコンピューティングデバイスから前記１つまたは複数の候補領域までのレイテンシ、あるいは前記１つまたは複数の候補領域に対する前記ユーザコンピューティングデバイスの地理的場所のうちの少なくとも１つに基づいて、前記移行先領域を決定するために前記１つまたは複数の候補領域を評価することと、
を含む、請求項１に記載の方法。
【００７０】
１１．１つまたは複数の候補領域を前記特定することが、
前記１つまたは複数の候補領域についての支払構造に基づいて、前記１つまたは複数の候補領域を特定すること、
を含む、請求項８に記載の方法。
【００７１】
１２．仮想デスクトップをデータセンタ間で移行するためのコンピューティングシステムであって、
現在のデータセンタであって、仮想デスクトップ及びデータボリュームを含み、前記データボリュームが、前記仮想デスクトップのユーザに関連するユーザデータを含む、前記現在のデータセンタと、
１つまたは複数の候補データセンタと、
管理構成要素であって、
仮想デスクトップを、前記現在のデータセンタから、ユーザコンピューティングデバイスから前記現在のデータセンタまでのネットワークレイテンシ、または前記現在のデータセンタに対する前記ユーザコンピューティングデバイスの地理的場所のうちの少なくとも１つに基づいて、移行することを決定すること、
前記仮想デスクトップを移行する先の前記１つまたは複数の候補データセンタのうちの１つを移行先データセンタとして、前記ユーザコンピューティングデバイスから前記移行先データセンタまでのネットワークレイテンシ、または前記移行先データセンタに対する前記ユーザコンピューティングデバイスの地理的場所のうちの少なくとも１つに基づいて、特定すること、及び
前記仮想デスクトップの前記データボリュームを前記現在のデータセンタから前記移行先データセンタに移動させること、
を含む動作を行うように構成された、前記管理構成要素と、
前記仮想デスクトップの前記データボリューム及び１つまたは複数のデータセンタをトラッキングする制御プレーンレイヤであって、
ユーザ接続要求を受け取ると同時に、前記ユーザ接続要求を前記移行先データセンタにおいて動作する前記仮想デスクトップのインスタンスに向けること、
を含む動作を行うように構成された、前記制御プレーンレイヤと、
を含む、前記コンピューティングシステム。
【００７２】
１３．前記ユーザコンピューティングデバイスから前記移行先データセンタまでの前記ネットワークレイテンシが、前記ユーザコンピューティングデバイスから前記現在のデータセンタまでのネットワークレイテンシよりも小さい、請求項９に記載のコンピューティングシステム。
【００７３】
１４．前記移行先データセンタに対する前記ユーザコンピューティングデバイスの前記地理的場所が、前記現在のデータセンタに対する前記ユーザコンピューティングデバイスの地理的場所よりも近い、請求項９に記載のコンピューティングシステム。
【００７４】
１５．前記管理構成要素が、
前記現在のデータセンタにおいて動作する前記仮想デスクトップのインスタンスをシャットダウンすることと、
前記移行先データセンタにおける前記仮想デスクトップのインスタンスを開始することと、
を含むさらなる動作を行うように構成されている、請求項９に記載のコンピューティングシステム。
【００７５】
１６．前記管理構成要素が、
前記現在のデータセンタにおける前記データボリュームのコピー及び前記移行先データセンタにおける前記データボリュームのコピーを前記移動中に同期して維持することと、
前記移動の完了と同時に、
前記現在のデータセンタにおける前記仮想デスクトップに関連する現在のユーザセッションをフリーズすること、
前記現在のユーザセッションの現在のメモリ及びプロセッサの状態を前記移行先データセンタにコピーすること、
前記移動したデータボリュームならびに前記コピーされた現在のメモリ及びプロセッサの状態を使用して、前記移行先データセンタにおける前記仮想デスクトップのインスタンスを開始すること、ならびに
前記現在のユーザセッションを前記移行先データセンタにおける前記仮想デスクトップの前記開始されたインスタンスに接続し直すこと、
を含むさらなる動作を行うように構成されている、請求項９に記載のコンピューティングシステム。
【００７６】
１７．クラウドベースのサービスを領域間で移行するための動作を行うための命令を記憶したコンピュータ可読ストレージ媒体であって、前記動作が、
クラウドベースのサービスを、現在の領域から、ユーザコンピューティングデバイスから前記現在の領域までのネットワークレイテンシ、または前記現在の領域に対する前記ユーザコンピューティングデバイスの地理的場所のうちの少なくとも１つに基づいて、移行することを決定することと、
前記クラウドベースのサービスを移行する先の移行先領域を、前記ユーザコンピューティングデバイスから前記移行先領域までのネットワークレイテンシ、または前記移行先領域に対する前記ユーザコンピューティングデバイスの地理的場所のうちの少なくとも１つに基づいて、特定することと、
前記クラウドベースのサービスのデータボリュームを前記現在の領域から前記移行先領域にコピーすることと、
前記移行先領域における前記データボリュームを使用して、クラウドベースのサービスインスタンスを開始することと、
前記クラウドベースのサービスに関連する現在のユーザセッションを前記移行先領域における前記クラウドベースのサービスインスタンスに接続することと、
を含む、前記コンピュータ可読ストレージ媒体。
【００７７】
１８．前記動作が、
前記現在の領域における前記データボリュームのコピー及び前記移行先領域における前記データボリュームのコピーを前記コピー中に同期して維持することと、
前記コピーの完了と同時に、
前記現在の領域における前記クラウドベースのサービスに関連する前記現在のユーザセッションをフリーズすること、ならびに
前記現在のユーザセッションの現在のメモリ及びプロセッサの状態を前記移行先領域にコピーすることと、
をさらに含み、
クラウドベースのサービスインスタンスを前記開始することが、前記移動したデータボリュームならびに前記コピーされた現在のメモリ及びプロセッサの状態を使用して、前記移行先領域における前記クラウドベースのサービスのインスタンスを起動することを含む、
請求項１３に記載のコンピュータ可読ストレージ媒体。   
【００７８】
１９．前記決定することが、
前記ユーザコンピューティングデバイスから前記現在の領域までの前記ネットワークレイテンシを計算することと、
前記ネットワークレイテンシが、レイテンシ閾値を超えることを判定することと、
を含む、請求項１３に記載のコンピュータ可読ストレージ媒体。
【００７９】
２０．前記決定することが、ユーザからの入力なしに、前記クラウドベースのサービスに関連する前記現在のユーザセッション中に自動的に行われる、請求項１３に記載のコンピュータ可読ストレージ媒体。
【００８０】
例示的なコンピューティング環境
図１０は、記載の革新がこの中で実装され得る適切なコンピューティング環境１０００の一般化された例を示している。コンピューティング環境１０００は、諸革新が、種々の汎用または専用のコンピューティングシステムにおいて実装され得るとき、使用または機能性の範囲に関していずれの限定も示唆することを意図していない。たとえば、コンピューティング環境１０００は、多様なコンピューティングデバイス（たとえば、デスクトップコンピュータ、ラップトップコンピュータ、サーバコンピュータ、タブレットコンピュータなど）のうちのいずれかとすることができる。
【００８１】
図１０を参照すると、コンピューティング環境１０００は、１つまたは複数の処理装置１０１０、１０１５、及びメモリ１０２０、１０２５を含む。図１０においては、この基本構成１０３０は、破線内に含められる。処理装置１０１０、１０１５は、コンピュータ実行可能命令を実行する。処理装置は、汎用中央処理装置（ＣＰＵ）、特定用途向け集積回路（ＡＳＩＣ）の中のプロセッサ、または任意の他のタイプのプロセッサとすることができる。マルチ処理システムにおいては、複数の処理装置が、処理パワーを増大させるためにコンピュータ実行可能命令を実行する。たとえば、図１０は、中央処理装置１０１０、ならびにグラフィックス処理装置または共処理装置１０１５を示している。有形メモリ１０２０、１０２５は、処理装置（複数可）がアクセスできる揮発性メモリ（たとえばレジスタ、キャッシュ、ＲＡＭ）、不揮発性メモリ（たとえばＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリなど）、またはこの２つの何らかの組合せであってよい。メモリ１０２０、１０２５は、処理装置（複数可）が実行するのに適しているコンピュータ実行可能命令の形態で、本明細書に説明する１つまたは複数の革新を実装するソフトウェア１０８０を記憶する。
【００８２】
コンピューティングシステムは、追加の特徴を有し得る。たとえば、コンピューティング環境１０００は、ストレージ１０４０、１つまたは複数の入力デバイス１０５０、１つまたは複数の出力デバイス１０６０、及び１つまたは複数の通信接続部１０７０を含む。バス、コントローラ、またはネットワークなどの相互接続機構（図示せず）が、コンピューティング環境１０００の構成要素を相互接続する。典型的には、オペレーティングシステムソフトウェア（図示せず）は、コンピューティング環境１０００において実行する他のソフトウェアにオペレーティング環境を提供し、コンピューティング環境１０００の構成要素の活動を調整する。
【００８３】
有形ストレージ１０４０は、取外し式であっても、または非取外し式であってもよく、磁気ディスク、磁気テープまたはカセット、ＣＤ−ＲＯＭ、ＤＶＤ、または非一時的な方式で情報を記憶するのに使用可能であり、コンピューティング環境１０００内でアクセス可能な任意の他の媒体を含む。ストレージ１０４０は、本明細書に説明する１つまたは複数の革新を実装するソフトウェア１０８０のための命令を記憶する。
【００８４】
入力デバイス（複数可）１０５０は、キーボード、マウス、ペン、もしくはトラックボールなどのタッチ入力デバイス、音声入力デバイス、スキャニングデバイス、またはコンピューティング環境１０００に入力を提供する別のデバイスであってよい。出力デバイス（複数可）１０６０は、ディスプレイ、プリンタ、スピーカ、ＣＤライタ、またはコンピューティング環境１０００から出力を提供する別のデバイスであってよい。
【００８５】
通信接続部（複数可）１０７０は、別のコンピューティングエンティティへの通信媒体を介する通信を可能にする。通信媒体は、コンピュータ実行可能命令、音響または映像の入力もしくは出力、あるいは変調されたデータ信号における他のデータなどの情報を伝達する。変調されたデータ信号は、情報を信号に符号化するようなやり方で設定あるいは変更されるその特性のうちの１つまたは複数を有する信号である。限定ではなく、例として、通信媒体は、電気、光学、ＲＦ、または他の搬送波を使用することができる。
【００８６】
開示された方法のうちの一部の動作は、便宜的に表現するために、具体的な一連の順序で説明しているが、説明のこのやり方は、具体的な順序付けが下記の特定の文言によって別段、要求されない限り、再構成を包含することを理解すべきである。たとえば、いくつかの場合においては、順次、説明する動作は、再構成されても、または同時に行われてもよい。その上、簡略化するために、添付の図は、開示された方法が他の方法と併せてこの中で使用可能である様々な方式を示していない場合もある。
【００８７】
開示された方法のうちのいずれも、１つまたは複数のコンピュータ可読ストレージ媒体（たとえば、１つあるいは複数の光学媒体ディスク、揮発性メモリ構成要素（ＤＲＡＭもしくはＳＲＡＭなど）、または不揮発性メモリ構成要素（フラッシュメモリもしくはハードドライブなど））において記憶され、コンピュータ（たとえば、スマートフォン、またはコンピューティングハードウェアを含む他のモバイルデバイスを含む任意の市販のコンピュータ）において実行されるコンピュータ実行可能命令として実装可能である。コンピュータ可読ストレージ媒体という用語は、信号及び搬送波など、通信接続を含まない。開示された技法を実装するためのコンピュータ実行可能命令、ならびに開示された実施形態の実装中に生成され、使用される何らかのデータのうちのいずれも、１つまたは複数のコンピュータ可読ストレージ媒体において記憶され得る。コンピュータ実行可能命令は、たとえば、専用のソフトウェアアプリケーション、あるいはウェブブラウザまたは他のソフトウェアアプリケーション（リモートコンピューティングアプリケーションなど）を介してアクセスされる、もしくはダウンロードされるソフトウェアアプリケーションの一部とすることができる。そのようなソフトウェアは、たとえば、単一のローカルコンピュータ（たとえば、任意の適切な市販のコンピュータ）、あるいは１つまたは複数のネットワークコンピュータを使用するネットワーク環境（たとえば、インターネット、広域ネットワーク、ローカルエリアネットワーク、クライアントサーバネットワーク（クラウドコンピューティングネットワークなど）、もしくは他のそのようなネットワーク）において実行可能である。
【００８８】
明確にするために、ソフトウェアベースの実施態様の特定の選択された態様しか説明していない。当技術分野においてよく知られている他の詳細は、省略されている。たとえば、開示された技術は、任意の特定のコンピュータ言語またはプログラムに限定されないことは理解すべきである。例としては、開示された技術は、Ｃ＋＋、Ｊａｖａ（登録商標）、Ｐｅｒｌ、ＪａｖａＳｃｒｉｐｔ（登録商標）、Ａｄｏｂｅ  Ｆｌａｓｈ（登録商標）、または任意の他の適切なプログラミング言語において記述されるソフトウェアによって実装可能である。同様に、開示された技術は、いずれかの特定のコンピュータまたはタイプのハードウェアに限定されない。適切なコンピュータ及びハードウェアの特定の詳細は、よく知られており、本開示に詳細に記載する必要はない。
【００８９】
本明細書に説明するいずれの機能性も、ソフトウェアではなく、１つまたは複数のハードウェアロジック構成要素によって少なくとも一部、実行可能であることもよく理解すべきである。限定ではなく、例として、使用され得る例示的なタイプのハードウェアロジック構成要素には、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、プログラム専用集積回路（ＡＳＩＣ）、プログラム専用標準製品（ＡＳＳＰ）、システムオンチップシステム（ＳＯＣ）、結合プログラマブルロジックデバイス（ＣＰＬＤ）などが含まれる。
【００９０】
さらには、ソフトウェアベースの実施形態（たとえば、コンピュータに、開示された方法のうちのいずれかを行わせるためのコンピュータ実行可能命令を含む）のうちのいずれも、適切な通信手段を介してアップロード、ダウンロード、またはリモートでアクセス可能である。そのような適切な通信手段には、たとえば、インターネット、ワールドワイドウェブ、イントラネット、ソフトウェアアプリケーション、ケーブル（光ファイバケーブルを含む）、磁気通信、電磁通信（ＲＦ、マイクロ波、及び赤外線通信を含む）、電子通信、または他のそのような通信手段が含まれる。
【００９１】
開示された方法、装置、及びシステムは、いかなる形でも限定すると解釈すべきではない。そうではなく、本開示は、単独で、ならびに互いとの様々な組合せ及び副組合せで、様々な開示された実施形態の新しく、非自明の特徴及び態様すべてに対して対象とする。開示された方法、装置、及びシステムが、任意の特定の態様もしくは特徴、またはそれらの組合せに限定されることも、また開示された実施形態が、任意の１つまたは複数の特定の利点が存在し、問題が解決されることを要求することもない。
【００９２】
本開示の発明の原理が適用され得る多くの可能な実施形態を考慮して、例示された実施形態が、単に、本発明の好適な例にすぎず、本発明の範囲を限定するととるべきでないことを認識すべきである。そうではなく、本発明の範囲は、添付の特許請求の範囲によって定義される。そのため、これらの請求項の範囲内に入る本発明全体として特許請求がなされる。
【図１】
0006397568.tif 000002
【図２】
0006397568.tif 000003
【図３】
0006397568.tif 000004
【図４】
0006397568.tif 000005
【図５】
0006397568.tif 000006
【図６】
0006397568.tif 000007
【図７】
0006397568.tif 000008
【図８】
0006397568.tif 000009
【図９】
0006397568.tif 000010
【図１０】
0006397568.tif 000011