(57)【要約】【課題】情報処理システムがクラウド・コンピューティング環境を動的に変更するための手法を提供すること。【解決手段】手法においては、各クラウド・グループで実行されている展開されたワークロードが特定され、クラウド・コンピューティング環境はいくつかのクラウド・グループを含む。手法は、展開されたワークロードのそれぞれに１組のコンピューティング・リソースを割り振る。１組のコンピューティング・リソースは、クラウド・コンピューティング環境で利用可能なコンピューティング・リソースの総量の一部である。手法は、クラウド・グループのそれぞれで実行されるワークロードに割り振られるコンピューティング・リソースの組に基づいてクラウド・グループの間にコンピューティング・リソースをさらに割り当てる。【選択図】図５
2015115059.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサおよびメモリを含む情報処理システムにおいて、クラウド・コンピューティング環境を動的に変更する方法であって、
複数のクラウド・グループのそれぞれで実行される複数の展開されたワークロードを特定するステップであって、前記クラウド・コンピューティング環境が、前記複数のクラウド・グループのそれぞれを含む、前記特定するステップと、
前記複数の展開されたワークロードのそれぞれに１組のコンピューティング・リソースを割り振るステップであって、前記１組のコンピューティング・リソースが、前記クラウド・コンピューティング環境で利用可能な複数のコンピューティング・リソースの一部である、前記割り振るステップと、
前記クラウド・グループのそれぞれで実行される前記ワークロードに割り振られるコンピューティング・リソースの組の合計に基づいて前記複数のクラウド・グループの間に前記複数のコンピューティング・リソースを割り当てるステップとを含む、方法。
【請求項２】
前記ワークロードのそれぞれに対応する優先度を計算するステップであって、コンピューティング・リソースの前記組の割り振りが、前記ワークロードの優先度に基づき、前記優先度が、テナントのサービス品質保証契約（ＳＬＡ）、およびクラウド・グループ・プロファイルに含まれるワークロードの優先順位付けの要因に基づく、前記計算するステップをさらに含む、請求項１に記載の方法。
【請求項３】
前記複数のコンピューティング・リソースが、前記複数のワークロードのそれぞれに関して設定された１つまたは複数のコンピューティングの要件に対応し、前記コンピューティングの要件のうちの少なくとも１つが、ファイアウォールの設定、１つまたは複数の定義されたロード・バランサのポリシー、アプリケーション・サーバのクラスタに対する更新、更新されたアプリケーションの構成、セキュリティ・トークン、ネットワーク構成、構成管理データベース（ＣＭＤＢ）の設定、システムの監視の閾値の設定、およびアプリケーションの監視の閾値の設定からなる群から選択される、請求項１に記載の方法。
【請求項４】
前記複数のコンピューティング・リソースを割り振る前記ステップが、
前記クラウド・グループのうちの第１のクラウド・グループから前記クラウド・グループのうちの第２のクラウド・グループに選択されたコンピューティング・リソースを再割り振りするステップをさらに含む、請求項１に記載の方法。
【請求項５】
新しいワークロードが前記クラウド・グループのうちの前記第２のクラウド・グループに入るステップであって、前記第１のクラウド・グループから前記第２のクラウド・グループへの前記選択されたコンピューティング・リソースの再割り振りを引き起こす前記入るステップをさらに含む、請求項４に記載の方法。
【請求項６】
前記複数のコンピューティング・リソースを割り振る前記ステップが、
１つまたは複数のクラウド・グループ・プロファイルを更新するステップであって、前記クラウド・グループ・プロファイルのそれぞれが、前記クラウド・グループのうちの１つに対応する、前記更新するステップと、
前記クラウド・グループ・プロファイルに対する更新に基づいて前記クラウド・グループのうちの第１のクラウド・グループから前記クラウド・グループのうちの第２のクラウド・グループに選択されたコンピューティング・リソースを再割り振りするステップであって、前記更新のうちの少なくとも１つが、テナントの使用の変化、実行されるワークロードの変化、ワークロードが前記クラウド・グループのうちの１つに入ること、およびワークロードが前記クラウド・グループのうちの１つを離脱することからなる群から選択される、前記再割り振りするステップとをさらに含む、請求項１に記載の方法。
【請求項７】
前記クラウド・コンピューティング環境が、サービスとしてのソフトウェア（ＳａａＳ）、サービスとしてのインフラストラクチャ（ＩａａＳ）、およびサービスとしてのプラットフォーム（ＰａａＳ）からなる群から選択される、請求項１に記載の方法。
【請求項８】
１つまたは複数のプロセッサと、
前記プロセッサのうちの少なくとも１つに結合されたメモリと、
クラウド・コンピューティング環境を動的に変更するための、前記メモリに記憶され、前記プロセッサのうちの少なくとも１つによって実行される１組の命令であって、
複数のクラウド・グループのそれぞれで実行される複数の展開されたワークロードを特定するアクションであって、前記クラウド・コンピューティング環境が、前記複数のクラウド・グループのそれぞれを含む、前記特定するアクション、
前記複数の展開されたワークロードのそれぞれに１組のコンピューティング・リソースを割り振るアクションであって、前記１組のコンピューティング・リソースが、前記クラウド・コンピューティング環境で利用可能な複数のコンピューティング・リソースの一部である、前記割り振るアクション、および
前記クラウド・グループのそれぞれで実行される前記ワークロードに割り振られるコンピューティング・リソースの組の合計に基づいて前記複数のクラウド・グループの間に前記複数のコンピューティング・リソースを割り当てるアクションを実行する、前記１組の命令とを含む情報処理システム。
【請求項９】
さらに、前記アクションが、
前記ワークロードのそれぞれに対応する優先度を計算するアクションであって、コンピューティング・リソースの前記組の割り振りが、前記ワークロードの優先度に基づき、前記優先度が、テナントのサービス品質保証契約（ＳＬＡ）、およびクラウド・グループ・プロファイルに含まれるワークロードの優先順位付けの要因に基づく、前記計算するアクションをさらに含む、請求項８に記載の情報処理システム。
【請求項１０】
前記複数のコンピューティング・リソースが、前記複数のワークロードのそれぞれに関して設定された１つまたは複数のコンピューティングの要件に対応し、前記コンピューティングの要件のうちの少なくとも１つが、ファイアウォールの設定、１つまたは複数の定義されたロード・バランサのポリシー、アプリケーション・サーバのクラスタに対する更新、更新されたアプリケーションの構成、セキュリティ・トークン、ネットワーク構成、構成管理データベース（ＣＭＤＢ）の設定、システムの監視の閾値の設定、およびアプリケーションの監視の閾値の設定からなる群から選択される、請求項８に記載の情報処理システム。
【請求項１１】
前記複数のコンピューティング・リソースを割り振る前記アクションが、
前記クラウド・グループのうちの第１のクラウド・グループから前記クラウド・グループのうちの第２のクラウド・グループに選択されたコンピューティング・リソースを再割り振りするアクションをさらに含む、請求項８に記載の情報処理システム。
【請求項１２】
さらに、前記アクションが、
新しいワークロードが前記クラウド・グループのうちの前記第２のクラウド・グループに入るアクションであって、前記第１のクラウド・グループから前記第２のクラウド・グループへの前記選択されたコンピューティング・リソースの再割り振りを引き起こす前記入るアクションをさらに含む、請求項１１に記載の情報処理システム。
【請求項１３】
前記複数のコンピューティング・リソースを割り振る前記アクションが、
１つまたは複数のクラウド・グループ・プロファイルを更新するアクションであって、前記クラウド・グループ・プロファイルのそれぞれが、前記クラウド・グループのうちの１つに対応する、前記更新するアクションと、
前記クラウド・グループ・プロファイルに対する更新に基づいて前記クラウド・グループのうちの第１のクラウド・グループから前記クラウド・グループのうちの第２のクラウド・グループに選択されたコンピューティング・リソースを再割り振りするアクションであって、前記更新のうちの少なくとも１つが、テナントの使用の変化、実行されるワークロードの変化、ワークロードが前記クラウド・グループのうちの１つに入ること、およびワークロードが前記クラウド・グループのうちの１つを離脱することからなる群から選択される、前記再割り振りするアクションとをさらに含む、請求項８に記載の情報処理システム。
【請求項１４】
前記クラウド・コンピューティング環境が、サービスとしてのソフトウェア（ＳａａＳ）、サービスとしてのインフラストラクチャ（ＩａａＳ）、およびサービスとしてのプラットフォーム（ＰａａＳ）からなる群から選択される、請求項８に記載の情報処理システム。
【請求項１５】
請求項１〜７の何れか1項に記載の方法の各ステップをコンピュータに実行させる、コンピュータ・プログラム。
【請求項１６】
前記コンピュータ・プログラムをコンピュータ可読ストレージ媒体に記録した、ストレージ媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はクラウド環境の構成の動的な変更方法に関する。
【背景技術】
【０００２】
クラウド・コンピューティングは、インターネットなどのコンピュータ・ネットワークによって接続された多数のコンピュータを利用する概念に関する。クラウドに基づくコンピューティングは、ネットワークに基づくサービスを指す。これらのサービスは、サーバ・ハードウェアによって提供されるように見える。しかし、サービスは、その代わりに、１つまたは複数の現実のコンピュータ・システムで実行されるソフトウェアによってシミュレートされる仮想的なハードウェア（仮想マシン、または「ＶＭ」）によって提供される。仮想的なサービスは、物理的に存在しないので、したがって、エンドユーザに影響を与えることなく、オン・ザ・フライであちこちに移動させられ、スケール「アップ」またはスケール「アウト」させられ得る。スケール「アップ」（または「ダウン」）は、処理を実行するＶＭに対するリソース（ＣＰＵ、メモリなど）の追加（または削減）を指す。スケール「アウト」（または「イン」）は、特定のワークロード（workload）を実行するために割り振られるＶＭの数を追加することまたは減らすことを指す。
【０００３】
クラウド環境において、アプリケーションは、それらのアプリケーションが安全かつ正常に実行され得る特定の環境を要求する。これらの環境の要件は変化するのが普通である。しかし、現在のクラウド・システムは、これに対処するのに十分なほど柔軟でない。例えば、ファイアウォールのセキュリティまたは高可用性（High Availability）のポリシーの修正は、概して、動的に調整され得ない。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従って、本発明の目的は、移動するワークロードに基づくクラウド環境の構成の動的な変更を可能にすること、すなわち、クラウド・コンピューティング環境を動的に変更する方法、情報処理システム、およびコンピュータ・プログラムを提供することである。
【課題を解決するための手段】
【０００５】
情報処理システムがクラウド・コンピューティング環境を動的に変更するための手法が、提供される。手法においては、各クラウド・グループで実行されている展開されたワークロードが特定され、クラウド・コンピューティング環境はいくつかのクラウド・グループを含む。手法は、展開されたワークロードのそれぞれに１組のコンピューティング・リソースを割り振る。１組のコンピューティング・リソースは、クラウド・コンピューティング環境で利用可能なコンピューティング・リソースの総量の一部である。手法は、クラウド・グループのそれぞれで実行されるワークロードに割り振られるコンピューティング・リソースの組に基づいてクラウド・グループの間にコンピューティング・リソースをさらに割り当てる。
【０００６】
以上の内容は、概要であり、したがって、当然、簡略化、一般化、および詳細の省略を含み、結果として、当業者は、概要が例示的にあるに過ぎず、限定するようにまったく意図されていないことを理解するであろう。特許請求の範囲によってのみ定義される本発明のその他の態様、発明の特徴、および利点は、以下に記載の非限定的な詳細な説明で明らかになるであろう。
【０００７】
添付の図面を参照することによって、本発明がより深く理解される可能性があり、本発明の多くの目的、特徴、および利点が当業者に明らかにされるであろう。
【図面の簡単な説明】
【０００８】
【図１】知識ベースを利用する知識マネージャを含むネットワーク環境を示す図である。
【図２】図１に示された情報処理システムなどの情報処理システムのプロセッサおよび構成要素のブロック図である。
【図３】クラウド環境に対して動的な変更がなされる前のクラウド・グループ（cloudgroup）および構成要素を示すコンポーネント図である。
【図４】移動するワークロードに基づいて動的な変更がクラウド環境で実行された後のクラウド・グループおよび構成要素を示すコンポーネント図である。
【図５】クラウド環境を動的に変更するために使用される論理を示す流れ図である。
【図６】クラウド・グループを再構成するために実行される論理を示す流れ図である。
【図７】ワークロードのリソースを設定するために使用される論理を示す流れ図である。
【図８】クラウド・グループを最適化するために使用される論理を示す流れ図である。
【図９】クラウド・グループにリソースを追加するために使用される論理を示す流れ図である。
【図１０】ワークロードの分析に基づいて異種のクラウドのリソースを動的に移動させるために使用される構成要素の図である。
【図１１】ワークロードのスケーリング要求の動的な処理で使用される論理を示す流れ図である。
【図１２】スケーリング・システムによってスケーリング・プロファイル（scalingprofile）を生成するために使用される論理を示す流れ図である。
【図１３】既存のスケーリング・プロファイルを実装するために使用される論理を示す流れ図である。
【図１４】分析エンジンを使用してワークロードの性能を監視するために使用される論理を示す流れ図である。
【図１５】クラウドのコマンドの傍受を使用するフラクショナル・リザーブ高可用性（ＨＡ）クラウド（fractional reserve High Availability (HA) cloud using cloud commandinterception）を実装する際に使用される構成要素を示すコンポーネント図である。
【図１６】最初のアクティブ・クラウド環境で障害が発生した後の図１５の構成要素の図である。
【図１７】クラウドのコマンドの傍受を使用するフラクショナル・リザーブ高可用性（ＨＡ）クラウドを実装するために使用される論理を示す流れ図である。
【図１８】クラウドのコマンドの傍受で使用される論理を示す流れ図である。
【図１９】パッシブ・クラウドをアクティブ・クラウド環境に切り替えるために使用される論理を示す流れ図である。
【図２０】クラウドのワークロードに関する水平スケーリング・パターン（horizontalscaling pattern）を決定する際に使用される構成要素を示すコンポーネント図である。
【図２１】余ったクラウドの能力を使用することによって仮想マシン（ＶＭ）の特性をリアルタイムで再構築する際に使用される論理を示す流れ図である。
【発明を実施するための形態】
【０００９】
当業者に理解されるであろうように、本発明の態様は、システム、方法、またはコンピュータ・プログラム製品として具現化され得る。したがって、本発明の態様は、すべてハードウェアの実施形態、すべてソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコードなどを含む）、またはソフトウェアの態様とハードウェアの態様とを組み合わせる実施形態の形態をとる可能性があり、これらはすべてが概して本明細書において「回路」、「モジュール」、または「システム」と呼ばれることがある。さらに、本発明の態様は、コンピュータ可読プログラム・コードを具現化する１つまたは複数のコンピュータ可読媒体で具現化されたコンピュータ・プログラム製品の形態をとる可能性がある。
【００１０】
１つまたは複数のコンピュータ可読媒体の任意の組合せが、利用される可能性がある。コンピュータ可読媒体は、コンピュータ可読信号媒体またはコンピュータ可読ストレージ媒体である可能性がある。コンピュータ可読ストレージ媒体は、例えば、電子、磁気、光、電磁、赤外線、もしくは半導体のシステム、装置、またはデバイス、あるいはこれらの任意の好適な組合せである可能性があるがこれらに限定されない。コンピュータ可読ストレージ媒体のより詳細な例（非網羅的なリスト）は、以下、すなわち、１つもしくは複数の配線を有する電気的な接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読出し専用メモリ（ＲＯＭ）、消去可能プログラマブル読出し専用メモリ（ＥＰＲＯＭもしくはフラッシュ・メモリ）、光ファイバ、ポータブル・コンパクト・ディスク読出し専用メモリ（ＣＤ−ＲＯＭ）、光ストレージ・デバイス、磁気ストレージ・デバイス、またはこれらの任意の好適な組合せを含む。本明細書の文脈において、コンピュータ可読ストレージ媒体は、命令実行システム、装置、もしくはデバイスによって、または命令実行システム、装置、もしくはデバイスに関連して使用するためのプログラムを含むまたは記憶することができる任意の有形の媒体である可能性がある。
【００１１】
コンピュータ可読信号媒体は、例えば、ベースバンドで、または搬送波の一部としてコンピュータ可読プログラム・コードを具現化する伝播されるデータ信号を含み得る。そのような伝播される信号は、電磁的、光学的、またはこれらの任意の好適な組合せを含むがこれらに限定されないさまざまな形態のうちの任意の形態をとり得る。コンピュータ可読信号媒体は、コンピュータ可読ストレージ媒体ではなく、命令実行システム、装置、もしくはデバイスによって、または命令実行システム、装置、もしくはデバイスに関連して使用するためのプログラムを伝達、伝播、または搬送することができる任意のコンピュータ可読媒体である可能性がある。
【００１２】
コンピュータ可読媒体上に具現化されるプログラム・コードは、無線、有線、光ファイバ・ケーブル、ＲＦなど、またはこれらの任意の好適な組合せを含むがこれらに限定されない任意の適切な媒体を用いて送信される可能性がある。
【００１３】
本発明の態様の操作を実行するためのコンピュータ・プログラム・コードは、Ｊａｖａ（Ｒ）、Ｓｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋などのオブジェクト指向プログラミング言語と、「Ｃ」プログラミング言語または同様のプログラミング言語などの通常の手続き型プログラミング言語とを含む１つまたは複数のプログラミング言語の任意の組合せで記述され得る。プログラム・コードは、すべてユーザのコンピュータ上で、スタンドアロンのソフトウェア・パッケージとしてユーザのコンピュータ上で部分的に、ユーザのコンピュータ上で部分的にかつ遠隔のコンピュータ上で部分的に、またはすべて遠隔のコンピュータ、サーバ、もしくはサーバのクラスタ上で実行され得る。最後の筋書きでは、遠隔のコンピュータが、ローカル・エリア・ネットワーク（ＬＡＮ）もしくは広域ネットワーク（ＷＡＮ）を含む任意の種類のネットワークを介してユーザのコンピュータに接続され得るか、または外部コンピュータへの接続が（例えば、インターネット・サービス・プロバイダを使用してインターネットを介して）行われ得る。
【００１４】
本発明の態様が、本発明の実施形態による方法、装置（システム）、およびコンピュータ・プログラム製品の流れ図またはブロック図あるいはその両方を参照して以下で説明される。流れ図またはブロック図あるいはその両方の各ブロック、および流れ図またはブロック図あるいはその両方のブロックの組合せは、コンピュータ・プログラム命令によって実装され得ることが理解されるであろう。これらのコンピュータ・プログラム命令は、コンピュータまたはその他のプログラム可能なデータ処理装置のプロセッサによって実行される命令が、流れ図またはブロック図あるいはその両方の１つのブロックまたは複数のブロックで規定された機能／動作を実施するための手段をもたらすように、多目的コンピュータ、専用コンピュータ、またはその他のプログラム可能なデータ処理装置のプロセッサに与えられてマシンを生成する可能性がある。
【００１５】
これらのコンピュータ・プログラム命令は、コンピュータ可読媒体に記憶された命令が、流れ図またはブロック図あるいはその両方の１つのブロックまたは複数のブロックで規定された機能／動作を実施する命令を含む製品をもたらすように、コンピュータ、その他のプログラム可能なデータ処理装置、またはその他のデバイスを特定の方法で機能させることができるコンピュータ可読媒体に記憶される可能性もある。
【００１６】
コンピュータ・プログラム命令は、コンピュータまたはその他のプログラム可能な装置で実行される命令が、流れ図またはブロック図あるいはその両方の１つのブロックまたは複数のブロックで規定された機能／動作を実施するためのプロセスを提供するように、コンピュータで実施されるプロセスを生成するために一連の動作のステップがコンピュータ、その他のプログラム可能な装置、またはその他のデバイスで実行されるようにするために、コンピュータ、その他のプログラム可能なデータ処理装置、またはその他のデバイスにロードされる可能性もある。
【００１７】
概して、以下の詳細な説明は、上述の本発明の概要に従い、必要に応じて本発明のさまざまな態様および実施形態の定義をさらに説明し、拡張する。この目的で、この詳細な説明は、まず、本発明に関連するソフトウェアの技術またはハードウェアの技術あるいはその両方を実装するのに好適な図１のコンピューティング環境を説明する。最近のコンピューティング技術が複数の別個のデバイスを介して実行され得ることを強調するために、ネットワークで接続された環境が、図２においては基本的なコンピューティング環境の拡張として示される。
【００１８】
図１は、本明細書において説明される計算動作を実行することができるコンピュータ・システムの簡略化された例である情報処理システム１００を示す。情報処理システム１００は、プロセッサ・インターフェース・バス１１２に結合された１つまたは複数のプロセッサ１１０を含む。プロセッサ・インターフェース・バス１１２は、プロセッサ１１０を、メモリ・コントローラ・ハブ（ＭＣＨ）としても知られるノースブリッジ１１５に接続する。ノースブリッジ１１５は、システム・メモリ１２０に接続し、（１つまたは複数の）プロセッサ１１０がシステム・メモリにアクセスするための手段を提供する。グラフィックス・コントローラ１２５も、ノースブリッジ１１５に接続する。一実施形態においては、ＰＣＩ  Ｅｘｐｒｅｓｓバス１１８が、ノースブリッジ１１５をグラフィックス・コントローラ１２５に接続する。グラフィックス・コントローラ１２５は、コンピュータ・モニタなどのディスプレイ・デバイス１３０に接続する。
【００１９】
ノースブリッジ１１５およびサウスブリッジ１３５は、バス１１９を用いて互いに接続する。一実施形態において、バスは、ノースブリッジ１１５とサウスブリッジ１３５との間でデータを各方向に高速転送するダイレクト・メディア・インターフェース（ＤＭＩ）バスである。別の実施形態においては、周辺装置相互接続（ＰＣＩ）バスが、ノースブリッジとサウスブリッジとを接続する。Ｉ／Ｏコントローラ・ハブ（ＩＣＨ）としても知られるサウスブリッジ１３５は、概して、ノースブリッジによって提供される能力よりも低速で動作する能力を実装するチップである。サウスブリッジ１３５は、通常、さまざまな構成要素を接続するために使用されるさまざまなバスを提供する。これらのバスは、例えば、ＰＣＩおよびＰＣＩ  Ｅｘｐｒｅｓｓバス、ＩＳＡバス、システム管理バス（ＳＭＢｕｓもしくはＳＭＢ）、またはロー・ピン・カウント（ＬＰＣ：Low Pin Count）バス、あるいはそれらすべてを含む。多くの場合、ＬＰＣバスは、ブートＲＯＭ１９６および（「スーパーＩ／Ｏ」チップを使用する）「レガシー」Ｉ／Ｏデバイスなどの低帯域幅デバイスを接続する。「レガシー」Ｉ／Ｏデバイス（１９８）は、例えば、シリアルおよびパラレル・ポート、キーボード、マウス、またはフロッピー・ディスク・コントローラ、あるいはそれらすべてを含む可能性がある。また、ＬＰＣバスは、サウスブリッジ１３５をトラステッド・プラットフォーム・モジュール（ＴＰＭ）１９５に接続する。サウスブリッジ１３５に含まれることが多いその他の構成要素は、ダイレクト・メモリ・アクセス（ＤＭＡ）コントローラ、プログラム可能割り込みコントローラ（ＰＩＣ：Programmable Interrupt Controller）、およびバス１８４を使用してサウスブリッジ１３５をハード・ディスク・ドライブなどの不揮発性ストレージ・デバイス１８５に接続するストレージ・デバイス・コントローラを含む。
【００２０】
ＥｘｐｒｅｓｓＣａｒｄ１５５は、ホットプラグ可能なデバイスを情報処理システムに接続するスロットである。ＥｘｐｒｅｓｓＣａｒｄ１５５は、ユニバーサル・シリアル・バス（ＵＳＢ）とＰＣＩ  Ｅｘｐｒｅｓｓバスとの両方を使用してサウスブリッジ１３５に接続するとき、ＰＣＩ  Ｅｘｐｒｅｓｓの接続性とＵＳＢの接続性との両方をサポートする。サウスブリッジ１３５は、ＵＳＢに接続するデバイスにＵＳＢの接続性を提供するＵＳＢコントローラ１４０を含む。これらのデバイスは、ウェブカメラ（カメラ）１５０、赤外線（ＩＲ）受信機１４８、キーボードおよびトラックパッド１４４、ならびにワイヤレス・パーソナル・エリア・ネットワーク（ＰＡＮ）を提供するＢｌｕｅｔｏｏｔｈデバイス１４６を含む。さらに、ＵＳＢコントローラ１４０は、マウス、取外し可能な不揮発性ストレージ・デバイス１４５、モデム、ネットワーク・カード、ＩＳＤＮコネクタ、ファックス、プリンタ、ＵＳＢハブ、および多くのその他の種類のＵＳＢ接続されるデバイスなどのその他の種々のＵＳＢ接続されるデバイス１４２にＵＳＢの接続性を提供する。取外し可能な不揮発性ストレージ・デバイス１４５は、ＵＳＢ接続されるデバイスとして示されているが、Ｆｉｒｅｗｉｒｅインターフェースなどの異なるインターフェースを用いて接続される可能性がある。
【００２１】
ワイヤレス・ローカル・エリア・ネットワーク（ＬＡＮ）デバイス１７５は、ＰＣＩまたはＰＣＩ  Ｅｘｐｒｅｓｓバス１７２を介してサウスブリッジ１３５に接続する。概して、ＬＡＮデバイス１７５は、情報処理システム１００と別のコンピュータ・システムまたはデバイスとの間のワイヤレス通信を行うためにすべて同じプロトコルを使用する無線変調技術のＩＥＥＥ８０２．１１規格のうちの１つを実装する。光ストレージ・デバイス１９０は、シリアルＡＴＡ（ＳＡＴＡ）バス１８８を使用してサウスブリッジ１３５に接続する。シリアルＡＴＡアダプタおよびデバイスは、高速シリアル・リンクを介して通信する。また、シリアルＡＴＡバスは、サウスブリッジ１３５を、ハード・ディスク・ドライブなどのその他の形式のストレージ・デバイスに接続する。サウンド・カードなどのオーディオ回路１６０は、バス１５８を介してサウスブリッジ１３５に接続する。さらに、オーディオ回路１６０は、オーディオ・ライン入力および光デジタルオーディオ入力ポート１６２、光デジタル出力およびヘッドフォン・ジャック１６４、内蔵スピーカ１６６、ならびに内蔵マイクロフォン１６８などの機能を提供する。イーサネット・コントローラ１７０は、ＰＣＩまたはＰＣＩ  Ｅｘｐｒｅｓｓバスなどのバスを用いてサウスブリッジ１３５に接続する。イーサネット・コントローラ１７０は、情報処理システム１００を、ローカル・エリア・ネットワーク（ＬＡＮ）、インターネット、ならびにその他のパブリックおよびプライベート・コンピュータ・ネットワークなどのコンピュータ・ネットワークに接続する。
【００２２】
図１は１つの情報処理システムを示すが、情報処理システムは、多くの形態をとる可能性がある。例えば、情報処理システムは、デスクトップ、サーバ、ポータブル、ラップトップ、ノートブック、またはその他のフォーム・ファクタ・コンピュータもしくはデータ処理システムの形態をとる可能性がある。加えて、情報処理システムは、携帯情報端末（ＰＤＡ）、ゲーム機、ＡＴＭ機、ポータブル電話デバイス、通信デバイス、またはプロセッサおよびメモリを含むその他のデバイスなどのその他のフォーム・ファクタを採用する可能性がある。
【００２３】
セキュリティ機能を提供するための、図１に示される、本明細書に記載のトラステッド・プラットフォーム・モジュール（ＴＰＭ１９５）は、ハードウェア・セキュリティ・モジュール（ＨＳＭ）の一例であるに過ぎない。したがって、本明細書において説明され、主張されるＴＰＭは、「トラステッド・プラットフォーム・モジュール（ＴＰＭ）仕様バージョン１．２」と題されたTrusted Computing Groups（ＴＣＧ）規格に準拠するハードウェア・セキュリティ・デバイスを含むがこれに限定されない任意の種類のＨＳＭを含む。ＴＰＭは、図２に概要を示される情報処理システムなどの任意の数の情報処理システムに組み込まれ得るハードウェア・セキュリティ・サブシステムである。
【００２４】
図２は、本明細書において説明される方法がネットワークで接続された環境で動作する多種多様な情報処理システムで実行され得ることを示すための、図１に示された情報処理システム環境の拡張を提供する。情報処理システムの種類は、ハンドヘルド・コンピュータ／モバイル電話２１０などの小型のハンドヘルド・デバイスからメインフレーム・コンピュータ２７０などの大型のメインフレーム・システムまでに及ぶ。ハンドヘルド・コンピュータ２１０の例は、携帯情報端末（ＰＤＡ）、ＭＰ３プレーヤ、ポータブル・テレビ、およびコンパクト・ディスク・プレーヤなどのパーソナル・エンターテインメント・デバイスを含む。情報処理システムのその他の例は、ペンまたはタブレット・コンピュータ２２０、ラップトップまたはノートブック・コンピュータ２３０、ワークステーション２４０、パーソナル・コンピュータ・システム２５０、およびサーバ２６０を含む。図２に個々に示されていないその他の種類の情報処理システムは、情報処理システム２８０によって表される。示されるように、さまざまな情報処理システムは、コンピュータ・ネットワーク２００を用いて一緒にネットワークで接続される可能性がある。さまざまな情報処理システムを相互接続するために使用され得るコンピュータ・ネットワークの種類は、ローカル・エリア・ネットワーク（ＬＡＮ）、ワイヤレス・ローカル・エリア・ネットワーク（ＷＬＡＮ）、インターネット、公衆交換電話網（ＰＳＴＮ）、その他のワイヤレス・ネットワーク、および情報処理システムを相互接続するために使用され得る任意のその他のネットワーク・トポロジーを含む。情報処理システムの多くは、ハード・ドライブなどの不揮発性データ・ストアまたは不揮発性メモリあるいはその両方を含む。図２に示される情報処理システムの一部は、別々の不揮発性データ・ストアを示す（サーバ２６０は、不揮発性データ・ストア２６５を利用し、メインフレーム・コンピュータ２７０は、不揮発性データ・ストア２７５を利用し、情報処理システム２８０は、不揮発性データ・ストア２８５を利用する）。不揮発性データ・ストアは、さまざまな情報処理システムの外部にある構成要素である可能性があり、または情報処理システムのうちの１つの内部にある可能性がある。加えて、取外し可能な不揮発性ストレージ・デバイス１４５は、取外し可能な不揮発性ストレージ・デバイス１４５を情報処理システムのＵＳＢポートまたはその他のコネクタに接続するなど、さまざまな技術を使用して２つ以上の情報処理システムの間で共有される可能性がある。
【００２５】
図３は、クラウド環境に対して動的な変更がなされる前のクラウド・グループおよび構成要素を示すコンポーネント図である。１つまたは複数のプロセッサおよびメモリを含む情報処理システムが、図１に示されたクラウド・コンピューティング環境を動的に変更する。展開されたワークロードは、クラウド・グループ３２１、３２２、および３２３のそれぞれで実行されている。示される例においては、人事管理３０１のワークロードが、クラウド・グループ３２１で実行され、ワークロードは、ＨＲプロファイル３１１に基づいて構成される。同様に、財務３０２のワークロードが、クラウド・グループ３２２で実行され、ワークロードは、財務プロファイル３１２に基づいて構成される。ソーシャル・コネクション（Social Connections）３０３のワークロードが、クラウド・グループ３２３で実行され、ワークロードは、ソーシャル・コネクション・プロファイル３１３に基づいて構成される。
【００２６】
クラウド・コンピューティング環境は、クラウド・グループ３２１、３２２、および３２３のそれぞれを含み、展開されたワークロードにコンピューティング・リソースを与える。コンピューティング・リソースの組は、さまざまな計算ノードに割り振られたＣＰＵおよびメモリなどのリソースを含む（ノード３３１および３３２はクラウド・グループ３２１で実行されるところが示され、ノード３３３および３３４はクラウド・グループ３２２で実行されるところが示され、ノード３３５、３３６、および３３７はクラウド・グループ３２３で実行されるところが示されている）。リソースは、ＩＰアドレスも含む。クラウド・グループ３２１のためのＩＰアドレスは、１０個のＩＰアドレスを有するＩＰグループ３４１として示され、クラウド・グループ３２２のためのＩＰアドレスは、５０個のＩＰアドレスを有するＩＰグループ３４２として示され、クラウド・グループ３２３のためのＩＰアドレスは、グループ毎にそれぞれ５０個のＩＰアドレスを有するＩＰグループ３４３および３４４として示される。各クラウド・グループは、クラウド・グループ・プロファイル（クラウド・グループ３２１のためのプロファイルであるＣＧプロファイル３５１、クラウド・グループ３２２のためのプロファイルであるＣＧプロファイル３５２、およびクラウド・グループ３２３のためのプロファイルであるＣＧプロファイル３５３）を有する。クラウド・コンピューティング環境によって利用可能にされるコンピューティング・リソースは、クラウド・グループのそれぞれで実行されるワークロードに割り振られたコンピューティング・リソースの組に基づいてクラウド・グループの間に割り当てられる。また、クラウド・コンピューティング環境は、ネットワーク接続性をさまざまなクラウド・グループに与えるネットワーク・バックプレーン３６０を提供する。より多くのリンクが割り振られたクラウド・グループがより広いネットワーク帯域幅を持つようにリンクが与えられる。示された例においては、人事管理クラウド・グループ３２１が１つのネットワーク・リンク３６１を有する。しかし、財務クラウド・グループ３２２は、割り振られた２つの完全なネットワーク・リンク（リンク３６２および３６３）と、ソーシャル・コネクション・クラウド・グループ３２３と共有される部分的なリンク３６４とを有する。ソーシャル・コネクション・クラウド・グループ３２３は、リンク３６４を財務クラウド・グループと共有し、割り振られた３つのさらなるネットワーク・リンク（３６５、３６６、および３６７）も割り振られている。
【００２７】
図３および４に示される以下の例においては、必要とされるクラウド・グループ３２２で実行される財務アプリケーションは、翌月が従業員がボーナスを受け取る月であるので、翌月、セキュリティおよび優先度を増す。したがって、アプリケーションは、そのアプリケーションがより可用性が高く、より高いセキュリティを有することを必要とする。これらの更新された要件は、修正されたクラウド・グループ・プロファイル３５３の形態でもたらされる。更新されたクラウド・グループ・プロファイル３５３の処理は、図３に示された現在の構成がこれらの要件に対応せず、したがって、再構成される必要があると判定する。
【００２８】
図４に示されるように、空いている計算ノード（計算ノード３３５）が、アプリケーションの可用性を高めるためにクラウド・グループ３２３からクラウド・グループ３２２に引き込まれる。更新されたセキュリティの要件は、ファイアウォールでアクセスを制限し、セキュリティの暗号化を強化する。図４に示されるように、ネットワーク接続は、セキュリティをさらに改善するために物理的に分離されるように再構成される。特に、ネットワーク・リンク３６４がどのようにしてソーシャル・コネクション・クラウド・グループともはや共有されなくなるかに注目されたい。加えて、財務クラウド・グループに関して現在見つかっている増加したネットワークの需要のために、ソーシャル・コネクション・グループに前に割り振られていたネットワーク・リンク（リンク３６５）のうちの１つが、今や財務グループに割り振られる。リソースの再割り振りの後、クラウド・グループ・プロファイルは正しく構成されており、財務アプリケーションの要件が満たされる。図３において、ソーシャル・コネクション・アプリケーションが高セキュリティおよび高優先度で実行されており、内部ＨＲアプリケーションが低セキュリティおよび低優先度で実行されており、内部財部アプリケーションが中セキュリティおよび中優先度で実行されていたことに留意されたい。財務プロファイル３１２に対する変更が原因である再構成の後、ソーシャル・コネクション・アプリケーションは、引き続き中セキュリティおよび中優先度で実行されているが、内部ＨＲアプリケーションは、高セキュリティおよび高優先度で実行されており、内部財務アプリケーションも、高セキュリティおよび高優先度で実行されている。
【００２９】
図５は、クラウド環境を動的に変更するために使用される論理を示す流れ図を示す。処理は、５００で始まり、それから、ステップ５１０において、プロセスは、クラウド環境に対する動的な変更を引き起こした再構成のトリガを特定する。再構成のトリガが、クラウド・グループに入っていくアプリケーションかまたはクラウド・グループを離脱していくアプリケーションかのどちらかであったかどうかに関して、プロセスによって判定がなされる（判定５２０）。再構成のトリガがクラウド・グループに入っていくかまたはクラウド・グループを離脱していくアプリケーションである場合、判定５２０は、さらなる処理のために「はい」の分岐に分岐する。
【００３０】
ステップ５３０において、プロセスは、入っていくかまたは離脱していくアプリケーションに対応するアプリケーション・プロファイルを、データ・ストア５４０に記憶されるクラウド・グループ・アプリケーション・プロファイルに追加するか、またはデータ・ストア５４０に記憶されるクラウド・グループ・アプリケーション・プロファイルから削除する。データ・ストア５４０に記憶されるクラウド・グループ・アプリケーション・プロファイルは、クラウド・コンピューティング環境で現在実行されているクラウド・グループ毎のアプリケーションを含む。予め定義されたプロセス５８０で、プロセスは、クラウド・グループ・プロファイルがステップ５３０によって調整された後、クラウド・グループを再構成する（処理の詳細に関しては図６および対応する本文を参照されたい）。ステップ５９５において、処理は、次の再構成のトリガが発生するのを待ち、次の再構成のトリガが発生した時点で、処理は、ステップ５１０にループして戻って、次の再構成のトリガを処理する。
【００３１】
判定５２０に戻ると、再構成のトリガが、クラウド・グループに入っていくかまたはクラウド・グループから離脱していくアプリケーションが原因でない場合、判定５２０は、さらなる処理のために「いいえ」の分岐に分岐する。ステップ５５０において、プロセスは、クラウド・グループで現在実行されている第１のアプリケーションを選択する。ステップ５６０において、プロセスは、選択されたアプリケーションのプロファイルを調べることによって選択されたアプリケーションに関連する変更された要件を調べる。変更された要件は、ファイアウォールの設定の構成、定義されたロード・バランサのポリシー、アプリケーション・サーバのクラスタおよびアプリケーションの構成に対する更新、セキュリティ・トークンの交換および更新、更新を必要とするネットワーク構成、構成管理データベース（ＣＭＤＢ）で追加／更新される必要がある構成項目、ならびにシステムおよびアプリケーションの監視の閾値の設定などの領域をもたらす可能性がある。選択されたアプリケーションに関連する変更された要件がステップ５６０で特定されたかどうかに関して、プロセスによって判定がなされる（判定５７０）。選択されたアプリケーションに関連する変更された要件が特定された場合、判定５７０は、「はい」の分岐に分岐し、それから、予め定義されたプロセス５８０が、クラウド・グループを再構成するために実行される（処理の詳細に関しては図６および対応する本文を参照されたい）。一方、選択されたアプリケーションに関連する変更された要件がまったく特定されなかった場合、処理は、「いいえ」の分岐に分岐する。調べるべきクラウド・グループのさらなるアプリケーションが存在するかどうかに関して、プロセスによって判定がなされる（判定５９０）。調べるべきさらなるアプリケーションが存在する場合、判定５９０は、上述のようにクラウド・グループの次のアプリケーションを選択し、処理するためにループして戻る「はい」の分岐に分岐する。このループは、変更の要件を有するアプリケーションが特定される（判定５７０が「はい」の分岐に分岐する）か、またはクラウド・グループに選択すべきさらなるアプリケーションが存在しなくなる（判定５９０が「いいえ」の分岐に分岐する）かのどちらかまで継続する。クラウド・グループに選択すべきさらなるアプリケーションが存在しない場合、判定５９０は、「いいえ」の分岐に分岐し、それから、ステップ５９５において、処理は、次の再構成のトリガが発生するのを待ち、次の再構成のトリガが発生した時点で、処理は、ステップ５１０にループして戻って、次の再構成のトリガを処理する。
【００３２】
図６は、クラウド・グループを再構成するために実行される論理を示す流れ図を示す。再構成プロセスは、６００で始まり、それから、ステップ６１０において、プロセスは、テナントのための適切なサービス品質保証契約（ＳＬＡ）に基づいて、クラウド・グループで実行される１組のテナントを優先度で順序付ける。プロセスは、データ・ストア６０５からテナントのＳＬＡを受け取り、優先順位を付けられたテナントのリストをメモリ領域６１５に記憶する。
【００３３】
ステップ６２０において、プロセスは、メモリ領域６１５に記憶された優先順位を付けられたテナントのリストから第１の（最も優先度の高い）テナントを選択する。選択されたテナントに対応するワークロードが、メモリ領域６２５に記憶される現在のクラウド環境から取得される。ステップ６３０において、プロセスは、選択されたテナントのために展開される第１のワークロードを選択する。ステップ６４０において、プロセスは、選択されたワークロードの優先度を決定または計算する。ワークロードの優先度は、テナントのＳＬＡ、およびデータ・ストア５４０から取得されるアプリケーション・プロファイルで設定されたテナントの優先度に基づく。所与のテナントは、テナントにとってのアプリケーションの必要性およびアプリケーションの重要性に基づいて異なるアプリケーションに異なる優先度を割り振る可能性がある。図３および４は、所与の企業で実行されるさまざまなアプリケーションに異なる優先度が割り振られる例を提供した。次いで、ワークロードの優先度が、メモリ領域６４５に記憶される。ステップ６５０において、プロセスは、ワークロードの現在の需要を特定し、さらに、テナントの優先度、ワークロードの優先度、およびワークロードの現在のまたは予測される需要に基づいてワークロードの重み付けされた優先度を計算する。ワークロードの重み付けされた優先度が、メモリ領域６５５に記憶される。処理される必要がある選択されたテナントのためのさらなるワークロードが存在するかどうかに関して、プロセスによって判定がなされる（判定６６０）。処理すべき選択されたテナントのためのさらなるワークロードが存在する場合、判定６６０は、上述のように次のワークロードを選択し、処理するためにステップ６３０にループして戻る「はい」の分岐に分岐する。このループは、処理すべきテナントのためのさらなるワークロードが存在しなくなるまで継続し、処理すべきテナントのためのさらなるワークロードがなくなった時点で、判定６６０は、「いいえ」の分岐に分岐する。
【００３４】
処理すべきさらなるテナントが存在するかどうかに関して、プロセスによって判定がなされる（判定６６５）。処理すべきさらなるテナントが存在する場合、判定６６５は、優先度によって次のテナントを選択し、上述のように新たに選択されたテナントのためのワークロードを処理するためにループして戻る「はい」の分岐に分岐する。このループは、テナントのすべてのためのワークロードのすべてが処理されるまで継続し、テナントのすべてのためのワークロードのすべてが処理された時点で、判定６６５は、さらなる処理のために「いいえ」の分岐に分岐する。
【００３５】
ステップ６７０において、プロセスは、メモリ領域６５５で見つかった重み付けされた優先度に基づいてワークロードを並べ替える。それらのワークロードのそれぞれの重み付けされた優先度によって順序付けられたワークロードは、メモリ領域６７５に記憶される。予め定義されたプロセス６８０で、プロセスは、メモリ領域６７５に含まれるワークロードのそれぞれのためのワークロードのリソースを設定する（処理の詳細に関しては図７および対応する本文を参照されたい）。予め定義されたプロセス６８０は、割り当てられたワークロードのリソースをメモリ領域６８５に記憶する。予め定義されたプロセス６８０で、プロセスは、メモリ領域６８５に記憶された割り当てられたワークロードのリソースに基づいてクラウド・グループを最適化する（処理の詳細に関しては図８および対応する本文を参照されたい）。次いで、プロセスは、６９５で呼び出し元のルーチン（図５参照）に戻る。
【００３６】
図７は、ワークロードのリソースを設定するために使用される論理を示す流れ図を示す。処理は、７００で始まり、それから、ステップ７１０において、プロセスは、メモリ領域７１５から第１の（最も高い重み付けされた優先度の）ワークロードを選択し、メモリ領域７１５は、最も高い重み付けされた優先度のワークロードから最も低い重み付けされた優先度のワークロードまで既に並べ替えられている。
【００３７】
ステップ７２０において、プロセスは、ワークロードの需要およびワークロードの優先度に基づいて、選択されたワークロードによって必要とされるリソースを計算する。ワークロードの需要および優先度を前提としてワークロードを実行するために必要とされるリソースは、メモリ領域７２５に記憶される。
【００３８】
ステップ７３０において、プロセスは、ＶＭの数、必要とされるＩＰアドレス、ネットワーク帯域幅などのワークロードに割り当てられたリソースを取得し、ワークロードの現在のリソース割り当てをワークロードのために必要とされるワークロードの計算されたリソースと比較する。比較に基づいてワークロードのリソース割り当てに対する変更が必要であるかどうかに関して、プロセスによって判定がなされる（判定７４０）。ワークロードのリソース割り当てに対する変更が必要とされる場合、判定７４０は、「はい」の分岐に分岐し、それから、ステップ７５０において、プロセスは、メモリ領域７５５に記憶されるワークロードのための「好ましい」リソース割り当てを設定する。「好ましい」という指定は、リソースが十分に利用可能である場合に、これらが、ワークロードが割り当てるべきであったリソースであることを意味する。しかし、クラウド・グループのリソースの制約のために、ワークロードは、好ましいワークロードのリソース割り当て未満の割り当てにとどめる必要がある可能性がある。判定７４０に戻ると、ワークロードが必要とされるリソースを既に割り当て済みである場合、判定７４０は、ステップ７５０を回避する「いいえ」の分岐に分岐する。
【００３９】
処理される必要がある、重み付けされた優先度によって順序付けられたさらなるワークロードが存在するかどうかに関して、プロセスによって判定がなされる（判定７６０）。処理すべきさらなるワークロードが存在する場合、判定７６０は、上述のように、次の（次に高く重み付けされた優先度の）ワークロードを選択し、新たに選択されたワークロードのリソースを設定するためにステップ７１０にループして戻る「はい」の分岐に分岐する。このループは、ワークロードのすべてが処理されるまで継続し、ワークロードのすべてが処理される時点で、判定７６０は、「いいえ」の分岐に分岐し、処理は、７９５で、呼び出し元のルーチンに戻る（図６参照）。
【００４０】
図８は、クラウド・グループを最適化するために使用される論理を示す流れ図を示す。処理は、８００で始まり、それから、ステップ８１０において、プロセスは、データ・ストア８０５に記憶されたクラウド構成から第１のクラウド・グループを選択する。クラウド・グループは、さまざまなグループに適用されるサービス品質保証契約（ＳＬＡ）、さまざまなクラウド・グループに割り振られた優先度、または何らかのその他の基準に基づいて並べ替えられる可能性がある。
【００４１】
ステップ８２０において、プロセスは、選択されたクラウド・グループの各ワークロードのための好ましいワークロードのリソースを集め、選択されたクラウド・グループで実行されるワークロードの好ましいワークロードのリソースを満たすために好ましいクラウド・グループのリソース（クラウド・グループによって必要とされる合計のリソース）を計算する。好ましいワークロードのリソースは、メモリ領域７５５から取得される。選択されたクラウド・グループで実行されるワークロードのワークロードのリソースを満たすために必要とされる計算された好ましいクラウド・グループのリソースは、メモリ領域８２５に記憶される。
【００４２】
ステップ８３０において、プロセスは、クラウド・コンピューティング環境で利用可能な第１のリソースの種類を選択する。ステップ８４０において、選択されたリソースが、選択されたクラウド・グループに既に割り当てられているリソースの現在の割り当てと比較される。クラウド・グループのためのリソースの現在の割り当ては、メモリ領域８４５から取得される。より多くの選択されたリソースが、選択されたクラウド・グループで実行されるワークロードのワークロードのリソースを満たすために選択されたクラウド・グループによって必要とされるかどうかに関して、プロセスによって判定がなされる（判定８５０）。より多くの選択されたリソースが選択されたクラウド・グループによって必要とされる場合、判定８５０は、「はい」の分岐に分岐し、それから、予め定義されたプロセス８６０において、プロセスは、選択されたクラウド・グループにリソースを追加する（処理の詳細に関しては図９および対応する本文を参照されたい）。一方、より多くの選択されたリソースが選択されたクラウド・グループによって必要とされない場合、判定８５０は、「いいえ」の分岐に分岐し、それから、過剰な選択されたリソースがクラウド・グループに現在割り当てられているかどうかに関して、プロセスによって判定がなされる（判定８７０）。過剰な選択されたリソースがクラウド・グループに現在割り当てられている場合、判定８７０は、「はい」の分岐に分岐し、それから、ステップ８７５において、プロセスは、過剰な割り当てられたリソースを、選択されたクラウド・グループから「利用可能」であるものとして印を付ける。この印を付けることは、メモリ領域８４５に記憶されたクラウド・グループのリソースのリストに対して行われる。一方、過剰な選択されたリソースが選択されたクラウド・グループに現在割り当てられていない場合、判定８７０は、ステップ８７５を回避する「いいえ」の分岐に分岐する。
【００４３】
分析すべきさらなるリソースの種類が存在するかどうかに関して、プロセスによって判定がなされる（判定８８０）。分析すべきさらなるリソースの種類が存在する場合、判定８８０は、上述のように次のリソースの種類を選択し、分析するためにステップ８３０にループして戻る「はい」の分岐に分岐する。このループは、選択されたクラウド・グループに関してリソースの種類のすべてが処理されるまで継続し、選択されたクラウド・グループに関してリソースの種類のすべてが処理される時点で、判定８８０は、「いいえ」の分岐に分岐する。選択し、処理すべきさらなるクラウド・グループが存在するかどうかに関して、プロセスによって判定がなされる（判定８９０）。選択し、処理すべきさらなるクラウド・グループが存在する場合、判定８９０は、上述のように次のクラウド・グループを選択し、処理するためにステップ８１０にループして戻る「はい」の分岐に分岐する。このループは、クラウド・グループのすべてが処理されるまで継続し、クラウド・グループのすべてが処理される時点で、判定８９０は、「いいえ」の分岐に分岐し、処理は、８９５で、呼び出し元のルーチンに戻る（図６参照）。
【００４４】
図９は、クラウド・グループにリソースを追加するために使用される論理を示す流れ図を示す。処理は、９００で始まり、それから、ステップ９１０において、プロセスは、おそらくは、このクラウド・グループによって望まれる過剰なリソースを有するその他のクラウド・グループを見つけるために、クラウド・コンピューティング環境で実行されるその他のクラウド・グループを調べる。図８に既に示されたように、クラウド・グループが過剰なリソースを特定するとき、過剰なリソースは、印を付けられ、その他のクラウド・グループが利用できるようにされる。すべてのクラウドのリソース（クラウド・グループのそれぞれ）およびそれらのリソースの割り当てならびに過剰なリソースのリストが、メモリ領域９０５に作られる。
【００４５】
過剰な所望のリソースを有する１つまたは複数のクラウド・グループが特定されたかどうかに関する、プロセスによって判定がなされる（判定９２０）。過剰な所望のリソースを有する１つまたは複数のクラウド・グループが特定される場合、判定９２０は、「はい」の分岐に分岐し、それから、ステップ９２５において、プロセスは、特定された過剰な所望の（必要とされる）リソースを有する第１のクラウド・グループを選択する。メモリ領域９３５から取得された選択されたクラウド・グループのプロファイルとその他のクラウド・グループのプロファイルとの両方に基づいて、このクラウド・グループが選択されたクラウド・グループからリソースを受け取ることを許されるかどうかに関して、プロセスによって判定がなされる（判定９３０）。例えば、図３および４では、１つのクラウド・グループ（財務グループ）が、財務グループで実行される処理の機密性が原因で高セキュリティ設定を有する筋書きが示された。この機密性は、ネットワーク・リンクなどの一部のリソースが共有されるか、または財務グループからその他のクラウド・グループのうちの１つに再割り当てされることを防止した可能性がある。リソースが選択されたクラウド・グループからこのクラウド・グループに移動させられ得る場合、判定９３０は、「はい」の分岐に分岐し、それから、ステップ９４０において、リソース割り当てが、選択されたクラウド・グループからこのクラウド・グループに移動させられ、メモリ領域９０５に記憶されたクラウドのリソースのリストおよびメモリ領域９９０に記憶されたクラウドのリソースに反映される。一方、リソースが選択されたクラウド・グループからこのクラウド・グループに移動させられ得ない場合、判定９３０は、ステップ９４０を回避する「いいえ」の分岐に分岐する。調べるべきリソースを有するさらなるクラウド・グループが存在するかどうかに関して、プロセスによって判定がなされる（判定９４５）。調べるべきさらなるクラウド・グループが存在する場合、判定９４５は、次のクラウド・グループから利用することができる可能性があるリソースを選択し、分析するためにステップ９２５にループして戻る「はい」の分岐に分岐する。このループは、調べるべきさらなるクラウド・グループがなくなるまで（またはリソースの必要性が満たされるまで）継続し、調べるべきさらなるクラウド・グループがなくなる時点で、判定９４５は、「いいえ」の分岐に分岐する。
【００４６】
その他のクラウド・グループから利用することができる過剰なリソースを調べた後、クラウド・グループがまだより多くのリソースを必要とするかどうかに関して、プロセスによって判定がなされる（判定９５０）。さらなるリソースが必要とされない場合、判定９５０は、「いいえ」の分岐に分岐し、それから、処理は、９５５で呼び出し元のルーチンに戻る（図８参照）。一方、さらなるリソースがこのクラウド・グループのためにまだ必要とされる場合、判定９５０は、さらなる処理のために「はい」の分岐に分岐する。
【００４７】
ステップ９６０において、プロセスは、このクラウド・コンピューティング環境に現在割り当てられておらず、クラウド・プロファイル、ＳＬＡなどに基づいてこのクラウド・コンピューティング環境に割り当てられることを許される利用可能なリソースに関してデータ・センタに確認する。データ・センタのリソースは、メモリ領域９６５から取得される。このクラウド・グループのリソースの必要性を満たすデータ・センタのリソースが見つかったかどうかに関して、プロセスによって判定がなされる（判定９７０）。このクラウド・グループのリソースの必要性を満たすデータ・センタのリソースが見つかった場合、判定９７０は、「はい」の分岐に分岐し、それから、ステップ９８０において、プロセスは、特定されたデータ・センタのリソースをこのクラウド・グループに割り当てる。このクラウド・グループへの割り当ては、メモリ領域９９０に記憶されたクラウドのリソースのリストに対する更新で反映される。判定９７０に戻ると、このクラウド・グループのリソースの必要性を満たすためのデータ・センタのリソースが見つからなかった場合、判定９７０は、ステップ９８０を回避する「いいえ」の分岐に分岐する。次いで、処理は、９９５で呼び出し元のルーチン（図８参照）に戻る。
【００４８】
図１０は、ワークロードの分析に基づいて異種のクラウドのリソースを動的に移動させるために使用される構成要素の図である。クラウド・グループ１０００は、「負荷がかかっている（stressed）」と特定されたワークロード（仮想マシン（ＶＭ）１０１０）を示す。ＶＭが負荷がかかっていると特定された後、ワークロードは、スケール「アップ」または「アウト」がワークロードにより有益であるかどうかを突き止めるために複製される。
【００４９】
四角１０２０は、元のＶＭ１０１０のためにＣＰＵおよびメモリなどの追加のリソースを確保することによってスケール「アップ」された変更されたＶＭ（ＶＭ１０２１）を示す。四角１０３０は、ワークロードに追加の仮想マシン（ＶＭ１０３１、１０３２、および１０３３）を追加することによってスケール・アウトされた複製されたＶＭを示す。
【００５０】
スケール・アップされた環境が、試験され、試験結果が、メモリ領域１０４０に記憶される。同様に、スケール・アウトされた環境が、試験され、試験結果が、メモリ領域１０５０に記憶される。スケール・アップの試験結果とスケール・アウトの試験結果とを比較するプロセス１０６０が、示される。プロセス１０６０は、データ・ストア１０７０に記憶される１つまたは複数のワークロードのスケーリング・プロファイルをもたらす。ワークロードのスケーリング・プロファイルは、ワークロードのための優先的なスケーリング技術（アップ、アウトなど）および構成の設定（例えば、スケール・アップする場合の割り当てられるリソース、スケール・アウトする場合の仮想マシンの数）を示す。加えて、スケール・アップの一部の態様をスケール・アウトの一部の態様と組み合わせること（例えば、割り当てられるリソースを増やし、ワークロードのために追加の仮想マシンを確保することなど）によって、スケール「ダイアゴナル」（scale diagonal）が可能である。
【００５１】
図１１は、ワークロードのスケーリング要求の動的な処理で使用される論理を示す流れ図を示す。プロセスは、１１００で始まり、それから、ステップ１１１０において、プロセスは、所与のワークロードのためのリソースを増やすための要求をクラウド（クラウド・グループ１０００）から受け取る。例えば、ワークロードの性能が、所与の閾値未満であった可能性があり、またはスケーリングのポリシーに違反していた可能性がある。
【００５２】
ワークロードのスケーリング・プロファイルがこのワークロードのために既に存在しているかどうかに関して、プロセスによって判定がなされる（判定１１２０）。ワークロードのスケーリング・プロファイルがこのワークロードのために既に存在している場合、判定１１２０は、「はい」の分岐に分岐し、それから、予め定義されたプロセス１１３０において、プロセスは、データ・ストア１０７０から既存のワークロードのスケーリング・プロファイルを読み取ることによって既存のスケーリング・プロファイルを実施する（処理の詳細に関しては図１３および対応する本文を参照されたい）。
【００５３】
一方、ワークロードのスケーリング・プロファイルがこのワークロードのためにまだ存在しない場合、判定１１２０は、「いいえ」の分岐に分岐し、それから、予め定義されたプロセス１１４０において、プロセスは、ワークロードのための新しいスケーリング・プロファイルを生成する（処理の詳細に関しては図１２および対応する本文を参照されたい）。新しいスケーリング・プロファイルは、データ・ストア１０７０に記憶される。
【００５４】
図１２は、スケーリング・システムによってスケーリング・プロファイルを生成するために使用される論理を示す流れ図を示す。処理は、１２００で始まり、それから、ステップ１２１０において、プロセスは、２つの異なる仮想マシンにワークロードを二重化する（ワークロード「Ａ」１２１１は、スケール・アップされるワークロードであり、ワークロード「Ｂ」１２１２は、スケール・アウトされるワークロードである）。
【００５５】
ステップ１２２０において、プロセスは、ワークロードＡのＶＭにリソースを追加する。これは、ワークロードＡが追加のリソースを受け取るステップ１２２１で反映される。
【００５６】
ステップ１２３０において、プロセスは、ワークロードＢを処理するために使用される追加のＶＭを追加する。これは、ワークロードＢが追加のＶＭを受け取るステップ１２３１で反映される。
【００５７】
ステップ１２４０において、プロセスは、到着するトラフィックをワークロードＡとワークロードＢの両方に二重化する。これは、ワークロードＡを実行するＶＭに割り当てられた追加のリソースを用いてトラフィック（要求）を処理するワークロードＡのステップ１２４１に反映される。これは、ワークロードＢを処理するために追加された追加のＶＭを用いて同じトラフィックを処理するワークロードＢのステップ１２４２にも反映される。
【００５８】
ステップ１２５０において、ワークロードＡとワークロードＢの両方は、出て行くデータ（応答）を要求元に戻るように導く。しかし、ステップ１２５０は、要求元がただ１組の期待される出て行くデータを受け取るようにワークロードのうちの１つ（例えば、ワークロードＢ）からの出て行くデータを遮断する。
【００５９】
予め定義されたプロセス１２６０において、プロセスは、ワークロードＡとワークロードＢの両方の性能を監視する（処理の詳細に関しては図１４および対応する本文を参照されたい）。予め定義されたプロセス１２６０は、スケール・アップ（ワークロードＡ）の結果をメモリ領域１０４０に記憶し、スケール・アウト（ワークロードＢ）の結果をメモリ領域１０５０に記憶する。このワークロードのためのスケーリングの方針を決定するために十分な性能データが収集されたかどうかに関して、プロセスによって判定がなされる（判定１２７０）。判定１２７０は、時間、またはワークロードによって処理されるトラフィックの量によって制御される可能性がある。このワークロードのためのスケーリングの方針を決定するために十分な性能データがまだ収集されていない場合、判定１２７０は、ワークロードＡおよびワークロードＢの性能の監視、ならびにそれぞれメモリ領域１０４０および１０５０に記憶されるさらなる試験結果の提供を継続するために予め定義されたプロセス１２６０にループして戻る「いいえ」の分岐に分岐する。このループは、このワークロードのためのスケーリングの方針を決定するために十分な性能データが収集されるまで継続し、このワークロードのためのスケーリングの方針を決定するために十分な性能データが収集される時点で、判定１２７０は、「はい」の分岐に分岐し、それから、ステップ１２８０において、プロセスは、収集された性能データ（スケール・アップ、スケール・アウト、またはスケール・ダイアゴナルの好ましさ、および割り当てられたリソースの量など）に基づいてこのワークロードのためのワークロードのスケーリング・プロファイルを生成する。次いで、処理は、１２９５で呼び出し元のルーチン（図１１参照）に戻る。
【００６０】
図１３は、既存のスケーリング・プロファイルを実装するために使用される論理を示す流れ図を示す。処理は、１３００で始まり、それから、ステップ１３１０において、プロセスは、好ましいスケーリング方法（アップ、アウト、ダイアゴナル）、割り当てるべきリソース、および好ましいスケーリングが実行された後の予測される性能の向上を含むこのワークロードに関するワークロードのスケーリング・プロファイルを読む。
【００６１】
ステップ１３２０において、プロセスは、ワークロードのスケーリング・プロファイルに従って好ましいスケーリング方法を実施し、リソース（スケール・アップのときはＣＰＵ、メモリなど、スケール・アウトのときはＶＭ、スケーリング・ダイアゴナルのときは両方）を追加する。この実施は、ワークロードに反映され、ステップ１３２１において、追加のリソース／ＶＭが、ワークロードに追加される。ステップ１３３１において、ワークロードは、ワークロードで受け取られるトラフィック（要求）を処理し続ける（処理は今や追加されたリソース／ＶＭによって実行される）。予め定義されたプロセス１３３０において、プロセスは、ワークロードの性能を監視する（処理の詳細に関しては図１４および対応する本文を参照されたい）。監視の結果は、スケーリング結果のメモリ領域１３４０（スケール・アップの結果か、スケール・アウトか、またはスケール・ダイアゴナルの結果かのいずれか）に記憶される。
【００６２】
十分な時間がワークロードの性能の監視に費やされたかどうかに関して、プロセスによって判定がなされる（判定１３５０）。十分な時間がワークロードの監視に費やされていない場合、判定１３５０は、ワークロードの監視を継続し、メモリ領域１３４０にスケーリング結果を追加し続けるために予め定義されたプロセス１３３０にループして戻る「いいえ」の分岐に分岐する。このループは、十分な時間がワークロードの監視に費やされるまで継続し、十分な時間がワークロードの監視に費やされる時点で、判定１３５０は、さらなる処理のために「はい」の分岐に分岐する。
【００６３】
メモリ領域１３４０に記憶されたスケーリング結果に反映される性能の向上が予測される性能の向上に基づいて受け入れられるかどうかに関して、プロセスによって判定がなされる（判定１３６０）。性能の向上が受け入れられる場合、判定１３６０は、「いいえ」の分岐に分岐し、それから、ワークロードを再プロファイリングすべきか、またはワークロードに二次的なスケーリング方法を使用すべきかどうかに関して、プロセスによって判定がなされる（判定１３７０）。判定がワークロードを再プロファイリングすることである場合、判定１３７０は、「再プロファイリング」の分岐に分岐し、それから、予め定義されたプロセス１３８０において、スケーリング・プロファイルが、ワークロードに関して再生成され（処理の詳細に関しては図１２および対応する本文を参照されたい）、処理は、１３８５で呼び出し元のルーチンに戻る。
【００６４】
一方、判定が二次的なスケーリング方法を使用することである場合、判定１３７０は、「二次を使用する」の分岐に分岐し、それから、ステップ１３９０において、プロセスは、ワークロードのスケーリング・プロファイルから別のスケーリング方法を選択し、二次的なスケーリング方法を使用するときに予測される性能の向上を読み取る。次いで、処理は、二次的なスケーリング方法を実施するためにステップ１３２０にループして戻る。このループは、スケーリング方法のうちの１つの性能の向上が受け入れられる（判定１３６０が「はい」の分岐に分岐し、処理が１３９５で呼び出し元のルーチンに戻る）まで、またはワークロードを再プロファイリングするための判定がなされる（判定１３７０が「再プロファイリング」の分岐に分岐する）とき、その他のスケーリング方法が選択され、使用されるようにして継続する。
【００６５】
図１４は、分析エンジンを使用してワークロードの性能を監視するために使用される論理を示す流れ図を示す。処理は、１４００で始まり、それから、ステップ１４１０において、プロセスは、システムの構成要素に適用するためのマップを生成する。ステップ１４２０において、プロセスは、メモリ領域１４２５に記憶されるそれぞれのシステムの構成要素に関する監視データを収集する。
【００６６】
ステップ１４３０において、プロセスは、各指標（index）の平均、ピーク、および加速（acceleration）を計算し、計算をメモリ領域１４２５に記憶する。ステップ１４４０において、プロセスは、メモリ領域１４２５に既に記憶されている監視データに関連してデータ・ストア１４３５からのボトルネックおよび閾値データを使用することによってボトルネックに関する特性および閾値のポリシーを追跡する。
【００６７】
いずれかの閾値またはボトルネックが破られるかどうかに関して、プロセスによって判定がなされる（判定１４４５）。いずれかの閾値またはボトルネックが破られる場合、判定１４４５は、「はい」の分岐に分岐し、それから、ステップ１４５０において、プロセスは、処理されたデータを処理するために分析エンジンに送る１４７０。一方、閾値またはボトルネックが破られない場合、判定１４４５は、ステップ１４５０を回避する「いいえ」の分岐に分岐する。
【００６８】
ワークロードの性能の監視を継続すべきかどうかに関して、プロセスによって判定がなされる（判定１４５５）。監視が継続すべきである場合、判定１４５５は、「はい」の分岐に分岐し、ステップ１４６０において、プロセスは、ワークロードに対応するワークロードのスケーリング・プロファイルの判定のエントリ（decision entry）を追跡し、確認する。ステップ１４６５において、プロセスは、ワークロードの将来の最適化のために判定のエントリに注釈を付ける。次いで、処理は、上述のように監視データを収集し、データを処理するためにステップ１４２０にループして戻る。このループは、ワークロードの性能の監視を停止する判定がなされるまで継続し、ワークロードの性能の監視を停止する判定がなされる時点で、判定１４５５は、「いいえ」の分岐に分岐し、処理は、１４５８で呼び出し元のルーチンに戻る。
【００６９】
分析エンジンの処理は、１４７０で開始するところが示されており、それから、ステップ１４７５において、分析エンジンは、監視装置から閾値またはボトルネックの違反および監視データを受け取る。ステップ１４８０において、分析エンジンは、違反に基づいて新しいプロビジョニング要求を生成する。判定のエントリが違反に関して既に存在するかどうかに関して、分析エンジンによって判定がなされる（判定１４８５）。判定のエントリが既に存在する場合、判定１４８５は、「はい」の分岐に分岐し、それから、ステップ１４９０において、分析エンジンは、閾値またはボトルネックの違反および監視データに基づいてプロファイルのエントリを更新する。一方、判定のエントリがまだ存在しない場合、判定１４８５は、「いいえ」の分岐に分岐し、それから、ステップ１４９５において、分析エンジンは、所与のボトルネック／閾値の違反に関するそれぞれの特性に関するランク付けを生成し、ワークロードに関するワークロードのスケーリング・プロファイルのプロファイルのエントリを生成する。
【００７０】
図１５は、クラウドのコマンドの傍受を使用するフラクショナル・リザーブ高可用性（ＨＡ）クラウドを実装する際に使用される構成要素を示すコンポーネント図である。ＨＡクラウド・レプリケーション・サービス（HA Cloud Replication Service）１５００は、アクティブ・クラウド環境（Active Cloud Environment）１５６０およびより小さなわずかなパッシブ・クラウド環境（Passive Cloud Environment）を提供する。ウェブ・アプリケーション１５００などのアプリケーションは、ワークロードの中断のない性能を持つためにＨＡクラウド・レプリケーション・サービスを利用する。ウェブ・アプリケーションなどのアプリケーションは、データベース１５２０、ユーザ・レジストリ１５３０、ゲートウェイ１５４０、および概してアプリケーション・プログラミング・インターフェース（ＡＰＩ）を使用してアクセスされるその他のサービスなどのさまざまな構成要素を有する可能性がある。
【００７１】
示されるように、アクティブ・クラウド環境１５６０は、ワークロードが直面する現在のレベルのトラフィックまたは負荷を処理するために必要とされるリソース（仮想マシン（ＶＭ）、コンピューティング・リソースなど）を与えられる。反対に、パッシブ・クラウド環境１５７０は、アクティブ・クラウド環境よりも少ないリソースを与えられる。アクティブ・クラウド環境１５６０は、好ましいクラウド・プロバイダなどのクラウド・プロバイダにあり、一方、パッシブ・クラウド環境１５７０は、二次的なクラウド・プロバイダなどの別のクラウド・プロバイダにある。
【００７２】
図１６に示される筋書きにおいては、アクティブ・クラウド環境１５６０に障害が起こり、それが、パッシブ・クラウド環境にアクティブな役割を引き継がせ、アクティブ・クラウド環境によって前に処理されていたワークロードの処理を開始させる。図１７〜１９でさらに詳細に説明されるように、アクティブ・クラウド環境にリソースを提供するために使用されるコマンドが傍受され、キューに記憶される。次いで、コマンドのキューが、パッシブ・クラウド環境がアクティブ・クラウド環境によって前に処理されていたワークロードを適切に処理することができるようにパッシブ・クラウド環境を適切にスケーリングするために使用される。
【００７３】
図１７は、クラウドのコマンドの傍受を使用するフラクショナル・リザーブ高可用性（ＨＡ）クラウドを実装するために使用される論理を示す流れ図を示す。プロセスは、１７００で始まり、それから、ステップ１７１０において、プロセスは、主（アクティブ）クラウド環境のためのクラウド・インフラストラクチャに関する構成要素およびデータを取得する。構成要素およびデータのリストは、１つまたは複数のワークロードに関連するレプリケーション・ポリシーを記憶するために使用されるデータ・ストア１７２０から取得される。
【００７４】
ステップ１７３０において、プロセスは、主（アクティブ）クラウド環境１５６０を初期化し、ワークロードのサービスを開始する。ステップ１７４０において、プロセスは、アクティブ・クラウド環境よりも少ないリソースを有する副（パッシブ）クラウド環境のためのクラウド・インフラストラクチャに関する構成要素およびデータを取得する。ステップ１７５０において、プロセスは、アクティブ・クラウド環境と比較してバックアップ／パッシブ／スタンバイの役割を引き継ぐ副（パッシブ）クラウド環境を初期化し、上述のように、アクティブ・クラウド環境によって使用されるよりも少ないリソースを使用する。
【００７５】
アクティブ・クラウド環境とパッシブ・クラウド環境の両方が初期化された後、予め定義されたプロセス１７６０において、プロセスは、クラウドのコマンドの傍受を実行する（処理の詳細に関しては図１８および対応する本文を参照されたい）。クラウドのコマンドの傍受は、傍受されたコマンドをコマンド・キュー１７７０に記憶する。
【００７６】
アクティブ・クラウド環境がまだ動作しているかどうかに関して、プロセスによって判定がなされる（判定１７７５）。アクティブ・クラウド環境がまだ動作している場合、判定１７７５は、図１８に詳細に示されるようにクラウドのコマンドの傍受を継続するためにループして戻る「はい」の分岐に分岐する。このループは、アクティブ・クラウド環境のような点がもはや動作していなくなるまで継続し、アクティブ・クラウド環境のような点がもはや動作していなくなる時点で、判定１７７５は、「いいえ」の分岐に分岐する。
【００７７】
アクティブ・クラウド環境がもはや動作していないとき、予め定義されたプロセス１７８０において、プロセスは、パッシブ・クラウド環境をアクティブ・クラウド環境になるように切り替え、キュー１７７０に記憶された傍受されたクラウドのコマンドを利用する（処理の詳細に関しては図１９および対応する本文を参照されたい）。示されるように、これは、パッシブ・クラウド環境１５７０を適切にスケーリングさせ、新しいアクティブ・クラウド環境１７９０にさせる。
【００７８】
図１８は、クラウドのコマンドの傍受で使用される論理を示す流れ図を示す。プロセスは、１８００で始まり、それから、ステップ１８１０において、プロセスは、アクティブ・クラウド環境１５６０でクラウド・エンティティ（ＶＭ、ＶＬＡＮ、イメージなど）を生成するために使用されるコマンドおよびＡＰＩを受け取る（傍受する）。コマンドおよびＡＰＩは、システム管理者などの要求元１８２０から受け取られる。
【００７９】
ステップ１８２５において、プロセスは、受け取られたコマンドまたはＡＰＩに従ってアクティブ・クラウド環境でクラウド・エンティティを生成する（例えば、アクティブ・クラウド環境に対して追加のＶＭ、コンピューティング・リソースなどを割り当てるなど）。ステップ１８３０において、プロセスは、コマンドまたはＡＰＩをコマンド・キュー１７７０に入れる。ステップ１８４０において、プロセスは、データ・ストア１７２０からポリシーを取得することによってパッシブ（バックアップ）クラウド環境のレプリケーション・ポリシーを調べる。例えば、パッシブ・クラウド環境を最小構成のままにするのではなく、ポリシーは、アクティブ・クラウド環境よりも遅い速さでパッシブ・クラウド環境を大きくする（スケーリングする）ことである可能性がある。したがって、５つのＶＭがアクティブ・クラウド環境に割り当てられるとき、ポリシーは、パッシブ・クラウド環境に追加のＶＭを割り当てることである可能性がある。
【００８０】
ポリシーがパッシブ・クラウド環境で任意の追加のクラウド・エンティティを生成することであるかどうかに関して、プロセスによって判定がなされる（判定１８５０）。ポリシーがパッシブ・クラウド環境でクラウド・エンティティを生成することである場合、判定１８５０は、そのようなエンティティを生成するために「はい」の分岐に分岐する。
【００８１】
ステップ１８６０において、プロセスは、コマンドまたはＡＰＩの通りにパッシブ・クラウドでクラウド・エンティティのすべてまたは一部を生成する。コマンド／ＡＰＩは、アクティブ・クラウド環境で使用されるコマンド／ＡＰＩと異なる場合、パッシブ・クラウド環境に変換される必要がある可能性があることに留意されたい。これは、パッシブ・クラウド環境１５７０に対する調整（スケール変更）をもたらす。ステップ１８７０において、プロセスは、アクティブおよびパッシブ・クラウドのオブジェクトをリンクするためにエンティティのペアを作る。ステップ１８７５において、プロセスは、データ・リポジトリ１８８０にエンティティ・ペア作成データを記憶する。ステップ１８９０において、プロセスは、レプリケーション・ポリシーに基づいてパッシブ・クラウド環境で既に生成されたクラウド・エンティティ（ステップ１８６０）に基づいて最後のコマンドまたはＡＰＩを減ずる／削除することによってコマンド・キュー１７７０に記憶されたコマンド／ＡＰＩを調整する。判定１８５０に戻ると、ポリシーがこのコマンド／ＡＰＩに基づいてパッシブ・クラウド環境でクラウド・エンティティを生成することでない場合、判定１８５０は、ステップ１８６０から１８９０までを回避する「いいえ」の分岐に分岐する。
【００８２】
ステップ１８９５において、プロセスは、アクティブ・クラウド環境に向けた次のコマンドまたはＡＰＩが受け取られるのを待ち、アクティブ・クラウド環境に向けた次のコマンドまたはＡＰＩが受け取られる時点で、プロセスは、上述のように、受け取られたコマンドまたはＡＰＩを処理するためにステップ１８１０にループして戻る。
【００８３】
図１９は、パッシブ・クラウドをアクティブ・クラウド環境に切り替えるために使用される論理を示す流れ図を示す。処理は、アクティブ・クラウド環境が障害を起こしたときに１９００で始まる。ステップ１９１０において、プロセスは、切り替えのときのパッシブ・クラウド環境１５７０の現在の状態（スケール）を保存する。パッシブ・クラウド環境の現在の状態は、データ・ストア１９２０に記憶される。
【００８４】
ステップ１９２５において、プロセスは、パッシブ・クラウド環境にすべてのトラフィックを自動的にルーティングし、パッシブ・クラウド環境１５７０が、新しいアクティブ・クラウド環境１７９０になる。次に、コマンド・キューが、前のアクティブ・クラウド環境のために実行されたスケーリングに従って新しいアクティブ・クラウド環境をスケーリングするために処理される。
【００８５】
ステップ１９３０において、プロセスは、コマンド・キュー１７７０から第１のキューに入れられたコマンドまたはＡＰＩを選択する。ステップ１９４０において、プロセスは、選択されたコマンドまたはＡＰＩに従って新しいアクティブ・クラウド環境１７９０でクラウド・エンティティを生成する。コマンド／ＡＰＩは、アクティブ・クラウド環境で使用されるコマンド／ＡＰＩと異なる場合、パッシブ・クラウド環境に変換される必要がある可能性があることに留意されたい。処理すべきさらなるキューに入れられたコマンドまたはＡＰＩが存在するかどうかに関して、プロセスによって判定がなされる（判定１９５０）。処理すべきさらなるキューに入れられたコマンドまたはＡＰＩが存在する場合、判定１９５０は、上述のように次のキューに入れられたコマンド／ＡＰＩを選択し、処理するためにステップ１９３０にループして戻る「はい」の分岐に分岐する。このループは、コマンド・キュー１７７０からのコマンド／ＡＰＩのすべてが処理されるまで継続し、コマンド・キュー１７７０からのコマンド／ＡＰＩのすべてが処理される時点で、判定１９５０は、さらなる処理のために「いいえ」の分岐に分岐する。
【００８６】
元のアクティブ・クラウド環境がオンラインに戻るときに元のアクティブ・クラウド環境に切り替えて戻すポリシーが存在するかどうかに関して、プロセスによって判定がなされる（判定１９６０）。元のアクティブ・クラウド環境がオンラインに戻るときに元のアクティブ・クラウド環境に切り替えて戻すポリシーが存在する場合、判定１９６０は、「はい」の分岐に分岐し、それから、ステップ１９７０において、プロセスは、元のアクティブ・クラウド環境がオンラインに戻り、動作するのを待つ。元のアクティブ・クラウド環境がオンラインに戻り、動作するとき、ステップ１９７５において、プロセスは、すべてのトラフィックを最初のアクティブ・クラウド環境に戻すように自動的にルーティングし、ステップ１９８０において、新しいアクティブ・クラウド環境が、パッシブ・クラウド環境に戻すようにリセットされ、パッシブ・クラウド環境が、そのような状態情報がデータ・ストア１９２０から取得されるようにして、切り替えが起こったときのパッシブ・クラウド環境のスケールに戻すようにスケーリングされる。
【００８７】
判定１９６０に戻ると、元のアクティブ・クラウド環境がオンラインに戻るときに元のアクティブ・クラウド環境に切り替えて戻すポリシーが存在しない場合、判定１９６０は、「いいえ」の分岐に分岐し、それから、ステップ１９９０において、コマンド・キュー１７７０は、新しいアクティブ・クラウド環境でエンティティを生成するために使用されたコマンド／ＡＰＩを記憶するために使用され得るように消去される。予め定義されたプロセス１９９５において、プロセスは、このクラウドが（新しい）アクティブ・クラウド環境になり、その他のクラウド（最初のアクティブ・クラウド環境）が今やパッシブ・クラウド環境としての役割を引き継ぐようにしてクラウドのコマンドの傍受を使用するフラクショナル・リザーブ高可用性ルーチンを実行する（処理の詳細に関しては図１７および対応する本文を参照されたい）。
【００８８】
図２０は、クラウドのワークロードに関する水平スケーリング・パターンを決定する際に使用される構成要素を示すコンポーネント図である。クラウド・ワークロード・ロード・バランサ２０００は、プロダクション（production）環境２０１０および１つまたは複数のミラー環境で実行されるワークロードの性能を監視するための監視構成要素を含む。プロダクション環境の仮想マシン（ＶＭ）は、ＣＰＵの特性、メモリの特性、ディスクの特性、キャッシュの特性、ファイル・システムの種類の特性、ストレージの種類の特性、オペレーティング・システムの特性、およびその他の特性を含むいくつかの調整可能な特性を有する。ミラー環境は、プロダクション環境と比較されるときに１つまたは複数が調整される同じ特性を含む。クラウド・ワークロード・ロード・バランサは、プロダクション環境とミラー環境の両方からの性能データを監視して、ワークロードを実行するために使用されるＶＭの特性の調整を最適化する。
【００８９】
図２１は、余ったクラウドの能力を使用することによって仮想マシン（ＶＭ）の特性をリアルタイムで再構築する際に使用される論理を示す流れ図を示す。プロセスは、２１００で始まり、それから、ステップ２１１０において、プロセスは、データ・ストア２１２０から取得された１組のプロダクション設定の特性を使用してプロダクション環境のＶＭ２０１０を設定する。
【００９０】
ステップ２１２５において、プロセスは、ＶＭの調整がデータ・ストア２１３０から取得されるようにしてミラー環境２０３０で使用するためのＶＭの調整の第１の組を選択する。ミラー環境で実行される追加のＶＭによって試験されるさらなる調整が存在するかどうかに関して、プロセスによって判定がなされる（判定２１４０）。示されるように、複数のＶＭが、ＶＭのそれぞれが１つまたは複数のＶＭの調整を使用して実行されるようにしてインスタンス化される可能性があり、したがって、ミラー環境のＶＭ（ＶＭ２０３１、２０３２、および２０３３）のそれぞれが特性の異なる構成で実行されている。試験すべきさらなる調整が存在する場合、判定２１４０は、ミラー環境で使用するためのＶＭの調整の次の組を選択するためにループして戻り、調整の組に基づいて別のＶＭを設定する「はい」の分岐に分岐する。このループは、試験すべきさらなる調整が存在しなくなるまで継続し、試験すべきさらなる調整が存在しなくなる時点で、判定２１４０は、さらなる処理のために「いいえ」の分岐に分岐する。
【００９１】
ステップ２１４５において、プロセスが、要求元２１５０から要求を受け取る。ステップ２１６０において、要求は、各ＶＭ（プロダクションＶＭおよびミラー環境のＶＭのそれぞれ）によって処理され、タイミングが、ＶＭのそれぞれが要求を処理するためにどれだけ時間がかかるかに関して測定される。しかし、プロセスは、プロダクションＶＭを除くすべてのＶＭによる結果の返還を抑制することに留意されたい。タイミングの結果は、データ・ストア２１７０に記憶される。試験を継続すべきかどうかに関して、プロセスによって判定がなされる（判定２１７５）。さらなる試験が望まれる場合、判定２１７５は、次の要求を受け取り、処理し、要求を処理するためにＶＭのそれぞれによってかかる時間を記録するためにループして戻る「はい」の分岐に分岐する。このループは、さらなる試験が望まれなくなるまで継続し、さらなる試験が望まれなくなる時点で、判定２１７５は、さらなる処理のために「いいえ」の分岐に分岐する。
【００９２】
ミラー環境２０３０で実行される試験ＶＭ（ＶＭ２０３１、２０３２、または２０３３）のうちの１つがプロダクションＶＭよりも高速に実行されるかどうかに関して、プロセスによって判定がなされる（判定２１８０）。一実施形態において、試験ＶＭは、所与の閾値因子（例えば、２０パーセント高速など）の分だけプロダクションＶＭよりも高速であることが必要である。試験ＶＭのうちの１つがプロダクションＶＭよりも高速に要求を実行した場合、判定２１８０は、さらなる処理のために「はい」の分岐に分岐する。
【００９３】
ステップ２１８５において、プロセスは、最も高速な試験環境のＶＭをプロダクション環境のＶＭと入れ替え、したがって、試験ＶＭが今やプロダクションＶＭとして動作しており、要求元に結果を返す。ステップ２１９０において、プロセスは、最も高速な試験環境のＶＭに対してなされた調整を、データ・ストア２１２０に記憶されるプロダクション設定に保存する。一方、試験ＶＭのいずれもプロダクションＶＭより高速に実行されない場合、判定２１８０は、「いいえ」の分岐に分岐し、それから、ステップ２１９５において、プロセスは、試験ＶＭのいずれとの入れ替えもせずにプロダクション環境のＶＭをそのまま維持する。
【００９４】
図面の流れ図およびブロック図は、本発明のさまざまな実施形態によるシステム、方法、およびコンピュータ・プログラム製品のあり得る実装のアーキテクチャ、機能、および動作を示す。これに関連して、流れ図またはブロック図の各ブロックは、（１つまたは複数の）規定された論理的な機能を実装するための１つまたは複数の実行可能命令を含むモジュール、セグメント、またはコードの一部を表す可能性がある。一部の代替的な実装においては、ブロックで示された機能が、図面に示された順序とは異なる順序で行われる可能性があることにも留意されたい。例えば、連続で示された２つのブロックが、実際には実質的に同時に実行される可能性があり、またはそれらのブロックが、関連する機能に応じて逆順に実行されることもあり得る。ブロック図または流れ図あるいはその両方の各ブロックと、ブロック図または流れ図あるいはその両方のブロックの組合せとは、規定された機能もしくは動作を実行する専用のハードウェアに基づくシステム、または専用のハードウェアとコンピュータ命令との組合せによって実装され得ることも認められるであろう。
【００９５】
本発明の特定の実施形態が示され、説明されたが、本明細書の教示に基づいて、本発明および本発明のより広い態様から逸脱することなく改変および変更がなされ得ることは、当業者に明らかであろう。したがって、添付の特許請求の範囲は、その範囲内に、本発明の真の精神および範囲内にあるすべてのそのような改変および変更を包含することになる。さらに、本発明は、添付の特許請求の範囲によってのみ定義されることを理解されたい。導入される請求項の要素の具体的な数が意図される場合、そのような意図は請求項において明示的に記載され、そのような記載がない場合、そのような限定は存在しないことが、当業者にさらに理解されるであろう。非限定的な例に関して、理解の助けとして、添付の特許請求の範囲は、請求項の要素を導入するための導入句「少なくとも１つの（at least one）」および「１つまたは複数の（one or more）」の使用を含む。しかし、そのような句の使用は、同一の請求項が、導入句「１つまたは複数の」または「少なくとも１つの」および「ａ」または「ａｎ」などの不定冠詞を含むときでさえも、不定冠詞「ａ」または「ａｎ」による請求項の要素の導入が、そのように導入される請求項の要素を含む任意の特定の請求項を、単に１つのそのような要素を含む発明に限定するということを示唆していると解釈されるべきではなく、同じことが、請求項における定冠詞の使用にも当てはまる。
【符号の説明】
【００９６】
１００  情報処理システム
１１０  プロセッサ
１１２  プロセッサ・インターフェース・バス
１１５  ノースブリッジ
１１８  ＰＣＩ  Ｅｘｐｒｅｓｓバス
１１９  バス
１２０  システム・メモリ
１２５  グラフィックス・コントローラ
１３０  ディスプレイ・デバイス
１３５  サウスブリッジ
１４０  ＵＳＢコントローラ
１４２  デバイス
１４４  キーボードおよびトラックパッド
１４５  不揮発性ストレージ・デバイス
１４６  Ｂｌｕｅｔｏｏｔｈデバイス
１４８  赤外線（ＩＲ）受信機
１５０  ウェブカメラ（カメラ）
１５５  ＥｘｐｒｅｓｓＣａｒｄ
１５８  バス
１６０  オーディオ回路
１６２  光デジタルオーディオ入力ポート
１６４  光デジタル出力およびヘッドフォン・ジャック
１６６  内蔵スピーカ
１６８  内蔵マイクロフォン
１７０  イーサネット・コントローラ
１７２  ＰＣＩまたはＰＣＩ  Ｅｘｐｒｅｓｓバス
１７５  ＬＡＮデバイス
１８４  バス
１８５  不揮発性ストレージ・デバイス
１８８  シリアルＡＴＡ（ＳＡＴＡ）バス
１９０  光ストレージ・デバイス
１９５  トラステッド・プラットフォーム・モジュール（ＴＰＭ）
１９６  ＲＯＭ
１９８  「レガシー」Ｉ／Ｏデバイス
２００  コンピュータ・ネットワーク
２１０  ハンドヘルド・コンピュータ／モバイル電話
２２０  ペンまたはタブレット・コンピュータ
２３０  ラップトップまたはノートブック・コンピュータ
２４０  ワークステーション
２５０  パーソナル・コンピュータ・システム
２６０  サーバ
２６５  不揮発性データ・ストア
２７０  メインフレーム・コンピュータ
２７５  不揮発性データ・ストア
２８０  情報処理システム
２８５  不揮発性データ・ストア
３０１  人事管理
３０２  財務
３０３  ソーシャル・コネクション
３１１  ＨＲプロファイル
３１２  財務プロファイル
３１３  ソーシャル・コネクション・プロファイル
３２１  クラウド・グループ
３２２  クラウド・グループ
３２３  クラウド・グループ
３３１  ノード
３３２  ノード
３３３  ノード
３３４  ノード
３３５  ノード
３３６  ノード
３３７  ノード
３４３  ＩＰグループ
３４４  ＩＰグループ
３５１  ＣＧプロファイル
３５２  ＣＧプロファイル
３５３  ＣＧプロファイル
３６０  ネットワーク・バックプレーン
３６２  リンク
３６３  リンク
３６４  ネットワーク・リンク
３６５  ネットワーク・リンク
３６６  ネットワーク・リンク
３６７  ネットワーク・リンク
５４０  データ・ストア
６０５  データ・ストア
６１５  メモリ領域
６２５  メモリ領域
６４５  メモリ領域
６５５  メモリ領域
６７５  メモリ領域
６８５  メモリ領域
７１５  メモリ領域
７２５  メモリ領域
７５５  メモリ領域
８０５  データ・ストア
８２５  メモリ領域
８４５  メモリ領域
９０５  メモリ領域
９３５  メモリ領域
９９０  メモリ領域
１０００  クラウド・グループ
１０１０  仮想マシン（ＶＭ）
１０２０  スケール「アップ」された変更されたＶＭ
１０２１  ＶＭ
１０３０  スケール・アウトされた複製されたＶＭ
１０３１  ＶＭ
１０３２  ＶＭ
１０３３  ＶＭ
１０４０  メモリ領域
１０５０  メモリ領域
１０７０  データ・ストア
１２１１  ワークロード「Ａ」
１２１２  ワークロード「Ｂ」
１３４０  メモリ領域
１４２５  メモリ領域
１４３５  データ・ストア
１５００  ＨＡクラウド・レプリケーション・サービス
１５２０  データベース
１５３０  ユーザ・レジストリ
１５４０  ゲートウェイ
１５６０  アクティブ・クラウド環境
１５７０  パッシブ・クラウド環境
１７２０  データ・ストア
１７７０  コマンド・キュー
１７９０  アクティブ・クラウド環境
１８２０  要求元
１８８０  データ・リポジトリ
１９２０  データ・ストア
２０００  クラウド・ワークロード・ロード・バランサ
２０１０  プロダクション環境
２０３０  ミラー環境
２０３１  ＶＭ
２０３２  ＶＭ
２０３３  ＶＭ
２１２０  データ・ストア
２１３０  データ・ストア
２１５０  要求元
２１７０  データ・ストア
【図１】
2015115059.tif 000003
【図２】
2015115059.tif 000004
【図３】
2015115059.tif 000005
【図４】
2015115059.tif 000006
【図５】
2015115059.tif 000007
【図６】
2015115059.tif 000008
【図７】
2015115059.tif 000009
【図８】
2015115059.tif 000010
【図９】
2015115059.tif 000011
【図１０】
2015115059.tif 000012
【図１１】
2015115059.tif 000013
【図１２】
2015115059.tif 000014
【図１３】
2015115059.tif 000015
【図１４】
2015115059.tif 000016
【図１５】
2015115059.tif 000017
【図１６】
2015115059.tif 000018
【図１７】
2015115059.tif 000019
【図１８】
2015115059.tif 000020
【図１９】
2015115059.tif 000021
【図２０】
2015115059.tif 000022
【図２１】
2015115059.tif 000023