(57)【要約】【課題】実施形態において、ソース・プラットフォームに関連するソース・トポロジ・モデルと、ターゲット・プラットフォームに関連するターゲット・トポロジ・モデルとの相違を求める手法を提供する。【解決手段】この、相違を求めることは、プロセッサによって実行され、その結果トポロジ相違が得られる。アセット・ライブラリからワークフロー・モデル内の動作が取得され、この動作は、トポロジ相違に関連する。アセット・ライブラリの少なくとも一部分は、永続ストレージ媒体に記憶されている。ソリューションの一部分を展開する動作が、展開のために送られる。ソリューションの展開される一部分は、ターゲット・プラットフォームと互換性があるターゲット・イメージを含む。【選択図】図５
2013516668.tif 000002
【特許請求の範囲】
【請求項１】
プラットフォーム間で仮想イメージをポーティングする方法であって、前記方法は、
ソース・プラットフォームに関連するソース・トポロジ・モデルと、ターゲット・プラットフォームに関連するターゲット・トポロジ・モデルとの相違を求めるステップであって、その結果、トポロジ相違が得られ、前記相違を求めるステップの少なくとも一部分は、プロセッサによって実行される、前記ステップと、
ワークフロー・モデル内の動作をアセット・ライブラリから取得するステップであって、前記動作は、前記トポロジ相違に関連し、前記アセット・ライブラリの少なくとも一部分は、永続ストレージ媒体に記憶されている、前記ステップと、
ソリューションの少なくとも一部分を展開するために前記動作を送るステップであって、前記ソリューションの前記展開される一部分は、前記ターゲット・プラットフォームと互換性があるターゲット仮想イメージを含む、前記ステップと、
を含む方法。
【請求項２】
前記動作を実行することによって前記ソリューションの前記一部分を前記ターゲット・プラットフォームにて展開するステップ
をさらに含む、請求項１に記載の方法。
【請求項３】
前記展開するステップの結果は、前記ソース・プラットフォームから前記ターゲット・プラットフォームへの前記ソリューションのポーティングを含む、請求項２に記載の方法。
【請求項４】
前記ターゲット・プラットフォームに関連する少なくとも１つのベース仮想イメージ・メタデータを求めてメタデータを検索するステップ
をさらに含む、請求項１に記載の方法。
【請求項５】
前記検索において使用される入力パラメータを読み出すステップであって、前記入力パラメータは、前記ターゲット・トポロジ・モデルによって提供される、前記ステップ
をさらに含む、請求項４に記載の方法。
【請求項６】
前記アセット・ライブラリに記憶されている前記メタデータから、１つ以上のベース仮想イメージ記述を、前記検索に応答して読み出すステップ
をさらに含む、請求項４に記載の方法。
【請求項７】
前記ソース・プラットフォームに対応する第１組のモデル・ユニットを、前記アセット・ライブラリから読み出すステップと、
前記ターゲット・プラットフォームに対応する第２組のモデル・ユニットを、前記アセット・ライブラリから読み出すステップであって、前記相違を求めるステップの結果、共通する１つ以上のモデル・ユニット及び異なる１つ以上のモデル・ユニットが得られる、前記ステップと、
前記共通するモデル・ユニットそれぞれに対応する、第１組の１つ以上のワークフロー・ステップを再使用するステップと、
前記異なるモデル・ユニットのうちの１つ以上に対応する、第２組の１つ以上のワークフロー・ステップを、前記アセット・ライブラリから読み出すステップと、
前記再使用された第１組のワークフロー・ステップ及び前記読み出された第２組のワークフロー・ステップを使用して、前記ワークフロー・モデルを作成するステップと、
をさらに含む、請求項６に記載の方法。
【請求項８】
前記トポロジ相違を前記ソース・トポロジ・モデル及び前記ターゲット・トポロジ・モデルに関連付けるステップと、
前記トポロジ相違及び前記関連付けを、パッチとして前記アセット・ライブラリに記憶するステップと、
をさらに含む、請求項１に記載の方法。
【請求項９】
前記ソース・トポロジ・モデルと部分的に共通している第２ソース・トポロジ・モデル、及び前記ターゲット・プラットフォームと部分的に共通している第２ターゲット・プラットフォームを受け取るステップと、
前記アセット・ライブラリにおいて、前記パッチを含む１つ以上のパッチを検索するステップであって、前記検索は、前記関連付けられたソース・トポロジ・モデルを含む、前記ステップと、
前記検索に応答して、前記アセット・ライブラリから前記パッチを読み出すステップと、
前記読み出されたパッチを、前記第２ソース・トポロジ・モデルに適用するステップであって、その結果、前記第２ターゲット・プラットフォームに関連する第２ターゲット・トポロジ・モデルが得られる、前記ステップと、
をさらに含む、請求項１に記載の方法。
【請求項１０】
完全なソリューションを展開するために、前記動作を含む複数の動作を送るステップ
をさらに含む、請求項１に記載の方法。
【請求項１１】
前記相違を求めるステップは、
前記ソース・プラットフォームに対応する第１組のモデル・ユニットを特定するステップと、
前記ターゲット・プラットフォームに対応する第２組のモデル・ユニットを特定するステップと、
前記第１組のモデル・ユニットと、前記第２組のモデル・ユニットとを比較するステップであって、前記比較の結果、一組の変更された１つ以上のモデル・ユニットと、一組の共通する１つ以上のモデル・ユニットとが得られる、前記ステップと、
前記共通するモデル・ユニットに対応する第１組の自動化ステップ・モデルを、前記ソース・トポロジ・モデルから読み出すステップと、
前記変更されたモデル・ユニットを求めて前記アセット・ライブラリを検索するステップであって、前記検索の結果、前記変更されたモデル・ユニットに対応する第２組の自動化ステップ・モデルが得られる、前記ステップと、
前記第１及び第２組の自動化ステップ・モデルを前記ワークフロー・モデルに含めるステップと、
をさらに含む、請求項１に記載の方法。
【請求項１２】
前記相違を求めるステップの結果、１つ以上の新たなユニットが特定され、前記新たなユニットは、前記ターゲット・トポロジ・モデルにおいて発見され、前記ソース・トポロジ・モデルにおいては発見されず、前記方法は、
前記新たなユニットを求めて前記アセット・ライブラリを検索するステップ
をさらに含む、請求項１に記載の方法。
【請求項１３】
前記ソリューションの前記一部分を展開する前記動作は、セキュリティ・ファイアウォールを設定する、請求項１に記載の方法。
【請求項１４】
前記ソリューションの前記一部分を展開する前記動作は、前記ターゲット・プラットフォームにおいて前記ターゲット仮想イメージをインスタンス化する、請求項１に記載の方法。
【請求項１５】
前記ソース・プラットフォームは、第１組の１つ以上のコンピュータ・システム上で実行されている第１ハイパーバイザであり、前記ターゲット・プラットフォームは、第２組の１つ以上のコンピュータ・システム上で実行されている第２ハイパーバイザであり、前記第１及び第２ハイパーバイザは、異なるタイプのハイパーバイザである、請求項１に記載の方法。
【請求項１６】
プラットフォーム間で仮想イメージをポーティングする情報処理システムであって、
１つ以上のプロセッサと、
前記プロセッサのうちの少なくとも１つによってアクセス可能なメモリと、
前記プロセッサのうちの少なくとも１つによってアクセス可能な永続ストレージ媒体と、
前記情報処理システムをコンピュータ・ネットワークに接続するネットワーク・インターフェイスであって、前記プロセッサのうちの少なくとも１つによってアクセス可能な、前記ネットワーク・インターフェイスと、
前記メモリに記憶された一組の命令と、
を含む、前記情報処理システムであって、前記一組の命令は、以下のアクション：
ソース・プラットフォームに関連するソース・トポロジ・モデルと、ターゲット・プラットフォームに関連するターゲット・トポロジ・モデルとの相違を求めることであって、その結果、トポロジ相違が得られる、前記相違を求めること、
ワークフロー・モデル内の動作をアセット・ライブラリから取得することであって、前記動作は、前記トポロジ相違に関連し、前記アセット・ライブラリの少なくとも一部分は、前記永続ストレージ媒体に記憶されている、前記取得すること、及び
ソリューションの少なくとも一部分を展開するために前記動作を送ることであって、前記ソリューションの前記展開される一部分は、前記ターゲット・プラットフォームと互換性があるターゲット仮想イメージを含む、前記送ること、
を実行するために、前記プロセッサのうちの少なくとも１つによって実行される、情報処理システム。
【請求項１７】
前記動作を実行することによって前記ソリューションの前記一部分を前記ターゲット・プラットフォームにて展開すること
をさらに含む、請求項１６に記載の情報処理システム。
【請求項１８】
前記ソース・プラットフォームは、第１クラウドであり、前記ターゲット・プラットフォームは、第２クラウドである、請求項１６に記載の情報処理システム。
【請求項１９】
前記ターゲット・プラットフォームに関連する少なくとも１つのベース仮想イメージ・メタデータを求めてメタデータを検索すること
をさらに含む、請求項１６に記載の情報処理システム。
【請求項２０】
前記アセット・ライブラリに記憶されている前記メタデータから、１つ以上のベース仮想イメージ記述を、前記検索に応答して読み出すこと
をさらに含む、請求項１９に記載の情報処理システム。
【請求項２１】
前記ソース・プラットフォームに対応する第１組のモデル・ユニットを、前記アセット・ライブラリから読み出すこと、
前記ターゲット・プラットフォームに対応する第２組のモデル・ユニットを、前記アセット・ライブラリから読み出すことであって、前記相違を求めることの結果、共通する１つ以上のモデル・ユニット及び異なる１つ以上のモデル・ユニットが得られる、前記読み出すこと、
前記共通するモデル・ユニットそれぞれに対応する、第１組の１つ以上のワークフロー・ステップを再使用すること、
前記異なるモデル・ユニットのうちの１つ以上に対応する、第２組の１つ以上のワークフロー・ステップを、前記アセット・ライブラリから読み出すこと、並びに
前記再使用された第１組のワークフロー・ステップ及び前記読み出された第２組のワークフロー・ステップを使用して、前記ワークフロー・モデルを作成すること、
をさらに含む、請求項２０に記載の情報処理システム。
【請求項２２】
前記トポロジ相違を前記ソース・トポロジ・モデル及び前記ターゲット・トポロジ・モデルに関連付けること、並びに
前記トポロジ相違及び前記関連付けを、パッチとして前記アセット・ライブラリに記憶すること、
をさらに含む、請求項１６に記載の情報処理システム。
【請求項２３】
前記ソース・トポロジ・モデルと部分的に共通している第２ソース・トポロジ・モデル、及び前記ターゲット・プラットフォームと部分的に共通している第２ターゲット・プラットフォームを受け取ること、
前記アセット・ライブラリにおいて、前記パッチを含む１つ以上のパッチを検索することであって、前記検索は、前記関連付けられたソース・トポロジ・モデルを含む、前記検索すること、
前記検索に応答して、前記アセット・ライブラリから前記パッチを読み出すこと、並びに
前記読み出されたパッチを、前記第２ソース・トポロジ・モデルに適用することであって、その結果、前記第２ターゲット・プラットフォームに関連する第２ターゲット・トポロジ・モデルが得られる、前記適用すること、
をさらに含む、請求項２２に記載の情報処理システム。
【請求項２４】
前記ソース・プラットフォームに対応する第１組のモデル・ユニットを特定すること、
前記ターゲット・プラットフォームに対応する第２組のモデル・ユニットを特定すること、
前記第１組のモデル・ユニットと、前記第２組のモデル・ユニットとを比較することであって、前記比較の結果、一組の変更された１つ以上のモデル・ユニットと、一組の共通する１つ以上のモデル・ユニットとが得られる、前記比較すること、
前記共通するモデル・ユニットに対応する第１組の自動化ステップ・モデルを、前記ソース・トポロジ・モデルから読み出すこと、
前記変更されたモデル・ユニットを求めて前記アセット・ライブラリを検索することであって、前記検索の結果、前記変更されたモデル・ユニットに対応する第２組の自動化ステップ・モデルが得られる、前記検索すること、並びに
前記第１及び第２組の自動化ステップ・モデルを前記ワークフロー・モデルに含めること、
をさらに含む、請求項１６に記載の情報処理システム。
【請求項２５】
前記相違を求めることの結果、１つ以上の新たなユニットが特定され、前記新たなユニットは、前記ターゲット・トポロジ・モデルにおいて発見され、前記ソース・トポロジ・モデルにおいては発見されず、前記アクションは、前記新たなユニットを求めて前記アセット・ライブラリを検索することをさらに含む、請求項２６に記載の情報処理システム。
【請求項２６】
前記ソース・プラットフォームは、第１組の１つ以上のコンピュータ・システム上で実行されている第１ハイパーバイザであり、前記ターゲット・プラットフォームは、第２組の１つ以上のコンピュータ・システム上で実行されている第２ハイパーバイザであり、前記第１及び第２ハイパーバイザは、異なるタイプのハイパーバイザである、請求項１６に記載の情報処理システム。
【請求項２７】
コンピュータ・システムにロードされ実行されると、請求項１〜１５のいずれか１項に記載の方法の前記ステップすべてを実行する、コンピュータ・プログラム・コードを含むコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散コンピュータ・システムの分野に関する。特に、本発明は、仮想イメージをプラットフォーム間でポーティングする方法及びシステムに関する。
【背景技術】
【０００２】
クラウド・コンピューティングは、インターネット・ベースのサービスを表す用語である。インターネット・ベースのサービスは、サービス・プロバイダによってホストされる。サービス・プロバイダは、リクエスト側のクライアントに、コンピュータ・ネットワーク上でハードウェア・インフラストラクチャ又はソフトウェア・アプリケーションを提供し得る。リクエスト側のクライアントは、このソフトウェア・アプリケーションに、従来のクライアント・ベースの「ブラウザ」ソフトウェア・アプリケーションを使用してアクセスすることもでき、ソフトウェア（命令）及びデータは、クラウド・コンピューティング・プロバイダによって維持されるサーバ上に記憶される。
【０００３】
クラウド・コンピューティング環境におけるアプリケーションの実行をサービス・プロバイダが活用することを可能にするには、サービス・プロバイダが、その既存のアプリケーションをクラウド・コンピューティング環境に移すことができる必要がある。あるいは、サービス・プロバイダは、そのアプリケーションを、１つのコンピューティング環境から別のコンピューティング環境にポーティングしなければならないこともある。
【０００４】
アプリケーションを１つの環境から別の環境にポーティングすることは、多くの場合、実行に時間がかかり、困難である。イメージ・フォーマットは、クラウド・コンピューティング環境によってサポートされるハイパーバイザ技術に特有であるため、１つ以上の仮想イメージ内のプラットフォーム独立ソリューションを１つのクラウド・プロバイダから別のクラウド・プロバイダにポーティングすることは、困難である。さらに、クラウド特有ハイパーバイザ要件に準拠するよう、ゲスト・オペレーティング・システムにおける面倒な手動構成ステップが複数必要とされ、部分的にインストール及び構成された適切なバージョンの依存ソフトウェア・コンポーネントなどを備えるベース・イメージは、利用可能でないことが多い。
【０００５】
特許文献１は、ユーザの指定に従い仮想マシン（ＶＭ：ｖｉｒｔｕａｌ  ｍａｃｈｉｎｅ）を自動的に構成して、ＶＭを物理ホスト上に展開するプロビジョニング・サーバを開示している。ユーザは、事前構成された、すぐに展開できるＶＭのリストから選ぶことも、又はユーザがＶＭにどのハードウェア、オペレーティング・システム、及びアプリケーション（単数又は複数）を望むかを選択することもできる。続いてプロビジョニング・サーバは、所望の構成が利用可能であればそれに応じてＶＭを構成し、又は、利用可能でなければ、ヒューリスティック法を適用して、ユーザのリクエストに最もよく合うＶＭを構成する。この発明はさらに、ＶＭ及びホストのステータスの監視、ホスト間でのＶＭのマイグレート、及びＶＭのネットワークの作成のためのメカニズムを含む。
【０００６】
特許文献２の開示では、少なくとも１つのソース・ディスクの状態を含むソース・コンピュータのハードウェア及びソフトウェア構成のソース・イメージが、自動的に獲得される。ソース・コンピュータは、準備が行われないままでよく、コンピュータのクローニング及び再構成を促進するプログラムは必要とされない。ソース・イメージは、自動的に分析されて、宛先コンピュータのハードウェア構成が判断される。ソース・イメージは、宛先コンピュータとの互換性又はカスタマイズのいずれかのために、必要に応じて変更され、変更される場合はその変更の後、ソース・イメージは宛先コンピュータ上に展開される。ソース及び宛先コンピュータのいずれか又は両方を、仮想マシンとすることもできる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】米国特許出願公開第２００９／０２８２４０４号
【特許文献２】米国特許第７３５６６７９号
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかし、上記の従来技術のソリューションはいずれも、１つ以上の仮想イメージを含む部分的／完全なソリューションを互換性チェック／情報を用いて１つのクラウド・コンピューティング環境から別のクラウド・コンピューティング環境にポーティングする手段を開示していない。
【課題を解決するための手段】
【０００９】
実施形態において、ソース・プラットフォーム（ｓｏｕｒｃｅ  ｐｌａｔｆｏｒｍ）に関連するソース・トポロジ・モデル（ｓｏｕｒｃｅ  ｔｏｐｏｌｏｇｙ  ｍｏｄｅｌ）及びターゲット・プラットフォーム（ｔａｒｇｅｔ  ｐｌａｔｆｏｒｍ）に関連するターゲット・トポロジ・モデル（ｔａｒｇｅｔ  ｔｏｐｏｌｏｇｙ  ｍｏｄｅｌ）の相違を求める（ｄｉｆｆｅｒｅｎｃｉｎｇ）手法が提供される。この、相違を求めることは、プロセッサによって実行され、その結果、トポロジ相違（ｔｏｐｏｌｏｇｙ  ｄｉｆｆｅｒｅｎｃｅ）が得られる。ワークフロー・モデル内の動作がアセット・ライブラリから取得され、この動作は、トポロジ相違に関連する。アセット・ライブラリの少なくとも一部分は、永続ストレージ媒体に記憶されている。ソリューションの一部分を展開する動作が、展開のために送られる。ソリューションの展開される一部分は、ターゲット・プラットフォームと互換性があるターゲット・イメージ（ｔａｒｇｅｔ  ｉｍａｇｅ）を含む。
【００１０】
前述の事項は要約であり、したがって、必然的に、細部の単純化、一般化、及び省略を含む。その結果として、当業者には当然のことながら、この要約は例示にすぎず、いかなる形でも限定するものとしては意図されていない。特許請求の範囲によってのみ定義される、他の側面、発明に関する特徴、及び利点は、以下に記載される非限定的な詳細な説明において明らかになる。
【００１１】
第１側面から見ると、本発明は、情報処理システムによって実装される方法を提供し、この方法は、ソース・プラットフォームに関連するソース・トポロジ・モデルと、ターゲット・プラットフォームに関連するターゲット・トポロジ・モデルとの相違を求めるステップであって、その結果、トポロジ相違が得られ、相違を求めるステップの少なくとも一部分は、プロセッサによって実行される、ステップと、ワークフロー・モデル内の動作をアセット・ライブラリから取得するステップであって、動作は、トポロジ相違に関連し、アセット・ライブラリの少なくとも一部分は、永続ストレージ媒体に記憶されている、ステップと、ソリューションの少なくとも一部分を展開するために動作を送るステップであって、ソリューションの展開される一部分は、ターゲット・プラットフォームと互換性があるターゲット仮想イメージを含む、ステップとを含む。
【００１２】
好適には、本発明は、動作を実行することによってソリューションの一部分をターゲット・プラットフォームにて展開するステップをさらに含む方法を提供する。
【００１３】
好適には、本発明は、展開するステップの結果が、ソース・プラットフォームからターゲット・プラットフォームへのソリューションのポーティングを含む、方法を提供する。
【００１４】
好適には、本発明は、ソース・プラットフォームが第１クラウドであり、ターゲット・プラットフォームが第２クラウドである、方法を提供する。
【００１５】
好適には、本発明は、ソリューションが複合ソリューションであり、第２クラウドが複数のクラウドを含む、方法を提供する。
【００１６】
好適には、本発明は、ソース・プラットフォームがプライベート・クラウドであり、ターゲット・プラットフォームがパブリック・クラウドである、方法を提供する。
【００１７】
好適には、本発明は、ターゲット・プラットフォームに関連する少なくとも１つのベース仮想イメージ・メタデータ（ｂａｓｅ  ｖｉｒｔｕａｌ  ｉｍａｇｅ  ｍｅｔａｄａｔａ）を求めてメタデータを検索するステップをさらに含む方法を提供する。
【００１８】
好適には、本発明は、１つ以上のクラウド特有仮想イメージ・ライブラリにおいて、メタデータを検索するステップをさらに含む方法を提供する。
【００１９】
好適には、本発明は、検索において使用される入力パラメータを読み出すステップであって、入力パラメータは、ターゲット・トポロジ・モデルによって提供される、ステップをさらに含む方法を提供する。
【００２０】
好適には、本発明は、アセット・ライブラリに記憶されているメタデータから、１つ以上のベース仮想イメージ記述（ｂａｓｅ  ｖｉｒｔｕａｌ  ｉｍａｇｅ  ｄｅｓｃｒｉｐｔｉｏｎ）を、検索に応答して読み出すステップをさらに含む方法を提供する。
【００２１】
好適には、本発明は、ソース・プラットフォームが第１クラウドであり、ターゲット・プラットフォームが第２クラウドである、方法を提供し、この方法は、ソース・プラットフォームに対応する第１組のモデル・ユニット（ｍｏｄｅｌ  ｕｎｉｔ）を、アセット・ライブラリから読み出すステップと、ターゲット・プラットフォームに対応する第２組のモデル・ユニットを、アセット・ライブラリから読み出すステップであって、相違を求めるステップの結果、共通する１つ以上のモデル・ユニット及び異なる１つ以上のモデル・ユニットが得られる、ステップと、共通するモデル・ユニットそれぞれに対応する、第１組の１つ以上のワークフロー・ステップを再使用するステップと、異なるモデル・ユニットのうちの１つ以上に対応する、第２組の１つ以上のワークフロー・ステップを、アセット・ライブラリから読み出すステップと、再使用された第１組のワークフロー・ステップ及び読み出された第２組のワークフロー・ステップを使用して、ワークフロー・モデルを作成するステップとをさらに含む。
【００２２】
好適には、本発明は、トポロジ相違をソース・トポロジ・モデル及びターゲット・トポロジ・モデルに関連付けるステップと、トポロジ相違及び関連付けを、パッチとしてアセット・ライブラリに記憶するステップとをさらに含む方法を提供する。
【００２３】
好適には、本発明は、ソース・トポロジ・モデルと部分的に共通している第２ソース・トポロジ・モデル、及びターゲット・プラットフォームと部分的に共通している第２ターゲット・プラットフォームを受け取るステップと、アセット・ライブラリにおいて、該パッチを含む１つ以上のパッチを検索するステップであって、検索は、関連付けられたソース・トポロジ・モデルを含む、ステップと、検索に応答して、アセット・ライブラリからパッチを読み出すステップと、読み出されたパッチを、第２ソース・トポロジ・モデルに適用するステップであって、その結果、第２ターゲット・プラットフォームに関連する第２ターゲット・トポロジ・モデルが得られる、ステップとをさらに含む方法を提供する。
【００２４】
好適には、本発明は、ソリューションが、複数の仮想部分から成る複合ソリューションであり、仮想部分が、仮想イメージ並びにその構成要素であるゲストＯＳ、ミドルウェア、及びアプリケーション・モデル・ユニットのモデルから成り、各仮想部分が、種々のターゲット・プラットフォームに展開され、各ターゲット・プラットフォームは、パブリック・クラウド又はプライベート・クラウドのいずれかに対応する、方法を提供する。
【００２５】
好適には、本発明は、完全なソリューションを展開するために、該動作を含む複数の動作を送るステップをさらに含む方法を提供する。
【００２６】
好適には、本発明は、相違を求めるステップが、ソース・プラットフォームに対応する第１組のモデル・ユニットを特定するステップと、ターゲット・プラットフォームに対応する第２組のモデル・ユニットを特定するステップと、第１組のモデル・ユニットと、第２組のモデル・ユニットとを比較するステップであって、比較の結果、一組の変更された１つ以上のモデル・ユニットと、一組の共通する１つ以上のモデル・ユニットとが得られる、ステップと、共通するモデル・ユニットに対応する第１組の自動化ステップ・モデルを、ソース・トポロジ・モデルから読み出すステップと、変更されたモデル・ユニットを求めてアセット・ライブラリを検索するステップであって、検索の結果、変更されたモデル・ユニットに対応する第２組の自動化ステップ・モデルが得られる、ステップと、第１及び第２組の自動化ステップ・モデルをワークフロー・モデルに含めるステップとをさらに含む方法を提供する。
【００２７】
好適には、本発明は、相違を求めるステップの結果、１つ以上の新たなユニットが特定される、方法を提供し、新たなユニットは、ターゲット・トポロジ・モデルにおいて発見され、ソース・トポロジ・モデルにおいては発見されず、この方法は、新たなユニットを求めてアセット・ライブラリを検索するステップをさらに含む。
【００２８】
好適には、本発明は、ソリューションの一部分を展開する動作が、１つのクラウド・ベンダから別のクラウド・ベンダにソリューションの一部分がポーティングされることを可能にする、方法を提供する。
【００２９】
好適には、本発明は、ソリューションの一部分を展開する動作が、セキュリティ・ファイアウォールを設定する、方法を提供する。
【００３０】
好適には、本発明は、ソリューションの一部分を展開する動作が、ターゲット・プラットフォームにおいてターゲット仮想イメージをインスタンス化する、方法を提供する。
【００３１】
好適には、本発明は、ソース・プラットフォームが、第１組の１つ以上のコンピュータ・システム上で実行されている第１ハイパーバイザであり、ターゲット・プラットフォームが、第２組の１つ以上のコンピュータ・システム上で実行されている第２ハイパーバイザであり、第１及び第２ハイパーバイザは、異なるタイプのハイパーバイザである、方法を提供する。
【００３２】
好適には、本発明は、ソース及びターゲット・トポロジ・モデルがそれぞれ、１つ以上のソフトウェア・アプリケーション・コンポーネント、ミドルウェア・ソフトウェア・アプリケーション・コンポーネント、及びゲスト・オペレーティング・システム・コンポーネントを記述するメタデータを含む、方法を提供する。
【００３３】
好適には、本発明は、ソース及びターゲット・トポロジ・モデルとともに含まれるメタデータがそれぞれ、１つ以上の仮想イメージ展開パラメータをさらに含み、ソース・トポロジ・モデルが、ソース・クラウドに対応するソース構成パラメータ並びにソース認証情報及びソース・サービス・エンドポイントのソース・トポロジ・モデル・ユニットを含み、ターゲット・トポロジ・モデルが、ターゲット・クラウドに対応するターゲット構成パラメータ並びにターゲット認証情報及びターゲット・サービス・エンドポイントのターゲット・トポロジ・モデル・ユニットを含む、方法を提供する。
【００３４】
好適には、本方法は、ソース・トポロジ・モデル・ユニットそれぞれと、ソース自動化ステップ・モデルとを関連付けるステップであって、ソース自動化ステップ・モデルは、関連付けられたソース・トポロジ・モデル・ユニットを展開するために使用される動作のうちの１つ以上を詳述する、ステップと、ターゲット・トポロジ・モデル・ユニットそれぞれと、ターゲット自動化ステップ・モデルとを関連付けるステップであって、ターゲット自動化ステップ・モデルは、関連付けられたターゲット・トポロジ・モデル・ユニットを展開するために使用される動作のうちの１つ以上を詳述する、ステップと、ターゲット自動化ステップ・モデルそれぞれを、ワークフロー・モデルに記憶するステップとをさらに含む方法を提供する。
【００３５】
好適には、本発明は、ソリューションの一部分を展開する動作の実行が、マルチテナンシを可能にする、方法を提供する。
【００３６】
好適には、本発明は、ソリューションの一部分を展開する動作の実行が、様々なワークロードを可能にする、方法を提供する。
【００３７】
別の側面から見ると、本発明は、１つ以上のプロセッサと、プロセッサのうちの少なくとも１つによってアクセス可能なメモリと、プロセッサのうちの少なくとも１つによってアクセス可能な永続ストレージ媒体と、情報処理システムをコンピュータ・ネットワークに接続するネットワーク・インターフェイスであって、プロセッサのうちの少なくとも１つによってアクセス可能な、ネットワーク・インターフェイスと、メモリに記憶された一組の命令とを含む、情報処理システムであって、該一組の命令は、以下のアクション：ソース・プラットフォームに関連するソース・トポロジ・モデルと、ターゲット・プラットフォームに関連するターゲット・トポロジ・モデルとの相違を求めることであって、その結果、トポロジ相違が得られる、相違を求めること、ワークフロー・モデル内の動作をアセット・ライブラリから取得することであって、動作は、トポロジ相違に関連し、アセット・ライブラリの少なくとも一部分は、永続ストレージ媒体に記憶されている、取得すること、及びソリューションの少なくとも一部分を展開するために動作を送ることであって、ソリューションの展開される一部分は、ターゲット・プラットフォームと互換性があるターゲット仮想イメージを含む、送ること、を実行するために、プロセッサのうちの少なくとも１つによって実行される、情報処理システムを提供する。
【００３８】
好適には、本発明は、アクションが、動作を実行することによってソリューションの一部分をターゲット・プラットフォームにて展開することをさらに含む、情報処理システムを提供する。
【００３９】
好適には、本発明は、ソース・プラットフォームが第１クラウドであり、ターゲット・プラットフォームが第２クラウドである、情報処理システムを提供する。
【００４０】
好適には、本発明は、アクションが、ターゲット・プラットフォームに関連する少なくとも１つのベース仮想イメージ・メタデータを求めてメタデータを検索することをさらに含む、情報処理システムを提供する。
【００４１】
好適には、本発明は、アクションが、アセット・ライブラリに記憶されているメタデータから、１つ以上のベース仮想イメージ記述を、検索に応答して読み出すことをさらに含む、情報処理システムを提供する。
【００４２】
好適には、本発明は、ソース・プラットフォームが第１クラウドであり、ターゲット・プラットフォームが第２クラウドである、情報処理システムを提供し、アクションは、ソース・プラットフォームに対応する第１組のモデル・ユニットを、アセット・ライブラリから読み出すこと、ターゲット・プラットフォームに対応する第２組のモデル・ユニットを、アセット・ライブラリから読み出すことであって、相違を求めることの結果、共通する１つ以上のモデル・ユニット及び異なる１つ以上のモデル・ユニットが得られる、読み出すこと、共通するモデル・ユニットそれぞれに対応する、第１組の１つ以上のワークフロー・ステップを再使用すること、異なるモデル・ユニットのうちの１つ以上に対応する、第２組の１つ以上のワークフロー・ステップを、アセット・ライブラリから読み出すこと、並びに、再使用された第１組のワークフロー・ステップ及び読み出された第２組のワークフロー・ステップを使用して、ワークフロー・モデルを作成することをさらに含む。
【００４３】
好適には、本発明は、アクションが、トポロジ相違をソース・トポロジ・モデル及びターゲット・トポロジ・モデルに関連付けること、並びに、トポロジ相違及び関連付けを、パッチとしてアセット・ライブラリに記憶することをさらに含む、情報処理システムを提供する。
【００４４】
好適には、本発明は、アクションが、ソース・トポロジ・モデルと部分的に共通している第２ソース・トポロジ・モデル、及びターゲット・プラットフォームと部分的に共通している第２ターゲット・プラットフォームを受け取ること、アセット・ライブラリにおいて、該パッチを含む１つ以上のパッチを検索することであって、検索は、関連付けられたソース・トポロジ・モデルを含む、検索すること、検索に応答して、アセット・ライブラリからパッチを読み出すこと、並びに、読み出されたパッチを、第２ソース・トポロジ・モデルに適用することであって、その結果、第２ターゲット・プラットフォームに関連する第２ターゲット・トポロジ・モデルが得られる、適用することをさらに含む、情報処理システムを提供する。
【００４５】
好適には、本発明は、アクションが、ソース・プラットフォームに対応する第１組のモデル・ユニットを特定すること、ターゲット・プラットフォームに対応する第２組のモデル・ユニットを特定すること、第１組のモデル・ユニットと、第２組のモデル・ユニットとを比較することであって、比較の結果、一組の変更された１つ以上のモデル・ユニットと、一組の共通する１つ以上のモデル・ユニットとが得られる、比較すること、共通するモデル・ユニットに対応する第１組の自動化ステップ・モデルを、ソース・トポロジ・モデルから読み出すこと、変更されたモデル・ユニットを求めてアセット・ライブラリを検索することであって、検索の結果、変更されたモデル・ユニットに対応する第２組の自動化ステップ・モデルが得られる、検索すること、並びに、第１及び第２組の自動化ステップ・モデルをワークフロー・モデルに含めることをさらに含む、情報処理システムを提供する。
【００４６】
好適には、本発明は、相違を求めることの結果、１つ以上の新たなユニットが特定され、新たなユニットは、ターゲット・トポロジ・モデルにおいて発見され、ソース・トポロジ・モデルにおいては発見されず、アクションが、新たなユニットを求めてアセット・ライブラリを検索することをさらに含む、情報処理システムを提供する。
【００４７】
好適には、本発明は、ソース・プラットフォームが、第１組の１つ以上のコンピュータ・システム上で実行されている第１ハイパーバイザであり、ターゲット・プラットフォームが、第２組の１つ以上のコンピュータ・システム上で実行されている第２ハイパーバイザであり、第１及び第２ハイパーバイザが、異なるタイプのハイパーバイザである、情報処理システムを提供する。
【００４８】
好適には、本発明は、ソース及びターゲット・トポロジ・モデルがそれぞれ、１つ以上のソフトウェア・アプリケーション・コンポーネント、ミドルウェア・ソフトウェア・アプリケーション・コンポーネント、及びゲスト・オペレーティング・システム・コンポーネントを記述するメタデータを含む、情報処理システムを提供する。
【００４９】
好適には、本発明は、ソース及びターゲット・トポロジ・モデルとともに含まれるメタデータがそれぞれ、１つ以上の仮想イメージ展開パラメータをさらに含み、ソース・トポロジ・モデルが、ソース・クラウドに対応するソース構成パラメータ並びにソース認証情報及びソース・サービス・エンドポイントのソース・トポロジ・モデル・ユニットを含み、ターゲット・トポロジ・モデルが、ターゲット・クラウドに対応するターゲット構成パラメータ並びにターゲット認証情報及びターゲット・サービス・エンドポイントのターゲット・トポロジ・モデル・ユニットを含む、情報処理システムを提供する。
【００５０】
好適には、本発明は、アクションが、ソース・トポロジ・モデル・ユニットそれぞれと、ソース自動化ステップ・モデルとを関連付けることであって、ソース自動化ステップ・モデルは、関連付けられたソース・トポロジ・モデル・ユニットを展開するために使用される動作のうちの１つ以上を詳述する、関連付けること、ターゲット・トポロジ・モデル・ユニットそれぞれと、ターゲット自動化ステップ・モデルとを関連付けることであって、ターゲット自動化ステップ・モデルは、関連付けられたターゲット・トポロジ・モデル・ユニットを展開するために使用される動作のうちの１つ以上を詳述する、関連付けること、及び、ターゲット自動化ステップ・モデルそれぞれを、ワークフロー・モデルに記憶することをさらに含む、情報処理システムを提供する。
【００５１】
別の側面から見ると、本発明は、ターゲット・プラットフォームに展開されるトポロジ・モデル・ユニットを取得するステップと、受け取られたトポロジ・モデル・ユニットに関連する、選択される自動化ステップ・モデルを求めて、永続ストレージ媒体に記憶されたアセット・ライブラリに記憶されている複数の自動化ステップ・モデルを検索するステップであって、検索は、１つ以上のプロセッサによって実行される、ステップと、アセット・ライブラリから、１つ以上の展開動作を取得するステップであって、取得される展開動作は、選択された自動化ステップ・モデルに関連する、ステップと、トポロジ・モデル・ユニットをターゲット・プラットフォームに展開するために、取得された展開動作を実行するステップとを含む、情報処理システムによって実装される方法を提供する。
【００５２】
好適には、本発明は、検索するステップが、複数の自動化ステップ・モデルから一組の自動化ステップ・モデルを特定するステップであって、一組の自動化ステップ・モデルはそれぞれ、トポロジ・モデル・ユニットに関連する、ステップと、一組の特定された自動化ステップ・モデルと、一組の基準とを比較するステップであって、比較の結果、選択される自動化ステップ・モデルが特定される、ステップとをさらに含む、方法を提供する。
【００５３】
好適には、本発明は、プロセッサを使用して、永続性ストレージ媒体からソース・イメージ・メタデータを読み出すステップであって、ソース・イメージ・メタデータは、ソース・プラットフォームに関連するソース・イメージに対応する、ステップと、読み出されたソース・イメージ・メタデータと、ターゲット・プラットフォームに関連する１つ以上の利用可能な仮想イメージに対応する１つ以上の利用可能なイメージ・メタデータとを、プロセッサによって比較するステップと、比較に基づき、利用可能なイメージ・メタデータのうち、ソース・イメージ・メタデータに対し最も互換性が高い１つを特定するステップと、特定された利用可能なイメージ・メタデータに対応する利用可能な仮想イメージを、ターゲット・プラットフォームと互換性があるターゲット仮想イメージとして使用するステップとを含む、情報処理システムによって実装される方法を提供する。
【００５４】
好適には、本発明は、ソース・イメージ・メタデータがソース・トポロジ・モデルに関連し、ターゲット・プラットフォームがターゲット・トポロジ・モデルに関連する、方法を提供する。
【００５５】
好適には、本発明は、ソース・イメージ・メタデータ及び利用可能なイメージ・メタデータが、ソフトウェア・コンポーネント・メタデータを含む、方法を提供する。
【００５６】
好適には、本発明は、利用可能な仮想イメージを、使用前に改善するステップをさらに含む方法を提供する。
【００５７】
好適には、本発明は、改善するステップが、利用可能な仮想イメージに含まれている１つ以上のソフトウェア・コンポーネントを更新するステップをさらに含む、方法を提供する。
【００５８】
好適には、本発明は、更新するステップが、ソフトウェア・コンポーネントのうちの１つを追加するステップを含む、方法を提供する。
【００５９】
別の側面から見ると、本発明は、トポロジ相違に関連する動作を取得するステップであって、トポロジ相違は、ソース・プラットフォームに関連するソース・トポロジ・モデルと、ターゲット・プラットフォームに関連するターゲット・トポロジ・モデルとの相違である、ステップと、取得された動作を実行することによってソリューションの少なくとも一部分を展開するステップであって、ソリューションの展開される一部分は、ターゲット・プラットフォームと互換性があるターゲット・イメージを含む、ステップとを含む方法を提供する。
【００６０】
好適には、本発明は、ソース・プラットフォームが第１クラウドであり、ターゲット・プラットフォームが第２クラウドであり、ソリューションの少なくとも一部分を展開するステップが、第１クラウドから第２クラウドにソリューションの少なくとも一部分をポーティングするステップを含む、方法を提供する。
【００６１】
好適には、本発明は、ソース・プラットフォームがプライベート・クラウドであり、ターゲット・プラットフォームがパブリック・クラウドであり、ソリューションの少なくとも一部分を展開するステップが、プライベート・クラウドからパブリック・クラウドにソリューションを展開するステップを含む、方法を提供する。
【００６２】
以下、添付の図面を参照しながら、単なる例として本発明の実施形態について記載する。
【図面の簡単な説明】
【００６３】
【図１】本発明の好適な実施形態による、クラウド・コンピューティング環境におけるノードとしての機能を果たし、本願明細書に記載される方法を実装することもできる、情報処理システムの実施形態のブロック図である。
【図２】本発明の好適な実施形態による、本願明細書に記載される方法がネットワーク化環境において動作する多種多様な情報処理システム上で実行可能であることを示す、図１に示された情報処理システム環境の拡張の実施形態である。
【図３】本発明の好適な実施形態による、クラウド・コンピューティング環境の実施形態を示す図である。
【図４】本発明の好適な実施形態による、クラウド・コンピューティング環境によって提供される一組の機能抽象化層の実施形態を示す図である。
【図５】本発明の好適な実施形態による、ソリューションをソースからターゲット・プラットフォームにポーティングするために使用される、アセット・ライブラリに記憶されたソース及びターゲット・トポロジ・モデル並びに自動化ステップ・モデルの実施形態の図である。
【図６】本発明の好適な実施形態による、展開ワークフローを生成するために、トポロジ・モデル・ユニットを利用してソース及びターゲット・トポロジ・モデル間の共通点及び相違を発見するためにとられるステップを示すフローチャートである。
【図７】本発明の好適な実施形態による、クラウド環境に展開される例示としての展開ワークフローを作成するために使用される自動化ステップ・モデルの実施形態を示す図である。
【図８】本発明の好適な実施形態による、トポロジ・モデルを作成するためにとられるステップを示すフローチャートである。
【図９】本発明の好適な実施形態による、自動化ステップ・モデルを作成するためにとられるステップを示すフローチャートである。
【図１０】本発明の好適な実施形態による、入力パラメータを指定しトポロジ・モデル内に記憶するためにとられるステップを示すフローチャートである。
【図１１】本発明の好適な実施形態による、クラウド・ベースのアプリケーションの実行中のインスタンスを完全に指定して展開するためにとられるステップを示すフローチャートである。
【図１２】本発明の好適な実施形態による、アセット・ライブラリに記憶されているアセットを再使用し、再使用されたアセットを使用してターゲット・クラウド環境にソリューションを展開するためにとられるステップを示すフローチャートである。
【図１３】本発明の好適な実施形態による、リクエストに一致する既存のトポロジ・ユニットを発見し、クラウド特有モデル・ユニットを置換し、アセット・ライブラリに新たなモデル・ユニット及び変更されたモデル・ユニットを記憶するためにとられるステップを示すフローチャートである。
【図１４】本発明の好適な実施形態による、展開ワークフロー・モデルを生成するためにとられるステップを示すフローチャートである。
【図１５】本発明の好適な実施形態による、展開ワークフローをモデルから生成して、展開エンジンを使用し展開するためにとられるステップを示すフローチャートである。
【図１６】本発明の好適な実施形態による、展開ワークフローをモデルから生成して、複数のクラウド・ベースの環境に複合ソリューションを展開するためにとられるステップを示すフローチャートである。
【発明を実施するための形態】
【００６４】
便宜上、詳細な説明には、セクション１：クラウド・コンピューティングの定義、及びセクション２：詳細な実装のセクションがある。
【００６５】
セクション１：クラウド・コンピューティングの定義
以下の定義の多くは、２００９年１０月７日付けの、ピーター・メル（Ｐｅｔｅｒ  Ｍｅｌｌ）及びティム・グランス（Ｔｉｍ  Ｇｒａｎｃｅ）著、「Ｄｒａｆｔ  ＮＩＳＴ  Ｗｏｒｋｉｎｇ  Ｄｅｆｉｎｉｔｉｏｎ  ｏｆ  Ｃｌｏｕｄ  Ｃｏｍｐｕｔｉｎｇ」から得たものである。
【００６６】
クラウド・コンピューティングは、最小限の管理努力又はサービス・プロバイダとの対話により迅速にプロビジョニング及びリリース可能である構成可能なコンピューティング・リソース（例えば、ネットワーク、サーバ、ストレージ、アプリケーション、及びサービス）の共有プールに対する、便利なオンデマンドのネットワーク・アクセスを可能にするモデルである。このクラウド・モデルは、利用可能性を促進し、少なくとも５つの特徴と、少なくとも３つのサービス・モデルと、少なくとも４つの展開モデルとから成る。
【００６７】
特徴は以下のとおりである。
【００６８】
オンデマンド・セルフサービス：消費者は、サーバ時間及びネットワーク・ストレージなどのコンピューティング能力を、必要に応じて自動的に、各サービス・プロバイダとの人的対話の必要なく、一方的にプロビジョニングできる。
【００６９】
広範なネットワーク・アクセス：各能力は、ネットワーク上で利用可能であり、異種シン・クライアント・プラットフォーム又はシック・クライアント・プラットフォーム（例えば、モバイル電話、ラップトップ、及びＰＤＡ（ｐｅｒｓｏｎａｌ  ｄｉｇｉｔａｌ  ａｓｓｉｓｔａｎｔ：携帯情報端末））による使用を促進する標準のメカニズムを介してアクセスされる。
【００７０】
リソース・プーリング：プロバイダのコンピューティング・リソースは、マルチ・テナント・モデルを使用して複数の消費者にサービスを提供するようプールされ、種々の物理リソース及び仮想リソースが消費者の要求に応じて動的に割り当て及び再割り当てされる。一般に顧客は、提供されるリソースの正確な位置についての制御又は知識を有しないという点で、非位置依存の意識があるが、より高いレベルの抽象化における位置（例えば、国、州、又はデータセンター）を指定できることもある。リソースの例には、ストレージ、処理、メモリ、ネットワーク帯域幅、及び仮想マシンがある。
【００７１】
迅速な伸縮性：各能力は、迅速且つ伸縮自在にプロビジョニング可能であり、場合によっては自動的に、すぐにスケール・アウトすること、及び迅速にリリースされてすぐにスケール・インすることができる。多くの場合、顧客には、プロビジョニングに利用可能な各能力は無制限のように見え、任意の量をいつでも購入できる。
【００７２】
計測されるサービス：クラウド・システムは、サービスのタイプ（例えば、ストレージ、処理、帯域幅、及びアクティブなユーザ・アカウント）に適した何らかの抽象化レベルでの測定能力を活用することによって、リソースの使用を自動的に制御及び最適化する。リソース使用量は、監視、制御、及びレポート可能であり、利用されるサービスのプロバイダ及び顧客両方に透明性が提供される。
【００７３】
サービス・モデルは以下のとおりである。
【００７４】
クラウド・ソフトウェア・アズ・ア・サービス（ＳａａＳ：Ｓｏｆｔｗａｒｅ  ａｓ  ａ  Ｓｅｒｖｉｃｅ）：消費者に提供される能力は、クラウド・インフラストラクチャ上で実行されているプロバイダのアプリケーションの使用である。アプリケーションは、ウェブ・ブラウザなどのシン・クライアント・インターフェイスを介して、様々なクライアント・デバイスからアクセス可能である（例えば、ウェブ・ベースの電子メール）。消費者は、ネットワーク、サーバ、オペレーティング・システム、ストレージを含む基礎をなすクラウド・インフラストラクチャも、個々のアプリケーションの能力さえも、管理又は制御しないが、限られたユーザ特有アプリケーション構成セッティングは例外となり得る。
【００７５】
クラウド・プラットフォーム・アズ・ア・サービス（ＰａａＳ：Ｐｌａｔｆｏｒｍ  ａｓ  ａ  Ｓｅｒｖｉｃｅ）：消費者に提供される能力は、消費者が作成又は入手した、プロバイダによってサポートされるプログラミング言語及びツールを使用して作成されているアプリケーションを、クラウド・インフラストラクチャ上に展開することである。消費者は、ネットワーク、サーバ、オペレーティング・システム、又はストレージを含む基礎をなすクラウド・インフラストラクチャの管理又は制御は行わないが、展開されたアプリケーション、及び場合によりアプリケーション・ホスティング環境構成を制御する。
【００７６】
クラウド・インフラストラクチャ・アズ・ア・サービス（ＩａａＳ：Ｉｎｆｒａｓｔｒｕｃｔｕｒｅ  ａｓ  ａ  Ｓｅｒｖｉｃｅ）：消費者に提供される能力は、処理、ストレージ、ネットワーク、及びその他の基本的なコンピューティング・リソースのプロビジョニングであり、消費者はそこで、オペレーティング・システム及びアプリケーションを含み得る任意のソフトウェアを展開及び実行できる。消費者は、基礎をなすクラウド・インフラストラクチャの管理又は制御は行わないが、オペレーティング・システム、ストレージ、展開されたアプリケーションを制御し、場合により、選ばれたネットワーキング・コンポーネント（例えばホスト・ファイアウォール）を限定的に制御する。
【００７７】
展開モデルは以下のとおりである。
【００７８】
プライベート・クラウド：クラウド・インフラストラクチャは、１つの組織のみのために運用される。組織又はサード・パーティによって管理可能であり、構内又は構外に存在し得る。セキュリティ・メカニズムが整備されている。整備され得るセキュリティ・メカニズムの例は、ファイアウォールである。整備され得るセキュリティ・メカニズムのもう１つの例は、仮想プライベート・ネットワーク（ＶＰＮ：ｖｉｒｔｕａｌ  ｐｒｉｖａｔｅ  ｎｅｔｗｏｒｋ）である。
【００７９】
コミュニティ・クラウド：クラウド・インフラストラクチャは、いくつかの組織によって共有され、共有される関心事（例えば、ミッション、セキュリティ要件、ポリシ、及びコンプライアンス意識）を有する特定のコミュニティをサポートする。組織又はサード・パーティによって管理され得、構内又は構外に存在し得る。
【００８０】
パブリック・クラウド：クラウド・インフラストラクチャは、公衆又は大規模業界団体に利用可能にされ、クラウド・サービスを販売する組織によって所有される。
【００８１】
ハイブリッド・クラウド：クラウド・インフラストラクチャは、２つ以上のクラウド（プライベート、コミュニティ、又はパブリック）の複合であり、各クラウドは一意的なエンティティのままであるが、データ及びアプリケーションの移植性を可能にする標準又はプロプライエタリ技術によって結び付けられる（例えば、クラウド間のロード・バランシングのためのクラウド・バースト）。
【００８２】
クラウド・コンピューティング環境は、サービス指向であり、ステートレスであること、疎結合性、モジュール性、及び意味論的相互運用性に焦点を合わせる。
【００８３】
仮想イメージは、ファイル・システム内の仮想マシンを表し、それを仮想マシンとして実行するのに必要な構成パラメータを含み得る。仮想イメージは、物理マシンに位置することもでき物理マシンのオペレーティング・システムに追加することもできるハイパーバイザと呼ばれるソフトウェア・コンポーネントによって、実行され得る。仮想イメージは、マシン・イメージ又は仮想マシン・イメージとも呼ばれ得る。
【００８４】
仮想マシンは、物理マシンのようにプログラムを実行するマシンの、ソフトウェア実装である。
【００８５】
「イメージ」は、コンピュータ・システム及びコンピュータ・システム上で実行されているソフトウェアの状態である。ハイパーバイザ・システムでは、イメージは「仮想イメージ」とされ得るが、これは、ハイパーバイザがコンピュータ・システム・ハードウェアに対するアクセスを制御し、実際のところ現実にはハイパーバイザがコンピュータ・ハードウェア・コンポーネントに対するアクセスを制御して複数のパーティション（例えばゲスト・オペレーティング・システムなど）間のコンピュータ・ハードウェア・リソースの共有を管理しているときに、ゲスト・オペレーティング・システム又はパーティションには、ゲスト・オペレーティング・システム／パーティションがコンピュータ・システム全体を制御しているかのように見えるためである。
【００８６】
セクション２：詳細な実装
当業者であれば当然のことであるが、詳細な実装は、システム、方法、又はコンピュータ・プログラム製品として具現化され得る。したがって、実施形態は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコードなどを含む）、又は本願明細書においてすべて概して「回路」、「モジュール」若しくは「システム」と呼ばれることもある、ソフトウェア及びハードウェアの側面を兼ね備えた実施形態の形態をとり得る。さらに、実施形態は、コンピュータ可読プログラム・コードが具現化された１つ以上のコンピュータ可読媒体（単数又は複数）において具現化されたコンピュータ・プログラム製品の形態をとることもできる。
【００８７】
１つ以上のコンピュータ可読媒体（単数又は複数）の任意の組み合わせが利用され得る。コンピュータ可読媒体は、コンピュータ可読信号媒体又はコンピュータ可読ストレージ媒体とされ得る。コンピュータ可読ストレージ媒体は、例えば、限定はされないが、電子、磁気、光学、電磁気、赤外線、若しくは半導体システム、装置、若しくはデバイス、又は前述のものの任意の適切な組み合わせとすることもできる。コンピュータ可読ストレージ媒体のより具体的な例（包括的でないリスト）には、１つ以上のワイヤを有する電気的接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ：ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）、読み取り専用メモリ（ＲＯＭ：ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、消去可能プログラム可能読み取り専用メモリ（ＥＰＲＯＭ（ｅｒａｓａｂｌｅ  ｐｒｏｇｒａｍｍａｂｌｅ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）若しくはフラッシュ・メモリ）、光ファイバ、ポータブル・コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ：ｃｏｍｐａｃｔ  ｄｉｓｃ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、光学式ストレージ・デバイス、磁気ストレージ・デバイス又は前述のものの任意の適切な組み合わせが含まれるであろう。この文書の文脈では、コンピュータ可読ストレージ媒体は、命令実行システム、装置若しくはデバイスによって、又はそれに関連して使用されるプログラムを含むこと、又は記憶することができる任意の有形の媒体としてよい。
【００８８】
コンピュータ可読信号媒体は、例えば、ベースバンドに、又は搬送波の一部として、コンピュータ可読プログラム・コードが具現化された伝播データ信号を含み得る。そのような伝播信号は、電磁気、光学、又はその任意の適切な組み合わせを含むがこれらに限定はされない、様々な形態のいずれかをとってよい。コンピュータ可読信号媒体は、コンピュータ可読ストレージ媒体でなく、命令実行システム、装置若しくはデバイスによって、又はそれに関連して使用されるプログラムを伝達すること、伝播させること、又は搬送することができる、任意のコンピュータ可読媒体としてよい。
【００８９】
コンピュータ可読媒体上に具現化されたプログラム・コードは、無線、有線、光ファイバ・ケーブル、ＲＦなど、又は前述のものの任意の適切な組み合わせを含むがこれらに限定はされない、任意の適切な媒体を使用して送られてもよい。
【００９０】
動作を実行するコンピュータ・プログラム・コードは、Ｊａｖａ（Ｒ）、Ｓｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋又は同様のものなどのオブジェクト指向プログラミング言語、及び「Ｃ」プログラミング言語若しくは同様のプログラミング言語などの従来の手続きプログラミング言語を含む、１つ以上のプログラミング言語の任意の組み合わせで書かれていてよい。プログラム・コードは、スタンド・アロン・ソフトウェア・パッケージとして、完全にユーザのコンピュータ上で実行されること、部分的にユーザのコンピュータ上で実行されること、又は部分的にユーザのコンピュータ上で、かつ部分的にリモート・コンピュータ上で実行されること、又は完全にリモート・コンピュータ若しくはサーバ上で実行されることもできる。後者のシナリオでは、ローカル・エリア・ネットワーク（ＬＡＮ：ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋ）、若しくは広域ネットワーク（ＷＡＮ：ｗｉｄｅ  ａｒｅａ  ｎｅｔｗｏｒｋ）を含む任意のタイプのネットワークを介してリモート・コンピュータがユーザのコンピュータに接続されてもよく、又は、外部コンピュータに接続されてもよい（例えば、インターネット・サービス・プロバイダを使用しインターネットを介して）。
【００９１】
実施形態は、方法、装置（システム）、及びコンピュータ・プログラム製品のフローチャート図若しくはブロック図又はその両方を参照して下記に記載される。当然のことながら、フローチャート図若しくはブロック図又はその両方の各ブロック、及びフローチャート図若しくはブロック図又はその両方の複数ブロックの組み合わせは、コンピュータ・プログラム命令により実装可能である。マシンを生じるよう、こうしたコンピュータ・プログラム命令が、汎用コンピュータ、専用コンピュータ、又はその他のプログラム可能データ処理装置のプロセッサに提供されて、この命令が、コンピュータ又はその他のプログラム可能データ処理装置のプロセッサにより実行されて、フローチャート若しくはブロック図又はその両方のブロック若しくは複数ブロックにおいて指定された機能／動作を実装する手段を作り出すようにすることもできる。
【００９２】
さらに、特定の形で機能するようコンピュータ、その他のプログラム可能データ処理装置、又はその他のデバイスに指示することができるこうしたコンピュータ・プログラム命令は、コンピュータ可読媒体に記憶されて、コンピュータ可読媒体に記憶されたこの命令が、フローチャート若しくはブロック図又はその両方のブロック若しくは複数ブロックにおいて指定された機能／動作を実施する命令を含む製品を生じるようにすることもできる。
【００９３】
さらに、コンピュータ・プログラム命令（機能的記述情報）は、コンピュータ、その他のプログラム可能データ処理装置、又はその他のデバイスにロードされて、コンピュータ、その他のプログラム可能装置、又はその他のデバイス上で一連の動作ステップが実行されるようにしてコンピュータに実装されるプロセスを生じさせ、コンピュータ又はその他のプログラム可能装置上で実行される命令が、フローチャート若しくはブロック図又はその両方のブロック若しくは複数ブロックにおいて指定された機能／動作を実装するためのプロセスを提供するようにすることもできる。
【００９４】
様々な実施形態が完全に理解されるよう、以下の記載及び図面に、ある特定の詳細が記載される。なお、様々な実施形態を不必要に分かりにくくすることを避けるために、コンピューティング及びソフトウェア技術に関連することが多い特定の周知の詳細は、以下の開示には記載されない。さらに、当業者であれば当然のことであるが、他の実施形態を、以下に記載される詳細のうちの１つ以上を伴わずに実施することができる。最後に、以下の開示では、ステップ及びシーケンスを参照して様々な方法が記載されるが、そのような記載は、実施形態の明らかな実装を提供するためのものであり、ステップ及びステップのシーケンスは、実施形態を実施するために必須と解釈されてはならない。それどころか、下記の事項は、１つ以上の実施形態の詳細な説明を提供することを目的としており、限定的なものとして解釈されてはならず、むしろ、任意の数の変形が、詳細な説明に続く特許請求の範囲によって定義されている範囲内に入り得る。
【００９５】
以下の詳細な説明は、概して、上記に記載された概要に従い、必要に応じて、様々な側面及び実施形態の定義をさらに説明及び拡大する。この目的を達成するために、この詳細な説明は、まず、実施形態に関連するソフトウェア若しくはハードウェア又はその両方の技術を実装するのに適した、図１のコンピューティング環境の例について記載する。複数の個別デバイスにわたって実行可能な現代のコンピューティング技術を強調するために、基本的なコンピューティング環境の拡張として、ネットワーク化環境の実施形態が図２に示されている。
【００９６】
以下、図１を参照する。クラウド・コンピューティング・ノードとしての機能を果たすことができる情報処理システムの実施形態の概略図が示されている。クラウド・コンピューティング・ノード１０は、適切なクラウド・コンピューティング・ノードの一例でしかなく、本願明細書に記載される用途又は機能性の範囲についてのいかなる制限を意味することも目的としていない。いずれにせよ、クラウド・コンピューティング・ノード１０は、上記のセクション１に記載された機能のいずれかの実装若しくは実行又はその両方ができる。
【００９７】
クラウド・コンピューティング・ノード１０内には、コンピュータ・システム／サーバ１２があり、これは、多数の他の汎用又は専用コンピューティング・システム環境若しくは構成とともに動作可能である。コンピュータ・システム／サーバ１２とともに使用されるのに適していると考えられる周知のコンピューティング・システム、環境、若しくは構成、又はそのいずれかの組み合わせの例には、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルド若しくはラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサ・ベースのシステム、セット・トップ・ボックス、プログラム可能な家庭用電化製品、ネットワークＰＣ、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、及び上記のシステム若しくはデバイスのいずれかを含む分散型クラウド・コンピューティング環境、並びに同様のものがあるが、これらに限定はされない。
【００９８】
コンピュータ・システム／サーバ１２については、コンピュータ・システムによって実行されるプログラム・モジュールなどのコンピュータ・システム実行可能命令の一般的文脈において記載することができる。一般に、プログラム・モジュールは、特定のタスクを実行するか、又は特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、論理、データ構造などを含む。コンピュータ・システム／サーバ１２は、通信ネットワークを介してリンクされているリモート処理デバイスによってタスクが実行される、分散型クラウド・コンピューティング環境において実施されてもよい。分散型クラウド・コンピューティング環境では、プログラム・モジュールは、メモリ・ストレージ・デバイスを含む、ローカル及びリモート両方のコンピュータ・システム・ストレージ媒体に位置し得る。
【００９９】
図１に示されているように、クラウド・コンピューティング・ノード１０内のコンピュータ・システム／サーバ１２は、汎用コンピューティング・デバイスの形態で示されている。コンピュータ・システム／サーバ１２のコンポーネントは、１つ以上のプロセッサ又は処理ユニット１６、システム・メモリ２８、及びシステム・メモリ２８を含む様々なシステム・コンポーネントをプロセッサ１６に結合するバス１８を含み得るが、これらに限定はされない。
【０１００】
バス１８は、メモリ・バス又はメモリ・コントローラ、周辺機器用バス、アクセラレーテッド・グラフィックス・ポート、及び様々なバス・アーキテクチャのいずれかを使用するプロセッサ若しくはローカル・バスを含む、いくつかのタイプのバス構造の任意のものの１つ以上を表す。限定ではなく例として、そのようなアーキテクチャには、業界標準アーキテクチャ（ＩＳＡ：Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、マイクロ・チャネル・アーキテクチャ（ＭＣＡ：Ｍｉｃｒｏ  Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、拡張ＩＳＡ（ＥＩＳＡ：Ｅｎｈａｎｃｅｄ  ＩＳＡ）バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション（ＶＥＳＡ：Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ）ローカル・バス、及びペリフェラル・コンポーネント・インターコネクト（ＰＣＩ：Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔｓ）バスがある。
【０１０１】
コンピュータ・システム／サーバ１２は、典型的には、様々なコンピュータ・システム可読媒体を含む。そのような媒体は、コンピュータ・システム／サーバ１２によってアクセス可能な任意の利用可能な媒体としてよく、揮発性及び不揮発性媒体、リムーバブル及び非リムーバブル媒体の両方を含む。
【０１０２】
システム・メモリ２８は、ランダム・アクセス・メモリ（ＲＡＭ）３０若しくはキャッシュ・メモリ３２又はその両方など、揮発性メモリの形態のコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム／サーバ１２はさらに、他のリムーバブル／非リムーバブルの揮発性／不揮発性コンピュータ・システム・ストレージ媒体を含み得る。単なる例として、非リムーバブルの不揮発性磁気媒体（図示はしておらず、典型的には「ハード・ドライブ」と呼ばれる）に対する読み取り及び書き込みのために、ハード・ディスク・ドライブ３４が提供されることが可能である。図示してはいないが、リムーバブル不揮発性磁気ディスク（例えば「フレキシブル・ディスク」）に対する読み取り及び書き込みのための磁気ディスク・ドライブ、及びＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、又は他の光媒体など、リムーバブル不揮発性光ディスクに対する読み取り又は書き込みのための光ディスク・ドライブが提供されることが可能である。そのような場合には、それぞれが、１つ以上のデータ媒体インターフェイスによってバス１８に接続されることが可能である。さらに図示され以下に記載されるように、メモリ２８は、本願明細書に記載される機能を実行するよう構成された一組（例えば少なくとも１つ）のプログラム・モジュールを有する少なくとも１つのプログラム製品を含むとよい。
【０１０３】
一組（少なくとも１つ）のプログラム・モジュール４２を有するプログラム／ユーティリティ４０は、限定ではなく例として、オペレーティング・システム、１つ以上のアプリケーション・プログラム、他のプログラム・モジュール、及びプログラム・データと同様に、メモリ２８に記憶され得る。オペレーティング・システム、１つ以上のアプリケーション・プログラム、他のプログラム・モジュール、及びプログラム・データ、又はその何らかの組み合わせはそれぞれ、ネットワーキング環境の実装を含み得る。プログラム・モジュール４２は、概して、本願明細書に記載される機能若しくは手順又はその両方を実行する。
【０１０４】
コンピュータ・システム／サーバ１２はさらに、キーボード、ポインティング・デバイス、ディスプレイ２４などの１つ以上の外部デバイス１４、ユーザがコンピュータ・システム／サーバ１２と対話できるようにする１つ以上のデバイス、若しくはコンピュータ・システム／サーバ１２が１つ以上の他のコンピューティング・デバイスと通信できるようにする任意のデバイス（例えばネットワーク・カード、モデムなど）、又はそのいずれかの組み合わせと通信するとよい。そのような通信は、Ｉ／Ｏインターフェイス２２を介して生じることが可能である。さらに、コンピュータ・システム／サーバ１２は、ローカル・エリア・ネットワーク（ＬＡＮ）、一般的な広域ネットワーク（ＷＡＮ）、若しくはパブリック・ネットワーク（例えばインターネット）、又はそのいずれかの組み合わせなどの１つ以上のネットワークと、ネットワーク・アダプタ２０を介して通信できる。図示されているように、ネットワーク・アダプタ２０は、コンピュータ・システム／サーバ１２の他のコンポーネントと、バス１８を介して通信する。図示されてはいないが、当然のことながら、他のハードウェア若しくはソフトウェア又はその両方のコンポーネントが、コンピュータ・システム／サーバ１２とともに使用されることが可能であろう。例として、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、ＲＡＩＤシステム、テープ・ドライブ、及びデータ・アーカイブ・ストレージ・システムなどがあるが、これに限定はされない。
【０１０５】
図２は、実施形態による、本願明細書に記載される方法がネットワーク化環境において動作する多種多様な情報処理システム上で実行可能であることを示す、図１に示された情報処理システム環境の拡張を提供する。情報処理システムのタイプは、ハンドヘルド・コンピュータ／モバイル電話２１０などの小型のハンドヘルド・デバイスから、メインフレーム・コンピュータ２７０などの大型メインフレーム・システムまで多岐にわたる。ハンドヘルド・コンピュータ２１０の例には、携帯情報端末（ＰＤＡ）、ＭＰ３プレーヤなどの個人用娯楽デバイス、携帯用テレビ、及びコンパクト・ディスク・プレーヤがある。情報処理システムの他の例には、ペン、すなわちタブレット・コンピュータ２２０、ラップトップ、すなわちノート型コンピュータ２９０、ワークステーション２４０、パーソナル・コンピュータ・システム２５０、及びサーバ２６０がある。図２に個別に示されていない他のタイプの情報処理システムは、情報処理システム２８０によって表されている。図のように、コンピュータ・ネットワーク２００を使用して、様々な情報処理システムをともにネットワーク化することが可能である。様々な情報処理システムを相互接続するために使用できるコンピュータ・ネットワークのタイプには、ローカル・エリア・ネットワーク（ＬＡＮ）、無線ローカル・エリア・ネットワーク（ＷＬＡＮ：Ｗｉｒｅｌｅｓｓ  Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネット、公衆交換電話網（ＰＳＴＮ：Ｐｕｂｌｉｃ  Ｓｗｉｔｃｈｅｄ  Ｔｅｌｅｐｈｏｎｅ  Ｎｅｔｗｏｒｋ）、その他の無線ネットワーク、及び情報処理システムを相互接続するために使用可能なその他任意のネットワーク・トポロジが含まれる。情報処理システムの多くは、ハード・ドライブ若しくは不揮発性メモリ、又はその両方などの不揮発性データ・ストアを含む。図２に示されている情報処理システムの一部は、独立した不揮発性データ・ストアを示し（サーバ２６０は不揮発性データ・ストア２６５を利用し、メインフレーム・コンピュータ２７０は不揮発性データ・ストア２７５を利用し、情報処理システム２８０は不揮発性データ・ストア２８５を利用する）。不揮発性データ・ストアは、様々な情報処理システムに外付けされるコンポーネントとされても、情報処理システムのうちの１つに内蔵されていてもよい。さらに、リムーバブル不揮発性ストレージ・デバイスを情報処理システムのＵＳＢポート又はその他のコネクタに接続するなど、様々な技術を使用して、リムーバブル不揮発性ストレージ・デバイスを２つ以上の情報処理システム間で共有することが可能である。さらに、コンピュータ・ネットワーク２００は、様々な情報処理システムを、クラウド・コンピューティング環境２０５及び任意の数の他のクラウド・コンピューティング環境を含むクラウド・コンピューティング環境２０１に接続するために使用可能である。図３及び４に表されているように、クラウド・コンピューティング環境２０１は、クラウド・コンピューティング環境を提供するよう連携するいくつかのネットワーク化情報処理システム（ノード）を含む。クラウド・コンピューティング環境２０１はそれぞれ、図４に示されている抽象化層を提供する。抽象化層は、ハードウェア及びソフトウェア層４１０、仮想化層４２０、管理層４３０、及びワークロード層４４０を含む。様々な層４１０〜４４０内のコンポーネントは、クラウド環境毎に異なることが可能である。様々な層内にあるコンポーネントの例は、図４に示されている。
【０１０６】
以下、図３を参照する。例示のためのクラウド・コンピューティング環境２０１が示されている。図のように、クラウド・コンピューティング環境２０１は、１つ以上のクラウド・コンピューティング・ノード１０を含み、これと、例えば携帯情報端末（ＰＤＡ）又はセルラ電話２１０、デスクトップ・コンピュータ２５０、ラップトップ・コンピュータ２９０、自動車コンピュータ・システム２３０、及び図２に示されている他のタイプのクライアント・デバイスなどのコンピューティング・デバイスが通信する。これによって、インフラストラクチャ、プラットフォーム、若しくはソフトウェア、又はそのいずれかの組み合わせが、クラウド・コンピューティング環境２０１からサービスとして（セクション１において上述したように）提供可能になり、その結果、各クライアントがそのようなリソースを別々に維持することは必要とされない。当然のことながら、図２及び３に示されているコンピューティング・デバイスのタイプは、例示のみを目的としており、クラウド・コンピューティング環境２０１は、任意のタイプのネットワーク若しくはネットワーク／アドレス指定可能接続（例えばウェブ・ブラウザを使用）又はその両方によって任意のタイプのコンピュータ化されたデバイスと通信できる。
【０１０７】
本発明者らの認識のとおり、異なるクラウド（又はハイパーバイザ）プロバイダのソース及び宛先仮想イメージは、互換性のないハードウェア・アーキテクチャ、ハイパーバイザ技術、ゲストＯＳ若しくはミドルウェア又はその両方のタイプ若しくはバージョン又はその両方を有することもある。仮想イメージにおけるディスク・パーティションは、クラウド（又はハイパーバイザ）プロバイダに特有であることもある。小規模なカスタマイズを伴うコンテンツの直接コピーでは、正常に機能しないこともある。例えば、Ａｍａｚｏｎ  ＥＣ２が、ｘ８６ハードウェアのＸＥＮ仮想イメージをサポートする一方で、ｐ−ｓｅｒｉｅｓサーバを用いるＩＢＭ（ＩＢＭ社の登録商標）クラウドは、Ｓｙｓｔｅｍ  ｐ（ＩＢＭ社の登録商標）イメージのみをサポートし得る。
【０１０８】
本発明者らは、一部の状況では、ファイアウォール及びブロック・ストレージ・ボリュームなどのクラウド（又はハイパーバイザ）特有構成は、ＡＰＩの相違が原因で、ポーティングされるソリューションに追加できないことも認識している。例えば、Ａｍａｚｏｎ  ＥＣ２は、ブロック・ストレージ・ボリュームを実行中のインスタンスに接続する構成オプションを提供するが、ＶＭｗａｒｅベースのプライベート・クラウドはそのオプションを提供しないこともある。
【０１０９】
本発明者らは、複数の仮想イメージを含むソリューションが、部分的にのみ別のクラウド（又はハイパーバイザ）にポーティングされる必要もあり得るということも認識している。例えば、１つの仮想イメージ内にビジネス・ロジック層、別の仮想イメージ内にデータベース層を備えるソリューションでは、データ機密性の問題が原因で、ビジネス・ロジック層仮想イメージのみがパブリック・クラウドにポーティングされ、データベース層仮想イメージがプライベート・クラウドに残ることが必要とされるかもしれない。一方、発明者らは、一部の状況ではソリューション全体を別のクラウド（又はハイパーバイザ）にポーティングすることが望ましいこともあるということも認識している。
【０１１０】
本発明者らは、別のクラウド（又はハイパーバイザ）にポーティングするときに、プロビジョニング・ワークフローにおいて変更、追加、若しくは削除、又はそのいずれかの組み合わせを行われたソリューション・コンポーネント／構成と、変更、追加、若しくは削除、又はそのいずれかの組み合わせを行われた対応する展開動作との、特定若しくは視覚化、又はその両方を行うことが望ましいこともあるということも認識している。本発明者らは、これらの変更、追加、若しくは削除、又はそのいずれかの組み合わせを、ソース・モデルのパッチに記憶することが望ましいこともあるということも認識している。例えば、ＷｅｂＳｐｈｅｒｅ（ＩＢＭ社の登録商標）アプリケーションを、ＶＭｗａｒｅベースのプライベート・クラウドからＡｍａｚｏｎ  ＥＣ２にポーティングするには、ベースＶＭｗａｒｅイメージから、ＷｅｂＳｐｈｅｒｅを備えるベースＡｍａｚｏｎマシン・イメージ（ＡＭＩ：Ａｍａｚｏｎ  Ｍａｃｈｉｎｅ  Ｉｍａｇｅ）への変更、及びＶＭｗａｒｅイメージの代わりにＡＭＩを展開するための変更された動作が必要である。
【０１１１】
さらに、本発明者らの認識のとおり、ソリューションを複数のクラウドにプロビジョニングすることが望ましいこともある。例えば、Ａｍａｚｏｎ  ＥＣ２及びＩＢＭ  Ｄｅｖｅｌｏｐｍｅｎｔ  ａｎｄ  Ｔｅｓｔ  Ｃｌｏｕｄはどちらも、イメージをインスタンス化し、実行中の仮想マシンにセキュアにリモート接続して、ソリューション・プロビジョニング・タスクをリモートで実行するためのＡＰＩを提供する。
【０１１２】
以下、図４を参照する。クラウド・コンピューティング環境２０１（図３）によって提供される一組の機能抽象化層４００の実施形態が示されている。図４に示されているコンポーネント、層、及び機能は、例示のみを目的としており、実施形態はそれに限定されないことをあらかじめ理解されたい。図示されているように、以下の層及び対応する機能が提供される。
【０１１３】
ハードウェア及びソフトウェア層４１０は、ハードウェア及びソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例には、ＩＢＭ（Ｒ）ｚＳｅｒｉｅｓ（Ｒ）システムが１つの例であるメインフレーム、ＩＢＭ  ｐＳｅｒｉｅｓ（Ｒ）システムが１つの例であるＲＩＳＣ（Ｒｅｄｕｃｅｄ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ｃｏｍｐｕｔｅｒ：縮小命令セット・コンピュータ）アーキテクチャ・ベースのサーバ、ＩＢＭ  ｘＳｅｒｉｅｓ（Ｒ）システム、ＩＢＭ  Ｂｌａｄｅ  Ｃｅｎｔｅｒ（Ｒ）システム、ストレージ・デバイス、ネットワーク、及びネットワーキング・コンポーネントがある。ソフトウェア・コンポーネントの例には、ＩＢＭ  ＷｅｂＳｐｈｅｒｅ（Ｒ）アプリケーション・サーバ・ソフトウェアが１つの例であるネットワーク・アプリケーション・サーバ・ソフトウェア、及びＩＢＭ  ＤＢ２（Ｒ）データベース・ソフトウェアが１つの例であるデータベース・ソフトウェアがある。（ＩＢＭ、ｚＳｅｒｉｅｓ、ｐＳｅｒｉｅｓ、ｘＳｅｒｉｅｓ、ＢｌａｄｅＣｅｎｔｅｒ、ＷｅｂＳｐｈｅｒｅ、及びＤＢ２は、米国、その他の国々、又は両方におけるインターナショナル・ビジネス・マシーンズ・コーポレーションの商標である）。
【０１１４】
仮想化層４２０は、抽象化層を提供し、抽象化層から、仮想サーバ、仮想ストレージ、仮想プライベート・ネットワークを含む仮想ネットワーク、仮想アプリケーション、及び仮想クライアントという仮想エンティティが提供されるとよい。
【０１１５】
管理層４３０は、以下に記載される機能を提供する。リソース・プロビジョニングは、クラウド・コンピューティング環境内でタスクを実行するために利用されるコンピューティング・リソース及びその他のリソースの動的な調達を提供する。測定及び価格決定は、クラウド・コンピューティング環境内でリソースが利用されるときの費用の追跡と、こうしたリソースの消費に対する請求又はインボイスの作成を提供する。一例では、これらのリソースは、アプリケーション・ソフトウェア・ライセンスを含んでもよい。セキュリティは、ユーザ及びタスク両方のアイデンティティ証明、並びにデータ及びその他のリソースの保護を提供する。ユーザ・ポータルは、ユーザ及びシステム管理者の両方に、クラウド・コンピューティング環境に対するアクセスを提供する。サービス・レベル管理は、必要なサービス・レベルが満たされるようにクラウド・コンピューティング・リソースの割り当て及び管理を提供する。サービス水準合意（ＳＬＡ：Ｓｅｒｖｉｃｅ  Ｌｅｖｅｌ  Ａｇｒｅｅｍｅｎｔ）計画及び達成は、ＳＬＡに従い将来の要求が予想されるクラウド・コンピューティング・リソースの事前準備及び調達を提供する。
【０１１６】
ワークロード層４４０は、クラウド・コンピューティング環境を利用する目的となる機能性を提供する。この層から提供され得るワークロード及び機能の例には、マッピング及びナビゲーション、ソフトウェア開発及びライフサイクル管理、仮想教室教育配信、データ分析処理、並びにトランザクション処理がある。上記のように、図４を参照して記載された前述の例はすべて、例示のためのものでしかなく、これらの例に限定はされない。
【０１１７】
図５は、ソリューションをソースからターゲット・プラットフォームにポーティングするために使用される、アセット・ライブラリに記憶されたソース及びターゲット・トポロジ・モデル並びに自動化ステップ・モデルの実施形態の図である。実施形態では、「ソリューション」は、特定の機能的及び非機能的要件を満たすために使用される１つ以上のハードウェア・ベースのコンピュータ・システムによって実行される１つ以上のソフトウェア・アプリケーションを含むソフトウェア・ソリューションである。ソフトウェア・ソリューションは、１つ以上のソフトウェア・アプリケーション、並びにその関係する構成パラメータを含む。実施形態では、ソリューションは、ターンキー・ソリューション及びワンストップ手法である。ソリューションは、複数のアプリケーションを含んでもよく、アプリケーションに関連する構成情報を含んでもよい。ソリューションは、複数の仮想イメージを含み得るという点で、複合的な性質であってもよい。ソリューションの一部が、１つの仮想イメージにあってもよく、ソリューションの別の一部が、別の仮想イメージにあってもよい。アセット・ライブラリ５００は、トポロジ及び自動化データのリポジトリとして使用される。トポロジ・データは、クラウド・ベースのソリューションのコンポーネント、及びその関係を表す。アセット・ライブラリ５００は、任意の数のトポロジ・モデル５１０のデータを記憶するために使用される。実施形態では、アセット・ライブラリ５００は、コンピュータ・システムからアクセス可能な不揮発性ストレージ・デバイスなどの永続ストレージ媒体に記憶される。トポロジ・モデル５１０はそれぞれ、クラウド・ベースのソリューションにおいて使用されるデータを表す。クラウド・ベースのソリューション（「ターゲット・クラウド・トポロジ」）を最初に特定のクラウド環境（「ターゲット・クラウド」）に展開するとき、様々なソース・クラウド・トポロジ・モデル・ユニットを再使用することでターゲット・クラウド・トポロジを開発するのに使用可能な、アセット・ライブラリに既に記憶されているトポロジ（「ソース・クラウド・トポロジ」）を特定するために、アセット・ライブラリ５００に記憶されているアセットが検索されることが可能である。実施形態では、これは、ソリューションをソース・クラウド（例えば、第１クラウド・プロバイダによって提供されるクラウド）からターゲット・クラウド（例えば、第２クラウド・プロバイダによって提供されるクラウド）にポーティングするときに生じる。
【０１１８】
ソース・プラットフォームの実施形態は、ソリューションが展開されているクラウド（例えばＡｍａｚｏｎ  ＥＣ２（ＴＭ）クラウド）とすることもできるであろう。ターゲット・プラットフォームの実施形態は、ソリューションがポーティングされる別のクラウド（例えば、ＩＢＭ  Ｓｍａｒｔ  Ｂｕｓｉｎｅｓｓ  Ｄｅｖｅｌｏｐｍｅｎｔ  ａｎｄ  Ｔｅｓｔ  Ｃｌｏｕｄ）とすることができるであろう。ソース・プラットフォームの実施形態は、ハイパーバイザ（例えばＶＭＷａｒｅハイパーバイザ）とすることができ、対応するターゲット・プラットフォームの実施形態は、別のハイパーバイザ（例えばＫＶＭハイパーバイザ）とすることができるであろう。ソース・プラットフォームの実施形態は、ディスク・パーティションを備える物理コンピュータ・システム（例えばＩＢＭ  ｐＳｅｒｉｅｓサーバ）とすることができ、対応するターゲット・プラットフォームの実施形態は、別の物理コンピュータ・システム（例えば、Ｓｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓサーバ）とすることができるであろう。さらに、プラットフォームは、混合されて組み合わされることが可能であろう。例えば、ソース・プラットフォームの実施形態をハイパーバイザとし、対応するターゲット・プラットフォームの実施形態をクラウドとすることができるであろう。
【０１１９】
多数のトポロジ・モデルに対応するモデル・ユニットが、アセット・ライブラリ５００に記憶され得るが、図５には、ソース・クラウド・トポロジ・モデル・ユニット５２０及びターゲット・クラウド・トポロジ・モデル・ユニット５６０の２つが示されている。ソース及びターゲット・クラウド・トポロジ・モデルはどちらも、メタデータ（それぞれ５２２及び５６２）、認証情報及びサービス・エンドポイント・データ（それぞれ５２４及び５６４）、並びに構成パラメータ（それぞれ５２６及び５６６）などの様々なモデル・ユニットを含む。モデル・ユニットは、アプリケーション、ミドルウェア、ゲスト・オペレーティング・システム、仮想イメージ、構成パラメータ、及びその他のソリューション・コンポーネントを表すために使用され得る。各モデル・ユニットは、仮想イメージ・タイプ、ｉｄ、構成パラメータ、ソフトウェア・バージョン、アクセス認証情報、ファイアウォール・ルールなどのメタデータを含むとよい。個別のトポロジ・モデルのメタデータは、仮想イメージ展開パラメータ、トポロジに含まれるソフトウェアに関するメタデータ、トポロジに含まれるミドルウェアに関するメタデータ、トポロジに含まれるゲスト・オペレーティング・システムに関するメタデータなど、いくつかのメタデータ項目を含む。
【０１２０】
図のように、自動化ステップ・モデル５１５もアセット・ライブラリ５００に記憶されており、トポロジ・モデル・ユニットと関連付けられている。名称が示すように、自動化ステップ・モデルは、トポロジに含まれる様々なトポロジ・モデル・ユニットを展開するために使用される自動化ステップを表す。ソース・クラウド自動化ステップ・モデル５３０は、ソース・クラウド・トポロジ・モデル・ユニット５２０を展開するために使用される自動化ステップを含み、ターゲット・クラウド自動化ステップ・モデル５７０は、ターゲット・クラウド・トポロジ・モデル・ユニット５６０を展開するために使用される自動化ステップを含む。ターゲット・クラウド・トポロジ・モデル・ユニット５６０及びターゲット・クラウド自動化ステップ・モデル５７０を開発するとき、ターゲット・トポロジに存在するがソース・トポロジに存在しない新たなモデル・ユニットとともに、ソース・クラウド・トポロジ・モデル・ユニット５２０とターゲット・クラウド・トポロジ・モデル・ユニットとの相違が特定される。
【０１２１】
さらに、相違には、ソース・トポロジに存在するがターゲット・トポロジには存在しない除去されるモデル・ユニットが含まれる。ターゲット・トポロジ・モデル内の特定された異なるモデル・ユニット及び新たなモデル・ユニットの自動化ステップ・モデルを発見するために、アセット・ライブラリ５００が検索される。相違は、アセット・ライブラリ５００に、パッチとして記憶されることができると考えられ、類似したソース・トポロジ・モデルに適用されて、ターゲット・トポロジ・モデルを作成することができる。ソース・プラットフォーム（例えばソース・クラウド、ソース・ハイパーバイザなど）に関連するソース・トポロジ・モデルと、ターゲット・プラットフォーム（例えばターゲット・クラウド、ターゲット・ハイパーバイザなど）に関連するターゲット・トポロジとの相違を求めることの実行に、１つ以上のプロセッサが使用されるとよい。トポロジ・モデルは、トポロジ・モデル・ユニットを含む。
【０１２２】
トポロジ・モデル・ユニットは、ユニット・パラメータ又は属性を含むとよく、さらにタイプも含んでもよい。タイプは、例えば、仮想イメージ、ミドルウェア、オペレーティング・システム、ファイアウォール、又は当該技術分野で既知の任意の他のタイプとしてよい。ハイパーバイザは、オペレーティング・システムの上位で実行されるとよいソフトウェアである。ハイパーバイザは、オペレーティング・システムの下位で実行されてもよい。ハイパーバイザは、種々のオペレーティング・システム、又は単一のオペレーティング・システムの種々のインスタンスが、同時にシステム上で実行されることを可能にするとよい。言い換えれば、ハイパーバイザは、ホスト・システムが複数のゲスト・マシンをホストすることを可能にするとよい。このように相違を求める結果として、新たな、変更された、及び除去されたモデル・ユニットを含むトポロジ相違が得られる。トポロジ相違は、ターゲット・トポロジ・モデルにおいて、ソース・トポロジ・モデルと異なる、ソリューションの様々なコンポーネントに対応する一組のトポロジ・モデル・ユニットであるとよい。
【０１２３】
一組のトポロジ・モデル・ユニットは、ソリューションをソース・プラットフォームからターゲット・プラットフォームにポーティングするときに変更が必要なこともある。ワークフロー・モデル内の少なくとも１つの動作を含む組（例えば、自動化ステップ・モデル５１５に記憶された自動化ステップ・モデル）が、アセット・ライブラリ５００から取得される。ワークフロー・モデル内の動作は、実行され得るアクションである。例えば、ワークフロー・モデル内の動作は、ｓＭａｓｈアプリケーション・サーバの上にｓＭａｓｈアプリケーションをインストールするために使用され得る。
【０１２４】
もう１つの例として、ワークフロー・モデル内の動作は、仮想イメージをインスタンス化するために使用され得る。各動作は、ソース及びターゲット・トポロジ・モデル間のトポロジ相違内のモデル・ユニットのうちの１つに関連する。実施形態では、完全なソリューション（例えば、ソース・トポロジからターゲット・トポロジにポーティングされるソリューション）が、取得された動作のうちの１つ以上を１つ以上のプロセッサを使用して実行することによって展開される。実施形態では、ソリューションの一部分が、取得された動作のうちの１つ以上を１つ以上のプロセッサを使用して実行することによってソース・トポロジからターゲット・トポロジにポーティングされる。ソリューションの展開される一部分は、ターゲット・プラットフォーム（例えば、ターゲット・クラウド５９０、ターゲット・ハイパーバイザなど）と互換性のあるターゲット・イメージを含む。実施形態では、互換性は、ハイパーバイザ技術、ハードウェア・アーキテクチャ、オペレーティング・システム・バージョン、ミドルウェア・バージョン、種々のクラウドにおいて利用可能なＡＰＩ（ファイアウォール及びＶＰＮの構成など）、並びに同様のものなどの様々な原因に起因する。実施形態では、非互換性は、上記の１つ以上のコンポーネントが、ソース・プラットフォームからターゲット・プラットフォームへの互換性を有しない、様々な同じ原因に起因する。
【０１２５】
図のように、ソース展開ワークフロー５７５は、ソリューションをソース・クラウド５８０に展開するために動作する。展開は、ソース・クラウドにロードされている仮想イメージ５８２、及び実行中のミドルウェア・イメージ・インスタンスに展開されたアプリケーション５５０をもたらす。同様に、ターゲット展開ワークフロー５８５は、ソリューションをターゲット・クラウド５９０に展開するよう動作する。展開は、ターゲット・クラウドにロードされている仮想イメージ５９２、及び実行中のミドルウェア・イメージ・インスタンスに展開されたアプリケーション５５０をもたらす。
【０１２６】
なお、共通のアプリケーション５５０が、ソース・クラウド５８０及びターゲット・クラウド５９０の両方に展開されている。実施形態では、アプリケーション５５０は、プラットフォーム依存の「仮想マシン」上で実行される、Ｊａｖａプログラミング言語などのプラットフォーム独立のコンピュータ言語で書かれたアプリケーションなどのプラットフォーム独立アプリケーションである。ターゲット・イメージは、ターゲット・トポロジ・モデル内の、仮想イメージ・モデル・ユニット及びその含まれているユニット内のメタデータを使用することによって特定されるとよい。このメタデータは、ターゲット・クラウド内のすべての既知の仮想イメージのメタデータを検索するための入力として使用されるとよい。そのようなメタデータはすべて、アセット・ライブラリに記憶できる。ターゲット・イメージは、ターゲット・イメージを実行するターゲット・プラットフォーム上にアプリケーションを展開可能なように、特定されてターゲット・プラットフォーム（クラウド）に展開されるとよい。実施形態では、ターゲット・イメージは、アプリケーションが動作するのに適したターゲット環境を提供するオペレーティング・システム及びミドルウェア（例えば仮想マシン）を含む。このように、ソース・クラウドにおいて現在実行されソース・トポロジ・モデルにおいて記述されているソリューションを、ターゲット・トポロジ・モデルにおいて記述されている類似のモデル・ユニットを用いて、ターゲット・クラウドにポーティング及び展開できる。
【０１２７】
図６は、実施形態による、展開ワークフローを生成するために、トポロジ・モデル・ユニットを利用してソース及びターゲット・トポロジ・モデル間の共通点及び相違を発見するためにとられるステップを示すフローチャートである。
【０１２８】
共通点は、ターゲット・トポロジ・モデルにおいて、ソース・トポロジ・モデルと同じである、ソリューションの様々なコンポーネントに対応する一組のトポロジ・モデル・ユニットであるとよい。共通点の例は、ターゲット・プラットフォームに関連するモデル・ユニットにおいて表される仮想イメージのタイプが、ソース・プラットフォームに関連するモデル・ユニットにおいて表される仮想イメージのタイプと同じであり得るということであってもよい。両方のモデル・ユニットに関してタイプは同じであるが、例えばイメージ識別子などの何らかの他のパラメータが、ソース・トポロジ・モデルに関連するモデル・ユニットと比較して、ターゲット・トポロジ・モデルに関連するモデル・ユニットにおいて異なる場合など、共通点は事実上部分的であってもよい。共通点は、２つのトポロジ・モデル・ユニットのパラメータすべてが同じであり、異なるパラメータがまったくない場合など、事実上全体であってもよい。共通点が事実上全体であれば、関連する展開動作及びソリューション・コンポーネントは、ソリューションをソース・プラットフォームからターゲット・プラットフォームにポーティングするときに変更される必要がないこともある。共通点が事実上部分的であれば、これらは相違として扱われても、又は完全に共通するものとして扱われてもよい。
【０１２９】
相違は、ターゲット・トポロジ・モデルにおいて、ソース・トポロジ・モデルと異なる、ソリューションの様々なコンポーネントに対応する一組のトポロジ・モデル・ユニットであるとよい。相違の例は、ターゲット・プラットフォームに関連するモデル・ユニットにおいて表される仮想イメージのタイプが、ソース・プラットフォームに関連するモデル・ユニットにおいて表される仮想イメージのタイプと異なり得るということであってもよい。相違があれば、関連する展開動作及びソリューション・コンポーネントは、ソリューションをソース・プラットフォームからターゲット・プラットフォームにポーティングするときに変更される必要があることもある。
【０１３０】
処理が６００にて開始すると、ステップ６１０にて、ソース・トポロジ・モデル・ユニット及びトポロジ・モデルが作成されてアセット・ライブラリ５００に記憶される。ステップ６２０にて、ステップ６１０においてソース・トポロジ・モデルに関して作成された、いくつかのトポロジ・モデル・ユニットに関して、自動化ステップ・モデルが作成され、これらの自動化モデルもアセット・ライブラリ５００に記憶される。ステップ６２５にて、ステップ６１０及び６２０において作成されたモデル（トポロジ及び自動化）が、ソース・クラウド５８０の展開ワークフロー６２８を生成するために使用される。
【０１３１】
ステップ６３０及び６４０は、ステップ６１０及び６２０に似ているが、ステップ６３０及び６４０は別の（ターゲット）クラウドを対象とする。ステップ６３０にて、ターゲット・トポロジ・モデル・ユニット及びトポロジ・モデルが作成されてアセット・ライブラリ５００に記憶される。これらのターゲット・トポロジ・モデル・ユニット及びトポロジ・モデルは、ソース・クラウド上に展開されるのと同じソリューションを展開するよう設計されるが、ターゲット・トポロジ・モデル・ユニット及びトポロジ・モデルは、ソリューションを別の「ターゲット」クラウド上で実行するよう設計される。ステップ６４０にて、ステップ６３０においてターゲット・トポロジ・モデルに関して作成されたトポロジ・モデル・ユニットの一部に関して、自動化ステップ・モデルが作成され、これらの自動化モデルもアセット・ライブラリ５００に記憶される。
【０１３２】
ステップ６５０にて、ソース及びターゲット・トポロジ・モデルが、アセット・ライブラリ５００から読み取られ、モデル間の相違を特定するために比較される。これらの相違は、変更された、新たな、又は削除されたユニットを含むことができる。変更されたモデル・ユニットは、ソース及びターゲット・モデルの両方に存在するが、異なるパラメータ又はサブタイプを有するユニットであり、例えば、ソース・トポロジ・サブタイプの仮想イメージは、ターゲット・トポロジ・サブタイプの仮想イメージとは異なる。パラメータの相違は、ミドルウェアのバージョンを含むことができる。新たなモデル・ユニットは、ソース・トポロジに存在しなかったがターゲット・トポロジに追加された当該ユニットである（例えば、ソリューションをソース・クラウドに展開するためには必要なかったが、ソリューションをターゲット・クラウドに展開するには必要なトポロジ・モデルなど）。除去されたモデル・ユニットは、ソース・トポロジにはあったが、ターゲット・トポロジに存在しなかったものである。ステップ６６０にて、特定された変更されたユニット及び新たなユニットに対応する自動化ステップ・モデルを求めて、アセット・ライブラリ５００が検索される。ステップ６６０において発見される自動化ステップ・モデルは、アセット・ライブラリ５００に記憶されている自動化ステップ・モデルである。例えば、新たな又は変更されたモデル・ユニットが特定された場合、特定された新たな又は変更されたモデル・ユニットに対応し、アセット・ライブラリに記憶されている別のトポロジが、既に存在することもある。さらに、あるモデル・ユニットが最初に生じたときに、その生じたモデル・ユニットの自動化ステップ・モデルが、ステップ６６０の動作時に発見されるよう、開発されてアセット・ライブラリ５００に記憶されることができる。
【０１３３】
ステップ６７０にて、ターゲット・クラウド５９０の展開ワークフロー６７５が、ステップ６６０において特定された自動化ステップ・モデル（新たな／変更されたモデル・ユニットに関する）と、ステップ６２５においてソース・クラウドの展開ワークフローを生成するために使用されたステップの一部（変更がないモデル・ユニットに関する）とを使用して生成される。なお、除去されたユニットの展開動作は、ソース・ワークフロー・モデルから削除される。ステップ６８０にて、展開ワークフロー６７５及び６２８が、展開エンジン６９０によって実行され、その結果、ソース・クラウド５８０におけるソリューションの実行中のインスタンス５８２及びターゲット・クラウド５９０におけるソリューションの実行中のインスタンス５９２が得られる。一実施形態では、展開ワークフローの実行は、ワークフロー・モデルに含まれる動作を展開エンジン６９０に送ることによって実行される。
【０１３４】
展開エンジン６９０は、６７０における生成ステップを実行するのと同じコンピュータ・システム上のソフトウェア・プロセスであってもよく、コンピュータ・ネットワークを介して接続されている別のコンピュータ・システム上でもよい。同じコンピュータ・システムが使用される場合、動作は、内部動作を使用して送られるとよい（例えば、サブルーチン呼び出しによって、展開動作を処理するインライン・コードの実行によって、外部プログラム呼び出しによってなど）。別のコンピュータ・システムが使用される場合、動作は、プライベート・コンピュータ・ネットワーク（例えばＬＡＮ）若しくはパブリック・ネットワーク（例えばインターネット、公衆交換電話網（ＰＳＴＮ）など）、又はその両方などのネットワークを介して送ることにより、別のコンピュータ・システムに送られるとよい。１つの展開エンジンが示されているが、種々の展開エンジンを使用可能である。実施形態では、自動化ステップ・モデルは、様々なモデル・ユニットの展開を自動化するために使用されるステップの一般的表現を提供する一方、生成される展開ワークフロー（６２８及び６７５）は、展開エンジン６９０によって読み取り及び処理されるよう設計された機能的記述情報（例えばスクリプトなど）を含む。
【０１３５】
図７は、クラウド環境に展開される例示の展開ワークフローを作成するために使用される自動化ステップ・モデルの実施形態を示す図である。トポロジ・モデル７００は、トポロジ・モデル・ユニットを含む。自動化ステップ・モデル７１０は、トポロジ・モデル・ユニットの一部に対応する。展開ワークフロー７２０は、自動化ステップ・モデル７１０から生成され、ソリューションを展開するためのいくつかの動作を提供する。図７は、パブリック・ターゲット・クラウド７６０及びプライベート・ターゲット・クラウド７８０を含むハイブリッド・ソリューションの例を示す。パブリック・ターゲット・クラウド機能の例は、インターネットなどのネットワークから公衆アクセス可能な顧客フロントエンド運用とされ得るであろう。プライベート・ターゲット・クラウド機能の例は、データベース及びＬＤＡＰ（Ｌｉｇｈｔｗｅｉｇｈｔ  Ｄｉｒｅｃｔｏｒｙ  Ａｃｃｅｓｓ  Ｐｒｏｔｏｃｏｌ：ライトウェイト・ディレクトリ・アクセス・プロトコル）動作を処理するバックエンド・サーバ運用とされ得るであろう。
【０１３６】
示されている例では、展開ワークフローは、動作７２５〜７５０を含む。動作７２５は、特定のマシン・イメージをパブリック・ターゲット・クラウド７６０及びプライベート・ターゲット・クラウド７８０にインスタンス化する。この結果、ゲストＯＳを備えるクラウド・マシン・イメージ７６８がパブリック・ターゲット・クラウド７６０上でインスタンス化される。実施形態において、動作７２５はさらに、クラウド・マシン・イメージ７８２をプライベート・ターゲット・クラウド７８０上でインスタンス化し、実施形態では、クラウド・マシン・イメージ７８２は、複数のパブリック・ターゲット・クラウドによって利用される共通バックエンド・サーバである。プライベート・ターゲット・クラウド７８０上でインスタンス化され実行されているクラウド・マシン・イメージ７８２は、ゲスト・オペレーティング・システム７８４を含み、これは、パブリック・ターゲット・クラウド上で実行されているオペレーティング・システムとは異なるオペレーティング・システムであってもよい。クラウド・マシン・イメージ７８２はさらに、データベース・サーバ７８６（例えばＩＢＭ  ＤＢ２（ＴＭ）データベース・サーバなど）を含んでもよく、その下でデータベース・アプリケーションが動作する。クラウド・マシン・イメージ７８２はさらに、ＬＤＡＰ（ライトウェイト・ディレクトリ・アクセス・プロトコル）サーバ７８８を含んでもよく、その下でＬＤＡＰアプリケーションが動作する。
【０１３７】
動作７３０は、ＩＢＭ  Ｗｅｂｓｐｈｅｒｅ（Ｒ）ｓＭａｓｈ（ＴＭ）ミドルウェア・アプリケーションなどのミドルウェア・アプリケーションを、パブリック・ターゲット・クラウド上でインスタンス化されたイメージ上にインストールする。この結果、アプリケーション・サーバ７７２が、ゲストＯＳを備えるクラウド・マシン・イメージ７６８上で実行される。さらに、動作７３０は、アプリケーション・サーバ上で実行されるプラットフォーム独立アプリケーション７７４をインストールできる。図のように、ゲストＯＳを備えるクラウド・マシン・イメージ７６８は、ＩＰテーブル・ルール及びＶＰＮ構成７７０を含み、パブリック・ターゲット・クラウドは、クラウドのエラスティックＩＰアドレス７６２、クラウドのセキュリティ・グループ７６４、及びクラウドのエラスティック・ブロック・ストレージ７６６を含む。１つのクラウド環境において、動作７３５が、エラスティックＩＰアドレスを構成するために実行され、その結果、クラウドのエラスティックＩＰアドレス７６２が構成される。このクラウド環境において、動作７４０が、クラウドのセキュリティ・グループ７６４を構成するために実行され、動作７４５が、クラウドのエラスティック・ブロック・ストレージ７６６を構成するために実行される。動作７５０が、ＶＰＮ（仮想プライベート・ネットワーク）を構成するために実行される。動作７５０の結果、インスタンス化されたイメージ７６８において実行されておりパブリック・ターゲット・クラウド７６０及びプライベート・ターゲット・クラウド７８０の間の仮想プライベート・ネットワークをセットアップする、ＩＰテーブル・ルール及びＶＰＮ構成７７０が更新される。
【０１３８】
図８は、実施形態による、トポロジ・モデルを作成するためにとられるステップを示すフローチャートである。処理が８００にて開始すると、ステップ８０２にて、Ｊａｖａ仮想マシンなどのミドルウェア・ユニットが選択される（例えば、ＩＢＭ  ＷｅｂＳｐｈｅｒｅ（Ｒ）ｓＭａｓｈアプリケーションなど）。ミドルウェア・ユニットは、一般にプラットフォーム依存である。トポロジ・モデル８０４は、仮想アプライアンス８０６を含み、その中に、選択されたミドルウェア・ランタイム環境８１０が置かれる。Ｊａｖａアプリケーションなどのプラットフォーム独立アプリケーション８０８も、選択されて、ミドルウェア・ランタイム環境８１０に関連付けられる。ステップ８０５にて、クラウド特有ベース仮想イメージに関するトポロジ・モデル・ユニットが追加される。次に、マシン・イメージ８１２が仮想アプライアンス８０６に含められる。この例では、マシン・イメージ８１２は、ゲスト・オペレーティング・システム８１４（例えばＬｉｎｕｘ（Ｒ）オペレーティング・システムなど）、サーバ・ソフトウェア８１６、及びクラウド・イメージ・インスタンス８１８を含む。
【０１３９】
クラウドと互換性がある既存の仮想イメージのメタデータが、そのクラウドに関する１つ以上のクラウド特有イメージ・ライブラリにおいて発見されることもある。そのようなメタデータは、既存の仮想イメージにプレインストールされているソフトウェア・コンポーネントの記述を含み得る。ターゲット・トポロジ・モデル内の、仮想アプライアンス・ユニット及びその含まれているユニット内のメタデータは、ソリューションの必須のソフトウェア・コンポーネントを記述していることもあり、これはクラウド特有ベース仮想イメージにプレインストールされていることが分かることもある。仮想アプライアンス・ユニット内のメタデータは、ソリューションをターゲット・クラウドに展開するのに適したベース仮想イメージを発見するために、イメージ・ライブラリ内でメタデータを検索するために使用され得る。検索の結果として特定された仮想イメージが、必須のソフトウェア・コンポーネントすべて、又は必須のソフトウェア・コンポーネントの適切なバージョンを含まない場合、最も近い一致のベース仮想イメージが判断されるとよい。続いて、そのような最も近い一致のベース仮想イメージが、展開ワークフローの一部として、仮想イメージ内のソフトウェア・コンポーネントの追加、更新、又は除去によって改善されるとよい。
【０１４０】
実施形態では、ステップ８２０において、エラスティックＩＰアドレス、ボリューム情報、セキュリティ・グループ・セッティング、及び同様のものなどのクラウド特有構成セッティング８２２及び８２４が追加される。ステップ８２６にて、アプリケーション・サーバ（ミドルウェア・ランタイム環境８１０）が、アプリケーション・ユニット（プラットフォーム独立アプリケーション８０８）にリンクされる。ステップ８２８にて、オペレーティング・システム特有構成セッティングが、追加されて、ゲスト・オペレーティング・システム８１４に関連付けられる。これらのオペレーティング・システム特有構成セッティングは、ＨＴＴＰセッティング、ネットワーク・セッティング、ファイアウォール・セッティングなどを含むことができる。ステップ８３２にて、クラウド・ベースの仮想アプライアンスから外部提供されるデータベース・サービス及びＬＤＡＰサービスなどの必須のアプリケーション・サービスをホストする、ターゲット・クラウドの１つ以上の仮想アプライアンス（外部サービス・ユニット８３４）が追加される。ステップ８３６にて、アプリケーション通信リンクが、アプリケーション・ユニット（アプリケーション８０８）と、ステップ８３２にて追加された必須の外部サービスとの間に構成される。ステップ８３８にて、種々のモデル・ユニット間の展開順序制約が指定される。ステップ８３８は、ソリューションの展開に使用される自動化ステップの順序付けを可能にする。ステップ８４０にて、トポロジ・モデル・ユニットすべて及び指定された展開順序を含むトポロジ・モデル８０４が、アセット・ライブラリ５００に記憶される。実施形態では、アセット・ライブラリ５００は、アセット・マネージャ・ソフトウェア・アプリケーション８５０によって管理される。所定のプロセス８６０にて、記憶されたトポロジ・モデル及び指定された展開ステップが、自動化モデルを作成するために使用され、これもアセット・ライブラリ５００に記憶される（自動化モデルの作成に関する処理の詳細については図９及び対応する文章を参照されたい）。
【０１４１】
図９は、実施形態による、自動化ステップ・モデルを作成するためにとられるステップを示すフローチャートである。処理は、ソリューションをターゲット・クラウドに展開するために使用される様々な自動化ステップ・モデル９１０を作成する。処理が９００にて開始すると、ステップ９０５にて、自動化ステップ・モデル９１５が作成される。自動化ステップ・モデル９１５は、ターゲット・クラウド内に、セキュリティ・グループなどを確立するクラウド特有構成を展開するための動作９２０を含む。ステップ９２５にて、アプリケーション・サーバ（ミドルウェア・ランタイム環境）及びプラットフォーム独立ソフトウェア・アプリケーションに関するパラメータを含む、アプリケーションをインストールするための自動化ステップ・モデル９３０が作成される。自動化ステップ・モデル９３０は、プラットフォーム独立アプリケーション（例えばＪａｖａ  ｓＭａｓｈアプリケーションなど）をインストールするために使用される動作９３５、及びミドルウェア・ランタイム環境を構成するために使用される動作９４０を含む。ステップ９４５にて、イメージをターゲット・クラウド上でインスタンス化する自動化ステップ・モデル９５０が作成される。自動化ステップ・モデル９５０は、特定のイメージをターゲット・クラウド上でインスタンス化するために使用される動作９５５を含む。ステップ９６０にて、アセット・マネージャ・アプリケーション・ソフトウェア８５０によって管理されているように示されているアセット・ライブラリ５００に、自動化ステップ・モデル９１０が記憶される。所定のプロセス９７０にて、入力パラメータ指定が提供され、ターゲット・トポロジとともにアセット・ライブラリに記憶される（処理の詳細については図１０及び対応する文章を参照されたい）。
【０１４２】
図１０は、実施形態による、入力パラメータを指定してトポロジ・モデル内に記憶するためにとられるステップを示すフローチャートである。図１０には、図８で紹介されたトポロジ・モデル８０４が示されている。図１０では、１０００にて処理が開始すると、ステップ１０１０にて、展開モデル・ユニットが、コンポーネントにバインドされる。例えば、展開可能なプラットフォーム独立バイナリを含むアセット・ライブラリ内の特定の圧縮ファイル・アセットが、トポロジ・モデル内のアプリケーション・ユニットにバインドされる。アプリケーション８０８は、プロパティ及びパラメータ１０２０を含み、そこに例えば指定の圧縮ファイル（「ｚｉｐ」ファイル）が構成されていると考えられる。ステップ１０３０にて、構成パラメータの、おそらくすべてではないが一部が、トポロジ・モデル・ユニットに関して指定される。例えば、アプリケーションのＨＴＴＰポート、ｚｉｐファイル名、及びＵＲＬが指定され得るであろう。ステップ１０４０にて、部分的に指定されたパターンが、再使用可能なアセットとしてアセット・ライブラリ５００において共有される。所定のプロセス１０５０にて、インスタンス（単数又は複数）が完全に指定され、ターゲット・プラットフォームに展開される（処理の詳細については図１１及び対応する文章を参照されたい）。
【０１４３】
図１１は、実施形態による、クラウド・ベースのアプリケーションの実行中のインスタンスを完全に指定して展開するためにとられるステップを示すフローチャートである。図１１に示されているフローチャートはさらに、指定中に小規模な構成変更をすることによる、マルチテナンシのための複数のインスタンスの展開を示す。処理が１１００にて開始すると、ステップ１１０５にて、トポロジ・モデル・ユニット内のパラメータが完全に指定され、トポロジ・モデル８０４に記憶される。一部のトポロジ・モデル・ユニットは、トポロジ・モデル・ユニットを展開するために使用される動作を記述する自動化ステップ・モデル９１０に関連する。ステップ１１１０にて、展開動作の順序付けられたシーケンスが生成され、自動化ワークフロー・モデル１１１５内に記憶される。実施形態では、自動化ワークフロー・モデルは、トポロジ・モデル・ユニットを展開するために使用される動作の一般的表現である。ステップ１１２０にて、展開ワークフロー１１２５が、自動化ワークフロー・モデル１１１５から生成される。実施形態では、展開ワークフロー１１２５は、特定の展開エンジン１１３５によって実行可能なフォーマットの、動作の非一般的表現である。このように、ステップ１１２０が実行されて、種々の展開エンジンで動作する種々の展開ワークフローを提供することが可能である。
【０１４４】
ステップ１１３０にて、展開エンジン１１３５が、展開ワークフロー１１２５を実行し、１つ以上のターゲット・クラウド１１４０上で実行されるクラウド・ベースのアプリケーションの１つ以上の実行中のインスタンス（インスタンス１１５０及び１１５５）を作成する。ステップ１１６０にて、実行中のインスタンスが観測及びテストされて、クラウド・ベースのソリューションが適切に実行されていることが確認される。モデル・ユニットにおいて指定されているパラメータに対する変更が必要かどうかについて、判断が下される（決定１１７０）。変更が必要であれば、決定１１７０は「はい」の分岐に進み、その後ステップ１１７５にてインスタンスのパラメータが編集され、処理は、ループを戻り、ワークフロー・モデル、展開ワークフローを再生成して、展開エンジンによって展開ワークフローを再実行する。このループは、さらなる変更が必要なくなるまで続き、その後決定１１７０が「いいえ」の分岐へ進む。なお、当該パラメータが、ユーザ入力によって再展開の前に変更可能である入力パラメータとして指定されている場合、ワークフロー・モデルを再生成する必要はないこともある。アプリケーション（クラウド・ベースのソリューション）の複数のインスタンスがターゲット・クラウド（又は複数のターゲット・クラウド）において作成されるかどうかについて、判断が下される。アプリケーションの複数のインスタンスが作成される場合、決定１１８０は、「はい」の分岐に進み、その後ステップ１１８５にて、次のインスタンスを作成するために少数のワークフロー・パラメータが変更され、処理は、ループを戻り、別のワークフロー・モデル及び別の展開ワークフローを生成し、展開エンジンを使用して新たな展開ワークフローを実行する。例えば、マルチテナント・ソリューションにおける新たなテナントに関して、新たなインスタンスが展開される必要があることもある。実施形態では、マルチテナンシは、複数のクライアント間でプラットフォーム（例えばクラウド、ハイパーバイザ）を共有する能力である。別の例では、様々なワークロードにおいて異なるパフォーマンス又はセキュリティ要件を満たすために、ソリューションの新たなインスタンス（単数又は複数）が必要とされることもある。このループは、アプリケーションのインスタンスがそれ以上求められなくなるまで続き、求められなくなった時点で、決定１１８０は「いいえ」の分岐に進み、処理は１１９５にて終了する。
【０１４５】
図１２は、実施形態による、アセット・ライブラリに記憶されているアセットを再使用し、再使用されたアセットを使用してターゲット・クラウド環境にソリューションを展開するためにとられるステップを示すフローチャートである。処理が１２００にて開始すると、ステップ１２１０にて、処理は、ソリューションを特定のターゲット・クラウド又はハイパーバイザにポーティングするリクエストを受け取る。所定のプロセス１２２０にて、リクエストに最も近い既存のトポロジ及びトポロジ・モデル・ユニットが、アセット・ライブラリ５００において発見される。所定のプロセス１２２０は、クラウド特有モデル・ユニットを置換し、新たなトポロジ及び新たなモデル・ユニットをアセット・ライブラリ５００に記憶することを含む。所定のプロセス１２２０に関する処理の詳細については、図１３及び対応する文章を参照されたい。ステップ１２３０にて、ターゲット・トポロジ・モデル内の構成パラメータが完全に指定され、アセット・ライブラリ５００に記憶される。所定のプロセス１２４０にて、置換又は追加されたクラウド特有モデル・ユニットに対応する自動化ステップ・モデルが、アセット・ライブラリ５００において発見される。さらに、所定のプロセス１２４０にて、ターゲット・クラウド特有トポロジ・モデル・ユニットに対応する自動化ステップ・モデルが、アセット・ライブラリ５００内で発見され、自動化ステップ・モデルがアセット・ライブラリ５００内に記憶される。
【０１４６】
自動化ステップ・モデルは、トポロジ・モデル・ユニットをターゲット・クラウドに展開するために使用される。所定のプロセス１２４０に関する処理の詳細については、図１４及び対応する文章を参照されたい。所定のプロセス１２５０にて、自動化ステップ・モデルに基づき展開ワークフローが生成される（処理の詳細については図１５及び対応する文章を、複合ソリューションの展開に関する詳細については図１６及び対応する文章を参照されたい）。展開の結果は、既存のクラウド・ベースのソリューションのインスタンス１２６５を備えるソース・クラウド１２６０、及びクラウド・ベースのソリューションの新たなインスタンス１２７５を備えるターゲット・クラウド１２７０である。実施形態では、ソース及びターゲット両方のクラウドが、インターネットなどのコンピュータ・ネットワーク２００からアクセス可能である。したがって、例えば、各インスタンスは、例えばクライアント・ベースのウェブ・ブラウジング・ソフトウェアを使用することなどによってコンピュータ・ネットワーク上でクライアントによってアクセス可能な、ウェブ・ベースのアプリケーションのインスタンスを提供できる。
【０１４７】
図１３は、実施形態による、リクエストに一致する既存のトポロジ・ユニットを発見し、クラウド特有モデル・ユニットを置換し、アセット・ライブラリに新たなモデル・ユニット及び変更されたモデル・ユニットを記憶するためにとられるステップを示すフローチャートである。図１３は、図１２に示されている所定のプロセス１２２０により呼び出される。図１３に示されている処理が１３００にて開始すると、ステップ１３２０にて、新たなクラウド・ベースのソリューションの要件がユーザ１３１０から受け取られる。ステップ１３２５にて、ユーザによって提供された要件にある程度一致する既存のトポロジ・モデルを発見するために、アセット・ライブラリ５００に記憶されている既存のトポロジ・モデルのメタデータが検索される。実施形態では、前に計算された相違が、アセット・ライブラリ５００からパッチとして読み出されることが可能であると考えられ、ターゲット・トポロジ・モデルを作成するために既存のソース・トポロジ・モデルに適用されることが可能である。ユーザの要件に一致する任意の既存のトポロジ・モデルがアセット・ライブラリにおいて発見されたかどうかについて、判断が下される（決定１３３０）。ユーザの要件に一致するトポロジ・モデルが現在アセット・ライブラリに存在しなければ、決定１３３０は「いいえ」の分岐に進み、その後、所定のプロセス１３３５にて、新たなトポロジ・モデルが作成される（新たなトポロジ・モデルを作成する例については、例えば図８及び対応する文章を参照されたい）。
【０１４８】
他方、ユーザの要件に一致する１つ以上のトポロジ・モデルが発見された場合、決定１３３０は「はい」の分岐に進み、その後ステップ１３４０にて、ユーザの要件に最も近く一致する、アセット・ライブラリにおいて発見された既存のトポロジ・モデルがコピーされる。ステップ１３５０にて、新たなトポロジ・モデルがアセット・ライブラリに記憶される（所定のプロセス１３３５において作成された、新たに作成されたトポロジ・モデル、又はステップ１３４０にてコピーされた既存のトポロジ・モデルのいずれか）。
【０１４９】
トポロジ・モデル・ユニットに変更が必要かどうかについて、判断が下される（決定１３６０）。例えば、トポロジ・モデルがステップ１３４０にてコピーされた場合、新たなターゲット・トポロジ・モデルは、コピーされたトポロジ・モデルがユーザによって指定された要件に正確に一致しなければ、変更が必要かもしれない。１つ以上のトポロジ・モデル・ユニットが変更を必要とする場合、決定１３６０は「はい」の分岐に進み、その後ステップ１３７０にて、変更を必要とするトポロジ・モデル・ユニットが、ターゲット・トポロジ・モデルから読み出され、ユーザの要件に合うよう変更される。ステップ１３８０にて、変更されたトポロジ・モデル・ユニットが、アセット・ライブラリ５００内のターゲット・トポロジ・モデルに記憶される。決定１３６０に戻り、トポロジ・モデル・ユニットが変更を必要としない場合、決定１３６０は「いいえ」の分岐に進み、ステップ１３７０及び１３８０をバイパスする。ステップ１３９０にて、ターゲット・クラウドのクラウド特有モデル・ユニットの置換が行われる。処理は続いて、１３９５にて、呼び出し側のルーチン（図１２参照）に戻る。
【０１５０】
図１４は、実施形態による、展開ワークフロー・モデルを生成するためにとられるステップを示すフローチャートである。図１４は、図１２に示されている所定のプロセス１２４０により呼び出される。図１４に示されている処理が１４００にて開始すると、ステップ１４１０にて、ソリューションをターゲット・クラウド上に展開するために使用される、第１の変更された又は新たなトポロジ・モデル・ユニットが特定される。なお、変更されなかったソース・トポロジ・モデル・ユニットは、その変更のないトポロジ・モデル・ユニットに既に関連している自動化ステップ・モデルが使用され得るため、特定される必要はない。なお、ソース・トポロジ・モデルから任意のモデル・ユニットが除去されると、対応する展開動作も、ターゲット・ワークフロー・モデルから除去されるとよい。なお、さらに、実施形態では、複数のトポロジ・モデル・ユニットが、自動化ステップ・モデル（ＡＳＭ：ａｕｔｏｍａｔｉｏｎ  ｓｔｅｐ  ｍｏｄｅｌ）と関連することが可能である。複数のトポロジ・モデル・ユニットが、自動化ステップ・モデルと関連する場合、そのユニットすべてがターゲット・トポロジ・モデルに存在するかどうかについて確認され得る。ステップ１４２０にて、ターゲット・クラウドに関連する自動化ステップ・モデルを求めてアセット・ライブラリ５００が検索される。
【０１５１】
任意の一致する自動化ステップ・モデルがアセット・ライブラリにおいて発見されたかどうかについて、判断が下される（決定１４３０）。一致する自動化ステップ・モデルが発見されなかった場合、決定１４３０は、「いいえ」の分岐に進み、その後ステップ１４５０にて、新たな自動化ステップ・モデルがターゲット・クラウドに関して作成される。他方、一致する自動化ステップ・モデルが発見された場合、決定１４３０は、「はい」の分岐に進み、その後、発見された自動化ステップ・モデルが使用される。ステップ１４５０にて、自動化ステップ・モデル（検索によって発見されたか、又はステップ１４４０において作成されたかのいずれか）が、特定された新たな又は変更されたトポロジ・モデル・ユニットに関連付けられる。処理するべき変更された又は新たなトポロジ・モデル・ユニットがさらにあるかどうかについて、判断が下される（決定１４６０）。処理するべき変更された又は新たなトポロジ・モデル・ユニットがさらにあれば、決定１４６０は、「はい」の分岐に進み、ループを戻り、上記のように、次の変更された又は新たなトポロジ・モデル・ユニットを特定してそれを自動化ステップ・モデルと関連付ける。なお、変更されたモデル・ユニットに関して、ターゲット・クラウドの類似の自動化ステップ・モデルを発見するために、ソース・クラウドにおいて使用された自動化ステップ・モデル名が検索において使用されることが可能である。このループは、処理するべき変更された又は新たなトポロジ・モデル・ユニットがそれ以上なくなるまで続き、なくなった時点で、決定１４６０は、「いいえ」の分岐に進む。
【０１５２】
ステップ１４７０にて、ターゲット・クラウドの展開ワークフロー・モデル１４８０が生成される。ワークフロー・モデルは、特定された新たな又は変更されたトポロジ・モデル・ユニットに関連する発見又は新たに作成された自動化ステップ・モデルと、ソリューションをターゲット・クラウドにポーティングするために変更されなかった、ソース・トポロジ・モデル内のトポロジ・モデル・ユニットに既に関連している自動化ステップ・モデルとを使用して生成される。処理は続いて、１４９５にて、呼び出し側のルーチン（図１２参照）に戻る。
【０１５３】
図１５は、実施形態による、展開ワークフローをモデルから生成し、展開エンジンを使用して展開するためにとられるステップを示すフローチャートである。図１５は、図１２に示されている所定のプロセス１２５０により呼び出される。図１５に示されている処理は、１５００にて開始し、その後ステップ１５１０にて、ソリューションをターゲット・クラウドに展開するために使用される展開エンジンが、展開エンジン・データ・ストア１５１５から選択される。一部のターゲット・クラウドは特定の展開エンジンを使用し得るが、他の汎用展開エンジンも、ソリューションをターゲット・クラウドに展開するために使用可能である。各展開エンジンは、異なる処理能力及び特徴を有することもあり、それによって、ソリューションの特定のターゲット・クラウドへの展開に関して、特定の展開エンジンが魅力的となることもある。ステップ１５２０にて、第１展開動作（単数又は複数）が、図１４において生成された展開ワークフロー・モデル１４８０から選択される。
【０１５４】
各自動化ステップ・モデルは、複数の展開動作を含むことができる。これらの展開動作は、ワークフロー・モデルにおいて連続して順序付けられている。展開動作はさらに、展開エンジンに特有である。その結果、各展開動作は、展開エンジン特有ステップを生成するために使用される。ステップ１５２０は、選択された展開エンジンによって実行可能な、１つ以上の展開エンジン１５１５特有ステップを生成する。生成された展開エンジン特有ステップは、第１展開ステップ１５３１、第２展開ステップ１５３２などとして、最終展開ステップ１５３４まで、展開ワークフロー１５３０に記憶される。処理するべき展開動作がさらにあるかどうかについて判断が下される（決定１５４０）。処理するべきステップ・モデルがさらにあれば、決定１５４０は「はい」の分岐に進み、ループを戻り、ステップ１５２０にて、上記のように展開ワークフロー・モデル１４８０から次の自動化ステップ・モデルを選択して展開エンジン特有ステップを生成する。このループは、処理するべき展開動作がそれ以上なくなるまで続き、なくなった時点で、決定１５４０は「いいえ」の分岐に進み、その後、展開ワークフロー１５３０を処理するために、選択された展開エンジン１５５０が呼び出される。展開ワークフロー１５３０は、展開動作を含み、呼び出しの前に、選択された展開エンジン１５５０に送られる。
【０１５５】
展開エンジン処理は、展開ワークフロー１５３０に含まれる第１展開ステップ（ステップ１５３１）を実行することによって開始する。第１展開ステップの実行の結果、ターゲット・プラットフォーム（ターゲット・クラウド１２７０）にソリューションの一部分が展開される。処理するべき展開ステップがさらにあるかどうかについて、展開エンジン１５１５のうちの１つによって判断が下される（決定１５７０）。処理するべき展開ステップがさらにあれば、決定１５７０は、「はい」の分岐に進み、ループを戻り、展開ワークフロー１５３０から次のステップ（例えば第２展開ステップ１５３２）を選択して実行し、その結果、ソリューションがターゲット・プラットフォームにさらに展開される。このループは、最終展開ステップ（最終展開ステップ１５３４）がステップ１５６０にて処理されるまで続き、処理された時点で、決定１５７０が「いいえ」の分岐に進み、１５９５にて処理が戻る。展開ステップがすべて実行された結果は、ターゲット・プラットフォーム（ターゲット・クラウド１２７０）上で実行される新たなクラウド・ベースのソリューション１２７５である。
【０１５６】
図１６は、実施形態による、展開ワークフローをモデルから生成し、複合ソリューションを複数のクラウド・ベースの環境に展開するためにとられるステップを示すフローチャートである。各ステップは、図１５において示され記載されたものと同じであるが、図１６では、展開ステップの結果、ソリューションが２つのターゲット・プラットフォーム（第１ターゲット・クラウド１６１０及び第２ターゲット・クラウド１６３０）に展開され、その結果、複合ソリューション１６００が得られる。ターゲット・クラウドはそれぞれ、ソリューションの仮想部分をホストする（第１ターゲット・クラウド１６１０によってホストされる仮想部分１６２０及び第２ターゲット・クラウド１６３０によってホストされる仮想部分１６４０）。さらに、展開ワークフロー１５３０に含まれる展開ステップのうちの１つ以上は、仮想部分１６２０と、仮想部分１６４０との間に通信リンク１６５０を確立する。通信リンク１６５０は、仮想プライベート・ネットワーク（ＶＰＮ）上で確立可能である。２つのクラウド及び仮想部分が複合ソリューション１６００に示されているが、複合ソリューションには、任意の数のターゲット・クラウド及び仮想部分が含まれることが可能であり、任意の数の仮想部分間に通信リンクが確立される。
【０１５７】
実施形態では、ターゲット・クラウド又はハイパーバイザのソリューションは、モデル駆動手法を使用して再構築され得、これは、ｉ）イメージ・コンテンツのコピー、及びｉｉ）仮想イメージ・コンテンツの統一されたディスク・ファイル・フォーマットでの表現を避けるとよい。実施形態は、互換性のないハードウェア・アーキテクチャ、ハイパーバイザ技術、タイプ、及びゲストＯＳのバージョンを備える、種々のクラウド（又はハイパーバイザ）プロバイダ間でソリューションがポーティングされることを可能にし得る。実施形態はさらに、クラウド特有（又はハイパーバイザ特有）構成が、ポーティング中に追加されることを可能にし得る。実施形態はさらに、ハイブリッド・クラウド向けの複合ソリューション内に、部分的にポーティングされることが可能な仮想イメージ部分を含めることを可能にし得る。
【０１５８】
実施形態において、ソース・プラットフォームに関連するソース・トポロジ・モデルと、ターゲット・プラットフォームに関連するターゲット・トポロジ・モデルとの相違を求めることの結果として、トポロジ相違が得られ、これは、Ｅｃｌｉｐｓｅ  Ｍｏｄｅｌｉｎｇ  Ｆｒａｍｅｗｏｒｋ（ＥＭＦ）Ｃｏｍｐａｒｅプロジェクトなどのツールを使用して取得若しくはパッチとしての記憶、又はその両方を行われ得る。実施形態では、相違を求めることの一部分は、１つ以上のプロセッサから選択されるとよい少なくとも１つのプロセッサによって実行される。実施形態では、トポロジ・モデル・ユニットは、Ｅｃｌｉｐｓｅ上のＲａｔｉｏｎａｌ（ＩＢＭ社の登録商標）Ｓｏｆｔｗａｒｅ  Ａｒｃｈｉｔｅｃｔを使用して構築若しくは視覚化又はその両方を行われてもよい。実施形態では、自動化ステップ・モデルは、Ｅｃｌｉｐｓｅ上のＲａｔｉｏｎａｌ  Ｓｏｆｔｗａｒｅ  Ａｒｃｈｉｔｅｃｔを使用して構築若しくは視覚化又はその両方を行われてもよい。Ｒａｔｉｏｎａｌ  Ｓｏｆｔｗａｒｅ  Ａｒｃｈｉｔｅｃｔは、モデル・データをＸＭＬフォーマットで記憶する。ＸＭＬは、仮想アプライアンス、ミドルウェア、仮想イメージ、ゲスト・オペレーティング・システム、クラウド特有構成、アプリケーション・レベル通信リンク、及び同様のものなどの種々のモデル・ユニットの種々のセクションを含む。各ＸＭＬセクションは、ソフトウェア・バージョン及びタイプなど、複数の展開パラメータを含むことができる。仮想アプライアンス・セクションのパラメータは、ターゲット・クラウドに対し互換性のある仮想イメージを発見するために、アセット・ライブラリの検索において入力として使用可能である。
【０１５９】
実施形態では、アセット・ライブラリからの、ワークフロー・モデル内の動作の取得は、展開動作を含む自動化ステップ・モデルが記憶され得るＲａｔｉｏｎａｌ  Ａｓｓｅｔ  Ｍａｎａｇｅｒを検索することによって取得されてもよい。検索は、自動化ステップ・モデルに関連するトポロジ・モデル・ユニットのメタデータを入力として使用してもよい。実施形態では、アセット・ライブラリの一部分が、永続ストレージ媒体に記憶されてもよい。実施形態では、アセット・ライブラリの一部分を含むアセット・ライブラリ全体が、永続ストレージ媒体に記憶されてもよい。
【０１６０】
実施形態では、ターゲット・プラットフォームと互換性があるターゲット・イメージを含むソリューションの一部分を展開する動作の実行は、Ｔｉｖｏｌｉ（ＩＢＭ社の登録商標）Ｐｒｏｖｉｓｉｏｎｉｎｇ  Ｍａｎａｇｅｒを展開エンジンとして使用して実行されてもよい。実施形態では、Ｔｉｖｏｌｉ  Ｐｒｏｖｉｓｉｏｎｉｎｇ  Ｍａｎａｇｅｒは、ソリューションの種々の部分を種々のクラウド又はハイパーバイザに展開するワークフローを実行し得る。
【０１６１】
ソリューションをソース・プラットフォームからターゲット・プラットフォームにポーティングする方法、コンピュータ・プログラム製品、及びシステムの実施形態が開示される。ソース・トポロジ・モデル内の一組のモデル・ユニットと、ターゲット・トポロジ・モデル内の一組のモデル・ユニットとの間の相違が判断される。ソース・トポロジ・モデルは、ソース・プラットフォームに関連し、ターゲット・トポロジ・モデルは、ターゲット・プラットフォームに関連する。ワークフロー・モデル内の動作は、その、ソース・トポロジ・モデルの一組のモデル・ユニット及びターゲット・トポロジ・モデルの一組のモデル・ユニット間の判断された相違との関連に基づいて、アセット・ライブラリから取得される。動作は送られる。動作は、ターゲット・プラットフォームと互換性があるターゲット・イメージを含むソリューションの少なくとも一部分を展開するよう構成される。そのような実施形態は、異なるハードウェア・アーキテクチャ、仮想イメージ・フォーマット、及びプログラミング・インターフェイスをサポートする、異なるインフラストラクチャのクラウド又はハイパーバイザ間でソリューションをポーティングするために使用され得る。そのような実施形態はさらに、共通のソリューション・コンポーネント、構成パラメータ、及び展開自動化動作を、ソリューションのポーティング時に再使用するために使用され得る。
【０１６２】
さらなる開示された実施形態によれば、ソース・プラットフォームは、第１組のハードウェア及びソフトウェア・リソースであり、ターゲット・プラットフォームは、第２組のハードウェア及びソフトウェア・リソースである。ソリューションの少なくとも一部分が、第１組のハードウェア及びソフトウェア・リソースから、第２組のハードウェア及びソフトウェア・リソースにポーティングされる。そのような実施形態は、１つのクラウド（又はハイパーバイザ又はコンピュータ・システム）から別のクラウド（又はハイパーバイザ又はコンピュータ・システム）にソリューションをポーティングするために使用され得る。
【０１６３】
開示されたさらなる実施形態によれば、ソース・プラットフォームは、一組の、プライベート・ハードウェア及びソフトウェア・リソースである。ターゲット・プラットフォームは、一組の、パブリック・ハードウェア及びソフトウェア・リソースである。そのような実施形態は、ソリューションをプライベート・クラウドからパブリック・クラウドにポーティングするために使用され得る。その他の実施形態が、ソリューションの、パブリック・クラウドからプライベート・クラウド、プライベート・クラウドからプライベート・クラウド、若しくはパブリック・クラウドからパブリック・クラウド、又はそのいずれかの組み合わせのポーティングを行うために使用され得る。
【０１６４】
開示されたさらなる実施形態によれば、ソリューションは複合ソリューションである。第２組のハードウェア及びソフトウェア・リソースは、複数組のハードウェア及びソフトウェア・リソースを含む。そのような実施形態は、ソリューションの種々の仮想部分を、ハイブリッド・クラウドを含む種々のクラウド（又はハイパーバイザ又はコンピュータ・システム）にポーティングするために使用され得る。
【０１６５】
開示されたさらなる実施形態によれば、アセット・ライブラリに記憶されているメタデータは、ターゲット・プラットフォームに関連する少なくとも１つのベース・イメージ・メタデータを求めて検索される。そのような実施形態は、ソリューションの必須のソフトウェア・コンポーネントがプレインストールされている、ターゲット・プラットフォームの互換性のあるベース仮想イメージを発見するために使用され得る。
【０１６６】
開示されたさらなる実施形態によれば、ソース・プラットフォームは、第１組の１つ以上のコンピュータ・システム上で実行されている第１ハイパーバイザである。ターゲット・プラットフォームは、第２組の１つ以上のコンピュータ・システム上で実行されている第２ハイパーバイザである。第１及び第２ハイパーバイザは、異なるタイプのハイパーバイザである。そのような実施形態は、１つのハイパーバイザ（又はコンピュータ・システム）から別のハイパーバイザ（又はコンピュータ・システム）にソリューションをポーティングするために使用され得る。
【０１６７】
開示されたさらなる実施形態によれば、判断される相違は、新たなモデル・ユニット、変更されたモデル・ユニット、又は除去されたモデル・ユニットのうちの少なくとも１つを含む。そのような実施形態は、共通のソリューション・コンポーネント、構成パラメータ、及び展開自動化動作を、ソリューションのポーティング時に再使用するために使用され得る。
【０１６８】
開示されたさらなる実施形態によれば、判断される相違は、ソース・トポロジ・モデル内の一組のモデル・ユニットの１つ以上の属性を特定すること、及び特定された属性が、ターゲット・トポロジ内の一組のモデル・ユニットの１つ以上の特定された属性と互換性がないかどうかを特定することをさらに含む。判断される相違は、ターゲット・トポロジ・モデルと比べた、ソース・トポロジ・モデルのモデル・ユニット内の互換性のない属性（タイプを含む）の特定を含んでもよい。そのような実施形態は、ソリューションのポーティング時に変更が必要なソリューション・コンポーネント、構成パラメータ、及び展開自動化動作を特定するために使用され得る。
【０１６９】
開示されたさらなる実施形態によれば、モデル・ユニットの、特定された互換性のない属性は、特定された属性に互換性がないと特定するのに応答して、分析される。モデル・ユニットの、互換性のない属性は、ソリューションをソース・プラットフォームからターゲット・プラットフォームにポーティングするために変更される。そのような実施形態は、ソリューションをポーティングするための、ソリューション・コンポーネント、構成パラメータ、及び展開自動化動作に対する変更を判断するために使用されるとよく、さらに、モデル・ユニット内の、特定された互換性のない属性に、ターゲット・プラットフォーム・トポロジ・モデルとの互換性をもたせるために使用されてもよい。
【０１７０】
開示されたさらなる実施形態によれば、特定された互換性のない属性は、ソース・トポロジ・モデルと比較して、ターゲット・トポロジにおいてモデル・ユニットが除去、追加、又は変更されているかどうかを特定する。そのような実施形態は、ソリューションのポーティング時に変更が必要なソリューション・コンポーネント、構成パラメータ、及び展開自動化動作を特定するために使用され得る。
【０１７１】
開示されたさらなる実施形態によれば、互換性のない属性の変更は、ソース・トポロジの一組のモデル・ユニットと、ターゲット・トポロジの一組のモデル・ユニットとの間の特定された非互換性を修正するために、新たなモデル・ユニットを追加すること、モデル・ユニットを更新すること、又はモデル・ユニットを除去することをさらに含む。そのような実施形態は、ソリューションをポーティングするための、ソリューション・コンポーネント、構成パラメータ、及び展開自動化動作に対する変更を判断するために使用され得る。
【０１７２】
開示されたさらなる実施形態によれば、モデル・ユニットは、トポロジ・モデルの１つ以上の属性を特定するデータを含む。そのような実施形態は、ソリューションをプラットフォームに展開するための構成及び展開パラメータを判断するために使用され得る。
【０１７３】
開示されたさらなる実施形態によれば、ソース・プラットフォームは、第１組のハードウェア・リソース及びソフトウェア・リソース上で実行されている第１ハイパーバイザである。ターゲット・プラットフォームは、第２組のハードウェア及びソフトウェア・リソース上で実行されている第２ハイパーバイザである。ソース及びターゲット・ハイパーバイザは、異なるタイプのものである。そのような実施形態は、種々のタイプのハイパーバイザと互換性がある仮想イメージ間でソリューションをポーティングするために使用され得る。
【０１７４】
ターゲット・プラットフォームに展開されるトポロジ・モデル・ユニットを取得する、方法、コンピュータ・プログラム製品、及びシステムの実施形態が提供される。アセット・ライブラリに記憶されている複数の自動化ステップ・モデルが、受け取られたトポロジ・モデル・ユニットに関連する、選択される自動化ステップ・モデルを求めて検索される。検索は、１つ以上のプロセッサによって実行される。アセット・ライブラリから１つ以上の展開動作が取得される。取得された展開動作は、選択された自動化ステップ・モデルに関連する。取得された展開動作は、トポロジ・モデル・ユニットをターゲット・プラットフォームに展開するために実行される。そのような実施形態は、ソリューションを別のプラットフォームに展開するべく、新たな又は変更されたワークフロー・モデルを構築するために使用され得る。
【０１７５】
方法、コンピュータ・プログラム製品、及びシステムの実施形態は、永続ストレージ媒体からソース・イメージ・メタデータを読み出す手法を提供する。ソース・イメージ・メタデータは、ソース・プラットフォームに関連するソース・イメージに対応する。読み出されたソース・メタデータは、ターゲット・プラットフォームに関連する１つ以上の利用可能なイメージに対応する１つ以上の利用可能なイメージ・メタデータと比較される。利用可能なイメージ・メタデータのうち、ソース・イメージ・メタデータに対し最も互換性が高い１つが、比較に基づき特定される。特定された利用可能なイメージ・メタデータに対応する利用可能なイメージが、ターゲット・プラットフォームと互換性があるターゲット・イメージとして使用される。そのような実施形態は、ソリューションの必須のソフトウェア・コンポーネントのほとんど（すべてでなくても）がプレインストールされている、ターゲット・プラットフォームの互換性のあるベース仮想イメージを発見するために使用され得る。
【０１７６】
当然のことながら、様々な代わりの実施形態がある。例えば、実施形態では、本発明は、本願明細書において説明された機能性をコンピュータ・インフラストラクチャが提供できるようにするコンピュータ・プログラム・コードを含む、コンピュータ可読／使用可能媒体を提供する。この点で、コンピュータ可読／使用可能媒体は、様々なプロセスそれぞれを実装するプログラム・コードを含む。当然のことながら、コンピュータ可読媒体又はコンピュータ使用可能媒体という用語は、プログラム・コードの任意のタイプの物理的実施形態の１つ以上を含む。特に、コンピュータ可読／使用可能媒体は、１つ以上のポータブル・ストレージ製品（例えば、コンパクト・ディスク、磁気ディスク、テープなど）上で、若しくはメモリ２８（図１）若しくはストレージ・システム３４（図１）又はその両方（例えば、固定ディスク、読み取り専用メモリ、ランダム・アクセス・メモリ、キャッシュ・メモリなど）などのコンピューティング・デバイスの１つ以上のデータ・ストレージ部分上で、若しくはネットワーク上を伝わる（例えば、プログラム・コードの有線／無線電子的配布の間に）データ信号（例えば、伝播信号）として、又はそのいずれかの組み合わせで、具現化されたプログラム・コードを含むことができる。
【０１７７】
実施形態では、加入、宣伝、若しくは手数料、又はそのいずれかの組み合わせに基づきプロセスを実行する方法が提供される。すなわち、ソリューション・インテグレータなどのサービス・プロバイダは、本願明細書に記載されるサービスの提供を提案することができるであろう。この場合、サービス・プロバイダは、１以上の顧客に対してプロセスを実行するコンピュータ・システム１２（図１）などのコンピュータ・インフラストラクチャを作成、維持、サポートなどすることができる。見返りとして、サービス・プロバイダは、加入又は手数料の取り決め又はその両方に従って顧客（単数又は複数）から支払いを受け取ること、若しくは１つ以上のサード・パーティに対する宣伝コンテンツの販売からの支払いを受け取ること、又はその両方ができる。
【０１７８】
実施形態では、本願明細書に記載された機能性を提供するための、コンピュータで実装される方法が提供される。この場合、コンピュータ・システム１２（図１）などのコンピュータ・インフラストラクチャが提供されることが可能であり、プロセスを実行するための１つ以上のシステムが取得（例えば作成、購入、使用、変更など）されてコンピュータ・インフラストラクチャに展開されることが可能である。この点で、システムの展開は、（１）コンピュータ・システム１２（図１）などのコンピューティング・デバイス上に、コンピュータ可読媒体からプログラム・コードをインストールすること、（２）１つ以上のコンピューティング・デバイスをコンピュータ・インフラストラクチャに追加すること、及び（３）コンピュータ・インフラストラクチャの１つ以上の既存のシステムの、組み込み若しくは変更又はその両方を行い、コンピュータ・インフラストラクチャがプロセスを実行できるようにすることのうちの１つ以上を含むことができる。
【０１７９】
記載された実装のうちの１つは、ソフトウェア・アプリケーション、すなわち、一組の命令（プログラム・コード）又はコード・モジュール内の他のコンピュータ・プログラム命令であり、これは、例えばコンピュータのランダム・アクセス・メモリに常駐していてもよい。機能的記述情報は、情報処理能力を有するコンピューティング・デバイスに、直接、又は（ａ）別の言語、コード若しくは表記法への変換、若しくは（ｂ）異なる有形形態での複製のうちのいずれか又は両方の後に、特定の機能を実行させることを目的とした、一組の命令の任意の言語、コード又は表記法での「プログラム・コード」、「コンピュータ・プログラム・コード」、「コンピュータ命令」、及び任意の表現を含む。この点で、プログラム・コードは、アプリケーション／ソフトウェア・プログラム、コンポーネント・ソフトウェア／関数のライブラリ、オペレーティング・システム、特定のコンピューティング・デバイスの基本デバイス・システム／ドライバ、及び同様のもののうちの１つ以上として具現化されることが可能である。コンピュータによって要求されるまで、一組の命令は、例えばハード・ディスク・ドライブ内などの別のコンピュータ・メモリ内、又は光ディスク（最終的にＣＤ  ＲＯＭにおいて使用されるように）若しくはフレキシブル・ディスク（最終的にフレキシブル・ディスク・ドライブにおいて使用されるように）などのリムーバブル・メモリ内などに記憶されていてもよい。したがって、実施形態は、コンピュータで使用されるコンピュータ・プログラム製品として実装されてもよい。さらに、記載された様々な方法は、ソフトウェアによって選択的に有効化又は再構成される汎用コンピュータにおいて実装されると便利であるが、そのような方法は、要求される方法ステップを実行するよう構築されたハードウェア、ファームウェア、又はより専門化した装置において実行され得ることも、当業者には当然のことである。機能的記述情報は、機能性を機械に与える情報である。機能的記述情報は、限定はされないが、コンピュータ・プログラム、命令、ルール、ファクト、計算可能関数の定義、オブジェクト、データ構造を含む。
【０１８０】
プログラム・コードの記憶若しくは実行又はその両方に適した情報処理システム（データ処理システム）は、この記載に従って提供されることができ、システム・バスを介して通信可能にメモリ要素（単数又は複数）に直接又は間接的に結合された少なくとも１つのプロセッサを含むことができる。メモリ要素は、限定はされないが、プログラム・コードを実際に実行する間に用いられるローカル・メモリ、大容量ストレージ、及び、実行中にコードが大容量ストレージから読み出されなければならない回数を減らすために少なくとも一部のプログラム・コードの一時的なストレージとなるキャッシュ・メモリを含むことができる。入出力、すなわちＩ／Ｏデバイス（限定はされないがキーボード、ディスプレイ、ポインティング・デバイスなどを含む）は、直接、又は介在するデバイス・コントローラを介して、システムに結合されることが可能である。
【０１８１】
ネットワーク・アダプタもシステムに結合されて、データ処理システムが、他のデータ処理システム、リモート・プリンタ、ストレージ・デバイス、若しくは同様のもの、又はそのいずれかの組み合わせに、介在するプライベート又はパブリック・ネットワークの任意の組み合わせを介して結合された状態となることを可能にしてもよい。例示のためのネットワーク・アダプタには、限定はされないが、モデム、ケーブル・モデム、及びＥｔｈｅｒｎｅｔ（Ｒ）カードがある。
【０１８２】
前述の説明は、例示及び説明のために提示された。明らかに、多数の変更及び変形が可能であるため、包括的であることも、又は限定することも意図されてはいない。当業者には明らかであると考えられるそのような変更及び変形は、添付の特許請求の範囲によって定義される開示の範囲内に含まれるものとする。
【０１８３】
特定の実施形態が、示され記載されたが、当業者には当然のことながら、本願明細書の教示に基づき、この開示及びそのより広い側面から逸脱することなく、変更及び改変が行われ得る。
【０１８４】
さらに、当然のことながら、１つ以上の実施形態は添付の特許請求の範囲によって定義される。当業者には当然のことながら、導入された請求項の構成要素の特定の数が意図される場合、そのような意図は、その請求項に明確に記載され、そのような記載がなければそうした限定は存在しない。理解のための補助として非限定的な例を挙げると、以下の添付の特許請求の範囲は、請求項の構成要素を導入するために、「少なくとも１つ」及び「１つ以上」という前置き表現の使用を含む。しかし、たとえ同じ請求項が「１つ以上の」又は「少なくとも１つの」という前置き表現と、「ａ」又は「ａｎ」などの不定冠詞とを含む場合でも、不定冠詞「ａ」又は「ａｎ」による請求項の構成要素の導入が、そのように導入された請求項の構成要素を含む任意の特定の請求項を、当該構成要素を１つのみ含む制約に限定するということが、そうした前置き表現の使用によって示唆されるとは、解釈されるべきではない。特許請求の範囲における定冠詞の使用に関しても同じことが当てはまる。
【図１】
2013516668.tif 000003
【図２】
2013516668.tif 000004
【図３】
2013516668.tif 000005
【図４】
2013516668.tif 000006
【図５】
2013516668.tif 000007
【図６】
2013516668.tif 000008
【図７】
2013516668.tif 000009
【図８】
2013516668.tif 000010
【図９】
2013516668.tif 000011
【図１０】
2013516668.tif 000012
【図１１】
2013516668.tif 000013
【図１２】
2013516668.tif 000014
【図１３】
2013516668.tif 000015
【図１４】
2013516668.tif 000016
【図１５】
2013516668.tif 000017
【図１６】
2013516668.tif 000018
【国際調査報告】
2013516668.tif 000019
2013516668.tif 000020