(58)【調査した分野】(Int.Cl.,DB名)
コンピュータ実行可能命令が具現化された1または複数のコンピュータ・メモリー・デバイスであって、前記コンピュータ実行可能命令は、実行されると、クライアントから供給された判断基準に基づいて候補コンピュータ・ネットワークに作業負荷を割り当てるための方法を実施し、前記方法は、
前記クライアントから計算リソースに対する要求を受け取るステップであって、前記要求は、前記クライアントが調整エンジンと相互作用するための仲介として役割を果たす1または複数のインターフェースを備えた抽象化レイヤーを介して受け取られ、前記抽象化レイヤーは、前記調整エンジンへの前記要求を、クライアントの好みを表すクライアント優先プロパティを指定するプログラム的に定義された判断基準として定義して通信することを容易にする、ステップと、
前記要求に関連する前記判断基準を前記調整エンジンにおいて受け取るステップであって、前記判断基準は、候補コンピュータ・ネットワークに対する前記クライアント優先プロパティを指定する、ステップと、
前記調整エンジンを利用して、複数の候補コンピュータ・ネットワークに対応する抽象化されたプロパティのメトリックに関して前記判断基準の分析を実施するステップであって、前記判断基準の分析を実施するステップは、
(a)メトリック・データーベースにおいて前記メトリックにアクセスするステップであって、前記抽象化されたプロパティのメトリックは、前記調整エンジンに関連するエージェントを用いて特定され、前記エージェントは、前記複数の候補コンピュータ・ネットワークの前記メトリックを動的に収集する、ステップと、
(b)前記クライアント優先プロパティの判断基準を前記複数の候補コンピュータ・ネットワークの前記抽象化されたプロパティのメトリックと比較するステップであって、前記比較は、前記複数の候補コンピュータ・ネットワークについての抽象化されたプロパティの正規化メトリックを含むマニフェストに少なくとも部分的に基づき、前記正規化メトリックは、前記複数の候補コンピュータ・ネットワークを比較することを容易にする、ステップと、
を含む、ステップと、
前記正規化メトリックの比較に部分的に基づいて、前記複数の候補コンピュータ・ネットワークから、前記判断基準を満たすメトリックを明示する少なくとも1つのコンピュータ・ネットワークを絞り込むステップと、
前記少なくとも1つの絞り込まれたコンピュータ・ネットワークとの相互作用を開始するステップと、
を含む、コンピュータ・メモリー・デバイス。
前記要求は、前記複数の候補コンピュータ・ネットワークにおいて利用可能な仮想機械上でアプリケーションを実行するための命令を含み、前記アプリケーションは、前記クライアントのアカウントに関連する、請求項1に記載のコンピュータ・メモリー・デバイス。
前記要求は、前記複数の候補コンピュータ・ネットワークにおいて利用可能な記憶位置にデーターを維持するための命令を含み、前記データーは、前記クライアントのアカウントに関連する、請求項1に記載のコンピュータ・メモリー・デバイス。
前記判断基準は、セキュリティ、可用性、コスト、スケーラビリティ、または地理的冗長性のうちの少なくとも1つに関する前記複数の候補コンピュータ・ネットワークの特定の属性を定義する、請求項1に記載のコンピュータ・メモリー・デバイス。
前記複数の候補コンピュータ・ネットワークは、私有企業ネットワークおよび少なくとも1つのパブリック・クラウド計算ネットワークを含み、前記方法は、更に、前記調整エンジンを利用して、前記私有企業ネットワークおよび前記少なくとも1つの絞り込まれたコンピュータ・ネットワークに跨がる前記クライアントのアカウントの使用を管理するステップを含む、請求項1に記載のコンピュータ・メモリー・デバイス。
前記調整エンジンを利用して前記私有企業ネットワークおよび前記少なくとも1つの絞り込まれたコンピュータ・ネットワークに跨がる前記クライアントのアカウントの使用を管理するステップは、前記少なくとも1つの絞り込まれたネットワーク上にプロビジョニングされた仮想機械上で実行するアプリケーションを監視するステップを含む、請求項6に記載のコンピュータ・メモリー・デバイス。
前記調整エンジンを利用して前記私有企業ネットワークおよび前記少なくとも1つの絞り込まれたコンピュータ・ネットワークに跨がる前記クライアントのアカウントの使用を管理するステップは、前記少なくとも1つの絞り込まれたネットワーク上にプロビジョニングされた記憶位置に維持されるデーターを追跡するステップを含む、請求項6に記載のコンピュータ・メモリー・デバイス。
前記調整エンジンを利用して前記私有企業ネットワークおよび前記少なくとも1つの絞り込まれたコンピュータ・ネットワークに跨がる前記クライアントのアカウントの使用を管理するステップは、前記少なくとも1つの絞り込まれたコンピュータ・ネットワークと他のパブリック・クラウド計算ネットワークとの間において使用の負荷均衡を行うステップを含む、請求項6に記載のコンピュータ・メモリー・デバイス。
前記ターゲット・計算ネットワーク上に前記アカウント情報を確立すると、数ある中でも前記1または複数のパブリック計算ネットワーク内における前記アカウント情報の少なくとも1つの位置を表すトークンをアドミニストレーターに公開するステップであって、前記調整エンジンは、前記トークンを前記少なくとも1つの位置に対応するものとして利用し、その結果、前記1または複数のコマンドが、前記少なくとも1つの位置に対して変換される、ステップを更に含む、請求項12に記載のコンピュータ化方法。
1または複数のパブリック・クラウドのプロパティを監視し、前記プロパティに基づいてアカウント情報をホストするのに適したパブリック・クラウドを選択する方法を実施するためのコンピュータ・システムであって、前記コンピュータ・システムは、コンピュータ・メモリー・デバイスに結合された処理ユニットを備え、前記コンピュータ・メモリー・デバイスは、前記処理ユニットによって実行可能な複数のコンピュータ・ソフトウェア・コンポーネントを格納し、前記コンピュータ・ソフトウェア・コンポーネントは、
プライベート・クラウドに関連するアドミニストレーターによって供給される条件を存続させるルール・データー・ストアであって、前記条件は、外部クラウド計算ネットワークを具現化するに当たって前記アドミニストレーターが有益と見なす判断基準を表す、ルール・データー・ストアと、
前記アカウント情報をホストするための候補として指定された前記1または複数のパブリック・クラウドの品質を記述する前記プロパティを受け入れて維持するメトリック・データー・ストアと、
前記1または複数のパブリック・クラウドから前記プロパティを定期的かつ動的に収集し、前記収集したプロパティを前記メトリック・データー・ストアに報告するようにプログラミングされた1または複数のエージェントであって、前記1または複数のエージェントは、前記1または複数のパブリック・クラウドとどのようにインターフェースするかに関するパラメータによってインスタンス化される、1または複数のエージェントと、
パブリック・クラウドから計算リソースを要求しパブリック・クラウドにおいて変換されたプライベート・クラウドのコマンドを実施するプライベート・クラウド間の仲介として動作する抽象化レイヤーの1または複数のインターフェースを利用して、前記1または複数のパブリック・クラウドのうちのどれを、前記アカウント情報をホストするためのターゲット・クラウドとして選択すべきかを決定する調整エンジンであって、前記変換されたプライベート・クラウドのコマンドは、前記ターゲット・クラウド上の前記アカウント情報を表すトークンに少なくとも部分的に基づいて変換される、調整エンジンと、
を備える、コンピュータ・システム。
【発明を実施するための形態】
【0013】
[0020] 本発明の実施形態の主題について、法的要件を満たすために本明細書では特定性をもって説明する。しかしながら、説明自体が本特許の範囲を限定することは意図していない。逆に、本発明者は、特許請求する主題は他の方法で具体化されて、本文書において記載されるステップとは異なるステップまたはステップの組み合わせを、他の現在および今後の技術と共に含むのでもよいと考えている。また、本特許文書の開示は、「混成クラウド・コーディネータ」(Hybrid Cloud Coordinator)という句のように、著作権保護の対象になる素材を含むことも注記してしかるべきである。著作権所有者は、特許文書または特許開示が米国特許商標庁の特許包袋または記録に現れる限りは、何人によるその複製にも異議を唱えないが、それ以外では、全ての著作権を留保する。以下の告知が本文書の部分に適用されることとする。著作権2011年。
【0014】
[0021] 総じて、本発明の実施形態は、プライベートおよびパブリック双方の多数のクラウド計算ネットワークにまたがってプロビジョニングおよび管理サービスを実行する技術を提供する。例えば、本技術は、目標条件(例えば、高いセキュリティ、高性能、低コスト、高い冗長性、またはロバストなバックアップ)を指定するユーザー提出条件に基づいて、種々の利用可能なクラウド計算ネットワークを絞り込むように機能することができる。以下で更に詳しく説明するが、ユーザーが出した条件に関してパブリック・クラウド計算ネットワーク(「パブリック・クラウド」)の選択を最適化しつつ、同時に選択されたパブリック・クラウド上に置かれたアカウント情報に対して負荷均衡およびデーター管理タスクを実行するために、調整エンジン、または「混成クラウド・コーディネータ」(Hybrid Cloud Coordinator)を採用することができる。
【0015】
[0022] 本明細書において用いる場合、「調整エンジン」という句は、1つの場所に存在するいずれかの特定のソフトウェアに限定されることを意味するのではなく、一般に、シームレスな方法で双方のクラウド提供物(パブリックおよびプライベート)の使用を管理し均衡を取ることができる、インテリジェントなソフトウェア・コンポーネントを指す。調整エンジンは、独立したエンティティから単体サービスとして提供されるのでもよい。または、調整エンジンがクラウド・サービス・プロバイダーからソリューション(solution)の一部として提供されるのでもよい。一実施形態例では、調整エンジンは、少なくとも3つの相補的機能を実行する。(a)クラウド間に跨がるアカウントのプロビジョニング、(b)今後の分析および最適化のためのプロビジョニングの結果/履歴の追跡、ならびに(c)クラウドから抽象化されたプロパティを考慮した、クライアントによって提供される条件に基づく判断の管理。
【0016】
[0023] 一例として、ある組織がそれ自体のプライベート・クラウド計算ネットワーク(「プライベート・クラウド」)を実行しつつ、同時に外部のクラウド・サービス(例えば、パブリック・クラウドまたは他のプライベート・クラウド)を拠り所にするのでもよい。この例では、調整エンジンは、多数のクラウドにまたがって使用を分散、最適化、均質化、および負荷均衡化するのに有効であろう。即ち、調整エンジンは、プライベート・クラウドとパブリック・クラウド(1つまたは複数)との間においてデーターの流れを移行させて管理する仲介として機能することができる。
【0017】
[0024] 通例、仲介として動作するとき、調整エンジンは、プライベート・クラウドのアドミニストレーターに対して透過的になるように動作する。あるいは、サービスを選択するためのリソースとして動作するとき、調整エンジンは、種々のプロバイダーによって提供されるサービスの比較を可視化する。したがって、一旦アドミニストレーターが、調整エンジンによって前もってサービス(1つまたは複数)を選択したなら、調整エンジンは、どのプライベート・クラウドに絞り込むべきかについてのアドミニストレーターの監視がなくても、データーを分散し、変更し、引き出すために自動的に選択を使用することができる。したがって、プライベート・クラウド(1つまたは複数)上においてリソースを使用する要求は、抽象的に、即ち、一定の外部記憶位置の具体性なく、与えられてもよい。つまり、調整エンジンは、パブリック・クラウドがクライアントの目標に適しているときはいつでも、クライアントの通常動作を乱すことなく、このパブリック・クラウド(1つまたは複数)の能力を利用するのを補助する。
【0018】
[0025] 一例として、調整エンジンは、アドミニストレーターによって、クライアントのプライベート・クラウドについての機密情報を収容しつつ、機密性が低い情報を第三者のパブリック・クラウドに格納するサービスをプロビジョニングするように構成することもできる。つまり、調整エンジンは、格納用に区別された(earmark)データーの機密性を解釈し、クライアントには透過的な機密性に基づいて、このデーターをしかるべき位置に送ることができる。このように、調整エンジンは、異なる特性(例えば、攻撃に対して強く高価であることに対して、安定であり安価である)を有する種々のパブリックおよびプライベート・クラウドに跨がるサービスへのアクセスを提供し、これらの特性に基づいてインテリジェントにしかるべきクラウド(1つまたは複数)に絞り込み、作業負荷を分散することができる。
【0019】
[0026] したがって、一態様では、本発明の実施形態は、コンピュータ実行可能命令が具体化された1つ以上のコンピュータ読み取り可能媒体に関する。これらのコンピュータ実行可能命令を実行すると、クライアントから与えられる判断基準に基づいて作業負荷を1つ以上の候補コンピュータ・ネットワークに割り当てる方法を実行する。最初に、この方法は、計算リソースを求める要求をクライアントから受け、この要求に関連する判断基準を受けるステップを含む。通例、この判断基準は、候補コンピュータ・ネットワーク(1つまたは複数)についてのクライアントが優先するプロパティを指定する。メトリックに関する判断基準の分析を実行するために調整エンジンが採用される。一実施形態例では、分析するプロセスは、以下のステップを実行することを含む。メトリック・データーベースにおいて前述のメトリックにアクセスするステップであって、候補コンピュータ・ネットワーク(1つまたは複数)からメトリックが掘り出される、ステップと、判断基準をメトリックとそれぞれ比較するステップ。この比較に基づいて、部分的に、候補コンピュータ・ネットワーク(1つまたは複数)から少なくとも1つのコンピュータ・ネットワークが絞り込まれる。一般に、絞り込まれたコンピュータ・ネットワークは、判断基準を満たすメトリックを明示する。ある後の時点において、この絞り込まれたコンピュータ・ネットワークとの相互作用が開始される。
【0020】
[0027] 他の態様では、本発明の実施形態は、私有企業ネットワークに対して外部にある1つ以上のパブリック計算ネットワークに作業負荷を分散するコンピュータ化方法を関する。この方法は、パブリック計算ネットワーク(1つまたは複数)上にホストされるアカウント情報を更新するために私有企業ネットワークのユーザーから発行される要求を受けるステップと、アカウント情報をホストする責務があるターゲット・ネットワークを、パブリック計算ネットワーク(1つまたは複数)から識別するステップとを含む。実例では、1つ以上のコマンドを要求から抽出することができる。一例として、コマンド(1つまたは複数)は、部分的に、更新を実施する命令を表す。コマンドは、外部ソースと相互作用するときにターゲット・ネットワークによって遵守されるルール言語に沿った(consistent)フォーマットに変換することができる。更に、変換されたコマンドは、ターゲット・ネットワークに関連する計算リソースに分散することができる。これらの計算リソースは、アカウント情報に対する更新を実施するように設計される。
【0021】
[0028] 更に他の態様では、本発明の実施形態は、1つ以上のパブリック・クラウドのプロパティを監視し、これらのプロパティに基づいて、アカウント情報をホストするのに適したパブリック・クラウドを選択する方法を実行するコンピュータ・システムに関する。概略的に、このコンピュータ・システムはコンピュータ記憶媒体に結合された処理ユニットを含み、このコンピュータ記憶媒体は、処理ユニットによって実行可能な複数のコンピュータ・ソフトウェア・コンポーネントを格納する。最初に、コンピュータ・ソフトウェア・コンポーネントは、ルール・データー・ストアと、メトリック・データー・ストアと、エージェント(1つまたは複数)と、調整エンジンと、フィードバック・メカニズムとを含む。ルール・データー・ストアは、プライベート・クラウドに関連するアドミニストレーターによって供給される条件を存続させるように設計される。以下で更に詳しく説明するが、これらの条件は、アドミニストレーターが外部クラウド計算ネットワークを具体化するのに価値があると見なす判断基準(例えば、コスト、セキュリティ、データーの永続性等)を露出する。メトリック・データー・ストアは、アカウント情報をホストするための候補に指定されたパブリック・クラウドの品質を記述するプロパティを受け入れて維持するように動作する。これらのクラウドは、調整エンジンによって自動的に指定されても、アドミニストレーターによって手作業で選択されてもよい。
【0022】
[0029] エージェント(1つまたは複数)は、候補パブリック・クラウド(1つまたは複数)をクロールする(crawl)ことによってプロパティを動的に収集し、収集したプロパティをメトリック・データー・ストアに報告するようにプログラミングされる。エージェントの一例には、候補パブリック・クラウド(1つまたは複数)からの予想使用料金を引き出すようにプログラミングされた価格設定エージェント(pricing agent)が含まれる。実施形態では、調整エンジンは、アカウント情報をホストするためのターゲット・クラウドとして、候補パブリック・クラウド(1つまたは複数)からどれを選択するか決定するように構成される。一例では、この決定プロセスは種々のステップを含む。これらのステップには、条件を調べるためにルール・データー・ストアにアクセスするステップ、プロパティを調べるためにメトリック・データー・ストアにアクセスするステップ、条件に関するプロパティの分析の関数としてターゲット・クラウドを選択するステップ、およびアカウント情報の少なくとも一部をホストするために計算リソースを割り当てる要求をターゲット・クラウドに送るステップが含まれるが、がこれらに限定されるのではない。フィードバック・メカニズムには、ユーザーのアプリケーションを実行する間またはユーザーのデーターを格納する動作の間、ターゲット・クラウドが選択されることに付随する条件を満たすか否かにについての、アクセスするための調整エンジンの判断を評価する役割が任される。
【0023】
[0030] これよりクラウド計算ネットワークの一般的な態様について、以下の数章において説明する。通例、本明細書において使用する場合、「プライベート・クラウド」という句は、アドミニストレーターによって運営されるプライベート・クラウド計算ネットワークを表すことを意図しており、一方「ターゲット・クラウド」という句は、クラウド・サービス・プロバイダーによって運営される少なくとも1つのパブリック・クラウド計算ネットワークを表す。通例、クラウド計算ネットワークは、分散型でデーターを格納する、またはサービス・アプリケーションを実行するように作用する(act)。例えば、クラウド計算ネットワークは、ユーザーのサービス・アプリケーションの1つ以上の部分を実行するために割り当てられるノード(例えば、計算デバイス、処理ユニット、またはサーバ・ラックにおけるブレード(blade))を含むことができる。1つよりも多い別個のサービス・アプリケーションがノードによってサポートされているとき、これらのノードは、仮想機械に区分することができる。仮想機械は、それぞれ、各サービス・アプリケーションに特定的なリソースおよび/またはオペレーティング・システムをサポートする個別化された計算環境において、別個のサービス・アプリケーションを同時に実行する。
【0024】
[0031] 更に、各サービス・アプリケーションが機能部分に分割され、各機能部分が別個の仮想機械上で実行できるようにしてもよい。一般に、「ロール」(role)は、サービス・アプリケーションの機能部分のテンプレート記述を与える。役割は、その役割を実現するコンピュータ・コード、その役割によって要求されるホスト環境内における条件、その役割に適用される構成設定値、および他の役割、エレメント等との通信のためのエンドポイントの役割の設定を示すことによって記述される。一例では、役割の構成設定値は、役割の全てのインスタンスによって共有される集合設定値、または役割の各インスタンスに特定の個別設定値とを含むことができる。一実施形態例では、役割は各々サービス・アプリケーションのコンポーネントの特定のクラスを表す。通例、サービス・モデルは、1つ以上の役割の各々のインスタンスをどれだけデーター・センターに置くべきかについて概説し(delineate)、インスタンスの各々は、特定のクラスのコンポーネント、または役割の複製である。言い換えると、各役割は、コンポーネントの各クラスのインスタンスの集合体を表し、サービス・アプリケーションは、その機能を実行するためにあらゆる数のクラスのコンポーネントでも有することができる。
【0025】
[0032] 実施形態では、どの属性または1組の属性をサービス・アプリケーションの役割のインスタンスから送り出す(convey)べきか判断するために、サービス・モデルが採用される。本明細書において利用する場合、「サービス・モデル」という句は、限定することは意図しておらず、一般に、データー・センター内においてサービス・アプリケーションのインスタンスを確立し維持することに関する情報を含むあらゆる通信のことを言う。一般に、サービス・モデルとは、サービス・アプリケーションのコンポーネント・プログラムを管理するための命令を与えるインターフェース青写真(interface blueprint)である。サービス・モデルは、分散型動作環境全体にわたる分散位置への配備(deployment)のときに、配備されるコンポーネント・プログラム間における動作(activities)を調整する際にファブリック・コントローラーを導くように作用する。一例では、サービス・モデルは、サービス・アプリケーションのどの役割を確立すべきかについての記述を含み、またはデーター・センターにおいて役割の各々のインスタンスをどのようにインストールし作動させるかについての記述を含む。即ち、サービス・モデルは、サービス・アプリケーションのためにどの役割を実行すべきかについての明確な表現(articulation)、およびその役割のインスタンスをクラウド計算ネットワークを通じてインストールすべき場合の条件として役立つ。
【0026】
[0033] 以上、種々の異なるタイプのクラウド構成について説明したが、クラウド計算ネットワークの他の適した構造も使用できること、そして本発明の実施形態は、本明細書において説明する仮想機械に跨がる分散型サービス・アプリケーションに限定されるのではないことは言うまでもないことであり、当業者には認められてしかるべきである。本発明の実施形態の全体像について端的に説明したので、本発明の実施形態を実現するのに適した動作環境例について以下に説明する。
動作環境
[0034] 最初に特に
図1を参照すると、本発明の実施形態を実現する動作環境例が示されており、全体的に計算デバイス100と名付けられている。計算デバイス100は、適した計算環境の一例に過ぎず、本発明の使用範囲や機能に関して何ら限定を示唆する意図はない。また、計算デバイス100が、図示されるコンポーネントのいずれの1つまたは組み合わせに関しても何らかの依存性や要件を有するように解釈してはならない。
【0027】
[0035] 本発明は、コンピューター・コードまたは機械使用可能命令という一般的なコンテキストで説明することができ、コンピューター、あるいはパーソナル・データー・アシスタントまたは他のハンドヘルド・デバイスというような他の機械によって実行されるプログラム・モジュールのような、コンピューター実行可能命令を含む。一般に、プログラム・モジュールは、ルーチン、プログラム、オブジェクト、モジュール、データー構造等を含み、特定のタスクを実行するコード、または特定の抽象データー型を実装するコードを指す。本発明は、ハンドヘルド・デバイス、消費者用電子機器、汎用コンピューター、更に特殊な計算デバイス等を含む、種々のシステム構成で実施することができる。また、本発明は、分散型計算環境において実施することもでき、この場合、タスクは、通信ネットワークを通じてリンクされるリモート処理デバイスによって実行される。
【0028】
[0036] 引き続き
図1を参照すると、計算デバイス100は、以下のデバイスを直接または間接的に結合するバス100を含む。メモリー112、1つ以上のプロセッサー114、1つ以上のプレゼンテーション・コンポーネント116、入力/出力(I/O)ポート118、I/Oコンポーネント120、および例示の電源122。バス110は、1つ以上のバス(アドレス・バス、データー・バス、またはその組み合わせ)であってもよいものを代表する。
図1の種々のブロックは、明確さのために線で示されるが、実際には、種々のコンポーネントの境界分けはそれ程明確ではなく、例えて言えば、線は、更に正確にすると、灰色および曖昧になるであろう。例えば、ディスプレイ・デバイスのようなプレゼンテーション・コンポーネントをI/Oコンポーネントであると見なす者もいると考えられる。また、プロセッサーはメモリーを有する。本発明者は、このようなことは技術の本質であると認識しており、
図1の図は、本発明の1つ以上の実施形態と共に用いることができる計算デバイス例を例示するに過ぎないことを繰り返しておく。「ワークステーション」、「サーバー」、「ラップトップ」、「ハンドヘルド・デバイス」等の間に区別は行わない。何故なら、これらは全て
図1に範囲に入ると考えられ、「計算デバイス」を指すからである。
【0029】
[0037] 計算デバイス100は、通例、種々のコンピューター読み取り可能媒体を含む。コンピュータ読み取り可能媒体は、計算デバイス100によってアクセスすることができるあらゆる利用可能な媒体とすることができ、揮発性および不揮発性、リムーバブルおよび非リムーバブル双方の媒体を含む。一例として、そして限定ではなく、コンピューター読み取り可能媒体は、コンピューター記憶媒体および通信媒体を含むことができる。コンピューター記憶媒体は、揮発性および不揮発性双方のリムーバブルおよび非リムーバブル媒体を含み、コンピューター読み取り可能命令、データー構造、プログラム・モジュール、またはその他のデーターというような情報の格納のためのいずれかの方法または技術によって実現される。コンピューター記憶媒体は、RAM、ROM、EEPROM、フラッシュ・メモリーまたはその他のメモリー技術、CD−ROM、ディジタル・バーサタイル・ディスク(DVD)またはその他の光ディスク・ストレージ、磁気カセット、磁気テープ、磁気ディスク・ストレージまたはその他の磁気記憶デバイス、または他のあらゆる媒体を含むが、これらに限定されるのではない。これらは、所望の情報を格納するために用いることができ、計算デバイス100によってアクセスすることができる。通信媒体は、通例、コンピューター読み取り可能命令、データー構造、プログラム・モジュール、またはその他のデーターを、搬送波のような変調データー信号または他の伝達メカニズムにおいて具体化し、あらゆる情報配信媒体を含む。「変調データー信号」という用語は、信号内に情報をエンコードするようなやり方で、その特性の内1つ以上が設定または変更されている信号を意味する。一例として、そして限定ではなく、通信媒体は、有線ネットワークまたは直接有線接続のような有線媒体と、音響、RF、赤外線、またはその他のワイヤレス媒体のようなワイヤレス媒体とを含む。以上の内のいずれの組み合わせも、コンピューター読み取り可能媒体の範囲内に含まれてしかるべきである。
【0030】
[0038] メモリー112は、揮発性および/または不揮発性メモリーの形態としたコンピューター記憶媒体を含む。メモリーは、リムーバブル、非リムーバブル、またはその組み合わせであってもよい。ハードウェア・デバイスの例には、ソリッド・ステート・メモリー、ハード・ドライブ、光ディスク・ドライブ等が含まれる。計算デバイス100は、1つ以上のプロセッサーを含む。このプロセッサーは、メモリー112またはI/Oコンポーネント120のような種々のエンティティからデーターを読み出す。プレゼンテーション・コンポーネント(1つまたは複数)116は、データー指示をユーザーまたは他のデバイスに提示する。プレゼンテーション・コンポーネントの例には、ディスプレイ・デバイス、スピーカー、印刷コンポーネント、振動コンポーネント等が含まれる。
【0031】
[0039] I/Oポート118は、計算デバイス110を、I/Oコンポーネント120を含む他のデバイスに論理的に結合することを可能にする。I/Oコンポーネント120の一部は内蔵されていてもよい。コンポーネントの例には、マイクロフォン、ジョイスティック、ゲーム・パッド、衛星ディッシュ、スキャナー、プリンター、ワイヤレス・デバイス等が含まれる。
実現用システム
[0040] 本発明の実施形態によって導入される技術は、プライベートおよびパブリック双方の、多数のクラウドに跨がってサービス(例えば、アプリケーションおよびデーター)をプロビジョニングし管理するためにある。また、この技術はセキュリティ、性能、コスト、冗長性、およびバックアップというような、クライアントによって供給される判断基準(例えば、構成方針および目標状態)に基づいて、種々の利用可能なクラウドから最適な絞り込み(targeting)を決定する場合にも役立つ。この技術を実現するシステム例について、これより
図2を参照しながら論ずる。一般に、この技術は、クライアント205、プライベート・クラウド210、および1つ以上のパブリック・クラウド250間でインターフェースするために調整エンジン230を採用する。一例では、インターフェースするには、多数のクラウドに跨がって提供されるサービスを記述する情報(例えば、メトリック)を抽象化することを伴う。ここで、一部のクラウドは冗長性をもって構成され(強さおよび安定性が高められて提供される)、一方他のクラウドは費用が安く済む(提供する機構が少ない)場合もある。一旦情報が抽象化され分析されると、どのクラウドに絞り込むか決定するために、調整はこの情報をクライアント205に公開することができる。または、調整は、クライアントによって入力された所望の機構を、抽象化された情報と比較して、自動的に、最も当てはまるクラウド(1つまたは複数)に絞り込むこともできる。
【0032】
[0041] 他の場合では、インターフェースするには、クライアント205が手作業でデーターを、絞り込まれたクラウド(1つまたは複数)によって読み取り可能になるように変換する必要なく、作業負荷を絞り込まれたクラウド(1つまたは複数)にインテリジェントに分散する(例えば、抽象化された情報に基づいて)ことを伴う。即ち、調整エンジン230は、絞り込まれたクラウド(1つまたは複数)におけるサービスとの簡素な相互作用を促進する。一例として、この相互作用は、調整エンジン230によって実行され、調整エンジン230はクライアント205またはプライベート・クラウド210からの通信を、絞り込まれたクラウド(1つまたは複数)によって使用されるそれぞれの言語に変換する(translate)。
【0033】
[0042] これより
図2に移ると、本発明の実施形態を実現するときの使用に適した分散型計算環境200を示すブロック図が図示されている。分散型計算環境200は、プライベート・クラウド210に関連するクライアント205、プライベート・クラウド210内にある抽象化レイヤー220、種々のコンポーネント間でインターフェースする調整エンジン230、フィードバック・メカニズム235、種々のコンポーネントをホストする主クラウド(subject cloud)240、パブリック・クラウド250のグループ、価格設定エージェント260、セキュリティ・エージェント265、ルール・データーベース(DB)270、性能エージェント275、およびメトリックDB280を含む。尚、
図2に示すクラウド210、240、および250は、作業負荷(例えば、データーおよび/またはサービス・アプリケーション)に対処するのに適した計算ネットワークの一例に過ぎず、本発明の実施形態の使用範囲や機能に関して何らかの限定を示唆することも全く意図していないことは言うまでもないことであり、当業者には認められよう。また、クラウド210、240、および250が、いずれか1つのリソース、リソースの組み合わせ(例えば、DB270および280)、そしてリソースにアクセスするための1組のAPI(例えば、調整エンジン230)に関しても何らかの依存性や要件を有するように解釈してはならない。更に、
図2の種々のブロックは、明確化のために線で示されるが、実際には、種々のコンポーネントの境界分けはそれ程明確ではなく、例えて言えば、線は、更に正確にするならば、灰色および曖昧になるであろう。
【0034】
[0043] 主クラウド240は、あらゆるクラウド計算ネットワーク(例えば、プライベート・クラウド210の拡張、または絞り込みが検討されるパブリック・クラウド250の内の1つ)を代表し、調整エンジン230に通信可能に結合される種々のリソースを含むことができる。これらのリソースの一部には、フィードバック・メカニズム235、価格設定エージェント260、セキュリティー・エージェント265、および性能エージェント275が含まれる。これらは、主クラウド240を介して相互接続されるソフトウェア・コンポーネント、プログラム、またはアプリ(app)を表す。主クラウド240は、これらのリソースを、ノードまたはこれらのノード内部にある仮想機械というような、有形計算エレメント上にホストする。したがって、これらのリソースは、個別の自蔵品目(self−contained item)とは異なり、種々の物理的計算エレメントに跨がって分散可能に配置することができる。加えて、主クラウド240は、プライベート・クラウド210およびパブリック・クラウド250というような、他のクラウド計算ネットワーク上におけるサービス(例えば、抽象レイヤー220)にリソースを接続するチャネルを通じた通信を容易にする。一例として、通信チャネルは、限定ではなく、1つ以上のローカル・エリア・ネットワーク(LAN)、および/またはワイド・エリア・ネットワーク(WAN)を含むことができる。このようなネットワーク接続環境は、事務所、企業規模のコンピュータ・ネットワーク、イントラネット、およびインターネットでは極普通である。したがって、ネットワークについてはここではこれ以上説明しない。
【0035】
[0044] これより、DB270および280の構成例について論ずる。最初に、DB270および280は、主クラウド240の内部または外部に存在するデーター・ストアを表し、異なるタイプのデーターをホストするようにプログラミングされる。例えば、ルール・データーベース270は、プライベート・クラウド210と関連するアドミニストレーター(例えば、クライアント205)によって与えられる条件を存続させるようにプログラミングすることができ、ここで「条件」とは、外部クラウド計算ネットワークを具体化することに価値があるとアドミニストレーターが見なす判断基準を表す。つまり、動作において、条件は、ホストされるアプリケーションまたはデーターを最良にサポートするパブリック・クラウド250の1つ以上の機構をアドミニストレーターが識別するのに役立つ。更に、条件は、調整エンジン230が、ルールDB270にアクセスするときに、最も適したパブリックおよび/またはプライベート・クラウド(1つまたは複数)を選択し、作業負荷を受けるために絞り込まれるクラウドとして指定するのに役立つ。他の実施形態では、メトリックDB280は、アカウント情報をホストする候補に指定されたパブリック・クラウド250の品質を記述するプロパティ(例えば、抽象化された情報)を受け入れて維持するようにプログラミングされる。
【0036】
[0045]
図5を参照して以下で論ずるように、DB270および280は、概略的に、クラウド抽象化メトリックをクライアント供給判断基準と比較する分析手順に関連する情報を格納するように構成される。種々の実施形態では、このような情報は、限定ではなく、条件、判断基準、抽象化された情報、メトリック、ならびにクラウド210、240、および250の他のプロパティを含むことができる。加えて、DB270および280は、格納されている情報に適したアクセスができるように、検索可能に構成することもできる。例えば、ルールDB270は、
図4に示す条件、判断基準、およびその他の情報を求める検索ができるとよく、一方メトリックDB280は、
図3に示すメトリック、クラウドのプロパティ、およびその他の情報を求める検索ができるとよい。尚、DB270および280に格納される情報は、構成変更可能(configurable)であるとよく、調整エンジン230によって実行される機能に関連する情報であればいずれでも含むことができることは言うまでもなく、当業者には理解されよう。このような情報の内容および分量は、本発明の実施形態の範囲を限定することは全く意図していない。更に、1つの独立したコンポーネントとして図示されているが、DB270および280は、実際には、複数のデーター・ストア、例えば、データーベース・クラスターであってもよく、その一部が主クラウド240、他のクラウド210および250、他の外部計算デバイス(図示せず)、および/またはその任意の組み合わせに存在することができる。
【0037】
[0046] これより、
図3を参照して、メトリックDB280に格納される1組の情報例について論ずる。概して言うと、
図3は、本発明の一実施形態にしたがって、パブリックおよび/またはプライベート・クラウドから抽象化されたプロパティをリストに纏めたマニフェスト300の模式図例を示す。これらのプロパティは、メトリックDB280のマニフェスト300内においてエントリーとして格納することができる。図示のように、マニフェスト300内における第1エントリーは、データーを格納することを目的とするサービスによって運営されるクラウド計算ネットワークにおけるストレージ型リソース(例えば、Amazon)を記述する。このストレージ・サービスに対する可用性スコア(99.9%)は、ルールDB270における条件に関して
図2の調整エンジン230が判断するために用いられる1つのメトリックを表す。一例では、可用性スコアは、ストレージ・サービスが、切断や障害オフラインがなく利用可能であることを期待される時間の割合を表す。性能スコア(123.456)は、計算容量(例えば、GB/sまたはCPU)が所望の判断基準として指定されるときに、しかるべきサービスを選択するために用いられる。価格設定方式(GB当たり0.02ドル)は、一般に、クライアントのデーターを離れて維持するために計算容量を割り当てるときにストレージ・サービスによって課金される料金である。
[0047] 更に、マニフェスト内における第2エントリーは、アプリケーションをホストすることを目的とするサービス(例えば、Windows Azure)によって運営されるクラウド計算ネットワークにおけるホスティング型リソース(host−type resource)を記述する。通例、アプリケーションは、ホスティング・サービス内部におけるノード上で実行する仮想機械の間で分散される。ストレージ・サービスと比較すると、ホスティング・サービスの方が高い可用性スコアを有すると評価され、これはクライアントによるアクセス可能性が一層高いことに対応する。また、第2エントリーのホスティング・サービスは、ストレージ・サービスよりも高い性能スコアを有し、こちらの方が処理速度が速いことに対応する。最後に、ホスティング・サービスの価格設定方式(毎時0.15ドル)は、ストレージ・サービスの方式とは異なってフォーマットされる。メトリックDB280は、ストレージ・サービスとホスティング・サービスとの間で比較ができるようにするために、別個の価格設定方式を正規化された方式に変換するように構成される。
【0038】
[0048] 尚、クラウド・サービスの他のプロパティも抽象化してマニフェスト300に格納できることは認められてしかるべきである。例えば、ホスティング・サービスによって用いられる仮想機械の特性は、通例アプリケーションおよびオペレーティング・システムのプロパティに基づくが、ホスティング・サービスが適正にクライアントのアプリケーションの機能に対処することを保証するために、マニフェスト内に記述することもできる。アドミニストレーターから与えられる判断基準は、この判断基準をエントリーと比較することによって、クラウドを選択するために用いられる。
【0039】
[0049] これより
図4に移ると、本発明の一実施形態による、パブリックおよび/またはプライベート・クラウド(1つまたは複数)の選択を導くためにアドミニストレーターによって提出される条件または判断基準をリストに纏めたマニフェスト400の模式図例が示されている。通例、マニフェスト400は、
図2のルールDB270によって維持される。図示のように、マニフェスト400は、2つのエントリーを含む。即ち、データー・ストレージに関する判断基準を記述する第1エントリー、およびリモート仮想機械上におけるアプリケーションのホスティングに関する判断基準を記述する第2エントリーである。具体的には、クライアントは既に第1エントリーに第1重要度の判断基準を指定しており、これは価格(例えば、価格≦GB当たり0.10ドル)にしたがって、ストレージ・サービスの選択を決定する(govern)。一方、クライアントは第2エントリーに第2重要度の判断基準を指定しており、これはダウンタイムが少ないことにしたがって(例えば、可用性>99.99%)アプリケーションをホストするための仮想機械の選択を決定する。このように、クライアントは、パブリック・クラウド250において利用可能な異なるタイプのリソースに関して、重要度が異なる判断基準を選択することができる。
【0040】
[0050] 動作において、例えば、調整エンジン230は、
図3のマニフェスト300におけるメトリックに関して、
図4のマニフェスト400における判断基準の分析を実行することができる。この分析の結果、調整エンジンは、オフサイト・リソースの使用が求められるときに使用することを目標にして、しかるべきクラウドを選択することができる。図示のように、プライベート・クラウド・データーに対する追加の外部ストレージが調整エンジンによって求められるとき、クライアントは、価格設定判断基準がGB当たり0.10ドル未満であることを既に指定している。このメトリックは、Amazonクラウド計算ネットワークが、それよりも高いGB当たり0.20ドルの料金を課金し、したがって、データー・ストレージをサポートするための候補としては見なされないことを示す。しかしながら、仮想機械に対する追加の外部処理容量が調整エンジンによって求められるとき、クライアントは可用性判断基準が99,99%よりも高いことを指定している。このメトリックは、Windows Azureクラウド計算ネットワークが99,999%の可用性を提示しており、したがってアプリケーションをホストする候補として考慮されることを示す。
【0041】
[0051] マニフェストの種々の異なる構成、およびその中のエントリーのタイプについて説明したが、クラウド識別(identity)とそれらのそれぞれのメトリックおよび判断基準との間のマッピングを維持するのに適した他のタイプのフォーマットも使用してもよいこと、そして本発明の実施形態は、本明細書において説明したマニフェスト300および400の設計例には限定されないことは言うまでもなく、認められてしかるべきである。例えば、メトリックおよび判断基準は、1つのデーター・ストア内において共通インデックスに格納してもよい。
【0042】
[0052] 実施形態では、ルール言語(rules language)が調整エンジン230によって採用され、調整エンジンが、メトリックに一致する判断基準にどのように重み付けするか定義する。重み付けの処理(例えば、変化する重要性を個々の判断基準に添付する)が、
図2のプライベート・クラウド210にリソースをプロビジョニングするためにどのパブリック・クラウド(例えば、クラウドI251、クラウドII252、および/またはクラウドIII253)に絞り込むかについての判断を決定する。一例では、ルール言語は、メトリックを考慮して判断基準の分析を行うときに、調整エンジンによって用いられるルールを定義する際にも補助することができる。例えば、ルールは、どの判断基準が絶対的であり(ホスティングの候補であることを考慮するために、クラウドのメトリックと一致しなければならない)、どの判断基準が任意であるか(クラウドにとって望ましい属性であるが考慮からは除外される)決定することができる。
【0043】
[0053] 場合によっては、ルールが調整エンジン230によって自動的に設定される。例えば、調整エンジン230は、現在政治的紛争で苦しめられている国に位置するあらゆるクラウドを考慮から除外するルールを確立することもできる。これらの自動的に設定されるルールは、通例、性質上支配的(overarching)であり、クライアントまたは他のユーザーによって入力されるルールを無視する。一例として、ネットワーク接続環境において動作するようにクライアントのアプリケーションが書かれ、クライアントが高レベルのセキュリティを強調するルール(アクセス制限を強制する)を手作業で設定したが、調整エンジン230は、クラウド・プロトコルとの遵守を確認するために第三者によってクライアントのアプリケーションのステータスを監視することを見込む(allow for)ルールを自動的に設定した場合、調整エンジンのルールを優先して対立が解決される。
【0044】
[0054] 他の場合では、ルールはクライアントによって手作業で設定されてもよい。例えば、クライアントが1つのメトリックを絶対的であると特定し、他の指定されたメトリックは任意であるとするルールを確立することもできる。一例では、クライアントが金融機関を表す場合、機密であるアカウント情報のセキュリティを強化した絶対ルールを手作業で設定することができ、これによって、アカウント情報にアクセスすることを許可され検証されたカストマーでなければ、アカウント情報は見れないことを規定する。他の例では、クライアントが機器製造業者を表す場合、データーへのアクセスの信頼性が手作業で設定されてもよいという絶対ルールを確立し、これによって、種々の時点において種々のユーザーに一貫して容易にデーターが利用可能であることを規定する。つまり、ルールは、クライアントが判断基準に重み付けおよび/または格付けして階層にする(例えば、セキュリティまたは信頼性に対する強調)ことを可能にしつつ、更にクライアントがルールを絶対的または単に任意と指定することも可能にする。その結果、ルールは、一旦設定されると、データーおよび/またはアプリケーションが判断基準を考慮してどのように管理されようとしているのか決定する。
【0045】
[0055] ルールの種々の異なる構成、およびそれらの判断基準に対する影響の様子について説明したが、判断基準に重要性を割り当てるのに適した他のタイプのユーザーまたはシステム既定方式を用いてもよいこと、そして本発明の実施形態は、絶対的であるとして格付け、重み付け、設定する、および任意であるとして設定するルール例には限定されないことは言うまでもなく、認められてしかるべきである。例えば、クライアントのアプリケーションに、仮想機械を選択する判断基準に影響を及ぼす1組のルールを添付することができ、一方クラウド内において記憶位置を選択する判断基準に影響を及ぼす他の1組のルールをクライアントのデーターに添付することもできる。
【0046】
[0056]
図2に戻って、プライベート・クラウド210上に存在する抽象化レイヤー220(例えば、ソフトウェア開発キット)についてこれより論ずる。図示のように、抽象化レイヤー220は、総じて仲介として役割を果たすために設けられる種々のインターフェースを含む。クライアント205は、この仲介を通じて、主クラウド240上に存在する調整エンジン230と相互作用することができる。主クラウド240は、プライベート・クラウド210と関連付けられても、付けられなくてもよい。これらの種々のインターフェースは、以下のものを含むが、これらに限定されるのではない。ルール・インターフェース221、リソース管理インターフェース222、および判断基準インターフェース223。
【0047】
[0057] 一例では、ルール・インターフェース221および判断基準インターフェース223は、調整エンジン230が候補クラウドを選択するときに遵守するために、カストマーがルールおよび判断基準をそれぞれプログラミングによって定義することを可能にする。その結果、クライアント205が指定した条件/望ましい条件と一致するクラウドが選択され、このクラウド上にリソースをプロビジョニングすることになる。インターフェース221および223の動作については、
図5に示すクラウドの選択を容易にする方法を参照しながら、以下で更に詳しく論ずる。他の例では、リソース管理インターフェス222は、クライアント205が、コマンドの詳細な変換を行ったり外部データー・センターのプロトコルを学習することなく、パブリック・クラウド250から選択されたターゲット・クラウドと透過的に対話処理することを可能にするメカニズムとして動作する。したがって、抽象化レイヤー220内におけるリソース管理インターフェース222は、パブリック・クラウド250によって使用されるプロトコルのライブラリーとして機能し、更に加えて、そのライブラリーを用いてクライアントのコマンドをしかるべき言語およびフォーマットに自動的に変換する変換器として機能する。このように、リソース管理インターフェース222は、実際のクラウド実施態様について特定の知識を何ら持たなくても、外部ファイル記憶容量の増減というような、抽象化命令を受け入れることができる。
【0048】
[0058] 以上で端的に述べたように、エージェント260、265、および275には、調整エンジン230にアクセス可能なメトリック(例えば、
図3のマニフェスト300のエントリー)を更新するために、メトリックDB280に供給される情報を周期的に投稿する役割が任される。一例では、メトリックはパブリック・クラウド251〜253から個々に抽出される。他の例では、メトリックは、他のソースをクライアントのデーターおよび/またはアプリケーション(1つまたは複数)をホストするための候補として考慮するために、主クラウド240、プライベート・クラウド210等のような、他のソースから掘り出される(mine)のでもよい。エージェント260、265、および275によってクロールされる正確なソースは、クライアント205によって手作業で、またはシステムによって自動的に確定されるのでもよい。自動的にクロールされるソースを確定する一実施形態では、ソースから収集された情報の位置および識別(identity)を運ぶ(drive)するためにデーターベース方式を生成することができる。
【0049】
[0059] 一般に、エージェントには別個の役割が割り当てられ、その役割は、相互に排他的な情報を収集しメトリックDB280に提出することを含む。例えば、価格設定エージェント260には、異なるソースから価格設定情報を動的に収集する役割が割り当てることができる。特定的な例では、価格設定エージェント260は、種々のオンライン位置(例えば、URLアドレス)に向けられ、オンライン位置にナビゲートすることによってクラウドから到達した価格設定情報を引き出すように、プログラミングによって構成することができる。図示のように、価格設定エージェント260は、3つのオンライン位置に向けられ、これらのオンライン位置は、パブリック・クラウドI251、パブリック・クラウドII252、およびパブリック・クラウドIII253にそれぞれ対応する。価格設定エージェント260には、パブリック・クラウド251〜253とどのようにインターフェースするか決定するパラメータがインスタンス化されてもよい。更に、価格設定エージェント260は、パブリック・クラウド251〜253にいつ接触するかを決定するパラメータによってインスタンス化されてもよい。例えば、価格設定エージェント260は、既定の間隔で、候補クラウドに指定されたパブリック・クラウド251〜253から特定の情報を収集するようにプログラミングされるのでもよい。実施形態では、調整エンジン230は、価格設定エージェント260のパラメータをインスタンス化し管理する責務を負い、一方、クライアント205は、例えば、ルールDB270内における1つ以上のルールに合わせるために、価格設定エージェント260の構成設定値を変更することを許可される(enabled)ことが多い。
【0050】
[0060] 一旦収集されると、価格設定エージェント260によって収集された価格設定情報は、返送されてメトリックDB280に報告される。この価格設定情報は、決定を下すときに考慮すべき最新のデーターを調整エンジン230に供給するために、メトリックDB280のレコードを更新するために用いられる。古くなった価格設定情報は、最新データーによって置き換えられるときに、メトリックDB280から投棄されればよい。更に、メトリックDB280は、調整エンジン230にとって使いやすくなるように、価格設定情報を分類し選別する(filter)ように構成されてもよい。
【0051】
[0061] 価格設定エージェント260は、パブリック・クラウド251〜253から価格設定情報(例えば、使用に対して予測される料金)を引き出すようにプログラミングされ、これについて詳細に説明したが、本発明の実施形態は、パブリック・クラウド250と相互作用し(直接またはAPIを通じて連絡を取る)、クラウドを評価するのに有用と見なすことができる種々の他の情報を収集する、種々の他のエージェントも想定する。価格設定エージェント260と同様、他のエージェントも、パブリック・クラウド251〜253をクロールし収集した情報をメトリックDB280に報告することによって、パブリック・クラウド251〜253から情報(例えば、プロパティ、属性、特性等)を動的に収集するようにプログラミングされるのでもよい。一例では、これらのエージェントには、パブリック・クラウド251〜253によってそれぞれ強制されるセキュリティ・レベルを測定するようにプログラミングされるセキュリティ・エージェント265、および/またはパブリック・クラウド251〜253それぞれによる可用性サポートのレベルを測定するようにプログラミングされる性能エージェント275が含まれる。
【0052】
[0062] エージェント260、265、および275に対して種々の具体的なデーター収集レート(例えば、毎分10スキャン)を概説した(delineate)が、本発明の実施形態は、エージェント260、265、および275によってクロールされるクラウドから情報を収集するための時間的基準については、いずれの形式でも考慮することは認められそして理解されてしかるべきである。例えば、クライアント205と抽象化レイヤー220とのある種の相互作用によって、調整エンジン230に、メトリックDB280を更新することをエージェント260、265、および275に要求させるのでもよい。
【0053】
[0063] 更に、調整エンジン230をホストする同じクラウドである主クラウド240について概説したが、エージェント260、265、および275はいずれのプライベートまたはパブリック・クラウド上に配置されてもよい。例えば、エージェント260、265、および275が余りに多くのリソースを消費し始めた場合、これらをパブリック・クラウド250の1つ以上に移動させてもよい。
【0054】
[0064] フィードバック・メカニズム235は、概略的に、ターゲット・クラウドが、使用のために選択されることに付随してクライアント205によって指定される判断基準を満たすか否かについての、アクセスするための調整エンジン230の決定を評価するように構成される。実施形態では、フィードバック・メカニズム235によって行われる評価は、以下のような種々のステップを含む。調整エンジン230の過去の決定を見直す、性能を改善するためにこれらの決定の影響を自己評価する、および自己評価の成果をルールDB270に適用する。したがって、フィードバック・メカニズム235は、期待通りに信頼性が高い判断基準から疑わしい判断基準を選別するために、ルールを自動的に確立または修正する。このように、フィードバック・メカニズム235は、望まれる結果を実際に達成するために、判断基準を重み付けし直し、永続的に不正確であるとしてパブリック・クラウド251〜253から引き出された情報を無視するために、ルールを改変することができる。
調整エンジン
[0065] 調整エンジン230は、全体的に、(パブリックおよびプライベート)双方のクラウド提供の使用をシームレスな方法で管理し均衡を取ることができるインテリジェント・ソフトウェア・コンポーネントを表す。実施形態では、調整エンジン230は、プライベート・クラウドのソリューションの一部として提供される(プライベート・クラウド210におけるアプライアンス内の機構としてインストールされる)のでもよく、または
図2に示すように、主クラウド240内に、クライアント205から離れて配置されるのでもよい。更に、調整エンジン230は、分割されても、2つ以上のデーター・センター上に再生されてもよい。動作において、調整エンジン230は2つの相補的な機能をシームレスに実行する。即ち、メトリックを考慮してクライアント205によって供給されるルールに基づく決定を下し、今後の分析および最適化のために結果/履歴を追跡しつつ(例えば、フィードバック・メカニズム235を利用する)クラウド210、240、および/または250に跨がってアカウントをプロビジョニングする。
【0055】
[0066] 第1の機能に関して、調整エンジン230は、パブリック・クラウド250の内どれを候補クラウドとして考慮するか決定し、これらの候補クラウドの内1つ以上を、クライアントのアカウント情報をホストするターゲット・クラウドとして選択するように設計されるとよい。実施形態では、パブリック・クラウド250の内、どれを候補クラウドとして考慮すべきか決定するプロセスは、ルールDB270にアクセスして、ルールを考慮して判断基準を調べ、メトリックDB280にアクセスしてメトリック(例えば、パブリック・クラウド250に対して個別なプロパティ)を調べることを含む。通例、調べる場合、データーベースの功利的な発見を促進するためにデーターベースにしたがって情報が編成されたDB270および280にアクセスし、DB270および280からしかるべき情報を引き出すことを含む。実施形態では、パブリック・クラウド250からターゲット・クラウドを選択するプロセスは、引き出した情報と、ルールにしたがって重み付け/修正された判断基準との比較の関数としてターゲット・クラウドを選択することを含み、絞り込まれたクラウドは、判断基準を実質的に満たすメトリックを明示する。ターゲット・クラウドを選択するときに、調整エンジン230は、更に、絞り込まれたクラウドとの相互作用を開始し、クライアントのアカウントの少なくとも一部をホストするために計算リソースを割り当てる要求をターゲット・クラウドに送るように構成されてもよい。
【0056】
[0067] 先に示した第2関数に関して、調整エンジン230は、絞り込まれたクラウド(1つまたは複数)におけるクライアントの動作(activities)を管理することができる。一例では、クライアントの動作を管理するこのやり方により、クライアント205は要求内においてコマンドを供給することが可能になる。この要求は、プライベート・クラウド210のクラウド・ベース・プラットフォーム(例えば、クラウド240および250)との意図した相互作用を概略的に記述する要約情報で構成される。これらの要求は、クライアント205がシステムの日々の動作の低レベルな詳細を追跡および/または分析することなく、発行し実行することができる。このため、調整エンジン230は、各APIの実施態様を理解することをクライアント205から解放する。各APIは、リソース管理インターフェース222を介した、プライベート・クラウド210とクラウド計算プラットフォームとの間で進行中のトランザクションを監視する。言い換えると、クライアント205はどこに新たなデーターをアドレスすべきか、そしてどこに古いデーターが格納されているかについて事前の知識を有する必要がない。代わりに、クライアント205は、クラウドに特定しないリソース使用要求を生成する責務だけを果たせば良く、この要求は抽象的に形成されるコマンドを含む。また、実施形態では、調整エンジン230は、その目標に相応しいときにはいつでも、パブリック・クラウド250のパワーを利用するときに、プライベート・クラウド210の通常動作を乱すことなく、クライアント205を補助する。
【0057】
[0068] クライアント205がコマンドを抽象的なフォーマットで供給することを可能にするプロセスを呼び出すことを超えて、調整エンジン230は、任意に、クライアントのアカウントに影響を及ぼす判断を行うときに、コマンドを適用するインテリジェントな決定を背景で行う。これらのインテリジェントな決定は、通常、ルールに基づき、そのルールに対する手作業および/または自動的な修正に基づいて構成変更可能にすることもできる。例えば、調整エンジン230が、パブリック・クラウド250の内どれが要求を最良に満たすか判断するために、到来するクライアント要求を動的にアドレシングするときに、異なるメトリックを繰り返し使用することを、ルールが指令することもできる。
【0058】
[0069] これより、調整エンジン230の一使用例について論ずる。クライアント205が会社であり、バックアップソリューションを販売する業務を行うと仮定し、更にこの会社のストレージの使用が非常に多くしかも予測不可能であると仮定すると、この会社はパブリック・クラウドの柔軟性を利用することから利益が得られそうである。最初に、この会社は、プライベート・クラウド210に対してローカルなアプリケーションにおいて、調整エンジン230をセットアップする(setup)。または、この会社が調整エンジン230をホストしている他のクラウドのサービスを取得するのでもよい。
【0059】
[0070] 一旦調整エンジン230へのアクセスが得られたなら、この会社は、抽象化レイヤー220のルール・インターフェース221および判断基準インターフェース223を通じて、ルールおよび判断基準をそれぞれ設定することによって、調整エンジン230を構成することができる。判断基準を設定するとき、この会社は最も低い価格を第一に選択することができる。調整エンジン230は、候補クラウド(例えば、この会社が使用したいことを確認したクラウド)に指定されているパブリック・クラウド250についての現在の価格を把握している。更に、この会社は、プライベート・クラウド210を候補クラウドの1つとして考慮させるために、プライベート・クラウド210を実行するための動作コスト(即ち、保守コスト)を提出することができる。
【0060】
[0071] 後のある時点において、この会社は、新たに生成されるデーターのために所要のGB量のストレージを求める要求を発行することができる。調整エンジン230は、この要求の発行時に、最も費用が少ない候補クラウドを発見しようとする。一旦費用が最も少ない候補クラウドが発見されたなら、これがターゲット・クラウドに指定され、要求内において伝えられたこの会社のデーター・ストレージ要件を満たすためにプロビジョニングされる。更に、実施形態では、調整エンジンは、ターゲット・クラウド上に置かれたストレージ・アカウントを表すトークンを戻すことができる。この会社は、ストレージ・アカウント内にあるデーターに影響を及ぼすリード/ライト・コマンドを発行するとき、このトークンを用いて、抽象化レイヤー220を通じて、ストレージ・アカウントをコールすることができる。調整エンジンは、このトークンを用いてターゲット・クラウドを特定し、リード/ライト・コマンドをターゲット・クラウドのネーティブなコマンドに変換する。したがって、要求内におけるターゲット・クラウドを特定し、要求内に埋め込まれた命令を変換するというこの会社の責務は、調整エンジン230によって引き継がれる。
【0061】
[0072] この分散型計算環境200は、本発明の態様を実行するために実現することができる適した環境の一例に過ぎず、本発明の使用範囲や機能に関して何ら限定を示唆する意図はない。また、計算デバイス200が、図示されるコンポーネント220、230、235、260、265、270、275、および280のいずれの1つまたは組み合わせに関しても何らかの依存性や要件を有するように解釈してはならない。実施形態の中には、コンポーネント220、230、235、260、265、270、275、および280の内1つ以上が、単体デバイスとして実装されてもよい場合もある。他の実施形態では、コンポーネント220、230、235、260、265、270、275、および280の内1つ以上が、クラウド210、240、または250の内1つ以上に直接統合されてもよい場合もある。尚、
図2に示すコンポーネント220、230、235、260、265、270、275、および280は、性質および個数については例示であり、限定と解釈してはならないことは、当業者には言うまでもないであろう。
【0062】
[0073] したがって、本発明の実施形態の範囲内で所望の機能を達成するには、いかなる数のコンポーネントでも採用してもよい。
図2の種々のコンポーネントは、明確さのために線で示されるが、実際には、種々のコンポーネントの境界分けはそれ程明確ではなく、例えて言えば、線は、更に正確にするならば、灰色および曖昧になるであろう。更に、
図2の一部のコンポーネントは1つずつのブロックとして図示されているが、これらの描写はその性質および個数については例示であり、限定と解釈してはならない(例えば、プライベート・クラウドは1つしか示されていないが、もっと多くのプライベート・クラウドを調整エンジン(1つまたは複数)230)に通信可能に結合することもできる)。
クラウドの選択を容易にする方法
[0074] これより
図5に移ると、本発明の一実施形態にしたがって、パブリックおよび/またはプライベート・クラウド(1つまたは複数)の選択を容易にするために採用される分散型計算環境500を図示するブロック図が示されている。図示のように、計算環境500は、
図2の計算環境200の態様を含み、同様の参照番号は実質的に同様なコンポーネントを表す。更に、計算環境500は
図7の流れ図のコンテキストで論じられ、この流れ図は、本発明の一実施形態にしたがってアドミニストレーター510から供給される判断基準に基づいて、作業負荷を1つ以上の候補計算ネットワークに割り当てる方法全体700を示す。本明細書では、「ステップ」および「ブロック」という用語が、採用した方法の異なるエレメントを暗示するために以下で用いられるが、個々のステップの順序が明示的に記載されている場合を除いて(unless and except)、これらの用語が、本明細書において開示される種々のステップ間で何らかの特定の順序を暗示するように解釈してはならない。
【0063】
[0075] 最初に、アドミニストレーター510(クライアントのIT部署の従業員)が、企業のプライベート・クラウド210がアプリケーションの使用において大量の増加を生じたため、仮想機械を供給するホスティング・サービスに要求を行うことを通知するというのでもよい。アドミニストレーター510は、ブロック710で示すように、リソースの要求530を抽象化レイヤー220を通じて調整エンジン230に発行することができる。一例では、要求530は、6ヶ月のプロジェクトの間100テラバイトの計算リソースを求めることができる。
【0064】
[0076] ブロック720に示すように、アドミニストレーター510は、更に、この要求内において、ルール・インターフェース221および判断基準インターフェース223を通じて、ルール520および判断基準525をそれぞれ供給することができる。判断基準525を供給する一例では、アドミニストレーター510が抽象化レイヤー220と協働する相互作用アプリケーションにアクセスするのでもよく、このアプリケーションがGUIをレンダリングし、このGUI内において、アドミニストレーターが計算容量の要求に判断基準525を添えて、提出することができる。通例、判断基準525は、最適なパブリック・クラウドのクライアントが優先するプロパティを指定する。一例として、添付判断基準525は、低い価格設定が最も重要であることを示し、一方高セキュリティおよび高性能要件というような他の判断基準525は、望ましいが任意である。
【0065】
[0077] 要求530を調整エンジン230に伝達するとき、調整エンジン230は、ブロック730に示すように、メトリックDB280におけるメトリックに関して、判断基準525の分析を実行することができる。一実施形態例では、この分析プロセスは、以下のステップを実行することを含む。メトリックDB280においてメトリックにアクセスする(ブロック740参照)、および判断基準525をメトリックと比較する(ブロック750参照)。実施形態では、調整エンジン230は、ルールDB270からのルール520を判断基準メトリック525に適用することによって、メトリックを考慮することができる。ブロック760に示すように、部分的にこの比較に基づいて、候補クラウドの内少なくとも1つのクラウドに絞り込む。一般に、絞り込まれたコンピュータ・ネットワークは、判断基準525を満たすメトリックを明示する。
【0066】
[0078] 後のある時点において、ブロック770に示すように、絞り込まれたコンピュータ・ネットワークとの相互作用を開始する。この相互作用は、要求を満たすターゲット・クラウド上にアカウントをプロビジョニングするのでもよい。アカウントをプロビジョニングするとき、調整エンジン230はURL、API、および/またはトークンを信任状と共にアドミニストレーター510に戻すことができ、アドミニストレーター510がアカウントとインターフェースするために言語変換メカニズムを作成することなく、ターゲット・クラウド上のアカウントに対するリードおよびライトが可能になる(即ち、認証アクセス)。したがって、調整エンジン230は必ずしもターゲット・クラウドの識別をアドミニストレーター510に示す訳ではない。動作において、トークンは、プライベート・クラウド210に割り当てられたターゲット・クラウド内にある仮想機械のIPまたはMACアドレスのリスト、および仮想機械にアクセスするのに必要な信任状を表す。このトークンを用いると、アドミニストレーターは、割り当てられた仮想機械に離れてログインし、役割のインスタンスをイネーブルするおよび/または追加のリソースをインストールすることによって、これらをセットアップし続けることを許可される(enable)。更に、アドミニストレーター510がもはやターゲット・クラウドに割り当てられた仮想マシンを使用しないとき、サービスの取り消しを要求しこれらに課金が生じ続けるのを停止させるために、このトークンを用いることができる。
【0067】
[0079] 先に論じた判断基準の例525における多様性から、あらゆる態様において各アドミニストレーター510に理想的な特定のクラウド構成はないことは明らかである。また、1つのクラウド構成が、各アドミニストレーター510が要求する機構を明示することもなく、異なるエリア毎に異なるクラウド構成が優れる。つまり、調整エンジン230は、通例、このクラウドのリソースを使用するかについて最適な判断を行うために多くのパブリック・クラウド・パラメータを追跡するようにプログラミングされる。以下に最適化の事例を挙げる。
【0068】
[0080] 調整エンジン230は、エッジ・シナリオ(edge scenario)に対して最適化することができる。サービス・プロバイダーが1組の候補クラウドX、Y、およびZを運営すると仮定する。候補クラウドXに関連するサービス・プロバイダーが、エッジ・キャッシング(edge caching)およびコンテンツ配信についてはクラスで最良であると判定された場合、アドミニストレーター510からの要求は、候補クラウドYまたはZではなく、候補クラウドXに導かれる。本明細書において用いる場合、「エッジ・キャッシング」という句は、ユーザーの主要グループの近傍内にコンテンツを維持することを言う(例えば、日本におけるカストマーは、より早くプレーすることができるように、ロサンゼルスではなく、東京近くでメディアのコピーを望む)。
【0069】
[0081] 調整エンジン230は、価格設定のシナリオに対して最適化することができる。候補クラウドXのサービス・プロバイダーが1ドル/GBを課金し、一方候補クラウドYおよびZに関連するサービス・プロバイダーは同じ信頼性で0.50ドル/GBを課金すると仮定する。価格設定のシナリオの下では、調整エンジン230は、格納要求を、候補クラウドXの代わりに、候補クラウドYまたはZに導くことができる。一方、
図2の価格設定エージェント260は、候補クラウドX、Y、およびZの種々の価格設定方式に関して、調整エンジン230を最新に保つための自動サービスとして動作することができる。
【0070】
[0082] 更に、価格設定のシナリオは、候補クラウドYおよびZ(例えば、
図2のパブリック・クラウド250)を使用する方が費用効率的である場合、プライベート・クラウド210の一部を使用しなくてもよいように、ルール520の中に挙動をプログラミングすることもできる。つまり、内部に格納することが指定された機密情報の突然の増大に反応するために、パブリック・クラウド(1つまたは複数)を利用してプライベート・クラウド210上の空間を割り当てることもできる。このように、プライベート・クラウド210は、監視される他のいずれのクラウドとも全く同様に、調整エンジン230によって候補であると考慮される。
【0071】
[0083] 調整エンジン230は、バックアップのシナリオに対して最適化することができる。アドミニストレーター510が、ルール520内において、信頼性高く重要なデーターをバックアップすることに、組織がプレミアムを付けることを示すと仮定する。更に、ルール520は、データー損失に対して最大限の保証を提供するために、候補クラウドX、Y、およびZの内2つ以上にデーターを冗長的に格納することも指定する。このバックアップのシナリオでは、調整エンジン230の決定は、複数のクラウドにおける冗長性に対して最適化することができる。
【0072】
[0084] 調整エンジン230は、信頼性のシナリオに対して最適化することができる。信頼性のシナリオでは、調整エンジン230は、候補クラウドYではなく候補クラウドXを選出するというような、それが行った種々の選択の信頼性履歴を追跡することができる。次いで、調整エンジン230は信頼性履歴を分析して、性能、信頼性等というような、候補クラウドXおよびYから抽出されたメトリックにおけるあらゆる変化を検出することができる。この分析を用いて、調整エンジン230は、アドミニストレーターのデーターを扱うときに、候補クラウドXおよびYの実際の信頼性や性能に基づいて、一層高く信頼性を最適化するために、その今後の判断を調節することができる。
【0073】
[0085] 調整エンジン230は、小売店のシナリオに対して最適化することができる。アドミニストレーター510がビジネス・モデルによって導かれ、会社の販売が、他のパブリック・クラウドと組み合わせたプライベート・クラウド210上にホストする外部カストマーによって部分的に行われる場合。一般に、会社の第三者のカストマーは、判断基準525があるレベルのセキュリティおよび信頼性を満たさない限り、彼/彼女のデーターがどこにホストされるかの詳細には関わらない。したがって、小売店のシナリオでは、会社は、調整エンジン230をブローカーとして機能するために採用し、大きな収益を得るために、価格競争および監視ボリューム(monitoring volume)の間他のパブリック・クラウドに便乗する(piggyback off)ことができる。通例、この種の会社であれば、その業務を遂行するのに役立てるために、この調整エンジン230のソフトウェアの使用許諾契約を結ぶであろう。
クラウド間の相互作用を容易にする方法
[0086]
図6を参照すると、本発明の一実施形態にしたがって、パブリックおよび/またはプライベート・クラウド(1つまたは複数)間の相互作用を容易にするために採用される分散型計算環境600を図示するブロック図が示されている。図示のように、計算環境600は、
図2の計算環境200の態様を含み、同様の参照番号は実質的に同様なコンポーネントを表す。更に、計算環境600は、
図8の流れ図のコンテキストで論じられるが、この流れ図は、本発明の一実施形態にしたがって、私有企業ネットワークの外部にある1つ以上のパブリック計算ネットワークに作業負荷を分散する方法全体800を示す。
【0074】
[0087] 最初に、方法800は、私有企業ネットワーク、またはプライベート・クラウド210のユーザー610から発行された、パブリック計算ネットワーク(1つまたは複数)上にホストされたアカウント情報を更新する要求620を受けるステップ(ブロック810参照)と、アカウント情報をホストする責務を果たすパブリック計算ネットワーク(1つまたは複数)250から目標ネットワークを特定するステップ(ブロック820参照)とを含む。場合によっては、ブロック830に示すように、1つ以上のコマンドが要求620から抽出されてもよい。一例として、このコマンド(1つまたは複数)は、部分的に、更新を実施する命令を表す。ブロック840に示すように、このコマンドは、外部ソースと相互作用するときにターゲット・ネットワークによって遵守されるルール言語と一致するフォーマットに変換することができる。更に、ブロック850に示すように、変換されたコマンド630を、ターゲット・ネットワークに関連する計算リソースに分散することができる。これらのリソースは、アカウント情報に対する更新を実施するように指定される。
【0075】
[0088] 以上、特定の実施形態に関係付けて本発明の実施形態について説明したが、これはあらゆる観点において限定的ではなく例示的であることを意図している。本発明の実施形態が関連する技術の当業者には、本発明の範囲から逸脱しない代替実施形態も明白であろう。
【0076】
[0089] 以上の説明から、本発明は、先に明記した全ての目的(ends and objects)を、本システムおよび方法にとって自明であり固有である他の利点と共に、達成するのに非常に適していることが分かるであろう。尚、ある種の特徴およびサブコンビネーションは有益であり、他の特徴およびサブコンビネーションを参照しなくても採用できることは言うまでもない。これは、請求項の範囲によって想定されていることであり、その範囲に含まれることとする。