(58)【調査した分野】(Int.Cl.,DB名)
前記計算することが、ピング動作を行うことを含み、前記ピング動作が、前記ユーザコンピューティングデバイスによって前記現在の領域に送信されるパケットのタイムシグネチャを決定する、請求項2に記載の方法。
前記ユーザコンピューティングデバイスから前記移行先データセンタまでの前記ネットワークレイテンシが、前記ユーザコンピューティングデバイスから前記現在のデータセンタまでのネットワークレイテンシよりも小さい、請求項9に記載のコンピューティングシステム。
【発明を実施するための形態】
【0005】
概観
以下の説明は、性能を向上させる(たとえば、ネットワークレイテンシを低減させ、帯域幅を増大させるなどの)ために、仮想デスクトップ(たとえば、クラウドデスクトップ、及び/または別のタイプの仮想デスクトップ)を場所(たとえば、領域)間で移行するための技法及び解決策を対象とする。たとえば、地理的場所またはネットワークレイテンシに基づいて、ユーザのクラウドデスクトップインスタンスをある領域から別の領域に移行すると、クラウドデスクトップは、より応答性が高くなり得るので、より喜ばしいユーザエクスペリエンスが得られる可能性がある。本明細書に使用するとき、「ユーザデバイス」という用語は、クラウドデスクトップセッションをホストすることができる任意のタイプのコンピューティングデバイス(たとえば、サーバコンピュータ、デスクトップコンピュータ、ラップトップ、タブレット、モバイルフォン、または別のタイプのコンピューティングデバイス)を示す。
【0006】
クラウドデスクトップは、クラウドの中のサーバにおいて動作することができる。たとえば、クラウドデスクトップインスタンスは、クラウドにおいて動作することができ、ここでは、クラウドデスクトップセッションが、ユーザデバイスにおけるユーザの対話を取り込み、クラウド上の異なる場所において動作するデスクトップインスタンスにおいてその対話を適用する。しかしながら、この対話は、ネットワークレイテンシ、帯域幅、ジッター(たとえば、ネットワークパケットラウンドトリップ回数の変動)、及び/または他の性能測定結果に大きく影響を受ける場合がある。クラウドデスクトップセッションが高いレイテンシである場合、ユーザは、ユーザデバイスのディスプレイ上のラグまたはギザギザした動作を経験し得る。ネットワークレイテンシは、ユーザデバイスとクラウドの中のサーバとの間の地理的距離とともに増加することが多い。ネットワークレイテンシを低減させるためには、クラウドデスクトップについてのサーバ構成要素は、ユーザデバイスに対して高いレイテンシを示す領域から、ユーザデバイスに対してより低いレイテンシを示す領域に移行され得る。本明細書では以降、諸例のうちのいずれにおいても、「データセンタ」及び「領域」という用語は、相互交換可能に使用され得る。データセンタは、クラウドデスクトップについてのサーバ構成要素をホストする物理的な場所を示すことができる。各データセンタは、領域内に位置してよい。しかしながら、1対1の関係性が、データセンタと領域との間に必ずしもあるとは限らない。たとえば、1つの領域が、複数のデータセンタを収容する場合がある。地理的領域は、ユーザデバイスを起点とする距離を包含するエリアを示すことができる。地理的領域はまた、ユーザが位置している可能性がある、及び/またはデータセンタがホストされる可能性がある都市、州、場所の名前、もしくは任意の他の呼称を示すこともある。
【0007】
特定の実施形態においては、クラウドデスクトップが、現在の領域から、ユーザコンピューティングデバイスから現在の領域までのネットワークレイテンシと、現在の領域に対するユーザコンピューティングデバイスの地理的場所とのうちの少なくとも1つに基づいて、移行すべきであることが決定され得る。クラウドデスクトップが移行されることになる先の移行先領域が、ユーザコンピューティングデバイスから移行先領域までのネットワークレイテンシと、移行先領域に対するユーザコンピューティングデバイスの地理的場所とのうちの少なくとも1つに基づいて、特定可能である。現在の領域において動作するクラウドデスクトップの第1のインスタンスが、シャットダウン可能であり、クラウドデスクトップのユーザに関連するユーザデータを含むクラウドデスクトップのデータボリュームが、現在の領域から移行先領域に移動可能である。次いで、移行先領域におけるクラウドデスクトップの第2のインスタンスが、移動したデータボリュームを使用して起動され得る。ユーザ接続要求を受け取ると同時に、ユーザは、移行先領域におけるクラウドデスクトップの第2のインスタンスに向けられ得る。
【0008】
別の実施形態においては、クラウドデスクトップをデータセンタ間で移行するためのコンピューティング環境が提供され得る。このコンピューティング環境は、クラウドデスクトップのデータボリューム及び1つまたは複数のデータセンタをトラッキングする制御プレーンレイヤと、クラウドデスクトップ及びデータボリュームを含んでいる現在のデータセンタと、1つまたは複数の候補データセンタと、管理構成要素とを含んでよい。管理構成要素は、クラウドデスクトップが、現在のデータセンタから、ユーザコンピューティングデバイスから現在のデータセンタまでのネットワークレイテンシと、現在のデータセンタに対するユーザコンピューティングデバイスの地理的場所とのうちの少なくとも1つに基づいて、移行すべきであることを決定するために、及びクラウドデスクトップを、ユーザコンピューティングデバイスから移行先データセンタまでのネットワークレイテンシと、移行先データセンタに対するユーザコンピューティングデバイスの地理的場所とのうちの少なくとも1つに基づいて、移行するための候補データセンタの1つを特定するために使用され得る。クラウドデスクトップのデータボリュームは、現在のデータセンタから、特定された候補データセンタに移動可能である。次いで、ユーザ接続要求を受け取ると同時に、ユーザは、特定された候補データセンタにおけるクラウドデスクトップのインスタンスに向けられ得る。
【0009】
別の実施形態においては、クラウドデスクトップが、現在の領域から移行すべきであることが決定され得る。クラウドデスクトップが移行されることになる先の移行先領域が、特定可能である。クラウドデスクトップのデータボリュームが、現在の領域から移行先領域にコピーされ得るとともに、現在の領域におけるデータボリュームと移行先領域におけるデータボリュームとが、同期して維持される。コピーの完了と同時に、クラウドデスクトップに関連する現在のユーザセッションが、現在の領域においてフリーズされ得、現在のユーザセッションの現在のメモリ及びプロセッサの状態が、移行先領域にコピーされ得る。次いで、第2のクラウドデスクトップインスタンスが、移行先領域におけるデータボリュームならびに現在のメモリ及びプロセッサの状態を使用して、開始され得、現在のユーザセッションは、第2のクラウドデスクトップインスタンスに接続し直しされ得る。
【0010】
したがって、クラウドデスクトップは、別の領域に移動可能であり、それにより、クラウドデスクトップの性能は、向上する。また、クラウドデスクトップが、クラウドデスクトップの性能を向上させること以外の理由で、別の領域に移動する場合があることも理解すべきである。たとえば、クラウドデスクトップは、障害回復処理の一部として、別の領域に移動する場合がある。データセンタの停止状態(またはデータセンタの予定された停止状態)がある場合、クラウドデスクトップは、事前対応的にまたは事後対応的に移動し得る。したがって、ユーザは、自分のクラウドデスクトップが、データセンタ停止状態に起因して移動したことを承知している必要はない。前述のシナリオは、クラウドデスクトップが移行されることを受ける唯一のシナリオではなく、他のシナリオもまた、クラウドデスクトップを移行するために存在し得る。たとえば、サーバメンテナンスでは、クラウドデスクトップが移行される必要がある場合がある。
【0011】
クラウドデスクトップ
図1は、クラウドデスクトップ環境100のコンピューティングシステム略図である。ユーザは、たとえば、ユーザデバイス140において動作するクラウドデスクトップクライアントアプリケーション142を介して、クラウドデスクトップセッションを立ち上げることができる。クラウドデスクトップクライアントアプリケーション142は、ユーザデバイス140を、ある領域におけるサーバ110において動作するクラウドデスクトップインスタンス112に接続し得る。クラウドデスクトップクライアントアプリケーション142は、オペレーティングシステム環境の体裁を模倣することができ、それにより、ユーザには、ユーザデバイス140が、ユーザデバイス140においてローカルにクラウドデスクトップインスタンス112を実行しているように見える。ユーザデバイス140はまた、健康モニタ144も含むことができる。健康モニタ144は、ユーザデバイス40とクラウドデスクトップインスタンス112との間のネットワーク接続をモニタリングする。健康モニタ144は、クラウドデスクトップクライアントアプリケーション142とは分離しているように描かれているが、健康モニタ144が、そうではなく、クラウドデスクトップクライアントアプリケーション142の一部であってもよい。また、健康モニタ144は、ユーザデバイス140において位置付けられているように描かれている。しかしながら、健康モニタが、そうではなく、クラウドデスクトップ環境100の中に位置付けられてもよい。たとえば、健康モニタサーバが、クラウドデスクトップ環境100に存在することがある。さらには、健康モニタは、クラウドデスクトップインスタンスをホストするサーバのうちの1つまたは複数において存在することもある。
【0012】
先の例においては、クラウドデスクトップクライアントアプリケーションについて説明している。しかしながら、クラウドデスクトップクライアントアプリケーションが、必ずしも使用される必要があるわけではない。いくつかの実施形態においては、クラウドデスクトップインスタンスは、ウェブブラウザにおいて見ることができ、ブラウザは、クラウドデスクトップのコンテンツを表示する。
【0013】
制御プレーン130が、クラウドデスクトップインスタンス112が動作している領域の場所を特定する。たとえば、クラウドデスクトップクライアントアプリケーション142は、単一のアクセスポイント(たとえば、接続マネージャ(図示せず))を経由して、クラウドデスクトップに接続してよい。制御プレーン130は、サーバ110において動作するクラウドデスクトップインスタンス112を指し示す。したがって、ユーザがクラウドデスクトップに接続するとき、制御プレーン130は、クラウドデスクトップインスタンス112が位置付けられている領域を指し示す。制御プレーン130はまた、接続が行われ得る先の他の領域に関する情報も有する。したがって、ユーザが領域を変更する場合(または、変更が自動的に行われる場合)、制御プレーン130は、新規領域において動作するクラウドデスクトップインスタンスを指し示すことになる。
図1は、2つの領域を表示しているが、この描写は、例示目的のためであり、多くのさらなる領域が存在する。また、領域ごとに単一のサーバが描かれており、ここでは、多くのサーバが、1つの領域の中に存在する場合がある。加えて、制御プレーン130が、クラウドデスクトップサーバとは分離しているように描かれているが、それは、サーバのうちの1つまたは複数において位置付けられてもよい。
【0014】
クラウドデスクトップインスタンスは、ある領域内のサーバ110においてホストされる。サーバ110は、ユーザのクラウドデスクトップのインスタンスを提供する。サーバ110は、ユーザデバイス140から入力を受け取り、クラウドデスクトップインスタンス112において動作し、ユーザデバイス140における入力をクラウドデスクトップインスタンス112への入力に変換する。たとえば、ユーザがユーザデバイス140において動作しているクラウドデスクトップセッション上のアイコンをクリックする場合、サーバ110上の対応するアプリケーションは、クラウドデスクトップインスタンス112において実行されることになる。クラウドデスクトップインスタンス112は、ユーザが、仮想デスクトップなど、コンピューティングリソース、またはコンピュートノードにアクセスすることを可能にするためにインスタンス化される仮想マシンを含んでよい。代替としては、クラウドデスクトップインスタンス112は、仮想マシンを使用せず、サーバ110において作成され得る。
【0015】
クラウドデスクトップインスタンス112は、デスクトップ環境を含む場合がある。デスクトップ環境は、仮想デスクトップを表す任意のタイプの環境を含み得る。たとえば、デスクトップ環境は、クラウドデスクトップに記憶されるファイル及び/またはアプリケーションと対話するためのインターフェースを含むことができる。いくつかの場合においては、デスクトップ環境は、別のインスタンスによって含まれる、もしくはホストされるデータ及び/またはアプリケーションにアクセスするためのショートカットを含んでもよい。さらには、いくつかの場合においては、デスクトップ環境は、デスクトップの他にファイル及びアプリケーションにアクセスするための追加または代替のインターフェースを提供することができる。たとえば、デスクトップ環境は、ファイルマネージャを含むことも、またはファイルマネージャとすることもできる。いくつかの場合においては、下層のオペレーティングシステム及び/またはハードウェアにかかわらず、デスクトップ環境は、特定のルックアンドフィールを提示し得る。たとえば、デスクトップ環境は、Windows(登録商標)デスクトップ、Linux(登録商標)デスクトップ、またはiOS(登録商標)デスクトップをまねるように構成可能である。他の場合においては、インスタンスは、ユーザによって選択される仮想マシンコンピューティングリソースの一部であってもよい。そのような場合においては、デスクトップ環境は、仮想マシンコンピューティングリソースのための選択されたオペレーティングシステム(たとえば、Windows、Linuxなど)のデスクトップ環境としてよい。
【0016】
先の例においては、領域の中のクラウドデスクトップを実行する単一のサーバ110について説明している。しかしながら、複数のサーバが、クラウドデスクトップに使用可能であることは理解され得る。たとえば、個別のサーバが、デスクトップについてのデータボリュームを含んでいる場合がある。
【0017】
ユーザが、異なる領域から自分のクラウドデスクトップにアクセスしたい場合、ユーザのクラウドデスクトップのデータボリュームが、以前の領域から新規領域におけるサーバ120に移動することができ、新規クラウドデスクトップインスタンス122が、開始され得る。
【0018】
たとえば、ユーザは、様々な要因に基づいて、自分のクラウドデスクトップを別の領域に移動させることに決める場合がある。たとえば、ユーザが、ある地理的領域に居住する(すなわち、その地理的領域のデータセンタが、クラウドデスクトップインスタンスをホストする)が、ある時間期間にわたって異なる地理的領域にいることになる場合、ユーザは、自分のクラウドデスクトップを新規地理的領域に移動させることに決める場合がある。場所は、たとえば、ユーザデバイスのIPアドレスによって決定され得る。代替としては、クラウドデスクトップアプリケーションは、ユーザのネットワークの健康状態が悪いこと、またはそのレイテンシは、ユーザが自分のクラウドデスクトップを別の領域に移行する場合に向上する可能性があることを(たとえば、健康モニタ144またはネットワークモニタを介して)ユーザにアラートし得る。このアラートは、クラウドデスクトップセッションの開始において、クラウドデスクトップセッション中の特定の時刻において、ユーザの指図において(たとえば、ユーザがそのネットワーク速度をテストするためのアプリケーションを開く)、またはクラウドデスクトップセッション全体を通じて一定間隔において行われ得る。
【0019】
先の例においては、クラウドデスクトップセッションについて説明している。クラウドデスクトップセッションは、第1のインスタンスへの接続が、ユーザを接続解除することなしに(たとえば、ユーザは、単一のセッションにログインされる)、第2のインスタンスに向け直しされる場合のセッションを示し得ることを理解すべきである。クラウドデスクトップセッションはまた、第1のインスタンスへの接続が落とされ、第2のインスタンスへの第2の接続が開始される(たとえば、ユーザには、自分のセッションが接続し直しているという指示が与えられ得る)場合のセッションを示し得る。クラウドデスクトップセッションは、先の説明に限定されず、ある領域における第1のインスタンス及び別の領域における第2のインスタンスへのユーザデバイスからの接続を可能にする任意のセッションとしてよい。
【0020】
地理的領域及びレイテンシ
データセンタが、地理的領域に位置付けられる。たとえば、単一の領域(たとえば、オレゴン州ポートランド)が、データセンタ(たとえば、ポートランドデータセンタ)をホストする場合がある。別の領域(たとえば、フロリダ州マイアミ)が、異なるデータセンタ(たとえば、マイアミデータセンタ)をホストする場合がある。ユーザのクラウドデスクトップは、データセンタのうちの任意のデータセンタにおいてホストされ得る。自分のクラウドデスクトップ(すなわち、クラウドデスクトップインスタンス)に接続したいと望んでいるユーザは、自分のユーザデバイスを介して、自分のクラウドデスクトップインスタンスを含んでいるデータセンタにアクセスし得る。ユーザのクラウドデスクトップインスタンスを含んでいるデータセンタは、ユーザのクラウドデスクトップについて最初に起動されるデータセンタとしてよい。しかしながら、ユーザが場所を変更する(たとえば、ユーザがマイアミから仕事をしたいと思う)場合、ユーザの最初のデータセンタは、地理的に距離がある場合があり(たとえば、クラウドデスクトップが、ポートランドデータセンタにおいてホストされる)、及び/またはユーザのクラウドデスクトップセッションは、高いレイテンシに悩まされる場合がある。したがって、ユーザにより近いデータセンタにクラウドデスクトップを位置付けることが望ましい場合がある。たとえば、ユーザコンピューティングデバイスから現在の領域までのネットワークレイテンシは、計算可能であり、レイテンシ閾値は、クラウドデスクトップが移動すべきであるかどうかを決定するのに使用され得る。
【0021】
さらには、レイテンシは、ユーザデバイスに対するデータセンタの距離以外の理由で増加する場合がある。ユーザがどのようにデータセンタに(ネットワークを介して)接続しているのかに応じて、レイテンシは、その接続に応じて増加する場合がある。たとえば、ユーザがデータセンタに接続することを試み、ユーザデバイスからデータセンタへのネットワークトポロジーが長く、または低速の接続を介して進む場合、レイテンシは、可能性としては高くなる。したがって、ユーザデバイスと移行先データセンタとの間の地理的距離を減少させると、ネットワークレイテンシを改善させることができる。しかしながら、これは、いつでもその場合であるとは限らない。たとえば、データセンタがユーザデバイスに地理的に近いが、ユーザデバイスからデータセンタへの接続が低速である場合、地理的に遠くに離れてはいるが、データセンタとユーザデバイスとの間のより高速な接続を介してデータセンタに接続することによって、ユーザは、より良い性能を経験し得る。
【0022】
いくつかの実施形態においては、移行先領域は、ネットワークレイテンシに基づくのではなく他の基準に基づいて選択され得る。たとえば、国が、データストレージに関する規則及び規定を有する場合、移行先領域は、それらの規則及び規定に基づいて選択され得る。さらには、ストレージのコストがデータセンタ間で異なる場合、ユーザは、料金構造に基づいて移行先領域を選択する場合がある。地理的領域の選択は、上記に限定されず、任意の数の要因が、移行先領域を決定するのに使用され得る。たとえば、地理的場所についての履歴レイテンシデータがある場合、移行先領域は、その履歴レイテンシデータに基づいて決定され得る。
【0023】
クラウドデスクトップの移行
図2は、仮想デスクトップ(たとえば、クラウドデスクトップ、またはオンプレミス仮想デスクトップなどの別のタイプの仮想デスクトップ)を移行する例示的な方法を示す流れ図である。210においては、クラウドデスクトップを、現在の領域から、ユーザコンピューティングデバイスから現在の領域までのネットワークレイテンシと、現在の領域に対するユーザコンピューティングデバイスの地理的場所とのうちの少なくとも1つに基づいて、移行することの決定が行われる。たとえば、ユーザは、ネットワーク健康状態が悪い(たとえば、接続の高レイテンシまたは信頼性)という指示を受け取り得る。したがって、クラウドデスクトップセッションは、ユーザが、クラウドデスクトップボリュームを異なる領域に移動させることを推奨してよい。ユーザは、自分のクラウドデスクトップを移行するように促される場合があり、ユーザの選択に基づいて、クラウドデスクトップを移行する決定が行われ得る。決定は、ユーザによる要求と同時に、ユーザのクラウドデスクトップセッションの開始において行われる場合があり、またはネットワークのステータスは、引き続きモニタリングされ得る。加えて、クラウドデスクトップに関連する管理者もまた、(たとえば、管理者が、ネットワークレイテンシが閾値を超えたという指示を受け取った場合)ユーザのクラウドデスクトップを移動させるように促される場合があり、管理者は、クラウドデスクトップを異なる領域に移行することを決定してよい。
【0024】
220においては、クラウドデスクトップを移行する先の移行先領域が、ユーザコンピューティングデバイスから移行先領域までのネットワークレイテンシと、移行先領域に対するユーザコンピューティングデバイスの地理的場所とのうちの少なくとも1つに基づいて、特定される。ユーザには、ユーザに地理的に近いデータセンタのリストが提供され得る。代替としては、クラウドデスクトップは、いくつかのデータセンタにピング送信し、受け取ったパケットのタイムシグネチャを使用して、移行先領域を決定し得る。移行先領域は、ユーザによって特定される場合があり、または移行先は、自動的に決定される場合もある。たとえば、一旦、クラウドデスクトップが移行すべきであると決定されると、移行先領域は、ユーザからの入力なしに特定され得る。複数の候補領域がある場合がある。たとえば、ユーザデバイスから1つまたは複数の候補領域までのネットワークレイテンシと、1つまたは複数の候補領域に対するユーザコンピューティングデバイスの地理的場所とに基づいて、候補領域は、移行先領域を決定するために評価され得る。
【0025】
230においては、現在の領域において動作しているクラウドデスクトップの現在のインスタンス(すなわち、第1のインスタンス)が、シャットダウンされる。クラウドデスクトップボリュームは、移動することになるので、ボリュームが、移行中に、確実に変更されない(すなわち、クラウドデスクトップにおいて変更を行うユーザから)ようにするために、クラウドデスクトップセッションは、一時停止され得る。たとえば、セッションは、プログレスバー、またはクラウドデスクトップが移動の最中である、もしくはそうでなければ、現在のところ利用できないという何らかの他の指示を表示してよい。
【0026】
240においては、クラウドデスクトップのデータボリュームが、現在の領域から移行先領域に移動する。データボリュームは、クラウドデスクトップのユーザに関連するユーザデータ、アプリケーションデータ、アプリケーションソフトウェア、オペレーティングシステムソフトウェア、またはクラウドデスクトップを移行先領域に移動させるのに必要な他の何かを含み得る。
【0027】
250においては、クラウドデスクトップの新規インスタンス(すなわち、第2のインスタンス)が、移動したデータボリュームを使用して、移行先領域において起動される。第2のインスタンスは、オペレーティングシステム画像、現在の領域からのユーザのクラウドデスクトップインスタンス、移動したデータボリューム、及び/またはクラウドデスクトップの第2のインスタンスに使用される任意の他のソフトウェアもしくは設定から作成し直しされ得る。
【0028】
260においては、ユーザ接続要求を受け取ると同時に、ユーザ接続要求は、移行先領域におけるクラウドデスクトップの第2のインスタンスに向けられる。ユーザは、自分のクラウドデスクトップが移動したという指示を受け取ることができ、またはクラウドデスクトップは、ユーザへの通知なしに移動してよい。加えて、ユーザは、クラウドデスクトップがどこに移動したのかということについて承知している必要はない。たとえば、ユーザは、自分のクラウドデスクトップが移動したということが示される指示を受け取り得る。
【0029】
図3は、仮想デスクトップ(たとえば、クラウドデスクトップ、またはオンプレミス仮想デスクトップなどの別のタイプの仮想デスクトップ)を移行する別の例示的な方法を示す流れ図である。310においては、クラウドデスクトップを、現在のデータセンタから、ユーザコンピューティングデバイスから現在のデータセンタまでのネットワークレイテンシと、現在のデータセンタに対するユーザコンピューティングデバイスの地理的場所とのうちの少なくとも1つに基づいて、移行することの決定が行われる。決定は、ユーザによる要求と同時に、ユーザのクラウドデスクトップセッションの開始において行われる場合があり、またはネットワークのステータスは、引き続きモニタリングされ得る。
【0030】
320においては、クラウドデスクトップを移行する先の候補データセンタのうちの1つは、ユーザコンピューティングデバイスから移行先データセンタまでのネットワークレイテンシと、移行先データセンタに対するユーザコンピューティングデバイスの地理的場所とのうちの少なくとも1つに基づいて、移行先データセンタとして特定される。ユーザには、ユーザに地理的に近い候補データセンタのリストが提供され得る。代替としては、クラウドデスクトップは、いくつかの候補データセンタにピング送信し、ユーザコンピューティングデバイスから移行先データセンタまでのネットワークレイテンシが、ユーザコンピューティングデバイスから現在のデータセンタまでのレイテンシよりも小さいデータセンタを選択してよい。
【0031】
330においては、クラウドデスクトップのデータボリュームが、現在のデータセンタから移行先データセンタに移動する。340においては、ユーザ接続要求を受け取ると同時に、ユーザ接続要求は、移行先データセンタにおいて動作しているクラウドデスクトップのインスタンスに向けられる。管理構成要素が、前述のステップのうちのいずれかの性能において使用され得る。
【0032】
図4は、クラウドデスクトップ環境400のコンピューティングシステム略図であり、
図5は、デスクトップを移行する例示的な方法を示す流れ図である。ユーザは、たとえば、ユーザデバイス440において動作しているクラウドデスクトップクライアントアプリケーション442を介して、クラウドデスクトップセッションを立ち上げてよい。クラウドデスクトップクライアントアプリケーション442は、ある領域におけるサーバ410において動作しているクラウドデスクトップインスタンス412にユーザデバイス440を接続し得る。
【0033】
510においては、クラウドデスクトップを、現在の領域から、移行することの決定が行われる。決定は、ユーザによる要求と同時に、ユーザのクラウドデスクトップセッションの開始において行われる場合があり、またはネットワークのステータスは、引き続きモニタリングされ得る。決定は、ユーザデバイス440上の健康モニタ444によって行われ得る。制御プレーン430が、クラウドデスクトップインスタンス412が動作している領域の場所を特定する。
【0034】
520においては、クラウドデスクトップを移行する先の移行先領域が、特定される。ユーザには、ユーザに地理的に近いデータセンタのリストが提供され得る。代替として、クラウドデスクトップは、いくつかのデータセンタにピング送信し、受け取ったパケットのタイムシグネチャを使用して、移行先領域を決定してよい。
【0035】
530においては、クラウドデスクトップのデータボリュームが、現在の領域から移行先領域にコピーされる。データボリュームは、ユーザデータ、アプリケーションデータ、アプリケーションソフトウェア、オペレーティングシステムソフトウェア、またはクラウドデスクトップを移行先領域に移動させるのに必要な他の何かを含んでよい。540においては、現在の領域におけるクラウドデスクトップのデータボリュームと、移行先領域におけるクラウドデスクトップのデータボリュームとは、コピー中に同期して維持される。たとえば、データボリュームが、たとえばユーザが新規文書を保存することに起因して変更された場合、データボリュームに対する変更は、現在の領域におけるデータボリュームと、移行先領域におけるデータボリュームとが確実に同じに見えるようにコピーされることになる。
【0036】
550においては、コピーが完了したとき、現在の領域におけるクラウドデスクトップに関連する現在のユーザセッションは、フリーズされる(たとえば、現在のユーザセッションは、それが、新規インスタンスに接続し直しされ得るまで、ロックまたは一時停止される)。これにより、新規変更は、現在の領域においては全く行われ得ないことが確実になり、それにより、現在の領域におけるデータボリュームと、移行先領域におけるデータボリュームとが、同期から外れることになる。目下の例では、現在のユーザセッションをフリーズすることについて説明しているが、現在のユーザセッションは、フリーズされる必要はない。たとえば、現在の領域における変更は、たとえば、ユーザが、移行先領域において動作するインスタンスに切り替えられるまで、記録さ及び上方に移動可能である。
【0037】
560においては、現在の領域における現在のメモリ及びプロセッサの状態は、移行先領域にコピーされる。570においては、移行先領域におけるサーバ420上の第2のクラウドデスクトップインスタンス422が、コピーされたデータボリュームならびに現在のメモリ及びプロセッサの状態を使用して開始される。これにより、第2のクラウドデスクトップインスタンス422は、現在の領域において動作していたクラウドデスクトップインスタンス412と実質的には同じに見えることが可能になる。たとえば、データボリュームをコピーする前に現在の領域におけるクラウドデスクトップインスタンス412において動作していたいずれのアプリケーションも、第2のクラウドデスクトップインスタンス422において動作していることになる。
【0038】
580においては、現在のユーザセッションは、第2のクラウドデスクトップインスタンス422に接続し直しされる。現在の領域におけるクラウドデスクトップインスタンスと、第2のクラウドデスクトップインスタンスとの体裁は同じに見える(すなわち、デスクトップ体裁が同じである)ので、ユーザは、クラウドデスクトップが移行先領域に移動したことすら承知していない場合がある。
【0039】
上記の説明においては、「移動する」及び「コピーする」という用語は、相互交換可能に使用される。コピー及び/または移動動作の性質に起因して、コピー/移動動作が完了するまで、コピーがソースデバイスに残ることができることを理解すべきである。当技術分野においてよく理解されるように、これにより、デバイスの接続が失われた、シャットダウンしたなどの場合に、データ持続性が可能になる。
【0040】
したがって、クラウドデスクトップインスタンスは、クライアントデバイスに対して、地理的により近い、またはレイテンシがより低い移行先領域において動作しているので、ユーザは、クラウドデスクトップを使用しているとき、より良い性能を経験するはずである。
【0041】
クラウドコンピューティング環境
図6は、本明細書に説明する実施形態がこの中で使用可能な1つの環境を示すネットワークベースのコンピュートサービスプロバイダ600のコンピューティングシステム略図である。バックグランドとして、コンピュートサービスプロバイダ600(すなわち、クラウドプロバイダ)は、最終受信側のコミュニティに対するサービスとしてコンピューティング及びストレージ容量を配信することができる。例示的な実施形態においては、コンピュートサービスプロバイダは、組織によってまたは組織の代わりに、組織のために確立され得る。つまり、コンピュートサービスプロバイダ600は、「プライベートクラウド環境」を提案し得る。別の実施形態においては、コンピュートサービスプロバイダ600は、マルチテナント環境をサポートし、ここでは、複数の顧客が、独立して操作する(すなわち、パブリッククラウド環境)。概して言えば、コンピュートサービスプロバイダ600は、次のモデル:Infrastructure as a Service(「IaaS」)、Platform as a Service(「PaaS」)、及び/またはSoftware as a Service(「SaaS」)を提供することができる。他のモデルが提供可能である。IaaSモデルの場合、コンピュートサービスプロバイダ600は、物理または仮想マシン、及び他のリソースとしてコンピュータを提案することができる。仮想マシンは、さらに後述するように、ハイパーバイザによってゲストとして実行され得る。PaaSモデルは、言語実行環境、データベース、及びウェブサーバをプログラミングするオペレーティングシステムを含むことができるコンピューティングプラットフォームを配信する。アプリケーション開発者は、下層ハードウェア及びソフトウェアを買う、ならびに管理するコスト負担なしに、コンピュートサービスプロバイダプラットフォームにおいて自分のソフトウェアソリューションを開発し、実行することができる。SaaSモデルは、コンピュートサービスプロバイダにおけるアプリケーションソフトウェアのインストール及び操作を可能にする。いくつかの実施形態においては、最終ユーザは、ウェブブラウザまたは他の軽量クライアントアプリケーションを実行する、デスクトップコンピュータ、ラップトップ、タブレット、スマートフォンなどのネットワーク化されたクライアントデバイスを使用して、コンピュートサービスプロバイダ600にアクセスする。コンピュートサービスプロバイダ600が、「クラウド」環境として説明され得ることは、当業者なら認識するであろう。
【0042】
具体的に例示されたコンピュートサービスプロバイダ600は、複数のサーバコンピュータ602A〜602Dを含む。4つのサーバコンピュータしか示されていないが、任意の数が使用可能であり、大きいセンタが、数千ものサーバコンピュータを含み得る。サーバコンピュータ602A〜602Dは、ソフトウェアインスタンス606A〜606Dを実行するためのコンピューティングリソースを提供することができる。1つの実施形態においては、インスタンス606A〜606Dは、仮想マシンである。当技術分野においては知られているように、仮想マシンは、物理マシンと同様にアプリケーションを実行するマシン(すなわち、コンピュータ)のソフトウェア実施態様の一例である。仮想マシンの例においては、サーバ602A〜602Dのそれぞれは、ハイパーバイザ608、または単一のサーバ上の複数のインスタンス606の実行を可能にするように構成された別のタイプのプログラムを実行するように構成可能である。追加として、インスタンス606のそれぞれは、1つまたは複数のアプリケーションを実行するように構成可能である。
【0043】
本明細書に開示される実施形態は、主として、仮想マシンの文脈で説明しているが、他のタイプのインスタンスが、本明細書に開示される概念及び技術とともに利用可能であることは理解すべきである。例として、本明細書に開示される技術は、ストレージリソース、データ通信リソースとともに、及び他のタイプのコンピューティングリソースとともに利用可能である。本明細書に開示される実施形態はまた、仮想マシンインスタンスを利用せずに、アプリケーションのすべてまたは一部分をコンピュータシステムにおいて直接、実行することもあり得る。
【0044】
1つまたは複数のサーバコンピュータコンピュータ604が、サーバコンピュータ602及びインスタンス606の動作を管理するためのソフトウェア構成要素を実行するために確保され得る。たとえば、サーバコンピュータ604は、管理構成要素610を実行することができる。顧客は、顧客が購入したインスタンス606の動作の様々な態様を構成設定するために管理構成要素610にアクセスすることができる。たとえば、顧客は、インスタンスを購入する、借りるまたは貸し出し、インスタンスの構成設定に変更を行うことができる。顧客はまた、購入されたインスタンスが、需要に応えてどのようにスケーリングすべきであるかに関して設定を指定することができる。管理コンポーネントは、顧客ポリシーを実装するポリシー文書をさらに含むことができる。自動スケーリング構成要素612が、顧客によって定義されるルールに基づいてインスタンス606をスケーリングすることができる。1つの実施形態においては、自動スケーリング構成要素612により、顧客は、新規インスタンスがいつインスタンス化されるべきであるかを決定する際に使用するためのスケールアップルール、及び既存のインスタンスがいつ打ち切られるべきであるかを決定する際に使用するためのスケールダウンルールを指定することが可能になる。自動スケーリング構成要素612は、相異なるサーバコンピュータ602または他のコンピューティングデバイスにおいて実行するいくつかの副構成要素から成る場合がある。自動スケーリング構成要素612は、内部管理ネットワークを介して利用可能なコンピューティングリソースをモニタリングし、ニーズに基づいて利用可能なリソースを修正することができる。
【0045】
展開構成要素614が、コンピューティングリソースの新規インスタンス606の展開において顧客を支援するのに使用され得る。展開構成要素は、誰がアカウントのオーナーであるのか、クレジットカード情報、オーナーの国名など、インスタンスに関連するアカウント情報にアクセスすることができる。展開構成要素614は、新規インスタンス606がどのように構成設定されるべきであるかを記述するデータを含む、顧客からの構成設定を受け取ることができる。たとえば、構成設定は、新規インスタンス606にインストールすべき1つまたは複数のアプリケーションを指定すること、新規インスタンス606を構成設定するように実行すべきスクリプト及び/または他のタイプのコードを提供すること、アプリケーションキャッシュがどのように準備されるべきであるかを指定するキャッシュロジック、ならびに他のタイプの情報を提供することができる。展開構成要素614は、新規インスタンス606を構成設定し、事前準備をし、立ち上げるために、顧客提供の構成設定及びキャッシュロジックを利用することができる。構成設定、キャッシュロジック、及び他の情報は、管理構成要素610を使用する顧客によって、または展開構成要素614に直接この情報を提供することによって指定され得る。インスタンスマネージャは、展開構成要素の一部と見なすことができる。
【0046】
顧客アカウント情報615が、マルチテナント環境の顧客に関連する任意の所望の情報を含むことができる。たとえば、顧客アカウント情報には、顧客の一意の識別子、顧客アドレス、支払情報、ライセンシング情報、インスタンスを立ち上げるためのカスタマイズパラメータ、スケジューリング情報、自動スケーリングパラメータ、アカウントにアクセスするのに使用される、以前のIPアドレスなどが含まれ得る。
【0047】
健康モニタ616が、サーバコンピュータ602に対するユーザデバイスの健康状態(たとえば、ネットワークレイテンシ)をトラッキングすることができる。たとえば、健康モニタ616が、健康状態が悪い(たとえば、ネットワークレイテンシが高い)ことを決定する場合、健康モニタ616は、ユーザにアラートすることができる。
【0048】
移行構成要素618が、データボリュームをあるデータセンタから別のデータセンタに移行するのに使用され得る。移行構成要素618は、接続及び場所情報を含むそれ自体のデータストアを有することができる。たとえば、接続及び場所情報は、移行先領域を特定するのに使用され得る。
図6においては、健康モニタ616及び移行構成要素618は、個別の構成要素として描かれている。健康モニタ616及び/または移行構成要素618はまた、別の構成要素(たとえば、管理構成要素610)の一部であってもよいことを理解すべきである。さらには、管理構成要素はまた、クラウドデスクトップを管理するためにクラウドデスクトップ管理構成要素を含むことができる。クラウドデスクトップ管理構成要素もまた、クラウドデスクトップを移行するのに使用され得る。
【0049】
ネットワーク630が、サーバコンピュータ602A〜602Dとサーバコンピュータ604とを相互接続するのに利用可能である。ネットワーク630は、ローカルエリアネットワーク(LAN)であってよく、ワイドエリアネットワーク(広域ネットワーク:WAN)640に接続されてよく、それにより、最終ユーザは、コンピュートサービスプロバイダ600にアクセスすることができる。
図6に示すネットワークトポロジーが単純化されていること、ならびにさらに多くのネットワーク及びネットワーキングデバイスが、本明細書に開示される様々なコンピューティングシステムを相互接続するのに利用可能であることを認識すべきである。
【0050】
図7は、コンピュートサービスプロバイダ600のマルチテナント環境に使用可能な管理構成要素706をさらに詳細に示している。インスタンス(
図6のインスタンス606など)にアクセスする、及びそれを利用するために、クライアントデバイスが使用可能である。クライアントデバイス710は、モバイル、またはそうでなければ、セルフォン、スマートフォン、ハンドヘルドコンピュータ、Personal Digital Assistant(パーソナルデジタルアシスタント:PDA)、デスクトップコンピュータなどを含む多様なコンピューティングデバイスのうちのいずれかとすることができる。クライアントデバイス710は、エンドポイント712を経由して、コンピュートサービスプロバイダ600と通信することができ、このエンドポイント712は、API要求を受け取り、処理するように設計されたDNSアドレスとすることができる。具体的には、エンドポイント712は、APIを公表するように構成されたウェブサーバとすることができる。API要求を使用して、クライアント710は、本明細書に説明する機能性のいずれかを実装するように要求を行うことができる。コンピュートサービスプロバイダ600の内部にあることができる他のサービス715は、同様に、エンドポイント712にAPI要求を行うことができる。
【0051】
コンピュートサービスプロバイダ600に含まれている場合も、または含まれていない場合もある他の一般管理サービスは、許可制御部714、たとえば、許可制御ウェブサービスとして一緒に動作する1つまたは複数のコンピュータを含むことができる。許可制御部714は、コンピュートサービスプロバイダ600内でのサービスまたはデータストレージのAPI要求を認証し、検証し、アンパックすることができる。容量トラッカ716は、容量の予測、プロビジョニング、ならびにリアルタイムの構成設定および割当ての観点で、物理的インベントリを管理し、構成設定することによって、相異なるインスタンスタイプのニーズを満たすために、サーバがどのように構成設定される必要があるかを決定することを担う。容量トラッカ716は、容量プールデータベース718に、利用可能なインベントリのプールを維持する。容量トラッカ716はまた、リソースがすぐに利用可能であるか、それとも制限されているかを知るために、容量レベルをモニタリングすることができる。インスタンスマネージャ750は、ネットワークにおけるインスタンスの立上げ及び打切りを制御する。インスタンスを立ち上げる命令が(たとえば、API要求を介して)受領されるとき、インスタンスマネージャは、容量プール718からリソースを引き出し、インスタンスを立ち上げて、ホストサーバコンピュータを決める。ストレージマネージャ722及びネットワークリソースマネージャ724は、インスタンスマネージャと同様である。ストレージマネージャ722は、ストレージボリュームの開始及び打切りに関係し、一方、ネットワークリソースマネージャ724は、ルータ、スイッチ、サブネットなどの開始及び打切りに関係する。ネットワークパーティション740については、
図6との関連でさらに説明し、インスタンスが立ち上げられる物理レイヤを含む。
【0052】
健康モニタリングサービス760が、顧客がコンピュートサービスプロバイダ600において実行するリソース及びアプリケーションについてモニタリングを行うことができる。システム管理者は、健康モニタリングサービス760を使用して、測定基準を収集し、トラッキングし、アプリケーションがどのように動作しているかに対する知見を得ることができる。たとえば、健康モニタリングサービス760は、アプリケーション性能及び操作上の健康状態へのシステム全体にわたる可視性を可能にすることができる。健康モニタリングサービス760によって生成される測定基準は、測定基準データベース762に記憶され得る。
【0053】
図8は、ネットワークパーティション840、及びそれに関連する物理ハードウェアを示している。ネットワークパーティション840は、データセンタ810など、ルータ816によって一緒に連結される複数のデータセンタを含むことができる。ルータ816は、受け取ったパケットにおけるアドレス情報を読み取り、パケットの宛先を決定する。ルータが、異なるデータセンタはホストサーバコンピュータを含んでいると判断する場合には、パケットは、そのデータセンタに転送される。パケットが、データセンタ810の中のホストにアドレス指定される場合には、それは、パケットのパブリックIPアドレスをプライベートIPアドレスに変換するネットワークアドレストランスレータ(NAT)818に引き渡される。NATはまた、プライベートアドレスを、データセンタ810の外側にバインドされるパブリックアドレスに変換する。追加のルータ820が、ホストサーバコンピュータの1つまたは複数のラック830にパケットを経路指定するためにNATに連結され得る。各ラック830は、複数のホストサーバコンピュータに連結されるスイッチ832を含むことができる。特定のホストサーバコンピュータが、840において拡大図で示されている。
【0054】
各ホスト840は、1つまたは複数のCPU、メモリ、ストレージデバイスなどを含む下層ハードウェア850を有する。ハードウェア850の上側のレイヤを実行しているのが、ハイパーバイザまたはカーネルレイヤ860である。ハイパーバイザまたはカーネルレイヤは、タイプ1またはタイプ2ハイパーバイザとして分類され得る。タイプ1ハイパーバイザは、ホストハードウェア850において直接、動作して、ハードウェアを制御し、ゲストオペレーティングシステムを管理する。タイプ2ハイパーバイザは、従来のオペレーティングシステム環境内で動作する。したがって、タイプ2環境においては、ハイパーバイザは、オペレーティングシステムの上側で動作する別個のレイヤとすることができ、オペレーティングシステムは、システムハードウェアとやり取りする。相異なるタイプのハイパーバイザには、Xenベース、Hyper−V、ESXi/ESX、Linuxなどが含まれるが、他のハイパーバイザが使用可能である。管理レイヤ870がハイパーバイザの一部であっても、またはそれとは分離していることがあり、概して、ハードウェア850にアクセスするのに必要なデバイスドライバを含む。パーティション880は、ハイパーバイザによる隔離したロジック装置である。各パーティション880には、ハードウェアレイヤのメモリ、CPU割当て、ストレージなどのそれ自体の部分が割り当てられ得る。追加として、各パーティションは、仮想マシン、及びそれ自体のゲストオペレーティングシステムを含むことができる。したがって、各パーティションは、他のパーティションとは独立してそれ自体の仮想マシンをサポートするように設計された容量の抽象的な一部分である。
【0055】
インスタンスにおいて実行するいずれのアプリケーションも、管理レイヤ870を使用してモニタリング可能であり、次いで、この管理レイヤ870は、測定基準を、測定基準データベース762に記憶するために健康モニタリングサービス760に引き渡すことができる。追加として、管理レイヤ870は、立ち上がったときに動作しているインスタンス、使用されているオペレーティングシステム、実行されているアプリケーションなどの数を健康モニタリングサービス760に引き渡すことができる。すべてのそのような測定基準は、健康モニタリングサービス760による消費に使用され得、測定基準データベース762に記憶され得る。
【0056】
クラウドデスクトップ環境
図9は、クラウドデスクトップリソースを様々なユーザデバイスに提供することができるクラウドデスクトップ環境の略図である。クラウドデスクトップ環境は、諸革新が任意のタイプのコンピューティングデバイスにおいて実装されるとき、使用または機能性の範囲に関していずれの限定も示唆することを意図していない。たとえば、コンピューティングが、多様なコンピューティングデバイス(たとえば、サーバコンピュータ、デスクトップコンピュータ、ラップトップ、タブレット、モバイルフォン、または別のタイプのコンピューティングデバイス)のうちのいずれかとすることができる。
【0057】
図9を参照すると、クラウドデスクトップ環境は、1つまたは複数のユーザデバイス902A、902B、902Cを含んでよい。ユーザデバイス902A、902B、及び902Cのそれぞれは、同じ領域にあっても、または相異なる領域にあってもよい。たとえば、ユーザデバイス902Aが、ある領域(たとえば、オフィス)の中のユーザによって使用され得、ユーザデバイス902B及び902Cが、異なる領域の中(たとえば、出張中)のユーザによって使用され得る。ユーザは、通常は、ある領域(すなわち、領域1)に位置している自分のクラウドデスクトップにアクセスすることができる。領域は、ユーザに関連するクラウドデスクトップをホストする1つまたは複数のデータセンタ912A〜912Nを含んでいることができる。
【0058】
ユーザが、異なる地理的場所にいる(すなわち、ユーザが、異なる地理的場所におけるユーザコンピューティングデバイス902Bまたは902Cを介して、自分のクラウドデスクトップにアクセスすることを試みている)ことが決定される場合に、ユーザのクラウドデスクトップセッションは、異なる領域に(たとえば、領域1から領域2に)移動することができる。別の例としては、クラウドデスクトップインスタンスが異なる領域に(すなわち、領域1から領域2に)移動した場合、ユーザのクラウドデスクトップセッション性能が向上することになることが決定され得る。したがって、ユーザに関連するデータボリュームが、領域1から領域2に移動し、ここで、クラウドデスクトップセッションは、新規領域において、データセンタ922A〜922Nのうちの少なくとも1つにおいてホスト可能である。
【0059】
本明細書には、クラウドデスクトップが移行されることについて説明しているが、実施形態のうちのいずれもが、クラウドベースのサービスにも適用可能であることを理解すべきである。たとえば、音楽ストリーミングサービスまたはデータベースなどのクラウドベースのサービスが新規領域に移行される場合に、より良く行うことになることが決定される場合、記載の実施形態のうちのいずれもが、クラウドベースのサービスを異なる領域に移行するのに使用され得る。
【0060】
本開示の実施形態は、次の条項を考慮して説明することができる。
1.クラウドデスクトップを領域間で移行するための方法であって、
前記クラウドデスクトップを、現在の領域から、ユーザコンピューティングデバイスから前記現在の領域までのネットワークレイテンシ、または前記現在の領域に対する前記ユーザコンピューティングデバイスの地理的場所のうちの少なくとも1つに基づいて、移行することを決定することと、
前記クラウドデスクトップを移行する先の移行先領域を、前記ユーザコンピューティングデバイスから前記移行先領域までのネットワークレイテンシ、または前記移行先領域に対する前記ユーザコンピューティングデバイスの地理的場所のうちの少なくとも1つに基づいて、特定することと、
前記クラウドデスクトップのデータボリュームを前記現在の領域から前記移行先領域にコピーすることであって、前記データボリュームが、前記クラウドデスクトップのユーザに関連するユーザデータを含む、前記コピーすることと、
前記現在の領域における前記データボリューム及び前記移行先領域における前記データボリュームを前記コピー中に同期して維持することと、
前記コピーの完了と同時に、
前記現在の領域における前記クラウドデスクトップに関連する現在のユーザセッションをフリーズすること、
前記現在のユーザセッションの現在のメモリ及びプロセッサの状態を前記移行先領域にコピーすること、
前記コピーされたデータボリュームならびに現在のメモリ及びプロセッサの状態を使用して、前記移行先領域におけるクラウドデスクトップインスタンスを開始すること、ならびに
前記現在のユーザセッションを前記移行先領域における前記クラウドデスクトップインスタンスに接続し直すことと、
を含む、前記方法。
【0061】
2.前記決定することが、
前記ユーザコンピューティングデバイスから前記現在の領域までの前記ネットワークレイテンシを計算することと、
前記ユーザコンピューティングデバイスから前記現在の領域までの前記ネットワークレイテンシが、レイテンシ閾値を超えることを判定することと、
を含む、請求項1に記載の方法。
【0062】
3.前記計算することが、ピング動作を行うことを含み、前記ピング動作が、前記ユーザコンピューティングデバイスによって前記現在の領域に送信されるパケットのタイムシグネチャを決定する、請求項2に記載の方法。
【0063】
4.前記決定することが、
前記ユーザコンピューティングデバイスの現在の地理的場所を特定することと、
前記クラウドデスクトップが、前記現在の領域に対する前記ユーザコンピューティングデバイスの前記現在の地理的場所に基づいて、移行すべきであることを決定することと、
を含む、請求項1に記載の方法。
【0064】
5.前記現在の地理的場所が、前記ユーザコンピューティングデバイスのIPアドレスによって特定される、請求項4に記載の方法。
【0065】
6.前記決定することが、
ユーザ及び前記クラウドデスクトップに関連する管理者のうちの一方に、前記クラウドデスクトップを移行するように促すことと、
前記クラウドデスクトップを前記移行先領域に移行するための選択をユーザ及び管理者のうちの前記一方から受け取ることと、
を含む、請求項1に記載の方法。
【0066】
7.前記決定することが、前記クラウドデスクトップのユーザからの入力なしに、前記現在のユーザセッション中に自動的に行われる、請求項1に記載の方法。
【0067】
8.前記特定することが、
1つまたは複数の候補領域を特定することと、
前記ユーザコンピューティングデバイスから前記1つまたは複数の候補領域までのネットワークレイテンシ、あるいは前記1つまたは複数の候補領域に対する前記ユーザコンピューティングデバイスの地理的場所のうちの少なくとも1つに基づいて、前記移行先領域を決定するために前記1つまたは複数の候補領域を評価することと、
を含む、請求項1に記載の方法。
【0068】
9.前記特定することが、
前記ユーザコンピューティングデバイスの現在の地理的場所についての履歴ネットワークレイテンシデータに少なくとも基づいて、前記移行先領域を特定すること、
を含む、請求項1に記載の方法。
【0069】
10.前記特定することが、
1つまたは複数の候補領域を特定することと、
前記ユーザコンピューティングデバイスから前記1つまたは複数の候補領域までのレイテンシ、あるいは前記1つまたは複数の候補領域に対する前記ユーザコンピューティングデバイスの地理的場所のうちの少なくとも1つに基づいて、前記移行先領域を決定するために前記1つまたは複数の候補領域を評価することと、
を含む、請求項1に記載の方法。
【0070】
11.1つまたは複数の候補領域を前記特定することが、
前記1つまたは複数の候補領域についての支払構造に基づいて、前記1つまたは複数の候補領域を特定すること、
を含む、請求項8に記載の方法。
【0071】
12.仮想デスクトップをデータセンタ間で移行するためのコンピューティングシステムであって、
現在のデータセンタであって、仮想デスクトップ及びデータボリュームを含み、前記データボリュームが、前記仮想デスクトップのユーザに関連するユーザデータを含む、前記現在のデータセンタと、
1つまたは複数の候補データセンタと、
管理構成要素であって、
仮想デスクトップを、前記現在のデータセンタから、ユーザコンピューティングデバイスから前記現在のデータセンタまでのネットワークレイテンシ、または前記現在のデータセンタに対する前記ユーザコンピューティングデバイスの地理的場所のうちの少なくとも1つに基づいて、移行することを決定すること、
前記仮想デスクトップを移行する先の前記1つまたは複数の候補データセンタのうちの1つを移行先データセンタとして、前記ユーザコンピューティングデバイスから前記移行先データセンタまでのネットワークレイテンシ、または前記移行先データセンタに対する前記ユーザコンピューティングデバイスの地理的場所のうちの少なくとも1つに基づいて、特定すること、及び
前記仮想デスクトップの前記データボリュームを前記現在のデータセンタから前記移行先データセンタに移動させること、
を含む動作を行うように構成された、前記管理構成要素と、
前記仮想デスクトップの前記データボリューム及び1つまたは複数のデータセンタをトラッキングする制御プレーンレイヤであって、
ユーザ接続要求を受け取ると同時に、前記ユーザ接続要求を前記移行先データセンタにおいて動作する前記仮想デスクトップのインスタンスに向けること、
を含む動作を行うように構成された、前記制御プレーンレイヤと、
を含む、前記コンピューティングシステム。
【0072】
13.前記ユーザコンピューティングデバイスから前記移行先データセンタまでの前記ネットワークレイテンシが、前記ユーザコンピューティングデバイスから前記現在のデータセンタまでのネットワークレイテンシよりも小さい、請求項9に記載のコンピューティングシステム。
【0073】
14.前記移行先データセンタに対する前記ユーザコンピューティングデバイスの前記地理的場所が、前記現在のデータセンタに対する前記ユーザコンピューティングデバイスの地理的場所よりも近い、請求項9に記載のコンピューティングシステム。
【0074】
15.前記管理構成要素が、
前記現在のデータセンタにおいて動作する前記仮想デスクトップのインスタンスをシャットダウンすることと、
前記移行先データセンタにおける前記仮想デスクトップのインスタンスを開始することと、
を含むさらなる動作を行うように構成されている、請求項9に記載のコンピューティングシステム。
【0075】
16.前記管理構成要素が、
前記現在のデータセンタにおける前記データボリュームのコピー及び前記移行先データセンタにおける前記データボリュームのコピーを前記移動中に同期して維持することと、
前記移動の完了と同時に、
前記現在のデータセンタにおける前記仮想デスクトップに関連する現在のユーザセッションをフリーズすること、
前記現在のユーザセッションの現在のメモリ及びプロセッサの状態を前記移行先データセンタにコピーすること、
前記移動したデータボリュームならびに前記コピーされた現在のメモリ及びプロセッサの状態を使用して、前記移行先データセンタにおける前記仮想デスクトップのインスタンスを開始すること、ならびに
前記現在のユーザセッションを前記移行先データセンタにおける前記仮想デスクトップの前記開始されたインスタンスに接続し直すこと、
を含むさらなる動作を行うように構成されている、請求項9に記載のコンピューティングシステム。
【0076】
17.クラウドベースのサービスを領域間で移行するための動作を行うための命令を記憶したコンピュータ可読ストレージ媒体であって、前記動作が、
クラウドベースのサービスを、現在の領域から、ユーザコンピューティングデバイスから前記現在の領域までのネットワークレイテンシ、または前記現在の領域に対する前記ユーザコンピューティングデバイスの地理的場所のうちの少なくとも1つに基づいて、移行することを決定することと、
前記クラウドベースのサービスを移行する先の移行先領域を、前記ユーザコンピューティングデバイスから前記移行先領域までのネットワークレイテンシ、または前記移行先領域に対する前記ユーザコンピューティングデバイスの地理的場所のうちの少なくとも1つに基づいて、特定することと、
前記クラウドベースのサービスのデータボリュームを前記現在の領域から前記移行先領域にコピーすることと、
前記移行先領域における前記データボリュームを使用して、クラウドベースのサービスインスタンスを開始することと、
前記クラウドベースのサービスに関連する現在のユーザセッションを前記移行先領域における前記クラウドベースのサービスインスタンスに接続することと、
を含む、前記コンピュータ可読ストレージ媒体。
【0077】
18.前記動作が、
前記現在の領域における前記データボリュームのコピー及び前記移行先領域における前記データボリュームのコピーを前記コピー中に同期して維持することと、
前記コピーの完了と同時に、
前記現在の領域における前記クラウドベースのサービスに関連する前記現在のユーザセッションをフリーズすること、ならびに
前記現在のユーザセッションの現在のメモリ及びプロセッサの状態を前記移行先領域にコピーすることと、
をさらに含み、
クラウドベースのサービスインスタンスを前記開始することが、前記移動したデータボリュームならびに前記コピーされた現在のメモリ及びプロセッサの状態を使用して、前記移行先領域における前記クラウドベースのサービスのインスタンスを起動することを含む、
請求項13に記載のコンピュータ可読ストレージ媒体。
【0078】
19.前記決定することが、
前記ユーザコンピューティングデバイスから前記現在の領域までの前記ネットワークレイテンシを計算することと、
前記ネットワークレイテンシが、レイテンシ閾値を超えることを判定することと、
を含む、請求項13に記載のコンピュータ可読ストレージ媒体。
【0079】
20.前記決定することが、ユーザからの入力なしに、前記クラウドベースのサービスに関連する前記現在のユーザセッション中に自動的に行われる、請求項13に記載のコンピュータ可読ストレージ媒体。
【0080】
例示的なコンピューティング環境
図10は、記載の革新がこの中で実装され得る適切なコンピューティング環境1000の一般化された例を示している。コンピューティング環境1000は、諸革新が、種々の汎用または専用のコンピューティングシステムにおいて実装され得るとき、使用または機能性の範囲に関していずれの限定も示唆することを意図していない。たとえば、コンピューティング環境1000は、多様なコンピューティングデバイス(たとえば、デスクトップコンピュータ、ラップトップコンピュータ、サーバコンピュータ、タブレットコンピュータなど)のうちのいずれかとすることができる。
【0081】
図10を参照すると、コンピューティング環境1000は、1つまたは複数の処理装置1010、1015、及びメモリ1020、1025を含む。
図10においては、この基本構成1030は、破線内に含められる。処理装置1010、1015は、コンピュータ実行可能命令を実行する。処理装置は、汎用中央処理装置(CPU)、特定用途向け集積回路(ASIC)の中のプロセッサ、または任意の他のタイプのプロセッサとすることができる。マルチ処理システムにおいては、複数の処理装置が、処理パワーを増大させるためにコンピュータ実行可能命令を実行する。たとえば、
図10は、中央処理装置1010、ならびにグラフィックス処理装置または共処理装置1015を示している。有形メモリ1020、1025は、処理装置(複数可)がアクセスできる揮発性メモリ(たとえばレジスタ、キャッシュ、RAM)、不揮発性メモリ(たとえばROM、EEPROM、フラッシュメモリなど)、またはこの2つの何らかの組合せであってよい。メモリ1020、1025は、処理装置(複数可)が実行するのに適しているコンピュータ実行可能命令の形態で、本明細書に説明する1つまたは複数の革新を実装するソフトウェア1080を記憶する。
【0082】
コンピューティングシステムは、追加の特徴を有し得る。たとえば、コンピューティング環境1000は、ストレージ1040、1つまたは複数の入力デバイス1050、1つまたは複数の出力デバイス1060、及び1つまたは複数の通信接続部1070を含む。バス、コントローラ、またはネットワークなどの相互接続機構(図示せず)が、コンピューティング環境1000の構成要素を相互接続する。典型的には、オペレーティングシステムソフトウェア(図示せず)は、コンピューティング環境1000において実行する他のソフトウェアにオペレーティング環境を提供し、コンピューティング環境1000の構成要素の活動を調整する。
【0083】
有形ストレージ1040は、取外し式であっても、または非取外し式であってもよく、磁気ディスク、磁気テープまたはカセット、CD−ROM、DVD、または非一時的な方式で情報を記憶するのに使用可能であり、コンピューティング環境1000内でアクセス可能な任意の他の媒体を含む。ストレージ1040は、本明細書に説明する1つまたは複数の革新を実装するソフトウェア1080のための命令を記憶する。
【0084】
入力デバイス(複数可)1050は、キーボード、マウス、ペン、もしくはトラックボールなどのタッチ入力デバイス、音声入力デバイス、スキャニングデバイス、またはコンピューティング環境1000に入力を提供する別のデバイスであってよい。出力デバイス(複数可)1060は、ディスプレイ、プリンタ、スピーカ、CDライタ、またはコンピューティング環境1000から出力を提供する別のデバイスであってよい。
【0085】
通信接続部(複数可)1070は、別のコンピューティングエンティティへの通信媒体を介する通信を可能にする。通信媒体は、コンピュータ実行可能命令、音響または映像の入力もしくは出力、あるいは変調されたデータ信号における他のデータなどの情報を伝達する。変調されたデータ信号は、情報を信号に符号化するようなやり方で設定あるいは変更されるその特性のうちの1つまたは複数を有する信号である。限定ではなく、例として、通信媒体は、電気、光学、RF、または他の搬送波を使用することができる。
【0086】
開示された方法のうちの一部の動作は、便宜的に表現するために、具体的な一連の順序で説明しているが、説明のこのやり方は、具体的な順序付けが下記の特定の文言によって別段、要求されない限り、再構成を包含することを理解すべきである。たとえば、いくつかの場合においては、順次、説明する動作は、再構成されても、または同時に行われてもよい。その上、簡略化するために、添付の図は、開示された方法が他の方法と併せてこの中で使用可能である様々な方式を示していない場合もある。
【0087】
開示された方法のうちのいずれも、1つまたは複数のコンピュータ可読ストレージ媒体(たとえば、1つあるいは複数の光学媒体ディスク、揮発性メモリ構成要素(DRAMもしくはSRAMなど)、または不揮発性メモリ構成要素(フラッシュメモリもしくはハードドライブなど))において記憶され、コンピュータ(たとえば、スマートフォン、またはコンピューティングハードウェアを含む他のモバイルデバイスを含む任意の市販のコンピュータ)において実行されるコンピュータ実行可能命令として実装可能である。コンピュータ可読ストレージ媒体という用語は、信号及び搬送波など、通信接続を含まない。開示された技法を実装するためのコンピュータ実行可能命令、ならびに開示された実施形態の実装中に生成され、使用される何らかのデータのうちのいずれも、1つまたは複数のコンピュータ可読ストレージ媒体において記憶され得る。コンピュータ実行可能命令は、たとえば、専用のソフトウェアアプリケーション、あるいはウェブブラウザまたは他のソフトウェアアプリケーション(リモートコンピューティングアプリケーションなど)を介してアクセスされる、もしくはダウンロードされるソフトウェアアプリケーションの一部とすることができる。そのようなソフトウェアは、たとえば、単一のローカルコンピュータ(たとえば、任意の適切な市販のコンピュータ)、あるいは1つまたは複数のネットワークコンピュータを使用するネットワーク環境(たとえば、インターネット、広域ネットワーク、ローカルエリアネットワーク、クライアントサーバネットワーク(クラウドコンピューティングネットワークなど)、もしくは他のそのようなネットワーク)において実行可能である。
【0088】
明確にするために、ソフトウェアベースの実施態様の特定の選択された態様しか説明していない。当技術分野においてよく知られている他の詳細は、省略されている。たとえば、開示された技術は、任意の特定のコンピュータ言語またはプログラムに限定されないことは理解すべきである。例としては、開示された技術は、C++、Java(登録商標)、Perl、JavaScript(登録商標)、Adobe Flash(登録商標)、または任意の他の適切なプログラミング言語において記述されるソフトウェアによって実装可能である。同様に、開示された技術は、いずれかの特定のコンピュータまたはタイプのハードウェアに限定されない。適切なコンピュータ及びハードウェアの特定の詳細は、よく知られており、本開示に詳細に記載する必要はない。
【0089】
本明細書に説明するいずれの機能性も、ソフトウェアではなく、1つまたは複数のハードウェアロジック構成要素によって少なくとも一部、実行可能であることもよく理解すべきである。限定ではなく、例として、使用され得る例示的なタイプのハードウェアロジック構成要素には、フィールドプログラマブルゲートアレイ(FPGA)、プログラム専用集積回路(ASIC)、プログラム専用標準製品(ASSP)、システムオンチップシステム(SOC)、結合プログラマブルロジックデバイス(CPLD)などが含まれる。
【0090】
さらには、ソフトウェアベースの実施形態(たとえば、コンピュータに、開示された方法のうちのいずれかを行わせるためのコンピュータ実行可能命令を含む)のうちのいずれも、適切な通信手段を介してアップロード、ダウンロード、またはリモートでアクセス可能である。そのような適切な通信手段には、たとえば、インターネット、ワールドワイドウェブ、イントラネット、ソフトウェアアプリケーション、ケーブル(光ファイバケーブルを含む)、磁気通信、電磁通信(RF、マイクロ波、及び赤外線通信を含む)、電子通信、または他のそのような通信手段が含まれる。
【0091】
開示された方法、装置、及びシステムは、いかなる形でも限定すると解釈すべきではない。そうではなく、本開示は、単独で、ならびに互いとの様々な組合せ及び副組合せで、様々な開示された実施形態の新しく、非自明の特徴及び態様すべてに対して対象とする。開示された方法、装置、及びシステムが、任意の特定の態様もしくは特徴、またはそれらの組合せに限定されることも、また開示された実施形態が、任意の1つまたは複数の特定の利点が存在し、問題が解決されることを要求することもない。
【0092】
本開示の発明の原理が適用され得る多くの可能な実施形態を考慮して、例示された実施形態が、単に、本発明の好適な例にすぎず、本発明の範囲を限定するととるべきでないことを認識すべきである。そうではなく、本発明の範囲は、添付の特許請求の範囲によって定義される。そのため、これらの請求項の範囲内に入る本発明全体として特許請求がなされる。