(57)【要約】ネットワークリソース管理の方法は、プロセッサによって、アプリケーションのモデルを生成することと、該モデル内にいくつかの置換ポイントを定めることと、それらの置換ポイントを一組のサブタイプを有する抽象モデルとして表現することと、それぞれの置換ポイントに対してどのソーシングオプションを使用すべきかを表すいくつかのポリシーを体系化することを含む。【選択図】図３
2016505934.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークリソース管理の方法であって、
プロセッサによって、
アプリケーションのモデルを生成するステップと、
前記モデル内にいくつかの置換ポイントを定めるステップと、
前記置換ポイントを、一組のサブタイプを有する抽象モデルとして表すステップと、
それぞれの置換ポイントに対してどのソーシングオプションを使用するべきかを表すいくつかのポリシーを体系化するステップ
を含む方法。
【請求項２】
モデルのインスタンスを生成することを求める要求を受け取るステップと、
いくつかのポリシーを適用してリソースの候補を選択するステップと、
選択された候補のリソースを取得するステップ
をさらに含む、請求項１の方法。
【請求項３】
前記ポリシーが、いくつかの静的結合ポリシーといくつかの動的結合ポリシーを含む、請求項２の方法。
【請求項４】
前記置換ポイントがサブタイプとして明示的に定義されているか否かを判定するステップと、
前記置換ポイントがサブタイプとして明示的に定義されている場合には、前記明示的に定義されているサブタイプを静的結合ポリシーとして格納するステップと、
前記置換ポイントがサブタイプとして明示的に定義されていない場合には、いくつかの動的結合ポリシーを生成するステップ
をさら含む、請求項１の方法。
【請求項５】
いくつかの動的結合ポリシーを生成する前記ステップが、
前記抽象モデルのいくつかのパラメータを、前記抽象モデルのサブタイプを選択するためのポリシーとして定義するステップと、
前記動的結合ポリシーを生成ために使用されるいくつかのルールをコンパイルするステップと、
前記動的結合ポリシーを格納するステップ
を含むことからなる、請求項４の方法。
【請求項６】
前記モデルの一部が置換されることをプロビジョニングシステムに知らせるステップをさらに含む、請求項１の方法。
【請求項７】
前記アプリケーションをスケーリングするためのいくつかのリソースの候補を決定するステップをさらに含む、請求項１の方法。
【請求項８】
いくつかのポリシーを適用してリソースの候補を選択する前記ステップが、
前記静的結合ポリシー及び前記動的結合ポリシーを適用して前記リソースの候補をフィルタリングするステップと、
前記静的結合ポリシー及び前記動的結合ポリシーによって規定された条件に適合するいくつかのリソースの候補を返すステップ
をさらに含むことからなる、請求項３の方法。
【請求項９】
前記静的結合ポリシーは管理者によって規定され、前記動的結合ポリシーは、該動的結合ポリシー内で定義されているいくつかのルールによって規定される、請求項３の方法。
【請求項１０】
クラウド管理装置であって、
プロセッサと、
前記プロセッサに通信可能に結合された記憶装置
を備え、
前記記憶装置が、
前記記憶装置に格納されている置換モジュールであって、前記プロセッサによって実行されると、スケーリングされることになるアプリケーションのモデルを生成して、該モデル内にいくつかの置換ポイントを定める置換モジュールと、
前記記憶装置に格納されている静的結合ポリシー生成モジュールであって、前記プロセッサによって実行されると、置換ポイント内にサブタイプを定義するいくつかの明示的なステートメントを生成する静的結合ポリシー生成モジュールと、
前記記憶装置に格納されている動的結合ポリシー生成モジュールであって、前記プロセッサによって実行されると、リソースプロバイダーに選択すべき最良のサブタイプについて知らせる、実行時に評価されるスコアリング関数を含むいくつかのポリシーを生成する動的結合ポリシー生成モジュール
を備えることからなる、クラウド管理装置。
【請求項１１】
ポリシー実行モジュールをさらに備える請求項１０のクラウド管理装置であって、前記ポリシー実行モジュールは、前記プロセッサによって実行されると、前記静的結合ポリシー及び前記動的結合ポリシーを実行して、該静的結合ポリシー及び該動的結合ポリシーによって提供される制約に適合するいくつかのリソースの候補をフィルタリングすることからなる、クラウド管理装置。
【請求項１２】
前記クラウド管理装置は、ネットワークに組み込まれており、前記アプリケーションは、該ネットワークからスケーリングされる、請求項１０のクラウド管理装置。
【請求項１３】
ネットワークリソースを管理するためのコンピュータープログラム製品であって、
前記コンピュータープログラム製品は、コンピューターが使用できるプログラムコードが組み込まれているコンピューター可読記憶媒体を備え、
前記コンピューターが使用できるプログラムコードは、
プロセッサによって実行されると、スケーリングされることになるアプリケーションを定義するモデルを生成し、及び、前記モデル内にいくつかの置換ポイントを定めるコンピューター使用可能プログラムコードと、
プロセッサによって実行されると、置換ポイント内にサブタイプを定義するいくつかの明示的なステートメントを生成するコンピューター使用可能プログラムコードと、
プロセッサによって実行されると、リソースプロバイダーに選択すべき最良のサブタイプについて知らせる、実行時に評価されるスコアリング関数を含むいくつかのポリシーを生成するコンピューター使用可能プログラムコード
を含むことからなる、コンピュータープログラム製品。
【請求項１４】
プロセッサによって実行されると、前記静的結合ポリシー及び前記動的結合ポリシーを実行して、該静的結合ポリシー及び該動的結合ポリシーによって提供される制約に適合するいくつかのリソースの候補をフィルタリングするコンピューター使用可能プログラムコードをさらに含む、請求項１３のコンピュータープログラム製品。
【請求項１５】
前記ポリシーは情報に基づいて表され、該情報は、第１のシステム、または第２のシステム、または該第１のシステムと該第２のシステムを組み合わせたものによって含められた情報であり、前記第１のシステムからスケーリングが起こり、前記第２のシステム内へとスケーリングが起こることからなる、請求項１４のコンピュータープログラム製品。
【発明の詳細な説明】
【背景技術】
【０００１】
クラウドコンピューティングサービスは、個人や事業体が自身の情報技術（ＩＴ）インフラストラクチャー及びリソース（資源）を動的に拡張できるようにするために、個人及び事業体にとってますます利用しやすくなってきている。それらの個人及び事業体は、自身の内部ＩＴインフラストラクチャーもしくはリソースが、過剰に使用されているか、またはその他の面でネットワーク活動の増大に対応するには不十分である場合に、クラウドサービスプロバイダーと契約することが多い。ネットワーク活動のかかる増大は、たとえば、それらの個人や事業体の商品もしくはサービスの販売量が増加していることによる場合がある。したがって、個人または事業体は、公開されている形態及び他の形態のクラウドコンピューティングサービスに関連するスケールメリットをうまく利用することができる。
【先行技術文献】
【特許文献】
【０００２】
【特許文献１】（補充可能性あり）
【図面の簡単な説明】
【０００３】
添付の図面は、本願の一部であって、本明細書に開示されている原理の種々の例を説明している。説明されている例は、説明のために提供されたものであって、特許請求の範囲を限定するものではない。
【図１】本明細書に開示されている原理の１例にしたがう、置換ポイント（substitutionpoint）及びバースティングポリシー（bursting policy）に基づくクラウドバースティング（cloud bursting）のためのシステムのブロック図である。
【図２】本明細書に開示されている原理の１例にしたがう、図１のクラウド管理装置のブロック図である。
【図３】本明細書に開示されている原理の１例にしたがう、サービス（IaaS）シナリオとしてのインフラストラクチャー内のアプリケーションモデルまたは依存性グラフ（dependency graph）のブロック図である。
【図４】本明細書に開示されている原理の１例にしたがう、サービス（SaaS）シナリオとしてのソフトウェア内のアプリケーションモデルまたは依存性グラフのブロック図である。
【図５】本明細書に開示されている原理の１例にしたがう、スケールポイント（scale point）及び置換ポイントを示すアプリケーションモデルまたは依存性グラフのブロック図である。
【図６】本明細書に開示されている原理の１例にしたがう、ネットワークリソースを管理するための方法を示すフローチャートである。
【図７】本明細書に開示されている原理の別の例にしたがう、ネットワークリソースを管理するための方法を示すフローチャートである。
【図８】本明細書に開示されている原理の別の例にしたがう、ネットワークリソースを管理するための方法を図９のフローチャートと共に示すフローチャートである。
【図９】本明細書に開示されている原理の別の例にしたがう、ネットワークリソースを管理するための方法を図８のフローチャートと共に示すフローチャートである。
【図１０】本明細書に開示されている原理の別の例にしたがう、複数のポリシー内のいくつかのルールの依存性を示す依存性グラフのブロック図である。  尚、図面全体を通じて、同じ参照番号は、類似するが必ずしも同一ではない要素を示している。
【発明を実施するための形態】
【０００４】
本システム及び方法は、ネットワークリソース管理を提供する。該方法は、プロセッサによって（またはプロセッサを用いて）、アプリケーションのモデルを生成ないし作成することと、該モデル内にいくつかの置換ポイントを設定ないし定める（または定義する）ことと、それらの置換ポイントを一組のサブタイプ（sub-type）を有する（またはそれらの置換ポイントを該一組のサブタイプを用いてもしくは該サブタイプで）抽象モデルとして表現することと、及び、それぞれの置換ポイントに対してどのソーシングオプションを使用すべきかを表すいくつかのポリシーを体系化する（または集成または分類する）ことを含むことができる。該方法は、モデルのインスタンスを生成することを求める要求を受け取ること、いくつかのポリシーを適用してリソースの候補を選択すること、及び、選択された候補のリソースを取得することをさらに含むことができる。
【０００５】
本システム及び方法は、プロセッサ、及び、該プロセッサに通信可能に結合されたメモリ（記憶装置）を備えることができるクラウド管理装置を提供する。該クラウド管理装置はさらに、該メモリ内に格納されている置換モジュールを備えることができ、該モジュールは該プロセッサによって実行されると、スケール（スケーリング）されることになるアプリケーションのモデルを生成して、該モデル内にいくつかの置換ポイントを設定ないし定める。該クラウド管理装置はさらに、該メモリ内に格納されている静的結合（static binding：静的束縛ともいう）ポリシー生成モジュールを含むことができ、該モジュールは、該プロセッサによって実行されると、置換ポイント内にサブタイプを設定ないし定める（または定義する）いくつかの明示的なステートメント（explicit statement）を生成する。該クラウド管理装置はさらに、該メモリ内に格納されている動的結合（dynamic binding：動的束縛ともいう）ポリシー生成モジュールを含むことができ、該モジュールは、該プロセッサによって実行されると、リソースプロバイダー（リソース提供者）に選択すべき最良のサブタイプについて知らせる、実行時に評価されるスコアリング関数（scoring function：スコア関数ともいう）を含むいくつかのポリシーを生成する。
【０００６】
本システム及び方法は、ネットワークリソースを管理するためのコンピュータープログラム製品を提供し、該ネットワークリソースは、コンピューターが使用できるプログラムコードが具現化されている（または埋め込まれている）コンピューター可読記憶媒体を含むことができる。コンピューターが使用できるプログラムコード（以下、コンピューター使用可能プログラムコードともいう）は、プロセッサによって実行されると、スケール（スケーリング）されることになるアプリケーションを定める（または定義ないし規定する）モデルを生成し、及び該モデル内にいくつかの置換ポイントを設定ないし定義する（もしくは定める）第１のコンピューター使用可能プログラムコードを含んでいる。コンピューター使用可能プログラムコードはさらに、プロセッサによって実行されると、置換ポイント内にサブタイプを定める（または定義ないし規定する）いくつかの明示的なステートメントを生成する第２のコンピューター使用可能プログラムコード、及び、プロセッサによって実行されると、リソースプロバイダーに選択すべき最良のサブタイプについて知らせる、実行時に評価されるスコアリング関数を含むいくつかのポリシーを生成する第３のコンピューター使用可能プログラムコードを含むことができる。
【０００７】
上記したように、個人や事業体にとって、外部のクラウドサービスをいつ購入するのが有利か、または、購入するそれらのサービスをいつ増減するのが有利かを判断することは難しい場合がある。たとえば、個人や事業体は、外部のクラウドサービスをどの時点で購入するのが自身の潜在的な事業活動にとって最も経済的であるかがわからない場合がある。いくつかの環境要因、とりわけ、たとえば、外部のクラウドサービスが使用されることになる市場（マーケット）や、個人もしくは事業体が現在利用しており、かつ、スケールアウトしようとしている内部ネットワークもしくはプライベートネットワークや、内部のプライベートネットワーク内に留まることに対する外部のクラウドサービスへとスケールアウトすることの経済的優位性などの環境要因を考慮することができる。
【０００８】
クラウドバースティングは、所与の時点において、内部リソースに対してよりも１以上の外部クラウドまたは外部ネットワークに対して追加の作業負荷をかけること、及び、内部リソース利用から外部ネットワーク利用にオンデマンドで移行することがより経済的でありうる状況において行われうる。第３の供給者（サードパーティ）によって提供される外部リソース内の能力を追加することによって、内部リソース内のアプリケーションに対する要求の急増に動的に対処することができる。内部リソースに対する関連する結合の度合いは、ユーザーが制御することを望むクラウドバースティングの１側面でありうる。
【０００９】
たとえば、情報技術（ＩＴ）部門は、試験及び評価目的でアプリケーションを公開して利用可能にするためにクラウドバースティングを使用する場合がある。そのような場合には、試験されるアプリケーションは、クラウドで実行され、内部リソースには全く接続されない。同様に、開発プロジェクトにおいて、将来のソフトウェアリリースが拒否されるほどに重大な単純障害が存在するか否かを事前に判定するために、クラウドバースティングを用いて、継続的ビルド（continuous build）環境によって起動されるスモークテスト（smoketest）を提供する場合がある。したがって、クラウドバースティングを使用することによって、資本支出（設備投資など）をテストベッドの運営上のコストにまわすことができる。
【００１０】
上記の２つの状況では、クラウドリソースは、内部のＩＴリソースに疎に結合（疎結合）される。クラウド内に用意されているリソースが、内部リソースとのデータ共有及びデータ通信を頻繁に要求するときには、クラウドバーストは、該内部リソースに密に結合（密結合）される。全てのアプリケーションまたは全てのアプリケーションコンポーネントが、クラウドバースティングに適しているわけではない。密に結合されていようと疎に結合されていようと、また、要求されたサービスがインフラストラクチャーであろうとサービスレベルであろうと、クラウドバースティングを、需要が急増したときにその場しのぎで行われる作用ではないものとすることができる。クラウドバースティングは、特定のアプリケーション設計及びユーザーのデプロイメントモデル（deployment model）の固有の部分である。本システム及び方法は、管理者が、内部ネットワーク内で使用されるアプリケーションのうちのどれを、クラウドバースティング技術を用いて外部ネットワークにデプロイできるか（たとえば外部ネットワークに配備して利用可能にすることができる）かを決定するのを、及び、その特定のアプリケーションをどのようにして該外部ネットワーク内にデプロイすることができるかを決定するのを支援する。
【００１１】
本明細書及び特許請求の範囲において使用されている「クラウド」という用語は、要求された仮想リソースをサービスとして提供する任意のネットワークとして広義に理解されるべきことが意図されている。１例では、クラウドネットワークは、ユーザーが、どこからでも、該ネットワークに接続された装置を介して、サービスとしてのアプリケーションやコンピューティング資源（コンピューティングリソース）にアクセスすることができるコンピューティング環境を提供することができる。それらのサービスを、クラウドサービスプロバイダーと呼ばれる実体（エンティティ）によって提供することができる。クラウドネットワークを介して提供することができるサービスの例には、とりわけ、サービスとしてのインフラストラクチャー（Iaas：infrastructureas a service）、サービスとしてのプラットフォーム（PaaS：platform as a service）、サービスとしてのソフトウェア（SaaS：software as a service）、サービスとしてのストレージ（STaaS：storage as aservice）、サービスとしてのセキュリティ（SECaaS：security as a service）、サービスとしてのテスト環境（TEaaS：test environment as a service）、及び、サービスとしてアプリケーションプログラムインターフェース（ＡＰＩ）（APIaaS：applicationprogram interface as a service）がある。本明細書及び特許請求の範囲を通じて、「ネットワーク」という用語は、上記のように定義したクラウドネットワーク、または、他の任意の形態のネットワークを含むことができる。
【００１２】
さらに、本明細書及び特許請求の範囲において使用されている「パブリッククラウド」という用語は、アプリケーション、ストレージ（記憶領域ないし記憶装置）、及びその他のリソースを一般大衆が利用できるようにするサービスプロバイダーによってネットワークを介して提供されるいくつかのサービスとして広義に理解されるべきことが意図されている。１例では、それらのサービスは、サービスプロバイダーによって使用回数制料金モデルで提供される。この例では、パブリッククラウドサービスプロバイダーがインフラストラクチャーを所有して動作させる。別の例では、パブリッククラウドサービスプロバイダーは、たとえばインターネットなどのパブリックネットワーク（公衆ネットワーク）を介してアクセスを提供し、直接接続は提供されない。パブリッククラウド内で提供されているクラウドサービスの例として、とりわけ、Amazon.com, Inc.（アマゾンドットコム）によってサービスとして開発されて販売されているAMAZON WEB SERVICES、Rackspace US, Inc.によって開発されて提供されているRACKSPACE CLOUDウェブアプリケーションホスティングサービスを挙げることができる。
【００１３】
本明細書及び特許請求の範囲の範囲において使用されている「プライベートクラウド」という用語は、アクセスが個人または事業体だけに限定されている任意のクラウドコンピューティング環境として広義に理解されるべきことが意図されている。１例では、プライベートクラウドを、一人の個人または１つの事業体のためだけに動作させられる任意のクラウドインフラストラクチャーとすることができる。１例では、プライベートクラウドは、プライベートクラウドインフラストラクチャーの所有者によって内部的に管理される。別の例では、プライベートクラウドは、サードパーティ（第三者）によって管理されて、内部的にもしくは外部からホストされる。
【００１４】
本明細書及び特許請求の範囲において使用されている「ハイブリッドクラウド」という用語は、いくつかのパブリッククラウドリソース及びいくつかのプライベートクラウドリソースを有する任意のクラウドコンピューティング環境として広義に理解されるべきことが意図されている。１例では、ハイブリッドクラウドは、個別のネットワークに存在したままであるが、いくつかのサービスを提供するように関連付けられているプライベートクラウド及びパブリッククラウドなどのいくつかのクラウドネットワークを備えている。
【００１５】
本明細書及び特許請求の範囲において使用されている「スケールアウト」（スケーリングアウトともいう）もしくはこれに類似の用語は、ネットワーク活動の増加に対応するために、第１のまたは最初のクラウドコンピューティング環境に関して第２のクラウドコンピューティング環境内に追加のリソースを最初に割り当てまたは消費する任意の活動ないし作用として広義に理解されるべきことが意図されている。同様に、本明細書及び特許請求の範囲において使用されている「スケールイン」（スケーリングインともいう）もしくはこれに類似の用語は、該第２のクラウドコンピューティング環境内のリソースの一部もしくは全部を解放する任意の活動ないし作用として広義に理解されるべきことが意図されている。スケールアウト及びスケールインは、一般に、「水平」スケール（もしくは水平スケーリング）または「クラウドバースティング」と呼ばれる場合がある。
【００１６】
本明細書及び特許請求の範囲において使用されている「スケールアップ」もしくはこれに類似の用語は、クラウドコンピューティング環境におけるネットワーク活動の増加に対応するために、該クラウドコンピューティング環境内に追加のリソースを割り当てまたは消費する任意の活動ないし作用として広義に理解されるべきことが意図されている。同様に、本明細書及び特許請求の範囲において使用されている「スケールダウン」もしくはこれに類似の用語は、クラウドコンピューティング環境内のリソースの一部もしくは全部を解放する任意の活動ないし作用として広義に理解されるべきことが意図されている。スケールアップ及びスケールダウンは、一般に、「垂直」スケール（もしくは垂直スケーリング）と呼ばれる場合がある。
【００１７】
さらにまた、本明細書及び特許請求の範囲において使用されている「いくつかの」もしくはこれに類似の用語は、１から無限数までの任意の正の数（ゼロは数ではなく、数がないことを意味する）として広義に理解されるべきことが意図されている。
【００１８】
以下の説明では、説明の便宜上、本システム及び方法を十分に理解できるようにするために、数多くの特定の細部が説明されている。しかしながら、それらの特定の細部なくして、本装置、システム及び方法を実施できることは当業者には明らかであろう。本明細書において「１例」もしくはこれに類似の用語を参照している場合には、それは、その例に関連して説明されている特定の特徴、構造もしくは特性は、説明されているように含まれるが、他の例には含まれない場合があることを意味する。
【００１９】
図１には、本明細書に開示されている原理の１例にしたがう、置換ポイント及びバースティングポリシーに基づくクラウドバースティング用のシステム（１００）のブロック図が示されている。図１は、第１のネットワーク（たとえば、内部ネットワークまたはプライベートネットワークなど）から第２のネットワーク（たとえば、外部のクラウドネットワークなど）にスケールアウトすなわちクラウドバースティングをするためのシステム（１００）を示している。１例では、外部のクラウドネットワークは、パブリッククラウドサービスプロバイダーによってサポートされているパブリッククラウドである。システム（１００）は、いくつかのネットワーク、すなわちネットワークＡ（１０４）及びネットワークＢ（１０６）にアクセスできるクラウド管理装置（１０２）を備えることができる。図１には２つのネットワーク（１０４、１０６）が示されているが、任意の数のネットワーク（１０４、１０６）を、クラウド管理装置（１０２）に通信可能に結合することができる。さらに、それらのネットワーク（１０４、１０６）を、直接通信回線（１８０）、たとえばパブリックインターネット接続もしくはプライベートインターネット接続を介して互いに通信可能に結合することができる。たとえば、それらのネットワークを、とりわけ、パブリックネットワークまたは専用回線を介して利用できる仮想プライベートネットワーク（ＶＰＮ）を介して接続することができる。
【００２０】
別の例では、それらのネットワークは、上記のように定義したクラウドサービスネットワークである。本明細書及び図面を通じて、ネットワークＡ（１０４）及びネットワークＢ（１０６）は、クラウドサービスネットワークとして説明されている。しかしながら、任意の形態のネットワークを、本システム及び方法の目的を達成するために利用することができる。
【００２１】
１例では、クラウド管理装置（１０２）をネットワーク（１０４、１０６）とは別個のものとすることができる。この例では、クラウド管理装置をサードパーティによって制御することができ、その機能を、たとえばネットワークＡ（１０４）の所有者へのサービスとして提供することができる。
【００２２】
別の例では、クラウド管理装置（１０２）を、ネットワーク（１０４、１０６）のうちの１つに組み込むことができる。この例では、クラウド管理装置（１０２）が組み込まれているネットワーク（１０４、１０６）の管理者（１６０）に対して、クラウド管理装置（１０２）によって提供される機能を実行するためにクラウド管理装置（１０２）を使用する任務を課すことができる。さらに、この例では、より詳しく後述するように、クラウド管理装置（１０２）を、コンピュータープログラム製品として提供することができる。
【００２３】
ネットワーク（１０４、１０６）は、いくつかのサーバー（１２０、１４０）を備えることができる。図１の例では、それぞれのネットワーク（１０４、１０６）は、１つのサーバー（１２０、１４０）を備えている。しかしながら、それぞれのネットワーク（１０４、１０６）は、任意の数のサーバー（１２０、１４０）を備えることができる。図１に示されているように、それぞれのサーバーは、コンピューティング装置を形成するために、他のコンピューターハードウェア装置の中でも特に、たとえばプロセッサ及びメモリ（記憶装置）を含むハードウェア層（１２１、１４１）を備えている。
【００２４】
ハードウェア層（１２１、１４１）は、仮想化層（１２２、１４２）をサポートする。サーバー（１２０、１４０）内の仮想化層（１２２、１４２）は、抽象化層（abstraction layer）を提供し、該抽象化層から、とりわけ、たとえば、仮想サーバー、仮想記憶、仮想プライベートネットワークを含む仮想ネットワーク、仮想アプリケーション及びオペレーティングシステム、及び仮想クライアントなどの仮想エンティティのインスタンスを生成する（または該仮想エンティティを具現化する）ことができる。具体的には、いくつかのオペレーティングシステム（１２３、１４３）を、ハードウェア層（１２１、１４１）内のプロセッサによって実行することができる。図１のサーバー（１２０、１４０）内には１つのオペレーティングシステム（１２３、１４３）が示されているが、それぞれ（の仮想マシン）が自身のオペレーティングシステム及び任意の数のアプリケーションを含む任意の数の仮想マシンのインスタンスをサーバー（１２０、１４０）内に生成して（または、該仮想マシンを該サーバー内に具現化して）、あるユーザーまたは複数の異なるユーザーがそれらの仮想リソース（仮想資源）にアクセスできるようにすることができる。
【００２５】
いくつかのアプリケーション（１２４）を、サーバーＡ（１２０）のハードウェア層（１２１）内のプロセッサによって実行することもできる。１つのアプリケーション（１２４）だけが図示されているが、サーバーＡ（１２０）に任意の数のアプリケーションを格納して該アプリケーションを該サーバーで実行することができる。１例において、及び本開示を通じて、たとえば、アプリケーション（１２４）によって提供されるサービスに関連するサーバーＡ（１２０）に要求をしている顧客の増加によって、アプリケーション（１２４）に対してサーバーＡ（１２０）のリソースが過剰に使用される場合がある。上記したように、管理者（１６０）は、リソースを垂直スケール及び／または水平スケールすることを望む場合がある。この状況では、サーバーＢ（１４０）にアプリケーション（１２４）を提供し、及び、ネットワークトランザクションの全てまたは一部をサーバーＢ（１４０）にある該アプリケーションのインスタンスに送ることによって、ネットワークＢ（１０６）上のサーバーＢ（１４０）によって提供されるリソースを利用することができる。
【００２６】
１例では、サーバー（１２０、１４０）で実行されるアプリケーション（１２４、１４４）を、同じまたは異なるタイプのそれぞれのオペレーティングシステム（１２３、１４３）で実行することができる。アプリケーション（１２４、１４４）及びそれらのそれぞれのオペレーティングシステム（１２３、１４３）の各々を、とりわけ、たとえば、プロセッサ、メモリ、ネットワークアダプター、及びデータ記憶装置などのハードウェア層（１２１、１４１）によってサポートされる追加の仮想リソースに関連付けることができる。
【００２７】
ネットワーク（１０４、１０６）内のクラウドサービス管理層（１２５、１４５）は、ネットワーク（１０４、１０６）内のサーバー（１２０、１４０）にあるクラウドサービスの管理を行う。１例では、クラウドサービス管理層（１２５、１４５）はリソースを提供する。リソースの提供（リソースプロビジョニング）によって、クラウドコンピューティング環境内のタスクを実行するために使用されるコンピューティングリソース及びその他のリソースを動的に取得することが可能になる。別の例では、クラウドサービス管理層（１２５、１４５）は、サービスレベル管理を提供し、これによって、契約されたサービスレベルが満たされるようにクラウドコンピューティングリソースが割り当てられる。さらに別の例では、クラウドサービス管理層（１２５、１４５）は、上記のサービスの組み合わせを実行する。
【００２８】
いくつかのクラウドサービス（１２６、１４６）は、ネットワーク（１０４、１０６）内のサーバー（１２０、１４０）によってサポートされる。上記したように、クラウドネットワークを介して提供することができるサービスの例には、サービスとしてのインフラストラクチャー（IaaS）、サービスとしてのプラットフォーム（PaaS）、サービスとしてのソフトウェア（SaaS）が含まれる。したがって、アプリケーション（１２４、１４４）、オペレーティングシステム（１２３、１４３）、クラウドサービス管理層（１２５、１４５）、及びハードウェア層（１２１、１４１）を用いて、いくつかのそれらのタイプのサービスをユーザーに提供することができる。１例では、クラウドサービス（１２６、１４６）は、クラウドサービス（１２６、１４６）のユーザーまたは購入者が関与する潜在的なサービスをサポートする。たとえば、クラウドサービス（１２６、１４６）のユーザーまたは購入者は、商品やサービスの販売に従事している場合があるが、彼らは、ネットワークＢ（１０６）の所有者及び運営者によって提供されるクラウドサービス（１２６、１４６）を介してそれらの販売を行うことができる。
【００２９】
今の例では、説明を簡単にするために、クラウド管理装置（１０２）、サーバーＡ（１２０）、及びサーバーＢ（１４０）は、それぞれのネットワーク（１０４、１０６）及びクラウド管理装置（１０２）を介して互いに通信可能に結合された別個のコンピューティング装置である。しかしながら、本明細書に開示されている原理は、任意の代替構成にも同様に及ぶ。そのため、本明細書に開示されている原理の範囲内にある代替の例には、クラウド管理装置（１０２）、サーバーＡ（１２０）、及びサーバーＢ（１４０）が、同じコンピューティング装置によって実施される例、クラウド管理装置（１０２）、サーバーＡ（１２０）またはサーバーＢ（１４０）の機能が相互接続された複数のコンピューターによって実施される例、並びに、クラウド管理装置（１０２）、サーバーＡ（１２０）、及びサーバーＢ（１４０）が、ネットワーク装置を介在させることなくしてバスを通じて直接通信する例（これらの例には限定されないが）が含まれる。
【００３０】
別の例では、クラウドサービスのスケールイン、スケールアウト、スケールアップ、スケールダウンの少なくとも１つを管理するために、サーバーＡ（１２０）とサーバーＢ（１４０）のいずれかにおいてクラウド管理装置（１０２）を実施することができる。
【００３１】
さらに別の例では、クラウド管理装置（１０２）を、サードパーティ（第三者）によってサービスとして実施することができる。この例では、該サードパーティを組織体や事業体とすることができ、かかる組織体ないし事業体の例として、たとえば、記憶装置、サーバー、ネットワーキング、及びソフトウェアを組み合わせることによって、プライベートクラウドコンピューティング環境、パブリッククラウドコンピューティング環境、及びハイブリッドクラウドコンピューティング環境の構築を支援する先進のCLOUDSYSTEMクラウドネットワークを有するHewlett-Packardがある。
【００３２】
１例では、さらに、グローバルロードバランサ（global load balancer：グローバルな負荷分散装置）（１７０）をクラウド管理装置（１０２）に通信可能に結合することができる。グローバルロードバランサ（１７０）は、ネットワーク（１０４、１０６）またはネットワーク（１０４、１０６）内のサーバー（１２０、１４０）にトランザクション要求を割り当てるいくつかのポリシーを含んでいる。ネットワークＡ（１０４）及びネットワークＢ（１０６）のロードバランサ（負荷分散装置）（１２７、１４７）はまた、ネットワーク（１０４、１０６）内のサーバー（１２０、１４０）にトランザクション要求を割り当てるいくつかのポリシーを含んでいる。
【００３３】
クラウド管理装置（１０２）は、到来するトランザクション（ＨＴＴＰ）要求を受け取って、それらのトランザクション要求をネットワーク（１０４、１０６）内のサーバー（１２０、１４０）（サーバー１２０、１４０は、それぞれ、ネットワーク１０４、１０６の一部である）に割り当てるために、ネットワークＡ（１０４）及びネットワークＢ（１０６）のロードバランサ（１２７、１４７）並びにグローバルロードバランサ（１７０）内のポリシーを更新する。１例では、クラウド管理装置（１０２）のプロセッサ（図２の２０２）は、グローバルロードバランサ（１７０）にアクセスし及び該バランサ（１７０）を制御することができる。クラウドバースティング及び垂直スケーリングに関連して後述するように、グローバルロードバランサ（１７０）は、新しいトランザクション要求を、ネットワークＡ（１０４）の代わりにネットワークＢ（１０６）に、または、ネットワークＢ（１０６）の代わりにネットワークＡ（１０４）に送る。
【００３４】
上記したように、システム（１００）はさらに、クラウド管理装置（１０２）を備えることができる。１例では、クラウド管理装置（１０２）は、ネットワーク（１０４、１０６）から離れて動作するサードパーティ装置である。別の例では、クラウド管理装置（１０２）は、プライベートネットワークＡ（１０４）によって実施されるか、または該ネットワークＡ（１０４）に関連付けられる。より詳しく後述するように、クラウド管理装置（１０２）は、消費者及びシステム管理者（１６０）に、ネットワーク（１０４、１０６）によって生成されたクラウドコンピューティング環境へのアクセスを提供し、並びに、クラウドサービスの水平及び垂直スケーリングを支援し及び定める（または定義もしくは規定する）。
【００３５】
図２は、本明細書に開示されている原理の１例にしたがう、図１のクラウド管理装置（１０２）のブロック図である。クラウド管理装置（１０２）は、本明細書に記載されている方法を実行するコンピューティング装置である。別の例では、クラウド管理装置（１０２）は、たとえば、本明細書に記載されている方法を実行することができる携帯電話、スマートフォン、個人用携帯型情報機器（ＰＤＡ）、またはラップトップコンピューターなどのモバイルコンピューティング装置である。別の例では、クラウド管理装置（１０２）は、デスクトップコンピューティング装置である。
【００３６】
別の例では、クラウド管理装置（１０２）を、いくつかのエンティティの中でもとりわけ、クラウドコンピューティングリソースプロバイダー、管理者、または、サードパーティによってサービスとして提供することができる。この例では、クラウド管理装置（１０２）を、単一のコンピューティング装置で実行することができ、または、任意の数の場所に配置されたいくつかの装置に分散させて実行することができる。
【００３７】
クラウド管理装置（１０２）は、その所望の機能を実現するために、種々のハードウェアコンポーネント（ハードウェア要素）を備えている。それらのハードウェアコンポーネントには、いくつかのプロセッサ（２０２）、いくつかのデータ記憶装置（２０４）、いくつかの周辺装置アダプター（２０６）、及び、いくつかのネットワークアダプター（２０８）を含めることができる。それらのハードウェアコンポーネントを、いくつかのバス及び／またはネットワーク接続を用いて相互に接続することができる。１例では、プロセッサ（２０２）、データ記憶装置（２０４）、周辺装置アダプター（２０６）、及びネットワークアダプター（２０８）を、バス（２０７）を介して通信可能に結合することができる。
【００３８】
プロセッサ（２０２）は、データ記憶装置（２０４）から実行可能コードを取り出して、該実行可能コードを実行するためのハードウェアアーキテクチャを有することができる。該実行可能コードは、プロセッサ（２０２）によって実行されると、本明細書に記載されている方法にしたがって、プロセッサ（２０２）に、クラウドネットワークサービスのスケールイン、スケールアウト、スケールアップ、及びスケールダウンを管理ないし制御する機能を少なくとも実施させることができる。プロセッサ（２０２）は、コードを実行している間に、残りのいくつかのハードウェアユニットから入力を受け取り、及び、該ユニットに出力を提供することができる。
【００３９】
データ記憶装置（２０４）は、プロセッサ（２０２）または他の処理装置によって実行される実行可能プログラムコードなどのデータを格納することができる。後述するように、データ記憶装置（２０４）は、とりわけ、プロセッサ（２０２）がクラウドネットワークサービスのスケールイン、スケールアウト、スケールアップ、及びスケールダウンを管理ないし制御する機能を少なくとも実施するために実行するいくつかのアプリケーションを格納することができる。
【００４０】
データ記憶装置（２０４）は、揮発性メモリ及び不揮発性メモリを含む種々のタイプのメモリモジュールを備えることができる。たとえば、本例のデータ記憶装置（２０４）は、ランダムアクセスメモリ（ＲＡＭ）（２３１）、読み出し専用メモリ（ＲＯＭ）（２３２）、及びハードディスクドライブ（ＨＤＤ）記憶装置（２３３）を備えている。他の多くのタイプのメモリを使用することもでき、本明細書では、本明細書に開示されている原理の特定の適用に適合しうる種々の多くのタイプのメモリ（１３０）をデータ記憶装置（２０４）において使用することが考慮されている。いくつかの例では、異なるデータストレージの必要性に合わせて、データ記憶装置（２０４）において異なるタイプのメモリを使用することができる。たとえば、いくつかの例では、プロセッサ（２０２）は、ランダムアクセスメモリ（ＲＡＭ）（２３１）に格納されているプログラムコードを、読み出し専用メモリ（ＲＯＭ）（２３２）から起動し、ハードディスクドライブ（ＨＤＤ）記憶装置（２３３）内の不揮発性記憶装置内に保持して、実行することができる。
【００４１】
一般に、データ記憶装置（２０４）は、コンピューター可読記憶媒体を備えることができる。たとえば、データ記憶装置（２０４）を、限定はしないが、電子／磁気／光学／電磁気／赤外線／半導体システム、機器もしくは装置、または、それらの任意の適切な組み合わせとすることができる。コンピューター可読記憶媒体のより具体的な例には、たとえば、いくつかの電線を有する電気接続、ポータブルコンピューターディスケット（portable computer diskette）、ハードディスク、ランダムアクセスメモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、消去可能ＰＲＯＭ（ＥＰＲＯＭまたはフラッシュメモリ）、ポータブルＣＤ−ＲＯＭ（portable compact disc read-only memory）、光学記憶装置、磁気記憶装置、または、これらの任意の適切な組み合わせを含めることができる。本明細書の文脈において、コンピューター可読記憶媒体を、命令実行システム、機器もしくは装置によってまたはそれらに関連して（もしくは接続して）使用されるプログラムを収容または格納することができる任意の有形の（すなわち実体のある）媒体とすることができる。別の例では、コンピューター可読記憶媒体を、命令実行システム、機器もしくは装置によってまたはそれらに関連して（もしくは接続して）使用されるプログラムを収容または格納することができる任意の非一時的な媒体とすることができる。
【００４２】
クラウド管理装置（１０２）内のハードウェアアダプター（２０６、２０８）は、プロセッサ（２０２）がクラウド管理装置（１０２）の内外にある種々の他のハードウェア要素とインターフェースすることができるようにする。たとえば、周辺装置アダプター（２０６）は、ユーザーインターフェースを生成し、及び／または、ネットワークＡ（図１の１０４）、ネットワークＢ（図１の１０６）、及び他の外部装置（２１２）にアクセスするために、たとえば表示装置（２１０）などの入出力装置にインターフェースを提供することができる。表示装置（２１０）を提供することによって、ユーザー（図１の１６０）が、クラウド管理装置（１０２）と相互作用ないし対話して該装置（１０２）の機能を実施できるようにすることができる。
【００４３】
周辺装置アダプター（２０６）はまた、プロセッサ（２０２）とプリンタ、表示装置（２１０）もしくは他のメディア出力装置（media output device）間のインターフェースを生成することができる。ネットワークアダプター（２０８）は、ネットワーク（１０４、１０６）にインターフェースを提供し、これによって、クラウド管理装置（１０２）とグローバルロードバランサ（１７０）とネットワークＡ及びＢ（１０４，１０６）間のデータの伝送を可能にすることができる。
【００４４】
クラウド管理装置（１０２）はさらに、ネットワークＡ（１０４）及びＢ（１０６）内で並びにネットワークＡとＢ間でコンピューティングリソース（コンピューティング資源）の垂直及び水平スケーリングをいつどのようにして行うかを決定する際に使用されるいくつかのモジュールを備えている。クラウド管理装置（１０２）内の種々のモジュールを個別に実行することができる。この例では、それらの種々のモジュールを、別個のコンピュータープログラム製品として格納することができる。別の例では、クラウド管理装置（１０２）内の種々のモジュールを、いくつかのコンピューターグプログラム製品（それぞれのコンピュータープログラム製品がいくつかのそれらのモジュールを含んでいる）内で組み合わせることができる。
【００４５】
クラウド管理装置（１０２）は置換モジュール（２４０）を備えることができ、該モジュールは、プロセッサ（２０２）によって実行されると、アプリケーション（図１の１２４、１４４）の設計要件のモデルを生成して、該モデル内にいくつかの置換ポイントを設定ないし定める。置換ポイントは、該モデルのどの部分（もしくはどのような部分）を該モデルのその部分の特定のサブタイプで置換できるかをユーザーまたは管理者（１６０）に示すために使用される。置換モジュール（２４０）はまた、図３〜図５に示されている依存性グラフなどのアプリケーション定義もしくはモデル内のいくつかの置換ポイントを結合する。１例では、置換モジュール（２４０）は、クラウド管理装置（１０２）のデータ記憶装置（２０４）内に格納されており、プロセッサ（２０２）がアクセスできてかつ実行可能である。
【００４６】
図１を再度参照すると、クラウド管理装置（１０２）とネットワークＡ及びＢ（１０４、１０６）のそれぞれのサーバー（１２０、１４０）について説明したように、クラウド管理装置（１０２）は、ネットワークＡ（１０４）及びネットワークＢ（１０６）とインターフェースする。１例では、このインターフェースは、いくつかのアプリケーションプログラミングインターフェース（ＡＰＩ）（１２８、１４８）を用いて達成される。
【００４７】
図３は、本明細書に開示されている原理の１例にしたがう、サービス（IaaS）シナリオとしてのインフラストラクチャー内のアプリケーションモデルまたは依存性グラフ（３００）のブロック図である。１例では、置換モジュール（２４０）は、図３の依存性グラフ（３００）を生成することができる。図３の例では、依存性グラフ（３００）のブロック（３０２）は、置換モジュール（図２の２４０）によって生成されたIaaSモデルを識別する。この例では、置換モジュール（２４０）は、スケーリング（たとえば水平もしくは垂直スケール）されるアプリケーションが特定のオペレーティングシステムを必要とすることを、自律的に、または、管理者（１６０）から受け取ったデータを介して決定している。置換モジュール（図２の２４０）が識別できるオペレーティングシステムの例には、とりわけ、たとえば、Microsoft（マイクロソフト）社によって開発されて配布されているWindows（商標）オペレーティングシステム、Canonical（カノニカル）社によって開発されて配布されているUbuntu（商標）オペレーティングシステム、AmericanTelephone and Telegraph Company（米国電話電信会社）によって開発されて、オープンソースソフトウェアパッケージとして配布されているUNIX（商標）オペレーティングシステム、オープンソースソフトウェアパッケージとして開発されて配布されているLinux（商標）Unixベースオペレーティングシステム、Google（グーグル）社によって開発されて配布されているAndroid（商標）Linuxベースオペレーティングシステム、カリフォルニア大学バークレー校のComputerSystem Research Group（CSRG）によって開発されて配布されているBerkeley Software Distribution（BSD）Unixベースオペレーティングシステム、Apple（アップル）社によって開発されて配布されているiOS（商標）オペレーティングシステム、Apple（アップル）社によって開発されて配布されているMac OS Xオペレーティングシステム、Red Hat（レッドハット）社によって開発されて、オープンソースソフトウェアパッケージとして配布されているCommunity Enterprise Operating System（CentOS）Unixベースオペレーティングシステムを含めることができる。
【００４８】
図３の例では、置換モジュール（図２の２４０）は、ブロック３０２に示されているように、アプリケーションがCentOS Unixベースオペレーティングシステムを必要としていると判定している。置換モジュール（図２の２４０）は、ブロック３０４において、サーバー装置のIaaS置換ポイントを識別ないし特定する。この時点で、置換モジュール（図２の２４０）は、ブロック３０６、３０８、及び３１０において、サーバーのいくつかのサブタイプを識別ないし特定する。図３の<<Extends>>というステートメントは、ベース装置（たとえばサーバー）に対するオプションとしてユーザーが利用可能な該ベース装置のサブタイプを示している。サブタイプの数と種類（タイプ）は、アプリケーションがどのようなタイプのベース装置と共に動作するように制約されているかに依存する。
【００４９】
クラウドネットワークサービスプロバイダーによって提供することができるサーバーのサブタイプには、たとえば、ネットワークＡ（１０４）のサーバーＡ（図１の１２０）にある仮想マシン（ＶＭ）などの内部仮想マシンを含めることができる。サーバーのサブタイプの他の例には、とりわけ、Amazon.com, Inc.（アマゾンドットコム）によって開発されて提供されているElasticComputer Cloud（ＥＣ２）クラウドコンピューティングプラットフォームやRackspace US社によって開発されて提供されているThe Rackspace CloudクラウドコンピューティングプラットフォームなどのネットワークＢ（１０６）のサーバーＢ（図１の１４０）にある仮想マシンなどのいくつかの外部仮想マシン（ＶＭ）を含めることができる。図３に示されているサーバーの例は網羅的なものではない。
【００５０】
図３の依存性グラフ（３００）のような依存性グラフを用いて、クラウドバースティング処理において別のネットワークにスケールアウト（することが）できる可能性がある任意の数のアプリケーションに適用できる多数のもしくは任意の数の置換ポイントを決定することができる。IaaSコンピューティングサービス環境におけるインフラストラクチャーとして提供されるハードウェア装置の中でも特に、プロセッサ、ロードバランサ、記憶装置、周辺装置アダプター、ネットワークアダプター、及び表示装置などの他のコンピューティング装置も、依存性グラフ内の置換モジュール（図２の２４０）によって識別ないし特定される置換ポイントとして機能することができ、該依存性グラフ（または置換ポイント）から、サブタイプが、種々のIaaSサービスプロバイダーによって提供されるオプションとして提示される。
【００５１】
図４は、本明細書に開示されている原理の１例にしたがう、サービス（SaaS）シナリオとしてのソフトウェア内のアプリケーションモデルまたは依存性グラフ（４００）のブロック図である。１例では、置換モジュール（２４０）は、図４の依存性グラフ（４００）を生成することができる。図４の例では、依存性グラフ（４００）のブロック４０２は、置換モジュール（図２の２４０）によって生成されたSaaSモデルを識別する。図４の例では、ソフトウェアパッケージは、管理者（１６０）がユーザーに電子メールアカウントを設定するのを支援するサービスとして提供される。この例では、置換モジュール（２４０）は、自律的に、または、管理者（１６０）から受け取ったデータを介して、ユーザーが特定の電子メールアカウントに関連付けられることになると判断している。
【００５２】
図４の例では、置換モジュール（図２の２４０）は、ブロック４０４においてSaaS置換ポイントを識別ないし特定している。この時点で、置換モジュール（図２の２４０）は、ブロック４０６及び４０８において、ユーザーが利用できる電子メールアカウントのいくつかのサブタイプを識別ないし特定する。図４の<<Extends>>というステートメントは、ベースアプリケーション（たとえば電子メールアカウントサービス）に対するオプションとしてユーザーが利用可能な該ベースアプリケーションのサブタイプを示している。サブタイプの数と種類（タイプ）は、システムがどのようなタイプのベースアプリケーションと共に動作するように制約されているかに依存する。
【００５３】
クラウドネットワークサービスプロバイダーによって提供することができる電子メールアカウントのサブタイプには、たとえば、Microsoft（マイクロソフト）社によって開発されて配布されているEXCHANGESERVER電子メールアカウント、及び、Google（グーグル）社によって開発されて配布されているGMAIL電子メールアカウントサービスを含めることができる。図４に示されている電子メールアカウントサービスの例は網羅的なものではない。
【００５４】
図３に関連して述べたのと同様に、図４の依存性グラフ（４００）のような依存性グラフを用いて、クラウドバースティング処理において別のネットワークにスケールアウト（することが）できる可能性がある任意の数のアプリケーションに適用できる多数のもしくは任意の数の置換ポイントを決定することができる。SaaSコンピューティングサービス環境におけるソフトウェアパッケージとして提供されるソフトウェアパッケージの中でも特に、オペレーティングシステム、カレンダーソフトウェア（calendaring software）パッケージ、ワープロソフトパッケージ、インターネット購買（internet purchasing）ソフトウェアパッケージ、及びセキュリティソフトウェアパッケージなどの他のソフトウェアパッケージも、依存性グラフ内の置換モジュール（図２の２４０）によって識別ないし特定される置換ポイントとして機能することができ、該依存性グラフ（または該置換ポイント）から、サブタイプが、種々のSaaSサービスプロバイダーによって提供されるオプションとして提示される。
【００５５】
図５は、本明細書に開示されている原理の１例にしたがう、スケールポイント（５１８）及び置換ポイント（５１０）を示すアプリケーションモデルまたは依存性グラフ（５００）のブロック図である。図５は、たとえばネットワークＡ（１０４）内のネットワーク活動の増加によって、たとえばネットワークＢ（１０６）などの別のネットワークへのリソースの水平スケーリングが引き起こされるクラウドバーストシナリオを表している。ブロック５０４において、グローバルロードバランサ（１７０）並びにネットワーク（１０４、１０６）のロードバランサ（load balancer）（１２７、１４７）などのいくつかのロードバランサが更新され、それらのロードバランサ（１２７、１４７、１７０）は、スケールバースティングシナリオにおいて要求されているコンピューティング装置として指示される。ネットワークＡ（１０４）からネットワークＢ（１０６）に水平スケールされることになるアプリケーション（５０６）は、ブロック５０６で示される。
【００５６】
スケールポイント（５１８）も、クラウドバーストシナリオが起こるネットワーク使用におけるポイントとして依存性グラフ（５００）内に示される。１例では、範囲基数（range cardinality）が、たとえば、モデル５００において表される変数への参照である「variation initnbは［１,…,２０］である」及び［variationmaxnbは［１,…,２０］である」として表される。これらの範囲基数表現は、アプリケーションの水平スケーリングをいつ実行するか、及び、該アプリケーションの（たとえば、１と２０の間の）多くのインスタンスをどのようにして他のネットワークにスケールアウトすることができるかを決定するために使用される。
【００５７】
上記の例では、水平スケーリング処理の開始時に、アプリケーションの最大で２０のインスタンス及び最少で１つのインスタンスを、他のネットワークにスケールアウトすることができる。この範囲基数は単なる１例にすぎない。他の例では、管理者（１６０）は、アプリケーションの少なくとも２つの追加のインスタンスが別のネットワークに水平スケールされることが決定されたときに、水平スケーリングを開始することを要求することができる。このようにして、管理者（１６０）は、水平スケーリングが、内部ネットワーク内のネットワークの過剰使用の緩和に関して、及び、クラウドコンピューティングリソースプロバイダーから購入する外部ネットワーク上で利用可能なリソースを取得するのにかかるコストの軽減に関して効果的であることを確認することができる。範囲基数内で定義された変数が満たされると、水平スケーリングまたはクラウドバースティングが開始され、いくつかのアプリケーション（各々のアプリケーションが、それ自体の個別のオペレーティングシステム、仮想マシン、及びその他の装置並びに環境を有する）が、クラウドコンピューティングリソースプロバイダーから取得される。
【００５８】
依存性グラフ（５００）はさらに、オペレーティングシステム（ブロック５０８）及び仮想マシン（５１０）を含むアプリケーション（ブロック５０６）のそれぞれのインスタンスが依存する依存性を示している。上記したのと同様に、置換ポイントを、置換モジュール（図２の２４０）によって決定された依存性グラフ（５００）内の任意のポイントに存在するように決定することができる。図５の例では、置換ポイントは、アプリケーション（ブロック５０６）及びそれに関連するオペレーティングシステム（５０８）を動作させるために使用される仮想マシン（ＶＭ）に関連したブロック５１０に存在する。この例において、ＶＭとして利用できるIaaSサブタイプには、内部ＶＭ（internalVM）（ブロック５１２）、ＥＣ２ ＶＭ（ブロック５１４）、及びRackSpace ＶＭ（ブロック５１６）が含まれる。
【００５９】
図３〜図５に関連して、依存性グラフが、アプリケーションの水平スケーリングのそれぞれのインスタンスに対して生成される。このようにして、あるアプリケーションが、ネットワークＡ（図１の１０４）などの内部ネットワークで実行されて、該アプリケーションのインスタンスが、ネットワークＢ（図１の１０６）などの外部ネットワークに水平にスケールアウトされることになるたびに、クラウド管理装置（１０２）の置換モジュール（図２の２４０）は、アプリケーション（図１の１２４、１４４）の設計要件のモデルまたは依存性グラフを生成して、該モデルまたは依存性グラフ内にいくつかの置換ポイントを設定ないし決定する。次に、どのようなタイプのサービス及び装置が該置換ポイントで使用されるかを判定するポリシーを生成して実行するために、及び、該ポリシーによって提供されるクラウド環境要件に対して適合するいくつかのクラウドサービスプロバイダーを提示するために、クラウド管理装置（１０２）内に格納されている他のモジュール（２５０、２６０、２７０）がプロセッサ（２０２）によって実行される。
【００６０】
図２を再度参照すると、クラウド管理装置（１０２）はさらに、静的結合（静的束縛または静的バインド）ポリシー生成モジュール（２５０）を備えることができ、該モジュールは、プロセッサ（２０２）によって実行されると、抽象モデルの形式ないし形態（＝＝サブタイプ）のいくつかの結合ステートメント（binding statement）を生成する。この静的結合ポリシー生成モジュール（２７０）は、実行時に、結合ステートメントを、リソースプロバイダーに対してなされるプロビジョニング要求（provisioning request）に関連付け、この場合、管理者（１６０）は、該リソースプロバイダーからクラウドコンピューティングサービスを受け取ることを要求することができる。プロビジョニング要求は、たとえばネットワークＡ（図１の１０４）などのプライベートネットワークからネットワークＢ（図１の１０６）などのパブリックネットワークにスケール（スケーリング）するときに、抽象モデルの代わりに、指定されたサブタイプを使用することをランタイムシステムに知らせる。
【００６１】
さらに、クラウド管理装置（１０２）は、動的結合（動的束縛または動的バインド）ポリシー生成モジュール（２６０）を備えることができ、該モジュールは、プロセッサ（２０２）によって実行されると、要求が処理されるときに選択すべき最良のサブタイプについて（たとえば最良のサブタイプを）リソースプロバイダーに知らせる、実行時に評価されるスコアリング関数を提供するいくつかのポリシーを生成する。たとえば、管理者（１６０）が、システム（１００）内の内部ハイパーバイザー全体の能力がある閾値よりも低い場合には、システム（１００）はＥＣ２ＶＭまたはRackSpace ＶＭを使用すべきであるが、システム（１００）内の内部ハイパーバイザー全体の能力が該閾値よりも高い場合には、システム（１００）は内部ＶＭを使用すべきであることを要求することができる。さらに別の例では、管理者（１６０）はまた、リソースのスケールアウトがクラウドサービスプロバイダー間に均等に分布するように、RackSpaceサーバーとＥＣ２サーバー間の均等分布が維持されるべきことを指定することができる。
【００６２】
さらに、クラウド管理装置（１０２）は、ポリシー実行モジュール（２７０）を備えることができ、該モジュールは、プロセッサ（２０２）によって実行されると、いくつかのルールをコンパイル（編集または変換ないし作成）していくつかのポリシーを生成し、及び、該ポリシーを実行して、不要なリソースを除外して、それらのポリシーによって提供される制約に適合するいくつかのリソースの候補を決定する。
【００６３】
以下、クラウド管理装置（１０２）のプロセッサ（２０２）が、クラウド管理装置（１０２）のさまざまなハードウェア及びソフトウェア要素を用いて、２つ以上のネットワーク間でコンピューティングリソースを動的にスケール（スケーリング）する方法を、図６〜図１０に関連してより詳しく説明する。図６は、本明細書に開示されている原理の１例にしたがう、ネットワークリソースを管理するための方法を示すフローチャートである。図６に示されている方法は一度実施されると、その結果を、水平スケーリングの将来のインスタンスのために利用することができる。さらに、図６の方法を、実行時の前に実行される設計時（design time）と呼ぶ場合がある。該方法は、プロセッサ（図２の２０２）が置換モジュール（２４０）を実行してアプリケーションのモデルを生成する（ブロック６０２）ことから開始することができる。１例では、該モデルは、図３〜図５に例示されている依存性グラフとして取り込まれもしくは表現される。置換モジュール（２４０）は、該アプリケーションの該モデル内のいくつかの置換ポイントを識別ないし特定する（ブロック６０４）。
【００６４】
置換モジュール（２４０）は、それらの置換ポイントを、利用可能なソーシングオプション（sourcing option）を表す一組のサブタイプを有する抽象モデルとして表現する（または、それらの置換ポイントを、該一組のサブタイプを用いて抽象モデルとして表現する）（ブロック６０６）。システム（１００）は、静的結合ポリシー生成モジュール（図２の２５０）及び動的結合ポリシー生成モジュール（図２の２６０）を用いて、それぞれの置換ポイントに対してどのソーシングオプションを使用すべきかを表すいくつかのポリシーを体系化（または集成または分類）する（ブロック６０８）。このようにして、ブロック６０８は、実行時に該抽象モデル内の置換ポイントを結合するように作用する。
【００６５】
１例では、それらのポリシーを、ネットワークＡ（１０４）、ネットワークＢ（１０６）、クラウド管理装置（１０２）、または、それらを組み合わせたものの中に含まれている情報に基づいて表現することができる。この例では、システム（１００）全体は、ポリシーをどのように表現すべきかに関する入力（もしくは情報）を、ネットワーク（該ネットワークからスケーリングが行われる）から、または、システム（該システムへとスケーリングが行われる）から、または、他の装置から、または、それらのネットワーク及び／もしくはシステム及び／もしくは装置の組み合わせから、受け取ることができる。
【００６６】
静的結合ポリシーと動的結合ポリシーという２つのタイプのポリシーがある。静的結合ポリシーは、自律的になされうるか、または、いくつかの特定の装置もしくはサービスを規定する管理者（図１の１６０）によってなされうる、特定の装置もしくはサービスの最終的な（もしくは決定的な）選択である。たとえば、システム（１００）または管理者（１６０）は、サーバーは、RackSpace ＶＭをサポートするサーバーでなければならないと指定することができる。管理者がそれらの装置やサービスを指定する例では、この情報を、表示装置（図２の２１０）に表示されるいくつかのユーザーインターフェースを介して管理者（１６０）が手動入力することができる。
【００６７】
動的結合ポリシーは、種々の装置もしくはサービスの適合性に基づいて、または、特定の目的もしくは状況に基づく最高のスコアに基づいて、それらの装置もしくはサービスをランク付け（または分類）する体系化（または集成または分類）されたルールである。たとえば、システム（１００）は、ユーザーの必要性に基づいて、GmailまたはHotmailの電子メールアカウントよりも先にExchange Server（エクスチェンジ サーバー）の電子メールアカウントを選択することができる。別の例では、システム（１００）は、多くのクラウドコンピューティングサービスプロバイダーの中でも特に、Amazon.com, Inc.（アマゾンドットコム）によって開発されて提供されているAMAZONWEB SERVICESや、Microsoft（マイクロソフト）社によって開発されて提供されているクラウドコンピューティングサービスなどの最も安価なクラウドコンピューティングサービスプロバイダーから、ＶＭの特定のサブタイプを選択することができる。
【００６８】
図７は、本明細書に開示されている原理の別の例にしたがう、ネットワークリソースを管理するための方法を示すフローチャートである。図７に示されている方法は、アプリケーションの水平スケーリングの全てのインスタンスについて実行され、該方法は、図６に関連して説明した設計時の後に実行される実行時プロセス（ランタイムプロセス）と呼ばれる。
【００６９】
該方法は、プロセッサ（図２の２０２）がモデルのインスタンスを生成することを求める要求を受け取る（ブロック７０２）ことから開始することができる。この要求は、アプリケーションをネットワークＢ（１０６）などの外部ネットワークに水平スケールするように要求する要求である。次に、ポリシー実行モジュール（２７０）は、リソースの候補を選択するためにいくつかのポリシーを適用する（ブロック７０４）。１例では、それらのポリシーは、図６のブロック６０８で体系化された（または集成または分類された）ポリシーである。したがって、それらのポリシーは、抽象モデル内の置換ポイントを結合する。ブロック７０４は、リソースの候補を提供するいくつかのクラウドコンピューティングプロビジョニングシステムに、抽象モデルの置換ポイントが、その置換ポイントにおいて装置もしくはサービスのサブタイプによって置換されることを知らせることを含む。
【００７０】
図７の方法はさらに、選択された候補のリソースを取得する（７０６）ことを含む。１例では、１つの候補だけが、ブロック７０４において返される。この例では、システム（１００）は、当該１つの候補を選択する。
【００７１】
別の例では、２以上の候補を返すことができる。この例では、システムによって、２以上の候補を、ルール及びポリシーによって示された基準に適合する候補だけを通すフィルターでフィルタリングすることができる（または、２以上の候補は、該フィルターを通ったものとすることができる）。管理者は、返された複数の候補の中から任意の候補を選択することができる。
【００７２】
図６及び図７の結果は、静的結合ポリシー及び動的結合ポリシーによって示された基準に適合するクラウドコンピューティングサービスプロバイダー及びそれらのプロバイダーのリソースのリストである。たとえば、静的結合ポリシー及び動的結合ポリシーが、外部ネットワークに水平スケールされることになるネットワークＡ（１０４）のアプリケーション（１２４）が、特定のネットワーク環境を必要とすると判断した場合には、システム（１００）は、静的結合ポリシー及び動的結合ポリシーによって示された基準に適合するクラウドコンピューティングサービスプロバイダー及びそれらのプロバイダーが提供するそれぞれのサービス及びインフラストラクチャーをフィルタリングして取り出すだろう。指定されたネットワーク環境は、いくつかのコンピューティング装置の中でも特に、たとえば、オペレーティングシステム、仮想マシン、サーバーなどのアプリケーションが必要とするコンピューティング装置を含むことができる。指定されたネットワーク環境はまた、それらのコンピューティング装置の仕様（いくつかのコンピューティング装置の仕様の中でも特に、たとえば、メモリ容量、メモリのタイプ、中央処理装置の仕様など）を含むことができる。
【００７３】
指定されたネットワーク環境はまた、外部ネットワークで実施されるアプリケーションのユーザーが（たとえば、該アプリケーションがそれらのユーザーに提供する商品やサービスを購入する際に）使用する決済サービス（または支払いサービス）などの、クラウドコンピューティングサービスプロバイダーによって提供されるサービスを含むことができる。外部のネットワークＢ（１０６）が、それらの静的結合ポリシー及び動的結合ポリシーによって設定されている基準を満たす場合には、任意の数の静的結合ポリシー及び動的結合ポリシー、並びにこれらのポリシーの任意の組み合わせを用いて、該アプリケーションを外部のネットワークＢ（１０６）中に水平スケールすることができる。
【００７４】
図８及び図９は、本明細書に開示されている原理の別の例にしたがう、ネットワークリソースを管理するための１方法を示すフローチャートである。図８及び図９の方法は、図６及び図７の方法を詳しく記述したものであり、プロセッサ（２０２）が置換モジュール（図２の２４０）を実行していくつかの依存性グラフモデルを生成する（ブロック８０２）ことから開始することができる。この場合、依存性グラフモデルのそれぞれは、アプリケーション設計の一部を定義ないし規定する。置換モジュール（図２の２４０）は、依存性グラフモデルのどの部分が置換ポイントであるかを決定する（ブロック８０４）。したがって、ブロック８０４において、置換モジュール（図２の２４０）は、図３〜図５に示されている依存性グラフモデルなどの依存性グラフモデルのどの部分が置換のために修正可能であるかを判定する。
【００７５】
システムは、置換ポイントが管理者によってサブタイプとして明示的に定義ないし規定されているかを判定する（ブロック８０６）。上記したように、静的結合ポリシー及び動的結合ポリシーを用いることによって、利用可能性のあるクラウドコンピューティングサービスプロバイダーをフィルターにかけて、それらの静的結合ポリシー及び動的結合ポリシーによって定義ないし規定された基準を満たすいくつかのクラウドコンピューティングサービスプロバイダーを見出す。静的結合ポリシーは、プロセッサ（２０２）によって実行される静的結合ポリシー生成モジュール（２５０）を用いて生成される。静的結合ポリシー生成モジュール（２５０）は、プロセッサ（２０２）によって実行されると、管理者が、静的結合ポリシーと相互作用ないし対話し及び該ポリシーを生成することができるようにするためのいくつかのユーザーインターフェースを表示装置（２１０）に表示させることができる。
【００７６】
同様に、動的結合ポリシーは、プロセッサ（２０２）によって実行される動的結合ポリシー生成モジュール（２６０）を用いて生成される。動的結合ポリシー生成モジュール（２６０）は、プロセッサ（２０２）によって実行されると、管理者が、動的結合ポリシーと相互作用ないし対話し及び該ポリシーを生成することができるようにするためのいくつかのユーザーインターフェースを表示装置（２１０）に表示させることができる。
【００７７】
置換ポイントが管理者によってサブタイプとして明示的に定義ないし規定されている場合（ブロック８０６においてＹＥＳと判定された場合）は、ポリシーは静的結合ポリシーであり、プロセッサ（２０２）は、入力として静的結合ポリシーを受け取る（ブロック８０８）。置換ポイントが管理者によってサブタイプとして明示的に定義ないし規定されていない場合（ブロック８０６においてＮＯと判定された場合）は、ポリシーは動的結合ポリシーであり、システム（１００）は、抽象モデルのサブタイプを選択するためのポリシーとして該抽象モデルのいくつかのパラメータを定義ないし定める（ブロック８１０）。ブロック８１２において、プロセッサ（図２の２０２）は、再使用できる外部ネットワーク内にアプリケーション（１２４）デプロイメント（アプリケーションのデプロイメントないしデプロイとは、たとえばアプリケーションを配備して使用できるようにすること）のいくつかのインスタンスを定義ないし定める。したがって、ブロック８１２は、システム（１００）が、動的結合ポリシーに関してブロック８０２〜８０６の分析を実行することなく同じアプリケーションの追加のインスタンスをより効果的にデプロイすることができるようにする。プロセッサ（２０２）は、ブロック８０２で生成された同じモデルを参照するいくつかのパッケージを定義ないし定める（ブロック８１４）。したがって、ブロック８１４は、システム（１００）が、外部ネットワーク内のアプリケーションのいくつかの可能性のあるデプロイメントパッケージの概要を記述ないし定めること、及び、ブロック８０２で同じモデルが生成されるときはいつもそれらのパッケージを再使用することができるようにする。
【００７８】
ブロック８１６において、いくつかの動的結合ポリシーを生成するために使用されるルールがコンパイル（編集または変換ないし作成）される。これによって、それらのルールは、可能性のある（または潜在的な）候補であるクラウドコンピューティングサービスプロバイダーをフィルターにかける（フィルタリングする）ときに、プロセッサ（２０２）によって実行される状況に置かれる。動的結合ポリシーは、いくつかのルールに基づくポリシーである。それらのルールは、ポリシーのプロファイルであり、いくつかのクラウドコンピューティングリソースプロバイダーが、いくつかの同じ種類のリソースをいつ提供するか（もしくは提供しているか）を管理者が判定するのを支援する。それらのリソースを３つのサブタイプ、すなわち、モデルポリシー（１００２）とインスタンスポリシー（１００４）とパッケージポリシー（１００６）に分けることができる。図１０は、本明細書に開示されている原理の別の例にしたがう、それらのポリシー内のいくつかのルールの依存性を示す依存性グラフ（１０００）のブロック図である。
【００７９】
図１０に示されているように、モデルポリシー（１００２）、インスタンスポリシー（１００４）、及びパッケージポリシー（１００６）から、ルールポリシー（１００８）が作成される。モデルポリシー（１００２）は、上記のモデル内の置換ポイントのサブタイプを選択するのを支援するために使用される。インスタンスポリシー（１００４）は、図８及び図９のブロック８１２に関して上記したように再使用することができる外部ネットワーク内のアプリケーションデプロイメントの既存のインスタンスを選択するのを支援するために使用される。パッケージポリシー（１００６）は、図８及び図９のブロック８１４に関して上記したように同じモデルを参照するいくつかのパッケージから最も適合するパッケージを選択するために使用される。
【００８０】
ルールポリシー（１００８）は、モデルポリシー（１００２）、インスタンスポリシー（１００４）、及びパッケージポリシー（１００６）を引き継ぎ、一組のルール（１０１０）及び一組の評価（１０１２）から構成されている。ルール（１０１０）は、いくつかのルール（１０１４）を含んでおり、それぞれのルール（１０１４）は、いくつかの述語または制約（１０１６）から構成されている。評価（１０１２）は、ルール（１０１４）内の制約（１０１６）として使用される値を得る方法ないし手段を定義する。評価（１０１２）は、式評価（１０１８）及びリソース評価（１０２０）という２つのサブタイプを含む。式評価（１０１８）は、制約（１１０１６）の値を計算するための式を定義し、リソース評価（１０２０）は、制約（１０１６）の値を得るために使用される関数を定義する。リソース評価（１０２０）は、候補であるクラウドコンピューティングサービスプロバイダーの最良のリソースを決定する際に図６〜図９の方法において使用されるいくつかの引き数（１０２２）を定義する。
【００８１】
それらのポリシーは、クラウドコンピューティングリソースプロバイダーによって提供されるリソースの中から最良のリソースを選択するために使用されるので、システムは、静的結合ポリシー及び動的結合ポリシーを用いて、クラウドコンピューティングリソースプロバイダーによって候補として提供された可能性のあるリソースをフィルターにかけて、最も適合するクラウドコンピューティングリソースプロバイダーによって提供される最も適合するリソースを得る。図８及び図９を再度参照すると、プロセッサ（２０２）は、動的結合ポリシーに関する入力を受け取る（ブロック８１８）。プロセッサ（２０２）は、静的結合ポリシー（２５５）及び動的結合ポリシー（２６５）を、たとえばクラウド管理装置（１０２）のデータ記憶装置（２４０）に格納する（ブロック８２０）。
【００８２】
プロセッサ（２０２）は、置換モジュール（２４０）を使用して、ブロック８０２で生成されたモデルの一部が、サブタイプで置換されることをプロビジョニングシステムに知らせることによって、いくつかの置換ポイントを結合する（ブロック８２２）。ポリシー実行モジュール（２７０）は、プロセッサ（２０２）によって実行されて、スケール用のいくつかのリソース候補を決定する（ブロック８２４）。プロセッサ（２０２）は、ポリシー実行モジュール（２７０）を使用して、ポリシーを適用して候補をフィルターにかける（ブロック８２６）。プロセッサ（２０２）は、アプリケーション（１２４）を外部ネットワーク（１０６）に水平スケールするためのリソースを提供するいくつかの適合する候補を返す（ブロック８２８）。１例では、１つの候補だけが返される。別の例では、２以上の候補が返される。この例では、管理者は、返されたそれらの複数の候補から任意の候補を単に選択することができる。
【００８３】
システム（１００）は、適合する候補であるクラウドコンピューティングサービスプロバイダーのリソースを取得して利用する（ブロック８３０）。ブロック８３０は、該候補であるクラウドコンピューティングサービスプロバイダーと契約を結ぶこと、及び、該候補であるクラウドコンピューティングサービスプロバイダーのネットワークへとアプリケーション（１２４）を水平スケールすることを含むことができる。
【００８４】
以下に、ＸＭＬコードリソース及びルール言語の例を示す。上記したように、候補は、ポリシー実行モジュール（２７０）の入力及び出力である。「候補（candidates）」という用語は、可能性のあるクラウドコンピューティングサービスプロバイダーとして入力される全ての候補を表し、「候補（candidate）」は、下記の例では個々の候補を表している。以下の例は、ポリシー実行モジュール（２７０）が知っているポリシー及び他の情報以外にも、とりわけ、現在のorderKey（オーダーキー）、現在のモデル参照キー、現在のルートリソース、及び、ターゲットリソースなどの他の情報を利用する。この追加の情報は、システム（１００）に知られており、変更されない。この追加の情報はグローバルデータである。
【００８５】
１例では、ルールはルール自体間の関係を有することもできる。この例では、あるルールのアクション（作用ないし動作）によって別のルールを実行することもできる。たとえば、
ルール  ルール１：whenpredicate1 then rule 2（述語１のときはルール２）
ルール  ルール２：whenpredicate2 then candidate（述語２のときは候補）
ルールはまた、０から無限大の数までの優先度（優先順位）を有することができる。その数が大きいほど、その数を有するルールの優先度は高い。１例では、０は、デフォルトの優先度数である。たとえば、
ルール  ルール１  優先度１：when predicate1 then candidate（述語１のときは候補）
ルール  ルール２  優先度０：when predicate2 then candidate（述語２のときは候補）
【００８６】
述語論理は、一階論理、二階論理、多種論理（many-sorted logic：多ソート論理ともいう）、または無限論理（infinitelogic）のような記号による形式的体系（symbolic formal system）に関する一般的な用語である。本出願の形式的体系はその式が修飾（または条件を付ける）することができる変数を含むという点で他の体系と区別される。述語計算の記号は、変数、定数、関数、または述語を表すことができる。定数は、議論領域（domain of discourse）における特定のオブジェクトまたは性質（プロパティ）に名前を付ける。したがって、Geroge（ジョージ）、木、高い、及び青色は、整形式の（または適格な）定数記号（well formed constant symbol）の例である。定数（真）及び（偽）が含まれる場合もある。
【００８７】
変数記号は、議論領域における、一般的なクラス（general class）、オブジェクト、もしくは性質（プロパティ）を指定ないし示すために使用される。関数は、（関数の定義域と呼ばれる）組内のいくつかの要素を別の組（関数の値域）の一意の要素にマッピング（写像）することを示している。定義域及び値域の要素は、議論世界（world of discourse）におけるオブジェクトである。全ての関数記号（functionsymbol）は、値域の各要素にマッピングされた定義域内の要素の数を示す関連するアリティ（arity：引数の個数）を有している。
【００８８】
ルールポリシーにおいて、定数は、通常、数、リソースのタイプ、または、リソースの要素の所望の値である。変数は、通常、グローバルデータ、または、ポリシー実行モジュール（２７０）の入力データである。説明を簡単にするために、いくつかのキーワードを定義して、たとえば、「OrderKey」及び「Target」などの変数を表すことができる。
【００８９】
関数は、インスタンス、モデル、静的結合ポリシー、及びパッケージリソースによって提供される関数である。これらの関数は、要素の値を得るのを支援するために使用される。関数はまた数式演算、定数の組み合わせ、変数の組み合わせ、または関数の組み合わせ（または、定数と変数と関数の任意の組み合わせ）でありうる。「Maximum」及び「Minimum」というキーワードを（それぞれ）１つの種類の関数として定義することができる。
【００９０】
定数及び変数を述語論理において直接定義することができる。関数を複合関数（または複素関数）とすることができ、評価（９１８、９２０）はそれらを表すために提供される。該述語論理では、変数を用いてそれらの関数を表すことができる。たとえば、
述語：cpuは５より大きい；cpuは、下記で定義されている関数を表すための変数である。
評価：cpuはgetAttributeValue（instance, attributename,tag）である（instance＝インスタンス、attributename＝属性名,tag＝タグ）。
【００９１】
関数は関数を決定ないし推論することもできる。たとえば、
述語：値はMaximum（最大）である。
評価：値は式（０．５＼*cpu＼+０．５*memory）である。
cpuは、getAttributeValue（instance, attributename,tag）&nbspである＼a述語計算において、attributenameは「cpu」に結合（バインド）する。
memoryは、getAttributeValue（instance,attributename,tag）&nbspである＼a述語計算において、attributenameは「memory」に結合（バインド）する。
したがって、ポリシー実行モジュール（２７０）は、コンパイラ部分と実行時（ランタイム）部分という２つの部分を有する。ポリシー及び述語の特徴、並びに、述語間の関係によれば、ルール間の関連付けはコンパイラ段階で行われる。述語計算及びルールマッピングは、実行時段階で処理される。その後、ルールの優先度が操作される。
【００９２】
以下は、ＸＭＬリソースの例である。
【表１】
2016505934.tif 000003
2016505934.tif 000004
2016505934.tif 000005
2016505934.tif 000006
2016505934.tif 000007
2016505934.tif 000008
以下は、ルール言語の例である。
【表２】
2016505934.tif 000009
【００９３】
ロードバランサ（１２７、１４７）と同様に、グローバルロードバランサ（１７０）は、トランザクション要求をどこに送るかを定義ないし決定する一組のポリシーを含んでいる。このようにして、グローバルロードバランサ（１７０）は、システム（１００）全体にまたは他のリソース間に作業負荷を分散することによって、最適なリソース活用を実現し、スループットを最大化し、応答時間を最短にし、及び、過負荷を回避する。グローバルロードバランサ（１７０）はさらに、ネットワークＢ（１０６）に水平スケールされたアプリケーションの実行中にネットワークＢ（１０６）のためのロードバランサとして機能する。１例では、ネットワークＡ（１０４）からのトラフィックを、ネットワークＢ（１０６）に、またはその逆方向へとリダイレクトするために、グローバルロードバランサ（１７０）内のポリシーを更新することができる。１例では、クラウド管理装置（１０２）のプロセッサ（図２の２０２）は、グローバルロードバランサ（１７０）にアクセスすることができ、及び、該バランサ（１７０）を制御することができる。
【００９４】
上記の方法を、コンピューターが使用できるプログラムコード（コンピューター使用可能プログラムコード）であって、実行されると上記の方法を実施するプログラムコードが具現化ないし組み込まれているコンピューター可読媒体から構成されるコンピュータープログラム製品によって実現ないし実装することができる。具体的には、コンピューターが使用できるプログラムコードは、アプリケーションのモデルを生成し、該モデル内にいくつかの置換ポイントを決定ないし定め、それらの置換ポイントを一組のサブタイプを有する抽象モデルとして表現し（または、それらの置換ポイントを、該一組のサブタイプを用いて抽象モデルとして表現し）、及び、それぞれの置換ポイントに対してどのソーシングオプションを使用すべきかを表すいくつかのポリシーを体系化する（または集成または分類する）ことができる。
【００９５】
コンピューターが使用できるプログラムコードはさらに、モデルのインスタンスを生成し、いくつかのポリシーを適用することによってリソースの候補を選択し、及び、選択された候補のリソースを取得することを求める要求を受け取ることができる。
【００９６】
さらに、コンピューターが使用できるプログラムコードは、プロセッサによって実行されると、図３〜図１０に関連して説明したプロセスを実行することができる。１例では、コンピューター可読媒体は、上記したコンピューター可読記憶媒体である。この例では、コンピューター可読記憶媒体を、有形の（すなわち実体のある）媒体、または、非一時的な媒体とすることができる。
【００９７】
本明細書及び図面は、ネットワークリソース管理の方法及びシステムを記載している。該方法は、プロセッサを用いて（またはプロセッサによって）、アプリケーションのモデルを生成ないし作成し、該モデル内にいくつかの置換ポイントを決定ないし定め、それらの置換ポイントを一組のサブタイプを有する抽象モデルとして表現し（または、それらの置換ポイントを、該一組のサブタイプを用いて抽象モデルとして表現し）、及び、それぞれの置換ポイントに対してどのソーシングオプションを使用すべきかを表すいくつかのポリシーを体系化する（または集成または分類する）ことを含む。該方法はさらに、モデルのインスタンスを生成することを求める要求を受け取ること、いくつかのポリシーを適用してリソースの候補を選択すること、及び、選択された候補のリソースを取得することを含むことができる。これらのシステム及び方法は、（１）管理者が、クラウドバースティング技術を用いて、内部ネットワーク内で使用されるアプリケーションのうちのどれを外部ネットワークにデプロイすることができるかを決定するのを支援すること、（２）管理者が、その特定のアプリケーションをどのようにして該外部ネットワーク内にデプロイすることができるかを決定するのを支援すること、を含むいくつかの利点を有することができる。
【００９８】
上記の説明は、開示されている原理の例を例示して説明するために提示されたものである。この説明は、それらの原理を網羅することも、それらの原理を開示した形態そのものに限定することも意図していない。上記の教示に照らして、多くの修正及び変形が可能である。
【図１】
2016505934.tif 000010
【図２】
2016505934.tif 000011
【図３】
2016505934.tif 000012
【図４】
2016505934.tif 000013
【図５】
2016505934.tif 000014
【図６】
2016505934.tif 000015
【図７】
2016505934.tif 000016
【図８】
2016505934.tif 000017
【図９】
2016505934.tif 000018
【図１０】
2016505934.tif 000019
【国際調査報告】
2016505934.tif 000020
2016505934.tif 000021