(57)【要約】      （修正有）【課題】クラウドプロバイダによってサービス水準合意（ＳＬＡ）の規定を満たすリソースをクラウドネットワーク内で移動させる。【解決手段】クラウドネットワーク内の少なくとも１つのデバイスから性能メトリックを受信し、少なくとも１つのアプリケーション要件を生成するために性能メトリックを分析することであって、アプリケーション要件は、顧客に対してプロビジョニングされるリソースと関連付けられる最近の性能を示し、リソースは、クラウドネットワーク内の第１のデバイスによってサポートされる。さらに、少なくとも１つのアプリケーション要件に基づいてリソースをサポートするために、クラウドネットワーク内の第２のデバイスを識別し、第１のデバイスから第２のデバイスへとリソースを移動させる。【選択図】図７
2018198068.tif 000002
【特許請求の範囲】
【請求項１】
クラウドネットワーク内でリソースを移動させるためにクラウドコントローラによって実施される方法であって、
クラウドネットワーク内の少なくとも１つのデバイスから性能メトリックを受信すること（７１０）と、
少なくとも１つのアプリケーション要件を生成するために性能メトリックを分析すること（７３５）であって、少なくとも１つのアプリケーション要件は、顧客に対してプロビジョニングされるリソースと関連付けられる最近の性能を示し、リソースは、クラウドネットワーク内の第１のデバイスによってサポートされる、分析すること（７３５）と、
少なくとも１つのアプリケーション要件に基づいてリソースをサポートするために、クラウドネットワーク内の第２のデバイスを識別すること（７５０、７６０、７６５）と、
第１のデバイスから第２のデバイスへとリソースを移動させること（７７０）とを含む、方法。
【請求項２】
少なくとも１つのアプリケーション要件に基づいてリソースをサポートするために、クラウドネットワーク内の第２のデバイスを識別すること（７５０、７６０、７６５）が、リソースの第２のデバイスへの移動が少なくとも１つのアプリケーション要件を順守すると決定すること（７６５）を含む、請求項１に記載の方法。
【請求項３】
少なくとも１つのアプリケーション要件に基づいてリソースをサポートするために、クラウドネットワーク内の第２のデバイスを識別すること（７５０、７６０、７６５）が、リソースの第２のデバイスへの移動が所定量未満だけ、少なくとも１つのアプリケーション要件に違反すると決定すること（７６５）を含む、請求項１に記載の方法。
【請求項４】
リソースをサポートするために、クラウドネットワーク内の第２のデバイスを識別すること（７５０、７６０、７６５）が、顧客と関連付けられる明示的なサービス水準合意（ＳＬＡ）にさらに基づく、請求項１から３のいずれか一項に記載の方法。
【請求項５】
少なくとも１つのアプリケーション要件がデバイスレベル性能メトリックを含む、請求項１から４のいずれか一項に記載の方法。
【請求項６】
少なくとも１つのアプリケーション要件がアプリケーションレベル性能メトリックを含む、請求項１から５のいずれか一項に記載の方法。
【請求項７】
リソースをサポートするために、クラウドネットワーク内の第２のデバイスを識別すること（７５０、７６０、７６５）が、クラウドに属する複数のデバイスの間でのリソースセットの新たな構成を計算することを含む、請求項１から６のいずれか一項に記載の方法。
【請求項８】
クラウドネットワーク内でリソースを移動させるためのクラウドコントローラであって、
ネットワークインターフェース（２１０）と、
メモリ（３２０）と、
メモリと通信しているプロセッサ（３１０）とを備え、プロセッサは、
ネットワークインターフェースを介して、クラウドネットワーク内の少なくとも１つのデバイスから性能メトリックを受信すること（７１０）と、
少なくとも１つのアプリケーション要件を生成するために性能メトリックを分析すること（７３５）であって、少なくとも１つのアプリケーション要件は、顧客に対してプロビジョニングされるリソースと関連付けられる最近の性能を示し、リソースは、クラウドネットワーク内の第１のデバイスによってサポートされる、分析すること（７３５）と、
少なくとも１つのアプリケーション要件に基づいてリソースをサポートするために、クラウドネットワーク内の第２のデバイスを識別すること（７５０、７６０、７６５）と、
第１のデバイスから第２のデバイスへとリソースを移動させること（７７０）とを行うように構成されている、クラウドコントローラ。
【請求項９】
少なくとも１つのアプリケーション要件に基づいてリソースをサポートするために、クラウドネットワーク内の第２のデバイスを識別する（７５０、７６０、７６５）識別において、プロセッサが、リソースの第２のデバイスへの移動が少なくとも１つのアプリケーション要件を順守すると決定する（７６５）ように構成されている、請求項８に記載のクラウドコントローラ。
【請求項１０】
少なくとも１つのアプリケーション要件に基づいてリソースをサポートするために、クラウドネットワーク内の第２のデバイスを識別する（７５０、７６０、７６５）識別において、プロセッサが、リソースの第２のデバイスへの移動が所定量未満だけ、少なくとも１つのアプリケーション要件に違反すると決定する（７６５）ように構成されている、請求項８に記載のクラウドコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書に開示されている様々な例示的な実施形態は、概して、クラウドコンピューティングに関する。
【背景技術】
【０００２】
多くのクラウドオペレータは現在、相対的に集中型動作を提供する、いくつかの大型データセンターを使用したクラウドサービスをホストしている。そのようなシステムにおいて、要求者は、クラウドコントローラに１つまたは複数のリソースを使用することを要求することができ、クラウドコントローラは、要求されたリソースを、要求者による使用のためにデータセンターから配分することができる。しかしながら、この集中型動作は、厳密な遅延または信頼性要件を有するもののような、様々なタイプのアプリケーションをホストするには十分に適していない場合がある。
【０００３】
他方、分散型データセンターアーキテクチャは、地理的に分散されている場合があるより多数のより小型のデータセンターを提供する。データセンターは、インターネットまたはキャリアネットワークのようなネットワークを通じて１つまたは複数のクラウドコントローラの制御下にあるままであることができる。そのような分散型システムの下で、ネットワーク伝搬遅延の影響は、地理的距離またはネットワーク距離に関して、集中型クラウドが提供することが可能であり得るよりも、様々な顧客により近いクラウドアプリケーションを提供することによって低減され得る。
【０００４】
両方のタイプのクラウドネットワークにおいて、利用可能なデバイスの間で顧客に対してプロビジョニングされるリソースを再構成することが有利であることがある。たとえば、接続性が劣化させられることに起因して、ネットワーク状態の変化によってデバイスが顧客リソースを継続してサポートするのに適しなくなってしまう場合があり、リソース間通信において顧客アプリケーションへの依存が高められる結果として、そのようなリソースを地理的に互いに近くに移動することが所望されるようになる場合があり、または、１つのデバイスに対する負荷が増大される結果として、あまり重い負荷のかけられていないデバイスにリソースを移動することが所望されるようになる場合がある。
【発明の概要】
【課題を解決するための手段】
【０００５】
様々な例示的な実施形態の簡潔な概要が下記に提示される。いくつかの単純化および省略が以下の概要において行われている場合があり、概要は、様々な例示的な実施形態のいくつかの態様を強調および紹介するように意図されており、本発明の範囲を限定するようには意図されていない。当業者が本発明の概念を作成および使用することを可能にするのに十分な好ましい例示的な実施形態の詳細な説明は、続いて後の節に記載する。
【０００６】
本明細書に記載されている様々な実施形態は、クラウドネットワーク内でリソースを移動させるためにクラウドコントローラによって実施される方法に関し、方法は：クラウドネットワーク内の少なくとも１つのデバイスから性能メトリックを受信することと、少なくとも１つのアプリケーション要件を生成するために性能メトリックを分析することであって、少なくとも１つのアプリケーション要件は、顧客に対してプロビジョニングされるリソースと関連付けられる最近の性能を示し、リソースは、クラウドネットワーク内の第１のデバイスによってサポートされる、分析することと、少なくとも１つのアプリケーション要件に基づいてリソースをサポートするために、クラウドネットワーク内の第２のデバイスを識別することと、第１のデバイスから第２のデバイスへとリソースを移動させることとを含む。
【０００７】
本明細書に記載されている様々な実施形態は、クラウドネットワーク内でリソースを移動させるためのクラウドコントローラに関し、クラウドコントローラは：ネットワークインターフェースと、メモリと、メモリと通信しているプロセッサとを含み、プロセッサは、ネットワークインターフェースを介して、クラウドネットワーク内の少なくとも１つのデバイスから性能メトリックを受信することと、少なくとも１つのアプリケーション要件を生成するために性能メトリックを分析することであって、少なくとも１つのアプリケーション要件は、顧客に対してプロビジョニングされるリソースと関連付けられる最近の性能を示し、リソースは、クラウドネットワーク内の第１のデバイスによってサポートされる、分析することと、少なくとも１つのアプリケーション要件に基づいてリソースをサポートするために、クラウドネットワーク内の第２のデバイスを識別することと、第１のデバイスから第２のデバイスへとリソースを移動させることとを行うように構成されている。
【０００８】
本明細書に記載されている様々な実施形態は、クラウドネットワーク内でリソースを移動させるためにクラウドコントローラによって実行するための命令を符号化されている一時的でない機械可読記憶媒体に関し、媒体は：クラウドネットワーク内の少なくとも１つのデバイスから性能メトリックを受信するための命令と、少なくとも１つのアプリケーション要件を生成するために性能メトリックを分析するための命令であって、少なくとも１つのアプリケーション要件は、顧客に対してプロビジョニングされるリソースと関連付けられる最近の性能を示し、リソースは、クラウドネットワーク内の第１のデバイスによってサポートされる、分析するための命令と、少なくとも１つのアプリケーション要件に基づいてリソースをサポートするために、クラウドネットワーク内の第２のデバイスを識別するための命令と、第１のデバイスから第２のデバイスへとリソースを移動させるための命令とを含む。
【０００９】
少なくとも１つのアプリケーション要件に基づいてリソースをサポートするために、クラウドネットワーク内の第２のデバイスを識別することは、リソースの第２のデバイスへの移動が少なくとも１つのアプリケーション要件を順守すると決定することを含む、様々な実施形態が記載される。
【００１０】
少なくとも１つのアプリケーション要件に基づいてリソースをサポートするために、クラウドネットワーク内の第２のデバイスを識別することは、リソースの第２のデバイスへの移動が所定量未満だけ、少なくとも１つのアプリケーション要件に違反すると決定することを含む、様々な実施形態が記載される。
【００１１】
リソースをサポートするために、クラウドネットワーク内の第２のデバイスを識別することは、顧客と関連付けられる明示的なサービス水準合意（ＳＬＡ）にさらに基づく、様々な実施形態が記載される。
【００１２】
少なくとも１つのアプリケーション要件がデバイスレベル性能メトリックを含む、様々な実施形態が記載される。
【００１３】
少なくとも１つのアプリケーション要件がアプリケーションレベル性能メトリックを含む、様々な実施形態が記載される。
【００１４】
リソースをサポートするために、クラウドネットワーク内の第２のデバイスを識別することは、クラウドに属する複数のデバイスの間でのリソースセットの新たな構成を計算することを含む、様々な実施形態が記載される。
【００１５】
様々な例示的な実施形態をより良好に理解するために、添付の図面が参照される。
【図面の簡単な説明】
【００１６】
【図１】クラウドリソースを提供するための例示的なネットワークを示す図である。
【図２】例示的なクラウドコントローラの構成要素図である。
【図３】例示的なクラウドコントローラのハードウェア図である。
【図４】デバイスレベル性能メトリックを記憶するための例示的なデータ構成を示す図である。
【図５】アプリケーションレベル性能メトリックを記憶するための例示的なデータ構成を示す図である。
【図６】アプリケーション要件を記憶するための例示的なデータ構成を示す図である。
【図７】クラウドネットワーク内で顧客リソースを移動させるための例示的な方法を示す図である。
【発明を実施するための形態】
【００１７】
理解を促進するために、実質的に同じもしくは同様の構造または実質的に同じもしくは同様の機能を有する要素を示すために同一の参照符号が使用されている。
【００１８】
本明細書および図面は、本発明の原理を示す。したがって、本明細書において明示的に記載または図示されていなくても、本発明の原理を具現化し、その範囲内に含まれる様々な構成を当業者が考案することが可能になることが諒解されよう。さらに、本明細書に記載されるすべての例は、原則的に、教育上の目的のためのものであるように明確に意図されており、そのような特に記載されている例および条件に限定されないものとして解釈されるべきである。加えて、別途指示されていない（たとえば、「その他（ｏｒ  ｅｌｓｅ）」または「または代替形態において（ｏｒ  ｉｎ  ｔｈｅ  ａｌｔｅｒｎａｔｉｖｅ）」）かぎりにおいて、「または（ｏｒ）」という用語は本明細書において非排他的である。また、いくつかの実施形態は新たな実施形態を形成するために１つまたは複数の他の実施形態と組み合わされてもよいため、本明細書に記載されている様々な実施形態は、必ずしも相互に排他的ではない。
【００１９】
クラウドネットワーク内での顧客リソースの移動は多くの文脈において有利であり得るが、そのような移動後の顧客の経験を維持することも望ましい。本明細書において使用される場合、「顧客」という用語は、クラウドネットワークからサービスとしてのインフラストラクチャ（ＩａａＳ）、サービスとしてのプラットフォーム（ＰａａＳ）、またはサービスとしてのソフトウェア（ＳａａＳ）を受け取るためにクラウドプロバイダとインターフェースするユーザを指すものとして理解される。たとえば、クラウドプロバイダおよび顧客は、顧客のアプリケーションに提供される最小限の性能要件を規定するサービス水準合意（ＳＬＡ）を交わしている場合がある。たとえば、ＳＬＡは、特定量の計算能力またはリソース間の特定の最大待ち時間を指定することができる。リソースがクラウドネットワーク内で移動されると、クラウドプロバイダは、ＳＬＡの規定を満たすリソースをサポートするためのデバイスを選択することによって、ＳＬＡを順守するように試行することができる。
【００２０】
さらに、いくつかの事例において、最小限の許容可能な性能を規定し得るＳＬＡを順守するのに加えて、顧客が慣れている顧客経験を維持することが望ましい場合がある。たとえば、２０ｍｓのリソース間通信遅延が許容可能であるとＳＬＡは規定するが、顧客は１０ｍｓのリソース間通信遅延を平均とし、それゆえ、期待する場合がある。そのため、移動されたときに、ＳＬＡの規定を上回って超える顧客経験を維持することが望ましい場合がある。
【００２１】
ここで図面を参照すると、同様の参照符号が同様の構成要素またはステップを参照しているが、様々な例示的な実施形態の広範な態様が開示される。
【００２２】
図１は、クラウドリソースを提供するための例示的なクラウドアーキテクチャ１００を示す。クラウドアーキテクチャ１００は、ネットワーク接続されたクラウドアーキテクチャを実装することができ、クライアントデバイス１１０、ネットワーク１１５、クラウドコントローラ１２０、およびデータセンター１３０、１４０、１５０を含むことができる。
【００２３】
クライアントデバイス１１０は、１つまたは複数のクラウドリソースを利用するように構成されている任意のデバイスであってもよい。様々な実施形態において、クライアントデバイス１１０は、デスクトップコンピュータ、ラップトップ、タブレット、モバイルデバイス、サーバ、またはブレードであってもよい。クライアントデバイス１１０は、ネットワーク１１５を介して、クラウドコントローラ１２０のような他のデバイスと通信することができる。クライアントデバイス１１０は、クラウドコントローラ１２０に、１つまたは複数のクラウドリソースを求める要求を送信することができる。たとえば、クライアントデバイス１１０は、１つまたは複数の仮想マシン（ＶＭ）、仮想マシングループ、記憶デバイス、メモリ、またはクラウドネットワーク１００内の他のリソースを使用することを要求することができる。追加のタイプのクラウドリソースが諒解されよう。クライアントデバイス１１０は、クラウドコントローラ１２０から分散型クラウドアプリケーションの配備を要求する顧客のデバイスを表してもよく、または、クライアントデバイス１１０は、様々なクラウドデバイス１３１、１３２、１３３、１４４、１５５、１６６によってサポートされるそのようなリソースと直接通信することによって、そのような分散型クラウドアプリケーションの１つまたは複数の構成要素を使用することを要求するそのような顧客の顧客を表してもよい。複数の追加のクライアントデバイス（図示せず）がネットワーク１１５と通信していてもよく、そのような追加のクライアントデバイスは、追加の顧客に属してもよいことが諒解されよう。
【００２４】
ネットワーク１１５は、例示的なクラウドアーキテクチャ１００の様々なデバイス間の通信を有効にすることが可能なデバイスまたは伝送媒体の任意のネットワークであってもよい。たとえば、ネットワーク１１５は、データパケットを交換し、様々な宛先に向けてルーティングするように構成されている多数のデバイスを含んでもよい。様々な実施形態において、ネットワーク１１５は、インターネットまたは１つもしくは複数のキャリアネットワークを含んでもよい。
【００２５】
クラウドコントローラ１２０は、ネットワーククラウドの動作を制御するように構成されているデバイスであってもよい。クラウドコントローラ１２０は、図３に関連してより詳細に説明されるように、記憶デバイス、メモリ、または１つもしくは複数のプロセッサのような様々なハードウェアを含んでもよい。本明細書において使用される場合、「プロセッサ」という用語は、マイクロプロセッサ、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、特定用途向け集積回路（ＡＳＩＣ）、および他の同様の処理デバイスのような様々なデバイスを包含するものとして理解される。様々な実施形態において、クラウドコントローラ１２０は、たとえば、サーバ、ブレード、パーソナルコンピュータ、ラップトップ、タブレット、またはモバイルデバイスを含んでもよい。いくつかのそのような実施形態において、クラウドコントローラ１２０は、たとえば、クラウドデバイス１３１、１３２、１３３によって提供されるハードウェアリソースのようなクラウドリソースを利用する仮想マシンであってもよい。クラウドコントローラ１２０は、データセンター１３０のようなデータセンターに存在してもよく、または、他の場所に存在してもよい。クラウドコントローラ１２０は、クラウドリソース配分の管理を含む、様々なクラウド管理機能を実施することができる。そのため、クラウドコントローラ１２０は、クライアントデバイス１１０のようなクライアントデバイスから、クラウドアプリケーションの確立を求める要求を受信することができる。そのような要求を受信すると、クラウドコントローラ１２０は、要求されたリソースを、クライアントデバイスによって使用するために、クラウドデバイス１３１、１３２、１３３、１４４、１５５、１５６の１つまたは複数から配分することができる。様々な実施形態において、例示的なクラウドアーキテクチャ１００は、複数のクラウドコントローラ（図示せず）を含んでもよい。複数のクラウドコントローラの動作を協調させるための様々な技法が諒解されよう。
【００２６】
データセンター１３０、１４０、１５０は各々、クラウドリソースを提供する１つまたは複数のデバイスをサポートする場所であり得る。たとえば、データセンター１３０はクラウドデバイス１３１、１３２、１３３をホストすることができ、データセンター１４０はクラウドデバイス１４４をホストすることができ、データセンター１５０はクラウドデバイス１５５、１５６をホストすることができる。データセンター１３０、１４０、１５０は、地理的に分散されていてもよく、または、クライアントデバイス１１０から異なるネットワーク距離に配置されてもよい。たとえば、クラウドデバイス１１０はワシントンＤ．Ｃ．に位置してもよく、データセンター１４０はシカゴに位置してもよく、データセンター１５０はパリに位置してもよく、データセンター１３０は東京に位置してもよい。この例によれば、クライアントデバイス１１０は、データセンター１４０と通信するときに、データセンター１３０と通信するときよりも経験するネットワーク待ち時間が少なくなり得る。クラウドアーキテクチャ１００は、多数の追加のデータセンター（図示せず）を含んでもよいこと、および、各データセンターは任意の数のクラウドデバイスを含んでもよいことが諒解されよう。
【００２７】
クラウドデバイス１３１、１３２、１３３、１４４、１５５、１５６の各々は、クライアントデバイスによって使用するためのクラウドリソースを提供するように構成されているデバイスであってもよい。様々な実施形態において、クラウドデバイス１３１、１３２、１３３、１４４、１５５、１５６の各々は、デスクトップコンピュータ、ラップトップ、タブレット、モバイルデバイス、サーバ、またはブレードであってもよい。そのため、クラウドデバイス１３１、１３２、１３３、１４４、１５５、１５６は、たとえば、記憶デバイス、メモリ、または１つもしくは複数のプロセッサのような様々なハードウェアを含んでもよい。クラウドデバイス１３１、１３２、１３３、１４４、１５５、１５６は、クライアントデバイス１１０のようなクライアントデバイスによって使用するために、処理、記憶装置、メモリ、ＶＭ、またはＶＭグループを提供するように構成されてもよい。
【００２８】
図１に示されている実施形態のような様々な実施形態において、クラウドコントローラ１２０は、需要のあるクラウドアプリケーションを配備しその後スケーリングするために、アプリケーションマネージャ（図示せず）を含むか、または、アプリケーションマネージャとインターフェースしてもよい。アプリケーションマネージャは、たとえば、デスクトップコンピュータ、ラップトップ、タブレット、モバイルデバイス、サーバ、またはブレードであってもよく、仮想マシンを含んでもよい。
【００２９】
定期的に、クラウドコントローラ１２０は、クラウドネットワーク１００内でクラウドデバイス１１０に対してプロビジョニングされるリソースを移動させることが有利であることを決定することができる。たとえば、クラウドコントローラは、クライアントデバイス１１０と関連付けられているＶＭをサポートするデバイス１５５が過負荷になっていること、および、ＶＭが別のデバイス１３１、１３２、１３３、１４４、１５６に再配置されるべきであることを決定することができる。いずれのデバイス１３１、１３２、１３３、１４４、１５６が移動されたＶＭをサポートすべきかを決定するに当たって、クラウドコントローラ１２０は、クライアントデバイスの顧客と関連付けられる明示的なＳＬＡと、顧客の最近の性能経験を反映するアプリケーション要件を含む顧客プロファイルの両方を考慮することができる。この情報を使用して、クラウドコントローラは、明示的なＳＬＡおよびアプリケーション要件を順守する可能性が高いデバイス１３１、１３２、１３３、１４４、１５６を選択することができる。
【００３０】
図２は、例示的なクラウドコントローラ２００の構成要素図を示す。クラウドコントローラ２００は、例示的なクラウドネットワーク１００のクラウドコントローラ１２０に対応することができる。クラウドコントローラ２００は、ネットワークインターフェース２１０、クラウドモニタ２２０、クラウド状態記憶装置２３０、分析エンジン２４０、黙示的ＳＬＡ記憶装置２５０、明示的ＳＬＡ記憶装置２６０、および作業負荷移動器２７０を含むことができる。
【００３１】
ネットワークインターフェース２１０は、少なくとも１つの他のデバイスと通信するように構成されている、ハードウェア、または、機械可読記憶媒体上に符号化されている実行可能命令を含むインターフェースであってもよい。ネットワークインターフェース２１０は、１つまたは複数の物理的ポートを含むことができ、たとえば、ＴＣＰ、ＩＰ、またはＥｔｈｅｒｎｅｔ（登録商標）のような１つまたは複数のプロトコルに従って通信することができる。
【００３２】
クラウドモニタ２２０は、性能データについて様々なクラウドデバイスをポーリングするように構成されている、ハードウェア、または、機械可読記憶媒体上の実行可能命令を含んでもよい。たとえば、クラウドモニタ２２０は、性能メトリックを要求するメッセージを定期的に生成し、ネットワークインターフェース２１０を介してクラウドデバイスにこのメッセージを送信することができる。これに応答して、ポーリングされているデバイスは、ＣＰＵ利用状況、メモリ使用状況、記憶装置使用状況、ネットワークパケット遅延、パケット遅延変動（ジッタ）、ネットワーク帯域幅、または他のデバイスレベル性能メトリックのような性能メトリックによって応答することができる。付加的にまたは代替的に、デバイスは、ＶＭもしくは他のリソースの性能、リソース間通信メトリック、または、スケジュールされている保守点検情報のようなクラウド特有の情報のような、アプリケーションレベル性能メトリックを報告してもよい。様々な代替的な実施形態において、クラウドモニタ２２０は、いくつかのデバイスをポーリングするように構成されなくてもよく、代わりに、それぞれのデバイスによってプッシュされる性能更新を受信してもよい。性能メトリックを受信すると、クラウドモニタ２２０は、このデータを後に使用するためにクラウド状態記憶装置２３０に記憶することができる。
【００３３】
クラウド状態記憶装置２３０は、クラウドネットワークに属する様々なデバイスによって報告される様々な性能メトリックを記憶するデバイスであってもよい。クラウド状態記憶装置２３０は、読み出し専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、磁気ディスク記憶媒体、光学記憶媒体、フラッシュメモリデバイス、および／または同様の記憶媒体のような機械可読記憶媒体を含んでもよい。図４−図５の例に関連して下記に説明されるように、クラウド状態記憶装置２３０は、デバイスレベルメトリックまたはアプリケーションレベルメトリックを記憶することができる。
【００３４】
分析エンジン２４０は、最近の顧客経験をプロファイルまたは「黙示的ＳＬＡ」の形態でモデル化するために、クラウド状態記憶装置２３０に記憶されている性能メトリックを分析するように構成されている、ハードウェア、または、機械可読記憶媒体上の実行可能命令を含むことができる。たとえば、分析エンジンは、分析下の現在の顧客について、その顧客に対してプロビジョニングされるリソースおよびそれらのリソースをサポートするデバイスと関連付けられる性能メトリックを取り出すことができる。その後、分析エンジンは、顧客によって経験される性能の概要を形成するために、このデータを使用することができる。顧客経験に関連するクラウド性能データに対して分析を実施する様々な付加的なまたは代替的な方法が諒解されよう。顧客によって最近経験された性能メトリックを示す１つまたは複数のアプリケーション要件を含む黙示的ＳＬＡが生成された後、分析エンジン２４０は、黙示的ＳＬＡ記憶装置２５０に黙示的ＳＬＡを記憶することができる。
【００３５】
黙示的ＳＬＡ記憶装置２５０は、分析エンジン２４０によって生成される黙示的ＳＬＡを記憶するデバイスであり得る。黙示的ＳＬＡ記憶装置２５０は、読み出し専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、磁気ディスク記憶媒体、光学記憶媒体、フラッシュメモリデバイス、および／または同様の記憶媒体のような機械可読記憶媒体を含んでもよい。図６の例に関連して下記に説明されるように、黙示的ＳＬＡ記憶装置２５０は、特定の顧客にとってアプリケーション要件としての役割を果たすための、デバイスレベルメトリックまたはアプリケーションレベルメトリックを記憶することができる。
【００３６】
明示的ＳＬＡ記憶装置２６０は、クラウドプロバイダおよび顧客によって入力される明示的ＳＬＡを記憶するデバイスであり得る。明示的ＳＬＡ記憶装置２６０は、読み出し専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、磁気ディスク記憶媒体、光学記憶媒体、フラッシュメモリデバイス、および／または同様の記憶媒体のような機械可読記憶媒体を含んでもよい。明示的ＳＬＡ記憶装置２６０は、特定の顧客にとって明示的ＳＬＡとしての役割を果たすための、デバイスレベルメトリックまたはアプリケーションレベルメトリックを記憶することができる。
【００３７】
作業負荷移動器２７０は、リソース移動がアプリケーションにとって適切であるか否かを決定し、移動されたリソースをサポートするための新たなデバイスを選択し、ネットワークインターフェース２１０を介してそのような移動を実行するように構成されているハードウェア、または、機械可読記憶媒体上の実行可能命令を含んでもよい。リソースが移動されるべきであることを決定するための様々な方法が諒解されよう。新たなデバイスを選択するに当たって、作業負荷移動器２７０は、１つまたは複数の黙示的ＳＬＡまたは明示的ＳＬＡを考慮するように構成され得る。たとえば、作業負荷移動器２７０は、移動されるべきリソースがプロビジョニングされる顧客の黙示的ＳＬＡ記憶装置２５０に記憶されている黙示的ＳＬＡからアプリケーション要件を取り出すことができる。その後、作業負荷移動器２７０は、アプリケーション要件を満たすことが可能である可能性が高いデバイスを選択することができる。たとえば、アプリケーション要件が、リソースによって経験される全体的パケット遅延が１０ｍｓであると指定する場合、作業負荷移動器２７０は、クラウド状態記憶装置に記憶されているデータによって反映されるものとしての、１０ｍｓまたはより良好な全体的パケット遅延を報告していることが分かっているデバイスを選択することができる。このように、作業負荷移動２７０は、黙示的ＳＬＡ記憶装置２５０に記憶されている複数のアプリケーション要件または明示的ＳＬＡ記憶装置２６０に記憶されている明示的ＳＬＡの規定を考慮に入れることができる。
【００３８】
様々な代替的な実施形態において、作業負荷移動器２７０は、リテラル差値または割合の変動のような、アプリケーション要件からの所定量だけの変動を許容するように構成されてもよい。たとえば、アプリケーション要件が１０ｍｓのパケット遅延を記述しており、作業負荷移動が顧客またはリソースタイプについて最大１００％の変動を許容するように構成されている場合、作業負荷移動器２７０は、２０ｍｓの全体的パケット遅延を経験するデバイスを選択することができる。
【００３９】
新たなデバイスが選択された後、作業負荷移動器２７０はリソースの実際の移動を実行することができる。たとえば、作業負荷移動器２７０は、リソースをサポートしている現在のデバイスに、リソースが保留されるべきであること、または、リソースのイメージが新たなデバイスもしくはクラウドコントローラ２００に送信されるべきであることを示すメッセージを送信することができる。付加的にまたは代替的に、作業負荷移動器２７０は、新たなデバイスに、新たなデバイスが移動されたリソースのサポートを開始すべきであることを示すメッセージを送信してもよい。様々な実施形態において、このメッセージは、サポートされるべきリソースのイメージを含むかまたは他の様態で識別することができる。リソース移動を実施するための様々な追加の動作および方法が諒解されよう。
【００４０】
図３は、例示的なクラウドコントローラ３００のハードウェア図を示す。例示的なクラウドコントローラ３００は、図２の例示的なクラウドコントロール２００または図１の例示的なクラウドコントローラ１２０に対応することができる。クラウドコントローラ３００は、プロセッサ３１０、データ記憶装置３２０、および入出力（Ｉ／Ｏ）インターフェース３３０を含むことができる。
【００４１】
プロセッサ３１０は、システムバスを介して、クラウドコントローラ３００の動作を制御し、データ記憶装置３２０およびＩ／Ｏインターフェース３３０と協働することができる。本明細書において使用される場合、「プロセッサ」という用語は、マイクロプロセッサ、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、特定用途向け集積回路（ＡＳＩＣ）、および他の同様の処理デバイスのような様々なデバイスを包含するものとして理解される。
【００４２】
データ記憶装置３２０は、クラウド内のリソースを管理するのに有用な様々なプログラムのようなプログラムデータを記憶することができる。たとえば、データ記憶装置３２０は、当業者に知られている、クラウドネットワーク内のリソースを管理するための様々な方法を実施するためのクラウド管理命令３２１を記憶することができる。たとえば、クラウド管理命令３２１は、クラウド内の顧客に対してリソースをプロビジョニングおよび解放するための命令を含むことができる。クラウド管理命令３２１は、１つまたは複数のアプリケーションマネージャと協働し、様々なデータセンター、ハイパーバイザ、または仮想マシンの動作を協調させるのに有用なさらなる命令または方法を含んでもよい。
【００４３】
クラウド管理命令３２１はまた、図７に関連してより詳細に説明されるような、作業負荷移動中に黙示的ＳＬＡを順守するための命令をも含んでもよい。図示されているように、クラウド管理命令３２１は、クラウドモニタ２２０と関連付けられる機能を実施するためのクラウドモニタリング命令３２２、分析エンジン２４０と関連付けられる機能を実施するための分析命令３２３、および、作業負荷移動器２７０と関連付けられる機能を実施するための作業負荷移動命令３２４を含むことができる。
【００４４】
データ記憶装置３２０はまた、クラウド管理命令３２１の実行に使用される様々なデータをも記憶することができる。たとえば、データ記憶装置３２０は、クラウドネットワーク内の他のデバイスによって報告されるクラウド状態情報３２５、クラウドプロバイダと顧客との間で合意されている明示的ＳＬＡ３２６、および、クラウド状態情報３２５または他のデータに基づいてクラウドコントローラ３００によって生成される黙示的ＳＬＡ３２７を記憶することができる。このデータを記憶するための様々な例示的なデータ構成が、図４−図６に関連して下記により詳細に説明される。
【００４５】
Ｉ／Ｏインターフェース３３０は、１つまたは複数の通信チャネルを介した通信をサポートするために、プロセッサ３１０と協働することができる。たとえば、Ｉ／Ｏインターフェース３３０は、キーボードおよびモニタのようなユーザインターフェース、ならびに／または、１つまたは複数のＥｔｈｅｒｎｅｔポートのようなネットワークインターフェースを含むことができる。
【００４６】
いくつかの実施形態において、プロセッサ３１０が、プロセッサ／ＣＰＵコアのようなリソースを含んでもよく、Ｉ／Ｏインターフェース３３０が任意の適切なネットワークインターフェースを含んでもよく、または、データ記憶装置３２０が、メモリもしくは記憶デバイスを含んでもよい。その上、クラウドコントローラ３００は、プロセッサ、メモリ、ネットワークインターフェースまたは記憶デバイスのような構成要素から構成される１つまたは複数のサーバまたはブレードのような任意の適切な物理的ハードウェア構成であってもよい。これらの実施形態のいくつかにおいて、クラウドコントローラ３００は、互いから遠隔しているクラウドネットワークリソースを含んでもよい。
【００４７】
いくつかの実施形態において、クラウドコントローラ３００は、１つまたは複数の仮想マシンを含んでもよい。これらの実施形態のいくつかにおいて、仮想マシンは、異なる物理的機械からの構成要素を含んでもよく、または、地理的に分散されていてもよい。たとえば、データ記憶装置３２０およびプロセッサ３１０は、２つの異なる物理的機械中に存在してもよい。いくつかの実施形態において、クラウドコントローラ３００は、本明細書に記載されている方法を実施するようにプログラムされている汎用コンピュータであってもよい。プロセッサ実行可能プログラムがプロセッサ３１０上で実施されると、プログラムコードセグメントは、特定の論理回路と同様に動作する固有のデバイスを提供するために、プロセッサと組み合わさる。
【００４８】
たとえば、プログラムおよび論理がデータ記憶装置およびメモリ内に記憶されており、メモリがプロセッサに通信可能に接続されている実施形態に関連して本明細書に図示および記載されているが、そのような情報は、任意の適切な構成のデバイスに通信可能に接続されている任意の適切な構成のメモリ、記憶装置またはデータベースを使用して、任意の適切な組合せのメモリ（複数可）、記憶装置（複数可）または内部もしくは外部データベース（複数可）に情報を記憶して、あるいは、任意の適切な数のアクセス可能な外部メモリ、記憶装置またはデータベースを使用して、任意の他の適切な様式で（たとえば、任意の適切な数のメモリ、記憶装置またはデータベースを使用して）記憶されてもよいことが諒解されるべきである。そのため、本明細書において参照されるデータ記憶装置という用語は、メモリ（複数可）、記憶装置（複数可）、およびデータベース（複数可）のすべての適切な組合せを包含するように意図されている。
【００４９】
図４は、デバイスレベル性能メトリックを記憶するための例示的なデータ構成４００を示す。本明細書において使用される場合、「デバイスレベル」という用語は、デバイスがサポートする特定のアプリケーションには関係なく、ハードウェアデバイスの全体としての経験に関係するものとして理解される。データ構成４００は、例示的なクラウドコントローラ２００のクラウド状態記憶装置２３０の内容を反映することができ、報告されるクラウド状態情報を表すことができる。例示的なデータ構成４００は抽象化であってもよいこと、および、データは、たとえば、アレイ、リスト、ツリー、または当業者に知られている他のデータ構造のような様々な様式で記憶されてもよいことが理解される。データ構成４００は、ノードフィールド４０５、タイムスタンプフィールド４１０、ＣＰＵ使用状況フィールド４１５、メモリ使用状況フィールド４２０、記憶装置利用状況フィールド４２５、遅延フィールド４３０、および帯域幅フィールド４３５を含んでもよい。デバイス性能を追跡するための様々な代替的なまたは付加的な性能メトリックが諒解されよう。
【００５０】
ノードフィールド４０５は、レコードが適用されるハードウェアデバイスの識別情報（たとえば、識別子またはアドレス）を記憶することができる。タイムスタンプフィールド４１０は、特定のレコードにおいて担われるメトリックが報告された時刻を示すタイムスタンプを記憶することができる。たとえば、いくつかの実施形態において、クラウドコントローラは、各ノードの性能メトリックの履歴を維持することができ、報告の間で区別するためにタイムスタンプを利用することができる。他の実施形態において、クラウドコントローラは、履歴を維持しなくてもよく、代わりに、たとえば、最も近い報告のみを維持してもよく、または、最近報告された性能メトリックの「平均」を維持してもよい。そのような実施形態において、タイムスタンプフィールド４１０は存在しなくてもよい。
【００５１】
残りのフィールド４１５−４３５は、様々な報告される性能メトリックを示してもよい。ＣＰＵ使用状況フィールド４１５、メモリ使用状況フィールド４２０、および記憶装置利用状況フィールド４２５は、デバイスまたはそのハードウェア構成要素の現在の状態に関する性能メトリックを記憶することができる。遅延フィールド４３０および帯域幅フィールド４３５は、ネットワーク接続品質の測定値のような、外部デバイスまたはサービスを利用しているデバイスの現在の経験に関する性能メトリックを記憶することができる。様々なフィールドが複数のノード間の関係を説明してもよいことが理解される。たとえば、遅延フィールド４１５は、代替的に、すべてのそのようなノードの間での平均ではなく、アプリケーションにおいてノードと他の各ノードとの間の遅延測定値を記憶するための構造であってもよい。たとえば、ページファイル使用状況またはネットワークジッタのような、現在のクラウド状態および顧客経験の分析に有用な様々な追加の性能メトリックが諒解されよう。
【００５２】
一例として、レコード４４０は、時刻「１３７６６０３０４０」において、ノード「１」が、そのＣＰＵが４０％利用されており、そのメモリが９０％満たされており、その記憶装置が５０％満たされていたことを報告したことを示している。さらに、レコードは、デバイスのためのネットワーク接続のパケット遅延が平均して１２ｍｓであり、帯域幅が下流で１０ｍｂｐｓおよび上流で５ｍｂｐｓであったことを示し得る。例示的なレコード４４５および４５０の意味は、上記に照らして諒解されよう。データ構成４００は、多数の追加のレコード４５５を含んでもよい。
【００５３】
図５は、アプリケーションレベル性能メトリックを記憶するための例示的なデータ構成５００を示す。本明細書において使用される場合、「アプリケーションレベル」という用語は、クラウドネットワークの１つまたは複数のハードウェアデバイスを利用するリソースの経験に関係するものとして理解される。理解されるように、リソースは、顧客のためのアプリケーションを実施するために他のリソースと協働することができる。データ構成５００は、例示的なクラウドコントローラ２００のクラウド状態記憶装置２３０の内容を反映することができ、報告されるクラウド状態情報を表すことができる。例示的なデータ構成５００は抽象化であってもよいこと、および、データは、たとえば、アレイ、リスト、ツリー、または当業者に知られている他のデータ構造のような様々な様式で記憶されてもよいことが理解される。データ構成５００は、顧客アプリケーションフィールド５０５、被使用ノードフィールド５１０、リソースフィールド５１５、およびリソース間待ち時間フィールド５２０を含むことができる。アプリケーション性能を追跡するための様々な代替的なまたは付加的な性能メトリックが諒解されよう。
【００５４】
顧客アプリケーションフィールド５０５は、レコードが適用される顧客アプリケーションの指示（たとえば、顧客識別子またはアプリケーション識別子）を含むことができる。被使用ノードフィールド５１０は、顧客アプリケーションと関連付けられるリソースをサポートする１つまたは複数の物理的デバイスの識別情報を含むことができる。リソースフィールド５１５は、顧客アプリケーションの各ノードに対してプロビジョニングされる１つまたは複数のリソースの指示を含むことができる。リソース間待ち時間フィールド５２０は、そのような各リソースの性能メトリックを含むことができる。図示されているように、リソース間待ち時間フィールド５２０は、アプリケーションの他のリソースとの通信にわたるリソースによる平均待ち時間経験を示すことができる。
【００５５】
様々な他の構成およびフィールドが使用されてもよいことが諒解されよう。たとえば、データ構成５００は、タイムスタンプフィールドを利用してもよく、被使用ノードフィールド５１０を含まなくてもよく、各リソースのメトリックを含まなくてもよく、代わりに、すべてのリソースにわたる単一のメトリックを含んでもよく、または、様々なリソース対のリソースメトリックを含んでもよい。様々な他の修正が諒解されよう。
【００５６】
一例として、レコード５２５は、顧客アプリケーション「Ａ」が３つのリソースの使用を報告していることを示し得る。リソース「ＶＭ１」がノード「１」を利用し得、５ｍｓのリソース間待ち時間を経験しているものであり得る。これは、ＤＢ１またはＶＭ２との最近の通信の平均が、平均して５ｍｓの待ち時間をもたらしていることを示し得る。リソース「ＤＢ１」がノード「１」を利用し得、１７ｍｓのリソース間待ち時間を経験しているものであり得る。リソース「ＶＭ２」がノード「２」を利用し得、３０ｍｓのリソース間待ち時間を経験しているものであり得る。上記に照らして、例示的なレコード５３０の意味が諒解されよう。データ構成５００は、多数の追加のレコード５３５を含んでもよい。
【００５７】
図６は、アプリケーション要件を記憶するための例示的なデータ構成６００を示す。データ構成６００は、例示的なクラウドコントローラ２００の黙示的ＳＬＡ記憶装置２５０の内容を反映することができ、分析を使用して生成される黙示的ＳＬＡを表すことができる。いくつかの実施形態において、データ構成６００は明示的ＳＬＡ記憶装置２６０の内容を反映することができ、顧客およびクラウドプロバイダが合意している明示的ＳＬＡを表すことができる。例示的なデータ構成６００は抽象化であってもよいこと、および、データは、たとえば、アレイ、リスト、ツリー、または当業者に知られている他のデータ構造のような様々な様式で記憶されてもよいことが理解される。データ構成６００は、顧客フィールド６０５および規則フィールド６１０を含むことができる。黙示的または明示的ＳＬＡを規定するための様々な代替的なまたは付加的なフィールドが諒解されよう。
【００５８】
顧客フィールド６０５は、レコードが適用される顧客の識別情報（たとえば、顧客識別子またはアプリケーション識別子）を記憶することができ、一方、規則フィールド６１０は、作業負荷配置または移動の間に考慮するための１つまたは複数の規則を記憶することができる。
【００５９】
一例として、レコード６１５は顧客「Ｘ」に対する複数の規則を識別することができる。第１の規則は、リソース「ＶＭ１」が４０％のＣＰＵ利用状況を報告しているノードに位置すべきであるか、または、最近位置していたことを示し得る。第２の規則は、２つのリソース「ＶＭ１」および「ＤＢ１」がそれらの間で２ｍｓの平均待ち時間を経験すべきであるか、または、最近経験していることを示し得る。レコード６１５は複数の追加の規則を含んでもよい。上記に照らして、例示的なレコード６２０の意味が諒解されよう。データ構成６００は、多数の追加のレコード６２５を含んでもよい。
【００６０】
図７は、クラウドネットワーク内で顧客リソースを移動させるための例示的な方法７００を示す。方法７００は、たとえば、クラウドモニタ２２０、分析エンジン２４０、または作業負荷移動器２７０のような、クラウドコントローラ２００の構成要素によって実施され得る。依然として本明細書に記載されている方法の目標を達成しながら、方法７００に様々な修正が行われてもよいことが理解される。たとえば、方法７００は、たとえば、クラウド状態情報について定期的にポーリングするプロセス、黙示的ＳＬＡを定期的に生成するプロセス、および、クラウド内のリソースを定期的に移動させるプロセスのような複数の独立したプロセスとして実施されてもよい。さらなる修正が諒解されよう。
【００６１】
方法７００は、ステップ７０５において開始し、ステップ７１０に進むことができ、クラウドコントローラ２００が性能メトリックについて１つまたは複数のノードをポーリングすることができる。たとえば、クラウドコントローラ２００は、要求メッセージを生成して適切なデバイスに送信することができる。応答が受信された後、クラウドコントローラ２００は、報告された性能メトリックを後の分析のために記憶することができる。いくつかの実施形態において、クラウドコントローラ２００は、データを単純に報告されたとおりに記憶することができ、一方、他の実施形態においては、クラウドコントローラ２００は、記憶する前に、最初に受信されたデータを処理することができ、たとえば、性能データを以前に報告された性能データと平均するなどである。
【００６２】
次に、クラウドコントローラ２００は、ステップ７２０において、分析されるべき顧客を選択することによって、黙示的ＳＬＡを生成するプロセスを開始することができる。たとえば、いくつかの実施形態において、クラウドコントローラ２００は、顧客グループを通じて定期的に反復してもよく、ステップ７２０は、そのようなグループ内の次の顧客を選択することを含んでもよい。その後、ステップ７２５において、クラウドコントローラ２００は、いずれのリソースまたはデバイスが顧客またはそれに属するアプリケーションと関連付けられるかを決定することができる。たとえば、クラウドコントローラは、その顧客のために展開されている現在のアプリケーションを定義または他の様態で説明する、顧客と関連付けられるレコードを取り出すことができる。分析下にある顧客と関連付けられるリソースまたはデバイスが識別された後、クラウドコントローラ２００は、ステップ７３０において、そのリソースまたはデバイスのクラウド状態情報を取り出すことができる。そのようなクラウド状態情報は、ステップ７１０および７１５において取り出され記憶されているクラウド状態情報を含むことができる。
【００６３】
取り出されたクラウド状態情報を使用して、クラウドコントローラ２００は、ステップ７３５において、顧客の最近の経験をモデル化するための分析を実施することができる。クラウドコントローラ２００は、当業者に知られている任意の方法に従ってそのような分析を実施することができる。たとえば、クラウドコントローラは、クラウド使用状況に関するメトリック（たとえば、帯域幅消費、ＣＰＵ使用状況、メモリ使用状況、記憶装置使用状況、リソース間遅延、データセンター負荷など）、挙動に間接的に影響を及ぼす周辺情報（たとえば、日付、月、年、近い休日、嵐または地震のような予測される自然現象）、または顧客サービスプロファイル情報（たとえば、ユーザの数、負荷または使用権のような値の顧客によって提供される予測）のような情報を考慮することができる。この情報を使用して、クラウドコントローラ２００は、たとえば、１つもしくは複数のメトリックに関連する平均的なもしくは最悪の事例の挙動、または、日付／時間特有の平均的なもしくは最悪の事例の挙動のようなユーザ経験を評価するために様々なモデルを使用することができる。日付または時間に基づいて挙動を追跡する１つの方法は、理解されるようなベイズネットワークを使用することを含んでもよい。
【００６４】
そのようなモデルが生成された後、クラウドコントローラ２００は、ステップ７４０において、分析下の顧客と関連付けられる黙示的ＳＬＡを更新することができる。そのようなステップは、黙示的ＳＬＡがその顧客について以前に生成されていない場合に、新たな黙示的ＳＬＡを作成することを含んでもよい。ＳＬＡに対する更新は、最近の顧客経験のモデル、および、その顧客について以前に生成され、黙示的ＳＬＡの以前のバージョンによって保持されている任意の規則を考慮に入れることができる。たとえば、新たな黙示的ＳＬＡは、１つまたは複数の以前に作成された規則を保持してもよく、または、以前の規則から所定量分のみ逸脱するように修正されている規則を含んでもよい。様々な他の修正が諒解されよう。
【００６５】
黙示的ＳＬＡが更新されてからしばらく後、クラウドコントローラ７４５は、顧客についてのプロセスまたは作業負荷移動を開始することができる。ステップ７４５において、クラウドコントローラ７４５は、顧客と関連付けられる１つまたは複数のリソースが移動されるべきであることを決定することができる。この決定は、当業者に知られている任意の方法に従って行われてもよく、ネットワーク状態、クラウドデバイスの作業負荷、予測されるＳＬＡ違反、または、リソースが移動されるべきであることを決定するのに有用な任意の他の要因のような要因に基づいてもよい。
【００６６】
次に、ステップ７５０において、クラウドコントローラ２００は、移動されるリソースをサポートするための候補宛先としてのクラウドデバイスを選択することができる。このステップは、当業者に知られている任意の方法に従って実施されてもよい。たとえば、２０１２年１０月１０日付で出願された米国特許出願第１３／６４８，６２８号、および、２０１３年２月２８日付で出願された米国特許出願第１３／７７９，９２０号に記載されている方法および概念を使用した配置エンジン、それらの開示の全体は、あらゆる目的のために引用により本明細書に組み込まれている。いくつかの実施形態において、ステップ７５０は、移動されるアプリケーションに属する複数のまたはさらにはすべてのリソースについての新たなリソース−デバイスマッピングを計算することを含んでもよい。
【００６７】
候補宛先が選択された後、クラウドコントローラ２００は、ステップ７５５において、候補デバイスおよび任意の他の関連デバイスと関連付けられる任意のクラウド状態情報を取り出すことによって、任意の適切なＳＬＡに対して候補宛先を評価することを開始することができる。ステップ７６０および７６５において、クラウドコントローラ２００は、提案されている移動がそれぞれ任意の明示的ＳＬＡまたは黙示的ＳＬＡに違反するか否かを決定することができる。たとえば、クラウドコントローラは、クラウド状態情報に記憶されている候補デバイスの性能メトリックが、ＳＬＡの任意のアプリケーション要件に違反するか否かを決定することができる。別の例として、クラウドコントローラは、プロセス間待ち時間のアプリケーション要件が移動後に満たされる可能性が高いか否かを推定するために、候補デバイスについて以前に報告されたネットワーク性能、または、候補デバイスと関連付けられる他のリソースについて報告されたプロセス間待ち時間を利用してもよい。いくつかの実施形態において、クラウドコントローラは、リテラル値または割合のような、所定量未満しか逸脱しないアプリケーション要件違反を許容するように構成されてもよい。別の代替形態として、黙示的ＳＬＡが明示的ＳＬＡを満たすために経時的に劣化することを可能にすることによって、サービス品質の漸進的劣化をもたらすために黙示的ＳＬＡが使用されてもよい。また別の特徴は、適合されたサービス提供をもたらしてもよい。たとえば、明示的ＳＬＡと黙示的ＳＬＡとの間の著しい差がある場合、クラウドコントローラ２００または他のエンティティは、最近の性能を識別し、明示的ＳＬＡを黙示的ＳＬＡにより近くするためのサービスアップグレードを提供するメッセージを顧客に送信することができる。様々な他の修正が諒解されよう。
【００６８】
ステップ７６０または７６５のいずれかにおいて、候補宛先が許容不可能であることが分かった場合、方法７００はステップ７５０にループバックすることができ、クラウドコントローラは、異なる候補宛先またはアプリケーションデバイスマッピングを評価のために選択するよう試行することができる。そうでない場合、方法７００はステップ７７０に進むことができ、クラウドコントローラは、たとえば、クラウドデバイスにリソースを候補デバイスへと移動させるよう命令する１つまたは複数のメッセージをクラウドデバイスに送信することによって、選択された移動を実行することができる。その後、方法７００は、ステップ７７５において終了するために進み得る。
【００６９】
様々な実施形態において、明示的ＳＬＡまたは黙示的ＳＬＡを維持する候補宛先を選択することが常に可能または実践可能でなくてもよいことが理解される。そのような事例において、クラウドコントローラは、上または複数のＳＬＡに違反する宛先を選択してもよい。そのような選択を実行するための様々な方法およびＳＬＡが違反されるときの影響を軽減するための方法は諒解されよう。
【００７０】
移動されるサーバをサポートするための適切なデバイスを選択するための様々な代替的な方法が利用されてもよいことが諒解されよう。たとえば、候補宛先を選択するステップ自体が、任意の明示的ＳＬＡまたは黙示的ＳＬＡを考慮に入れてもよく、ステップ７６０、７６５は実施されなくてもよい。明示的ＳＬＡおよび黙示的ＳＬＡを維持しながら作業負荷を移動させるための様々な他の修正および方法が諒解されよう。
【００７１】
上記によれば、様々な実施形態は、クラウドプロバイダおよび顧客によって合意されている任意の明示的ＳＬＡを上回って超える顧客経験を維持しながら、リソースの移動を可能にする。たとえば、最近の顧客経験をモデル化することによって、クラウドコントローラは、顧客の経験に対する悪影響を回避するために、作業負荷移動中に明示的ＳＬＡと同様に使用され得る「黙示的ＳＬＡ」を生成することができる。上記に照らして、様々な他の利点が諒解されよう。
【００７２】
上記の説明から、本発明の様々な例示的実施形態は、ハードウェアによって実装されてもよいことが諒解されるべきである。さらに、様々な例示的実施形態は、本明細書に詳細に説明されている動作を実施するために少なくとも１つのプロセッサによって読み出され実行され得る、機械可読記憶媒体上に記憶されている命令として実装されてもよい。機械可読記憶媒体は、パーソナルコンピュータまたはラップトップコンピュータ、サーバ、または他のコンピューティングデバイスのような機械によって読み出し可能な形態で情報を記憶するための任意のメカニズムを含んでもよい。したがって、有形で一時的でない機械可読記憶媒体は、読み出し専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、磁気ディスク記憶媒体、光学記憶媒体、フラッシュメモリデバイス、および同様の記憶媒体を含んでもよい。
【００７３】
本明細書における任意のブロック図は、本発明の原理を具現化する例示的な回路の概念図を表すことが、当業者には諒解されるべきである。同様に、任意のフローチャート、流れ図、状態遷移図、疑似コードなどは、実質的に機械可読媒体において表されてもよく、そのため、コンピュータまたはプロセッサが明示的に図示されているか否かにかかわらず、そのようなコンピュータまたはプロセッサによって実行されてもよい様々なプロセスを表すことが諒解されよう。
【００７４】
様々な例示的実施形態がその特定の例示的な態様を特に参照して詳細に説明されているが、本発明は他の実施形態が可能であり、その詳細は、様々な明白な点で修正が可能であることが理解されるべきである。当業者には容易に諒解されるように、本発明の精神および範囲内にあるままでありながら、変形および修正が実行されてもよい。したがって、上記の開示、説明、および図面は例示のみを目的とするものであり、特許請求の範囲のみによって規定される本発明を決して限定するものではない。
【図１】
2018198068.tif 000003
【図２】
2018198068.tif 000004
【図３】
2018198068.tif 000005
【図４】
2018198068.tif 000006
【図５】
2018198068.tif 000007
【図６】
2018198068.tif 000008
【図７】
2018198068.tif 000009
【外国語明細書】
2018198068000001.pdf