(57)【要約】【課題】クラウドサービスにおいて、共有キャッシュを使用してリソースに対するデータをキャッシュする方法及びシステムを提供する。【解決手段】データは、構成サービス513に、リソース519に、または共有キャッシュ521に記憶される。構成サービス513に記憶されたデータは、修正される。リソース519に、及び共有キャッシュ521に記憶されたデータは、構成サービス513における修正されたデータに従って更新される。構成サービス513に、リソース519に、または共有キャッシュ521に記憶されたデータは、動作モードに基づいて使用される。【選択図】図５
2021517695.tif 000002
【特許請求の範囲】
【請求項１】
ユーザデバイスから、及びコンピューティングデバイスによって、リソースにアクセスする要求を受信することと、
前記リソースと関連付けられた識別子及び前記リソースと関連付けられた第１のデータを示すデータ識別子を判定することであって、前記第１のデータは、前記リソースに記憶されている、前記判定することと、
構成サービスの負荷を示す情報に基づいて、動作モードを判定することと、
前記動作モードが高負荷動作モードを含むと判定した後、共有キャッシュに、前記リソースと関連付けられた第２のデータが前記共有キャッシュに記憶されているかどうかを判定する要求を送信することであって、前記リソースと関連付けられた前記第２のデータが前記共有キャッシュに記憶されているかどうかを判定する前記要求は、前記リソースと関連付けられた前記識別子及び前記データ識別子を含む、前記送信することと、
前記共有キャッシュから、前記リソースと関連付けられた前記第２のデータが前記共有キャッシュに記憶されているかどうかのインジケーションを受信することと、
前記リソースと関連付けられた前記第２のデータが前記共有キャッシュに記憶されているかどうかの前記インジケーションに基づいて、前記構成サービスに、前記リソースと関連付けられた第３のデータを取得する要求を送信するかどうかを判定することと、
を備えた、方法。
【請求項２】
前記データ識別子に基づいて、前記第２のデータが前記第１のデータとは異なるかどうかを判定することと、
前記第２のデータが前記第１のデータとは異なると判定した後、前記第１のデータを前記第２のデータと置き換えることと、
を更に備えた、請求項１に記載の方法。
【請求項３】
前記第２のデータが前記第１のデータに対応するとのインジケーションを受信することと、
前記第１のデータに基づいて、前記リソースを起動することと、
を更に備えた、請求項１に記載の方法。
【請求項４】
前記第２のデータは、有効期限の後に期限が切れ、前記方法は、前記動作モードが前記高負荷動作モードを含むと判定した後、前記第２のデータの前記有効期限をリフレッシュすることを更に備えた、請求項１に記載の方法。
【請求項５】
前記第２のデータが前記共有キャッシュに記憶されていないと判定した後、前記構成サービスに、前記第３のデータを取得する要求を送信することと、
前記構成サービスから、前記第３のデータを受信することと、
前記共有キャッシュに、前記第３のデータを挿入することと、
を更に備えた、請求項１に記載の方法。
【請求項６】
第２のリソースにアクセスする第２の要求を受信することと、
第２の動作モードが低負荷動作モードを含むと判定した後、前記構成サービスに、前記第２のリソースと関連付けられた第４のデータを取得する要求を送信することと、
を更に備えた、請求項１に記載の方法。
【請求項７】
前記動作モードを判定することは、前記ユーザデバイスのユーザと関連付けられたビジネスの業務時間に基づいて、前記動作モードを判定することを含む、請求項１に記載の方法。
【請求項８】
期間内に、複数のリソースにアクセスする複数の要求を受信することを更に備え、前記動作モードを前記判定することは、閾値を上回る前記複数の要求の数に基づいて、前記動作モードを判定することを含む、請求項１に記載の方法。
【請求項９】
前記共有キャッシュは、メモリ内データベースを含む、請求項１に記載の方法。
【請求項１０】
前記データ識別子は、前記第１のデータのフィンガプリントを含む、請求項１に記載の方法。
【請求項１１】
コンピューティングデバイスであって、
１つ以上のプロセッサと、
命令を記憶したメモリと、を備え、前記命令は、前記１つ以上のプロセッサによって実行されるとき、前記コンピューティングデバイスに、
ユーザデバイスから、リソースにアクセスする要求を受信することと、
前記リソースと関連付けられた識別子及び前記リソースと関連付けられた第１のデータを示すデータ識別子を判定することであって、前記第１のデータは、前記リソースに記憶される、前記判定することと、
構成サービスの負荷を示す情報に基づいて、動作モードを判定することと、
前記動作モードが高負荷動作モードを含むと判定した後、共有キャッシュに、前記リソースと関連付けられた第２のデータが前記共有キャッシュに記憶されているかどうかを判定する要求を送信することであって、前記リソースと関連付けられた前記第２のデータが前記共有キャッシュに記憶されているかどうかを判定する前記要求は、前記リソースと関連付けられた前記識別子及び前記データ識別子を含む、前記送信することと、
前記共有キャッシュから、前記リソースと関連付けられた前記第２のデータが前記共有キャッシュに記憶されているかどうかのインジケーションを受信することと、
前記リソースと関連付けられた前記第２のデータが前記共有キャッシュに記憶されているかどうかの前記インジケーションに基づいて、前記構成サービスに、前記リソースと関連付けられた第３のデータを取得する要求を送信するかどうかを判定することと、
を行わせる、前記コンピューティングデバイス。
【請求項１２】
前記命令は、前記１つ以上のプロセッサによって実行されるとき、更に前記コンピューティングデバイスに、
前記データ識別子に基づいて、前記第２のデータが前記第１のデータとは異なるかどうかを判定することと、
前記第２のデータが前記第１のデータとは異なると判定した後、前記第１のデータを前記第２のデータと置き換えることと、
を行わせる、請求項１１に記載のコンピューティングデバイス。
【請求項１３】
前記命令は、前記１つ以上のプロセッサによって実行されるとき、更に前記コンピューティングデバイスに、
前記第２のデータが前記第１のデータに対応するとのインジケーションを受信することと、
前記第１のデータに基づいて、前記リソースを起動することと、
を行わせる、請求項１１に記載のコンピューティングデバイス。
【請求項１４】
前記第２のデータは、有効期限の後に期限が切れ、前記命令は、前記１つ以上のプロセッサによって実行されるとき、更に前記コンピューティングデバイスに、前記動作モードが前記高負荷動作モードを含むと判定した後、前記第２のデータの前記有効期限をリフレッシュさせる、請求項１１に記載のコンピューティングデバイス。
【請求項１５】
前記命令は、前記１つ以上のプロセッサによって実行されるとき、更に前記コンピューティングデバイスに、
前記第２のデータが前記共有キャッシュに記憶されていないと判定した後、前記構成サービスに、前記第３のデータを取得する要求を送信することと、
前記構成サービスから、前記第３のデータを受信することと、
前記共有キャッシュに、前記第３のデータを挿入することと、
を行わせる、請求項１１に記載のコンピューティングデバイス。
【請求項１６】
前記命令は、前記１つ以上のプロセッサによって実行されるとき、更に前記コンピューティングデバイスに、期間内に、複数のリソースにアクセスする複数の要求を受信することと、前記命令は、前記１つ以上のプロセッサによって実行されるとき、前記コンピューティングデバイスに、閾値を上回る前記複数の要求の数に基づいて、前記動作モードを判定することによって、前記動作モードを判定することと、
を行わせる、請求項１１に記載のコンピューティングデバイス。
【請求項１７】
前記共有キャッシュは、メモリ内データベースを含む、請求項１１に記載のコンピューティングデバイス。
【請求項１８】
コンピュータ可読命令を記憶した１つ以上の非一時的コンピュータ可読媒体であって、前記コンピュータ可読命令は、実行されるとき、コンピューティングデバイスに、
ユーザデバイスから、リソースにアクセスする要求を受信することと、
前記リソースと関連付けられた識別子及び前記リソースと関連付けられた第１のデータを示すデータ識別子を判定することであって、前記第１のデータは、前記リソースに記憶される、前記判定することと、
構成サービスの負荷を示す情報に基づいて、動作モードを判定することと、
前記動作モードが高負荷動作モードを含むと判定した後、共有キャッシュに、前記リソースと関連付けられた第２のデータが前記共有キャッシュに記憶されているかどうかを判定する要求を送信することであって、前記リソースと関連付けられた前記第２のデータが前記共有キャッシュに記憶されているかどうかを判定する前記要求は、前記リソースと関連付けられた前記識別子及び前記データ識別子を含む、前記送信することと、
前記共有キャッシュから、前記リソースと関連付けられた前記第２のデータが前記共有キャッシュに記憶されているかどうかのインジケーションを受信することと、
前記リソースと関連付けられた前記第２のデータが前記共有キャッシュに記憶されているかどうかの前記インジケーションに基づいて、前記構成サービスに、前記リソースと関連付けられた第３のデータを取得する要求を送信するかどうかを判定することと、
を行わせる、前記１つ以上の非一時的コンピュータ可読媒体。
【請求項１９】
前記コンピュータ可読命令は、実行されるとき、更に前記コンピューティングデバイスに、
前記データ識別子に基づいて、前記第２のデータが前記第１のデータとは異なるかどうかを判定することと、
前記第２のデータが前記第１のデータとは異なると判定した後、前記第１のデータを前記第２のデータと置き換えることと、
を行わせる、請求項１８に記載の非一時的コンピュータ可読媒体。
【請求項２０】
前記コンピュータ可読命令は、実行されるとき、更に前記コンピューティングデバイスに、
前記第２のデータが前記共有キャッシュに記憶されていないと判定した後、前記構成サービスに、前記第３のデータを取得する要求を送信することと、
前記構成サービスから、前記第３のデータを受信することと、
前記共有キャッシュに、前記第３のデータを挿入することと、
を行わせる、請求項１８に記載の非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書で説明される発明は概して、コンピュータ及びネットワークハードウェア及びソフトウェアに関する。特に、本発明は、クラウドシステムにおいて共有キャッシュを使用してリソースに対するデータをキャッシュする方法及びシステムに関する。
【背景技術】
【０００２】
企業は、クラウドコンピューティングサービスと共に、オブジェクト記憶を含むデータ記憶に対する新たなアプローチをますます採用している。クラウドコンピューティングサービスは、ユーザに対してサービスとして様々なリソースを提供することができる。リソースに対してまたはリソースによって使用されるデータは、クラウドコンピューティングサーバ上で稼働するデータベースに記憶される。データがリソースに対してまたはリソースによって必要とされるとき、データを取得する要求は、クラウドコンピューティングサーバ上で稼働するデータベースに送信される。リソースにアクセスするユーザの数が急激に増加するにつれて、データを取得する多数の要求を扱うアーキテクチャが開発される。
【発明の概要】
【０００３】
以下は、本明細書で説明される様々な態様の簡易化された概要を提示する。この概要は、詳細な概説ではなく、必要とされる要素もしくは重要な要素を識別することを意図しておらず、または請求項の範囲を詳しく述べることを意図していない。以下の概要は、以下で提供されるより詳細な説明への導入的な前置きとして簡易化された形式でいくつかの概念を提示するにすぎない。
【０００４】
本明細書で説明される発明の態様は、共有キャッシュを使用してリソースに対するデータをキャッシュする方法を実行するように構成されたシステム、装置、及び／またはコンピュータ可読媒体に向けられる。
【０００５】
方法は、ユーザデバイスから、及びコンピューティングデバイスによって、リソースにアクセスする要求を受信することを含んでもよい。コンピューティングデバイスは、リソースと関連付けられた識別子及びリソースと関連付けられた第１のデータを示すデータ識別子を判定してもよい。第１のデータは、リソースに記憶されてもよい。コンピューティングデバイスは、構成サービスの負荷を示す情報に基づいて、動作モードを判定してもよい。動作モードが高負荷動作モードを含むと判定した後、コンピューティングデバイスは、共有キャッシュに、リソースと関連付けられた第２のデータが共有キャッシュに記憶されているかどうかを判定する要求を送信してもよい。リソースと関連付けられた第２のデータが共有キャッシュに記憶されているかどうかを判定する要求は、リソースと関連付けられた識別子及びデータ識別子を含んでもよい。コンピューティングデバイスは、共有キャッシュから、リソースと関連付けられた第２のデータが共有キャッシュに記憶されているかどうかのインジケーションを受信してもよい。コンピューティングデバイスは、リソースと関連付けられた第２のデータが共有キャッシュに記憶されているかどうかのインジケーションに基づいて、構成サービスに、リソースと関連付けられた第３のデータを取得する要求を送信するかどうかを判定してもよい。
【０００６】
いくつかの発明の態様では、コンピューティングデバイスは、データ識別子に基づいて、第２のデータが第１のデータとは異なるかどうかを判定してもよい。第２のデータが第１のデータとは異なると判定した後、コンピューティングデバイスは、第１のデータを第２のデータと置き換えてもよい。いくつかの実施例では、コンピューティングデバイスは、第２のデータが第１のデータに対応するとのインジケーションを受信してもよい。コンピューティングデバイスは、第１のデータに基づいて、リソースを起動してもよい。
【０００７】
いくつかの発明の態様では、第２のデータは、有効期限の後に期限が切れもよい。動作モードが高負荷動作モードを含むと判定した後、コンピューティングデバイスは、第２のデータの有効期限をリフレッシュしてもよい。いくつかの実施例では、第２のデータが共有キャッシュに記憶されていないと判定した後、コンピューティングデバイスは、構成サービスに、第３のデータを取得する要求を送信してもよい。コンピューティングデバイスは、構成サービスから、第３のデータを受信してもよい。コンピューティングデバイスは、共有キャッシュに、第３のデータを挿入してもよい。
【０００８】
いくつかの発明の態様では、コンピューティングデバイスは、第２のリソースにアクセスする第２の要求を受信してもよい。第２の動作モードが低負荷動作モードを含むと判定した後、コンピューティングデバイスは、構成サービスに、第２のリソースと関連付けられた第４のデータを取得する要求を送信してもよい。いくつかの実施例では、動作モードを判定することは、ユーザデバイスのユーザと関連付けられたビジネスの業務時間に基づいて、動作モードを判定することを含んでもよい。
【０００９】
いくつかの発明の態様では、コンピューティングデバイスは、期間内に、複数のリソースにアクセスする複数の要求を受信してもよい。動作モードを判定することは、閾値を上回る複数の要求の数に基づいて、動作モードを判定することを含んでもよい。いくつかの実施例では、共有キャッシュは、メモリ内データベースを含んでもよい。いくつかの実施例では、データ識別子は、第１のデータのフィンガプリントを含んでもよい。
【００１０】
以下で更に詳細に議論される開示の利点と共に、それらの態様及び追加の態様が認識されよう。
【００１１】
添付図面を考慮して以下の説明を参照することによって、本明細書で説明される態様及びその利点のより完全な理解を得ることができ、添付図面では、同様の参照符号が同様の特徴を示す。
【図面の簡単な説明】
【００１２】
【図１】本明細書で説明される１つ以上の態様に従って使用することができる例示的なコンピュータシステムアーキテクチャを表す。
【図２】本明細書で説明される１つ以上の態様に従って使用することができる例示的なリモートアクセスシステムアーキテクチャを表す。
【図３】本明細書で説明される１つ以上の態様に従って使用することができる例示的な仮想化（ハイパーバイザ）システムアーキテクチャを表す。
【図４】本明細書で説明される１つ以上の態様に従って使用することができる例示的なクラウドベースシステムアーキテクチャを表す。
【図５】クラウドシステムにおいてデータをキャッシュする実施例のシステムを示す概略図である。
【図６】共有キャッシュを使用してデータをキャッシュする実施例の方法を示すフローチャートである。
【図７】共有キャッシュに記憶されたデータを更新またはリフレッシュする実施例の方法を示すフローチャートである。
【図８】データ変更イベントに基づいて、共有キャッシュに記憶されたデータを更新する実施例の方法を示すフローチャートである。
【発明を実施するための形態】
【００１３】
様々な実施形態の以下の説明では、上記識別され、その一部を形成し、本明細書で説明される態様を実施することができる様々な実施形態の例示によって示される添付図面への参照が行われる。本明細書で説明される範囲から逸脱することなく、他の実施形態が利用されてもよく、構造的及び機能的な修正が行われてもよいことが理解されよう。様々な態様は、他の実施形態が可能であり、様々な異なる方式において実施または実行されることが可能である。
【００１４】
以下で更に詳細に説明される主題への全体的な導入として、本明細書で説明される態様は、共有キャッシュを使用してリソースに対するデータをキャッシュすることに向けられる。ユーザは、自身の様々な使用のためにリソースにアクセスすることを要求することができる。リソースと関連付けられたデータは、構成サービス、リソース、または共有キャッシュに記憶されてもよい。構成サービスに記憶されたデータは、修正されてもよい。リソース及び共有キャッシュに記憶されたデータは、構成サービスにおける修正されたデータに基づいて更新されてもよい。構成サービス、リソース、または共有キャッシュに記憶されたデータは、動作モードに基づいて使用されてもよい。
【００１５】
本明細書で使用される表現及び専門用語は、説明の目的であり、限定するものと見なされるべきではないことを理解されたい。むしろ、本明細書で使用される表現及び用語は、それらの最も広い解釈及び意味が与えられることになる。「含む（ｉｎｃｌｕｄｉｎｇ）」及び「備える（ｃｏｍｐｒｉｓｉｎｇ）」、並びにそれらの変形は、以下で表記される項目及びそれらと同等なものと共に、追加の項目及びそれらと同等なものを包含することが意味される。用語「取り付けられる（ｍｏｕｎｔｅｄ）」、「接続される（ｃｏｎｎｅｃｔｅｄ）」、「結合される（ｃｏｕｐｌｅｄ）」、「位置付けられる（ｐｏｓｉｔｉｏｎｅｄ）」、「係合される（ｅｎｇａｇｅｄ）」、及び同様の用語の使用は、直接的及び間接的の両方の取り付け、接続、結合、位置付け、及び係合を含むことが意味される。
【００１６】
コンピューティングアーキテクチャ
コンピュータソフトウェア、ハードウェア、及びネットワークは、とりわけ、スタンドアロン環境、ネットワーク化環境、リモートアクセス（リモートデスクトップとしても知られる）環境、仮想化環境、及び／またはクラウドベース環境を含む、様々な異なるシステム環境において利用されてもよい。図１は、スタンドアロン環境及び／またはネットワーク化環境において本明細書で説明される１つ以上の例示的な態様を実装するために使用することができるシステムアーキテクチャ及びデータ処理デバイスの一実施例を示す。様々なネットワークノード１０３、１０５、１０７、及び１０９は、インターネットなどのワイドエリアネットワーク（ＷＡＮ）１０１を介して相互接続されてもよい。追加的または代替的に、プライベートイントラネット、企業ネットワーク、ローカルエリアネットワーク（ＬＡＮ）、メトロポリタンエリアネットワーク（ＭＡＮ）、無線ネットワーク、及びパーソナルネットワーク（ＰＡＮ）などを含む、他のネットワークが使用されてもよい。ネットワーク１０１は、例示を目的としており、より少ないまたは追加のコンピュータネットワークと置き換えられてもよい。ローカルエリアネットワーク１３３は、いずれかの既知のＬＡＮトポロジのうちの１つ以上を有してもよく、イーサネットなど、様々な異なるプロトコルのうちの１つ以上を使用してもよい。デバイス１０３、１０５、１０７、及び１０９、並びに他のデバイス（図示せず）は、ツイストペアワイヤ、同軸ケーブル、光ファイバ、電波、または他の通信媒体を介してネットワークのうちの１つ以上に接続されてもよい。
【００１７】
本明細書で使用され、図面において表される用語「ネットワーク」は、１つ以上の通信経路を介してリモート記憶装置が共に結合されるシステムだけでなく、記憶能力を有するそのようなシステムに時々結合することができるスタンドアロンデバイスをも指す。結果として、用語「ネットワーク」は、「物理ネットワーク」だけでなく、全ての物理ネットワークにわたって存在する、単一のエンティティに貢献可能な、データから構成された「コンテンツネットワーク」をも含む。
【００１８】
構成要素は、データサーバ１０３、ウェブサーバ１０５、及びクライアントコンピュータ１０７、１０９を含んでもよい。データサーバ１０３は、データベースの全体的なアクセス、制御、及び管理、並びに本明細書で説明される１つ以上の例示的な態様を実行するための制御ソフトウェアを提供する。データサーバ１０３は、ウェブサーバ１０５に接続されてもよく、ウェブサーバ１０５を通じて、ユーザは、要求に応じてデータと相互作用し、データを取得する。代替的に、データサーバ１０３は、ウェブサーバ自体としての役割を果たしてもよく、インターネットに直接接続されてもよい。データサーバ１０３は、ローカルエリアネットワーク１３３、ワイドエリアネットワーク１０１（例えば、インターネット）を通じて、直接もしくは間接接続を介して、またはいくつかの他のネットワークを介してウェブサーバ１０５に接続されてもよい。ユーザは、リモートコンピュータ１０７、１０９を使用して、例えば、ウェブサーバ１０５によってホストされた１つ以上の外部に公開されたウェブサイトを介してデータサーバ１０３に接続されたウェブブラウザを使用して、データサーバ１０３と相互作用することができる。クライアントコンピュータ１０７、１０９は、データサーバ１０３に記憶されたデータにアクセスするために、データサーバ１０３と合わせて使用されてもよく、または他の目的で使用されてもよい。例えば、クライアントデバイス１０７から、ユーザは、本分野で既知なインターネットブラウザを使用して、またはコンピュータネットワーク（インターネットなど）を通じてウェブサーバ１０５及び／またはデータサーバ１０３と通信するソフトウェアアプリケーションを実行することによって、ウェブサーバ１０５にアクセスすることができる。
【００１９】
サーバ及びアプリケーションは、同一の物理マシン上で組み合わされてもよく、別個の仮想アドレスもしくは論理アドレスを保持してもよく、または別個の物理マシン上に常駐してもよい。図１は、使用することができるネットワークアーキテクチャの一実施例のみを示し、当業者は、本明細書で更に説明されるように、使用される特定のネットワークアーキテクチャ及びデータ処理デバイスは異なってもよく、それらが提供する機能性に二次的であることを認識するであろう。例えば、ウェブサーバ１０５及びデータサーバ１０３によって提供されるサービスは、単一のサーバ上で組み合わされてもよい。
【００２０】
各々の構成要素１０３、１０５、１０７、１０９は、任意のタイプの既知のコンピュータ、サーバ、またはデータ処理デバイスであってもよい。データサーバ１０３は、例えば、データサーバ１０３の全体的な動作を制御するプロセッサ１１１を含んでもよい。データサーバ１０３は更に、ランダムアクセスメモリ（ＲＡＭ）１１３、リードオンリメモリ（ＲＯＭ）１１５、ネットワークインタフェース１１７、入力／出力インタフェース１１９（例えば、キーボード、マウス、ディスプレイ、プリンタなど）、及びメモリ１２１を含んでもよい。入力／出力（Ｉ／Ｏ）１１９は、データまたはファイルを読み出し、書き込み、表示し、及び／または印刷する様々なインタフェースユニット及びドライブを含んでもよい。メモリ１２１は更に、データ処理デバイス１０３の全体的な動作を制御するオペレーティングシステムソフトウェア１２３、本明細書で説明される態様を実行するようデータサーバ１０３に指示する制御ロジック１２５、並びに本明細書で説明される態様と共に使用することができ、もしくは使用されなくてもよい二次的な、サポート、及び／または他の機能性を提供する他のアプリケーションソフトウェア１２７を記憶してもよい。制御ロジックは、本明細書でデータサーバソフトウェア１２５とも称されてもよい。データサーバソフトウェアの機能性は、制御ロジックに符号化されたルールに基づいて自動で行われる動作もしくは決定、ユーザがシステムへの入力を提供することによって手動で行われる動作もしくは決定、及び／またはユーザ入力（例えば、クエリ、データ更新など）に基づいて自動で処理することの組み合わせを指してもよい。
【００２１】
メモリ１２１はまた、第１のデータベース１２９及び第２のデータベース１３１を含む、本明細書で説明される１つ以上の態様の実行において使用されるデータを記憶してもよい。いくつかの実施形態では、第１のデータベースは、第２のデータベースを含んでもよい（例えば、別個のテーブル、レポートなどとして）。すなわち、情報は、システム設計に応じて、単一のデータベースに記憶されてもよく、または異なる論理データベース、仮想データベース、もしくは物理データベースに分離されてもよい。デバイス１０５、１０７、及び１０９は、デバイス１０３に関して説明されるのと同様のアーキテクチャまたは異なるアーキテクチャを有してもよい。当業者は、本明細書で説明されるデータ処理デバイス１０３（または、デバイス１０５、１０７、もしくは１０９）の機能性が、例えば、複数のコンピュータにわたって処理負荷を分散し、地理的位置、ユーザアクセスレベル、サービス品質（ＱｏＳ）などに基づいてトランザクションを分けるよう、複数のデータ処理デバイスにわたって展開されてもよいことを理解されよう。
【００２２】
本明細書で説明される１つ以上のコンピュータまたは他のデバイスによって実行される１つ以上のプログラムモジュールなど、コンピュータ使用可能もしくは読み出し可能データ及び／またはコンピュータ実行可能命令において１つ以上の態様が具体化されてもよい。概して、プログラムモジュールは、コンピュータまたは他のデバイスにおいてプロセッサによって実行されるとき、特定のタスクを実行し、または特定の抽象データタイプを実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。モジュールは、実行のためにその後コンパイルされるソースコードプログラミング言語において記述されてもよく、またはハイパーテキストマークアップ言語（ＨＴＭＬ）もしくは拡張可能マークアップ言語（ＸＭＬ）など（それらに限定されないが）のスクリプト言語において記述されてもよい。コンピュータ実行可能命令は、不揮発性記憶装置などのコンピュータ可読媒体に記憶されてもよい。ハードディスク、ＣＤ−ＲＯＭ、光学記憶装置、磁気記憶装置、及び／またはそれらのいずれかの組み合わせを含む、任意の適切なコンピュータ可読記憶媒体が利用されてもよい。加えて、本明細書で説明されるデータまたはイベントを表す様々な伝送（非記憶）媒体が、金属ワイヤ、光ファイバ、及び／または無線伝送媒体（例えば、空気及び／または空間）などの信号伝達媒体を通じて進行する電磁気波の形式で伝送元と伝送先との間で転送されてもよい。本明細書で説明される様々な態様は、方法、データ処理システム、またはコンピュータプログラム製品として具体化されてもよい。したがって、様々な機能性は、ソフトウェア、ファームウェア、及び／またはハードウェア、もしくは集積回路及びフィールドプログラマブルゲートアレイ（ＦＰＧＡ）などのハードウェア同等物において全体としてまたは部分的に具体化されてもよい。本明細書で説明される１つ以上の態様をより効率的に実装するために特定のデータ構造が使用されてもよく、そのようなデータ構造は、本明細書で説明されるコンピュータ実行可能命令及びコンピュータ使用可能データの範囲内で考慮される。
【００２３】
図２を更に参照して、本明細書で説明される１つ以上の態様は、リモートアクセス環境において実装されてもよい。図２は、本明細書で説明される１つ以上の例示的な態様に従って使用することができる、例示的なコンピューティング環境２００においてコンピューティングデバイス２０１を含む実施例のシステムアーキテクチャを表す。コンピューティングデバイス２０１は、クライアントアクセスデバイスに対して仮想マシンを提供するように構成されたシングルサーバまたはマルチサーバデスクトップ仮想化システム（例えば、リモートアクセスまたはクラウドシステム）におけるサーバ２０６ａとして使用されてもよい。コンピューティングデバイス２０１は、サーバの全体的な動作を制御するプロセッサ２０３、並びにＲＡＭ２０５、ＲＯＭ２０７、入力／出力（Ｉ／Ｏ）モジュール２０９、及びメモリ２１５を含む、その関連する構成要素を有してもよい。
【００２４】
Ｉ／Ｏモジュール２０９は、それらを通じてコンピューティングデバイス２０１のユーザが入力を提供することができる、マウス、キーパッド、タッチスクリーン、スキャナ、光学リーダ、及び／またはスタイラス（もしくは他の入力デバイス（複数可））を含んでもよく、また、音声出力を提供するスピーカのうちの１つ以上、並びにテキスト出力、視聴覚出力、及び／またはグラフィカル出力を提供するビデオ表示デバイスのうちの１つ以上を含んでもよい。本明細書で説明される様々な機能を実行するために、コンピューティングデバイス２０１を専用コンピューティングデバイスへと構成するようプロセッサ２０３に命令を提供するソフトウェアが、メモリ２１５及び／または他の記憶装置に記憶されてもよい。例えば、メモリ２１５は、オペレーティングシステム２１７、アプリケーションプログラム２１９、及び関連するデータベース２２１など、コンピューティングデバイス２０１によって使用されるソフトウェアを記憶してもよい。
【００２５】
コンピューティングデバイス２０１は、端末２４０（クライアントデバイスとも称される）など、１つ以上のリモートコンピュータへの接続をサポートするネットワーク化環境において動作してもよい。端末２４０は、コンピューティングデバイス１０３または２０１に関して上記説明された要素の多くまたは全てを含む、パーソナルコンピュータ、モバイルデバイス、ラップトップコンピュータ、タブレット、またはサーバであってもよい。図２に表されたネットワーク接続は、ローカルエリアネットワーク（ＬＡＮ）２２５及びワイドエリアネットワーク（ＷＡＮ）２２９を含むが、他のネットワークをも含んでもよい。ＬＡＮネットワーク環境において使用されるとき、コンピューティングデバイス２０１は、ネットワークインタフェースまたはアダプタ２２３を通じてＬＡＮ２２５に接続されてもよい。ＷＡＮネットワーク環境において使用されるとき、コンピューティングデバイス２０１は、コンピュータネットワーク２３０（例えば、インターネット）など、ＷＡＮ２２９を通じて通信を確立するためのモデム２２７または他のワイドエリアネットワークインタフェースを含んでもよい。図示されるネットワーク接続は、例示であり、コンピュータの間の通信リンクを確立する他の手段が使用されてもよいことが認識されよう。コンピューティングデバイス２０１及び／または端末２４０はまた、バッテリ、スピーカ、及びアンテナ（図示せず）など、様々な他の構成要素を含むモバイル端末（例えば、携帯電話、スマートフォン、携帯情報端末（ＰＤＡ）、ノートブックなど）であってもよい。
【００２６】
本明細書で説明される態様も、多数の他の汎用または専用コンピューティングシステム環境または構成により使用可能であってもよい。本明細書で説明される態様による使用に適切であり得る他のコンピューティングシステム、環境、及び／または構成の例は、それらに限定されないが、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースシステム、セットトップボックス、プログラム可能家庭用電化製品、ネットワークパーソナルコンピュータ（ＰＣ）、ミニコンピュータ、メインフレームコンピュータ、及び上記システムまたはデバイスのいずれかを含む分散コンピューティング環境などを含む。
【００２７】
図２に示されるように、１つ以上のクライアントデバイス２４０は、１つ以上のサーバ２０６ａ〜２０６ｎ（全体的に本明細書で「サーバ（複数可）２０６」と称される）と通信していてもよい。一実施形態では、コンピューティング環境２００は、サーバ（複数可）２０６とクライアントマシン（複数可）２４０との間でインストールされたネットワークアプライアンスを含んでもよい。ネットワークアプライアンスは、クライアント／サーバ接続を管理することができ、いくつかのケースでは、複数のバックエンドサーバ２０６の間でクライアント接続を負荷分散することができる。
【００２８】
クライアントマシン（複数可）２４０は、いくつかの実施形態では、単一のクライアントマシン２４０またはクライアントマシン２４０の単一のグループと称されてもよく、サーバ（複数可）２０６は、単一のサーバ２０６またはサーバ２０６の単一のグループと称されてもよい。一実施形態では、単一のクライアントマシン２４０が１つよりも多いサーバ２０６と通信し、別の実施形態では、単一のサーバ２０６が１つよりも多いクライアントマシン２４０と通信する。更なる別の実施形態では、単一のクライアントマシン２４０は、単一のサーバ２０６と通信する。
【００２９】
クライアントマシン２４０は、いくつかの実施形態では、以下の非包括的な用語、クライアントマシン（複数可）、クライアント（複数可）、クライアントコンピュータ（複数可）、クライアントデバイス（複数可）、クライアントコンピューティングデバイス（複数可）、ローカルマシン、リモートマシン、クライアントノード（複数可）、エンドポイント（複数可）、またはエンドポイントノード（複数可）のうちのいずれか１つと称されてもよい。サーバ２０６は、いくつかの実施形態では、以下の非包括的な用語、サーバ（複数可）、ローカルマシン、リモートマシン、サーバファーム（複数可）、またはホストコンピューティングデバイス（複数可）のうちのいずれか１つと称されてもよい。
【００３０】
一実施形態では、クライアントマシン２４０は、仮想マシンであってもよい。仮想マシンは、任意の仮想マシンであってもよく、いくつかの実施形態では、仮想マシンは、タイプ１またはタイプ２のハイパーバイザ、例えば、Ｃｉｔｒｉｘ  Ｓｙｓｔｅｍｓ、ＩＢＭ、ＶＭｗａｒｅ、によって開発されたハイパーバイザ、またはいずれかの他のハイパーバイザによって管理されるいずれかの仮想マシンであってもよい。いくつかの態様では、仮想マシンは、ハイパーバイザによって管理されてもよく、他の態様では、仮想マシンは、サーバ２０６上で実行するハイパーバイザまたはクライアント２４０上で実行するハイパーバイザによって管理されてもよい。
【００３１】
いくつかの実施形態は、サーバ２０６または他のリモートに位置するマシン上でリモートに実行するアプリケーションによって生成されたアプリケーション出力を表示するクライアントデバイス２４０を含む。それらの実施形態では、クライアントデバイス２４０は、アプリケーションウインドウ、ブラウザ、または他の出力ウインドウにおいて出力を表示するよう、仮想マシン受信機プログラムまたはアプリケーションを実行してもよい。一実施例では、アプリケーションは、デスクトップであり、他の実施例では、アプリケーションは、デスクトップを生成または提示するアプリケーションである。デスクトップは、ローカルアプリケーション及び／またはリモートアプリケーションを統合することができるオペレーティングシステムのインスタンスに対してユーザインタフェースを提供するグラフィカルシェルを含んでもよい。本明細書で使用されるアプリケーションは、オペレーティングシステムのインスタンス（及び、任意選択で、デスクトップも）がロードされた後に実行するプログラムである。
【００３２】
サーバ２０６は、いくつかの実施形態では、クライアント上で実行するシンクライアントまたはリモート表示アプリケーションにデータを送信して、サーバ２０６上で実行するアプリケーションによって生成された表示出力を提示するために、リモート提示プロトコルまたは他のプログラムを使用する。シンクライアントまたはリモート表示プロトコルは、プロトコルの以下の非包括的なリスト、Ｃｉｔｒｉｘ  Ｓｙｓｔｅｍｓ，Ｉｎｃ．ｏｆ  Ｆｔ．Ｌａｕｄｅｒｄａｌｅ，Ｆｌｏｒｉｄａによって開発された独立コンピューティングアーキテクチャ（ＩＣＡ）プロトコル、またはＭｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎ  ｏｆ  Ｒｅｄｍｏｎｄ，Ｗａｓｈｉｎｇｔｏｎによって製造されたリモートデスクトッププロトコル（ＲＤＰ）のいずれか１つであってもよい。
【００３３】
リモートコンピューティング環境は、１つよりも多いサーバ２０６ａ〜２０６ｎを含んでもよく、その結果、サーバ２０６ａ〜２０６ｎは、例えば、クラウドコンピューティング環境においてサーバファーム２０６に共に論理的にグループ化される。サーバファーム２０６は、地理的に分散されると共に、論理的に共にグループ化されたサーバ２０６、または相互に近接して位置すると共に、論理的に共にグループ化されたサーバ２０６を含んでもよい。サーバファーム２０６内で地理的に分散されたサーバ２０６ａ〜２０６ｎは、いくつかの実施形態では、ＷＡＮ（ワイド）、ＭＡＮ（メトロポリタン）、またはＬＡＮ（ローカル）を使用して通信してもよく、異なる地理的領域は、異なる大陸、大陸の異なる領域、異なる国、異なる州、異なる都市、異なるキャンパス、異なる部屋、または先述した地理的位置のいずれかの組み合わせとして特徴付けられてもよい。いくつかの実施形態では、サーバファーム２０６は、単一のエンティティとして管理されてもよく、他の実施形態では、サーバファーム２０６は、複数のサーバファームを含んでもよい。
【００３４】
いくつかの実施形態では、サーバファームは、実質的に類似のタイプのオペレーティングシステムプラットフォーム（例えば、ＷＩＮＤＯＷＳ（登録商標）、ＵＮＩＸ（登録商標）、ＬＩＮＵＸ、ｉＯＳ、ＡＮＤＲＯＩＤ（登録商標）、ＳＹＭＢＩＡＮなど）を実行するサーバ２０６を含んでもよい。他の実施形態では、サーバファーム２０６は、第１のタイプのオペレーティングシステムプラットフォームを実行する１つ以上のサーバの第１のグループ、及び第２のタイプのオペレーティングシステムプラットフォームを実行する１つ以上のサーバの第２のグループを含んでもよい。
【００３５】
サーバ２０６は、必要に応じて、いずれかのタイプのサーバ、例えば、ファイルサーバ、アプリケーションサーバ、ウェブサーバ、プロキシサーバ、アプライアンス、ネットワークアプライアンス、ゲートウェイ、アプリケーションゲートウェイ、ゲートウェイサーバ、仮想化サーバ、展開サーバ、セキュアソケットレイヤ（ＳＳＬ）ＶＰＮサーバ、ファイアウォール、ウェブサーバ、アプリケーションサーバもしくはマスタアプリケーションサーバ、アクティブディレクトリを実行するサーバ、またはファイアウォール機能性、アプリケーション機能性、もしくは負荷分散機能性を提供するアプリケーションアクセラレーションプログラムを実行するサーバとして構成されてもよい。他のサーバタイプも使用されてもよい。
【００３６】
いくつかの実施形態は、クライアントマシン２４０から要求を受信し、第２のサーバ２０６ｂ（図示せず）に要求を転送し、第２のサーバ２０６ｂ（図示せず）からの応答と共にクライアントマシン２４０によって生成された要求に応答する第１のサーバ２０６ａを含む。第１のサーバ２０６ａは、クライアントマシン２４０に対して利用可能なアプリケーションのエニュメレーションと共に、アプリケーションのエニュメレーション内で識別されたアプリケーションをホストするアプリケーションサーバ２０６と関連付けられたアドレス情報を取得してもよい。第１のサーバ２０６ａは次いで、ウェブインタフェースを使用して、クライアントの要求に対する応答を提示してもよく、識別されたアプリケーションへのアクセスをクライアント２４０に提供するよう、クライアント２４０と直接通信してもよい。１つ以上のクライアント２４０及び／または１つ以上のサーバ２０６は、ネットワーク２３０、例えば、ネットワーク１０１を通じてデータを送信してもよい。
【００３７】
図３は、例示的なデスクトップ仮想化システムの高レベルアーキテクチャを示す。示されるように、デスクトップ仮想化システムは、１つ以上のクライアントアクセスデバイス２４０に仮想デスクトップ及び／または仮想アプリケーションを提供するように構成された少なくとも１つの仮想化サーバ３０１を含む、シングルサーバもしくはマルチサーバシステム、またはクラウドシステムであってもよい。本明細書で使用されるように、デスクトップは、１つ以上のアプリケーションをホスト及び／または実行することができるグラフィカル環境または空間を指す。デスクトップは、ローカルアプリケーション及び／またはリモートアプリケーションを統合することができるオペレーティングシステムのインスタンスに対してユーザインタフェースを提供するグラフィカルシェルを含んでもよい。アプリケーションは、オペレーティングシステムのインスタンス（及び、任意選択で、デスクトップも）がロードされた後に実行するプログラムを含んでもよい。オペレーティングシステムの各々のインスタンスは、物理（例えば、デバイスごとに１つのオペレーティングシステム）または仮想（例えば、単一のデバイス上で稼働するＯＳの多くのインスタンス）であってもよい。各々のアプリケーションは、ローカルデバイス上で実行されてもよく、またはリモートに位置するデバイス（例えば、リモートの）上で実行されてもよい。
【００３８】
コンピュータデバイス３０１は、仮想化環境における仮想化サーバ、例えば、シングルサーバ、マルチサーバ、またはクラウドコンピューティング環境として構成されてもよい。図３に示される仮想化サーバ３０１は、図２に示されるサーバ２０６の１つ以上の実施形態によって、または他の既知のコンピューティングデバイスによって展開及び／または実装されてもよい。仮想化サーバ３０１に含まれるのは、１つ以上の物理ディスク３０４、１つ以上の物理デバイス３０６、１つ以上の物理プロセッサ３０８、及び１つ以上の物理メモリ３１６を含むことができるハードウェアレイヤである。いくつかの実施形態では、ファームウェア３１２は、物理メモリ３１６におけるメモリ素子内に記憶されてもよく、物理プロセッサ３０８のうちの１つ以上によって実行されてもよい。仮想化サーバ３０１は更に、物理メモリ３１６におけるメモリ素子に記憶することができ、物理プロセッサ３０８のうちの１つ以上によって実行することができるオペレーティングシステム３１４を含んでもよい。また更に、ハイパーバイザ３０２は、物理メモリ３１６におけるメモリ素子に記憶されてもよく、物理プロセッサ３０８のうちの１つ以上によって実行されてもよい。
【００３９】
物理プロセッサ３０８のうちの１つ以上の上で実行するのは、１つ以上の仮想マシン３３２Ａ〜Ｃ（全体的に３３２）であってもよい。各々の仮想マシン３３２は、仮想ディスク３２６Ａ〜Ｃ及び仮想プロセッサ３２８Ａ〜Ｃを有してもよい。いくつかの実施形態では、第１の仮想マシン３３２Ａは、仮想プロセッサ３２８Ａを使用して、ツールスタック３２４を含む制御プログラム３２０を実行してもよい。制御プログラム３２０は、制御仮想マシン、Ｄｏｍ０、Ｄｏｍａｉｎ０、またはシステム管理及び／または制御のために使用される他の仮想マシンと称されてもよい。いくつかの実施形態では、１つ以上の仮想マシン３３２Ｂ〜Ｃは、仮想プロセッサ３２８Ｂ〜Ｃを使用して、ゲストオペレーティングシステム３３０Ａ〜Ｂを実行してもよい。
【００４０】
仮想化サーバ３０１は、仮想化サーバ３０１と通信するハードウェアの１つ以上の部分を有するハードウェアレイヤ３１０を含んでもよい。いくつかの実施形態では、ハードウェアレイヤ３１０は、１つ以上の物理ディスク３０４、１つ以上の物理デバイス３０６、１つ以上の物理プロセッサ３０８、及び１つ以上の物理メモリ３１６を含んでもよい。物理構成要素３０４、３０６、３０８、及び３１６は、例えば、上記説明された構成要素のいずれかを含んでもよい。物理デバイス３０６は、例えば、ネットワークインタフェースカード、ビデオカード、キーボード、マウス、入力デバイス、モニタ、表示デバイス、スピーカ、光学ドライブ、記憶装置、ユニバーサルシリアルバス接続、プリンタ、スキャナ、ネットワーク要素（例えば、ルータ、ファイアウォール、ネットワークアドレス変換器、負荷分散装置、仮想プライベートネットワーク（ＶＰＮ）ゲートウェイ、動的ホスト構成プロトコル（ＤＨＣＰ）ルータなど）、または仮想化サーバ３０１に接続され、もしくは仮想化サーバ３０１と通信する任意のデバイスを含んでもよい。ハードウェアレイヤ３１０における物理メモリ３１６は、任意のタイプのメモリを含んでもよい。物理メモリ３１６は、データを記憶してもよく、いくつかの実施形態では、１つ以上のプログラム、または実行可能命令のセットを記憶してもよい。図３は、ファームウェア３１２が仮想化サーバ３０１の物理メモリ３１６内に記憶される実施形態を示す。物理メモリ３１６に記憶されたプログラムまたは実行可能命令は、仮想化サーバ３０１の１つ以上のプロセッサ３０８によって実行されてもよい。
【００４１】
仮想化サーバ３０１も、ハイパーバイザ３０２を含んでもよい。いくつかの実施形態では、ハイパーバイザ３０２は、任意の数の仮想マシン３３２を作成及び管理するよう、仮想化サーバ３０１上でプロセッサ３０８によって実行されるプログラムであってもよい。ハイパーバイザ３０２は、仮想マシンモニタ、またはプラットフォーム仮想化ソフトウェアと称されてもよい。いくつかの実施形態では、ハイパーバイザ３０２は、実行可能命令、及びコンピューティングマシン上で実行する仮想マシンを監視するハードウェアのいずれかの組み合わせであってもよい。ハイパーバイザ３０２は、仮想化サーバ３０１上で実行するオペレーティングシステム３１４内でハイパーバイザが実行する、タイプ２のハイパーバイザであってもよい。仮想マシンは次いで、ハイパーバイザよりも上のレベルで実行してもよい。いくつかの実施形態では、タイプ２のハイパーバイザは、タイプ２のハイパーバイザがユーザのオペレーティングシステムと相互作用するように、ユーザのオペレーティングシステムのコンテキスト内で実行してもよい。他の実施形態では、仮想化環境における１つ以上の仮想化サーバ３０１は代わりに、タイプ１のハイパーバイザ（図示せず）を含んでもよい。タイプ１のハイパーバイザは、ハードウェアレイヤ３１０内のハードウェア及びリソースに直接アクセスすることによって、仮想化サーバ３０１上で実行してもよい。すなわち、図示されるように、タイプ２のハイパーバイザ３０２がホストオペレーティングシステム３１４を通じてシステムリソースにアクセスすると共に、タイプ１のハイパーバイザは、ホストオペレーティングシステム３１４なしに全てのシステムリソースに直接アクセスすることができる。タイプ１のハイパーバイザは、仮想化サーバ３０１の１つ以上の物理プロセッサ３０８上で直接実行してもよく、物理メモリ３１６に記憶されたプログラムデータを含んでもよい。
【００４２】
ハイパーバイザ３０２は、いくつかの実施形態では、システムリソースへの直接アクセスを有するオペレーティングシステム３３０または制御プログラム３２０をシミュレートするいずれかの方式において、仮想マシン３３２上で実行するオペレーティングシステム３３０または制御プログラム３２０に仮想リソースを提供することができる。システムリソースは、それらに限定されないが、物理デバイス３０６、物理ディスク３０４、物理プロセッサ３０８、物理メモリ３１６、及び仮想化サーバ３０１のハードウェアレイヤ３１０に含まれるいずれかの他の構成要素を含んでもよい。ハイパーバイザ３０２は、仮想ハードウェアをエミュレートし、物理ハードウェアを区画化し、物理ハードウェアを仮想化し、及び／またはコンピューティング環境へのアクセスを提供する仮想マシンを実行するために使用されてもよい。更なる他の実施形態では、ハイパーバイザ３０２は、仮想化サーバ３０１上で実行する仮想マシン３３２に対してプロセッサスケジューリング及びメモリ区画化を制御してもよい。ハイパーバイザ３０２は、ＶＭＷａｒｅ，Ｉｎｃ．，ｏｆ  Ｐａｌｏ  Ａｌｔｏ，Ｃａｌｉｆｏｒｎｉａによって製造されたハイパーバイザ、ＸＥＮＰＲＯＪＥＣＴハイパーバイザ、その開発者がオープンソースＸｅｎＰｒｏｊｅｃｔ．ｏｒｇコミュニティによって監督されるオープンソース製品、Ｍｉｃｒｏｓｏｆｔによって提供されるＨｙｐｅｒＶ、ＶｉｒｔｕａｌＳｅｒｖｅｒ、もしくは仮想ＰＣハイパーバイザ、またはその他を含んでもよい。いくつかの実施形態では、仮想化サーバ３０１は、ゲストオペレーティングシステムが実行することができる仮想マシンプラットフォームを作成するハイパーバイザ３０２を実行してもよい。それらの実施形態では、仮想化サーバ３０１は、ホストサーバと称されてもよい。そのような仮想化サーバの例は、Ｃｉｔｒｉｘ  Ｓｙｓｔｅｍｓ，Ｉｎｃ．，ｏｆ  Ｆｏｒｔ  Ｌａｕｄｅｒｄａｌｅ，ＦＬによって提供されるＸＥＮＳＥＲＶＥＲである。
【００４３】
ハイパーバイザ３０２は、ゲストオペレーティングシステム３３０が実行する１つ以上の仮想マシン３３２Ｂ〜Ｃ（全体的に、３３２）を作成してもよい。いくつかの実施形態では、ハイパーバイザ３０２は、仮想マシン３３２を作成するよう仮想マシンイメージをロードしてもよい。他の実施形態では、ハイパーバイザ３０２は、仮想マシン３３２内でゲストオペレーティングシステム３３０を実行してもよい。更なる他の実施形態では、仮想マシン３３２は、ゲストオペレーティングシステム３３０を実行してもよい。
【００４４】
仮想マシン３３２を作成することに加えて、ハイパーバイザ３０２は、少なくとも１つの仮想マシン３３２の実行を制御してもよい。他の実施形態では、ハイパーバイザ３０２は、少なくとも１つの仮想マシン３３２に、仮想化サーバ３０１によって提供される少なくとも１つのハードウェアリソースの抽出（例えば、ハードウェアレイヤ３１０内で利用可能ないずれかのハードウェアリソース）を提示してもよい。他の実施形態では、ハイパーバイザ３０２は、仮想化サーバ３０１において利用可能な物理プロセッサ３０８に仮想マシン３３２がアクセスする方式を制御してもよい。物理プロセッサ３０８へのアクセスを制御することが、仮想マシン３３２がプロセッサ３０８へのアクセスを有するべきかどうか、及び物理プロセッサ能力が仮想マシン３３２にどのように提示されるかを判定することを含んでもよい。
【００４５】
図３に示されるように、仮想化サーバ３０１は、１つ以上の仮想マシン３３２をホストまたは実行してもよい。仮想マシン３３２は、プロセッサ３０８によって実行されるとき、仮想マシン３３２が物理コンピューティングデバイスのように、プログラム及びプロセスを実行することができるように、物理コンピュータの動作を模倣することができる実行可能命令のセットである。図３は、仮想化サーバ３０１が３つの仮想マシン３３２をホストする実施形態を示し、他の実施形態では、仮想化サーバ３０１は、任意の数の仮想マシン３３２をホストしてもよい。ハイパーバイザ３０２は、いくつかの実施形態では、各仮想マシン３３２に、その仮想マシン３３２に対して利用可能な物理ハードウェア、メモリ、プロセッサ、及び他のシステムリソースの一意の仮想ビューを提供することができる。いくつかの実施形態では、一意の仮想ビューは、仮想マシンパーミッション、１つ以上の仮想マシン識別子へのポリシエンジンの適用、仮想マシンにアクセスするユーザ、仮想マシン上で実行するアプリケーション、仮想マシンによってアクセスされるネットワーク、または任意の他の所望の基準のうちの１つ以上に基づいてもよい。例えば、ハイパーバイザ３０２は、１つ以上の安全でない仮想マシン３３２及び１つ以上の安全な仮想マシン３３２を作成してもよい。安全でない仮想マシン３３２は、安全な仮想マシン３３２がアクセスすることが許可され得るリソース、ハードウェア、メモリ位置、及びプログラムにアクセスすることが防止されることがある。他の実施形態では、ハイパーバイザ３０２は、各仮想マシン３３２に、仮想マシン３３２に対して利用可能な物理ハードウェア、メモリ、プロセッサ、及び他のシステムリソースの実質的に同様の仮想ビューを提供することができる。
【００４６】
各々の仮想マシン３３２は、仮想ディスク３２６Ａ〜Ｃ（全体的に、３２６）及び仮想プロセッサ３２８Ａ〜Ｃ（全体的に、３２８）を含んでもよい。仮想ディスク３２６は、いくつかの実施形態では、仮想化サーバ３０１の１つ以上の物理ディスク３０４の仮想化ビュー、または仮想化サーバ３０１の１つ以上の物理ディスク３０４の一部である。物理ディスク３０４の仮想化ビューは、ハイパーバイザ３０２によって生成、提供、及び管理されてもよい。いくつかの実施形態では、ハイパーバイザ３０２は、各仮想マシン３３２に、物理ディスク３０４の一意のビューを提供する。よって、それらの実施形態では、各仮想マシン３３２に含まれる特定の仮想ディスク３２６は、他の仮想ディスク３２６と比較されるときに一意であることができる。
【００４７】
仮想プロセッサ３２８は、仮想化サーバ３０１の１つ以上の物理プロセッサ３０８の仮想化ビューであってもよい。いくつかの実施形態では、物理プロセッサ３０８の仮想化ビューは、ハイパーバイザ３０２によって生成、提供、及び管理されてもよい。いくつかの実施形態では、仮想プロセッサ３２８は、少なくとも１つの物理プロセッサ３０８の同一の特性を実質的に全て有する。他の実施形態では、仮想プロセッサ３０８は、仮想プロセッサ３２８の特性の少なくともいくつかが対応する物理プロセッサ３０８の特性とは異なるように、物理プロセッサ３０８の修正ビューを提供する。
【００４８】
図４を更に参照して、本明細書で説明されるいくつかの態様は、クラウドベース環境において実装されてもよい。図４は、クラウドコンピューティング環境（または、クラウドシステム）４００の実施例を示す。図４において分かるように、クライアントコンピュータ４１１〜４１４は、クラウドシステムのコンピューティングリソース（例えば、ホストサーバ４０３ａ〜４０３ｂ（全体的に、本明細書で「ホストサーバ４０３」と称される）、記憶リソース４０４ａ〜４０４ｂ（全体的に、本明細書で「記憶リソース４０４」と称される）、及びネットワークリソース４０５ａ〜４０５ｂ（全体的に、本明細書で「ネットワークリソース４０５」と称される））にアクセスするよう、クラウド管理サーバ４１０と通信してもよい。
【００４９】
管理サーバ４１０は、１つ以上の物理サーバ上で実装されてもよい。管理サーバ４１０は、例えば、とりわけ、Ｃｉｔｒｉｘ  Ｓｙｓｔｅｍｓ，Ｉｎｃ．ｏｆ  Ｆｔ．Ｌａｕｄｅｒｄａｌｅ，ＦＬによるＣＬＯＵＤＰＬＡＴＦＯＲＭ、またはＯＰＥＮＳＴＡＣＫを稼働させてもよい。管理サーバ４１０は、クラウドハードウェア及びソフトウェアリソース、例えば、ホストコンピュータ４０３、データ記憶装置４０４、及びネットワーキングデバイス４０５を含む、様々なコンピューティングリソースを管理してもよい。クラウドハードウェア及びソフトウェアリソースは、プライベート構成要素及び／またはパブリック構成要素を含んでもよい。例えば、クラウドは、１つ以上の特定の顧客もしくはクライアントコンピュータ４１１〜４１４によって、及び／またはプライベートネットワークを通じて使用されることになるプライベートクラウドとして構成されてもよい。他の実施形態では、パブリッククラウドまたはハイブリッドパブリック−プライベートクラウドは、オープンネットワークまたはハイブリッドネットワークを通じて他の顧客によって使用されてもよい。
【００５０】
管理サーバ４１０は、ユーザインタフェースを提供するように構成されてもよく、ユーザインタフェースを通じて、クラウドオペレータ及びクラウド顧客は、クラウドシステム４００と相互作用することができる。例えば、管理サーバ４１０は、アプリケーションプログラミングインタフェース（ＡＰＩ）のセット及び／または１つ以上のクラウドオペレータコンソールアプリケーション（例えば、ウェブベースもしくはスタンドアロンアプリケーション）に、クラウドオペレータがクラウドリソースを管理し、仮想化レイヤを構成し、顧客アカウントを管理し、及び他のクラウド管理タスクを実行することを可能にするユーザインタフェースを提供することができる。管理サーバ４１０はまた、クライアントコンピュータ４１１〜４１４を介してエンドユーザからクラウドコンピューティング要求、例えば、クラウド内で仮想マシンを作成、修正、または破壊する要求を受信するように構成されたユーザインタフェースを有するＡＰＩのセット及び／または１つ以上の顧客コンソールアプリケーションを含んでもよい。クライアントコンピュータ４１１〜４１４は、インターネットまたはいくつかの他の通信ネットワークを介して管理サーバ４１０に接続してもよく、管理サーバ４１０によって管理されるコンピューティングリソースのうちの１つ以上にアクセスすることを要求してもよい。クライアント要求に応答して、管理サーバ４１０は、クライアント要求に基づいて、クラウドシステムのハードウェアレイヤにおいて物理リソースを選択及びプロビジョニングするように構成されたリソースマネージャを含んでもよい。例えば、クラウドシステムの管理サーバ４１０及び追加の構成要素は、クライアントコンピュータ４１１〜４１４において、ネットワーク（例えば、インターネット）を通じて、顧客に対し、仮想マシン及びそれらの動作環境（例えば、ハイパーバイザ、記憶リソース、ネットワーク要素によって供給されるサービスなど）をプロビジョニング、作成、及び管理するように構成されてもよく、計算リソース、データ記憶サービス、ネットワーキング能力、並びにコンピュータプラットフォーム及びアプリケーションサポートを顧客に提供する。クラウドシステムはまた、セキュリティシステム、開発環境、及びユーザインタフェースなどを含む、様々な特定のサービスを提供するように構成されてもよい。
【００５１】
特定のクライアント４１１〜４１４、例えば、同一のエンドユーザに代わって仮想マシンを作成する異なるクライアントコンピュータ、または同一の会社もしくは組織と提携した異なるユーザが関連してもよい。他の実施例では、異なる会社または組織と提携したユーザなど、特定のクライアント４１１〜４１４が関連しなくてもよい。関連しないクライアントに対し、仮想マシンに関する情報またはいずれかの１人のユーザの記憶が他のユーザから隠されてもよい。
【００５２】
ここで、クラウドコンピューティング環境の物理ハードウェアレイヤを参照して、可用性ゾーン４０１〜４０２（または、ゾーン）は、物理コンピューティングリソースの併置されたセットを指してもよい。ゾーンは、コンピューティングリソースの全体的なクラウドにおいて他のゾーンから地理的に分離されてもよい。例えば、ゾーン４０１は、Ｃａｌｉｆｏｒｎｉａに位置する第１のクラウドデータセンタであってもよく、ゾーン４０２は、Ｆｌｏｒｉｄａに位置する第２のクラウドデータセンタであってもよい。管理サーバ４１０は、可用性ゾーンの１つに位置してもよく、または別個の位置に位置してもよい。各ゾーンは、ゲートウェイを通じて、管理サーバ４１０など、ゾーンの外側にあるデバイスとインタフェースする内部ネットワークを含んでもよい。クラウドのエンドユーザ（例えば、クライアント４１１〜４１４）は、ゾーンの間の区別を認識してもよく、または認識しなくてもよい。例えば、エンドユーザは、指定された量のメモリ、処理パワー、及びネットワーク能力を有する仮想マシンの生成を要求してもよい。管理サーバ４１０は、ユーザの要求に応答してもよく、ゾーン４０１またはゾーン４０２からのリソースを使用して仮想マシンが作成されたかどうかをユーザが知ることなく、仮想マシンを作成するようリソースを割り当ててもよい。他の実施例では、クラウドシステムは、その仮想マシン（または、他のクラウドリソース）が特定のゾーンにおいて、またはゾーン内の特定のリソース４０３〜４０５に対して割り当てられることをエンドユーザが要求することを許可することができる。
【００５３】
この実施例では、各ゾーン４０１〜４０２は、様々な物理ハードウェア構成要素（または、コンピューティングリソース）４０３〜４０５の配置、例えば、物理ホスティングリソース（または、処理リソース）、物理ネットワークリソース、物理記憶リソース、スイッチ、及びクラウドコンピューティングサービスを顧客に提供するために使用することができる追加のハードウェアリソースを含んでもよい。クラウドゾーン４０１〜４０２における物理ホスティングリソースは、仮想マシンインスタンスを作成及びホストするように構成されてもよい、上記説明された仮想化サーバ３０１など、１つ以上のコンピュータサーバ４０３を含んでもよい。クラウドゾーン４０１または４０２における物理ネットワークリソースは、ファイアウォール、ネットワークアドレス変換器、負荷分散装置、仮想プライベートネットワーク（ＶＰＮ）ゲートウェイ、及び動的ホスト構成プロトコル（ＤＨＣＰ）ルータなど、クラウド顧客にネットワークサービスを提供するように構成されたハードウェア及び／またはソフトウェアを含む、１つ以上のネットワーク要素４０５（例えば、ネットワークサービスプロバイダ）を含んでもよい。クラウドゾーン４０１〜４０２における記憶リソースは、記憶ディスク（例えば、ソリッドステートドライブ（ＳＳＤ）、磁気ハードディスクなど）及び他の記憶装置を含んでもよい。
【００５４】
図４に示される実施例のクラウドコンピューティング環境はまた、仮想マシンを作成及び管理し、クラウドにおいて物理リソースを使用して顧客に他のサービスを提供するように構成された追加のハードウェア及び／またはソフトウェアリソースを有する仮想化レイヤ（例えば、図１〜３に示されるような）を含んでもよい。仮想化レイヤは、ネットワーク仮想化、記憶仮想化などを提供するよう、他の構成要素と共に、図３において上記説明されたハイパーバイザを含んでもよい。仮想化レイヤは、物理リソースレイヤとは別個のレイヤであってもよく、または同一のハードウェアリソース及び／もしくはソフトウェアリソースのいくつかもしくは全てを物理リソースレイヤと共有してもよい。例えば、仮想化レイヤは、物理コンピューティングリソースと共に仮想化サーバ４０３の各々にインストールされたハイパーバイザを含んでもよい。代替的に、既知のクラウドシステム、例えば、Ｗｉｎｄｏｗｓ（登録商標）  ＡＺＵＲＥ（Ｍｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎ  ｏｆ  Ｒｅｄｍｏｎｄ  Ｗａｓｈｉｎｇｔｏｎ）、ＡＭＡＺＯＮ  ＥＣ２（Ａｍａｚｏｎ．ｃｏｍ  Ｉｎｃ．ｏｆ  Ｓｅａｔｔｌｅ，Ｗａｓｈｉｎｇｔｏｎ）、ＩＢＭ  ＢＬＵＥ  ＣＬＯＵＤ（ＩＢＭ  Ｃｏｒｐｏｒａｔｉｏｎ  ｏｆ  Ａｒｍｏｎｋ，Ｎｅｗ  Ｙｏｒｋ）、またはその他が使用されてもよい。
【００５５】
クラウドサービスに対するデータキャッシング
図５は、クラウドシステムにおいてデータをキャッシュする実施例のシステムを示す概略図である。システムは、１つ以上のリモートコンピューティングデバイス（例えば、リモートコンピューティングデバイス５０１Ａ、５０１Ｂ）、クラウドサービス５０３、及び内部クラウド５０５を含んでもよい。リモートコンピューティングデバイス５０１Ａ、５０１Ｂ、クラウドサービス５０３、及び内部クラウド５０５は、ネットワーク（例えば、ワイドエリアネットワーク１０１、コンピュータネットワーク２３０、インターネット、または他のネットワーク）を介して相互に通信してもよい。
【００５６】
リモートコンピューティングデバイス５０１Ａ、５０１Ｂは、例えば、クライアントコンピュータ１０７、１０９、クライアントデバイス２４０、クライアントコンピュータ４１１〜４１４、または他のコンピューティングデバイスを含んでもよい。クライアントエージェント５０７は、リモートコンピューティングデバイス５０１Ａ上で実装されてもよい。ユーザエージェント５０９は、リモートコンピューティングデバイス５０１Ｂ上で実装されてもよい。
【００５７】
クラウドサービス５０３は、例えば、データサーバ１０３、ウェブサーバ１０５、サーバ２０６、仮想化サーバ３０１、ゾーン４０１〜４０２、または他のコンピューティングデバイス上で実装されるプロセスを含んでもよい。クラウドサービス５０３は、例えば、公用のためにオープンであるパブリッククラウドであってもよい。クラウドサービス５０３は、構成サービス５１３、リフレッシュサービス５１５、リソースマネージャ５１７（１つ以上のリソース５１９Ａ〜Ｎを含む）、及び共有キャッシュ５２１を含んでもよい。
【００５８】
クラウドサービス５０３の構成要素は、１つのサーバまたは複数のサーバ上で実装されてもよい。例えば、構成要素は、中央データセンタにおけるサーバまたはサーバクラスタ上で実装されてもよい。追加的または代替的に、構成要素は、異なる地理的領域に位置する異なるサーバ上で実装されてもよい。追加的または代替的に、構成サービス５１３は、１つの地理的領域に位置する中央データセンタにおけるサーバ上で実装されてもよく、リソースマネージャ５１７（リソース５１９Ａ〜Ｎを含む）は、異なる地理的領域に位置する複数のデータセンタにおいて実装されてもよい。リフレッシュサービス５１５及び共有キャッシュ５２１は、リソースマネージャ５１７の各インスタンスにより近い、異なる地理的領域の各々において実装されてもよい。
【００５９】
内部クラウド５０５は、例えば、データサーバ１０３、ウェブサーバ１０５、サーバ２０６、仮想化サーバ３０１、ゾーン４０１〜４０２、または他のコンピューティングデバイス上で稼働するプロセスを含んでもよい。内部クラウド５０５は、例えば、１つ以上の組織に対して動作するプライベートクラウドであってもよい。内部クラウド５０５は、例えば、エンドユーザにより近い、組織の施設に位置してもよい。
【００６０】
内部クラウド５０５は、クラウドコネクタ５２３及び内部リソース５２５を含んでもよい。クラウドコネクタ５２３は、クラウドサービス５０３と内部リソース５２５との間の通信を可能にすることができる。内部リソース５２５は、例えば、ドキュメント、ファイル、アプリケーション、デスクトップ、データ（例えば、プライベートデータ）などを含んでもよい。リソース５１９Ａ〜Ｎなどを介したクラウドサービス５０３は、クラウドコネクタ５２３を通じて内部リソース５２５にアクセスすることができる。
【００６１】
システムは、個々のユーザにサービスとしてリソース５１９Ａ〜Ｎのうちの１つ以上を提供することができる。個々のユーザは、例えば、自然人または法人であってもよい。追加的または代替的に、システムは、ユーザグループにサービスとしてリソース５１９Ａ〜Ｎを提供することができる。ユーザグループは、多数のユーザを含んでもよい。ユーザグループは、例えば、組織（例えば、ビジネス組織、政府組織など）、または組織の一部であってもよい。ユーザグループは、例えば、クラウドサービス５０３の顧客であってもよい。
【００６２】
ユーザグループは、リソース５１９Ａ〜Ｎからのいくつかのリソースを制御、使用、または管理してもよい。ユーザグループ（または、ユーザグループと関連付けられた他の人間もしくはエンティティ）のアドミニストレータは、ユーザグループのリソースを管理してもよい。例えば、アドミニストレータは、ユーザグループにおけるユーザがユーザグループのリソースにアクセスすることを承認してもよい。アドミニストレータは、ユーザグループのリソースのリソースをユーザと関連付けてもよい（例えば、ユーザ名及びパスワードを入力することによって、ユーザがリソースにアクセスすることを許可する）。
【００６３】
アドミニストレータは、クライアントエージェント５０７を通じてユーザグループのリソースを管理してもよい。クライアントエージェント５０７は、例えば、ウェブブラウザ、モバイルアプリケーション、シンクライアント、端末エミュレータなどを含んでもよい。クライアントエージェント５０７は、クラウドサービス５０３と通信してもよい。クライアントエージェント５０７は、ユーザインタフェースを提供することができる。ユーザインタフェースを通じて、アドミニストレータは、ユーザグループのリソースを管理することができる。例えば、アドミニストレータは、ユーザグループのリソースの稼働状態を監視してもよい（例えば、ＲＡＭ使用率、ディスクドライブ使用率などを監視する）。
【００６４】
リソース５１９Ａ〜Ｎは、例えば、仮想マシン（例えば、仮想マシン３３２）、サーバ（例えば、ホストサーバ４０３）、記憶装置（例えば、記憶リソース４０４）、ネットワーク（例えば、ネットワークリソース４０５）、データベース、ウェブサーバ、電子メール、仮想デスクトップ、ゲーム、アプリケーション、または他のリソースを含んでもよい。
【００６５】
ユーザは、ユーザエージェント５０９を通じてリソース５１９Ａ〜Ｎのリソースにアクセスしてもよい。ユーザエージェント５０９は、例えば、ウェブブラウザ、モバイルアプリケーション、シンクライアント、端末エミュレータなどを含んでもよい。ユーザエージェント５０９は、リソース５１９Ａ〜Ｎのうちの１つ以上にアクセスするために使用されてもよい。ユーザエージェント５０９は、ユーザインタフェースを提供することができる。ユーザインタフェースを通じて、ユーザは、リソースを使用することができる（例えば、リソースへのコマンドを発行する）。例えば、ユーザは、仮想マシンを開始してもよく、アプリケーションを起動してもよく、またはユーザインタフェースを通じて電子メールを送信してもよい。
【００６６】
リソースマネージャ５１７は、例えば、ハイパーバイザ（例えば、ハイパーバイザ３０２）、ＳｔｏｒｅＦｒｏｎｔ  ａｓ  ａ  Ｓｅｒｖｉｃｅ（ＳＦａａＳ）、またはリソース５１９Ａ〜Ｎを制御することができる他のプロセスを含んでもよい。リソースマネージャ５１７は、リソースに対する構成データに従って、リソースにハードウェア、ソフトウェア、ネットワーク、または周辺デバイスを割り当ててもよい。リソースマネージャ５１７は、それらのそれぞれの同一または異なる構成データに従って、リソース５１９Ａ〜Ｎが同一または異なるように構成してもよい。追加的または代替的に、リソースマネージャ５１７は、サーバのクラスタによって提供されるワークスペースストア（例えば、ユーザがリソース５１９Ａ〜Ｎにアクセスするためのインタフェースを提供することができる企業アプリケーションストア）を含んでもよい。サーバのクラスタは、負荷分散装置の後ろにあってもよい。負荷分散装置は、ユーザエージェント５０９から、リソース５１９Ａ〜Ｎのリソースにアクセスする要求を受信してもよい。負荷分散アルゴリズムに基づいて、負荷分散装置は、サーバのクラスタのサーバへの要求を経路指定してもよい。サーバのクラスタのサーバは、要求を受信してもよく、リソースを構成することを開始してもよい（例えば、リソースに対する構成データに従って）。リソース５１９Ａ〜Ｎにアクセスする異なる要求は、負荷分散アルゴリズムに基づいて、サーバのクラスタの異なるサーバに経路指定されてもよい。
【００６７】
構成データは、例えば、リソースの構成を指定する情報を含んでもよい。例えば、仮想マシンに対する構成データは、仮想マシンのゲストオペレーティングシステムタイプ及びバージョン、中央処理装置（ＣＰＵ）能力、ランダムアクセスメモリ（ＲＡＭ）サイズ、ディスクドライブ、ネットワークアダプタ情報、または他の設定を含んでもよい。追加的または代替的に、構成データは、ユーザと関連付けられたリソースまたはユーザと関連付けられたユーザエージェントが内部リソース５２５または他のクラウドリソースの全てまたは一部にアクセスすることを許可されるかどうかを指定してもよい。構成データは、リソースまたはユーザエージェントが内部リソース５２５または他のクラウドリソースにアクセスすることができる方式（例えば、安全なまたは安全でない接続、接続帯域幅、通信プロトコルなど）を指定してもよい。追加的または代替的に、構成データは、ユーザエージェント５０９によって提供されるユーザインタフェースの設計（例えば、色、シンボル、入力制御、ナビゲーションコンポーネント、情報コンポーネントなど）を指定してもよい。構成データは、他のタイプのデータ（例えば、リソースに対してまたはリソースによって使用されるデータ）であってもよい。
【００６８】
リソース５１９Ａ〜Ｎに対する構成データは、構成サービス５１３に記憶されてもよい。例えば、構成サービス５１３は、リソース５１９Ａ〜Ｎに対する構成データを記憶したデータベースを維持してもよい。ユーザグループのアドミニストレータは、データベースに記憶された構成データを修正してもよい（例えば、構成サービス５１３に接続されたクライアントエージェント５０７を通じて）。データベースは、いずれかのタイプのデータベースシステム（例えば、ＯＲＡＣＬＥ  Ｄａｔａｂａｓｅ、ＭｙＳＱＬ、ＭＩＣＲＯＳＯＦＴ  ＳＱＬ  Ｓｅｒｖｅｒ、ＩＢＭ  ＤＢ２など）を含んでもよい。以下は、構成データを記憶した実施例のデータベーステーブルを示す（表１）。
【００６９】
【表１】
2021517695.tif 000003
【００７０】
表では、ユーザグループは、グループ識別子（例えば、ＧｒｏｕｐＡ、ＧｒｏｕｐＢ、ＧｒｏｕｐＣなど）によって識別されてもよい。各ユーザグループは、対応する構成データを有してもよい。ユーザグループに対する構成データは、ユーザグループのリソースを構成するために使用されてもよい。例えば、ユーザグループＧｒｏｕｐＡのリソースは、構成データ「ＲＡＭサイズ  ２ＧＢ、ディスク  １０ＧＢ、ゲストオペレーティングシステム  Ｗｉｎｄｏｗｓ（登録商標）」に従って構成されてもよい。
【００７１】
ユーザグループは、いくつかのサブグループに分割されてもよく、各々のサブグループは、別のサブグループに対する構成データと同一または異なってもよい、それ自体の構成データを有してもよい。サブグループに対する構成データは、サブグループと関連付けられたリソースを構成するために使用されてもよい。追加的または代替的に、ユーザグループのリソースの各リソースは、それ自体の特定の構成データを有してもよい。データベースは、リソース識別子及び対応する構成データのレコードを記憶してもよい。リソース識別子は、特定のリソースを識別することができる。対応する構成データは、その特定のリソースを構成するために使用されてもよい。
【００７２】
構成サービス５１３に記憶された構成データは、リソース５１９Ａ〜Ｎに対してまたはリソース５１９Ａ〜Ｎによって使用されてもよい。例えば、ユーザがリソースにアクセスすることを要求するとき、リソースマネージャ５１７は、構成サービス５１３に、リソースに対する構成データを取得する要求を送信してもよい。要求は、ユーザのグループ識別子を含んでもよい。構成サービス５１３は、グループ識別子に対応する構成データを識別するよう、構成データデータベースを検索してもよい。構成サービス５１３は、リソースマネージャ５１７に構成データを送信してもよい。リソースマネージャ５１７は、受信された構成データに従ってリソースを構成してもよい。
【００７３】
構成サービス５１３に記憶された構成データを取得する要求の数が多くなるとき（例えば、何百万の要求）、構成サービス５１３に対する拡張性の課題が存在することがある。例えば、構成サービス５１３は、構成データを取得する多数の要求を処理するように経済的に構成されることが可能でないことがある。
【００７４】
リソース５１９Ａ〜Ｎに構成データを記憶することは、構成サービス５１３に対する拡張性の課題を軽減することを支援することができる。例えば、リソースは、リソースマネージャ５１７によって記憶装置を割り当てられてもよい。記憶装置は、リソースに対してローカルであってもよい。記憶装置は、例えば、キャッシュ、メモリ、ディスク、仮想記憶装置、または他のタイプの記憶装置であってもよい。リソースに対する構成データは、リソースのローカル記憶装置に記憶されてもよく、リソースを構成するよう、リソースマネージャ５１７によって読み出され及び使用されてもよい。
【００７５】
リソースマネージャ５１７が、リソース５１９Ａ〜Ｎに記憶された構成データを最新にするよう構成サービス５１３に定期的にクエリせず、リソース５１９Ａ〜Ｎに記憶された構成データを定期的に更新しない場合、そこに記憶された構成データは、期限を経過することになることがあり、またはリソース５１９Ａ〜Ｎの中で不一致になることがある。例えば、リソースに記憶された構成データは、リソースが最初にセットアップされたときに構成サービス５１３から複製されることがある。後のあるときに、構成データは、リソースを構成するために再度必要とされることがある。しばらくの間、アドミニストレータは、リソースに対する構成データを変更することがあり、その変更は、構成サービス５１３に記憶された構成データに対して行われることがある。リソースマネージャ５１７が構成サービス５１３をクエリしない場合（例えば、定期的に）、リソースに記憶された構成データは、構成サービス５１３に記憶された最新の構成データとは異なるようになることがある。
【００７６】
共有キャッシュ５２１は、構成サービス５１３に対する拡張性の課題を軽減することを支援することができ、リソースに記憶された構成データを最新に維持することを支援することができる。共有キャッシュ５２１は、例えば、クラウドデータベース、または高可用性データベースを含んでもよい。例えば、共有キャッシュ５２１は、データ記憶のために、ディスク記憶装置とは反対に、メインメモリ（例えば、ＲＡＭ）に主に依存するメモリ内データベースを含んでもよい。追加的または代替的に、共有キャッシュ５２１は、ＲＥＤＩＳデータベースであってもよい。
【００７７】
リソース５１９Ａ〜Ｎに対する構成データは、共有キャッシュ５２１に記憶されてもよい。例えば、ユーザがリソースにアクセスすることを要求するとき、リソースマネージャ５１７は、共有キャッシュ５２１に記憶された構成データを取得する要求を共有キャッシュ５２１に送信してもよい。共有キャッシュ５２１は、構成サービス５１３におけるデータベーステーブルと同様に、データベーステーブルを維持してもよい。例えば、共有キャッシュ５２１におけるデータベーステーブルは、グループ識別子及び対応する構成データのデータレコードを含んでもよい。共有キャッシュ５２１は、対応する構成データを検索するキーとしてグループ識別子を使用してもよい。追加的または代替的に、データレコードは、サブグループ識別子及び対応する構成データを含んでもよい。共有キャッシュ５２１は、サブグループ識別子を検索することに基づいて、構成データを識別してもよい。追加的または代替的に、データレコードは、リソース識別子及び対応する構成データを含んでもよい。共有キャッシュ５２１は、リソース識別子を検索することに基づいて、構成データを識別してもよい。
【００７８】
共有キャッシュに記憶された構成データは、有効期限（例えば、５分）の後に期限が切れることがある。リフレッシュサービス５１５は、共有キャッシュ５２１に記憶されたデータをより長い期間の間に維持するよう、データの有効期限をリフレッシュしてもよい。リフレッシュサービス５１５は、共有キャッシュ５２１に記憶された構成データを更新してもよい。例えば、リフレッシュサービス５１５は、アドミニストレータが構成データを変更したかどうかを定期的にチェックしてもよく、変更された構成データに従って、共有キャッシュ５２１に記憶された構成データを更新してもよい。追加的または代替的に、アドミニストレータが構成サービス５１３に記憶された構成データを変更するとき、構成サービス５１３は、リフレッシュサービス５１５に変更を通知してもよい。リフレッシュサービス５１５は、通知を受信してもよく、共有キャッシュ５２１に記憶された構成データを更新することを続行してもよい。
【００７９】
共有キャッシュ５２１がメモリ内の、高可用性データベースを含む場合、共有キャッシュ５２１は、他のタイプのキャッシュよりも高価であり、またはより多くのエネルギーを消費することがある。リソース５１９Ａ〜Ｎにアクセスする要求の数または構成データを取得する要求の数が多いときなど、共有キャッシュ５２１を使用することが好ましいことがあるときの時間を判定することが有益となることがある。リフレッシュサービス５１５は、ユーザアクセスイベントの数を示す情報に基づいて、動作モードを判定してもよい。動作モードに基づいて、システムは、構成サービス５１３または共有キャッシュ５２１を、構成データを取得する元として使用するかどうかを判定してもよい。共有キャッシュ５２１を使用してデータをキャッシュする方法は、図６〜８と関連して更に議論される。
【００８０】
データを取得する要求（例えば、リソースマネージャ５１７によって構成サービス５１３または共有キャッシュ５２１に送信される構成データを取得する要求）は、データ自体の代わりに、データ識別子を通信することが伴うことがある。データ識別子は、データを一意に識別することができるが、データよりも少ないファイルサイズを有することがある。これは、ネットワークトラフィックを削減することを支援することができる。２つのデータ識別子と関連付けられたデータの２つのインスタンスが同一であることを２つのデータ識別子の比較が示すとき、実際のデータが送信されないことがある。
【００８１】
図６は、共有キャッシュを使用してデータをキャッシュする実施例の方法を示すフローチャートである。方法は、例えば、図５と関連して議論されるシステムによって実行されてもよい。方法は、構成データに対して以下で、及び図６において議論される。しかしながら、方法は、いずれかのタイプのデータ（例えば、リソースに対して使用され、またはリソースによって使用されるデータ）に適用可能であってもよい。
【００８２】
ステップ６０１では、ユーザエージェント５０９は、リソースマネージャ５１７に、リソース５１９Ａ〜Ｎのリソースにアクセスする要求を送信してもよい。リモートコンピューティングデバイス５０１Ｂのユーザは、ユーザエージェント５０９を介して、リソースにアクセスするコマンドを入力してもよい。例えば、ユーザは、ウェブブラウザに、クラウドサービス５０３を指し示すユニフォームリソースロケータ（ＵＲＬ）を入力してもよく、ウェブブラウザは、いくつかのアイコンを含むウェブページを示してもよい。ユーザは、リモートコンピューティングデバイス５０１Ｂの入力デバイス（例えば、タッチスクリーン、キーボード、マウス、ジェスチャなど）を介して、リソースに対するアイコンを選択してもよい。リモートコンピューティングデバイス５０１Ｂ上で実装されるユーザエージェント５０９は、リソースマネージャ５１７との通信を開始してもよい。
【００８３】
リソースマネージャ５１７は、ユーザエージェント５０９からリソースにアクセスする要求を受信してもよい。リソースマネージャ５１７は、リソースに対する構成データを取得することなど、リソースを構成するプロセスを開始してもよい。ステップ６０３では、リソースマネージャ５１７は、ユーザのグループ識別子を判定してもよい（例えば、リソースにアクセスするユーザの要求に基づいて）。例えば、クラウドサービス５０３にリンクするウェブブラウザにユーザが入力したＵＲＬは、ユーザのグループ識別子を示してもよい（例えば、ＵＲＬ「ｇｒｏｕｐＡ．ｃｌｏｕｄｓｅｒｖｉｃｅ．ｃｏｍ」は、グループ識別子が「ｇｒｏｕｐＡ」であることを示す）。ＵＲＬに含まれるグループ識別子は、リソースにアクセスする要求に含まれてもよい。
【００８４】
追加的または代替的に、リソースマネージャ５１７は、ユーザの識別を判定してもよい（例えば、リソースにアクセスするユーザの要求に基づいて）。例えば、ユーザは、ウェブブラウザに、クラウドサービス５０３にリンクするＵＲＬを入力してもよい。ＵＲＬと関連付けられたウェブページは、ユーザ自身を認証するようユーザのユーザ名及びパスワードを入力することをユーザに促すことができる。ユーザ名及びパスワードは、リソースにアクセスする要求に含まれてもよい。リソースマネージャ５１７は、ユーザ名及びパスワードに基づいて、ユーザの識別を判定してもよい。リソースマネージャ５１７は、ユーザの識別に基づいて、ユーザと関連付けられたリソースを識別してもよい。
【００８５】
ステップ６０３では、リソースマネージャ５１７はまた、リソースに記憶された構成データに対する構成データ識別子を判定してもよい。構成データ識別子は、構成データの２つのインスタンスが同一であるかどうかを判定するために使用されてもよい。リソースマネージャ５１７は、リソースに記憶された構成データを取り出してもよく、取り出された構成データに基づいて、構成データ識別子を生成してもよい。
【００８６】
構成データ識別子は、例えば、構成データの全てまたは一部の連続した組み合わせであってもよい。例えば、構成データがデータフィールド、ＲＡＭサイズ、ディスクサイズ、及びゲストオペレーティングシステムを含み、それらのデータフィールドの値がそれぞれ２ＧＢ、１０ＧＢ、及びＯｐｅｒａｔｉｎｇ_Ｓｙｓｔｅｍ_１である場合、構成データ識別子は、２ＧＢ  １０ＧＢ  Ｏｐｅｒａｔｉｎｇ_Ｓｙｓｔｅｍ_１であってもよい。
【００８７】
追加的または代替的に、構成データ識別子は、フィンガプリンティングアルゴリズムによって生成されてもよい。フィンガプリンティングアルゴリズムは、データの元のセットを一意に識別するより短いビット文字列（例えば、フィンガプリント）にデータの大規模セットをマッピングすることができる。フィンガプリンティングアルゴリズムの入力は、構成データまたはその一部を含んでもよい。フィンガプリンティングアルゴリズムの出力は、構成データ識別子を含んでもよい。
【００８８】
追加的または代替的に、構成データ識別子は、ハッシュ関数によって生成されてもよい（例えば、構成データ識別子を生成するよう構成データをハッシングする）。追加的または代替的に、構成データ識別子は、エンティティタグ（ＥＴａｇ）を含んでもよく、ＥＴａｇ生成アルゴリズム（例えば、衝突耐性ハッシュ関数）によって生成されてもよい。
【００８９】
追加的または代替的に、構成データ識別子は、構成データの最後の修正タイムスタンプに基づいて生成されてもよい。例えば、アドミニストレータが構成サービス５１３において構成データを修正するとき、修正を行った時間（例えば、タイムスタンプ）が記録されてもよい（例えば、構成データと関連して記憶される）。タイムスタンプは、構成データのバージョンを示すことができる。追加的または代替的に、構成データ識別子は、フィンガプリンティングアルゴリズムまたはハッシュ関数を最後の修正タイムスタンプに適用することによって生成されてもよい。
【００９０】
ネットワークを介して構成データ識別子を送信することができるので、構成データ識別子を生成するためにフィンガプリンティングアルゴリズムまたはハッシングアルゴリズムを使用することは、トラフィックを削減すること、及びネットワークの帯域幅を節約することを支援することができる。
【００９１】
ステップ６０５では、リソースマネージャ５１７は、リフレッシュサービス５１５に、アクセスイベントを示すメッセージを送信してもよい。アクセスイベントを示すメッセージは、リフレッシュサービス５１５に、ユーザがリソースにアクセスすることを要求していること、及びリソースに対する構成データが望まれていることを示すことができる。アクセスイベントメッセージは、ユーザのグループ識別子及び／またはメッセージを送信するタイムスタンプを含んでもよい。
【００９２】
ステップ６０７では、リフレッシュサービス５１５は、メッセージを受信してもよく、アクセスイベントを記録してもよい。メッセージは、動作モード（例えば、高負荷動作モードまたは低負荷動作モード）を判定するためにリフレッシュサービス５１５によって使用されてもよい。動作モードは、構成サービス５１３または共有キャッシュ５２１が構成データを取得する元になるかどうかを示すことができる。リフレッシュサービス５１５は、リソースにアクセスする異なるユーザ要求の結果として生成されたアクセスイベントを集約してもよい。リフレッシュサービス５１５は、集約されたアクセスイベントに基づいて、動作モードを判定してもよい。
【００９３】
ユーザグループ特有動作モードが判定されてもよい。リフレッシュサービス５１５は、特定のユーザグループと関連付けられたアクセスイベントを集約してもよく、時間ウインドウ（例えば、１０分）内に生成されたユーザグループと関連付けられたアクセスイベントの数を判定してもよい。例えば、リソースにアクセスすることを要求しているユーザがユーザグループＡのメンバである場合、リソースにアクセスするユーザの要求の結果として生成されたアクセスイベントは、ユーザグループＡに対する動作モードを判定するために、リフレッシュサービス５１５によって考慮されてもよい。リソースにアクセスすることを要求している別のユーザがユーザグループＢのメンバである場合、リソースにアクセスする他のユーザの要求の結果として生成されたアクセスイベントは、ユーザグループＡに対する動作モードを判定するために、リフレッシュサービス５１５によって考慮されなくてもよい。
【００９４】
時間ウインドウ内にユーザグループと関連付けられたアクセスイベントの数が閾値を上回る場合、リフレッシュサービス５１５は、高負荷動作モードになるようユーザグループに対する動作モードを設定してもよい。そうでなければ、リフレッシュサービス５１５は、低負荷動作モードになるようユーザグループに対する動作モードを設定してもよい。閾値は、構成データを取得する要求を処理する構成サービス５１３の能力に基づいて判定されてもよい。例えば、構成サービス５１３は、時間ウインドウ内にＮ個の要求を扱うことができ、クラウドサービス５０３がＭ個のユーザグループを有する場合、閾値は、Ｎ／Ｍ（ＮをＭで除算）になるよう設定されてもよい。追加的または代替的に、構成サービス５１３が時間ウインドウ内にＮ個の要求を扱うことができ、クラウドサービス５０３がＭ人のユーザを有し、特定のユーザグループがＬ人のユーザを含む場合、閾値は、Ｎ*Ｌ／Ｍ（ＮとＬを乗算しＭで除算）になるよう設定されてもよい。
【００９５】
追加的または代替的に、リフレッシュサービス５１５は、ユーザグループと関連付けられた業務時間に基づいて、ユーザグループに対する動作モードを判定してもよい。例えば、リフレッシュサービス５１５は、ユーザグループが位置する（例えば、ユーザグループの主要な位置）領域において標準業務時間の間に動作モードが高負荷動作モードであると判定してもよい。例えば、ユーザグループがアメリカ合衆国にあり、アメリカ合衆国における標準業務時間が午前９時〜午後５時である場合、システムは、ユーザグループに対する動作モードが午前９時〜午後５時に高負荷動作モードであると判定してもよい。
【００９６】
追加的または代替的に、リフレッシュサービス５１５は、ユーザグループに対する共通動作モードを判定してもよい。リフレッシュサービス５１５は、ユーザグループと関連付けられた受信されたアクセスイベントを集約してもよく、時間ウインドウ（例えば、１０分）内に生成されたアクセスイベントの数を判定してもよい。時間ウインドウ内のアクセスイベントの数が閾値を上回る場合、リフレッシュサービス５１５は、高負荷動作モードになるよう共通動作モードを設定してもよい。そうでなければ、リフレッシュサービス５１５は、低負荷動作モードになるよう共通動作モードを設定してもよい。閾値は、構成サービス５１３の能力に基づいて判定されてもよい。例えば、構成サービス５１３が時間ウインドウの間に構成データを取得する１００万の要求を処理することが可能である場合、閾値は、１００万として設定されてもよい。
【００９７】
構成データを取得する大量の要求が存在することがあるときの期間を予測するために、履歴データが使用されてもよい。例えば、リフレッシュサービス５１５は、昨日、先月、または前年に対して記録されたアクセスイベントを考慮してもよい。履歴データが、月曜日の午前１０時〜午前１１時のアクセスイベントの数が閾値を上回ることを示す場合、リフレッシュサービス５１５は、次の月曜日の午前１０時〜午前１１時の期間の間の動作モードが高負荷動作モードであると判定してもよい。
【００９８】
リフレッシュサービス５１５は、構成サービス５１３、リソースマネージャ５１７、共有キャッシュ５２１、または他の構成要素に、判定された動作モードを通知してもよい。例えば、動作モードが１つの状態から別の状態に変化するとき、リフレッシュサービス５１５は、動作モードの変化を示すメッセージを送信してもよい。
【００９９】
リソースマネージャ５１７は、１つ以上のユーザグループに対する動作モードを受信してもよい（例えば、リフレッシュサービス５１５から）。リソースマネージャ５１７は、リソースにアクセスするユーザの要求に対する動作モードを判定してもよい。例えば、リソースにアクセスする要求に対する動作モードは、要求を送信しているユーザがメンバであるユーザグループに対する動作モードであってもよい。
【０１００】
リソースにアクセスするユーザの要求に対する動作モードに基づいて、方法は、ステップの２つの代替的なセットに進んでもよい。リソースマネージャ５１７が、リソースにアクセスするユーザの要求に対する動作モードが低負荷動作モードを含むと判定する場合６０９、方法は、ステップ６１３に進んでもよい。ステップ６１３では、リソースマネージャ５１７は、構成サービス５１３に、リソースに対する構成データを取得する要求を送信してもよい。要求は、ユーザのグループ識別子を含んでもよい。構成サービス５１３は、要求を受信してもよく、グループ識別子に基づいて、リソースに対する対応する構成データを発見してもよい。ステップ６１５では、構成サービス５１３は、リソースマネージャ５１７に発見された構成データを送信してもよい。リソースマネージャ５１７は、構成サービス５１３から構成データを受信してもよい。リソースマネージャ５１７は、リソースに記憶された構成データを受信された構成データと置き換えてもよい。リソースマネージャ５１７は、受信された構成データに基づいて、リソースを構成してもよい。
【０１０１】
追加的または代替的に、ステップ６１３においてリソースマネージャ５１７によって送信された構成データを取得する要求は、リソースに記憶された構成データに対する構成データ識別子を含んでもよい。構成サービス５１３は、構成サービス５１３に記憶されたリソースに対する構成データに基づいて、第２の構成データ識別子を生成してもよい。構成サービス５１３は、２つの構成データ識別子を比較してもよい。構成サービス５１３が、それらが異なると判定する場合、構成サービス５１３は、リソースマネージャ５１７に、リソースに記憶された構成データが期限を経過していることを示すメッセージを送信してもよい。メッセージは、構成サービス５１３に記憶された構成データを含んでもよい。そうでなければ、構成サービス５１３は、リソースマネージャ５１７に、リソースに記憶された構成データが最新であること、及びリソースマネージャ５１７がリソースを構成するためにリソースに記憶された構成データを使用することができることを示すメッセージを送信してもよい。
【０１０２】
リソースマネージャ５１７が、リソースにアクセスするユーザの要求に対する動作モードが高負荷動作モードを含むと判定する場合６１１、方法は、ステップ６１７に進んでもよい。ステップ６１７では、リソースマネージャ５１７は、共有キャッシュ５２１に、リソースに対する構成データを取得する要求を送信してもよい。要求は、ユーザのグループ識別子を含んでもよい。共有キャッシュ５２１は、要求を受信してもよい。ステップ６１９では、共有キャッシュ５２１は、グループ識別子に基づいて、リソースに対する対応する構成データが共有キャッシュ５２１に記憶されているかどうかを判定してもよい。
【０１０３】
リソースに対する構成データが共有キャッシュ５２１に記憶されているかどうかに基づいて、方法は、ステップの２つの代替的なセットに進んでもよい。共有キャッシュ５２１が、リソースに対する構成データを記憶していると判定する場合６２１、方法は、ステップ６２５に進んでもよい。ステップ６２５では、共有キャッシュ５２１は、リソースマネージャ５１７に、共有キャッシュ５２１に記憶されたリソースに対する構成データを送信してもよい。リソースマネージャ５１７は、共有キャッシュ５２１から構成データを受信してもよい。リソースマネージャ５１７は、リソースに記憶された構成データを受信された構成データと置き換えてもよい。リソースマネージャ５１７は、リソースを構成するために、受信された構成データを使用してもよい。
【０１０４】
追加的または代替的に、ステップ６１７においてリソースマネージャ５１７によって送信された構成データを取得する要求は、リソースに記憶された構成データに対する構成データ識別子を含んでもよい。共有キャッシュ５２１は、共有キャッシュ５２１に記憶されたリソースに対する構成データに基づいて、第２の構成データ識別子を生成してもよい。共有キャッシュ５２１は、２つの構成データ識別子を比較してもよい。共有キャッシュ５２１が、それらが異なると判定する場合、構成サービス５１３は、リソースマネージャ５１７に、リソースに記憶された構成データが異なる（期限を経過している）ことを示すメッセージを送信してもよい。メッセージは、共有キャッシュ５２１に記憶された構成データを含んでもよい。そうでなければ、共有キャッシュ５２１は、リソースマネージャ５１７に、リソースに記憶された構成データが最新であること、及びリソースマネージャ５１７がリソースを構成するためにリソースに記憶された構成データを使用することができることを示すメッセージを送信してもよい。
【０１０５】
共有キャッシュ５２１が、リソースに対する構成データを記憶していないと判定する場合６２３、方法は、ステップ６２７に進んでもよい。ステップ６２７では、共有キャッシュ５２１は、リソースマネージャ５１７に、リソースに対する構成データが共有キャッシュ５２１に記憶されていないことを示す応答を送信してもよい。リソースマネージャ５１７は、応答を受信してもよい。
【０１０６】
ステップ６２９では、リソースマネージャ５１７は、構成サービス５１３に、サービスに対する構成データを取得する要求を送信してもよい。構成サービス５１３は、上記説明されたステップ６１３と同様の方式において、ステップ６２９において要求に応答してもよい。ステップ６３１では、構成サービス５１３は、上記説明されたステップ６１５と同様の方式において、リソースマネージャ５１７に構成データを送信してもよい。上記説明されたように、リソースに記憶された構成データに対する構成データ識別子（複数可）は、ステップ６２９、６３１におけるリソースマネージャ５１７と構成サービス５１３との間の通信における帯域幅を節約するために使用されてもよい。
【０１０７】
リソースマネージャ５１７は、構成サービス５１３から、リソースに対する構成データを受信してもよく、受信された構成データに従ってリソースを構成してもよい。リソースマネージャ５１７は、リソースに記憶された構成データを受信された構成データと置き換えてもよい。ステップ６３３では、リソースマネージャ５１７は、共有キャッシュ５２１に、リソースマネージャ５１７が構成サービス５１３から受信した構成データ（例えば、ステップ６３１において）を共有キャッシュ５２１に挿入するメッセージを送信してもよい。追加的または代替的に、構成サービス５１３が、ステップ６３１において、リソースに記憶された構成データが最新であることを示す場合、リソースマネージャ５１７は、ステップ６３３において、共有キャッシュ５２１に、リソースに記憶された構成データを共有キャッシュ５２１に挿入するメッセージを送信してもよい。
【０１０８】
共有キャッシュ５２１は、受信された構成データを新たなレコードとしてそのデータベーステーブルに挿入してもよい。その後、共有キャッシュ５２１が同一のリソースに対するまたは同一のユーザグループと関連付けられたリソースに対する構成データを取得する要求を受信する場合、共有キャッシュ５２１は、新たなレコードに基づいて、構成データを返してもよい。
【０１０９】
追加的または代替的に、ユーザグループに対する動作モードが低負荷動作モードから高負荷動作モードに変化するとき、システムは、構成サービス５１３において、ユーザグループと関連付けられた構成データを識別してもよく、識別された構成データを共有キャッシュ５２１に挿入してもよい。
【０１１０】
ステップ６３５では、共有キャッシュ５２１は、リソースマネージャ５１７に、構成データが共有キャッシュ５２１に挿入されたことを示す応答を送信してもよい。ステップ６３７では、リソースマネージャ５１７は、ユーザエージェント５０９を通じて、構成されたリソースをユーザに対して利用可能にしてもよい。
【０１１１】
図７は、共有キャッシュに記憶されたデータを更新またはリフレッシュする実施例の方法を示すフローチャートである。方法は、構成データに対して以下で、及び図７において議論される。しかしながら、方法は、いずれかのタイプのデータ（例えば、リソースに対してまたはリソースによって使用されるデータ）に適用可能であってもよい。方法は、共有キャッシュ５２１に記憶されたデータの各レコードに対して実行されてもよい。
【０１１２】
ユーザグループに対する動作モードに基づいて、方法は、ステップの２つの代替的なセットに進んでもよい。システムが、ユーザグループに対する動作モードが低負荷動作モードであると判定する場合７０３、方法は、共有キャッシュ５２１に記憶されたユーザグループに対する構成データを更新またはリフレッシュするいずれのステップも実行しなくてもよい。例えば、ユーザグループに対する構成データが共有キャッシュ５２１に記憶され、ユーザグループに対する動作モードが低負荷動作モードを含む場合、システムは、有効期限の後に構成データの期限が切れることを可能にすることができる。
【０１１３】
システムが、ユーザグループに対する動作モードが高負荷動作モードであると判定する場合７０１、方法は、ステップ７０５に進んでもよい。ステップ７０５では、リフレッシュサービス５１５は、高負荷動作モードの間、共有キャッシュ５２１に記憶された構成データを保持するプロセスを開始し、共有キャッシュ５２１に記憶された構成データを最新に維持するようウェイクアップしてもよい。リフレッシュサービス５１５は、定期的にウェイクアップしてもよい。例えば、リフレッシュサービス５１５は、構成データの有効期限と同一のものである期間の後にウェイクアップしてもよい。追加的または代替的に、リフレッシュサービス５１５は、構成データの有効期限とは異なる期間の後にウェイクアップしてもよい。
【０１１４】
ステップ７０７では、リフレッシュサービス５１５は、共有キャッシュ５２１に、ユーザグループと関連付けられた構成データを取得する要求を送信してもよい。要求は、グループ識別子を含んでもよい。共有キャッシュ５２１は、要求を受信してもよく、グループ識別子に対応する構成データを発見してもよい。ステップ７０９では、共有キャッシュ５２１は、リフレッシュサービス５１５に、ユーザグループと関連付けられた構成データを示す応答を送信してもよい。リフレッシュサービス５１５は、応答を受信してもよく、応答から構成データを抽出してもよい。リフレッシュサービス５１５は、抽出された構成データに基づいて、構成データ識別子を生成してもよい。追加的または代替的に、送信されるデータの量を削減するために、リフレッシュサービス５１５は、ステップ７０７において、共有キャッシュ５２１に、ユーザグループと関連付けられた構成データに対する構成データ識別子を取得する要求を送信してもよい。要求を受信した後、共有キャッシュ５２１は、ユーザグループに対応する構成データを発見してもよく、発見された構成データに基づいて、構成データ識別子を生成してもよい。共有キャッシュ５２１は、リフレッシュサービス５１５に生成された構成データ識別子を送信してもよい。
【０１１５】
ステップ７１１では、リフレッシュサービス５１５は、構成サービス５１３に、構成サービス５１３に記憶されたユーザグループに対する構成データを取得する要求を送信してもよい。ある時間点において、ユーザグループのアドミニストレータは、クライアントエージェント５０７を通じて、ユーザグループに対する構成データを修正してもよい。変更は、構成サービス５１３に記憶された構成データに反映されてもよいが、共有キャッシュ５２１に記憶された構成データには反映されない。
【０１１６】
構成データを取得する要求は、ユーザグループのグループ識別子、及びリフレッシュサービス５１５が共有キャッシュ５２１から生成または受信した構成データ識別子を含んでもよい。構成サービス５１３は、要求を受信してもよい。構成サービス５１３は、グループ識別子と関連付けられた構成データを発見するよう、そのデータベースを検索してもよい。構成サービス５１３は、発見された構成データに基づいて、第２の構成データ識別子を生成してもよい。構成サービス５１３は、受信された構成データ識別子及び第２の構成データ識別子が異なることを確認するよう、それらを比較してもよい。それらが異なる場合、構成サービス５１３は、構成サービス５１３に記憶された構成データがアドミニストレータによって修正されており、共有キャッシュ５２１に記憶された構成データが期限を経過していると判定してもよい。そうでなければ、構成サービス５１３は、構成サービス５１３に記憶された構成データがアドミニストレータによって修正されておらず、共有キャッシュ５２１に記憶された構成データが最新であると判定してもよい。
【０１１７】
構成サービス５１３に記憶された構成データがアドミニストレータによって変更されているかどうかに基づいて、方法は、ステップの２つの代替的なセットに進んでもよい。構成サービス５１３が、そこに記憶された構成データが変更されたと判定する場合７１３、方法は、ステップ７１７に進んでもよい。ステップ７１７では、構成サービス５１３は、リフレッシュサービス５１５に、構成サービス５１３に記憶された構成データが変更されたことを示す応答を送信してもよい。応答は、構成サービス５１３に記憶されたユーザグループと関連付けられた構成データを含んでもよい。リフレッシュサービス５１５は、応答を受信してもよく、構成データを抽出してもよい。
【０１１８】
ステップ７１９では、リフレッシュサービス５１５は、共有キャッシュ５２１に、抽出された構成データを共有キャッシュ５２１に挿入する要求を送信してもよい。共有キャッシュ５２１は、要求を受信してもよく、構成データを新たなレコードとして共有キャッシュ５２１に挿入してもよい。ステップ７２１では、共有キャッシュ５２１は、構成サービス５１３に、構成データが共有キャッシュ５２１に挿入されたことを示す応答を送信してもよい。
【０１１９】
構成サービス５１３が、そこに記憶された構成データが変更されていないと判定する場合７１５、方法は、ステップ７２３に進んでもよい。ステップ７２３では、構成サービス５１３は、リフレッシュサービス５１５に、構成サービス５１３に記憶された構成データが変更されていないことを示す応答を送信してもよい。リフレッシュサービス５１５は、応答を受信してもよい。
【０１２０】
ステップ７２５では、リフレッシュサービス５１５は、共有キャッシュ５２１に、構成データに対する有効期限をリフレッシュする要求を送信してもよい。共有キャッシュ５２１は、要求を受信してもよく、構成データに対する有効期限をリフレッシュしてもよい。ステップ７２７では、共有キャッシュ５２１は、リフレッシュサービス５１５に、構成データに対する有効期限がリフレッシュされたことを示す応答を送信してもよい。
【０１２１】
図８は、データ変更イベントに基づいて、共有キャッシュに記憶されたデータを更新する実施例の方法を示すフローチャートである。方法は、構成データに対して以下で、及び図８において議論される。しかしながら、方法は、いずれかのタイプのデータ（例えば、リソースに対してまたはリソースによって使用されるデータ）に適用可能であってもよい。
【０１２２】
ステップ８０１では、クライアントエージェント５０７は、構成サービス５１３に、ユーザグループと関連付けられた構成データを変更する要求を送信してもよい。例えば、ユーザグループのアドミニストレータは、クライアントエージェント５０７を通じて、構成サービス５１３に記憶されたユーザグループに対する構成データを変更してもよい。
【０１２３】
構成サービス５１３は、要求を受信してもよく、構成データを変更してもよい。ステップ８０３では、構成サービス５１３は、クライアントエージェント５０７に、構成サービス５１３におけるユーザグループに対する構成データが変更されたことを示す応答を送信してもよい。
【０１２４】
ステップ８０５では、構成サービス５１３は、リフレッシュサービス５１５に、構成データ変更イベントのメッセージを送信してもよい。メッセージは、ユーザグループに対する構成データが変更されたことを示すことができる。メッセージは、ユーザグループのグループ識別子を含んでもよい。
【０１２５】
ステップ８０７では、リフレッシュサービス５１５は、ユーザグループに対する動作モードを判定してもよい。ユーザグループに対する動作モードが高負荷動作モードを含む場合、リフレッシュサービス５１５は、ステップ８０９に進んでもよい。ユーザグループに対する動作モードが低負荷動作モードを含む場合、リフレッシュサービス５１５は、ステップ８０７において停止してもよく、ステップ８０９に進まなくてもよい。
【０１２６】
ステップ８０９では、リフレッシュサービス５１５は、構成サービス５１３に、ユーザグループと関連付けられた構成データを取得する要求を送信してもよい。ステップ８１１では、構成サービス５１３は、リフレッシュサービス５１５に、要求された構成データを示す応答を送信してもよい。
【０１２７】
リフレッシュサービス５１５は、応答を受信してもよく、構成データを抽出してもよい。ステップ８１３では、リフレッシュサービス５１５は、共有キャッシュ５２１に、抽出された構成データを共有キャッシュ５２１に挿入する要求を送信してもよい。共有キャッシュ５２１は、要求を受信してもよく、構成データを抽出してもよく、構成データを新たなレコードとして共有キャッシュ５２１に挿入してもよい。共有キャッシュ５２１が挿入要求を受信するとき、ユーザグループと関連付けられた構成データが共有キャッシュ５２１に既に記憶されている場合、共有キャッシュ５２１は代わりに、抽出された構成データにより、共有キャッシュ５２１に記憶された構成データを更新してもよい。ステップ８１５では、共有キャッシュ５２１は、リフレッシュサービス５１５に、構成データが共有キャッシュ５２１に挿入されたことを示す応答を送信してもよい。
【０１２８】
主題が構造的特徴及び／または方法論的行為に特有の言語において説明されてきたが、添付の特許請求の範囲において定義される主題は、上記説明された特定の特徴または行為に必ずしも限定されないことが理解されよう。むしろ、上記説明された特定の特徴または行為は、以下の特許請求の範囲の実施例の実装態様として説明される。
【０１２９】
関連出願の相互参照
本出願は、本明細書でその全体を参照することによって組み込まれ、その一部を成す、２０１８年４月３日に出願され、「ＤＡＴＡ  ＣＡＣＨＩＮＧ  ＦＯＲ  ＣＬＯＵＤ  ＳＥＲＶＩＣＥＳ」と題する米国特許出願第１５／９４４，１０７号の国際特許出願であり、その優先権を主張する。
【図１】
2021517695.tif 000004
【図２】
2021517695.tif 000005
【図３】
2021517695.tif 000006
【図４】
2021517695.tif 000007
【図５】
2021517695.tif 000008
【図６】
2021517695.tif 000009
【図７】
2021517695.tif 000010
【図８】
2021517695.tif 000011
【国際調査報告】
2021517695.tif 000012