(57)【特許請求の範囲】
【請求項１】
データセンタでのリソース割り当てを計算するシステムであって、前記システムは、プログラム実行サービス（ＰＥＳ）プラットフォームと、データセンタと、管理コンポーネントと、配置コンポーネントと、を備え、
前記プログラム実行サービス（ＰＥＳ）プラットフォームは、複数のデータセンタを含み、各データセンタは、１つ以上の計算リソースを１人以上のユーザに提供するように構成可能な１つ以上のコンピューティングシステムを含み、
前記複数のデータセンタのデータセンタは、ユーザのコンピューティングデバイスから、計算リソースへのアクセスを取得する要求を受信するように構成され、
前記管理コンポーネントは、
前記コンピューティングデバイスに関連した前記ユーザを識別し、
前記ユーザのアイデンティティに少なくとも部分的に基づいて、前記ユーザに関連したユーザメタデータにアクセスし、
前記ユーザメタデータに少なくとも部分的に基づいて、１組のリソース配置ルールを選択する、
ように構成され、
前記配置コンポーネントは、前記１組のリソース配置ルールに少なくとも部分的に基づいて、前記データセンタの１つ以上のコンピューティングシステムからコンピューティングシステムを識別するように構成され、
前記１組のリソース配置ルールは、前記計算リソースにアクセスできるエンティティに関連した１組のユーザから、ユーザの百分率を制限する第１のルールと、前記データセンタの利用率に基づき、前記計算リソースの利用できるインスタンスをスケールする第２のルールと、を含み、
前記管理コンポーネントは、前記コンピューティングシステム上で前記計算リソースへのアクセスを前記ユーザに提供するようにさらに構成され、
前記１組のリソース配置ルールは、前記ユーザに関連した前記エンティティに関連付けられている、
システム。
【請求項２】
前記配置コンポーネントは、前記コンピューティングシステム上で前記計算リソースのインスタンスを作成するようにさらに構成される、
請求項１に記載のシステム。
【請求項３】
前記計算リソースへのアクセスを前記ユーザに提供することは、前記コンピューティングシステム上で前記計算リソースの前記インスタンスへのアクセスを前記ユーザに提供することを含む、
請求項２に記載のシステム。
【請求項４】
前記配置コンポーネントは、前記ユーザに関連した前記計算リソースのアクティブインスタンスが存在するか否かを判定するようにさらに構成される、
請求項１に記載のシステム。
【請求項５】
前記ユーザに関連した前記計算リソースの前記アクティブインスタンスが存在すると判定することに応答して、前記アクティブインスタンスへのアクセスが提供される、
請求項４に記載のシステム。
【請求項６】
前記配置コンポーネントは、前記ユーザに関連した前記計算リソースの前記アクティブインスタンスが存在しないと判定することに応答して、前記計算リソースの新たなインスタンスを作成するようにさらに構成される、
請求項４に記載のシステム。
【請求項７】
前記計算リソースは、前記ユーザが前記プログラム実行サービス（ＰＥＳ）プラットフォームによって提供された複数のサービスにアクセスすることを可能にする仮想デスクトップを含む、
請求項１に記載のシステム。
【請求項８】
前記計算リソースは、アプリケーションインスタンスを含む、
請求項１に記載のシステム。
【請求項９】
前記データセンタは、前記管理コンポーネントと、前記配置コンポーネントと、を含む、
請求項１に記載のシステム。
【請求項１０】
計算リソースへのアクセスを取得する要求であって、ユーザのコンピューティングデバイスから受信される要求を、プログラム実行サービス（ＰＥＳ）プラットフォームのデータセンタにて受信するステップと、
前記コンピューティングデバイスに関連した前記ユーザを識別するステップと、
前記ユーザのアイデンティティに少なくとも部分的に基づいて、前記ユーザに関連したユーザメタデータにアクセスするステップと、
前記ユーザメタデータに少なくとも部分的に基づいて、１組のリソース配置ルールを選択するステップと、
前記１組のリソース配置ルールに少なくとも部分的に基づいて、前記データセンタの１つ以上のコンピューティングシステムからコンピューティングシステムを識別するステップであって、前記１組のリソース配置ルールは、前記計算リソースにアクセスできるエンティティに関連した１組のユーザから、ユーザの百分率を制限する第１のルールと、前記データセンタの利用率に基づき、前記計算リソースの利用できるインスタンスをスケールする第２のルールと、を含むステップと、
前記コンピューティングシステム上で前記ユーザに前記計算リソースへのアクセスを提供するステップと、
を含み、
前記１組のリソース配置ルールは、前記ユーザに関連した前記エンティティに関連付けられている、
方法。
【請求項１１】
前記プログラム実行サービス（ＰＥＳ）プラットフォームは、前記データセンタを含む複数のデータセンタを含み、各データセンタは、１人以上のユーザに前記１つ以上のコンピューティングシステムの少なくとも１つによって対応された１つ以上の計算リソースへのアクセスを提供するように構成可能な１つ以上のコンピューティングシステムを含む、
請求項１０に記載の方法。
【請求項１２】
前記コンピューティングシステム上で前記ユーザに前記計算リソースへのアクセスを提供するステップは、
前記コンピューティングシステム上で前記計算リソースのインスタンスを作成するステップと、
前記コンピューティングシステム上で前記ユーザに前記計算リソースの前記インスタンスへのアクセスを提供するステップと、
を含む、
請求項１０に記載の方法。
【請求項１３】
前記計算リソースは、前記ユーザが前記プログラム実行サービス（ＰＥＳ）プラットフォームによって提供された複数のサービスにアクセスすることを可能にする仮想デスクトップを含む、
請求項１０に記載の方法。
【請求項１４】
前記方法は、前記リソース配置ルールに少なくとも部分的に基づいて前記計算リソースを構成することをさらに含む、
請求項１０に記載の方法。
【請求項１５】
前記ユーザメタデータは、前記ユーザに関連したエンティティのアイデンティティを含み、
前記ユーザメタデータに少なくとも部分的に基づいて前記１組のリソース配置ルールを判定するステップは、前記エンティティの前記アイデンティティに少なくとも部分的に基づいて前記１組のリソース配置ルールを判定するステップを含む、
請求項１０に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願）
本出願は、２０１３年３月１１日出願の、「ＡＵＴＯＭＡＴＥＤ  ＤＥＳＫＴＯＰ  ＰＬＡＣＥＭＥＮＴ」という名称の米国特許出願第１３／７９４，４９０号の優先権を主張するものであり、この特許の開示全体は、参照により本明細書に組み入れられる。さらに、本出願は、以下の出願、即ち、２０１３年３月１１日出願の、「ＡＰＰＬＩＣＡＴＩＯＮ  ＭＡＲＫＥＴＰＬＡＣＥ  ＦＯＲ  ＶＩＲＴＵＡＬ  ＤＥＳＫＴＯＰＳ」という名称の米国特許出願第１３／７９４，６００号、２０１３年３月１１日出願の、「ＡＵＴＯＭＡＴＥＤ  ＤＡＴＡ  ＣＥＮＴＥＲ  ＳＥＬＥＣＴＩＯＮ」という名称の米国特許出願第１３／７９４，５９５号、及び、２０１３年３月１１日出願の、「ＡＵＴＯＭＡＴＥＤ  ＤＡＴＡ  ＳＹＮＣＨＲＯＮＩＺＡＴＩＯＮ」という名称の米国特許出願第１３／７９４，５１５号に関し、これらの特許の各々の開示全体は、参照により本明細書に組み入れられる。
【背景技術】
【０００２】
企業及び組織は、多数のコンピューティングシステムを相互接続してそれらの動作をサポートするコンピュータネットワークを運用している。コンピューティングシステムは、単一の地理的な場所（例えば、ローカルネットワークの一部として）に位置することができるか、又は、複数の異なった地理的な位置（例えば、１つ以上のプライベート又はパブリック中間ネットワークを介して接続）に位置することができる。データセンタは、例えば、単一の組織によって運用されるプライベートデータセンタなど、有意な数の相互接続したコンピューティングシステム、及び、計算リソースを顧客に提供するためにサードパーティによって運用されるパブリックデータセンタを収容し得る。パブリック及びプライベートデータセンタは、データセンタ、組織、又は、他の顧客によって所有されるハードウェアのためのネットワークアクセス、電力、ハードウェアリソース（例えば、コンピューティング及び記憶）、及び、セキュアな据付設備を提供し得る。いくつかのデータセンタが、単一のプログラム実行サービス（ＰＥＳ）の一部として、さらに構成され、該プログラム実行サービス（ＰＥＳ）は、ＰＥＳの顧客によるデータセンタのリソースの利用を容易にすることができる。
【０００３】
データセンタリソースの利用の増大を容易にするために、仮想化技術が、単一の物理コンピューティングマシンが、接続されたコンピュータユーザに対して独立したコンピュータマシンとして登場しかつ動作する仮想マシンの１つ以上のインスタンスに対応することを可能にし得る。仮想化で、単一の物理コンピューティングデバイスは、仮想マシンを動的に作成、維持、又は、削除することができる。同様に、ユーザは、コンピュータリソースをデータセンタに要求することができ、かつ、ユーザに、異なる数の仮想マシンリソースを「必要に応じて」、又は、少なくとも「要求されるように」提供することができる。
【０００４】
データセンタの規模及び範囲が増大したために、データセンタの物理及び仮想計算リソースのプロビジョニング、管理、及び運営のタスクがますます複雑になった。
【０００５】
図面を通して、参照番号は、参照する要素間の一致を示すために再利用する。図面を提示するが、本明細書で説明する本発明の主題の実施形態を例示するためであり、その範囲を制限するためではない。
【図面の簡単な説明】
【０００６】
【図１Ａ】通信ネットワークを介して計算リソースをマルチユーザコンピューティングシステムに提供することができるプログラム実行サービス環境の実施例を例示する図である。
【図１Ｂ】通信ネットワークを介して計算リソースをマルチユーザコンピューティングシステムに提供することができるプログラム実行サービス環境の更なる実施例を例示する図である。
【図２】一部の実施形態では、プログラム実行サービス環境の一部として含むことができるアプリケーション市場の実施例を例示する図である。
【図３】一部の実施形態では、プログラム実行サービス環境の一部として含むことができるデータセンタの実施例を例示する図である。
【図４Ａ】一部の実施形態では、プログラム実行サービス環境の一部として含むことができる対応されたコンピューティング環境リソース割り当てシステムの実施例を例示する図である。
【図４Ｂ】一部の実施形態では、データセンタの一部として含めることができるデータセンタリソース割り当てシステムの実施例を例示する図である。
【図５】一部の実施形態では、データセンタのデータセンタコンピュータによって対応することができるインスタンスの実施例を例示する図である。
【図６】データセンタ選択プロセスの実施例を例示する図である。
【図７】待ち時間因子計算プロセスの実施例を例示する図である。
【図８】デスクトップ配置構成プロセスの実施例を例示する図である。
【図９】デスクトッププロビジョニングプロセスの実施例を例示する図である。
【図１０】アプリケーション市場を介してアプリケーションにアクセスするプロセスの実施例を例示する図である。
【図１１】ファイル同期システムの実施例を例示する図である。
【図１２】ファイルの同期プロセスの実施例を例示する図である。
【図１３】仮想デスクトップインスタンスとの既存の接続を介したファイルの同期プロセスの実施例を例示する図である。
【発明を実施するための形態】
【０００７】
Ｉ．はじめに
従来のデスクトップコンピューティング環境では、ユーザは、典型的には、ユーザの机の近くに物理的に位置するデスクトップコンピュータのコンピューティング又はストレージリソースにアクセスする。デスクトップコンピュータは、ユーザがデスクトップコンピュータによって実行することができるアプリケーション（例えば、ワープロアプリケーション、電子メールアプリケーションなど）にアクセスすることを可能にするディスプレイ及びデータ入力デバイス（例えば、キーボード及びマウス）に接続することができる。ラップトップコンピューティング環境は、携帯型ラップトップコンピュータがデスクトップコンピュータの代わりに使用されることを除き、デスクトップコンピューティング環境と概ね類似のものである。従来のデスクトップ又はラップトップコンピューティング環境の短所としては、ユーザがアクセスすることができるのはデスクトップ又はラップトップコンピュータ上に記憶されているアプリケーションのみである点、及び、異なるコンピューティングプラットフォーム全体にわたってアプリケーション、又は、データを簡単に共用することができない点が挙げられる。広範囲にわたる固定及び携帯型のコンピューティングデバイス（例えば、デスクトップ、ラップトップ、タブレット、スマートフォン、電子ブックリーダなど）の使用の増大で、ユーザは、これらのプラットフォームの各々上で同じアプリケーション及びデータにアクセスすることを望む場合がある。例えば、ユーザは、ワープロアプリケーションを使用してユーザの会社内に位置するユーザのデスクトップコンピュータで文書を編集したいと思う場合がある。ユーザは、その後、航空機の接続を待ちながら空港でユーザのラップトップで文書を編集し続けたいと思う場合がある。その後、飛行機内に、又は、会議に向かうタクシーの中にいる間、ユーザは、スマートフォンで文書を見るか、又は、編集したいと思う場合がある。これらの状況（又はその他）では、ユーザは、同じワープロアプリケーションを使用し、同じ文書をシームレスに編集して、（各装置の計算上及び物理的な制約に従って）各コンピューティングデバイスと対話するときに類似のユーザ体験を持ちたいと思う場合がある。つまり、ユーザは、ユーザがどこにいようと、また、ユーザがどんなコンピューティングデバイスをその瞬間に使用していようと、ユーザのアプリケーション及びデータへのユーザアクセスを可能にする「仮想デスクトップ」を持ちたいと思う場合がある。
【０００８】
本出願は、ユーザが各個のコンピューティングデバイス上に記憶された個々のアプリケーション及びデータにアクセスすることによってよりもむしろ、ユーザが、アプリケーション及びデータに対応するプログラム実行サービス（時には、「クラウドコンピューティング」サービスと呼ばれる）との接続を使用することによって広範囲にわたるコンピューティングデバイス全体にわたってアプリケーション及びデータへのアクセスを達成することができるシステム及び方法の実施例を説明する。様々な実行例では、このプログラム実行サービスは、ユーザが自分たちのコンピューティングデバイスで使用したいアプリケーションを買うか、又は、レンタルすることができるアプリケーション市場を提供することができる。プログラム実行サービスは、また、ユーザが、ユーザのコンピューティングデバイスの全てにわたって自動的に同期されるデータにアクセスすることを可能にするデータストレージを提供することができる。様々なクラウド対応の実行例の詳細な実施例をここで説明する。
【０００９】
プログラム実行サービス（ＰＥＳ）の一部として含まれるデータセンタのコンピュータシステムによって対応されるか、又は、提供される計算リソースへのアクセスを提供するシステム及び方法の実施例を本明細書で説明する。図１Ａは、通信ネットワーク１０６を介してマルチユーザコンピューティングシステム１０４に計算リソースを提供することができるＰＥＳ環境１００の一実施例を例示する。
【００１０】
ＰＥＳ環境１００は、アプリケーション及び／又は仮想デスクトップ環境へのアクセスを含むことができる、仮想マシンインスタンスなど計算リソースへのオンデマンドのアクセスを提供するＰＥＳプラットフォーム１２０（ＰＥＳ１２０という場合がある）を含む。図９に関してさらに詳細に説明するように、計算リソースは、１組のデスクトップ配置ルール及び／又は１組の計算リソース配置ルールに基づいて立ち上げられ得るか、又は、その他の方法でインスタンス化され得る。
【００１１】
ＰＥＳプラットフォーム１２０は、永久的に又は必要に応じてアプリケーションを実行する計算リソースを提供することができる。ＰＥＳプラットフォーム１２０によって提供される計算リソースとしては、データ処理リソース、データストレージリソース、データ通信リソース、アプリケーションリソース、ファイル管理リソース、ユーザ認証リソース、仮想デスクトップリソースなど様々な形式のリソースを挙げることができる。そのようなものと限定されるものではないが、仮想デスクトップリソースは、ＰＥＳプラットフォーム１２０と通信するために使用されたユーザコンピューティングシステム１０４上に記憶及び／又は対応されるのとは対照的に、ＰＥＳプラットフォーム１２０上に記憶及び／又は対応されるファイル及び／又はアプリケーションと相互作用するインターフェースを含むことができる。仮想デスクトップリソースは、オペレーティングシステムと関連づける（又は、オペレーティングシステムをエミュレートする）ことができる。例えば、ウィンドウズアプリケーションを実行するように構成可能なウィンドウズ仮想デスクトップがあり得る。仮想デスクトップは、ユーザが、例えば、アプリケーション、ファイル管理プログラム及び／又はファイルストレージなどのＰＥＳプラットフォームによって提供されるサービスにアクセスすることを可能にすることができる。
【００１２】
場合によっては、仮想デスクトップは、ユーザコンピューティングシステム１０４のデスクトップと全く同じであり得るか、又は、全く同じように見え得る。例えば、仮想デスクトップは、ＰＥＳプラットフォーム１２０を介して利用可能なアプリケーションリソースへのアクセスを提供し得、かつ、グラフィックインタフェースを介してＰＥＳプラットフォーム１２０にて記憶されたファイルを管理するファイル管理機能を提供し得る。場合によっては、仮想デスクトップは、アプリケーションなど単一のリソースへのアクセスを提供するように構成され得る。場合によっては、仮想デスクトップは、データセンタ１０２のコンピューティングシステム上でアクセス可能であるグラフィックコンテナである。このコンテナはユーザコンピューティングシステム１０４にストリーミングされ得、かつ、ファイル管理プログラム及びファイルストレージに関連付けられ得る。さらに、場合によっては、仮想デスクトップは、ユーザコンピューティングシステム１０４上のユーザコンピューティングシステム１０４上でアクセス可能であるアプリケーションであり得る。他の場合、仮想デスクトップは、データセンタ１０２のコンピューティングシステムとの通信を確立することによってアクセスされ得、該コンピューティングシステムは、仮想デスクトップ用グラフィックインタフェースをユーザコンピューティングシステム１０４にストリーミングすることができる。仮想デスクトップは、ブラウザを介して典型的にはアクセスされないが、場合によっては、仮想デスクトップとのグラフィックインタフェースが、ウェブブラウザを介して提示され得る。
【００１３】
各形式の計算リソースは、汎用であり得るか、又は、いくつかの特定の構成で利用可能であり得る。例えば、データ処理リソースは、仮想マシンインスタンスとして利用可能であり得る。場合によっては、計算リソースは、オペレーティングシステムで構成された仮想マシンによる計算ノードであり得る。計算ノードは、サーバなどの物理コンピューティングデバイス上で実行され得る。インスタンスは、Ｗｅｂサーバ、アプリケーションサーバ、メディアサーバ、データベースサーバなどを含め、アプリケーションを実行するように構成され得る。データストレージリソースとしては、ファイルストレージデバイス、ブロック記憶デバイスなどを挙げることができる。アプリケーションリソースとしては、レンタル及び／又は購入されるアプリケーションを挙げることができる。さらに、アプリケーションリソースとしては、実行中にＰＥＳプラットフォーム１２０によって対応され、及び／又は、実行中にユーザコンピューティングシステム１０４に一時的に又は永久にストリーミングされるアプリケーションを挙げることができる。
【００１４】
計算リソースの各形式又は構成は、多くのプロセッサ、多量のメモリ及び／又は大規模な記憶容量から成る大規模なリソース、及び、より少しのプロセッサ、より小規模のメモリ容量及び／又はより小規模な記憶容量から成る小規模なリソースなど、異なるサイズで利用可能であり得る。顧客は、例えば、いくつかの小規模な処理リソースをＷｅｂサーバとして、及び／又は１つの大規模な処理リソースをデータベースサーバとして割り当てることを選び得る。
【００１５】
ＰＥＳプラットフォーム１２０は、いくつかのデータセンタ類１０２Ａ〜１０２Ｎ（本明細書では単数形で「データセンタ１０２」と、又は、複数形で「データセンタ類１０２」と呼ぶ場合がある）を含む対応するコンピューティング環境１１４を含み，該データセンタ類は、ユーザ又は顧客に上述の計算リソースへのアクセスを提供する。対応するコンピューティング環境及びデータセンタ類の更なる実施例が、２０１１年１月４日に付与された、「Ｃｏｎｆｉｇｕｒｉｎｇ  Ｃｏｍｍｕｎｉｃａｔｉｏｎｓ  Ｂｅｔｗｅｅｎ  Ｃｏｍｐｕｔｉｎｇ  Ｎｏｄｅｓ」という名称の、米国特許第７，８６５，５８６号示されており、この特許は、全体が参照により本明細書に組み入れられる。一部の実例では、対応するコンピューティング環境は、また、クラウドコンピューティング環境と呼ぶ場合がある。
【００１６】
４個のデータセンタ１０２が例示されているが、ＰＥＳプラットフォーム１２０は、１個のデータセンタ、１０個のデータセンタ、又は、５０個のデータセンタなど、任意の数のデータセンタを含み得る。さらに、データセンタ類１０２は、単一の対応するコンピューティング環境１１４の一部として概念的に例示されているが、データセンタ類１０２は、地理的に異なる位置に位置し得る。例えば、データセンタ１０２Ａは、地理的地域１２２Ａ内に位置し得、データセンタ類１０２Ｂ及び１０２Ｃは、地理的地域１２２Ｂに位置し得、データセンタ１０２Ｎは、図１Ａでは例示されていないさらに別の地理的地域に位置し得る。以下で説明するように、地理的地域１２２Ａ、１２２Ｂは、異なる都市、郡、又は、州に、又は、異なる国にさえ位置する可能性がある。
【００１７】
データセンタ類１０２は、コンピュータシステム及び関連のコンポーネントを収容及び操作するために利用される設備である。例えば、データセンタ１０２は、典型的には、冗長及びバックアップ電源、通信、冷却、及びセキュリティシステムを含む。ユーザに様々な計算リソースへのアクセスを提供する、本明細書で開示する概念及び技術を実行するデータセンタ１０２の１つの例示的な構成を図３に関して以下で説明する。
【００１８】
ＰＥＳプラットフォーム１２０の顧客及び他のユーザは、ネットワーク１０６でデータセンタ類１０２によって提供される計算リソースにアクセスし得る。ネットワーク１０６は、広域ネットワーク（ＷＡＮ）、ローカルエリアネットワーク（ＬＡＮ）、セルラーネットワークなどを含む任意の形式の有線又は無線ネットワークを含むことができる。データセンタ類１０２は、コンピュータシステム及び関連のコンポーネントを収容及び操作するために利用される設備である。例えば、データセンタ１０２は、典型的には、冗長及びバックアップ電力、通信、冷却、及びセキュリティシステムを含む。ユーザに様々なコンピューティングへのアクセスを提供する、本明細書で開示する概念及び技術を実行するデータセンタ１０２の１つの例示的な構成リソースを図３に関して以下で説明する。さらに、場合によっては、ネットワーク１０６は、インターネットを含むことができる。さらに、場合によっては、ネットワーク１０６は、データセンタ類１０２をリモート顧客又はユーザに接続する既知の任意の他のネットワーキングトポロジを含むことができる。また、そのようなネットワークの組合せが、また、利用され得ることを認識されたい。
【００１９】
図１Ａに例示するように、顧客又はユーザは、１つ以上のユーザコンピューティングシステム１０４Ａ〜１０４Ｃ（本明細書では単数形で「ユーザコンピューティングシステム１０４」と、又は、複数形で「ユーザコンピューティングシステム類１０４」と呼ぶ場合がある）を介してＰＥＳプラットフォーム１２０と通信し得る。３つのユーザコンピューティングシステム１０４が例示されるが、ＰＥＳ環境１００は、任意の数のユーザコンピューティングシステム１０４を含み得る。さらに、ユーザコンピューティングシステム類１０４はＰＥＳプラットフォーム１２０にアクセスするためにユーザによって利用され得る任意の形式のコンピューティングシステムを含み得る。例えば、ユーザコンピューティングシステム１０４は、サーバコンピュータ、デスクトップ、又は、ラップトップパーソナルコンピュータ、タブレットコンピュータ、無線電話（例えば、スマートフォン）、個人用携帯情報端末（ＰＤＡ）、電子ブックリーダ（例えば、ｅリーダ）、ゲームコンソール、セットトップボックス、又は、ＰＥＳプラットフォーム１２０にアクセスすることができる任意の他のコンピューティングデバイスであり得る。
【００２０】
ユーザコンピューティングシステム類１０４の各々は、１つ以上の異なる地理的地域１２２Ａ〜１２２Ｂに位置し得る。例えば、例示するように、ユーザコンピューティングシステム１０４Ａは、地理的地域１２２Ａに位置し得、ユーザコンピューティングシステム類１０４Ｂ及び１０４Ｃは、地理的地域１２２Ｂに位置し得る。別の実施例として、コンピューティングシステム１０４の各々は、独自の地理的地域１２２に位置し得るか、又は、同じ地理的地域１２２に位置し得る。
【００２１】
各地理的地域１２２は、異なるサイズであり得る。例えば、地理的地域１２２は、住宅、又は、ビル（例えば、企業、企業本部、又は、空港）であり得る。第２の実施例として、地理的地域１２２は、１平方マイルなど地理的面積であり得る。場合によっては、地理的地域１２２は、地政学的な境界に基づき得る。例えば、地理的地域１２２Ａは都市、郡、州、又は、国であることができるし、地理的地域１２２Ｂは別の都市、郡、州、又は、国であることができる。一部の実例では、地理的地域１２２は、少なくともある程度、ネットワーキング装置に基づいて画定され得る。例えば、地理的地域１２２Ａは、地理的地域１２２Ａ内に位置するルータ（図示せず）の範囲に基づいて画定され得る。
【００２２】
ユーザコンピューティングシステム１０４は、ネットワーク１０６を介して、ＰＥＳプラットフォーム１２０、又は、そのデータセンタ類１０２と通信し得る。データセンタ類１０２と通信することは、データセンタ類１０２のコンピュータシステムと通信することを含み得る。例えば、ユーザコンピューティングシステム１０４が、データセンタコンピューティングシステム上で対応される仮想デスクトップ、又は、アプリケーションにアクセスし得る。いくつかの接続プロトコルが、データセンタコンピューティングシステムにアクセスするために使用され得る。例えば、ユーザコンピューティングシステム１０４は、リモートデスクトッププロトコル（ＲＤＰ）対応の接続、又は、ユーザデータグラムプロトコル（ＵＤＰ）対応の接続を使用してデータセンタのコンピュータシステムと通信し得る。さらに、ユーザコンピューティングシステム１０４は、別のマシンによって対応されるアプリケーションにアクセスするか、又は、該アプリケーションをストリーミングする任意のプロトコルを使用してデータセンタにて対応されるアプリケーションインスタンスにアクセスし得る。例えば、ユーザコンピューティングシステム１０４は、Ａｐｐ−Ｖ（ワシントン州レドモンドのマイクロソフト社入手可能）、又は、ＴｈｉｎＡｐｐ（カリフォルニア州パロアルトのＶＭｗａｒｅ社から入手可能）などのアプリケーション仮想化又はアプリケーションストリーミングソフトウェアを使用することによってデータセンタ上で対応されるアプリケーションにアクセスし得る。
【００２３】
Ａ．データセンタ選択
先述したように、ユーザコンピューティングシステム１０４は、ＰＥＳプラットフォーム１２０にアクセスして様々な計算リソースへのアクセスを取得し得る。典型的には、ＰＥＳプラットフォーム１２０との通信は、単一のデータセンタ１０２と通信することによって行われる。が、場合によっては、ユーザコンピューティングシステム１０４は、複数のデータセンタ類１０２と通信し得る。論じる内容を簡素化するために、かつ、特記がない限り、本明細書で説明する実施例は、ユーザコンピューティングシステム１０４が単一のデータセンタ１０２で所与の時点にて通信していると想定することになる。しかしながら、異なる時点にて、ユーザコンピューティングシステム１０４は、特にユーザコンピューティングシステム１０４が異なる地理的地域１２２に移動したか、又は、異なる計算リソースにアクセスしようとしているときに異なるデータセンタ類１０２と通信し得る。
【００２４】
場合によっては、ユーザは、通信するデータセンタ１０２を選択し得る。ユーザによって選択されたデータセンタ１０２は、最適下限であり得ることが多い。例えば、ユーザによって選択されたデータセンタ１０２は、最低の待ち時間接続を提供しない場合がある。さらに、ユーザによって選択されたデータセンタ１０２は、ユーザがアクセスすることを望む１つ以上の計算リソースを含んでいない場合がある。
【００２５】
待ち時間の低減又は最小の待ち時間を提供する接続上でユーザコンピューティングシステム１０４と通信することができるデータセンタ１０２を自動的に選択するシステム及び方法の実施例を本明細書で説明する。場合によっては、接続の待ち時間は、所与の時点にて他のデータセンタとの接続部と比較して低減されていないか、又は、最小ではない場合があるが、一定期間にわたって低減されるか、又は、最小であり得る。さらに、一部の実例では、選択したデータセンタ１０２は、絶対最小待ち時間接続を提供しない場合があるが、待ち時間閾値レベル未満である待ち時間接続を提供し得る。場合によっては、システムは、少なくともある程度、データセンタとユーザコンピューティングシステム間の通信チャネルの待ち時間に相関する１つ以上の待ち時間因子の計算に基づいてデータセンタを選択することができる。さらに、選択したデータセンタ１０２は、ユーザがアクセスに望むと識別した１つ以上の計算リソースを含む１組のデータセンタ類１０２から識別され得る。
【００２６】
特定の実施形態では、データセンタ１０２は、ユーザコンピューティングシステム１０４と対応するコンピューティング環境１１４のデータセンタ類１０２の１つ以上との間の接続に関連したいくつかの待ち時間因子を測定することによって選択され得る。例えば、データセンタ１０２は、データセンタ類１０２とユーザコンピューティングシステム１０４との間の地理的距離に基づいて選択され得る。データセンタ１０２の選択を以下で図６及び図７に関してさらに説明する。
【００２７】
Ｂ．デスクトップインスタンス配置
データセンタ１０２と通信することは、アプリケーション及び仮想デスクトップなど、計算リソースへのアクセスを提供する１つ以上のデータセンタコンピュータと通信することを含み得る。幾人かのユーザ（例えば、従業員又は顧客）に計算リソースを提供するためにデータセンタ１０２を使用するエンティティは、場合によっては、どのように計算リソースがデータセンタ１０２にて配信されるかのルールを指定することを望み得る。例えば、仲介サービスを提供するエンティティは、データセンタ１０２コンピュータシステムがオフラインになったときに影響を受ける従業員（又は、顧客）の数を低減したいと思う場合がある。この点を踏まえて、エンティティは、１つ又は２つのデータセンタ１０２コンピュータシステム内の部署全体を統合する代わりにいくつかのコンピュータシステム間で取引を処理する従業員を分散したいと思う場合がある。
【００２８】
本開示の実施形態は、ユーザ（例えば、管理者）が、ユーザを雇用するか、又は、ユーザに関連するエンティティのためにデータセンタ１０２にて計算リソース（例えば、仮想デスクトップ）の配置及び／又は構成のルールを提供することを可能にする。データセンタ１０２は、配置ルールを使用して、ユーザのために計算リソースに対応するようにデータセンタコンピュータシステムを選択することができる。例えば、データセンタ１０２は、ユーザがエンジニアリング企業の経理課の課員であると判定することができる。エンジニアリング企業にて管理者によって指定されたルールに基づいて、データセンタ１０２は、企業の経理課の他の課員に対応していないデータセンタコンピュータを選択することができる。さらに、データセンタ１０２は、確実に、この経理課従業員用に作成された仮想デスクトップが、本人の職務権限を実行するためにこの経理課従業員に必要とされるアプリケーションで予め構成されるようにすることができる。
【００２９】
Ｃ．アプリケーションへのアクセス
プログラム実行サービス（ＰＥＳ）のユーザは、アプリケーション市場を介して利用可能である様々なアプリケーション及びオペレーティングシステムの間で選択し得る。ユーザは、自分の仮想デスクトップインスタンス上で使用したいオペレーティングシステム及びアプリケーションを検索し得る。ＰＥＳプラットフォーム１２０は、ユーザによって選ばれたオペレーティングシステムを実行する仮想デスクトップインスタンスから実行可能であるようにアプリケーションを構成し得る。例えば、ユーザは、自分の仮想デスクトップインスタンス上でアップル社ＭＡＣ  ＯＳをインストールすることを選び得る。また、自分の仮想デスクトップインスタンスにおいてマイクロソフトパワーポイントソフトウェアを含むことを選び得る。ユーザは、自宅にてユーザのラップトップコンピュータからパワーポイントソフトウェアに初めにアクセスし得る。ユーザは、その後、別の都市に旅行し得、ユーザは、ＰＥＳプラットフォーム１２０上で仮想デスクトップインスタンスとの接続を用いてユーザのホテルにてユーザのラップトップコンピュータから同じソフトウェア及びオペレーティングシステム環境にアクセスしたいと思っている。ＰＥＳプラットフォーム１２０は、ユーザ及びユーザのラップトップコンピュータに関連したメタデータをチェックし得、かつ、ユーザがプログラムにアクセスする権限が与えられていると判定し得る。
【００３０】
ユーザは、その後、営業会議に出向いて、ユーザのタブレット装置からプレゼンテーションを行い得る。ＰＥＳプラットフォーム１２０は、ユーザ及びユーザのタブレット装置に関連したメタデータをチェックし得、かつ、ユーザがユーザのタブレット装置からＰＥＳプラットフォーム１２０上で仮想デスクトップインスタンス上でパワーポイントソフトウェアにアクセスする権限が与えられていると判定し得る。
【００３１】
Ｄ．クラウドフォルダ同期
多くの人々が、２つ以上のコンピューティングデバイスを有する。ユーザは、デスクトップコンピュータ、サーバコンピュータ、テーブル機器、スマートフォンなど、いくつかの異なる装置からＰＥＳプラットフォーム１２０上で遠隔操作にて記憶されたファイルにアクセスしたいと思う場合がある。ユーザは、これらの装置上でファイルにアクセスし得るが、一部の実施形態では、セキュリティ及びアクセスレベル設定が、ユーザのみが特定の装置上でファイルを同期させることを可能にするように構成され得る。ファイルをコンピューティングデバイスの上で同期させることが可能にされると、他のコンピューティングデバイスから、又は、仮想デスクトップインスタンス上でファイルに行われた全ての変更をコンピューティングデバイスに自動的に同期させることができる。一部の実例では、ファイルは、ネットワーク接続性に関係なくコンピューティングデバイス上でアクセス可能であるように構成され得る。
【００３２】
例えば、ユーザは、会社のデスクトップＰＣ、タブレット装置、及びスマートフォンを有し得、これらは、全て、ＰＥＳプラットフォーム１２０上に記憶されたファイルにアクセスするように構成される。ユーザは、ＰＥＳプラットフォーム１２０上で対応される仮想デスクトップインスタンスを介して、自分のデスクトップＰＣでＭｉｃｒｏｓｏｆｔ  Ｗｏｒｄ（商標）文書で作業し得る。仮想デスクトップインスタンス上でＭｉｃｒｏｓｏｆｔ  Ｗｏｒｄ文書を編集した後に、ユーザは、会社の自分のデスクトップＰＣをオフにし得る。ユーザは、空港に到着すると同じＭｉｃｒｏｓｏｆｔ  Ｗｏｒｄ文書を編集することを望み得る。
【００３３】
ユーザの様々なコンピューティングデバイス間に多くの同期点があり得る。ユーザのボブが仮想デスクトップインスタンスＦｏｏを有する以下の例示的な実施例を考察してみよう。仮想デスクトップインスタンスＦｏｏを使用してボブによって修正されたファイルは、ボブのコンピューティングデバイスの１つ、例えば、コンピューティングデバイス０と同期され得る。コンピューティングデバイス０上の仮想デスクトップインスタンスＦｏｏを使用してボブによって修正されたファイルは、また、ＰＥＳと同期され得、ＰＥＳは、ボブによってアクセス可能なファイルストレージに（例えば、仮想デスクトップＦｏｏによってアクセス可能なフォルダＦｏｏに）修正されたファイルのコピーを記憶するようになっている。ユーザボブは、その後、ＰＥＳによって、しかし、第２のコンピューティングデバイス、例えば、コンピューティングデバイス１を使用して、記憶されたファイルの１つ以上にアクセスすることを選び得る。コンピューティングデバイス１は、ファイルに（例えば、ＰＥＳ上のフォルダＦｏｏから）にアクセスすることができ、ボブは、コンピューティングデバイス１の上で仮想デスクトップインスタンスＦｏｏを使用してコンピューティングデバイス１上でファイルで作業して該ファイルを修正し続けることができるようになっている。ＰＥＳは、ＰＥＳ内のファイルストレージとコンピューティングデバイス１上のローカルストレージとの間でファイルを同期させることができる。したがって、ＰＥＳ内に記憶されたファイルは、ボブのコンピューティングデバイス０及び１の両方と同期させることができる。したがって、コンピューティングデバイス０及び１の一方又は両方での文書の変更は、ＰＥＳと、及び、仮想デスクトップインスタンスＦｏｏと同期させることができる。さらに、ＰＥＳとのネットワーク接続性が失われたか、又は、ローカルアクセスが必要である場合、ユーザのボブは、コンピューティングデバイス０及びコンピューティングデバイス１上でファイルにアクセスすることができる。
【００３４】
ＩＩ．例示的なプログラム実行サービス環境
図１Ｂは、通信ネットワーク１０６を介して計算リソースをマルチユーザコンピューティングシステム１０４に提供することができるプログラム実行サービス環境１００の更なる実施例を例示する。図１Ａに例示するコンポーネントに加えて、プログラム実行サービス環境１００は、ネットワーク１０６を介してＰＥＳプラットフォーム１２０と通信する１つ以上のプロバイダコンピューティングシステム１０８を含むことができる。
【００３５】
プロバイダコンピューティングシステム１０８のユーザは、ネットワーク１３０を介して、特定の形式の機能性のために、アプリケーション市場１３０にサービス画像を提出し得、アプリケーション市場１３０は、ＰＥＳプラットフォーム１２０の一部として含められ、かつ、図２に関してさらに詳細に説明する。サービス画像は、アプリケーションの画像、仮想デスクトップ構成、又は、アプリケーション市場１３０を介して提供され得る任意の他の形式の計算リソースを含み得る。アプリケーション市場１３０は、提出されたサービス画像、並びに、市場に提出された他のサービス画像をユーザコンピューティングシステム類１０４のユーザに提供し得る。したがって、ユーザコンピューティングシステム１０４を利用するユーザは、以下で図１０に関してさらに説明するように、アプリケーション市場１３０から入手可能であるサービス画像を閲覧し、所望のサービス画像を取得して、取得されたサービス画像をユーザコンピューティングシステム１０４にて、又は、データセンタ１０２のコンピュータシステムにおいて立ち上げ得る。
【００３６】
場合によっては、プロバイダコンピューティングシステム１０８のユーザは、ＰＥＳプラットフォーム１２０に属するエンティティに属し得る。他の場合において、プロバイダコンピューティングシステム１０８のユーザは、ＰＥＳプラットフォームに属さないサードパーティであり得る。取得されたサービス画像がサードパーティプロバイダによって電子サービス画像市場１００に提出された場合、取得されたサービス画像は、運用、維持、提供されるか、又は、サードパーティプロバイダにその他の方法で関連するプロバイダ対応のコンピューティング環境１１０において立ち上げられ得る。プロバイダ対応のコンピューティング環境１１０は、１つ以上の物理コンピュータシステムを含み得、場合によっては、それ自身がＰＥＳプラットフォームであり得る。
【００３７】
ＰＥＳプラットフォーム１２０は、対応するコンピューティング環境１１４からデータセンタ１０２を選択することを容易にし得る任意のシステムを含み得る対応するコンピューティング環境リソース割り当てシステム１４０をさらに含み得る。対応するコンピューティング環境リソース割り当てシステム１４０は、データセンタ１０２及びユーザコンピューティングシステム１０４とデータセンタ１０２にて利用可能である計算リソースとの間の接続の予想待ち時間を含むいくつかの因子に基づいてデータセンタ１０２を選択し得る。
【００３８】
データセンタ１０２を選択することを容易にするために、場合によっては、対応するコンピューティング環境リソース割り当てシステム１４０は、データセンタ類１０２に関連したメタデータに共通のリポジトリ１１２からアクセスすることができる。このメタデータは、データセンタ１０２に関連し得る任意の情報を含むことができる。例えば、メタデータとしては、データセンタの１０２の場所、データセンタ１０２にて利用可能である計算リソース、データセンタ１０２と様々な地理的地域１２２との間の接続の待ち時間情報、データセンタ１０２にアクセスできるエンティティのアイデンティティ、ユーザ又は関連のエンティティがデータセンタ１０２にアクセスする権限が与えられているか否かを判定するアクセスルールなどを挙げることができる。
【００３９】
一部の実例では、ユーザは、データをユーザコンピューティングシステム１０４とデータセンタ１０２間で同期させたいと思う場合がある。さらに、例えば、ユーザが地理的ロケーションを切り替えるのでユーザが新しいデータセンタ１０２にアクセスする場合、データをデータセンタ類１０２間で同期させることが必要であり得る。そのような場合、ＰＥＳプラットフォーム１２０は、データ同期を容易にするために、ファイル同期システム１７０を使用し得る。ファイル同期システム１７０を図１１に関して以下でさらに詳細に説明する。
【００４０】
ＰＥＳプラットフォーム１２０の一部として示すが、一部の実例では、対応するコンピューティング環境リソース割り当てシステム１４０及びアプリケーション市場１３０の１つ以上は、ＰＥＳプラットフォーム１２０と分離することができる。さらに、場合によっては、対応するコンピューティング環境リソース割り当てシステム１４０及びアプリケーション市場の１つ以上は、対応するコンピューティング環境１１４の一部として含められ得る。さらに、場合によっては、共通のリポジトリ１１２は、対応するコンピューティング環境１１４の一部として含められ得る。
【００４１】
ＩＩＩ．例示的な電子サービス画像市場
図２は、一部の実施形態では、プログラム実行サービス環境１００の一部として含むことができるアプリケーション市場１３０の実施例を例示する。先述したように、アプリケーション市場は、サービス画像をユーザに提供することができる。これらのサービス画像としては、アプリケーション、仮想デスクトップ及びＰＥＳプラットフォーム１２０、又は、サードパーティエンティティに関連したエンティティによって提供される他の計算リソースを挙げることができる。
【００４２】
例示する実施形態では、アプリケーション市場１３０は、電子カタログ２１６、市場インターフェース２１２、アプリケーションリポジトリ２２０、請求システム２１８及び使用モニタシステム２１４を含むいくつかのシステムを含むことができるコンピュータ環境として示す。場合によっては、アプリケーション市場１３０のシステムは、単一のコンピューティングシステムの一部であり得る。他の場合において、アプリケーション市場１３０のシステムの少なくとも一部は、複数のコンピュータシステム全体にわたって分散され得る。そのような場合、コンピュータシステムは、ネットワーク１０６など、１つ以上のネットワークを使用して相互接続され得る。アプリケーション市場１３０のシステムの各々を以下でさらに詳細に説明する。しかしながら、アプリケーション市場１３０は、図２に例示するよりも少ないか、又は、多いコンポーネントを有し得る。さらに、アプリケーション市場１３０は、様々なネットワーク、又は、Ｗｅｂサービス及び／又はピアツーピアネットワーク構成を含み得る。したがって、図２のアプリケーション市場１３０の描写は、例示的であり、本開示に制限的ではないと取るべきである。
【００４３】
市場インターフェース２１２は、サードパーティプロバイダによるネットワーク提出、及び、アプリケーション市場１３０内のサービス画像のユーザ又は顧客による閲覧及び取得を容易にする。したがって、プロバイダ、又は、プロバイダコンピューティングシステム１０８を利用する他のユーザは、１つ以上のサービス画像を市場インターフェース２１２を介してアプリケーション市場１３０に提出し得る。提出されたサービス画像は、その後、電子カタログ２１６内に含められ得る。アプリケーションなどサービス画像を提出する実施形態つまりプロセスが、２０１１年９月２９日出願の，「Ｅｌｅｃｔｒｏｎｉｃ  Ｍａｒｋｅｔｐｌａｃｅ  ｆｏｒ  Ｈｏｓｔｅｄ  Ｓｅｒｖｉｃｅ  Ｉｍａｇｅｓ」という名称の米国特許出願第１３／２４８，２２７号でさらに詳細に説明されおり、この特許は、全体が参照により本明細書に組み入れられる。
【００４４】
電子カタログ２１６は、複数のプロバイダから入手可能であるサービス画像、及び、アプリケーション市場１００の運営者によって提供されたサービス画像に関する情報を含み、該運営者は、ＰＥＳプラットフォーム１３０の運営者と同じ運営者であり得る。したがって、市場システム２１２は、複数のプロバイダ及び市場によってオファーされたサービス画像のサービス画像情報を取得して、ウェブサイトなど単一のネットワークリソースからサービス画像を顧客に提供し得る。顧客は、その後、サービス画像をアプリケーション市場から取得し、サービス画像市場との単一の相互作用、又は、サービス画像市場に行われた注文において、又は、ＰＥＳプラットフォーム１２０との複数の相互作用の一部として、対応するコンピューティング環境１１４又はそのデータセンタ１０２においてサービス画像を立ち上げ得る。電子カタログ２１６は、品目（商品及びサービスなどの）及びサービス画像（例えばアプリケーション及び仮想デスクトップ）に関する情報を含むカタログであり得るか、又は、一方のカタログは、品目に関する情報を含み、他方のカタログは、本開示の範囲から逸脱することなく、サービス画像に関する情報を含む別個のカタログであり得る。
【００４５】
例示的に、市場インターフェース２１２が、ユーザコンピューティングシステム１０４を利用する顧客がサービス画像（例えば、アプリケーション、又は、仮想デスクトップ）を閲覧し、サービス画像に適合するクエリを提出して、特定のサービス画像に関する情報及び詳細を見得る１つ以上のユーザインターフェースを生成し得る。
【００４６】
顧客がアプリケーション市場１３０から所望のサービス画像を選択した後、市場インターフェース２１２は、サービス画像の構成及び取得を容易にして、データセンタ１０２のコンピュータシステム上でサービス画像の立ち上げを引き起こし得る。この点に関しては、市場インターフェース２１２は、支払い情報、並びに、場合によっては、サービス画像をどのようにデータセンタ１０２でのコンピュータシステム上で実行するべきかを指定する情報をユーザコンピューティングシステム１０４から受信し得る。一部の実施形態では、顧客は、選択したサービス画像に対応する特定のデータセンタ１０２を選択し得る。
【００４７】
サービス画像が立ち上げられてデータセンタ１０２にてコンピュータシステム上で実行されると、アプリケーション市場１３０は、サービス画像によって提供された機能性又はサービスの使用を使用モニタシステム２１４を介してモニタすることができる。さらに、アプリケーション市場１３０は、請求システム２１８を介して顧客に請求書を送り及び／又は相応にサービス画像プロバイダを支払うことができる。請求システム２１８は、支払い情報を市場システム２１２との相互作用を介して受信及び提供し得る。一部の実施形態では、請求システム２１８は、更なるサーバを介して、電話の相互作用を介して、又は、他のメカニズムを介してなど、他のプロセスを介して支払い情報を代替的に受信及び提供し得る。さらに、アプリケーション市場１３０は、顧客にサービス画像の構成を管理、モニタ、修正するなどのツールを提供し得る。
【００４８】
サービス画像は、アプリケーションリポジトリ２２０にて記憶され得る。ユーザが、アプリケーション、又は、予め構成された仮想デスクトップなど、サービス画像を購入、レンタル、又は許可するか、又は、該サービス画像へのアクセス取得するとき、アプリケーション市場１３０は、サービス画像のコピーを取得するためにアプリケーションリポジトリにアクセスし得、かつ、本明細書で説明するプロセスを使用して選択されたデータセンタ１０２にてコンピュータシステム上にインストールすることができる。
【００４９】
一部の実施形態では、アプリケーションのプロバイダは、提供されるアプリケーションの配置又は購入を制限するルールをアプリケーション市場１３０に提供し得る。例えば、プロバイダは、アプリケーションの配置をプロバイダと同じ国内に位置するデータセンタ類１０２に制限し得る。プロバイダは、プロバイダの国の輸出制限法の遵守を確実にするために領土のルールを指定することができる。別の実施例として、プロバイダは、アプリケーションの配置をプロバイダに関連したエンティティがアクセスの購入を有するデータセンタ類１０２に制限し得る。例えば、アプリケーションが従業員使用専用に開発された場合、プロバイダは、アプリケーションを従業員がアクセスすることができるデータセンタ類１０２に限定するべきであると指定し得る。
【００５０】
ＩＶ．例示的なデータセンタ
図３は、一部の実施形態では、プログラム実行サービス環境１００の一部として含むことができるデータセンタ１０２の実施例を例示する。先述したように、データセンタ１０２は、対応するコンピューティング環境１１４の一部であり得、かつ、アプリケーション市場１３０又はサードパーティプロバイダに関連して対応される素早くプロビジョニングされてリリースされた計算リソースのコレクションを含み得る。計算リソースとしては、互いと通信するいくつかのコンピューティングデバイス、ネットワーキングデバイス、及び記憶デバイスを挙げることができる。一部の実施形態では、コンピューティングデバイスは、物理コンピューティングデバイス（例えば、データセンタコンピュータ３０２）に対応し得る。他の実施形態では、コンピューティングデバイスは、１つ以上の物理コンピューティングデバイスによって実行された仮想マシンインスタンス（例えば、インスタンス３０６）に対応し得る。さらに他の実施形態では、コンピューティングデバイスは、仮想コンピューティングデバイス及び物理コンピューティングデバイスに対応し得る。
【００５１】
図３に示す例示的なデータセンタ１０２は、アプリケーションを実行する計算リソースを提供するいくつかのデータセンタコンピュータ３０２Ａ〜３０２Ｎ（本明細書では単数形で「データセンタコンピュータ３０２」と、又は、複数形で「データセンタコンピュータ類３０２」と呼ぶ場合がある）を含む。データセンタコンピュータ類３０２は、上述の計算リソースを提供するように適切に構成されたクライアントシステム、及び、タワー又はラックマウントサーバコンピュータを含む任意の形式のコンピューティングデバイスであり得る。例えば、一実行例では、データセンタコンピュータ類３０２は、計算リソースのインスタンス３０６Ａ〜３０６Ｎを提供するように構成される。
【００５２】
一実施形態では、インスタンス３０６Ａ〜３０６Ｎ（本明細書では単数形で「インスタンス３０６」と、又は、複数形で「インスタンス３０６」と呼ぶ場合がある）は、仮想マシンインスタンスである。特定の実施形態では、インスタンス３０６は、本明細書に記載しているように、ＰＥＳプラットフォーム１２０に関連したエンティティまたはサードパーティエンティティによって提供されたサービス画像のインスタンスに基づき得るか、又は、該インスタンスであり得る。仮想マシンインスタンスとしては、物理マシンのようなプログラムを実行するマシン（例えば、コンピュータ）のソフトウェア実行例のインスタンスを挙げることができる。仮想マシンインスタンスの実施例では、データセンタコンピュータ類３０２の各々は、インスタンスを実行することができるインスタンスマネージャ３０８を実行するように構成され得る。インスタンスマネージャ３０８は、例えば、単一のデータセンタコンピュータ３０２で複数のインスタンス３０６の実行を有効にするように構成されたハイパーバイザ、又は、別の形式のプログラムであり得る。インスタンス３０６の各々は、アプリケーションの全て又は一部を実行するように構成され得る。さらに、場合によっては、インスタンス３０６は、仮想デスクトップ環境へのアクセスを提供するように構成され得る。
【００５３】
本明細書で開示する実施形態を主として仮想マシンインスタンスという文脈において説明するが、他の形式のインスタンスが本明細書で開示する概念及び技術で利用することができることを認識されたい。例えば、本明細書で開示する技術は、ストレージリソースのインスタンス、データ通信リソースのインスタンス、及び他の形式のリソースと共に利用され得る。本明細書で開示する実施形態は、また、仮想マシンインスタンスを利用することなく、コンピュータシステム上で直接にアプリケーションの全て又は一部を実行することがあり得る。
【００５４】
図３に示すデータセンタ１０２は、また、場合によっては、データセンタコンピュータ類３０２及び／又はインスタンス３０６を含むデータセンタ１０２の動作を管理するソフトウェア又はハードウェアコンポーネントを実行することができる管理コンピュータ３０４を含む。特に、管理コンピュータ３０４は、管理コンポーネント３１０を実行することがあり得る。場合によっては、ＰＥＳプラットフォーム１２０のユーザ（例えば、管理者）は、データセンタ１０２及び顧客により購入されるインスタンス２０６の動作の様々な様相を構成するために管理コンポーネント３１０にアクセスするためにユーザコンピューティングシステム１０４を利用することがあり得る。場合によっては、顧客（例えば、企業顧客の管理者）は、データセンタ１０２の購入又はレンタルされた部分を構成するために管理コンポーネント３１０にアクセスし得る。例えば、顧客は、インスタンスを購入してインスタンスの構成に変更を行うか、又は、以下でさらに説明するように、更なるユーザ（例えば、企業顧客の更なる従業員）にデータセンタ１０２のコンピュータリソースを割り当てる配置ルールを供給し得る。顧客は、また、購入されたインスタンスを需要に応じてどのようにスケーリングするべきかに関する設定を指定することがあり得る。さらに、顧客は、また、管理コンポーネント３１０にインスタンスを立ち上げる要求を提供することがあり得る。一部の実施形態では、ユーザは、データセンタ１０２の機能性及び／又は管理に関する知識を有していない場合がある。そのような場合、データセンタ１０２は、例えば、管理コンポーネント３１０を使用して、ユーザによる使用のためにデータセンタ１０２の計算リソースを自動的に構成し得る。
【００５５】
管理コンピュータ３０４は、ＰＥＳプラットフォーム１０８のユーザ（例えば、管理者）によって定義されたルールに基づいてインスタンス３０６をスケーリングすることができる自動スケーリングコンポーネント３１２をさらに含み得る。一実施形態では、例えば、自動スケーリングコンポーネント３１２は、ユーザが、いつ新しいインスタンスをインスタンス化するべきか判定する際に使用されるスケールアップルール、及び、いつ既存のインスタンスが終了させるべきか判定する際に使用されるスケールダウンルールを指定することを可能にする。一部の実施形態では、スケールアップ及びスケールダウンルールは、少し例を挙げれば、データセンタ１０２における利用、サービス保証の品質、時刻、及び／又は、データセンタ１０２へのアクセスが提供される顧客に基づき得る。
【００５６】
場合によっては、自動スケーリングコンポーネント３１２は、単一の管理コンピュータ３０４で、又は、データセンタ１０２及び／又はＰＥＳプラットフォーム１２０内の複数のコンピュータ全体にわたって並行して実行され得る。さらに、自動スケーリングコンポーネント３１２は、ＰＥＳプラットフォーム１２０において異なるデータセンタ３０２又は他のコンピューティングデバイス上で実行されるいくつかのサブコンポーネントから成り得る。自動スケーリングコンポーネント３１２は、ソフトウェア、ハードウェア、又は、２つの任意の組合せとして実行され得る。場合によっては、自動スケーリングコンポーネント３１２は、例えば、内部管理ネットワークでＰＥＳプラットフォーム１２０において利用可能な計算リソースをモニタすることを容易にし得る。あるいは又はさらに、利用可能な計算リソースは、データセンタリソース割り当てシステム３３０によってモニタされ得る。
【００５７】
管理コンピュータ３０４は、また、計算リソースの新しいインスタンス３０６の配置を補助するために配置コンポーネント３１４を含み得る。配置コンポーネント３１４は、新しいインスタンス３０６がどのように構成されるべきか記述するデータを含む構成をユーザ又はシステムから受信し得る。例えば、新しいインスタンス３０６Ａが仮想デスクトップ向けであると仮定すると、この構成は、新しいインスタンス３０６Ａと共にインストールされるべきか、又は、インスタンス３０６Ａの仮想デスクトップによってアクセス可能であるべき１つ以上のアプリケーションを指定することがあり得る。
【００５８】
さらに、配置コンポーネント３１４は、新しいインスタンス３０６を構成する、実行されるべきスクリプト及び／又は他の形式のコードを提供するか、アプリケーションキャッシュをどのように準備するべきか指定するキャッシュウォーミングロジック、及び、インスタンス３０６作成を容易にすることができる他の形式の情報を提供し得る。場合によっては、構成、キャッシュウォーミングロジック、及び他の情報は、管理コンポーネント３１０を利用するユーザによって、又は、この情報を配置コンポーネント３１４に直接に提供することによって指定され得る。他のメカニズムは、また、配置コンポーネント３１４の動作を構成するために利用されることがあり得る。
【００５９】
一部の実施形態では、データセンタ１０２はデータセンタリソース割り当てシステム３３０を含み、データセンタリソース割り当てシステム３３０は、計算リソースへのアクセスをユーザに提供するためにデータセンタコンピュータ３０２を選択することを容易にすることができる任意のシステムを含み得る。データセンタリソース割り当てシステム３３０は、データセンタコンピュータ３０２への負荷、データセンタコンピュータ３０２で利用可能なリソース、要求される形式の計算リソース、要求側ユーザに関連したメタデータなどを含むいくつかの要素に基づいてデータセンタコンピュータ３０２を選択し得る。場合によっては、データセンタリソース割り当てシステム３３０は、ユーザ及び／又はユーザが関連づけられるエンティティに関連した管理者によって提供されたインスタンス又は計算リソース配置ルールに基づいてデータセンタを選択し得る。これらの計算リソース配置ルールとしては、ユーザが計算リソースにアクセスすることを可能にするためにどこにインスタンス３０６を設置するべきか判定するために使用することができる任意の要素を挙げることができる。計算リソース配置ルール及びデータセンタコンピュータの選択を図８及び図９に関して以下で先に詳細に論じる。
【００６０】
計算リソース配置ルール及び／又は属性、又は、データセンタ１０２に関連したメタデータは、データセンタリポジトリ３３２にて記憶され得る。属性、又は、データセンタ１０２に関連した、メタデータは、データセンタに関連づけることができる任意の情報を含むことができる。例えば、メタデータとしては、データセンタ１０２にて利用可能である物理リソースに関する情報、データセンタ１０２にて利用可能であるソフトウェアリソース、データセンタ１０２の場所、データセンタ１０２にアクセスする権限が与えられたユーザ及び／又はエンティティのアイデンティティ、データセンタ１０２に関連した待ち時間情報などを挙げることができる。
【００６１】
図３に示す例示的なデータセンタ１０２では、ネットワーク３０６が、データセンタコンピュータ類３０２Ａ〜３０２Ｎ、管理コンピュータ３０４、データセンタリソース割り当てシステム３３０、及びデータセンタリポジトリ３３２を相互接続するために利用される。ネットワーク３０６としては、ＬＡＮを含め、ネットワーク１０６に関して先述した任意の形式のネットワークを挙げることができる。さらに、ネットワーク３０６は、また、図１Ａ及び図１Ｂに例示するネットワーク１０６に接続され得る。図１Ａ、図１Ｂ、及び図３に例示するネットワークトポロジは、大幅に簡素化したものであり、より多くのネットワーク及びネットワーキング装置が、本明細書で開示する様々なコンピューティングシステムを相互接続するために利用され得ることを認識されたい。データセンタ類１０２Ａ〜１０２Ｎの各々間、各データセンタ１０２内のデータセンタコンピュータ類３０２Ａ〜３０２Ｎの各々間、及び、ＰＥＳプラットフォーム１２０の各顧客により購入又はレンタルされるインスタンス３０６間の負荷をバランス調整する適切な負荷バランス調整装置、又は、ソフトウェアモジュールが、また、利用されることがあり得る。
【００６２】
図３で説明するデータセンタ１０２は、単に例示的であり、他の実行例が利用されることがあり得ることを認識されたい。特に、管理コンポーネント３１０、自動スケーリングコンポーネント３１２及び配置コンポーネント３１４によって実行されると本明細書で説明する機能性は、互いによって実行されることがあり得るか、他のコンポーネントによって実行されることがあり得るか、又は、上記又は他のコンポーネントの組合せによって実行されることがあり得る。さらに、データセンタリソース割り当てシステム３３０によって実行されると説明する機能性は、管理コンピュータ３０４の１つ以上のコンポーネントによって実行されるか、また、その逆でもあり得る。さらに、場合によっては、データセンタリソース割り当てシステム３３０は、管理コンピュータ３０４の一部として含められ得るか、又は、逆もあり得る。さらに、データセンタ１０２の様々なコンポーネントがソフトウェア、ハードウェア、又は、ソフトウェア及びハードウェアの組合せで実行され得ることを認識されたい。
【００６３】
Ｖ．例示的なリソース割り当てシステム
図４Ａは、一部の実施形態では、プログラム実行サービス環境１００の一部として含めることができる対応されたコンピューティング環境リソース割り当てシステム１４０の実施例を例示する。先述したように、対応するコンピューティング環境リソース割り当てシステム１４０は、対応するコンピューティング環境１１４からのデータセンタ１０２の選択を容易にする任意のシステムを含むことができる。対応するコンピューティング環境リソース割り当てシステム１４０は、データセンタ１０２を識別するのを助けるために使用することができるいくつかのサブシステムを含むことができる。これらのサブシステムとしては、データセンタコンピュータ容量識別モジュール４０２、インスタンス利用モジュール４０４、待ち時間計算モジュール４０６、及び、アプリケーションリソース識別モジュール４０８を挙げることができる。
【００６４】
データセンタコンピュータ容量識別モジュール４０２を使用して、対応するコンピューティング環境リソース割り当てシステム１４０は、各データセンタ１０２のデータセンタコンピュータ類３０２の容量に関係する容量情報を識別することができる。容量とは、プロセッサ、メモリ及びストレージリソースなどデータセンタコンピュータ類３０２に関連した物理リソース、又は、アプリケーション、又は、仮想マシン容量などソフトウェアリソースを指すことができる。さらに、データセンタコンピュータ容量識別モジュール４０２によって判定される情報としては、データセンタコンピュータ類３０２の容量に関連した任意の情報を挙げることができる。例えば、データセンタ容量情報としては、データセンタコンピュータ類３０２、又は、データセンタ１０２によってサポートされた全容量、データセンタ１０２にて使用される及び／又は利用可能な容量、データセンタ１０２にて利用可能であるデータセンタコンピュータ類３０２の形式などを挙げることができる。
【００６５】
一部の実施形態では、対応するコンピューティング環境リソース割り当てシステム１４０は、データセンタリソース割り当てシステム３３０にアクセスすることによってデータセンタコンピュータ類３０２の容量情報を識別することができる。あるいは又はさらに、対応するコンピューティング環境リソース割り当てシステム１４０は、データセンタ類１０２の容量情報を判定するために共通のリポジトリ１１２にアクセスし得る。
【００６６】
インスタンス利用モジュール４０４は、データセンタ１０２にて利用される及び／又は利用可能なインスタンス３０２の量を識別することができる。場合によっては、データセンタ１０２によってサポートされ得るインスタンス３０２の数は無制限である。他の場合において、データセンタ１０２によってサポートされ得るインスタンス３０２の数は、利用可能な計算リソース（例えば、データセンタコンピュータ類３０２のプロセッサ又はメモリ）及び／又はデータセンタコンピュータ類３０２の管理者設定に基づく。データセンタコンピュータ容量識別モジュールと同様に、場合によっては、インスタンス利用モジュール４０４は、データセンタ１０２でのインスタンス３０６の利用を判定するためにデータセンタ１０２のデータセンタリソース割り当てシステム３３０及び共通のリポジトリ１１２の１つ以上にアクセスし得る。一部の実施形態では、インスタンス利用モジュール４０４は、データセンタコンピュータ容量識別モジュール４０２の一部として含められ得る。
【００６７】
アプリケーションリソース識別モジュール４０８は、データセンタリソース割り当てシステム３３０及び／又は共通のリポジトリ１１２にアクセスすることによって、データセンタ１０２にて利用可能であるアプリケーション又はサービス画像を識別することができる。一部の実施形態では、特定のアプリケーションが、データセンタ類１０２のサブセットから制限され得る。例えば、アプリケーションプロバイダは、例えば、経費上の理由から、又は、アプリケーションが輸出法に違反しないようにするために、アプリケーションへのアクセスを提供することができるデータセンタ類１０２を制限することを望む場合がある。場合によっては、データセンタ１０２が、アプリケーションについて限られた数のライセンスにアクセスし得る。そのような場合、アプリケーションリソース識別モジュール４０８は、ライセンスがアプリケーションに利用可能か否かを識別することができる。一部の実施形態では、アプリケーションリソース識別モジュール４０８は、データセンタ容量識別モジュール４０２及び／又はインスタンス利用モジュール４０４の一部として含められ得る。
【００６８】
特定の場合、データセンタ１０２と通信する際にできるだけ小さい待ち時間を有することが重要である。重要である。待ち時間計算モジュール４０６は、データセンタ１０２とユーザコンピューティングシステム１０４との間の予想待ち時間を計算することができ、その結果、最小の待ち時間のデータセンタ選択が最適化される。データセンタ１０２を選択して予想待ち時間を計算するプロセスを図６及び図７に関して以下でさらに説明する。
【００６９】
ＶＩ．例示的なデータセンタリソース割り当てシステム
図４Ｂは、一部の実施形態では、データセンタ１０２の一部として含めることができるデータセンタリソース割り当てシステム３３０の実施例を例示する。一部の実例では、各データセンタ１０２は、ＰＥＳプラットフォーム１２０の対応するコンピューティング環境リソース割り当てシステム１４０と通信することができる独自のデータセンタリソース割り当てシステム３３０を含み得る。
【００７０】
図４Ｂを図４Ａと比較するとわかるように、データセンタリソース割り当てシステム３３０は、対応するコンピューティング環境リソース割り当てシステム１４０と類似のシステムを含むことができる。一部の実施形態では、対応するコンピューティング環境リソース割り当てシステム１４０のシステムは、ＰＥＳプラットフォーム１２０内のリソースの利用可能性を識別することを容易にし得、一方、データセンタリソース割り当てシステム３３０は、データセンタリソース割り当てシステム３３０を含む特定のデータセンタ１０２内のリソースの利用可能性を識別することを容易にし得る。
【００７１】
一部の実例では、データセンタリソース割り当てシステム３３０は、データセンタコンピュータ容量識別モジュール４５２と、インスタンス利用モジュール４５４と、待ち時間計算モジュール４５６と、アプリケーションリソース識別モジュール４５８とを含むことができる。場合によっては、データセンタリソース割り当てシステム３３０のシステムは、対応するコンピューティング環境リソース割り当てシステム１４０による判定及び／又は計算を容易にするために、情報を対応するコンピューティング環境リソース割り当てシステム１４０の対応するシステムに提供し得る。
【００７２】
したがって、例えば、データセンタコンピュータ容量識別モジュール４５２は、データセンタ１０２のデータセンタコンピュータ類３０２の容量情報を、対応するコンピューティング環境リソース割り当てシステム１４０のデータセンタコンピュータ容量識別モジュール４０２に提供し得る。同様に、インスタンス利用モジュール４５４は、データセンタ１０２のインスタンス３０６の利用及び／又は利用可能性に関する情報を対応するコンピューティング環境リソース割り当てシステム１４０のインスタンス利用モジュール４０４に提供し得る。さらに、アプリケーションリソース識別モジュール４５８は、データセンタ１０２にて利用可能なアプリケーションに関係する情報をアプリケーションリソース識別モジュール４０８に提供することができる。
【００７３】
上述のシステムに加えて、データセンタリソース割り当てシステム３３０は、また、待ち時間計算モジュール４５６を含むことができる。待ち時間計算モジュール４５６は、ユーザコンピューティングシステム１０４との接続の予想待ち時間を計算する待ち時間計算モジュール４０６を容易にする情報を識別することができる。例えば、待ち時間計算モジュール４５６は、地理的地域１２２Ｂにおけるユーザコンピューティングシステム１０４との接続について履歴待ち時間情報を提供することができる。
【００７４】
一部の実施形態では、データセンタリソース割り当てシステム３３０の一部のサブシステムは、組合せ及び／又は随意的であり得る。例えば、場合によっては、データセンタリソース割り当てシステム３３０は、待ち時間計算モジュール４５６を含まない場合がある。第２の実施例として、データセンタコンピュータ容量識別モジュール４５２及びインスタンス利用モジュール４５４は組み合わされ得る。
【００７５】
ＶＩＩ．例示的なデスクトップインスタンス
図５は、一部の実施形態では、データセンタ１０２のデータセンタコンピュータ３０２によって対応することができるインスタンス５００の実施例を例示する。例えば、インスタンス５００は、ユーザに、データセンタコンピュータ３０２のインスタンスマネージャ３０８によってデータセンタコンピュータ３０２で作成された仮想デスクトップへのアクセスを提供するために作成することができるインスタンス３０６の実施例であり得る。場合によっては、インスタンス５００は、ユーザによる要求に応答して配置コンポーネント３１４によって作成されるか、又は、作成させられ得る。
【００７６】
一般に、インスタンス５００は、ユーザに仮想デスクトップなど、計算リソース又は計算ノードへのアクセスを提供するためにインスタンス化される仮想マシンを含む。しかしながら、場合によっては、インスタンス５００は、仮想マシンの使用なしでデータセンタコンピュータ３０２で作成され得る。
【００７７】
図５に例示する実施例では、インスタンス５００は、デスクトップ環境５０２を含む。デスクトップ環境５０２としては、仮想デスクトップを表す任意の形式の環境を挙げることができる。例えば、該デスクトップ環境は、ＰＥＳプラットフォーム１２０により記憶及び／又は対応されるファイル及び／又はアプリケーションと相互作用するインターフェースを含むことができる。場合によっては、デスクトップ環境５０２は、別のインスタンス３０６によって含まれるか又は対応されるデータ及び／又はアプリケーションにアクセスするショートカットを含むことができる。さらに、場合によっては、デスクトップ環境５０２は、デスクトップの他にファイル及びアプリケーションにアクセスする更なる又は代替的なインターフェースを提供することができる。例えば、デスクトップ環境５０２は、ファイルマネージャを含むことができるか、又は、ファイルマネージャとすることができる。場合によっては、根底にあるオペレーティングシステム及び／又はハードウェアに関係なく、デスクトップ環境５０２は、特定の見た目と感じを提示し得る。例えば、デスクトップ環境５０２は、ウィンドウズデスクトップ、Ｌｉｎｕｘデスクトップ、又は、ｉＯＳデスクトップをエミュレートするように構成することができる。他の場合、インスタンス５００は、ユーザによって選択された仮想マシン計算リソースの一部であり得る。そのような場合、デスクトップ環境５０２は、仮想マシン計算リソースの選択されたオペレーティングシステム（例えば、ウィンドウズ、Ｌｉｎｕｘなど）のデスクトップ環境であり得る。
【００７８】
デスクトップ環境５０２は、アプリケーションアクセスモジュール５０４と、アプリケーション市場インターフェース５０６と、ファイルアクセスモジュール５０８とを含むことができる。ユーザがインスタンス５００を介して（例えば、デスクトップ環境５０２上のショートカットから）アプリケーションにアクセスしようとするとき、アプリケーションアクセスモジュール５０４は、ユーザにアプリケーションへのアクセスを提供することができる。場合によっては、アプリケーションアクセスモジュール５０４は、ユーザによって所望されたアプリケーションを含む別のインスタンスへのアクセスを取得することができる。一部の実施形態では、アプリケーションへのアクセスを取得することは、アプリケーションアクセスモジュール５０４が、ユーザはアプリケーションにアクセスする権限が与えられているか否かを判断することを含み得、該権限が与えられていない場合、アプリケーションアクセスモジュール５０４は、アプリケーション市場インターフェース５０６を使用して、ユーザに、アプリケーション市場１３０からアプリケーションを購入又はレンタルする機会を提供することができる。さらに、ユーザは、アプリケーション市場インターフェース５０６を使用して、アプリケーション市場１３０を介して利用可能なアプリケーション、又は、サービス画像を閲覧することができる。
【００７９】
ファイルアクセスモジュール５０８は、ユーザに、インスタンス５００と共に含まれていないファイル又はデータへのアクセスを提供することができる。例えば、ユーザがデスクトップ環境５０２を介してファイルにアクセスしようとする場合、ファイルアクセスモジュール５０８はファイルを見つけることができ、該ファイルは、別のインスタンス３０６、又は、記憶サーバなど、別のデータセンタコンピュータ３０２内に記憶され得る。ファイルアクセスモジュール５０８は、ファイルを見つけると、ユーザに、デスクトップ環境５０２を介してファイルへのアクセスを提供することができる。ファイルがユーザによって修正された場合、ファイルアクセスモジュール５０８は、修正されたファイルに同じ又は異なるコンピューティングデバイス上でユーザがアクセスすることができるようにファイルを同期させることができる。ファイルを同期させるプロセスを図１２及び図１３を参照して以下で説明する。
【００８０】
ＶＩＩＩ．例示的なデータセンタ選択プロセス
図６は、データセンタ選択プロセス６００の実施例を例示する。プロセス６００は、少なくともある程度、ユーザ（例えば、顧客又はその従業員）による使用のためにデータセンタを選択することができる任意のシステムによって実行することができる。例えば、プロセス６００は、少し例を挙げれば、全部、一部を問わず、ＰＥＳプラットフォーム１２０、対応するコンピューティング環境リソース割り当てシステム１４０、データセンタコンピュータ容量識別モジュール４０２、インスタンス利用モジュール４０４、待ち時間計算モジュール４０６、アプリケーションリソース識別モジュール４０８及びデータセンタリソース割り当てシステム３３０によって実行することができる。任意の数のシステムが、全部、一部を問わず、プロセス６００を実行することができるが、論じる内容を簡素化するために、プロセス６００の各部を特定のシステムを参照して説明する。
【００８１】
特定の場合、プロセス６００は、ユーザのコンピュータシステムとデータセンタとの間の待ち時間の目安に少なくとも部分的に基づいてユーザの最適データセンタを選択する。有利なことに、特定の実施形態では、プロセス６００は、自動的に及び／又はユーザの知識なしに実行することができる。他の実施形態では、ユーザが、プロセス６００を開始し得る。
【００８２】
プロセス６００は、ブロック６０２にて始まり例えば、ＰＥＳプラットフォーム１２０は、計算リソースへのアクセスをユーザコンピューティングシステム１０４（例えば、ユーザコンピューティングシステム１０４Ａ）から取得する要求を受信する。このコンピューティング要求は、ユーザコマンドに応答して、又は、ユーザコンピューティングシステム１０４に関連したアプリケーション、又は、システムから自動的に受信され得る。さらに、要求される計算リソースとしては、ＰＥＳプラットフォーム１２０によって提供され得る任意の形式のリソースを挙げることができる。例えば、計算リソースは、アプリケーション、仮想デスクトップ環境、データセンタにて又はユーザコンピューティングシステム１０４にて対応されるアプリケーション用計算リソース、ファイルストレージ空間、又は、ＰＥＳプラットフォーム１２０によって提供され得る任意の他のリソースとすることができよう。
【００８３】
ブロック６０４にて、対応するコンピューティング環境リソース割り当てシステム１４０は、ユーザコンピューティングシステム１０４の地理的位置を識別する。ユーザコンピューティングシステム１０４の地理的位置を識別することは、特異性の閾値度内のユーザコンピューティングシステムの１０４の場所を識別することを含み得る。例えば、ブロック６０４は、特定のアドレス、郵便番号、町、国、国、又は、ユーザコンピューティングシステム１０４が位置する任意の他の地理的地域を識別することを含み得る。
【００８４】
さらに、対応するコンピューティング環境リソース割り当てシステム１４０は、ユーザコンピューティングシステム１０４の地理的位置を識別又は確認する１つ以上のメカニズムを使用することができる。例えば、リソース割り当てシステム１４０は、場所を識別するためにユーザコンピューティングシステム１０４のインターネットプロトコル（ＩＰ）アドレスを使用し得る。別の実施例として、対応するコンピューティング環境リソース割り当てシステム１４０は、ユーザコンピューティングシステムの１０４の場所を識別するために全地球測位システム（ＧＰＳ）データを使用し得る。さらに別の実施例では、対応するコンピューティング環境リソース割り当てシステム１４０は、その場所を確立するためにユーザコンピューティングシステム１０４のユーザに問い合わせし得る。
【００８５】
ブロック６０６にて、対応するコンピューティング環境リソース割り当てシステム１４０は、ユーザコンピューティングデバイス１０４の半径内のブロック６０２にて要求された計算リソースを含む１組のデータセンタ類１０２を判定する。対応するコンピューティング環境リソース割り当てシステム１４０は、要求された計算リソースを含むその１組のデータセンタ類１０２を識別することを容易にするために、データセンタコンピュータ容量識別モジュール４０２、インスタンス利用モジュール４０４、及びアプリケーションリソース識別モジュール４０８の１つ以上を使用し得る。さらに、場合によっては、対応するコンピューティング環境リソース割り当てシステム１４０は、要求された計算リソースを含む１組のデータセンタ類１０２を判定することを容易にするために、各データセンタ１０２のデータセンタリソース割り当てシステム３３０にアクセスし得る。さらに、場合によっては、対応するコンピューティング環境リソース割り当てシステム１４０は、その１組のデータセンタ類１０２をユーザがアクセスする権限が与えられているデータセンタから判定する。データセンタ１０２が要求されたリソースを含むか否かを判定することは、また、例えば、ユーザ、又は、ユーザを雇用するエンティティに関連したユーザプロファイル、又は、１組のデスクトップ配置ルールに基づいて、データセンタ１０２が更なるリソースを含むか否かを判定することを含み得、該１組のデスクトップ配置ルールを以下でさらに詳細に説明する。例えば、対応するコンピューティング環境リソース割り当てシステム１４０は、ユーザに関連した使用プロファイルがユーザがストレージリソースの使用閾値よりも多く利用することを示す場合には各データセンタ１０２が少なくともデータストレージ利用可能性の利用可能性閾値を含むか否かを判定し得る。
【００８６】
場合によっては、半径は、予め定義され得るか、又は、ユーザによって設定され得る。他の場合において、ユーザコンピューティングシステム１０４に対して場所に関係なく計算リソースを含む全てのデータセンタが識別され得る。一部の実施形態では、ブロック６０２にて受信された要求は、複数の計算リソースを識別し得る。そのような場合、対応するコンピューティング環境リソース割り当てシステム１４０は、所望の計算リソースの全てを含む組のデータセンタ類１０２を識別する。
【００８７】
しかしながら、データセンタ類１０２のどれも所望の計算リソースの全てを含むというわけではない場合、対応するコンピューティング環境リソース割り当てシステム１４０は、最大数の要求された計算リソースを含む組のデータセンタ類１０２を識別し得る。場合によっては、ユーザは、その他より重要であると特定の要求の計算リソースを識別し得る。そのような場合、対応するコンピューティング環境リソース割り当てシステム１４０は、含むのが要求された計算リソースのいくつかであるが全てではないデータセンタ類１０２を識別するときに、より重要な計算リソースをより高く重み付けし得る。
【００８８】
半径という用語が使用されるが、リソース割り当てシステム１４０により調べられる地理的地域は、必ずしも円形、又は、ユーザコンピューティングデバイス１０４の中心であるわけではない。その代わりに、場合によっては、検索される地理的地域は、任意の他の幾何学的形状であり得るか、又は、州又は国など、地理的領域の地政学的な内訳に基づき得る。
【００８９】
一部の実施形態では、ブロック６０６にて識別されるその１組のデータセンタ類１０２は、ユーザ、又は、ユーザに関連したメタデータの任意の属性に基づいてフィルタリングされ得る。例えば、データセンタの選択は、リソースへのアクセスを要求するユーザの所属に基づいてフィルタリングされ得る。例えば、ユーザがエンティティの従業員であると仮定して、エンティティが３つのデータセンタへのアクセスを購入した場合、たとえ更なるデータセンタがユーザによって所望された計算リソースを含む半径内に存在するとしても、ブロック６０６にて識別されるその１組のデータセンタ類１０２は、３つのデータセンタに制限されることになる。別の実施例として、識別されるその１組のデータセンタ類１０２は、ユーザによって購入されたサービス品質に基づいてフィルタリングされ得る。したがって、ユーザが休止時間なしでデータセンタ１０２の計算リソースへの恒常的なアクセスを必要とする、プラチナレベルのアクセスを購入し得る。そのような場合、ブロック６０６にて識別されるデータセンタ類１０２は、青銅レベルのアクセスで満足するユーザに使用されたデータセンタ１０２と比較すると、より高い信頼性率及びより低い予約率を有するデータセンタ類１０２を識別するようにフィルタリングされ得る。
【００９０】
一部の実施形態では、データセンタ類１０２がブロック６０６にて識別されない場合、対応するコンピューティング環境リソース割り当てシステム１４０は、検索する半径を拡張し得る。あるいは又はさらに、対応するコンピューティング環境リソース割り当てシステム１４０は、計算リソースを、リソースを含むデータセンタからブロック６０６にて検索された半径内のデータセンタにコピーさせ得る。他の場合において、検索された半径内のデータセンタ類１０２が所望の計算リソースを含まない場合、ユーザは、計算リソースへのアクセスを拒絶され得る。
【００９１】
一部の実施形態では、ブロック６０６は、随意的であり得る。例えば、場合によっては、各データセンタ１０２は、同じリソースを含み得、及び／又は、指定の半径内に位置し得る。第２の実施例として、プロセス６００は、全てのデータセンタ類１０２について実行され得る。
【００９２】
ブロック６０８にて、待ち時間計算モジュール４０６は、ブロック６０６にて識別された１組のデータセンタから、各データセンタ１０２の待ち時間因子を計算する。待ち時間因子は、データセンタ１０２とユーザコンピューティングシステム１０４との間の通信における予想待ち時間を表す。さらに、待ち時間因子は、少し例を挙げれば、データセンタ１０２とユーザコンピューティングシステム１０４との間の距離、１つ以上の待ち時間試験の結果、及び履歴待ち時間情報を含む様々な要因に基づくことができる。一部の実施形態では、待ち時間因子は、ユーザコンピュータシステム１０４及び／又はデータセンタ１０２に関連した特定のシステムに基づいて計算される。例えば、待ち時間因子はデータセンタ１０２での出現コンピューティングシステム（例えば、ネットワーク１０６にデータセンタを接続するネットワーク３０６でのルータ又はゲートウェイ）とユーザコンピューティングシステム１０４との間の通信に基づき得る。第２の実施例として、待ち時間因子は、ユーザコンピューティングシステム１０４と通信する地理的地域１２２内に位置するルータとデータセンタ１０２でのシステムとの間の通信に基づき得る。場合によっては、データセンタ類１０２の少なくとも一部の待ち時間因子は、並行して計算され得、その結果、各データセンタ１０２の待ち時間因子が順番に計算される場合と比較してプロセス６００の実行が速められる。待ち時間因子の計算を図７に関して以下でさらに詳細に論じる。
【００９３】
対応するコンピューティング環境リソース割り当てシステム１４０は、ブロック６１０にて最低待ち時間因子でデータセンタ１０２を識別する。２つ以上のデータセンタ１０２が最低待ち時間因子を共有する場合、対応するコンピューティング環境リソース割り当てシステム１４０は、データセンタ１０２を選択するために決着をつける因子を使用することができる。決着をつける因子としては、別のデータセンタよりも優る１つのデータセンタを選択するために使用され得る任意の特性を挙げることができる。例えば、決着をつける因子は、各データセンタ１０２での割当てを解除されたリソース、ユーザコンピューティングシステム１０４までの各データセンタ１０２の距離、各データセンタ１０２にアクセスできる更なるユーザなどの各データセンタ１０２の利用率の１つ以上に基づくことができる。あるいは、対応するコンピューティング環境リソース割り当てシステム１４０は、最低待ち時間速度を共有するその１組のデータセンタ類１０２からランダムにてデータセンタ１０２を選択し得る。別の代替案として、対応するコンピューティング環境リソース割り当てシステム１４０は、処理される各々の各要求について特定の順番で異なるデータセンタ１０２を選択する総当りプロセスを使用し得る。
【００９４】
一部の実施形態では、ブロック６１０にて選択されるデータセンタ１０２は、最低待ち時間因子を有するデータセンタではなく、１つ以上の更なる要件を満たす最低待ち時間因子を有するデータセンタ１０２であり得る。例えば、冗長のために、例えば、各データセンタ１０２は利用可能なプロセッサリソースの最高９０％を割り当てるように構成されると想定しよう。データセンタ１０２ａが利用可能なプロセッサリソースの９０％を既に割り当てていた場合、データセンタ１０２ａは、たとえ特定の要求側ユーザコンピューティングシステム１０４の最低待ち時間因子に関連しているとしても選択される資格はあり得ない。
【００９５】
ブロック６１２にて、対応するコンピューティング環境１１４は、ユーザコンピューティングシステム１０４のユーザに、識別されたデータセンタ１０２の計算リソースへのアクセスを許可する。一部の実施形態では、データセンタ１０２へのユーザアクセスを許可することは、ユーザの１つ以上のアカウントをデータセンタ１０２と関連づけることを含むことができる。あるいは又はさらに、データセンタ１０２へのユーザアクセスを許可することは、ユーザコンピューティングシステム１０４をデータセンタ１０２と関連づけることを含むことができる。さらに、場合によっては、ユーザの各ユーザコンピューティングシステム１０４は、例えば、ユーザの利用可能なデータ及びリソースにおける一貫性を維持するためにデータセンタ１０２に関連づけられ得る。さらに、場合によっては、データセンタ１０２へのアクセスを許可することは、ユーザ又は関連のユーザコンピューティングシステム１０４がＰＥＳプラットフォーム１２０のデータ又は計算リソースにアクセスしようとするたびにデータセンタ１０２に自動的に接続することを含み得る。
【００９６】
一部の実施形態では、対応するコンピューティング環境リソース割り当てシステム１４０は、プロセス６００に関連した１つ以上の動作を実行する順番を決定するために、ユーザコンピューティングシステム１０４の場所を使用し得る。例えば、待ち時間計算がブロック６０８にて実行される順番は、ユーザコンピューティングシステム１０４の場所に基づき得る。
【００９７】
ＩＸ．例示的な待ち時間因子計算プロセス
図７は、待ち時間因子計算プロセス７００の実施例を例示する。プロセス７００は、少なくともある程度、データセンタ１０２の待ち時間因子を計算することができる任意のシステムによって実行することができる。待ち時間因子としては、ユーザコンピューティングシステム１０４とデータセンタ１０２との間で通信する待ち時間の予想レベルの目安を挙げることができる。さらに、プロセス７００は、プロセス６００の一部として、例えば、ブロック６０８の一部として実行され得る。プロセス７００は、全部、一部を問わず、例えば、少し例を挙げれば、ＰＥＳプラットフォーム１２０、対応するコンピューティング環境リソース割り当てシステム１４０、待ち時間計算モジュール４０６、データセンタリソース割り当てシステム３３０、及び待ち時間計算モジュール４５６によって実行することができる。任意の数のシステムが、全部、一部を問わず、プロセス７００を実行することができるが、論じる内容を簡素化するために、プロセス７００の部分を特定のシステムを特定のシステムを参照して説明する。
【００９８】
プロセス７００は、ブロック７０２にて始まり、例えば、待ち時間計算モジュール４０６は、ユーザコンピューティングシステム１０４の地理的位置を受信する。地理的位置は、対応するコンピューティング環境リソース割り当てシステム１４０、又は、ユーザコンピューティングシステム１０４の地理的位置を判定することができる任意のその他のシステムから受信され得る。あるいは、待ち時間計算モジュール４０６は、例えば、ユーザコンピューティングシステム１０４のＩＰアドレスに基づいて地理的位置自体を判定し得る。一部の実施形態では、ブロック７０２は、ブロック６０４に関して先に説明した実施形態の一部又は全部を含むことができる。
【００９９】
ブロック７０４にて、待ち時間計算モジュール４０６は、データセンタ１０２の識別を受信する。待ち時間計算モジュール４０６は、ブロック７０６にてデータセンタ１０２の地理的位置を判定する。データセンタ１０２の地理的位置は、共通のリポジトリ１１２にアクセスすることによって判定され得る。あるいは、各データセンタ１０２の地理的位置は、待ち時間計算モジュール４０６にて記憶され得る。別の代替案として、待ち時間計算モジュール４０６は、地理的位置を判定するためにデータセンタ１０２に問い合わせし得る。
【０１００】
ユーザコンピューティングシステム１０２及びデータセンタ１０２の地理的位置に基づいて、待ち時間計算モジュール４０６は、ブロック７０８にてユーザコンピューティングシステム１０４とデータセンタ１０２との間の距離を計算することができる。場合によっては、この距離は、少なくともある程度、ユーザコンピューティングシステム１０４とデータセンタ１０２との間の物理的距離に基づき得る。あるいは又はさらに、この距離は、少なくともある程度、データセンタ１０２とユーザコンピューティングシステム１０４との間の１つ以上のネットワーク通信路の長さに基づき得る。
【０１０１】
ブロック７１０にて、待ち時間計算モジュール４０６は、ブロック７０８にて計算された距離に基づいて第１の待ち時間番号Ｌ１を判定し得る。一部の実施形態では、第１の待ち時間番号は、さらに、少なくともある程度、ユーザコンピューティングシステム１０４とデータセンタ１０２の間で利用される接続及び／又はネットワークハードウェアの形式に基づき得る。例えば、データセンタ１０２とユーザコンピューティングシステム１０４との間のルートの半分が光ファイバを含む場合、銅線がルートのその部分に対応した場合と異なる第１の待ち時間番号が判定され得る。
【０１０２】
待ち時間計算モジュール４０６は、ブロック７１２にて第２の待ち時間番号Ｌ２を取得するために、１つ以上の待ち時間試験を実行する。待ち時間試験としては、２つのコンピューティングシステム間の待ち時間の推定値を取得するために使用することができる任意の形式のネットワーク又は接続試験を挙げることができる。例えば、待ち時間試験としては、ピング動作、トレースルート動作、トレースルート６動作、トラサート（tracert）動作、トレースパス動作などを挙げることができる。複数の待ち時間試験が実行される実施形態では、ブロック７１２は、待ち時間試験の結果を統合すること（例えば、平均化、合計することなど）を含むことができる。
【０１０３】
ブロック７１４にて、待ち時間計算モジュール４０６は、データセンタ１０２とユーザコンピューティングシステム１０４に最も近いネットワークホップとの間の履歴待ち時間情報を検索する。ネットワークホップとしては、通信パケットをデータセンタ１０２とユーザコンピューティングシステム１０４との間で送り及び／又は転送する任意のネットワーク又は通信ハードウェア（例えば、ルータ、又は、ゲートウェイ）を挙げることができる。ユーザコンピューティングシステム１０４に最も近いネットワークホップは、ユーザコンピューティングシステム１０４に物理的に最も近いネットワークホップ及び／又はＰＥＳプラットフォーム１２０にユーザコンピューティングシステム１０４によって送られたときに最初にパケットを受信するネットワークホップを指し得る。一部の実施形態では、ネットワークホップを識別することは、ルックアップテーブルにアクセスし及び／又はネットワークトポロジマップにアクセスしてユーザコンピューティングシステム１０４に最も近いネットワークホップを判定することを含むことができる。ルックアップテーブル及び／又はネッワークマップは、ネットワーク１０６内に含まれた共通のリポジトリ１１２又は公的にアクセス可能なリポジトリに記憶され得る。
【０１０４】
履歴待ち時間情報を使用して、待ち時間計算モジュール４０６は、ブロック７１６にて第３の待ち時間番号Ｌ３を生成する。第３の待ち時間番号は、履歴待ち時間情報（例えば、履歴待ち時間情報の平均又は時間重み付き平均など）から導出され得る。ブロック７１８にて、待ち時間計算モジュール４０６は、第１の待ち時間番号、第２の待ち時間番号及び第３の待ち時間番号に基づいてデータセンタ１０２について待ち時間因子Ｄを計算する。さらに、場合によっては、各待ち時間番号は、例えば、経験的に判定された重み付け因子（例えば、Ａ１、Ａ２及びＡ３）を使用して重み付けされ得る。したがって、例えば、待ち時間因子は、以下の式１を使用して計算され得る。
Ｄ＝Ａ１＊Ｌ１＋Ａ２＊Ｌ２＋Ａ３＊Ｌ３    （１）
【０１０５】
式１を用いて計算した待ち時間因子が第１、第２及び第３の待ち時間番号の重み付け合計であるが、待ち時間因子を待ち時間番号の他の数学的な組合せに基づかせることが可能である。さらに、場合によっては、待ち時間因子は、待ち時間番号、又は、その組合せの１つ以上により索引が付される待ち時間因子の表にアクセスすることによって判定され得る。
【０１０６】
一部の実施形態では、待ち時間番号の１つ以上は、待ち時間因子を計算することから除外され得る。そのような実例では、図７の関連のブロックは、随意的であり得る。例えば、待ち時間因子は、履歴待ち時間情報に関係する第３の待ち時間番号なしで計算され得る。そのような場合、ブロック７１４及び７１６は、随意的であり得る。
【０１０７】
場合によっては、待ち時間番号又は因子の１つ以上は、データセンタ１０２とユーザコンピューティングシステム１０４との間の通信チャネルの待ち時間に少なくともある程度相関する。したがって、一部の実施形態では、プロセス７及びプロセス６は、ユーザコンピューティングシステム１０４と他のデータセンタ類１０２との間の通信チャネルと比較して最小の待ち時間を有すると予想されるデータセンタ１０２を選択するために使用することができる。あるいは又はさらに、プロセス７及びプロセス６は、ユーザコンピューティングデバイス１０４と通信するときに閾値レベルを下回る待ち時間を有すると予想されるデータセンタ１０２を選択するために使用することができる。
【０１０８】
Ｘ．例示的なデスクトップ配置構成プロセス
図８は、デスクトップ配置構成プロセス８００の実施例を例示する。プロセス８００は、少なくともある程度、インスタンス（例えば、仮想デスクトップ、アプリケーション、など）の割り当ての１組のルール（例えば、デスクトップ配置ルール）に基づいてＰＥＳプラットフォーム１２０及び／又はその１つ以上のデータセンタ類１０２を構成することができる任意のシステムによって実行することができる。例えば、プロセス８００は、全部、一部を問わず、少し例を挙げれば、ＰＥＳプラットフォーム１２０、対応するコンピューティング環境１１４、対応するコンピューティング環境リソース割り当てシステム１４０、データセンタリソース割り当てシステム３３０、管理コンピュータ３０４、管理コンポーネント３１０及び配置コンポーネント３１４によって実行することができる。任意の数のシステムが、全部、一部を問わず、プロセス８００を実行することができるが、論じる内容を簡素化するために、プロセス８００の部分を特定のシステムを特定のシステムを参照して説明する。
【０１０９】
図８が仮想デスクトップ及びデスクトップ配置ルールを参照して説明するが、プロセス８００は、この点を踏まえて有限ではない。プロセス８００は、仮想デスクトップ、アプリケーション、プロセッサ利用、データストレージなどを含む任意の形式の計算リソースを割り当てる方法を判定する任意の形式の計算リソース配置ルールに基づいてデータセンタ類１０２を構成するために使用することができる。
【０１１０】
プロセス８００は、例えば、対応するコンピューティング環境１１４が、ユーザ認証情報を例えば、ユーザコンピューティングシステム１０４を介してユーザから受信するブロック８０２にて始まる。場合によっては、対応するコンピューティング環境１１４の特定のデータセンタ１０２が、認証情報を受信する。全ての場合において必要とされるというわけではないが、典型的には、ユーザは、少なくとも一部の他のユーザと比較すると上位の許可（例えば、管理者又は他のスーパーユーザ）に関連している。
【０１１１】
ブロック８０４にて、対応されたコンピュータ環境１１４は、デスクトップ配置ルールをユーザから受信する。デスクトップ配置ルールは、特定のデータセンタ１０２、又は、複数のデータセンタに関連付けることができる。例えば、デスクトップ配置ルールは、ユーザがアクセスする権限が与えられている全てのデータセンタ類１０２に関連付けられ得る。第２の実施例として、デスクトップ配置ルールは、特定のグループ（例えば、エンティティのディベロッパチーム又はマーケティングチーム）のユーザがアクセスする権限が与えられている全てのデータセンタと関連づけられ得る。
【０１１２】
さらに、デスクトップ配置ルールは、データセンタ１０２にて仮想デスクトップを配置する任意の形式のルールを含むことができる。例えば、デスクトップ配置ルールは、データセンタ１０２での任意の特定のコンピューティングシステムがエンティティのユーザ、又は、エンティティの下位グループ又は部署（例えば、経理、研究開発など）のユーザの閾値百分率のみに対応すると指定し得る。場合によっては、デスクトップ配置ルールは、特定の群の構成員が２人としてデータセンタ１０２の同じコンピュータシステムによって対応されないと指定することができる。さらに、場合によっては、デスクトップ配置ルールは、ユーザのサブセットは、ラック、バックアップバッテリ、電源バス、ラックスイッチ、電源、ルータ、データストレージ、データストレージシステムなどを共有しないコンピュータシステムに割り当てられると指定し得る。有利なことに、特定の実施形態では、特定のコンピューティングシステムから、又は、何らかの形式のリソース（例えば、バックアップバッテリ）を共有する１組のコンピューティングシステムから計算リソースを割り当てられるユーザの百分率を制限することによって、アクセスを失うか、又は、別のコンピューティングシステムに移動される必要があるユーザの数が、コンピューティングシステムがアクセス不能になるか、又は、リソース（例えば、データセンタ１０２でのルータ）がアクセス不能になった場合に制限され、その結果、計算リソースが失われるときに発生する可能性がある負の結果が低減される。
【０１１３】
場合によっては、デスクトップ配置ルールは、デスクトップ配置ルールにより支配されるユーザに関連したユーザプロファイルに基づき得る。例えば、デスクトップ配置ルールは、ユーザプロファイルがユーザがいくつかのグラフィクス重視アプリケーションを利用することを示すユーザにはデータセンタ１０２の一部の他のコンピューティングシステムよりも強力なグラフィックカードを含むデータセンタ１０２のコンピューティングシステムが割り当てられると指定し得る。第２の実施例として、ユーザプロファイルがユーザが多くの記憶空間を必要とすることを示すユーザには、閾値を超える記憶空間利用可能性を有するデータストレージに関連するか、又は、他のデータストレージの記憶空間利用可能性を上回るデータセンタ１０２のコンピューティングシステムへアクセスが割り当てられ得る。
【０１１４】
さらに、場合によっては、デスクトップ配置ルールは、１組のユーザが直接に又は仮想デスクトップを介してアクセスする権限が与えられているアプリケーションを指定するルールを含むことができる。さらに、デスクトップ配置ルールは、ユーザにより提供が求められる仮想デスクトップのデフォルト構成を指定し得る。
【０１１５】
さらに、上述したように、一部の実施形態では、デスクトップ配置ルールは、デスクトップ又は仮想デスクトップだけではなく、任意の形式の計算リソースに関連づけることができる。
【０１１６】
ブロック８０６にて、対応するコンピューティング環境１１４は、デスクトップ配置ルールに関連したエンティティ（例えば、ユーザを雇用する企業）を識別する。一部の実施形態では、対応するコンピューティング環境１１４は、ブロック８０６にてエンティティに関連したユーザの下位グループを識別する。ユーザの下位グループは、例えば、エンティティの組織構造内の部署、又は、特定の場所（例えば、エンティティ英国事務所）に位置する一群のユーザであり得る。一部の実施形態では、ブロック８０６は、随意的である。例えば、ユーザはユーザの個人利用向けにデスクトップ配置ルールを設定し得る。
【０１１７】
対応するコンピューティング環境１１４は、ブロック８０８にて、ユーザが、ブロック８０６にて識別されたエンティティのためにデスクトップ配置ルールを設定する権限が与えられていることを確認する。権限のこの判定は、少なくともある程度、ブロック８０２にて受信されたユーザ認証情報に基づいて行われ得る。さらに、場合によっては、権限の判定は、エンティティでのユーザの部署、役割、又は職位など、ユーザに関連したメタデータに基づいて行われ得る。
【０１１８】
ブロック８１０にて、対応するコンピューティング環境１１４は、ユーザに関連した１つ以上のデータセンタ類１０２を識別する。あるいは又はさらに、対応するコンピューティング環境１１４は、デスクトップ配置ルールに基づいて１つ以上のデータセンタ類１０２を識別し得る。一部の実施形態では、ブロック８１０は、随意的である。例えば、デスクトップ配置ルールは、対応するコンピューティング環境１１４の全てのデータセンタ類１０２についてデスクトップ配置ルールを指定し得る。
【０１１９】
ブロック８１２にて、対応するコンピューティング環境１１４は、デスクトップ配置ルールをブロック８１０にて識別された１つ以上のデータセンタ類１０２のエンティティと関連づける。デスクトップ配置ルールを１つ以上のデータセンタ類１０２のエンティティと関連づけることは、デスクトップ配置ルールをブロック８１０にて識別された各データセンタ１０２のデータセンタリポジトリ３３２にて記憶することを含むことができる。さらに、場合によっては、ブロック８１２は、デスクトップ配置ルールを管理コンピュータ３０４に提供することを含むことができる。
【０１２０】
ＸＩ．例示的なデスクトッププロビジョニングプロセス
図９は、デスクトッププロビジョニングプロセス９００の実施例を例示する。プロセス９００は、少なくともある程度、データセンタ１０２のコンピューティングシステム（例えば、データセンタコンピュータ３０２）上でインスタンスを配置することができる任意のシステムによって実行することができる。例えば、プロセス９００は、全部、一部を問わず、少し例を挙げれば、ＰＥＳプラットフォーム１２０、対応するコンピューティング環境１１４、データセンタ１０２、管理コンピュータ３０４、管理コンポーネント３１０、及び、配置コンポーネント３１４によって実行することができる。任意の数のシステムが、全部、一部を問わず、プロセス９００を実行することができるが、論じる内容を簡素化するために、プロセス９００の部分を特定のシステムを特定のシステムを参照して説明する。
【０１２１】
図９を仮想デスクトップ及びデスクトップインスタンスを参照して説明するが、プロセス９００は、この点を踏まえて有限ではない。プロセス９００は、例えば、アプリケーション、ストレージフォルダなどを含む、データセンタ１０２のコンピューティングシステムにてインスタンス化する任意の形式のインスタンスを配置するために使用することができる。
【０１２２】
プロセス９００は、例えば、管理コンピュータ３０４が、仮想デスクトップセッションへのアクセスを取得する要求をユーザコンピューティングシステム１０４から受信するブロック９０２にて始まる。要求は、ユーザ又はアプリケーションから受信され得る。先述したように、要求は、仮想デスクトップに限定されない。例えば、要求は、アプリケーションのインスタンスへのアクセス用であり得る。
【０１２３】
ブロック９０４にて、管理コンポーネント３１０は、ユーザコンピューティングシステム１０４に関連したユーザを識別する。管理コンポーネント３１０は、ブロック９０２にて要求と共に受信された認証情報に基づいてユーザを識別し得る。あるいは又はさらに、管理コンポーネント３１０は、ユーザコンピューティングシステム１０４に関連したＩＰアドレス又は名前など、ユーザコンピューティングシステム１０４に関連したメタデータに基づいてユーザを識別し得る。場合によっては、ユーザを識別する代わりに、又は、それに加えて、管理コンポーネント３１０は、ユーザに関連したエンティティ、部署、又は、他のグループを識別し得る。一部の実施形態では、ブロック９０４は、随意的である。例えば、デスクトップインスタンスのプロビジョニングは、データセンタ１０２の各データセンタコンピュータ３０２の利用の目安、又は、要求側ユーザ又は関連のエンティティの識別を必要としない任意の他の因子などに基づき得る。
【０１２４】
判断ブロック９０６にて、配置コンポーネント３１４は、ユーザに関連したアクティブデスクトップインスタンス３０６が存在するか否かを判定する。アクティブインスタンス３０６は、データセンタコンピュータ３０２で稼動している、つまり、目下実行されているインスタンスを含み得る。さらに、場合によっては、アクティブインスタンス３０６は、データセンタコンピュータ３０２にてキャッシュされたインスタンスを含み得る。配置コンポーネント３１４がユーザに関連したアクティブデスクトップが存在すると判定した場合、配置コンポーネント３１４は、ブロック９０８にて、既存のデスクトップインスタンス３０６に対応するデータセンタコンピュータ３０２での既存のデスクトップインスタンス３０６へのアクセスをユーザに提供し得る。
【０１２５】
一部の実施形態では、判断ブロック９０６及びブロック９０８の１つ以上は、随意的であり得る。例えば、要求側ユーザが新しいユーザであるか、又は、ブロック９０２にて受信された要求が明示的に新しいデスクトップインスタンスを要求する場合、判断ブロック９０６は随意的であり得る。別の実施例として、既存のデスクトップインスタンス３０６に対応しているデータセンタコンピュータ３０２への負荷、又は、該データセンタコンピュータの利用が閾値を超えた（例えば、データセンタコンピュータ３０２にアクセスする更なるユーザのため）場合、ユーザは既存のデスクトップインスタンスへのアクセスを許可され得ないので、ブロック９０８は随意的であり得る。あるいは、既存のデスクトップインスタンスは、ブロック９０８の一部として別のデータセンタコンピュータ３０２に転送され得、その結果、ユーザは、最初に閾値負荷又は利用を満たす既存のデスクトップインスタンスに対応したデータセンタコンピュータ３０２にもかかわらず、既存のデスクトップインスタンスへのアクセスを取得することができる。
【０１２６】
配置コンポーネント３１４がユーザに関連したアクティブデスクトップが存在しないと判定した場合、管理コンポーネント３１０は、ブロック９１０にてユーザに関連したメタデータを識別する。あるいは又はさらに、管理コンポーネントは、ユーザコンピューティングシステム１０４に関連したメタデータを識別する。一部の実施形態では、管理コンポーネント３１０は、エンティティでのユーザの役割、職位、部署など、ユーザに関連した情報を取得するためにディレクトリにアクセスすることによってメタデータを識別する。このディレクトリは、ライトウェイトディレクトリアクセスプロトコル（ＬＤＡＰ）、又は、分散型ディレクトリにアクセスして維持する任意の他の既知のアプリケーションプロトコルを使用して実行及び／又はアクセスされ得る。場合によっては、ディレクトリは、データセンタリポジトリ３３２にて記憶され得る。一部の実施形態では、メタデータは、計算リソースのユーザの使用に関連したユーザプロファイル情報を含み得る。例えば、ユーザプロファイルは、ユーザがグラフィック重視であるいくつかのアプリケーション（例えば、アニメーションプログラム、モデリングプログラムなど）を利用するか否かを示し得る。第２の実施例として、ユーザプロファイルは、ユーザは、そのユーザを雇用するエンティティに属する他のユーザ、又は、データセンタ１０２の他のユーザと比較して多くのデータを生成して、したがって、他のユーザよりも多くの記憶空間を必要とし得ることを示し得る。
【０１２７】
ブロック９１２にて、管理コンポーネント３１０は、ブロック９１０にて取得されたメタデータに基づいて、デスクトップ配置ルールを識別する。これらのデスクトップ配置ルールは、データセンタリポジトリ３３２からアクセスされ得る。例えば、ユーザが仲介エンティティにて貿易部署に属すると識別された場合、管理コンポーネント３１０は、仲介エンティティの貿易部署に関連したデスクトップ配置ルールを検索し得る。
【０１２８】
配置コンポーネント３１４は、ブロック９１４にてデスクトップ配置ルールに基づいてデータセンタコンピュータ３０２を識別する。図８に関して先に説明したように、デスクトップ配置ルールは、インスタンス（例えば、仮想デスクトップインスタンス）に対応し及び／又は計算リソースをユーザに提供するためにデータセンタ１０２のデータセンタコンピュータ３０２を選択する任意のルールを含み得る。例えば、デスクトップ配置ルールは、データセンタコンピュータはエンティティの部署から二人以上の従業員に対応しないと指定し得る。第２の実施例として、デスクトップ配置ルールは、特定の部署又は特定のエンティティが同じデータセンタコンピュータ３０２へのアクセスを共有しないと指定し得る。一部の実施形態では、配置コンポーネント３１４は、データセンタコンピュータ３０２を識別することを容易にするために、ユーザの使用プロファイルを使用することができる。
【０１２９】
一部の実施形態では、配置コンポーネント３１４は、データセンタコンピュータ３０２を識別することを容易にするためにデータセンタリソース割り当てシステム３３０を使用し得る。例えば、配置コンポーネント３１４は、データセンタコンピュータ容量識別モジュール４５２を使用して、データセンタコンピュータ３０２の利用可能な容量を識別し得る。第２の実施例として、配置コンポーネント３１４は、インスタンス利用モジュール４５４を使用してデータセンタコンピュータ３０２での更なるインスタンスの利用可能性を判定し得る。さらに、配置コンポーネント３１４は、アプリケーションリソース識別モジュール４５８を使用して、データセンタコンピュータ３０２がユーザによって要求されたか、又は、仮想デスクトップインスタンスの構成のデスクトップ配置ルールの一部として指定されたアプリケーションリソースへのアクセスを有するか否かを判定し得る。
【０１３０】
データセンタコンピュータ３０２が選択されると、配置コンポーネント３１４は、ブロック９１６にて識別されたデータセンタコンピュータ３０２上でデスクトップインスタンスを作成する。場合によっては、デスクトップインスタンスの作成は、デスクトップ配置ルールに基づき得る。例えば、デスクトップ配置ルールは、デスクトップインスタンス（例えば、デスクトップインスタンスのために割り当てられる記憶量、又は、デスクトップインスタンスを介したアクセスのために予め構成されるアプリケーション）の構成を指定し得る。
【０１３１】
ブロック９１８にて、管理コンポーネント３１０は、ユーザにデスクトップインスタンスへのアクセスを提供する。一部の実施形態では、ブロック９１８は、デスクトップインスタンスの作成及び／又はデスクトップインスタンスへのアクセスを記録することをさらに含み得る。さらに、場合によっては、別のユーザ（例えば、管理者）は、デスクトップインスタンスの作成及び／又はデスクインスタンスへのアクセスを知らされ得る。
【０１３２】
ＸＩＩ．例示的なアプリケーションアクセスプロセス
図１０は、ＰＥＳプラットフォーム１２０のデータセンタから入手可能であるアプリケーションにアクセスするプロセスの実施形態を例示する。図１Ｂで先述したように、各データセンタは、いくつかの仮想デスクトップインスタンスを実行するように構成可能な１つ以上の物理コンピューティングシステムを含む。各仮想デスクトップインスタンスは、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）オペレーティングシステム、ＭＡＣ  ＯＳ（登録商標）オペレーティングシステム、Ｌｉｎｕｘオペレーティングシステム、Ｏｒａｃｌｅ（登録商標）Ｓｏｌａｒｉｓオペレーティングシステムなど、オペレーティングシステムを含み得る。各仮想デスクトップインスタンス内に含まれたオペレーティングシステムは、１つ以上のアプリケーションをアプリケーション市場１３０において実行するように構成され得る。仮想デスクトップインスタンスは、ネットワークを介してＰＥＳのユーザによってアクセスされ得る。さらに、ＰＥＳのユーザは、アプリケーション、又は、仮想デスクトップインスタンスを市場インターフェース２１２を介してアプリケーション市場１３０において検索し得る。
【０１３３】
例示する実施形態では、プロセス１０００は、アプリケーション市場１３０へのアクセスをＰＥＳのユーザに関連したユーザコンピューティングデバイスに提供するブロック１００２にて始まる。アプリケーション市場にアクセスするユーザコンピューティングデバイスは、市場インターフェース２１２を介して仮想デスクトップインスタンスによって実行されるアプリケーションを検索し得る。例えば、ユーザは、アプリケーション市場１３０において市場インターフェース２１２を介してＭａｔｌａｂ（登録商標）ソフトウェアのＬｉｎｕｘバージョンを検索し得る。
【０１３４】
プロセス１０００は、ブロック１００４に引き続き進んで、ユーザコンピューティングデバイスから仮想デスクトップインスタンス上でアプリケーションにアクセスする要求をユーザから受信する。要求は、アプリケーション市場１３０を介してユーザによって行われ得る。先に参照した実施例では、ユーザは、Ｍａｔｌａｂ（登録商標）ソフトウェアのＬｉｎｕｘバージョンへのアクセスを要求し得る。ユーザの仮想デスクトップインスタンスは、少なくともＬｉｎｕｘオペレーティングシステムと、Ｍａｔｌａｂ（登録商標）ソフトウェアとを含み得る。
【０１３５】
プロセス１０００は、ブロック１００６に引き続き進んで、ユーザコンピューティングデバイスに関連したメタデータにアクセスする。メタデータは、ユーザがユーザコンピューティングデバイス上でＰＥＳからアプリケーションにアクセスする権限が与えられているか否かを示し得る。例えば、ユーザコンピューティングデバイスに関連したメタデータは、ユーザが会社内に位置するデスクトップＰＣを目下使用していることを示し得、ユーザのＰＥＳアカウントに関連したセキュリティ設定及びアプリケーション市場優先事項に従って、ユーザは、会社内のデスクトップＰＣからＭａｔｌａｂ（登録商標）ソフトウェアにアクセスする権限が与えられている。別の実施例では、別のユーザコンピューティングデバイスに関連したメタデータは、ユーザがスマートフォンから仮想デスクトップインスタンスにアクセスしていることを示し得、ユーザのＰＥＳアカウントに関連したセキュリティ設定及びアプリケーション市場優先事項に従って、ユーザがＭａｔｌａｂ（登録商標）ソフトウェアに自身のスマートフォンからアクセスする権限が与えられていない。一部の実施形態では、メタデータは、例えば、ユーザのアプリケーション市場アカウント、アカウント形式、アクセスレベル、ユーザが使用しているデバイスの形式の名前（タブレット、デスクトップコンピュータなど）、メディアアクセス制御（ＭＡＣ）アドレス、ユーザの場所、ユーザのドメイン、ユーザがアプリケーション市場１３０にアクセスしているのが住宅用インターネットを介してか、又は、ユーザの雇用主によって提供された接続を介してか、及び／又はユーザは、アプリケーション市場１３０にアクセスするためにプロキシを使用しているか否かなどの情報を含み得る。
【０１３６】
プロセス１０００は、少なくともある程度メタデータに基づいて、ユーザがユーザコンピューティングデバイス上でアプリケーションにアクセスする権限が与えられているか否かを判定するために判断ブロック１００８に引き続き進む。一部の実施形態では、ユーザがアプリケーションにアクセスする権限が与えられているか否かを判定することは、アプリケーションがユーザに関連するか、又は、ユーザの仮想デスクトップインスタンスが位置するデータセンタ１０２でのアクセスに利用可能であるか否かを判定することを含み得る。場合によっては、アプリケーションのコピーがユーザの仮想デスクトップインスタンスが位置するデータセンタ１０２にて利用可能ではない場合、データセンタ１０２の管理コンピュータ３０４は、アプリケーションのコピーをＰＥＳプラットフォーム１２０に要求し得る。あるいは、ユーザはアプリケーションへのアクセスを拒絶され得る。ユーザがアプリケーションにアクセスする権限が与えられていない場合、プロセス１０００は終了する。
【０１３７】
しかしながら、ユーザがアプリケーションにアクセスする権限が与えられている場合、プロセスは、ブロック１０１０に引き続き進んで、仮想デスクトップインスタンス上で実行されるようにアプリケーションを構成する。アプリケーションは、オペレーティングシステム、又は、ユーザ及びアプリケーション市場１３０による他の設定に好適であるように構成され得る。一部の実施形態では、アプリケーションはＰＥＳプラットフォーム１２０においてデータセンタ１０２内の物理コンピューティングシステム上に常駐し得、物理コンピューティングシステムは、ユーザが接続される物理コンピューティングシステムと異なる場合がある。場合によっては、アプリケーションは、アプリケーションリポジトリ２２０にあり得る。場合によっては、アプリケーションの一部又は全部のコピーは、ユーザが接続される物理コンピューティングシステムにダウンロードされ得る。
【０１３８】
プロセスは、ブロック１０１２に引き続き進んで、アプリケーションを仮想デスクトップインスタンスから実行させる。プロセスは、その後、ブロック１０１４に引き続き進んで、少なくとも仮想デスクトップインスタンスからの一部のアプリケーションへのアクセスをユーザコンピューティングデバイスに提供する。
【０１３９】
一部の実施形態では、アプリケーションのユーザインターフェースのみが、ユーザのコンピューティングデバイスに提供され、ユーザインターフェースは、ユーザコンピューティングデバイスからの入力を受理して、アプリケーションにユーザ入力を提供する。一部の他の実施形態では、ユーザのコンピューティングデバイスに提供されるアプリケーションの部分は、アプリケーションのコピー全体であり得る。例えば、上記のユースケースでは、Ｍａｔｌａｂ（登録商標）ソフトウェア全体が、ユーザのコンピューティングデバイスに提供され得る。一部の他の実例では、少なくともアプリケーションの一部へのアクセスを提供することは、アプリケーションの一部をユーザコンピューティングデバイスに配信する（例えば、ストリーミング）ことを含み得る。例えば、上記のユースケースでは、Ｍａｔｌａｂ（登録商標）ソフトウェア及びＭａｔｌａｂソフトウェアのインターフェースにおいてユーザによって目下使用されているライブラリのみが、ユーザコンピューティングデバイスに提供される。
【０１４０】
別の実施例では、少なくとも一部のアプリケーションへのアクセスを提供することは、ローカル仮想デスクトップインスタンスをコンピューティングインスタンスにストリーミングすることを含み得る。ローカル仮想デスクトップインスタンスは、ユーザコンピューティングデバイス上でアプリケーションを実行するように構成することができる。例えば、ユーザコンピューティングデバイスは、Ｌｉｎｕｘオペレーティングシステムと、Ｌｉｎｕｘオペレーティングシステム上で実行中であるアプリケーション（Ｍａｔｌａｂ（登録商標）ソフトウェア）とを含む仮想デスクトップインスタンスを受信し得る。他の実施形態では、仮想マシン又はコンテナは、ユーザコンピューティングシステム１０４へストリーミングされ得る。この仮想マシン又はコンテナは、ユーザコンピューティングシステム１０４へストリーミングされるとき、及び／又は、アプリケーションのストリーミングが完了した後にアプリケーションを実行するように構成され得る。特定の実施形態では、ユーザコンピューティングシステム１０４へストリーミングされるアプリケーションの仮想マシン、コンテナ及び／又は任意の部分は、ユーザがアプリケーションを使用する現行セッションを完了した後にユーザコンピューティングシステム１０４から除去される。有利なことに、特定の実施形態では、アプリケーション、又は、その一部をユーザコンピューティングシステム１０４にストリーミングし、その後、使用セッションが完了するとアプリケーション、又は、その一部を除去することによって、ユーザは、アプリケーションを使用する一時的なライセンスを購入することができる。さらに、ユーザは、通常、例えば、ユーザコンピューティングシステム１０４の記憶空間制約、メモリ制約、グラフィクス制約、又は、他のハードウェア及び／又はソフトウェア制約のためにアプリケーションを実行することができない恐れがあるユーザコンピューティングシステム１０４上でアプリケーションを使用し得る。使用セッションは、アプリケーションの単一の使用期間、又は、アプリケーションのレンタル又はライセンシング期間を含むことができる。他の場合では、使用セッションは、アプリケーションがユーザコンピューティングシステム１０４へストリーミングされるときに始まり、ユーザコンピューティングシステム１０４がデータセンタ１０２にて対応されるデータセンタ１０２及び／又はインスタンスから切り離されたときに終了する期間を含み得る。
【０１４１】
本開示によるアプリケーション市場１３０は、仮想デスクトップインスタンス上で実行されるアプリケーションの代金を支払うためのユーザ向けの様々なオプションを提供し得る。例えば、ユーザは、自分が興味があるアプリケーションを購入、レンタル、又は使用許諾することを選び得る。場合によっては、ユーザのグループが、グループライセンスの代金を支払うことを選び得る。したがって、一部の状況では、ユーザがユーザコンピューティングデバイス上でアプリケーションにアクセスするように構成されるか否かを判定するために使用されたメタデータは、ユーザがアプリケーション市場１３０からアプリケーションを購入、レンタル、又は、使用許諾したか否かを含み得る。アプリケーション市場１３０の請求システム２１８は、アプリケーション市場から入手可能であるアプリケーション、オペレーティングシステム、仮想デスクトップなどの購入、レンタル、又は、ライセンシングを管理するように構成することができる。
【０１４２】
ユーザがアプリケーションを購入する代わりにレンタルするか又は使用許諾することを選んだ場合、アプリケーション市場１３０はレンタル又はライセンス期間の終了前にユーザに通知し得る。通知は、ある期間についてユーザがレンタル又はライセンス契約を更新するオプション、及び、ソフトウェアを購入するオプションを含み得る。一部の実施形態では、レンタル期間の満了時に、ユーザのアプリケーションに対応するデータセンタコンピュータ３０２は、例えば、ユーザが更なるレンタル期間の代金を支払うのを辞退した場合にアプリケーションへアクセス継続を自動的に遮断し得る。一部のそのような場合、データセンタコンピュータ３０２は、ユーザに関連した仮想デスクトップインスタンスからアクセス可能であり得るユーザに関連した記憶デバイス及び／又はフォルダ（例えば、クラウドフォルダ）にユーザデータを自動的に保存し得る。さらに、場合によっては、データは、１つ以上のユーザコンピューティングシステム１０４に自動的に同期され得る。
【０１４３】
ＸＩＩＩ．例示的なファイル同期システム
文書を同期させるために、ＰＥＳプラットフォーム１２０は、図１１に示すファイル同期システム１１００を実行することができる。例示する実施形態では、ファイル同期システム１１００は、接続性モジュール１１０２と、同期モジュール１１０４と、ファイルアクセスモジュール１１０６とを含む。接続性モジュール１１０２は、ＰＥＳとユーザのコンピューティングデバイスとの間の接続を確立するために使用することができる。以下で論じるように、一部の実行例では、ＰＥＳとユーザのコンピューティングデバイスとの間の接続性は、双方向である。一部のそのような実行例では、ＰＥＳとコンピューティングデバイスとの間の双方向接続は、仮想デスクトップインスタンスへのアクセスを配信してＰＥＳとコンピューティングデバイスとの間でファイルを同期させるために使用される。引き続き上記の実施例〜については、ファイルアクセスモジュール１１０６は、タブレット装置に関連したメタデータに基づいて、該装置は特定のＷｏｒｄ文書にアクセス及び修正する権限が与えられたコンピューティングデバイスであると判定し得る。したがって、タブレット装置は、Ｗｏｒｄ文書の同期コピーを維持する権限が与えられており、該同期コピーは、タブレット装置がインターネット接続を有しないときにさえユーザがアクセス可能であり得る。例えば、ユーザがＷｏｒｄ文書を編集しているとき、タブレット装置は、ＰＥＳにネットワーク接続を失うことがあり得る。しかしながら、ファイルは、タブレット装置と同期されるように構成されるので、ネットワーク接続が失われている間に行われた修正は、同期モジュール１１０４を介してＰＥＳプラットフォーム１２０上で遠隔操作にて記憶されたファイルのコピーと同期させることができる。例えば、ファイルの修正は、ユーザコンピューティングデバイス上でローカルに記憶され得、ネットワーク接続性が再開したとき、修正は、ＰＥＳプラットフォーム上に記憶されたファイルとの同期のために同期モジュール１１０４に伝達することができる。
【０１４４】
ユーザは、その後、タクシーに乗っている間にスマートフォンからＰＥＳとの接続を介して同じ文書を編集しようとし得る。スマートフォンが紛失しやすいことから、ユーザ（又は、雇用主など、ユーザに関連したエンティティ）は、特定の装置上で、又は、ユーザが特定の位置（例えば、輸出制限又は規制を実行するため）にいるときには特定の文書へのアクセスを制限し得る。したがって、この実施例では、ファイルアクセスモジュール１１０６は、スマートフォン又はユーザの場所に関連したメタデータに基づいて、ユーザは、タクシー内でスマートフォンからファイルの内容を変更する権限が与えられていないと判定し得る。したがって、ユーザがスマートフォンから行おうとした変更は、ＰＥＳプラットフォーム１２０によって記憶されず及び／又はスマートフォン上でローカルに記憶されない。
【０１４５】
別の実施例では、ユーザは、ＰＥＳプラットフォーム１２０上の仮想デスクトップインスタンスを介して会社のデスクトップＰＣ上の重要なＣＡＤ図を編集し得る。ユーザが会社ＰＣをシャットダウンした後、ＣＡＤ図に行った編集は、ＰＥＳプラットフォーム１２０上に記憶される。ユーザは、自宅でラップトップコンピュータをオンにして、ローカルに記憶されたＣＡＤ図の同期コピーを編集しようとし得る。ファイルアクセスモジュール１１０６は、ＣＡＤ図及び／又はユーザのラップトップコンピュータに関連したメタデータに基づいて、ユーザが直接にラップトップコンピュータからＣＡＤ図を修正する権限が与えられていないと判定し得る。しかしながら、ファイルアクセスモジュール１１０６は、ユーザはＰＥＳ上の仮想デスクトップインスタンスを介してＣＡＤ図を編集する権限が与えられていると判定し得る。これは、ＣＡＤ図が仮想デスクトップインスタンスから編集可能であり得るにすぎないことを意味する。したがって、ユーザがラップトップコンピュータから直接にＣＡＤ図の同期コピーに行おうとした変更のいずれもＰＥＳプラットフォーム１２０によって記憶することができない。しかしながら、ユーザがラップトップから接続性モジュール１１０２を介して仮想デスクトップインスタンスに接続する権限が与えられ、かつ、ＣＡＤ図を編集するプログラムを仮想デスクトップインスタンスから実行する場合、仮想デスクトップインスタンスとの接続を介して図面を編集することが可能にされ得る。
【０１４６】
ＸＩＶ．第一の例示的なファイル同期プロセス
図１２は、ＰＥＳプラットフォーム１２０の制御下のファイル同期システム１１００を使用するファイルの同期プロセスの実施例を例示する。例示する実施形態では、プロセス１２００は、接続性モジュール１１０２が、ＰＥＳとユーザのコンピューティングデバイスとの間の接続（双方向性であり得る）を形成するブロック１２０２にて始まる。プロセスは、引き続き、ブロック１２０４に進み、ＰＥＳプラットフォーム１２０は、ファイルをＰＥＳプラットフォーム１２０上で修正する要求をコンピューティングデバイスから受信する。プロセスは、引き続き、ブロック１２０６に進み、ＰＥＳプラットフォーム１２０は、ファイルアクセスモジュール１１０６を使用してファイルメタデータにアクセスする。この例示する実施形態では、ファイルメタデータは、ファイルをコンピューティングデバイスなどと同期させることができるか否かを示す設定を含み得る。
【０１４７】
プロセスは、引き続き、ブロック１２０８に進み、少なくともファイルメタデータに基づいて、ファイルがコンピューティングデバイスと同期されるように構成されているか否かを判定する。一部の実施形態では、このステップは、ファイルアクセスモジュール５０８によって実行され得る。ファイルがコンピューティングデバイスと同期されるように構成されていない場合、プロセス１２００は終了する。しかしながら、ファイルがコンピューティングデバイスと同期させることができると判定された場合、プロセス１２００は、引き続き、ブロック１２１０に進み、ブロック１２０２内に形成された双方向接続を使用してファイルを同期モジュール１１０４によってコンピューティングデバイスと同期させる。プロセスは、ブロック１２１０後に終了する。
【０１４８】
場合によっては、ユーザは、仮想デスクトップインスタンス上で実行されるように構成されるアプリケーションを介してファイルを同期させるか、又は、修正する必要があり得る。例えば、ユーザは、Ｌｉｎｕｘオペレーティングシステムと、Ｍａｔｌａｂ（登録商標）ソフトウェアとを含む仮想デスクトップインスタンスを構成したと考えられる。ユーザは、Ｍａｔｌａｂ（登録商標）プログラム、及び、様々なコンピューティングデバイス上で作製したシミュレーションを同期させることを望み得る。ユーザが仮想デスクトップインスタンスを介してＰＥＳプラットフォーム１２０への既存の接続を既に有する場合、ユーザは、特定形式のファイルを修正又は開くことができるプログラムをローカルに有する必要はないと考えられる。
【０１４９】
ＸＶ．第二の例示的なファイル同期プロセス
図１３は、データセンタでの仮想デスクトップインスタンスとの既存の接続を介したファイルの同期プロセスの実施例を例示する。この実施形態では、プロセス１３００は、ＰＥＳ内の仮想デスクトップインスタンス上のアプリケーションへのアクセスが、接続性モジュール１１０２によって提供されるブロック１３０２にて始まる。プロセス１３００は、引き続き、ブロック１３０４に進み、ＰＥＳは、仮想デスクトップインスタンス上のアプリケーションを介してファイルを修正する要求をコンピューティングデバイスから受信し得る。プロセス１３００は、引き続き、ブロック１３０６に進み、ＰＥＳは、ファイルアクセスモジュール１１０６を介してファイルメタデータにアクセスする。ファイルメタデータは、ファイルが、例えば、第１のコンピューティングデバイスによって修正されるように構成されているか否かを示し得る。
【０１５０】
プロセス１３００は、引き続き、ブロック１３０８に進み、ファイルがコンピューティングデバイスによって修正されるように構成されているか否かを判定する。上記で論じたユースケースでは、Ｍａｔｌａｂ（登録商標）プログラムが、ユーザのデスクトップコンピュータ、ラップトップコンピュータと同期されるように構成され得るが、タブレット装置は対象外である。別の実施例では、ユーザは、海外の営業会議に旅立ち得、Ｍａｔｌａｂ（登録商標）シミュレーションは、会議中に容易に見せることができるように自分のタブレット装置と同期させるように構成され得る。場合によっては、ファイルは、ユーザコンピューティングデバイスと同期されるように構成され得るが、ユーザコンピューティングデバイスによってローカルに編集可能ではあり得ない。これらの場合、ファイルは仮想デスクトップインスタンスを介してのみ編集可能であるように構成され得る。したがって、メタデータは、特定のコンピューティングデバイスがファイルを修正する権限が与えられているか否かを判定し、権限が与えられている場合、ＰＥＳにより記憶されるファイルのコピーは、ユーザによって行われたファイルの修正を反映するために同期されるべきか否かを判定するために使用され得る。
【０１５１】
ファイルがコンピューティングデバイスによって修正されるように構成されていない場合、プロセス１３００は終了する。しかしながら、ファイルアクセスモジュール１１０６がファイルはコンピューティングデバイスによって修正されるように構成されていると判定した場合、プロセス１３００は、ブロック１３１０に引き続き進み、ファイルを仮想デスクトップ上のアプリケーションを介してコンピューティングデバイスによって修正することを可能にする。仮想デスクトップ上のアプリケーションを介してコンピューティングデバイスによって行われた修正は、ＰＥＳによって同期及び記憶される。プロセスは、ブロック１３１０後に終了する。例えば、Ｍａｔｌａｂ（登録商標）シミュレーションファイルは、ユーザのタブレット装置と同期され、かつ、仮想デスクトップインスタンスを介してタブレット装置によって修正されるように構成され得る。ユーザがＰＥＳプラットフォーム１２０上の仮想デスクトップインスタンス上でＭａｔｌａｂ（登録商標）シミュレーションファイルの変更を行った後、シミュレーションファイルのアップデートは、タブレット装置に同期され、また、ＰＥＳプラットフォーム１２０上の仮想デスクトップインスタンスに接続され得る。ファイルが、また、仮想デスクトップインスタンスとの接続を介してタブレット装置によって修正されるように構成される場合、ユーザは、タブレット装置からファイルを修正し得る。ユーザが行った修正は、他の権限が与えられているコンピューティングデバイスとＰＥＳによって同期されることになる。一部の実施形態では、ユーザは、タブレット装置上のネットワーク接続の有無を問わずファイルの同期されたローカルコピーを見得る。
【０１５２】
場合によっては、２つ以上のコンピューティングデバイスが、ファイルの同期コピーを維持するように構成され得る。また、場合によっては、ファイルの２つ以上のバージョンが記憶されるように構成され得る。例えば、ユーザは、Ｍａｔｌａｂ（登録商標）シミュレーションファイルの変更をオフィスコンピュータから行なうことができ、該オフィスコンピュータは、Ｍａｔｌａｂ（登録商標）ソフトウェアを実行する仮想デスクトップインスタンスに接続される。更新ファイルをテストした後、ユーザは自分が行ったばかりの変更を元に戻すことを決心し得る。ユーザは、自分が行った全ての変更なしで前バージョンであるシミュレーションファイルの同期コピーを維持することを選び得る。別の実施例では、ユーザは、ラップトップ上で営業会議用の最も安定したバージョンであるＭａｔｌａｂ（登録商標）シミュレーションのバージョンを同期させることを選び得る。ユーザは、最新バージョンを同期させないことを選び得る。その代わりに、ユーザは、ラップトップコンピュータに維持したいと思うファイルのバージョンを指定し得る。特定のコンピューティングデバイスに維持したいと思うバージョンを選ぶことができるように、ファイルの複数のバージョンが、ユーザに提供され得る。
【０１５３】
一部の実施形態では、同じファイルの複数のバージョンの違いが、ユーザに提示され得、これは、ユーザがファイルのどのバージョンをコンピューティングデバイス上に維持したらよいかを決める際にユーザの手助けとなることができる。
【０１５４】
ＸＶＩ．実施形態
本開示の実施形態は、以下の条項に照らして説明することができる。
[条項１]
データセンタでのリソース割り当てを計算する方法であって、
いくつかのデータセンタを含むプログラム実行サービス（ＰＥＳ）プラットフォームの制御下で、各データセンタは、ユーザに１つ以上のコンピューティングシステムの少なくとも１つによって対応された計算ノードへのアクセスを提供するように構成可能な１つ以上のコンピューティングシステムを含み、計算ノードは、ユーザがＰＥＳプラットフォームによって提供された複数のサービスにアクセスすることを可能にする仮想デスクトップを含み、
ユーザのコンピューティングデバイスから計算ノードへのアクセスを取得する要求をＰＥＳプラットフォームのデータセンタにて受信することと、
コンピューティングデバイスに関連したユーザを識別することと、
ユーザのアイデンティティに少なくとも部分的に基づいてユーザに関連したユーザメタデータにアクセスすることと、
ユーザメタデータに少なくとも部分的に基づいて１組のリソース配置ルールを選択することであって、１組のリソース配置ルールは、１組のユーザ上に及ぼすコンピューティングシステム故障の影響を低減するように選択され、１組のユーザは、ユーザを含む、選択することと、
１組のリソース配置ルールに少なくとも部分的に基づいてコンピューティングシステムをデータセンタの１つ以上のコンピューティングシステムから識別することと、
コンピューティングシステム上でユーザに計算ノードへのアクセスを提供すること、
を含む方法。
[条項２]
コンピューティングシステム上でユーザに計算ノードへのアクセスを提供することは、
コンピューティングシステム上で計算ノードのインスタンスを作成することと、
コンピューティングシステム上でユーザに計算ノードのインスタンスへのアクセスを提供することを含む、条項１に記載の方法。
[条項３]
ユーザに関連した計算ノードのアクティブインスタンスが存在するか否かを判定することとをさらに含む、
ユーザに関連したアクティブインスタンスが存在すると判定することに応答して、
この方法は、
アクティブインスタンスを含む第２のコンピューティングシステムを識別することと、
第２のコンピューティングシステムがその１組のリソース配置ルールを満たすか否かを判定することとをさらに含み、コンピューティングシステムをデータセンタの１つ以上のコンピューティングシステムから識別することは、第２のコンピューティングシステムがその１組のリソース配置ルールを満たすと判定することに応答して第２のコンピューティングシステムを識別することを含む、条項１に記載の方法。
[条項４]
データセンタでのリソース割り当てを計算するシステムであって、
各々、１人以上のユーザに１つ以上の計算リソースを提供するように構成可能な１つ以上のコンピューティングシステムを含むいくつかのデータセンタを含むプログラム実行サービス（ＰＥＳ）プラットフォームと、
計算リソースへのアクセスを取得するために要求をユーザのコンピューティングデバイスから受信するように構成されたいくつかのデータセンタのデータセンタと、
コンピューティングデバイスに関連したユーザを識別し、
ユーザのアイデンティティに少なくとも部分的に基づいてユーザに関連したユーザメタデータにアクセスして、
ユーザメタデータに少なくとも部分的に基づいて１組のリソース配置ルールを選択するように構成された管理コンポーネントと、
１組のリソース配置ルールに少なくとも部分的に基づいてコンピューティングシステムをデータセンタの１つ以上のコンピューティングシステムから識別するように構成された配置コンポーネントと、
を含み、
管理コンポーネントは、さらに、コンピューティングシステム上でユーザに計算リソースへのアクセスを提供するように構成される、システム。
[条項５]
配置コンポーネントは、さらに、コンピューティングシステム上で計算リソースのインスタンスを作成するように構成される、条項４に記載されたシステム。
[条項６]
ユーザに計算リソースへのアクセスを提供することは、コンピューティングシステム上でユーザに計算リソースのインスタンスへのアクセスを提供することを含む、条項５に記載されたシステム。
[条項７]
配置コンポーネントは、さらに、ユーザに関連した計算リソースのアクティブインスタンスが存在するか否かを判定するように構成される、条項４に記載されたシステム。
[条項８]
配置コンポーネントは、さらに、アクティブインスタンスを含む第２のコンピューティングシステムを識別し、かつ、第２のコンピューティングシステムが、ユーザに関連した計算リソースのアクティブインスタンスが存在すると判定することに応答して１組のリソース配置ルールを満たすか否かを判定するように構成される、条項７に記載されたシステム。
[条項９]
コンピューティングシステムをデータセンタの１つ以上のコンピューティングシステムから識別することは、第２のコンピューティングシステムがその１組のリソース配置ルールを満たすと判定することに応答して第２のコンピューティングシステムを識別することを含む、条項８に記載されたシステム。
[条項１０]
計算リソースは、ユーザがＰＥＳプラットフォームによって提供された複数のサービスにアクセスすることを可能にする仮想デスクトップを含む、条項４に記載されたシステム。
[条項１１]
計算リソースは、アプリケーションインスタンスを含む、条項４に記載されたシステム。
[条項１２]
データセンタは、管理コンポーネントと、配置コンポーネントとを含む、条項４に記載されたシステム。
[条項１３]
コンピューティングシステムにデータセンタにてリソース割り当てを計算する方法を実行するように指示するコンピュータ実行可能命令を含む固定物理コンピュータストレージであって、
この方法は、
計算リソースへのアクセスを取得する要求をプログラム実行サービス（ＰＥＳ）プラットフォームのデータセンタにて受信することであって、要求は、ユーザのコンピューティングデバイスから受信される、受信することと、
コンピューティングデバイスに関連したユーザを識別することと、
ユーザのアイデンティティに少なくとも部分的に基づいてユーザに関連したユーザメタデータにアクセスすることと、
ユーザメタデータに少なくとも部分的に基づいて１組のリソース配置ルールを選択するように構成された管理コンポーネントと、
１組のリソース配置ルールに少なくとも部分的に基づいてコンピューティングシステムをデータセンタの１つ以上のコンピューティングシステムから識別することと、
コンピューティングシステム上でユーザに計算ノードへのアクセスを提供すること、
を含む、固定物理コンピュータストレージ。
[条項１４]
ＰＥＳプラットフォームは、データセンタを含むいくつかのデータセンタを含み、各データセンタが、１人以上のユーザに１つ以上のコンピューティングシステムの少なくとも１つによって対応された１つ以上の計算リソースへのアクセスを提供するように構成可能な１つ以上のコンピューティングシステムを含む、条項１３に記載された固定物理コンピュータストレージ。
[条項１５]
コンピューティングシステム上でユーザに計算リソースへのアクセスを提供することは、
コンピューティングシステム上で計算ノードのインスタンスを作成することと、
コンピューティングシステム上でユーザに計算リソースのインスタンスへのアクセスを提供することを含む、条項１３に記載された固定物理コンピュータストレージ。
[条項１６]
この方法は、ユーザに関連した計算リソースのアクティブインスタンスが存在するか否かを判定することと、
をさらに含み、
ユーザに関連したアクティブインスタンスが存在すると判定することに応答して、
この本方法は、
アクティブインスタンスを含む第２のコンピューティングシステムを識別することと、
第２のコンピューティングシステムがその１組のリソース配置ルールを満たすか否かを判定することと、
をさらに含み、
コンピューティングシステムをデータセンタの１つ以上のコンピューティングシステムから識別することは、第２のコンピューティングシステムがその１組のリソース配置ルールを満たすと判定することに応答して第２のコンピューティングシステムを識別することを含む、条項１３に記載された固定物理コンピュータストレージ。
[条項１７]
計算リソースは、ユーザがＰＥＳプラットフォームによって提供された複数のサービスにアクセスすることを可能にする仮想デスクトップを含む、条項１３に記載された固定物理コンピュータストレージ。
[条項１８]
複数のサービスは、以下、即ち、アプリケーション、ファイル管理プログラム、又は、ファイルストレージの１つ以上を含む、条項１７に記載された固定物理コンピュータストレージ。
[条項１９]
計算リソースは、アプリケーションインスタンスを含む、条項１３に記載された固定物理コンピュータストレージ。
[条項２０]
リソース配置ルールは、リソースアクセスルールを含む、条項１３に記載された固定物理コンピュータストレージ。
[条項２１]
方法は、リソース配置ルールに少なくとも部分的に基づいて計算リソースを構成することをさらに含む、条項１３に記載された固定物理コンピュータストレージ。
[条項２２]
ユーザメタデータは、ユーザに関連したエンティティのアイデンティティを含み、ユーザメタデータに少なくとも部分的に基づいて１組のリソース配置ルールを判定することは、エンティティのアイデンティティに少なくとも部分的に基づいて１組のリソース配置ルールを判定することを含む、条項１３に記載された固定物理コンピュータストレージ。
【０１５５】
ＸＶＩＩ．用語
いくつかのコンピューティングシステムを本開示を通じて説明してきた。これらのシステムの説明は、本開示の教示、又は、適用可能性を制限するとは意図されていない。例えば、本明細書で説明するユーザシステムとしては、一般的に、少し例を挙げれば、デスクトップ、ラップトップ、テレビゲームプラットフォーム、テレビセットトップボックス、テレビ（例えば、インターネットＴＶ）、電子制御電気製品、及び無線モバイル機器（例えばスマートフォン、ＰＤＡ、タブレットなど）など、任意のコンピューティングデバイスを挙げることができる。さらに、本明細書で説明するユーザシステムは、異なる形式の装置であるか、異なるアプリケーションを含むか、又は、その他の方法で異なる方法で構成されることが可能である。さらに、本明細書で説明するユーザシステムは、任意の形式のオペレーティングシステム（「ＯＳ」）を含むことができる。例えば、本明細書で説明するモバイルコンピューティングシステムは、Ａｎｄｒｏｉｄ（商標）ＯＳ、Ｗｉｎｄｏｗｓ（登録商標）ＯＳ、Ｍａｃ（登録商標）ＯＳ、Ｌｉｎｕｘ、又は、ＵＮＩＸベースのＯＳなどを実装することができる。
【０１５６】
さらに、例示するシステムの様々なコンポーネントの処理は、複数のマシン、ネットワーク、及び他の計算リソースにわたって分散させることができる。さらに、システムの２つ以上のコンポーネントをより少数のコンポーネントに結合することができる。例えば、データセンタリソース割り当てシステム３３０の一部として示す様々なシステムは、複数のコンピューティングシステムにわたって分散させるか、又は、又は、単一のコンピューティングシステムに結合することができる。さらに、例示するシステムの様々なコンポーネントは、専用コンピュータハードウェアシステムにおいてよりはむしろ、１つ以上の仮想マシンにおいて実装することができる。同様に、図示するデータリポジトリは、例えば、ストレージエリアネットワーク、又は、他の分散型ストレージシステムを含め、物理及び／又は論理データストレージを表すことができる。さらに、一部の実施形態では、図示するコンポーネント間の接続は、ハードウェア間の実際の接続よりもむしろデータフローの可能なパスを表す。可能な接続部の一部の実施例を図示するが、図示するコンポーネントのサブセットのいずれも、様々な実行例ではコンポーネントの任意の他のサブセットと通信することができる。
【０１５７】
実施形態によっては、本明細書で説明する任意のアルゴリズム、方法、又は、プロセスの特定の行為、イベント、又は、機能は、異なるシーケンスで実行することができ、追加、統合、又は、全てまとめて省略することができる（例えば、全ての説明する行為、又は、イベントが、アルゴリズムの実践に必要であるというわけではない）。さらに、特定の実施形態では、行為、又は、イベントは、順次によりもむしろ、同時に、例えば、マルチスレッド型処理、割込み処理、又は、複数のプロセッサ、又は、プロセッサコアを介して、又は、他の並列のアーキテクチャ上で実行することができる。
【０１５８】
様々な例示するシステムの各々は、本明細書で説明する様々な機能を実行するようにプログラム及び構成されるコンピューティングシステムとして実装され得る。コンピューティングシステムは、説明する機能を実行するためにネットワークで通信及び相互運用する複数の異なったコンピュータ、又は、コンピューティングデバイス（例えば、物理サーバ、ワークステーション、ストレージアレイなど）を含み得る。各々のそのようなコンピューティングデバイスは、典型的には、メモリ又は他の固定コンピュータ可読記憶媒体内に記憶されたプログラム命令又はモジュールを実行するプロセッサ（又は、マルチプロセッサ）を含む。本明細書で開示する様々な機能は、そのようなプログラム命令において実施され得るが、開示する機能の一部又は全部は、代替的にコンピュータシステムの特定用途向け回路（例えば、ＡＳＩＣ又はＦＰＧＡ）において実行され得る。コンピューティングシステムが複数のコンピューティングデバイスを含む場合、これらの装置は、同じ位置に配置され得るが同じ位置に配置される必要はない。開示する方法及びタスクの結果は、ソリッドステートメモリーチップ及び／又は磁気ディスクなど物理記憶装置を異なる状態に変換することによって持続的に記憶され得る。説明する各プロセスは、関連のサーバコードでプログラムされる１つ以上の物理サーバなど１つ以上のコンピューティングデバイスによって実行され得る。
【０１５９】
とりわけ、「〜することができる」、「〜ことがあり得る」、「〜得る」、「例えば」など、本明細書で使用する条件付き言語は、特記がない限り、又は、使用時に前後関係において別段の理解の仕方がない限り、特定の実施形態が、特定特徴部、要素及び／又は段階を含むが、他の実施形態は含まないことを伝達することを一般的に意図する。したがって、そのような条件付き言語は、一般的に、特徴部、要素及び／又は段階が１つ又はそれ以上の実施形態に何らかの形で必要とされること、又は、１つ又はそれ以上の実施形態が、著者入力又はプロンプト表示の有無を問わず、これらの特徴部、要素及び／又は段階が任意の特定の実施形態においては含まれるか又は実行されるべきであるか否かを判断するための論理を必ず含むことを意味することを意図したものではない。「を備える」、「を含む」、「を有する」などの用語は、同義であり、かつ、制限なしに包括的に使用されており、更なる要素、特徴部、行為、作業などを除外するものではない。また、「又は」という用語は、例えば、要素のリストを関連づけるために使用するときには、「又は」という用語は、リスト内の要素の１つ、一部、又は、全てを意味するように、包括的な意味で（かつ、排他的な意味ではなく）使用している。さらに、不定冠詞「ａ」及び「ａｎ」は、特記がない限り、「１つ以上の」か、又は、「少なくとも１つの」を意味すると解釈するべきである。
【０１６０】
語句「Ｘ、Ｙ及びＺの少なくとも１つ」などの結合言語は、特記がない限り、その他の方法で、項目、項などがＸ、Ｙ、又はＺであり得ることを伝えるために一般に使用されるように文脈と共に理解される。したがって、そのような結合言語は、一般的に、特定の実施形態がＸの少なくとも１つ、Ｙの少なくとも１つ、及びＺの少なくとも１つが各々存在することを必要とすることを意味すると意図されてはいない。
【０１６１】
上記の詳細な説明では、様々な実施形態に適用されるように新奇な特徴を図示、説明及び指摘してきたが、例示する装置又はアルゴリズムの形又は詳細における様々な省略、置換、及び変更を本開示の精神から逸脱することなく行なうことができることが理解されるであろう。したがって、前述の説明におけるいかなるものも、任意の特定の特徴、特性、ステップ、モジュール、又は、ブロックが必要又は不可欠であることを意味するとは意図されていない。認識されるように、本明細書で説明するプロセスは、一部の特徴部を他とは別々には使用又は実践することができるように、本明細書で定める特徴及び利点の全てを提供するわけではない形態内で実施することができる。本発明の範囲は、前述の説明ではなく特許請求項の範囲により定義される。特許請求項の範囲の意味及び均等性の範囲に該当する全ての変更は、本発明の範囲内に包含されるべきである。
【図１Ａ】
0006284617.tif 000002
【図１Ｂ】
0006284617.tif 000003
【図２】
0006284617.tif 000004
【図３】
0006284617.tif 000005
【図４Ａ】
0006284617.tif 000006
【図４Ｂ】
0006284617.tif 000007
【図５】
0006284617.tif 000008
【図６】
0006284617.tif 000009
【図７】
0006284617.tif 000010
【図８】
0006284617.tif 000011
【図９】
0006284617.tif 000012
【図１０】
0006284617.tif 000013
【図１１】
0006284617.tif 000014
【図１２】
0006284617.tif 000015
【図１３】
0006284617.tif 000016