(57)【特許請求の範囲】
【請求項１】
ミドルウェア・バイナリの配布のためのコンピュータ実装方法であって、
少なくとも１つのコンピューティング・プロセッサにより、１つ又は複数のミドルウェア・サービスに関するワークロードを配備する要求を受信することと、
前記少なくとも１つのコンピューティング・プロセッサにより、前記１つ又は複数のミドルウェア・サービスをホストするためのベース・オペレーティング・システム・イメージを選択することと、
前記少なくとも１つのコンピューティング・プロセッサにより、ストレージ・システム上のリポジトリにおける、前記１つ又は複数のミドルウェア・サービスの１つ又は複数のバイナリ・ファイルの位置を判断することと、
前記少なくとも１つのコンピューティング・プロセッサにより、前記ストレージ・システム上に、前記ベース・オペレーティング・システム・イメージを含む仮想ディスクをクローン化することと、
前記少なくとも１つのコンピューティング・プロセッサにより、前記１つ又は複数のバイナリ・ファイルを、前記リポジトリ内の前記位置から前記ストレージ・システム上の前記クローン化された仮想ディスクにコピーすることと、
を含み、
前記ストレージ・システム上の前記リポジトリにおける、前記１つ又は複数のミドルウェア・サービスの前記１つ又は複数のバイナリ・ファイルの前記位置を判断することは、
前記ベース・オペレーティング・システム・イメージ上で利用可能な１つ又は複数のファイル及びサービスの第１の組を取り出すことと、
前記１つ又は複数のファイル及びサービスの前記第１の組を、前記ワークロードに必要な１つ又は複数のファイル及びサービスの第２の組と比較することと、
前記比較に基づいて、ファイル及びサービスの差分リストを作成することと、
前記差分リストと一致する既に変更済みのベース・オペレーティング・システム・イメージについて、前記ストレージ・システム上の前記リポジトリに照会することと、
前記既に変更済みのベース・オペレーティング・システム・イメージが前記リポジトリ内に存在しないと判断することに応答して、前記ストレージ・システム上の前記リポジトリにおける、前記１つ又は複数のミドルウェア・サービスの前記１つ又は複数のバイナリ・ファイルの前記位置を判断することと、
を含む方法。
【請求項２】
前記ベース・オペレーティング・システム・イメージ及び前記１つ又は複数のバイナリ・ファイルを含む前記クローン化された仮想ディスクを、前記１つ又は複数のミドルウェア・サービスをホストするために作成された仮想マシンに取り付けること、
をさらに含む、請求項１に記載の方法。
【請求項３】
前記仮想マシンがブートされたとき、前記ベース・オペレーティング・システム及び前記１つ又は複数のバイナリ・ファイルが存在する、請求項２に記載の方法。
【請求項４】
前記ストレージ・システム上に、前記ベース・オペレーティング・システム・イメージを含む前記仮想ディスクをクローン化することは、
前記既に変更済みのベース・オペレーティング・システム・イメージが前記リポジトリ内に存在すると判断することに応答して、前記リポジトリ内の前記既に変更済みのベース・オペレーティング・システム・イメージを含む前記仮想ディスクをクローン化することを含む、請求項１に記載の方法。
【請求項５】
前記１つ又は複数のバイナリ・ファイルを、前記リポジトリ内の前記位置から前記ストレージ・システム上の前記クローン化された仮想ディスクにコピーすることは、
前記ストレージ・システム上に、前記ベース・オペレーティング・システム・イメージを含む前記クローン化された仮想ディスクをマウントすることと、
前記１つ又は複数のバイナリ・ファイルを、直接前記リポジトリから前記ストレージ・システム上の前記クローン化された仮想ディスクにコピーすることと、
前記ベース・オペレーティング・システム・イメージ及び前記１つ又は複数のバイナリ・ファイルを含む前記クローン化された仮想ディスクをアンマウントすることと、
を含む、請求項１に記載の方法。
【請求項６】
前記ベース・オペレーティング・システム・イメージ及び前記１つ又は複数のバイナリ・ファイルを含む前記クローン化された仮想ディスクを前記リポジトリ内に格納することをさらに含む、請求項５に記載の方法。
【請求項７】
１つ又は複数のミドルウェア・サービスに関するワークロードを配備する要求を受信し、
前記１つ又は複数のミドルウェア・サービスをホストするためのベース・オペレーティング・システム・イメージを選択し、
ストレージ・システム上のリポジトリにおける、前記１つ又は複数のミドルウェア・サ
ービスの１つ又は複数のバイナリ・ファイルの位置を判断し、
前記ストレージ・システム上に、前記ベース・オペレーティング・システム・イメージを含む仮想ディスクをクローン化し、
前記１つ又は複数のバイナリ・ファイルを、前記リポジトリ内の前記位置から前記ストレージ・システム上の前記クローン化された仮想ディスクにコピーする、
ステップをコンピュータに実行させる、コンピュータ・プログラムであって、
ストレージ・システム上のリポジトリにおける、前記１つ又は複数のミドルウェア・サービスの１つ又は複数のバイナリ・ファイルの位置を判断するステップが、さらに、
前記ベース・オペレーティング・システム・イメージ上で利用可能な１つ又は複数のファイル及びサービスの第１の組を取り出し、
前記１つ又は複数のファイル及びサービスの前記第１の組を、前記ワークロードに必要な１つ又は複数のファイル及びサービスの第２の組と比較し、
前記比較に基づいて、ファイル及びサービスの差分リストを作成し、
前記差分リストと一致する既に変更済みのベース・オペレーティング・システム・イメージについて、前記ストレージ・システム上の前記リポジトリに照会し、
前記既に変更済みのベース・オペレーティング・システム・イメージが前記リポジトリ内に存在しないと判断することに応答して、前記ストレージ・システム上の前記リポジトリにおける、前記１つ又は複数のミドルウェア・サービスの前記１つ又は複数のバイナリ・ファイルの前記位置を判断する、
ステップを含む、コンピュータ・プログラム。
【請求項８】
さらに、
前記ベース・オペレーティング・システム・イメージ及び前記１つ又は複数のバイナリ・ファイルを含む前記クローン化された仮想ディスクを、前記１つ又は複数のミドルウェア・サービスをホストするために作成された仮想マシンに取り付ける、
ステップを含む、請求項７に記載のコンピュータ・プログラム。
【請求項９】
前記仮想マシンがブートされたとき、前記ベース・オペレーティング・システム及び前記１つ又は複数のバイナリ・ファイルが存在する、請求項８に記載のコンピュータ・プログラム。
【請求項１０】
前記ストレージ・システム上に、前記ベース・オペレーティング・システム・イメージを含む前記仮想ディスクをクローン化するステップが、さらに、
前記既に変更済みのベース・オペレーティング・システム・イメージが前記リポジトリ内に存在すると判断することに応答して、前記リポジトリ内の前記既に変更済みのベース・オペレーティング・システム・イメージを含む前記仮想ディスクをクローン化する、
ステップを含む、請求項７に記載のコンピュータ・プログラム。
【請求項１１】
前記１つ又は複数のバイナリ・ファイルを前記リポジトリ内の前記位置から前記ストレージ・システム上の前記クローン化された仮想ディスクにコピーするステップが、さらに、
前記ストレージ・システム上に、前記ベース・オペレーティング・システム・イメージを含む前記クローン化された仮想ディスクをマウントし、
前記１つ又は複数のバイナリ・ファイルを、直接前記リポジトリから前記ストレージ・システム上の前記クローン化された仮想ディスクにコピーし、
前記ベース・オペレーティング・システム・イメージ及び前記１つ又は複数のバイナリ・ファイルを含む前記クローン化された仮想ディスクをアンマウントする、
ステップを含む、請求項７に記載のコンピュータ・プログラム。
【請求項１２】
さらに、
前記ベース・オペレーティング・システム・イメージ及び前記１つ又は複数のバイナリ・ファイルを含む前記クローン化された仮想ディスクを前記リポジトリ内に格納する、
ステップを含む、請求項１１に記載のコンピュータ・プログラム。
【請求項１３】
請求項７〜１２の何れか１項に記載のコンピュータ・プログラムをコンピュータ可読ストレージ媒体に記録した、コンピュータ可読ストレージ媒体。
【請求項１４】
請求項１〜６の何れか１項に記載の方法の各ステップを、コンピュータ・ハードウェアによる手段として構成した、システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クラウド・ワークロードのプロビジョニングに関する。
【背景技術】
【０００２】
クラウド・ワークロードのプロビジョニングにおいては、ミドルウェア・サービスをホストするために、仮想マシン（ＶＭ）がクラウドに配備（deploy）され、ミドルウェア・サービス又はアプリケーションのバイナリ・ファイルが、仮想マシン（ＶＭ）に配布される。バイナリ・ファイルを配布する１つの既存の手法は、バイナリ・ファイルを含むＶＭテンプレートを仮想ディスクと共に予めパッケージ化することである。例えば、ＶＭテンプレートを作成し、動作させるために、他方から完全に分離し、それぞれの組の仮想ディスクを有する異なるハイパーバイザを提供することができる。さらに、ハイパーバイザの各バージョンは、異なるレベルに関するイメージのサブセットを有し、結果として、構築時及びプロビジョニング時に慎重に管理しなければならない種々の仮想ディスク・レベルの大規模マトリックスをもたらすことがある。
【０００３】
別の既存の手法は、オペレーティング・システム（ＯＳ）及び他の共通の監視パッケージのような共通の機能のほんの一部のサブセットのみを含み、ミドルウェア・サービス及びアプリケーションの全バイナリ・ファイルを含まない、共通の仮想ディスク・テンプレートを作成することである。ＶＭの配備時に、共通のイメージが、共通の仮想ディスク・テンプレートからクラウドにプロビジョニングされ、バイナリ・ファイルが、ネットワーク接続を介して、他の場所から新しいＶＭにダウンロードされる。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】Ｐｅｔｅｒ  Ｍｅｌｌ及びＴｉｍ  Ｇｒａｎｃｅ著、「Ｄｒａｆｔ  ＮＩＳＴ  Ｗｏｒｋｉｎｇ  Ｄｅｆｉｎｉｔｉｏｎ  ｏｆ  Ｃｌｏｕｄ  Ｃｏｍｐｕｔｉｎｇ」、２００９年１０月７日付け
【発明の概要】
【発明が解決しようとする課題】
【０００５】
動的に生成される仮想ディスク・コンテンツを用いてプロビジョニング時間を最適化する方法、コンピュータ・プログラム及びシステムを提供する。
【課題を解決するための手段】
【０００６】
本発明の一実施形態によれば、ミドルウェア・バイナリの配布のための方法は、１つ又は複数のミドルウェア・サービスに関するワークロードを配備する要求を受信する。１つ又は複数のミドルウェア・サービスをホストするためのベース・オペレーティング・システム・イメージを選択し、ストレージ・システム上のリポジトリにおける、１つ又は複数のミドルウェア・サービスの１つ又は複数のバイナリ・ファイルの位置を判断する。ストレージ・システム上に、ベース・オペレーティング・システム・イメージを含む仮想ディスクをクローン化し、１つ又は複数のバイナリ・ファイルを、リポジトリ内の位置からストレージ・システム上のクローン化された仮想ディスクにコピーする。
【０００７】
前述の方法に対応するシステム及びコンピュータ・プログラム製品も、本明細書で説明され、特許請求される。
【図面の簡単な説明】
【０００８】
【図１】本発明の１つの実施形態によるクラウド・コンピューティング・ノードを示す。
【図２】本発明の１つの実施形態によるクラウド・コンピューティング環境を示す。
【図３】本発明の１つの実施形態による抽象化モデル層を示す。
【図４】本発明の１つの実施形態による、ミドルウェア・バイナリ配布のための方法を示すフローチャートである。
【図５】本発明の１つの実施形態による、ミドルウェア・バイナリ配布のための方法をより詳細に示すフローチャートである。
【発明を実施するための形態】
【０００９】
当業者であれば理解するように、本発明の態様は、システム、方法又はコンピュータ・プログラム製品として具体化することができる。従って、本発明の態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコードなどを含む）、又はソフトウェアの態様とハードウェアの態様とを組み合わせた実施形態の形を取ることができ、本明細書においてはこれらの全てを一般に、「回路」、「モジュール」又は「システム」と呼ぶことができる。さらに、本発明の態様は、コンピュータ可読プログラム・コードが組み入れられた１つ又は複数のコンピュータ可読媒体内に具体化されたコンピュータ・プログラム製品の形を取ることができる。
【００１０】
１つ又は複数のコンピュータ可読媒体の任意の組み合わせを用いることができる。コンピュータ可読媒体は、コンピュータ可読信号媒体又はコンピュータ可読ストレージ媒体とすることができる。コンピュータ可読ストレージ媒体は、例えば、これらに限定されるものではないが、電子、磁気、光学、電磁気、赤外線若しくは半導体のシステム、装置、若しくはデバイス、又は上記のもののいずれかの適切な組み合わせとすることができる。コンピュータ可読ストレージ媒体のより具体的な例（非網羅的なリスト）として、以下のもの：即ち、１つ又は複数の配線を有する電気的接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、消去可能なプログラム可能読み出し専用メモリ（ＥＰＲＯＭ又はフラッシュメモリ）、光ファイバ、ポータブル・コンパクト・ディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）、光記憶装置、磁気記憶装置、又は上記のもののいずれかの適切な組み合わせが挙げられる。本文書の文脈においては、コンピュータ可読ストレージ媒体は、命令実行システム、装置若しくはデバイスによって、又はこれらと関連して用いるためのプログラムを収容又は格納することができる任意の有形媒体とすることができる。
【００１１】
コンピュータ可読信号媒体は、例えばベースバンド内に、又は搬送波の一部として、具体化されたコンピュータ可読プログラム・コードをその中に有する、伝搬されるデータ信号を含むことができる。このような伝搬信号は、これらに限定されるものではないが、電磁気、光又はそれらのいずれかの適切な組み合わせを含む、種々の形態のいずれかを取ることができる。コンピュータ可読信号媒体は、コンピュータ可読ストレージ媒体ではなく、かつ、命令実行システム、装置若しくはデバイスによって、又はこれらと関連して用いるためのプログラムを伝達し、伝搬し、又は搬送することができる任意のコンピュータ可読媒体とすることができる。
【００１２】
コンピュータ可読媒体上に具体化されたプログラム・コードは、これらに限定されるものではないが、無線、有線、光ファイバ・ケーブル、ＲＦ等、又は上記のもののいずれかの適切な組み合わせを含む、任意の適切な媒体を用いて伝送することができる。
【００１３】
本発明の態様の操作を実行するためのコンピュータ・プログラム・コードは、Ｊａｖａ（登録商標）（Ｊａｖａ及び全てのＪａｖａベースの商標並びにロゴは、米国、その他の国々、又はその両方におけるＳｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓ，Ｉｎｃ．の商標である）、ＳｍａｌｌＴａｌｋ、Ｃ＋＋等のようなオブジェクト指向型プログラミング言語、及び、「Ｃ」プログラミング言語又は同様のプログラミング言語のような従来の手続き型プログラミング言語を含む、１つ又は複数のプログラミング言語のいずれかの組み合わせで記述することができる。プログラム・コードは、完全にユーザのコンピュータ上で実行される場合もあり、一部がユーザのコンピュータ上で、独立型ソフトウェア・パッケージとして実行される場合もあり、一部がユーザのコンピュータ上で実行され、一部が遠隔コンピュータ上で実行される場合もあり、又は完全に遠隔コンピュータ若しくはサーバ上で実行される場合もある。最後のシナリオにおいては、遠隔コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）若しくは広域ネットワーク（ＷＡＮ）を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続される場合もあり、又は外部コンピュータへの接続がなされる場合もある（例えば、インターネット・サービス・プロバイダを用いたインターネットを通じて）。
【００１４】
本発明の態様は、本発明の実施形態による方法、装置（システム）及びコンピュータ・プログラム製品のフローチャート図及び／又はブロック図を参照して説明される。フローチャート図及び／又はブロック図の各ブロック、並びにフローチャート図及び／又はブロック図内のブロックの組み合わせは、コンピュータ・プログラム命令によって実装できることが理解されるであろう。これらのコンピュータ・プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えてマシンを製造し、それにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャート及び／又はブロック図の１つ又は複数のブロック内で指定された機能／動作を実装するための手段を作り出すようにすることができる。
【００１５】
これらのコンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイスを特定の方式で機能させるように指示することができるコンピュータ可読媒体内に格納し、それにより、そのコンピュータ可読媒体内に格納された命令が、フローチャート及び／又はブロック図の１つ又は複数のブロックにおいて指定された機能／動作を実装する命令を含む製品を製造するようにすることもできる。
【００１６】
コンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上にロードして、一連の動作ステップをコンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上で行わせてコンピュータ実施のプロセスを生成し、それにより、コンピュータ又は他のプログラム可能装置上で実行される命令が、フローチャート及び／又はブロック図の１つ又は複数のブロックにおいて指定された機能／動作を実行するためのプロセスを提供するようにすることもできる。
【００１７】
図面内のブロック図は、本発明の種々の実施形態による、システム、方法、及びコンピュータ・プログラム製品の可能な実装の、アーキテクチャ、機能及び動作を示す。この点に関して、フローチャート又はブロック図内の各ブロックは、指定された論理機能を実装するための１つ又は複数の実行可能命令を含む、モジュール、セグメント、又はコードの一部を表すことができる。幾つかの代替的な実装において、上記で論じられた機能は、開示された順序とは異なる順序で生じることがあることにも留意されたい。例えば、連続して示される２つの機能は、関与する機能に応じて、実際には実質的に同時に実行されることもあり、又はこれらの機能がときとして逆順で実行されることもある。ブロック図及び／又はフローチャート図の各ブロック、及びブロック図及び／又はフローチャート図内のブロックの組み合わせは、指定された機能又は動作を実行する専用ハードウェア・ベースのシステム、又は専用のハードウェアとコンピュータ命令との組み合わせによって実装することができることにも留意されたい。
【００１８】
本明細書で用いられる用語は、特定の実施形態を説明するためのものにすぎず、本発明を限定することを意図したものではない。本明細書で用いられる場合、単数形「１つの（a）」、「１つの（an）」及び「その（the）」は、文脈が明らかにそうでないことを示さない限り、複数形も同様に含むことを意図したものである。「含む（comprise）」及び／又は「含んでいる（comprising）」という用語は、本明細書で用いられる場合、記述された特徴、整数、ステップ、操作、要素、及び／又は構成要素の存在を指定するが、１つ又は複数の他の特徴、整数、ステップ、操作、要素、構成要素、及び／又はこれらの群の存在又は付加を排除するものではないことがさらに理解されるであろう。
【００１９】
以下の特許請求の範囲における全ての「手段又はステップと機能との組み合わせ（ミーンズ又はステップ・プラス・ファンクション）」要素の対応する構造、材料、動作、及び均等物は、その機能を、明確に特許請求される他の特許請求された要素との組み合わせで実行するためのあらゆる構造、材料、又は動作を含むことが意図されている。本発明の説明は、例証及び説明を目的として提示されたものであり、網羅的であること又は本発明を開示された形態に限定することを意図したものではない。本発明の範囲及び趣旨から逸脱しない多くの修正及び変形が当業者には明らかになるであろう。実施形態は、本発明の原理及び実際的用途を最も良く説明するために、そして、当業者が、企図した特定の用途に適した種々の修正を伴う種々の実施形態に関して本発明を理解できるように、選択され、説明された。
【００２０】
本開示は、クラウド・コンピューティングについての詳細な説明を含み、本明細書で列挙される教示の実施は、クラウド・コンピューティング環境に限定されるものではない。むしろ、本発明の実施形態は、現在周知の又は後で開発されるいずれの他のタイプのコンピューティング環境と共に実施形態することが可能である。
【００２１】
便宜上、詳細な説明は、本出願と共に提出され、そのコピーが本出願に添付される、情報開示陳述書（InformationDisclosure Statement）内に引用された非特許文献１から得られる以下の定義が含まれる。
【００２２】
クラウド・コンピューティングは、最小限の管理労力又はサービス・プロバイダとの対話で迅速にプロビジョニング及びリリースすることができる構成可能なコンピューティング・リソース（例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、及びサービス）の共有プールに対する、便利なオンデマンドによるネットワーク・アクセスを可能にするサービス配信（service delivery）のモデルである。このクラウド・モデルは、少なくとも５つの特性、少なくとも３つのサービス・モデル、及び少なくとも４つの配備モデルを含むことができる。
【００２３】
特性は、以下の通りである。
オンデマンド・セルフサービス：クラウド・コンシューマは、必要に応じて、サーバ時間及びネットワーク・ストレージ等のコンピューティング機能を、人間がサービスのプロバイダと対話する必要なく自動的に、一方的にプロビジョニングすることができる。
広範なネットワーク・アクセス：この機能は、ネットワーク上で利用可能であり、異種のシン又はシック・クライアント・プラットフォーム（例えば、携帯電話、ラップトップ及びＰＤＡ）による使用を促進する標準的な機構を通じてアクセスされる。
リソースのプール化：プロバイダのコンピューティング・リソースは、マルチ・テナント・モデルを用いて、異なる物理及び仮想リソースを要求に応じて動的に割り当て及び再割り当てすることにより、複数のコンシューマにサービス提供するためにプールされる。コンシューマは、一般に、提供されるリソースの正確な場所についての制御又は知識を持たないが、より高レベルの抽象化では場所（例えば、国、州、又はデータセンタ）を特定できる場合があるという点で、場所とは独立しているといえる。
迅速な弾力性（Rapid Elasticity）：この機能は、迅速かつ弾力的に、場合によっては自動的に、プロビジョニングして素早くスケール・アウトし、迅速にリリースして素早くスケール・インさせることができる。コンシューマにとって、プロビジョニングに利用可能なこれらの機能は、多くの場合、無制限であり、いつでもどんな量でも購入できるように見える。
計測済みサービス（Measured Service）：クラウド・システムは、サービスのタイプ（例えば、ストレージ、処理、帯域幅、及びアクティブ・ユーザアカウント）に相応する何らかの抽象化レベル（level of abstraction)での計量機能を用いることによって、リソース使用を自動的に制御及び最適化する。リソース使用は、利用されるサービスのプロバイダとコンシューマの両方に対して透明性のある形で監視し、制御し、報告することができる。
【００２４】
サービス・モデルは以下の通りである。
Ｓｏｆｔｗａｒｅ  ａｓ  ａ  Ｓｅｒｖｉｃｅ（ＳａａＳ）：クラウド・インフラストラクチャ上で動作しているプロバイダのアプリケーションを使用するために、コンシューマに提供される機能である。これらのアプリケーションは、ウェブ・ブラウザ（例えば、ウェブ・ベースの電子メール）などのシン・クライアント・インターフェースを通じて、種々のクライアント・デバイスからアクセス可能である。コンシューマは、限定されたユーザ固有のアプリケーション構成設定を考え得る例外として、ネットワーク、サーバ、オペレーティング・システム、ストレージ、又は個々のアプリケーション機能をも含めて、基礎をなすクラウド・インフラストラクチャを管理又は制御しない。
Ｐｌａｔｆｏｒｍ  ａｓ  ａ  Ｓｅｒｖｉｃｅ（ＰａａＳ）：プロバイダによってサポートされるプログラミング言語及びツールを用いて生成された、コンシューマが生成した又は取得したアプリケーションを、クラウド・インフラストラクチャ上に配備するために、コンシューマに提供される機能である。コンシューマは、ネットワーク、サーバ、オペレーティング・システム、又はストレージなどの基礎をなすクラウド・インフラストラクチャを管理又は制御しないが、配備されたアプリケーション、及び場合によりアプリケーション・ホスティング環境構成に対しては制御を有する。
Ｉｎｆｒａｓｔｒｕｃｔｕｒｅ  ａｓ  ａ  Ｓｅｒｖｉｃｅ（ＩａａＳ）：コンシューマが、オペレーティング・システム及びアプリケーションを含み得る任意のソフトウェアを配備及び動作させることができる、処理、ストレージ、ネットワーク、及び他の基本的なコンピューティング・リソースをプロビジョニンングするために、コンシューマに提供される機能である。コンシューマは、基礎をなすクラウド・インフラストラクチャを管理又は制御しないが、オペレーティング・システム、ストレージ、配備されたアプリケーションに対する制御、及び場合によりネットワーク・コンポーネント（例えば、ホストのファイアウォール）選択の限定された制御を有する。
【００２５】
配備モデルは以下の通りである。
プライベート・クラウド：クラウド・インフラストラクチャは、ある組織のためだけに運営される。このクラウド・インフラストラクチャは、その組織又は第三者によって管理することができ、構内又は構外に存在することができる。
コミュニティ・クラウド：クラウド・インフラストラクチャは、幾つかの組織によって共有され、共通の関心事項（例えば、任務、セキュリティ要件、ポリシー、及びコンプライアンス上の考慮事項）を有する特定のコミュニティをサポートする。クラウド・インフラストラクチャは、それらの組織又は第三者によって管理することができ、構内又は構外に存在することができる。
パブリック・クラウド：クラウド・インフラストラクチャは、一般公衆又は大規模な業界グループに利用可能であり、クラウド・サービスを販売する組織によって所有される。
ハイブリッド・クラウド：クラウド・インフラストラクチャは、２つ又はそれより多いクラウド（プライベート、コミュニティ、又はパブリック）の複合体であり、これらは、固有のエンティティのままであるが、データ及びアプリケーションのポータビリティ(portability）を可能にする標準化技術又は専用技術（例えば、クラウド間の負荷分散のためのクラウド・バースティング（cloud bursting））によって互いに  結び付けられる。
【００２６】
クラウド・コンピューティング環境は、無国籍性、低結合性、モジュール性、及びセマンティック相互運用性に焦点を置くことを指向するサービスである。クラウド・コンピューティングの中心は、相互接続されたノードのネットワークを含むインフラストラクチャである。
【００２７】
ここで図１を参照すると、クラウド・コンピューティング・ノードの一例の概略図が示される。クラウド・コンピューティング・ノード１０は、好適なクラウド・コンピューティング・ノードの単なる一例であり、本明細書で説明される本発明の実施形態の使用又は機能の範囲に対するいずれかの制限を示唆することを意図するものではない。上記に関係なく、クラウド・コンピューティング・ノード１０は、本明細書で上述された機能のいずれかを実装及び／又は実施することができる。
【００２８】
クラウド・コンピューティング・ノード１０には、他の多数の汎用又は専用コンピューティング・システム環境又は構成で動作可能な、コンピュータ・システム／サーバ１２が存在する。コンピュータ・システム／サーバ１２と共に用いるのに好適であり得る周知のコンピューティング・システム、環境、及び／又は構成の例としては、これらに限定されるものではないが、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、手持ち式又はラップトップ型デバイス、マルチプロセッサ・システム、マイクロプロセッサ・ベースのシステム、セット・トップ・ボックス、プログラム可能民生電子機器、ネットワークＰＣ、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、及び上記のシステム又はデバイス等のいずれかを含む分散型クラウド・コンピューティング環境が含まれる。
【００２９】
コンピュータ・システム／サーバ１２は、コンピュータ・システムによって実行される、プログラム・モジュールなどのコンピュータ・システム実行可能命令の一般的な文脈で説明することができる。一般に、プログラム・モジュールは、特定のタスクを実行する又は特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、論理、データ構造などを含むことができる。コンピュータ・システム／サーバ１２は、通信ネットワークを通じてリンクされた遠隔処理デバイスによってタスクが実行される分散型クラウド・コンピューティング環境で実施することができる。分散型クラウド・コンピューティング環境において、プログラム・モジュールは、メモリ・ストレージ・デバイスを含む、ローカル及び遠隔両方のコンピュータ・システム・ストレージ媒体内に配置することができる。
【００３０】
図１に示されるように、クラウド・コンピューティング・ノード１０のコンピュータ・システム／サーバ１２は、汎用コンピューティング・デバイスの形で示される。コンピュータ・システム／サーバ１２のコンポーネントは、これらに限定されるものではないが、１つ又は複数のプロセッサ又は処理ユニット１６、システム・メモリ２８、及びシステム・メモリ２８を含む種々のシステム・コンポーネントをプロセッサ１６に結合するバス１８を含むことができる。
【００３１】
バス１８は、メモリ・バス又はメモリ・コントローラ、周辺バス、アクセラレーテッド・グラフィックス・ポート、及び種々のバス・アーキテクチャのいずれかを用いるプロセッサ又はローカル・バスを含む、幾つかのタイプのバス構造のうちのいずれかの１つ又は複数を表す。限定ではなく例としては、このようなアーキテクチャは、業界標準アーキテクチャ（Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ、ＩＳＡ）バス、マイクロ・チャネル・アーキテクチャ（Ｍｉｃｒｏ  Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ、ＭＣＡ）バス、Ｅｎｈａｎｃｅｄ  ＩＳＡ（ＥＩＳＡ）バス、Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ（ＶＥＳＡ）ローカル・バス、及びＰｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔｓ（ＰＣＩ）バスを含む。
【００３２】
コンピュータ・システム／サーバ１２は、典型的には、種々のコンピュータ・システム可読媒体を含む。このような媒体は、コンピュータ・システム／サーバ１２がアクセス可能ないずれかの利用可能媒体とすることができ、揮発性媒体及び不揮発性媒体の両方と、取り外し可能媒体及び取り外し不能媒体の両方とを含む。
【００３３】
システム・メモリ２８は、ランダム・アクセス・メモリ（ＲＡＭ）３０及び／又はキャッシュ・メモリ３２など、揮発性メモリの形のコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム／サーバ１２は、他の取り外し可能／取り外し不能、揮発性／不揮発性のコンピュータ・システム・ストレージ媒体をさらに含むことができる。単なる例として、取り外し不能な不揮発性磁気媒体（図示されておらず、典型的には「ハード・ドライブ」と呼ばれる）との間の読み出し及び書き込みのために、ストレージ・システム３４を設けることができる。図示されていないが、取り外し可能な不揮発性磁気ディスク（例えば、「フロッピィ・ディスク」）との間の読み出し及び書き込みのための磁気ディスク・ドライブと、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ又は他の光媒体などの取り外し可能な不揮発性光ディスクとの間の読み出し及び書き込みのための光ディスク・ドライブとを設けることができる。このような例においては、それぞれを、１つ又は複数のデータ媒体インターフェースによってバス１８に接続することができる。以下でさらに示され説明されるように、メモリ２８は、本発明の実施形態の機能を実行するように構成されたプログラム・モジュールの組（例えば、少なくとも１つ）を有する少なくとも１つのプログラム製品を含むことができる。
【００３４】
限定ではなく例として、メモリ２８内に、プログラム・モジュール４２の組（少なくとも１つ）を有するプログラム／ユーティリティ４０、並びにオペレーティング・システム、１つ又は複数のアプリケーション・プログラム、他のプログラム・モジュール、及びプログラム・データを格納することができる。オペレーティング・システム、１つ又は複数のアプリケーション・プログラム、他のプログラム・モジュール、及びプログラム・データ、又はそれらの何らかの組み合わせの各々は、ネットワーキング環境の実装を含むことができる。プログラム・モジュール４２は、一般に、本明細書で説明される本発明の実施形態の機能及び／又は方法を実行する。
【００３５】
コンピュータ・システム／サーバ１２はまた、キーボード、ポインティング・デバイス、ディスプレイ２４等のような１つ又は複数の外部デバイス１４；ユーザがコンピュータ・システム／サーバ１２と対話することを可能にする１つ又は複数のデバイス；及び／又はコンピュータ・システム／サーバ１２が１つ又は複数の他のコンピューティング・デバイスと通信することを可能にするいずれかのデバイス（例えば、ネットワーク・カード、モデムなど）と通信することもできる。このような通信は、Ｉ／Ｏインターフェース２２を経由して行うことができる。さらにまた、コンピュータ・システム／サーバ１２は、ネットワーク・アダプタ２０を介して、ローカル・エリア・ネットワーク（ＬＡＮ）、汎用広域ネットワーク（ＷＡＮ）、及び／又はパブリック・ネットワーク（例えば、インターネット）などの１つ又は複数のネットワークと通信することもできる。示されるように、ネットワーク・アダプタ２０は、バス１８を介して、コンピュータ・システム／サーバ１２の他のコンポーネントと通信する。図示されないが、コンピュータ・システム／サーバ１２と共に他のハードウェア及び／又はソフトウェア・コンポーネントを使用できることを理解されたい。例としては、これらに限定されるものではないが、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部のディスク・ドライブ・アレイ、ＲＡＩＤシステム、テープ・ドライブ、及びデータ・アーカイブ・ストレージ・システム等が含まれる。
【００３６】
ここで図２を参照すると、例証的クラウド・コンピューティング環境５０が示される。示されるように、クラウド・コンピューティング環境５０は、例えば、携帯情報端末（ＰＤＡ）又は携帯電話５４Ａ、デスクトップ・コンピュータ５４Ｂ、ラップトップ・コンピュータ５４Ｃ、及び／又は自動車コンピュータ・システム５４Ｎなどの、クラウド・コンシューマによって用いられるローカル・コンピューティング・デバイスと通信することができる、１つ又は複数のクラウド・コンピューティング・ノード１０を含む。ノード１０は、互いに通信することができる。これらのノードは、上述のようなプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、若しくはハイブリッド・クラウド、又はこれらの組み合わせなど、１つ又は複数のネットワークにおいて物理的又は仮想的にグループ化することができる（図示せず）。これにより、クラウド・コンピューティング環境５０は、クラウド・コンシューマがローカル・コンピューティング・デバイス上にリソースを保持する必要のないサービスとして、インフラストラクチャ、プラットフォーム、及び／又はソフトウェアを提供することが可能になる。図２に示されるコンピューティング・デバイス５４Ａ−Ｎのタイプは単なる例証であることを意図し、コンピューティング・ノード１０及びクラウド・コンピューティング環境５０は、いずれのタイプのネットワーク及び／又はネットワーク・アドレス指定可能な接続上でも（例えば、ウェブ・ブラウザを用いて）、いずれのタイプのコンピュータ化された装置とも通信できることを理解されたい。
【００３７】
ここで図３を参照すると、クラウド・コンピューティング環境５０（図２）によって提供される機能抽象化層の組が示される。図３に示されるコンポーネント、層、及び機能は単なる例証であることを意図し、本発明の実施形態はそれらに限定されないことを予め理解されたい。図示されるように、以下の層及び対応する機能が提供される。
【００３８】
ハードウェア及びソフトウェア層６０は、ハードウェア及びソフトウェアのコンポーネントを含む。ハードウェア・コンポーネントの例として、ＩＢＭ（登録商標）ｚＳｅｒｉｅｓ（登録商標）システムを一例とするメインフレームと、ＩＢＭ  ｐＳｅｒｉｅｓ（登録商標）システムを一例とするＲＩＳＣ（Ｒｅｄｕｃｅｄ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ｃｏｍｐｕｔｅｒ（縮小命令セット・コンピュータ））アーキテクチャ・ベースのサーバと、ＩＢＭ  ｘＳｅｒｉｅｓ（登録商標）システムと、ＩＢＭ  ＢｌａｄｅＣｅｎｔｅｒ（登録商標）システムと、ストレージ・デバイスと、ネットワーク及びネットワーク・コンポーネントとが含まれる。ソフトウェア・コンポーネントの例として、ＩＢＭ  ＷｅｂＳｐｈｅｒｅ（登録商標）アプリケーション・サーバ・ソフトウェアを一例とするネットワーク・アプリケーション・サーバ・ソフトウェアと、ＩＢＭ  ＤＢ２（登録商標）データベース・ソフトウェアを一例とするデータベース・ソフトウェアとが含まれる。（ＩＢＭ、ｚＳｅｒｉｅｓ、ｐＳｅｒｉｅｓ、ｘＳｅｒｉｅｓ、ＢｌａｄｅＣｅｎｔｅｒ、ＷｅｂＳｐｈｅｒｅ、及びＤＢ２は、世界中の多数の管轄区域において登録されているインターナショナル・ビジネス・マシーンズ・コーポレーションの商標である。）
【００３９】
仮想化層６２は、抽象化層を提供し、この層により、仮想エンティティの以下の例、すなわち、仮想サーバ、仮想ストレージ、仮想プライベート・ネットワークを含む仮想ネットワーク、仮想アプリケーション及びオペレーティング・システム、並びに仮想クライアントを提供することができる。
【００４０】
一例においては、管理層６４は、以下で説明される機能を提供することができる。リソース・プロビジョニングは、クラウド・コンピューティング環境内でタスクを実行するために利用されるコンピューティング・リソース及び他のリソースの動的な調達を提供する。計量及び価格決定は、リソースがクラウド・コンピューティング環境内で利用される際のコスト追跡と、それらのリソースの消費に対する課金又は請求とを提供する。一例においては、これらのリソースは、アプリケーション・ソフトウェア・ライセンスを含むことができる。セキュリティは、クラウド・コンシューマ及びタスクに対する識別情報の検証と、データ及び他のリソースに対する保護とを提供する。ユーザ・ポータルは、コンシューマ及びシステム管理者のために、クラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル管理は、要求されるサービス・レベルが満たされるように、クラウド・コンピューティング・リソースの割り当て及び管理を提供する。サービス・レベル・アグリーメント（Ｓｅｒｖｉｃｅ  Ｌｅｖｅｌ  Ａｇｒｅｅｍｅｎｔ、ＳＬＡ）の計画及び履行は、ＳＬＡに従って将来の要件が予測されるクラウド・コンピューティング・リソースの事前配置及び調達を提供する。
【００４１】
ワークロード層６６は、クラウド・コンピューティング環境を利用することができる機能の例を提供する。この層から提供することができるワークロード及び機能の例には、マッピング及びナビゲーション、ソフトウェア開発及びライフサイクル管理、仮想教室教育配信、データ分析処理、並びにトランザクション処理が含まれる。
【００４２】
ミドルウェア・バイナリ配布のための本発明の実施形態は、構築時の管理オーバーヘッドと配備時の性能オーバーヘッドの両方について有利である。これは、より簡単な構築プロセスを可能にするが、ネットワーク上でミドルウェア・バイナリを転送する追加のコストが生じ、性能を低下させる（例えば、配備及びスケーリング反応が遅いと、複製のための無駄なリソースを生じさせる）、ミドルウェア・サービス及びアプリケーションに必要な全バイナリ・ファイルを有していない仮想ディスクについて本明細書で上述した既存の手法と対照的である。本明細書で開示される実施形態においては、「ミドルウェア・バイナリ」とは、仮想化層６２（図３参照）で実行されるアプリケーション・バイナリを指し、ミドルウェア・サービスの配備は、ｐｌａｔｆｏｒｍ−ａｓ−ａ−ｓｅｒｖｉｅｃｅモデルの一部であることが好ましい。本発明の実施形態において、オペレーティング・システム（ＯＳ）のベース・イメージが、構築時にハードウェア及びソフトウェア層６０内に作成及び格納され、次に、このＯＳベース・イメージは、ミドルウェア・サービスをホストするために仮想マシン（ＶＭ）を配備する前及びミドルウェア・サービスに関するワークロードを配備する要求を受け取った後、ミドルウェア・サービスのバイナリ・ファイルで拡張される。この拡張したＯＳベース・イメージは、直接ストレージ上で、ハードウェア及びソフトウェア層６０内に作成され、仮想ディスクを提供し、これがその後、図３の仮想化層６２内の仮想ストレージとして配備される。ＶＭが仮想化層６２の一部としてブートされたとき、仮想ディスクは、ＯＳ及び要求されたミドルウェア・サービスのファイルを収容する。本発明の実施形態は、アプリケーション・バイナリ・リポジトリが、仮想ディスク及びＶＭを仮想化層６２に配備する前に、ハードウェア及びソフトウェア層６０内の仮想ディスクと同じストレージ・システム上にあるという事実を利用するものである。これにより、仮想化ネットワーク・インターフェースをトラバースする必要なしに、バイナリ・ファイルを、直接ストレージ・システム上で仮想ディスクにコピーすることが可能になる。この結果、特に企業環境において、多数のＶＭが連続的に配備及び廃棄される際、プロビジョニング時間が全体的に低減し、インフラストラクチャ・リソースがよりうまく使用される。
【００４３】
図４は、本発明の１つの実施形態による、ミドルウェア・バイナリ配布のための方法を示すフローチャートである。この実施形態において、方法は、好ましくはＩａａＳの一部として、層６４（図３参照）で実行されているクラウド管理ソフトウェアによって実施される。ユーザがＶＭの配備を開始すると、これに応答して、クラウド管理ソフトウェアが、方法を実施するためのコンピュータ・プログラム・コードを実行する。最初に、方法は、１つ又は複数のミドルウェア・サービスに関するワークロードを配備する要求を受信する（４０１）。これに応答して、方法は、ミドルウェア・サービスをホストするベースＯＳイメージを選択する（４０２）。方法は、ストレージ・システム上のリポジトリにおける、ベースＯＳイメージ内に存在しないミドルウェア・サービスのバイナリ・ファイルの位置を判断する（４０３）。方法は、ストレージ・システム上に、ベースＯＳイメージを含む仮想ディスクをクローン化し（４０４）、バイナリ・ファイルをリポジトリからストレージ・システム上のクローン化された仮想ディスクにコピーする（４０５）。この実施形態においては、バイナリ・ファイルは、クローン化された仮想ディスクに直接コピーされる、すなわち、ステップ４０３において取り出されたバイナリ・ファイルは、仮想ディスクと同じストレージ・システム上にある。次に、方法は、バイナリ・ファイルを含むクローン化された仮想ディスクを、ミドルウェア・サービスをホストするために作成されたＶＭに取り付けることができる（４０６）。従って、ＶＭがブートされたとき、バイナリ・ファイルは既に存在している。ネットワーク接続によるバイナリ・ファイルの転送は必要とされない。ＶＭがブートされた後、ＯＳを通じてバイナリ・ファイルをインストールする必要はない。
【００４４】
図５は、本発明の１つの実施形態による、ミドルウェア・バイナリ配布のための方法をより詳細に示すフローチャートである。最初に、方法は、１つ又は複数のミドルウェア・サービスに関するワークロードを配備する要求を受信する（５０１）。これに応答して、方法は、ミドルウェア・サービスをホストするベースＯＳイメージを選択する（５０２）。次に、方法は、データベースから、ベースＯＳイメージ上で利用可能なファイル及びサービスを取り出し（５０３）、これらのファイル及びサービスを、ワークロードに必要なファイル及びサービスと比較する（５０４）。この比較から、方法は、ファイル及びサービスの差分リスト（delta list）を作成する（５０５）。次に、方法は、差分リストと一致する既に変更済みのベースＯＳイメージについて、ストレージ・システム上のイメージ・リポジトリに照会する（５０６）。そうした既に変更済みのベースＯＳイメージが存在する場合（５０７）（すなわち、イメージ・リポジトリにおいて、ミドルウェア・サービスのバイナリ・ファイルを既に含む仮想ディスク・イメージが見つかった場合）、方法は、イメージ・リポジトリで見つかった既に変更済みのベースＯＳイメージをクローン化する（５０８）。方法は、ワークロードに必要なバイナリ・ファイルを含むクローン化された仮想ディスクを、ミドルウェア・サービスをホストするために作成されたＶＭに取り付ける（５１６）。
【００４５】
そうした既に変更済みのＯＳベース・イメージがイメージ・リポジトリ内に存在しない場合（５０７）、方法は、ミドルウェア・サービスのバイナリ・ファイルのリポジトリ位置を判断する（５０９）。次に、方法は、イメージ・リポジトリが存在するのと同じストレージ・システム上に、ＯＳベース・イメージを含む仮想ディスクをクローン化する（５１０）。方法は、ターゲット・ハイパーバイザを介して、クローン化された仮想ディスクを一時的にマウントする（５１１）。ここでは、ハイパーバイザは、ＶＭを作成する１つのコンピュータ・ソフトウェア、ファームウェア、及び／又はハードウェアである。次に、方法は、バイナリ・ファイルを、イメージ・リポジトリから、直接ストレージ・システム上のクローン化された仮想ディスクにコピーする（５１２）。随意的に、マウント済みのファイル・システムを構成することもできる（５１３）。次に、方法は、バイナリ・ファイルを含むクローン化された仮想ディスクをアンマウントする（５１４）。随意的に、方法は、考え得る将来の使用のために、バイナリ・ファイルを含むクローン化された仮想ディスクをイメージ・リポジトリ内に格納することができる（５１５）。方法は、バイナリ・ファイルを含むクローン化された仮想ディスクを、ミドルウェア・サービスをホストするために作成されたＶＭに取り付ける（５１６）。次に、ＶＭを配備することができる。ＶＭがブートされたとき（５１７）、ミドルウェア・サービスのバイナリ・ファイルは既に存在している。
【００４６】
このように、ミドルウェア・サービスに対する要求を受信した後、ミドルウェア・サービスをホストするＶＭを配備する直前に、要求されたミドルウェア・サービスに必要とされるバイナリ・ファイルを動的に判断する。
【００４７】
本発明の実施形態は、ミドルウェア・サービスのバイナリ・ファイルとの関連で上述されるが、本発明の趣旨及び範囲内から逸脱することなく、他のタイプのファイル及び／又はサービスを用いることもできる。
【００４８】
本発明の種々の実施形態の説明は、例証を目的として提示されたものであり、網羅的であること又は本発明を開示された実施形態に限定することを意図したものではない。当業者であれば、説明される実施形態の範囲及び趣旨から逸脱することなく、多くの修正及び変形が明らかであろう。本明細書で用いられる用語は、実施形態の原理、実際的用途、又は市場で見出される技術に優る技術的改善を最も良く説明するため、又は、当業者が本明細書で開示される実施形態を理解できるように、選択された。
【符号の説明】
【００４９】
１０：クラウド・コンピューティング・ノード
１２：コンピュータ・システム／サーバ
１４：外部デバイス
１６：プロセッサ（処理ユニット）
１８：バス
２０：ネットワーク・アダプタ
２２：Ｉ／Ｏインターフェース
２４：ディスプレイ
２８：システム・メモリ
３０：ランダム・アクセス・メモリ（ＲＡＭ）
３２：キャッシュ・メモリ
３４：ストレージ・システム
４０：プログラム／ユーティリティ
４２：プログラム・モジュール
５０：クラウド・コンピューティング環境
５４Ａ：携帯情報端末（ＰＤＡ）又は携帯電話
５４Ｂ：デスクトップ・コンピュータ
５４Ｃ：ラップトップ・コンピュータ
５４Ｎ：自動車コンピュータ・システム
６０：ハードウェア及びソフトウェア層
６２：仮想化層
６４：管理層
６６：ワークロード層
【図１】
0006486345.tif 000002
【図２】
0006486345.tif 000003
【図３】
0006486345.tif 000004
【図４】
0006486345.tif 000005
【図５】
0006486345.tif 000006