(57)【要約】      （修正有）【課題】複数のアプリケーション・フレームワークの１つを使って開発されたウェブアプリケーションを配備するクラウド・コンピューティング環境を提供する。【解決手段】クラウド・コンピューティング環境は、ランタイム環境と互換性のあるパッケージ内でウェブアプリケーションを受信し、適切にサービス提供データを前記パッケージに挿入することにより有効なサービスを動的にバインドする。次に、ランタイム環境のインスタンス、開始スクリプト、及びパッケージをウェブアプリケーション配備パッケージ内にパッケージし、アプリケーションコンテナは、ウェブアプリケーション配備パッケージを解凍し、前記ランタイム環境をインストールし、前記ウェブアプリケーションパッケージを前記ランタイム環境にロードし、前記開始スクリプトを開始することにより、前記ウェブアプリケーションを前記アプリケーションコンテナに配備する。【選択図】図１Ａ
2011233146.tif 000002
【特許請求の範囲】
【請求項１】
ウェブアプリケーションをホスティング環境に配備する方法であって、前記ウェブアプリケーションは複数のアプリケーション・フレームワークの１つを使って開発され、複数のランタイム環境の１つ内で実行するように構成され、
前記方法は、
前記ランタイム環境と互換性のあるパッケージの形態の前記ウェブアプリケーションを受信するステップと、
前記ホスティング環境によってアクセス可能な有効なサービスの選択を決定し、前記ウェブアプリケーションにバインドするステップと、
前記有効なサービス毎にサービス提供データを前記パッケージに挿入することにより、前記有効なサービスを前記ウェブアプリケーションにバインドするステップと、
有効なアプリケーションコンテナ内で前記ランタイム環境を開始するステップと、
前記ランタイム環境内で前記ウェブアプリケーションを立ち上げるステップと、を有することを特徴とする方法。
【請求項２】
前記ウェブアプリケーションの開始成功の後、前記ホスティング環境内のルーターに前記アプリケーションコンテナに関連するネットワークアドレス情報を通知することにより、前記ルーターが前記ウェブアプリケーションの要求を前記アプリケーションコンテナにルーティングすることを可能にするステップを更に有することを特徴とする請求項１記載の方法。
【請求項３】
前記アプリケーションコンテナにおいて前記開始・立ち上げステップを行うために実行される開始スクリプトを生成するステップを更に有することを特徴とする請求項１記載の方法。
【請求項４】
前記開始スクリプト及びパッケージをウェブアプリケーション配備パッケージにパッケージするステップを更に有することを特徴とする請求項３記載の方法。
【請求項５】
前記アプリケーションコンテナは配備エージェントプロセスを有し、前記配備エージェントプロセスは、ウェブアプリケーション配備パッケージを解凍し、前記パッケージを前記ランタイム環境にロードし、前記開始スクリプトを実行することを特徴とする請求項４記載の方法。
【請求項６】
前記受信、決定、挿入のステップが、前記ホスティング環境内でクラウド・コントローラ・プロセスによって実行される請求項５記載の方法。
【請求項７】
前記ウェブアプリケーションを立ち上げる要求を受信するステップと、前記ウェブアプリケーションを配備するために有効なアプリケーションコンテナの要求をブロードキャストするステップと、を更に有することを特徴とする請求項１記載の方法。
【請求項８】
コンピュータープロセッサーで実行される時に、ホスティング環境内にウェブアプリケーションを配備するための前記コンピュータープロセッサーへの命令を含むコンピューターで読み取り可能な記憶媒体であって、
前記ウェブアプリケーションは複数のアプリケーション・フレームワークの１つを使って開発され、複数のランタイム環境の１つ内で実行するように構成され、そのために、
前記ランタイム環境と互換性のあるパッケージの形態の前記ウェブアプリケーションを受信するステップと、
前記ホスティング環境によってアクセス可能な有効なサービスの選択を決定し、前記ウェブアプリケーションにバインドするステップと、
前記有効なサービス毎にサービス提供データを前記パッケージに挿入することにより、前記有効なサービスを前記ウェブアプリケーションにバインドするステップと、
有効なアプリケーションコンテナ内で前記ランタイム環境を開始するステップと、
前記ランタイム環境内で前記ウェブアプリケーションを立ち上げるステップと、を行うことを特徴とするコンピューターで読み取り可能な記憶媒体。
【請求項９】
前記ウェブアプリケーションの立ち上げ成功の後、前記ホスティング環境内のルーターに前記アプリケーションコンテナに関連するネットワークアドレス情報を通知することにより、前記ルーターが前記ウェブアプリケーションの要求を前記アプリケーションコンテナにルーティングすることを可能にするように更に構成されていることを特徴とする請求項８記載のコンピューターで読み取り可能な記憶媒体。
【請求項１０】
前記アプリケーションコンテナ内で前記開始・立ち上げステップを行うために実行される開始スクリプトを生成するステップを更に行うよう構成されていることを特徴とする請求項８記載のコンピューターで読み取り可能な記憶媒体。
【請求項１１】
前記開始スクリプト及びパッケージをウェブアプリケーション配備パッケージにパッケージするステップを更に行うよう構成されていることを特徴とする請求項１０記載のコンピューターで読み取り可能な記憶媒体。
【請求項１２】
前記アプリケーションコンテナが配備エージェントプロセスを有し、前記配備エージェントプロセスは、ウェブアプリケーション配備パッケージを解凍し、前記パッケージを前記ランタイム環境にロードし、前記開始スクリプトを実行することを特徴とする請求項１１記載のコンピューターで読み取り可能な記憶媒体。
【請求項１３】
前記受信、決定、及び挿入のステップが、前記ホスティング環境内でクラウド・コントローラ・プロセスによって実行されることを特徴とする請求項１２記載のコンピューターで読み取り可能な記憶媒体。
【請求項１４】
前記ウェブアプリケーションを立ち上げる要求を受信するステップと、前記ウェブアプリケーションを配備するために有効なアプリケーションコンテナの要求をブロードキャストするステップと、を更に行うよう構成されていることを特徴とする請求項８記載のコンピューターで読み取り可能な記憶媒体。
【請求項１５】
ウェブアプリケーションを配備するためのクラウド・コンピューティング・プラットフォームであって、前記ウェブアプリケーションが複数のアプリケーション・フレームワークの１つを使って開発され、複数のランタイム環境の１つ内で実行するように構成され、
前記クラウド・コンピューティングは、
仮想マシンの実行をサポートする少なくとも１つのサーバーを有するハードウェア・インフラストラクチャー・プラットフォームと、
前記少なくとも１つのサーバーに実装されるクラウド・コンピューティング環境と、を有し、
前記クラウド・コンピューティング環境は、
前記ウェブアプリケーションにアクセスする要求を受信・ルーティングするように構成されたルーター・コンポーネントと、
前記ランタイム環境と互換性のあるパッケージの形態の前記ウェブアプリケーションを受信するステップと、前記ホスティング環境によってアクセス可能な有効なサービスの選択を決定し、前記ウェブアプリケーションにバインドするステップと、前記有効なサービス毎にサービス提供データを前記パッケージに挿入することにより、前記有効なサービスを前記ウェブアプリケーションにバインドするステップと、を行うように構成されたクラウド・コントローラ・コンポーネントと、
有効なアプリケーションコンテナ内で前記ランタイム環境を開始するステップと、前記ランタイム環境内で前記ウェブアプリケーションを立ち上げるステップと、を行うように構成されたアプリケーションコンテナ・コンポーネントと、
を有することを特徴とするクラウド・コンピューティング・プラットフォーム。
【請求項１６】
前記クラウド・コンピューティング環境は、更に、アドレシング・アンド・ディスカバリー・コンポーネントを有し、前記アドレシング・アンド・ディスカバリー・コンポーネントは、前記クラウド・コンピューティング環境のコンポーネントから送信されたメッセージを前記クラウド・コンピューティング環境のその他のコンポーネントにブロードキャストするように構成されていることを特徴とする請求項１５記載のクラウド・コンピューティング・プラットフォーム。
【請求項１７】
前記ハードウェア・インフラストラクチャー・プラットフォームは、編成部を更に有し、前記編成部は、前記アドレシング・アンド・ディスカバリー・コンポーネントからブロードキャストされたメッセージを受信し、ブロードキャストされたメッセージを受信すると、追加的なコンテナ仮想マシンを要求する前記アドレシング・アンド・ディスカバリー・コンポーネントを介して前記クラウド・コンピューティング環境のための追加的なコンテナ仮想マシンをインスタンス化するように構成されていることを特徴とする請求項１６記載のクラウド・コンピューティング・プラットフォーム。
【請求項１８】
前記クラウド・コントローラ・コンポーネントは、前記アプリケーションコンテナにおける前記開始・立ち上げステップを行うために実行される開始スクリプトを生成し、前記開始スクリプト及びパッケージをウェブアプリケーション配備パッケージにパッケージすることを更に行うように構成されていることを特徴とする請求項１５記載のクラウド・コンピューティング・プラットフォーム。
【請求項１９】
前記アプリケーションコンテナ・コンポーネントは、配備エージェントプロセスを有し、前記配備エージェントプロセスは、ウェブアプリケーション配備パッケージを解凍し、前記パッケージを前記ランタイム環境にロードし、前記開始スクリプトを実行し、前記ウェブアプリケーションの立ち上げ成功の後、前記ホスティング環境内のルーターに前記アプリケーションコンテナに関連するネットワークアドレス情報を通知することにより、前記ルーターが前記ウェブアプリケーションの要求を前記アプリケーションコンテナにルーティングすることを可能にすることを特徴とする請求項１８記載のクラウド・コンピューティング・プラットフォーム。
【請求項２０】
前記クラウド・コンピューティング環境は、更にヘルスマネージャープロセスを有し、前記ヘルスマネージャープロセスは、前記クラウド・コンピューティング環境内のその他のコンポーネントの状態をモニターすることを特徴とする請求項１５記載のクラウド・コンピューティング・プラットフォーム。
【発明の詳細な説明】
【技術分野】
【０００１】
[0001]「サービス型プラットフォーム（Ｐｌａｔｆｏｒｍ−ａｓ−ａ−Ｓｅｒｖｉｃｅ）（一般的に「ＰａａＳ（パーズ）」とも呼ばれる）は、ウェブ開発者（又はその他のあらゆるアプリケーション開発者）が、ウェブアプリケーション（又はその他のあらゆる種類のネットワークアプリケーション）のライフサイクルを構築、配備、及び管理することを可能にする、サービスプロバイダーによって提供される、統合化されたソリューションとしての技術の一式を一般的に表現する。パーズの主要な要素の１つは、サービスプロバイダーによって運営され維持されるネットワーク（例えば、インターネット）インフラストラクチャーである「クラウド・コンピューティング・プラットフォーム」であり、この「クラウド・コンピューティング・プラットフォーム」において、開発されたウェブアプリケーションが配備される。ウェブアプリケーションを確実に動作させるために要求されるハードウェアリソース及びソフトウェア層を提供することにより、クラウド・コンピューティング・プラットフォームは、開発者がウェブアプリケーションの開発だけに専念することを可能にし、規模拡大縮小並びにその他のコンピューター及び記憶リソース要求に伴う物資準備（例えば、データ記憶装置、データベースアクセス、処理能力、設備、パワー及び帯域等）をクラウド・コンピューティング・プラットフォームに任せてしまう（例えば、サービスプロバイダーから費用請求されることによって）。サービスプロバイダーは、伝統的なＩＤＥ（ｉｎｔｅｇｒａｔｅｄ  ｄｅｖｅｌｏｐｍｅｎｔ  ｅｎｖｉｒｏｎｍｅｎｔ、統合開発環境）にプラグイン・コンポーネントを追加的に提供して、ＩＤＥを使ってウェブアプリケーションを作成する開発者が、このようなアプリケーションをサービスプロバイダーのクラウド・コンピューティング・プラットフォームと互換性があるように構築、開発、及びテストすることを助けてもよい。開発者がＩＤＥを使ってウェブアプリケーションを完成させると、プラグイン・コンポーネントは、開発者がウェブアプリケーションをクラウド・コンピューティング・プラットフォームに配備することを助ける。
【背景技術】
【０００２】
[0002]しかし、柔軟で拡張可能なクラウド・コンピューティング・プラットフォームを提供することが複雑であるために、パーズはほんの少数のサービスプロバイダーによってしか提供されていない。現在提供されているクラウド・コンピューティング・プラットフォームでは、クラウド・コンピューティング・プラットフォーム内で立ち上げ可能なウェブアプリケーションを作るために選択され得る、コンピューター言語、アプリケーション・フレームワーク、ランタイム環境、有効なサービス、その他の技術オプションにおいて、限られた選択肢しか提供されていない。例えば、Ｍｉｃｒｏｓｏｆｔの．ＮＥＴ（ドットネット）ランタイム環境だけをサポートするクラウド・コンピューティング・プラットフォームは、Ａｐａｃｈｅ  Ｔｏｍｃａｔアプリケーションサーバー等のオープンソースのランタイム環境を使用してウェブアプリケーションの開発を要求する技術開発ポリシーを採用する企業には適さないだろう。更に、現在のクラウド・コンピューティング・プラットフォームのソフトウェア層は、どの企業でも要求されるカスタマイズ、変更、及び／又は機能の移植性をほとんど不可能にしながらそのソフトウェア層が構築されるハードウェアリソース（例えば、サーバー、ストレージ、データセンター等）と切り離せない程密接に結合されている。このような柔軟性の欠如と限定された選択肢のために、現在のパーズの採用は、ガバナンス、セキュリティ、プライバシー、及びウェブアプリケーションのより高度な制御の問題（サービスレベル要件、拡張性、フォールトトレランス等）に対処する必要のある先端企業よりも、小さな新興企業により適している。
【発明の概要】
【０００３】
[0003]本発明の１つ以上の実施形態は、ウェブアプリケーションの配備のためのクラウド・コンピューティング環境を提供する。このクラウド・コンピューティング環境においては、どのようなアプリケーション・フレームワーク（例えば、Ｒｕｂｙ  ｏｎ  Ｒａｉｌｓ，Ｓｐｒｉｎｇ等）を選択しても、どのようなランタイム環境（例えば、Ａｐａｃｈｅ  Ｔｏｍｃａｔアプリケーションサーバー、Ｍｉｃｒｏｓｏｆｔ．ＮＥＴ等）を選択しても、どのようなプログラミング言語（例えば、Ｊａｖａ（登録商標），Ｒｕｂｙ，Ｓｃａｌａ，Ｐｙｔｈｏｎ等）を選択しても、ウェブアプリケーションを開発できる。このクラウド・コンピューティング環境においては、また、ウェブアプリケーション配備機能性を提供するクラウド・コンピューティング環境のソフトウェアベースのコンポーネントは、それに基づいてソフトウェアベースのコンポーネントが構築される、あらゆるハードウェアベースのインフラストラクチャプラットフォームと切り離される。それにより、単体のラップトップから企業規模のデータセンターまで、どのような種類のハードウェアリソース上でもクラウド・コンピューティング環境のインスタンスを立ち上げることができる。このようなクラウド・コンピューティング環境の柔軟性は、単一の開発者から企業全体まで全てのレベルにおいて、より多く採用できるようになる。少なくとも１つの実施形態は、動的にインスタンス化できる仮想マシンを使うことによって、クラウド・コンピューティング環境のためのリソースを簡単に可変して追加的なコンピューティング・リソース容量を提供する能力を活用する。
【０００４】
[0004]ある実施形態の方法は、ウェブアプリケーションをホスティング環境に配備する方法であって、ウェブアプリケーションは複数のアプリケーション・フレームワークの１つを使って開発され、複数のランタイム環境の１つの内で実行するように構成される。この方法によれば、まず、ホスティング環境は、ランタイム環境と互換性のあるパッケージの形態のウェブアプリケーションを受信する。そのようなパッケージの例としては、Ａｐａｃｈｅ  Ｔｏｍｃａｔランタイム環境と互換性のあるＷＡＲファイルが挙げられる。次に、ホスティング環境は、ホスティング環境によってアクセス可能な有効なサービス（例えば、データベース等）の選択を決定してウェブアプリケーションにバインドし、それぞれの有効なサービス毎のサービス提供データを受信し、それぞれの有効なサービス毎のサービス提供データは、対応する有効なサービスに関連するネットワークアドレス情報を有する。そのようなサービス提供データを受信すると、ホスティング環境は、パッケージにアプリケーション・フレームワークによって課されたデータ組織構造に従って、受信したそれぞれの有効なサービス毎のサービス提供データをパッケージに挿入することにより、有効なサービスをウェブアプリケーションにバインドする。例えば、もしウェブアプリケーションがＳｐｒｉｎｇ  Ｆｒａｍｅｗｏｒｋ（スプリング・フレームワーク）を使って開発されているならば、有効なサービスのためのサービス提供データ（例えば、ネットワークアドレス情報、ログイン認証情報等）は、ＷＡＲファイルによって組織されるＳｐｒｉｎｇ  Ｆｒａｍｅｗｏｒｋ（スプリング・フレームワーク）の組織構成に適合するように、ＷＡＲファイルに挿入されてもよい。次に、ホスティング環境は、ランタイム環境を開始しウェブアプリケーションを立ち上げるための開始スクリプトを生成し、次に、ランタイム環境、開始スクリプト、及びパッケージをウェブアプリケーション配備パッケージにパッケージする。一実施形態では、例えば、ウェブアプリケーション配備パッケージは、単純なｔａｒｂａｌｌであってもよい。次に、ホスティング環境は、ウェブアプリケーションを配備するための有効性を示すアプリケーションコンテナのためのウェブアプリケーション配備パッケージを取得し、次に、ウェブアプリケーション配備パッケージをアプリケーションコンテナに解凍し、それによって、ランタイム環境をインストールし、パッケージをランタイム環境にロードする。本明細書中で後述されるように、アプリケーションコンテナの一例は、仮想マシン（「コンテナＶＭ」と呼ぶ）である。次に、ホスティング環境は、アプリケーションコンテナ内で開始スクリプトを実行し、ランタイム環境を開始し、ウェブアプリケーションを立ち上げる。ウェブアプリケーションの立ち上げに成功すると、ホスティング環境は、アプリケーションコンテナに対するネットワークアドレス情報をルーターに通知することにより、ルーターがウェブアプリケーションに対するウェブ・ブラウザのリクエストをアプリケーションコンテナにルーティングすることができるようになる。
【図面の簡単な説明】
【０００５】
【図１Ａ】[0005]図１Ａは、サービスプロバイダーのためのクラウド・コンピューティング・アーキテクチャーの第１実施形態を示す。
【図１Ｂ】[0006]図１Ｂは、サービスプロバイダーのためのクラウド・コンピューティング・アーキテクチャーの第２実施形態を示す。
【図２Ａ】[0007]図２Ａは、クラウド・コンピューティング環境のサービス提供者のためのコンポーネント・アーキテクチャーを示す。
【図２Ｂ】[0008]図２Ｂは、クラウド・コンピューティング環境のサービス提供者層を示す。
【図３】[0009][0010]図３は、クラウド・コントローラにより配備されるウェブアプリケーションの準備のフロー図を示す。
【図４】[0011]図４は、クラウド・コンピューティング・アーキテクチャー内でウェブアプリケーションをホストするコンテナ仮想マシンを示す。
【図５】[0012]図５は、コンテナ仮想マシン内でウェブアプリケーションを配備するフロー図を示す。
【発明を実施するための形態】
【０００６】
[0013]図１Ａは、サービスプロバイダーのためのクラウド・コンピューティング・アーキテクチャーの一実施形態を示す。企業１００は、サービスプロバイダー１０２によって配備されるウェブアプリケーションを開発することを望む。例えば、サービスプロバイダー１０２は、（例えば、ＲＥＳＴ（Ｒｅｐｒｅｓｅｎｔａｔｉｏｎａｌ  Ｓｔａｔｅ  Ｔｒａｎｓｆｅｒ）  ＡＰＩｓ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅｓ、アプリケーション・プログラミング・インタフェース）、又は、カスタムデータベース１０４又はＣＲＭ（Ｃｕｓｔｏｍｅｒ  Ｒｅｌａｔｅｄ    Ｍａｎａｇｅｍｅｎｔ、顧客関係管理）サービス１０６（又はサービスプロバイダー１０２によって提供されるその他のサービス）等のその他のクライアント・サーバー通信プロトコル等でアクセス可能な）、企業１００が開発されたウェブアプリケーションを通じてアクセスを望むいくつかのサービスを有してもよい。一方、サービスプロバイダー１０２は、クラウド・コンピューティング・プラットフォーム・プロバイダー１０８によって提供されるリソースを使って、企業がウェブアプリケーションを配備できるクラウド・コンピューティング環境を提供する。
【０００７】
[0014]クラウド・コンピューティング・プラットフォーム・プロバイダー１０８は、クラウド・コンピューティング環境１１２が実行され得るインフラストラクチャー・プラットフォーム１１０をサービスプロバイダー１０２に提供する。特に、図１Ａの実施形態では、インフラストラクチャー・プラットフォーム１１０は、サーバー１１６１〜１１６ｎや例えばＳＡＮ１１８等の１つ又は複数のストレージ・アレイ・ネットワーク（ＳＡＮ）等のハードウェア・リソース１１４を有し、それらはサーバー１１６１〜１１６ｎにわたって複数の仮想マシンの実行をサポートする仮想化環境１２０を提供するように構成されている。以下に更に説明するように、それらの仮想マシンは、クラウド・コンピューティング環境１１２を構成する様々なサービスや機能を提供する。
【０００８】
[0015]図１Ａの仮想化環境１２０は、更に、（例えば、一実施形態の仮想マシンで動作するプロセスとして実装される）編成部１２２を有する。編成部１２２は、インフラストラクチャー・リソースの消費レベル及びクラウド・コンピューティング環境１１２の要求を、（例えば、下記に詳説されるアドレシング・アンド・ディスカバリー層１３２を通じてルーティングされる通信をモニタリングすることにより）モニターし、追加的なインフラストラクチャー・リソースをクラウド・コンピューティング環境に、必要に応じて又は要望に応じて、提供する。例えば、もし、クラウド・コンピューティング環境１１２が新しく実装されたウェブアプリケーションをホストするために更に仮想マシンを必要とする場合や、ピーク時の需要を満たすために現在実行中のウェブアプリケーションを調整する場合には、編成部１２２は、それらの必要性を満たすために、サーバー１１６１〜１１６ｎの仮想マシンのインスタンス化を開始・管理することができる。図１Ａに類似の実施形態の実装の例では、仮想化環境１２０は、サーバー１１６１〜１１６ｎ上のカリフォルニア州パロアルトのＶＭｗａｒｅ，Ｉｎｃ．のＶＭｗａｒｅ  ＥＳＸ（商標）ベースのハイパーバイザーを実行することにより実装されてもよい（もちろん、Ｘｅｎ（登録商標）やＭｉｃｒｏｓｏｆｔ  Ｈｙｐｅｒ−Ｖ仮想化技術を含むその他の仮想化技術が、本技術と調和して使用され得ると理解されるべきである）。
【０００９】
[0016]図１Ａの実施形態では、クラウド・コンピューティング環境１１２は、配備されたウェブアプリケーションをホストするためにインスタンス化される複数の仮想マシン（コンテナＶＭ１２６１〜１２６ｍと称す）を有するアプリケーション実行スペース１２４をサポートする。例えば、サービスプロバイダー１０２のクラウド・コンピューティング・プラットフォーム上のウェブアプリケーション１２５の企業による配備は、クラウド・コンピューティング・プラットフォーム・プロバイダー１０８におけるアプリケーション実行スペース１２４のコンテナＶＭ１２６１内のウェブアプリケーション１２５のホスティングとなる。
【００１０】
[0017]ウェブアプリケーション１２５は、クラウド・コンピューティング環境１１２によって提供される（例えば、１つ又は複数の仮想マシンで実行される）ベースサービス１２８の１群及びサービスプロバイダー１０２によって直接提供され得るような第三者のサービス（例えば、カスタムデータベース１０４、ＣＲＭサービス１０６等）にアクセスできる。例えば、リレーショナルデータベースのサービス（例えば、ＭｙＳＱＬ等）、モニタリングサービス、バックグラウンドタスクスケジューラ、ロギングサービス、メッセージングサービス、メモリオブジェクトキャッシングサービス等が、一実施形態においてベースサービス１２８を構成してもよい。サービス提供者１３０は、これらの有効なサービス（例えば、ベースサービス１２８及びカスタムデータベース１０４やＣＲＭサービス１０６のような第三者提供サービス）とクラウド・コンピューティング環境１１２のその他のコンポーネント（例えば、クラウド・コントローラ１３４、ヘルスマネージャー１３８、ルーター１３６、コンテナＶＭｓ１２６１〜１２６ｍ等）との間の（例えば、１つ又は複数の仮想マシンで実行される）通信仲介者として機能し、ウェブアプリケーション配備プロセスの間にウェブアプリケーションにそれらの有効なサービスを提供・バインドするタスクを助ける。図２Ａは、一実施形態のクラウド・コンピューティング環境１１２のサービス提供者１３０のためのコンポーネント・アーキテクチャーを示す。図２Ａの実施形態では、サービス提供者１３０は、クラウド・コンピューティング環境１１２で有効なそれぞれのサービスに対応するシム又は同様のスタブ・コンポーネントを保持する（例えば、ベースサービス１２８ａ及び１２８ｂ並びにＣＲＭサービス１０６にそれぞれ対応するシム２００ａ、２００ｂ、及び２００ｘを参照）。それぞれのシム・コンポーネント自身は、サービスの種類の説明、（マルチテナント対シングルテナント等の）サービスの特徴（シングルテナント等に対して例えば、マルチテナント）、サービスのログイン認証情報（例えば、ルートユーザ名、パスワード等）、サービスのネットワークアドレス及びポート番号等の、対応するサービスのサービス提供データを保持する。それぞれのシム・コンポーネントは、そのようなサービスによってサポートされているＡＰＩ又は類似の通信プロトコルを利用して、対応するサービスと通信するように構成されている。例えば、配備の時に、ウェブアプリケーション１２５をベースサービス１２８ａにバインドするために、サービス提供者１３０は、シム２００ａをベースサービス１２８ａにログインさせるようにし、ウェブアプリケーション１２５のためだけの新しい認証情報（例えば、新しいユーザーネーム及びパスワード）を生成し、これにより、実行時にそれらの認証情報を使って、ウェブアプリケーション１２５はベースサービス１２８ａに直接ログイン及びアクセスができる。サービス提供者１３０は、更に、アドレシング・アンド・ディスカバリー層通信クライアント２０５を有し、アドレシング・アンド・ディスカバリー層通信クライアント２０５は、サービス提供者１３０がアドレシング・アンド・ディスカバリー層１３２を通じてクラウド・コンピューティング環境１１２のその他のコンポーネントと通信することを可能にする。
【００１１】
[0018]図２Ａに示されるサービス提供者１３０は、クラウド・コンピューティング環境１１２の有効なサービスとその他のコンポーネントとの間の通信仲介者の一実施形態にすぎず、別の実施形態は本教示と調和するように実装され得ると解されなければならない。例えば、図２Ｂは、独立して動作するシム・コンポーネントの抽象化レイヤとしてのサービス提供者１３０の別の実施形態を示す。それぞれのシム・コンポーネント（例えば、２１０ａ〜２１０ｂ〜２１０ｘ）は、例えば独立したプロセスとして動作し、それぞれ独自のアドレシング・アンド・ディスカバリー層通信クライアント（例えば、それぞれ２１５ａ、２１５ｂ、２１０ｘ）を有し、アドレシング・アンド・ディスカバリー層１３２と相互作用する。図２Ｂに類似の実施形態では、シム・コンポーネントは、アドレッシング・アンド・ディスカバリー層１３２と効果的に通信できる限り、別の場所に実装されてもよい。例えば、ＣＲＭサービス１０６に対応するシム２１０ｘは、サービスプロバイダー１０２のサーバーで動作するプロセスとして実装されてもよく、他方、ベースサービス１２８ａ及び１２８ｂにそれぞれ対応するシム・コンポーネント２１０ａ及び２１０ｂがクラウド・コンピューティング・プラットフォーム・プロバイダー１０８で割り当てられている仮想マシンで動作するプロセスとして実装され得る。
【００１２】
[0019]図１Ａに戻り、アドレシング・アンド・ディスカバリー層１３２は、共通インターフェースを提供し、この共通インターフェースを通じて、アプリケーション実行スペース１２４内で、サービス提供者１３０、クラウド・コントローラ１３４、ヘルスマネージャー１３８、ルーター１３６、及びコンテナＶＭ１２６１〜１２６ｍ等のクラウド・コンピューティング環境１１２のコンポーネントが通信し、通知を受信できる。例えば、サービス提供者１３０は、クラウド・コンピューティング環境１１２内のウェブアプリケーションの配備においてそのようなサービスのサービス提供データを伝搬したりサービスの可否をブロードキャストしたりするために、アドレシング・アンド・ディスカバリー層１３２を通じて通信してもよい。同様に、コンテナＶＭ１２６１は、ウェブアプリケーション１２５の配備の成功を示すためや配備成功したウェブアプリケーション１２５のルーティング情報（例えば、ホスト名及びネットワークアドレス情報、バインドされたポート番号等）を提供するために、アドレシング・アンド・ディスカバリー層１３２を通じて通知をブロードキャストしてもよい。一実施形態では、アドレシング・アンド・ディスカバリー層１３２は、（例えば、１つ又は複数の仮想マシンで実行される）メッセージ・ブローカリング・サービスとして実装され、メッセージ・ブローカリング・サービスは、クラウド・コンピューティング環境１１２のコンポーネントがメッセージを交換し、通知及びその他の情報をブロードキャストすることができる共通のプロトコル及びメッセージフォーマットを定義する。このような実施形態においては、クラウド・コンピューティング環境１１２のコンポーネントは、メッセージ・ブローカリング・サービスとコネクションを作り（例えば、メッセージ・ブローカリング・サービスを「購読する」とも呼ぶことがある）、例えば、公知の認証技術（例えば、パスワード）を通じてコネクションを作り、メッセージ・ブローカリング・サービスへ接続されると、クラウド・コンピューティング環境１１２のコンポーネントは、それらも、メッセージ・ブローカリング・システムを購読したその他のコンポーネントとの間で、メッセージ、通知、及びその他の類似の情報を提供、受信、及び要求することができる。実施形態で使用され得るメッセージ・ブローカリング・サービスの一例は、ＲａｂｂｉｔＭＱ（商標）であり、ＲａｂｂｉｔＭＱ（商標）は、ＡＭＰＱ（Ａｄｖａｎｃｅｄ  Ｍｅｓｓａｇｅ  Ｑｕｅｕｉｎｇ  Ｐｒｏｔｏｃｏｌ）オープンプロトコル規格に基づいている。しかしながら、アドレシング・アンド・ディスカバリー層１３２のために、そのようなメッセージ・ブローカリング・サービス以外の別のインターフェースや通信スキームが実装され得ると解されるべきである。
【００１３】
[0020]クラウド・コントローラ１３４（例えば、１つ又は複数の仮想マシンで動作される）は、配備のためにクラウド・コンピューティング環境１１２に提出されるウェブアプリケーションのための配備プロセスを編成する。クラウド・コントローラ１３４は、クラウド・コンピューティング環境１１２に提出されるウェブアプリケーションを受信し、詳細に後述されるように、クラウド・コンピューティング環境１１２のその他のコンポーネントと相互作用し、提出されたウェブアプリケーションによって要求される有効なサービスをバインドし、配備のための有効なコンテナＶＭ（例えば、コンテナＶＭ１２６１〜１２６ｍ）に送信するためにウェブアプリケーションをパッケージ化する。図１Ａに示される実施形態では、クラウド・コントローラ１３４によって受信されるウェブアプリケーション１２５等のウェブアプリケーションは、開発者のラップトップ又は端末にインストールされる統合開発環境（ＩＤＥ）１４２を使って、企業１００のアプリケーション開発者１４０によって開発されてもよい。ＩＤＥ１４２は、サービスプロバイダー１０２によって提供されるインストールされたプラグインを含み、プラグインは、ウェブアプリケーション１２５の開発及びクラウド・コンピューティング環境１１２への提出を容易にする。ウェブアプリケーション上に企業規模のルール（例えば、許可されたアクセス可能なサービス、コンピューティング・リソースの消費の制限等）を課す能力を企業１００に提供するために、サービスプロバイダー１０２は、企業１００にポリシー・エンジン１４４を提供して動作させてもよい。例えば、ポリシー・エンジン１４４は、企業１００でプロクシーサーバーとして動作する。図１Ａの実施形態で示されるように、詳細に後述されるように、ポリシー・エンジン１４４は、クラウド・コントローラ１３４と、アプリケーション開発者１４０や管理者１４６等のクラウド・コントローラ１３４を通じてクラウド・コンピューティング環境１１２と通信するエンティティとの間の通信路に配設される。例えば、ポリシー・エンジン１４４は、開発者１４０によって配備のために提出されるウェブアプリケーションを傍受し、ウェブアプリケーションをクラウド・コンピューティング環境１１２に配備のためにリリースする前に、そのような提出されたウェブアプリケーションの要求された要件を検査する。企業１００の管理者１４６は、ポリシー・エンジン１４４のためのポリシーを設定できるだけでなく、ポリシー・エンジン・ユーザー・インターフェース１４８を通じてクラウド・コンピューティング環境１１２に現在配備されているウェブアプリケーションの分析を見ることができ、ポリシー・エンジン・ユーザー・インターフェース１４８はポリシー・エンジン１４４と通信可能であり、ウェブ・ブラウザ又はその他のクライアントアプリケーションを通じてアクセスされることができる。一実施形態では、ポリシー・エンジン１４４は、更に、企業１００内で局所的にクラウド・コントローラ１３４と同じか類似の機能を提供することができる。尚、ポリシー・エンジン１４４は、サービスプロバイダー１０２が企業１００に提供し得るオプション機能であって、別の実施形態や実装ではポリシー・エンジン１４４を使わないか又は含まなくてもよい、と解するべきである。例えば、図１Ａに示されるように、アプリケーション開発者１４０及び管理者１４６は、ポリシー・エンジン１４４を使わずに、クラウド・コントローラ１３４に直接通信してもよい。更に、別の実施形態においては、ポリシー・エンジン１４４は、クラウド・コントローラ１３４への通信路上の場所に配設されてもよく、例えば、図１Ａに示されるように、企業１００よりはむしろサービスプロバイダー１０２やクラウド・コンピューティング・プラットフォーム・プロバイダー１０８内に配設されてもよい、と解されるべきである。また、異なる組織のための異なるポリシーを実施する複数のポリシー・エンジン１４４が、例えば企業１００及びサービスプロバイダー１０２内等、クラウド・コントローラ１３４への通信路上に配設されてもよい、と解されるべきである。クラウド・コンピューティング環境１３４は、更に、（例えば、１つ又は複数の仮想マシンで動作される）ヘルスマネージャー１３８を有し、ヘルスマネージャー１３８はクラウド・コンピューティング環境１１２のその他のコンポーネントによってアドレシング・アンド・ディスカバリー層１３２にブロードキャストされるメッセージをモニタリングすることによってクラウド・コンピューティング環境１１２の「健康状態」を追跡・維持する。例えば、ヘルスマネージャー１３８は、配備されたウェブアプリケーションのインスタンスのエラーを検出し、ウェブアプリケーションを再起動するためにクラウド・コントローラ１３４に要求を自動的にブロードキャストしてもよい。同様に、更に、ヘルスマネージャー１３８は、それ自身が、クラウド・コンピューティング環境１１２のエラーの発生した有効なサービス又はその他のコンポーネント（例えば、クラウド・コントローラ１３４、サービス提供者１３０、ルーター１３６等）の再起動を開始するように構成されていてもよい。
【００１４】
[0021]クラウド・コントローラ１３４が、コンテナＶＭ１２６１でのウェブアプリケーション１２５の配備の編成に成功すると、企業のカスタマー１５０は、コンピューターラップトップ又はその他のコンピューター端末に存在する、例えば、ウェブ・ブラウザ又はその他の適切なクライアントアプリケーションを通じて、ウェブアプリケーション１２５にアクセスすることができる。（例えば、１つ又は複数の仮想マシンで動作される）ルーター１３６は、ウェブ・ブラウザのアクセス要求（例えば、ユニフォーム・リソース・ロケーター即ちＵＲＬ）を受信し、要求をウェブアプリケーション１２５をホストするコンテナＶＭ１２６１にルーティングする。より一般的に、ルーター１３６は、ＵＲＬと配備されたウェブアプリケーションとの間の内部ルーティングテーブルにマッピングを保持し、要求されたウェブアプリケーションをホストする適切なコンテナＶＭにカスタマーからのＵＲＬ要求を正しくルーティングする（また、ウェブアプリケーションのインスタンスのロードバランシングの維持等も行う）。詳細に後述されるように、コンテナＶＭがウェブアプリケーションの配備に成功し、従って、アドレシング・アンド・ディスカバリー層１３２を通じてウェブアプリケーションのためのルーティング情報（例えば、ホスト名、ネットワークアドレス情報、ポート番号等）をブロードキャストする時、アドレッシング・アンド・ディスカバリー層１３２を通じてルーター１３６によってそれらのマッピングが受信される。
【００１５】
[0022]図１Ａの実施形態は例示に過ぎず、別のクラウド・コンピューティング・アーキテクチャーが本明細書中の本教示と調和するように実装され得ると解さするべきである。例えば、図１Ａではクラウド・コンピューティング・プラットフォーム・プロバイダー１０８によってホスティングされるインフラストラクチャー・プラットフォーム１１０上でクラウド・コンピューティング環境１１２を実装するが、クラウド・コンピューティング環境１１２はあらゆる種類のハードウェアインフラストラクチャー上で、クラウド・コンピューティング・プラットフォーム・プロバイダー１０８以外のエンティティによって実装されてもよいと解されるべきである。図１Ｂは、インフラストラクチャー・プラットフォーム１１０がサービスプロバイダー１０２そのものによって提供されるクラウド・コンピューティング・アーキテクチャーの別の実施形態を示す。更に、インフラストラクチャー・プラットフォーム１１０が、クラウド・コンピューティング環境１１２のコンポーネントが１つ又は複数の仮想マシンで動作するプロセス又はデーモンとして実装される仮想化環境１２０を有する図１Ａとは異なり、図１Ｂのクラウド・コンピューティング環境１１２のコンポーネントは、サーバー１１６１〜１１６ｎ等のハードウェアリソース１１４上で直接プロセス又はデーモンとして、非仮想化インフラストラクチャー・プラットフォーム１１０で実行される。実施形態は、コンピューティング環境１１２とインフラストラクチャー１１０との間の通信が、アドレシング・アンド・ディスカバリー層１３２に接続することによりハードウェアリソースの消費をモニタリングするインフラストラクチャー・プラットフォーム１１０の編成部１２２を通じてしか発生しない、クラウド・コンピューティング環境１１２及びインフラストラクチャー・プラットフォーム１１０を緩く結合するように構成し得ると解するべきである。そのような緩く結合した実施形態においては、クラウド・コンピューティング環境１１２は、ラップトップやパーソナルコンピューター上を含むあらゆるインフラストラクチャー・プラットフォームに実装され得ると解するべきである（例えば、この場合、クラウド・コンピューティング環境１１２のそれぞれのコンポーネントは、ラップトップ又はパーソナルコンピューター上の別個のプロセス又はデーモンとして動作する）。
【００１６】
[0023]図３は、クラウド・コントローラ１３４により配備されるウェブアプリケーションの準備のフロー図を示す。ステップ３００では、ＩＤＥ１４２のプラグインは、開発者１４０によって開発されたウェブアプリケーションを分析し、ウェブアプリケーションの名前及びウェブアプリケーションを開発するために使用されるアプリケーション・フレームワーク（例えば、Ｓｐｒｉｎｇ、Ｒｕｂｙ  Ｏｎ  Ｒａｉｌｓ等）等の、「セットアップ」特性を決定する。例えば、一実施形態では、ＩＤＥ１４２のプラグインは、ウェブアプリケーションを構成する様々なファイル（及び、おそらく、それらのファイルの内容）の組織的構造を分析しそのようなアプリケーション・フレームワークに特有の性質を特定することにより、ウェブアプリケーションを開発するのに使われたそれらのアプリケーション・フレームワークを特定する（例えば、Ｓｐｒｉｎｇ、Ｒｕｂｙ  Ｏｎ  Ｒａｉｌｓ等）。ステップ３０２では、ＩＤＥプラグインは、セットアップ特性をクラウド・コントローラ１３４に送信し、クラウド・コントローラ１３４は、ステップ３０４においてこのようなセットアップ特性を受信する。ステップ３０６において、ＩＤＥプラグイン１３４は、更に、ウェブアプリケーション（又はその一部）をクラウド・コントローラ１３４に提出し、一方、クラウド・コントローラ１３４は、ステップ３０８で、提出されたウェブアプリケーションを受信する。一実施形態では、提出されたウェブアプリケーションは、Ｊａｖａウェブアプリケーション・アーカイブ即ち「ＷＡＲ」ファイルの形式を取り、Ｊａｖａウェブアプリケーション・アーカイブは、Ｊａｖａウェブアプリケーションを構成する、動的な（例えば、Ｊａｖａ  Ｓｅｒｖｅｒ  Ｐａｇｅｓ等）ウェブページ、静的なウェブページ、Ｊａｖａサーブレット、Ｊａｖａクラス、及びその他のプロパティ、構成及びリソースファイルを含む。しかしながら、ウェブアプリケーションは、ウェブアプリケーションが配備されるランタイム環境（例えば、Ａｐａｃｈｅ  Ｔｏｍｃａｔアプリケーションサーバー等）と互換性のあるその他のあらゆる種類のパッケージとして、ＩＤＥプラグインによって提出され得る、と解するべきである。例えば、別の実施形態では、提出されたウェブアプリケーションは、テープアーカイブファイル、即ち「ｔａｒ」ファイルとしてまとめられた、ＷＡＲファイルに類似の、（ｔａｒｂａｌｌとも呼ばれる）複数のファイルを有する。更に、ウェブアプリケーションそのものを提出するよりも、例えば、ユニフォーム・リソース・ロケーター（「ＵＲＬ」）、Ｇｉｔリポジトリ又は類似のその他のウェブアプリケーションへの参照を提供することにより、ウェブアプリケーションをダウンロード又はウェブアプリケーションにアクセスする参照を提供することにより、別の実施形態ではステップ３０６でウェブアプリケーションを提出し得る、と解されるべきである。そのような実施形態では、従って、ステップ３０８のウェブアプリケーション受信のステップは、ウェブアプリケーションを取得するために提供された参照を使用することになる。次に、ステップ３１０では、ＩＤＥプラグインはクラウド・コントローラ１３４に要求を送信し���クラウド・コンピューティング環境１１２で有効なサービスを確認する。例えば、もしウェブアプリケーションがデータベースへのアクセスが必要ならば、ＩＤＥプラグインは、クラウド・コンピューティング環境１１２で有効なデータベースサービスのリスト（例えば、ＭｙＳＱＬ、Ｏｒａｃｌｅ等）を具体的に要求してもよい。そのような要求を受信すると、ステップ３１２で、クラウド・コントローラ１３４は、有効なサービスに関するサービス提供データのリクエスト自体をアドレシング・アンド・ディスカバリー層１３２に伝搬する。ステップ３１４でこの要求をサービス提供者１３０が受信すると、サービス提供者１３０のシム・コンポーネント  （例えば、図２Ａ及び図２Ｂを参照）は、ステップ３１６で、アドレシング・アンド・ディスカバリー層１３２を通じて対応するサービスのためにサービス提供データを提供する。
【００１７】
[0024]そのようなサービス提供データを受信すると、次にステップ３１８において、クラウド・コントローラ１３４は、ステップ３１０で要求されたように、有効なサービスの識別をＩＤＥ１４２に送信することができる。有効なサービスの識別を受信すると、次にステップ３２０において、ＩＤＥプラグインは、望まれる有効なサービスの選択を決定及び送信し、提出されたウェブアプリケーションにバインドする。ある実施形態においては、そのような選択のプロセスは、ＩＤＥに設定された事前設定選好に従って自動化されてもよく、又はその他の実施形態においては、そのような選択のプロセスは開発者１４０によって手動選択されることを含んでもよい、と解されるべきである。サービスの選択を受信すると、ステップ３２２において、クラウド・コントローラ１３４は、「ステージング・プロセス」を開始し、提出されたウェブアプリケーションのＷＡＲファイル（又はその他のパッケージ）の内容をステージングさもなければ変更し、選択されたサービスをウェブアプリケーションにバインドする。一実施形態では、このステージング・プロセスは、ＷＡＲファイルを解凍するかそれを構成するディレクトリ構造及びファイルを抽出し、従って新しいファイルを挿入及び／又は既存のファイルの変更を行い選択されたサービスをバインドし、ＷＡＲファイルを再度圧縮する（例えば、さもなければ、以前のＷＡＲファイルを置き換える新しいＷＡＲファイルを作成する）ことを含む。例えば、ステップ３２４では、クラウド・コントローラ１３４と選択されたサービスのためのサービス提供者１３０のシム・コンポーネントとは、アドレシング・アンド・ディスカバリー層１３２を通じてメッセージを交換してもよく、サービスログイン認証情報（例えば、ユーザーネーム／パスワードの組み合わせ）、ホスト名、ネットワークアドレス、及びポートナンバー等の追加的なサービス提供データを確立するか、さもなければ取得し、提出されたウェブアプリケーションが、配備に当たりサービスと通信することを可能にするのに必要になるかもしれない必須のソフトウェアドライバ／ライブラリ及びサービスへアクセスする。次に、クラウド・コントローラ１３４は、ステージング・プロセスの一部として、ＷＡＲファイルの内容にそのようなサービス提供データを組み込むことができる。一実施形態では、提出されたウェブアプリケーションを開発するのに使われたアプリケーション・フレームワークを特定するセットアップ情報（即ち、ステップ３００でクラウド・コントローラ１３４によって受信されたもの）は、クラウド・コントローラ１３４がＷＡＲファイルの内容にサービス提供データを正しく挿入することを可能にし、アプリケーション・フレームワークによって課されたＷＡＲファイルのデータ組織構造に基づき選択されたサービスをバインドする（例えば、サービスのためのホスト名、ネットワークアドレス、ポート番号、ログイン認証情報等を反映する、追加の環境変数、設定ファイル内のエントリ、追加のシステムパラメータ等を挿入する）。例えば、もし、アプリケーション・フレームワークがＳｐｒｉｎｇ  Ｆｒａｍｅｗｏｒｋ（スプリング・フレームワーク）ならば、クラウド・コントローラ���３４は、Ｓｐｒｉｎｇ  Ｆｒａｍｅｗｏｒｋ（スプリング・フレームワーク）で開発されたウェブアプリケーションがＷＡＲファイル内でそのデータを管理する様態に従って、サービス提供データをＷＡＲファイルの内容に挿入する。ＷＡＲファイルの内容が変更されて選択されたサービスが提出されたウェブアプリケーションにバインドされると、ステップ３２６において、クラウド・コントローラ１３４がコンテナＶＭによって実行可能な開始スクリプトファイルを生成し、ランタイム環境を開始し、ランタイム環境で提出されたウェブアプリケーションを立ち上げる。例えば、もし、ＷＡＲファイルがＡｐａｃｈｅ  Ｔｏｍｃａｔアプリケーションサーバーのようなランタイム環境に配備されることを意図されているならば、開始スクリプトファイルは、Ａｐａｃｈｅ  Ｔｏｍｃａｔを開始し、次に、ウェブアプリケーション１２５を含むサーブレット（又は複数のサーブレット）を開始するコマンドを含んでもよい（例えば、ネット開始コマンド等によって）。
【００１８】
[0025]ステップ３２８において、クラウド・コントローラ１３４は、次に、有効なコンテナＶＭによって解凍可能なウェブアプリケーション配備パッケージを作る。一実施形態では、そのようなウェブアプリケーション配備パッケージは、「ｔａｒ」ファイル（ｔａｒｂａｌｌとも呼ばれる）であり、「ｔａｒ」ファイルは、開始スクリプトファイル、コンテナＶＭにインストールされ開始されるランタイム環境のインスタンス（例えば、Ａｐａｃｈｅ  Ｔｏｍｃａｔ等）、及びウェブアプリケーション１２５のためのＷＡＲファイル（例えば、ランタイム環境のインスタンスのディレクトリ構造内の適切なディレクトリに埋め込まれたもの）を含む。別の実施形態は、更に、企業１００のＩＤＥプラグインとクラウド・コントローラ１３４との間の通信（及び使用されるネットワーク帯域幅）を合理化する最適化を含んでもよい。例えば、一実施形態では、ステップ３０２において、セットアップ特性の送信の一環として、ＩＤＥプラグインは、ＷＡＲファイル内のそれぞれのファイルのファイルサイズとハッシュ値（例えば、ＳＨＡ−１値等）の「指紋」リストを含んでもよい。一方、クラウド・コントローラ１３４は、ハッシュ値／ファイルサイズのペアの指紋エントリの独自のテーブルを保持し、それぞれのエントリが、保存されているファイルに対応する。ＩＤＥプラグインからリストを受信すると、クラウド・コントローラ１３４は、テーブルを参照してＷＡＲファイル内のファイルのうちどれかを既に有するかどうか判定する。このようにして、クラウド・コントローラ１３４は、クラウド・コントローラ１３４がテーブル内にエントリを有さない、関連付けられたハッシュ値及びファイルサイズがあるファイルだけを特に要求することができる。このような最適化は、ＩＤＥプラグインからクラウド・コントローラ１３４に送信されるデータ量を大きく減少させることができる。例えば、もし、既にアップロードされたウェブアプリケーションの１つのライブラリファイルの数行のコードだけが変更された場合、上記指紋式プロセスは、ＩＤＥプラグインがＷＡＲファイル全体ではなくライブラリファイル自体だけを送信することを可能にする。同様に、更に、異なるウェブアプリケーションは共通のアプリケーション・フレームワークファイルを共有することが多いので、上記指紋式プロセスは、異なるウェブアプリケーションのアップロード回数を大きく減らすことができる。ＩＤＥ（又はＩＤＥプラグイン）が図３に示されるものの、別の実施形態はその他のＩＤＥ以外の環境を使ってＩＤＥプラグインによって実行される図３のフローを開始し得ると解するべきである。例えば、開発者１４０は、（例えば、ＨＴＴＰリクエスト等の）ネットワーク要求を開始させることができる、コマンドラインインターフェイス（「ＣＬＩ」）、他のアプリケーション、又はその他の同様のプロセス若しくはツールを通じて、クラウド・コントローラ１３４と相互作用し、クラウド・コントローラ１３４と通信してもよい。更に、実施形態は、ＩＤＥプラグイン（又は、ＣＬＩ又は他の同様のツール）とクラウド・コントローラ１３４との間の通信を傍受するポリシー・エンジン１４４を有してもよく、（例えば、事前に定���されたポリシーに基づいてステップ３２０でサービスを選択する等して）設定されたポリシーを順守するために通信を変更する、及び／又はＩＤＥプラグインの代わりにステップを実行する、と解するべきである。プラグインＩＤＥ（又は、ＣＬＩ又はその他のアプリケーション若しくはツール）で提供されるような本明細書中に記載される機能性は、別の実施形態においては、代わりにクラウド・コントローラ１３４内等のクラウド・コンピューティング環境１１２の内部で提供され得ると解されるべきである。例えば、別の一実施形態においては、ステップ３００での「セットアップ」特性の一部としてのアプリケーション・フレームワークの決定は、ウェブアプリケーションの受信時に、クラウド・コントローラ１３４によってなされてもよい。
【００１９】
[0026]図４は、クラウド・コンピューティング・アーキテクチャー内で、ウェブアプリケーションをホストするための、コンテナ仮想マシンを示す。そのようなコンテナ仮想マシンは、例えば図１Ａで上述したように仮想化プラットフォーム１２０によって、クラウド・コンピューティング・アーキテクチャーに提供される。コンテナＶＭ１２６１は、ｘ８６アーキテクチャプラットフォーム等のサーバー・グレイド・ハードウェアプラットフォーム４０２を有するサーバー１１６１〜１１６ｎの１つ（例えば、図４に示されるサーバー１１６１）によって、ホスティングされる。このようなハードウェアプラットフォームは、ハードドライブ等のローカル記憶ユニット４０４、ネットワークアダプタ（ＮＩＣ４０６）、システムメモリ４０８、プロセッサ４１０、及び、他のＩ／Ｏ装置を含んでもよい。Ｉ／Ｏ装置の例として、（図４に示されない）マウスやキーボードが挙げられるが、これに限定されるものではない。
【００２０】
[0027]以下ではハイパーバイザー４１２とも呼ばれる仮想化ソフトウェア層は、ハードウェアプラットフォーム４０２の上にインストールされる。ウェブアプリケーションをホスティングするために、その中で複数のコンテナＶＭが同時にインスタンス化され実行される、仮想マシン実行スペース４１４を、ハイパーバイザー４１２はサポートする。示されるように、仮想実行スペース４１４は、コンテナＶＭ１２６１〜１２６ｘをサポートする。コンテナＶＭ１２６１〜１２６ｘのそれぞれについて、ハイパーバイザー４１２は、仮想ハードドライブ４１８１、仮想ＮＩＣ４２０１、仮想ＣＰＵ４２２１、及びＶＭ１２６１のためのＲＡＭ４２４１等のエミュレートされたハードウェアを含む、対応する仮想ハードウェアプラットフォーム（即ち、仮想ハードウェアプラットフォーム４１６１〜４１６ｘ）を管理する。例えば、仮想ハードウェアプラットフォーム４１６１は、標準的なｘ８６ハードウェアアーキテクチャと同等に機能してもよく、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）、Ｌｉｎｕｘ（登録商標）、Ｓｏｌａｒｉｓ（登録商標）ｘ８６、ＮｅｔＷａｒｅ、ＦｒｅｅＢＳＤ等のあらゆるｘ８６がサポートされたオペレーティングシステムがゲスト・オペレーティングシステム４２６としてインストールされコンテナＶＭ１２６１のためにウェブアプリケーション１２５を実行してもよい。しかしながら、別の実施形態においては、コンテナＶＭ１２６１〜１２６ｘのそれぞれが、１つのウェブアプリケーションではなく複数のウェブアプリケーションの実行をサポートしてもよい、と解されるべきである。ハイパーバイザー４１２は、ゲスト・オペレーティングシステム４２６から仮想プラットフォーム４１６１へのＩ／Ｏ要求を、ハードウェアプラットフォーム４０２への対応する要求に変形する任務を負う。図４の実施形態では、コンテナＶＭ１２６１１のゲスト・オペレーティングシステム４２６が配備エージェント４２８の実行をサポートし、配備エージェント４２８は、プロセス又はデーモンであり、（例えば、アドレシング・アンド・ディスカバリー層１３２）を通じてクラウド・コントローラ１３４と通信し、ウェブアプリケーション配備パッケージを受信・解凍し、ルーター１３６と通信し、コンテナＶＭ１２６１．への配備が成功したウェブアプリケーションのためのネットワークルーティング情報を提供する。ある実施形態では、コンテナＶＭのインスタンス化によって、配備エージェント４２８が自動的に立ち上げられる。ゲスト・オペレーティングシステム４２６は、更に、その中でウェブアプリケーション１２５が動作するランタイム環境４３０のインストール及び実行をサポートする。例えば、一実施形態では、ランタイム環境４３０は、Ｊａｖａベースのウェブアプリケーションの配備をサポートするＪａｖａ仮想マシン及び様々なＡＰＩライブラリを含む（例えば、Ａｐａｃｈｅ  Ｔｏｍｃａｔ等の）Ｊａｖａアプリケーションサーバーであってもよい。図３に照らして説明されるように、そのようなランタイム環境４３０は、クラウド・コントローラ１３４によって作られるウェブアプリケーション配備パッケージの一部として、コンテナＶＭによって受信されてもよい��
【００２１】
[0028]図４の仮想化コンポーネントを記述するために使用された様々な用語、レイヤー及び分類は、それらの機能性又は本発明の思想若しくは範囲から逸脱することなく、異なって認識されてもよいと解されるべきである。例えば、仮想ハードウェアプラットフォーム４１６１〜４１６ｘは、仮想マシンモニター（ＶＭＭ）４３４１〜４３４ｘの一部として考えられてもよく、仮想マシンモニター（ＶＭＭ）４３４１〜４３４ｘは、ハイパーバイザー４１２とそれぞれのコンテナＶＭとの間の調整動作に必要な仮想システムサポートを実装する。代わりに、仮想ハードウェアプラットフォーム４１６１〜４１６ｘは、ＶＭＭｓ〜４３４１〜４３４ｘと独立していると考えられてもよい。ＶＭＭｓ〜４３４１〜４３４ｘは、ハイパーバイザー４１２とは独立していると考えられてもよい。使用可能な、ハイパーバイザー４１２の一例は、ＶＭｗａｒｅ，Ｉｎｃ．から発売されているＶＭｗａｒｅ  ＥＳＸ（商標）製品のコンポーネントとして含まれている。更に、他の仮想化されたコンピューターシステムのアーキテクチャは、ホスティングされる仮想マシンシステム等、本教示と一致するように使用されてもよく、仮想マシンシステムではハイパーバイザーがホストオペレーティングシステム上で動作するよう設計される、と解されるべきである。更に、図１Ａに照らして既に説明したように、図４に示されるようなコンテナＶＭを提供する仮想化プラットフォーム１２０がハードウェアリソース１１４によってサポートされてもよく、ハードウェアリソース１１４が、ネットワーキングで繋がっている１つ又は複数のデータセンターの物理的なコンピューター及びデータ記憶システムを何台でも含んでおり、それぞれの物理的なコンピューターが、１つ又は複数のコンテナＶＭ１２６１〜１２６ｍをホスティングし、更には、おそらく、ルーター１３６、クラウド・コントローラ１３４、ヘルスマネージャー１３８、様々なベースサービス１２８、サービス提供者１３０、アドレシング・アンド・ディスカバリー層１３２等の、クラウド・コンピューティング環境１１２のその他のコンポーネントの機能を実行する１つ又は複数のプロセスを動作させるその他のＶＭをホストすると、解されるべきである。コンテナＶＭに関して図４に照らして説明されるように、そのようなその他のコンポーネントをサポートするそれぞれのＶＭは、ゲスト・オペレーティングシステム及び上記プロセスのいずれのものを含むことができる１つ又は複数のゲストアプリケーションを有してもよい、仮想コンピューターシステムである。
【００２２】
[0029]図５は、コンテナ仮想マシン内にウェブアプリケーションを配備するためのフロー図を示す。図５で説明されるステップは、例えば、図３で説明されるステップに従ってクラウド・コントローラ１３４が配備のためにウェブアプリケーション１２５を受信及び準備した後に、行われる。ステップ５００では、クラウド・コントローラ１３４は、ウェブアプリケーション１２５を立ち上げるために企業１００から（例えば、開発者１４０から）要求を受信する。ステップ５０２では、クラウド・コントローラ１３４は、有効なコンテナＶＭの要求を（アドレシング・アンド・ディスカバリー層１３２経由で）ブロードキャストする。一実施形態では、そのようなブロードキャスト要求は、ゲスト・オペレーティングシステムの種類（例えば、Ｗｉｎｄｏｗｓ、Ｌｉｎｕｘ、ＭａｃＯＳ等）、コンピューティング・リソース要件（例えば、メモリ要件等）等の、コンテナＶＭで要求される具体的な特性を要求するために、クラウド・コントローラ１３４によって「味付け」されてもよい。ステップ５０４では、コンテナＶＭ１２６１の配備エージェント４２８が（アドレシング・アンド・ディスカバリー層１３２経由で）応答し、コンテナＶＭ１２６１の有効性を示し、ウェブアプリケーション１２５をホストする。ステップ５０６では、クラウド・コントローラ１３４は、（アドレシング・アンド・ディスカバリー層１３２経由で）配備エージェント４２８にリンク（例えば、ＵＲＬ）を提供し、さもなければ、コンテナＶＭ１２６１との通信を確立し、ウェブアプリケーション１２５のためにウェブアプリケーション配備パッケージをダウンロードする（例えば、図３のステップ３２８で作られるように）。そして、ステップ５０８では、配備エージェント４２８は、ウェブアプリケーション配備パッケージを取得するか、さもなければ受信する。ステップ５１０では、配備エージェント４２８は、ウェブアプリケーション配備パッケージを解凍し、ウェブアプリケーション１２５と関連付けられたＷＡＲファイル（又はその他のパッケージ）の、ランタイム環境の適切なディレクトリへのロードを含め、ランタイム環境４３０（例えば、Ａｐａｃｈｅ  Ｔｏｍｃａｔ  アプリケーションサーバー等）をインストールする。ステップ５１２では、配備エージェント４２８は、ウェブアプリケーション配備パッケージの開始スクリプトファイルを実行し、それによってランタイム環境（例えば、Ａｐａｃｈｅ  Ｔｏｍｃａｔ）を立ち上げ、ランタイム環境内でウェブアプリケーション１２５を開始するコンテナＶＭ１２６１内に新しいプロセスを引き起こす。（例えば、一実施形態では、ポート番号のウェブアプリケーション１２５へのバインディングが成功していることを確認することにより）ウェブアプリケーション１２５が立ち上げ成功されたことを配備エージェント４２８が認識すると、配備エージェント４２８は、ステップ５１４で、アドレシング・アンド・ディスカバリー層１３２を通じて、ホスト名、コンテナＶＭ１２６１のネットワークアドレス情報、配備されたウェブアプリケーション１２５のバインドされたポート番号をブロードキャストする。一方、ステップ５１６で、ルーター１３６はアドレシング・アンド・ディスカバリー層１３２を通じて、ブロードキャストされたホスト名、ネットワークアドレス情報、及びバインドされたポート番号を取得し、ステップ５１８で内部のルーティングテーブルをアップデートし、それによりルーター１３６が、ウェブアプリケーション１２５に対して企業のカスタマー１４４から受信したＵＲＬ要求をコンテナＶＭ１２６１に正しくルーティングすることを可能にする。ステップ５１４から５１８を通じてのウェブアプリケーションの配備成功後にルーター１３６においてルーティング情報を動的にアップデートするプロセスは、（例えば、ハードウェア障害中、ロードバランシング目的等の）任意の数の理由のために、ウェブアプリケーションを異なるコンテナＶＭ１２６１〜１２６ｍに、より簡単に移行、移動、又は再配備する柔軟性を、クラウド・コンピューティング環境１１２に与える、と解すべきである。例えば、一例のシナリオでは、ヘルスマネージャー１３８が、その中でウェブアプリケーション１２５が開発されたコンテナＶＭ１２６１をホストするサーバー１１６１がハード障害を起こしたことが原因で、ウェブアプリケーション１２５が停止したと認識するかもしれない。そのような認識後、ヘルスマネージャー１３８は、異なるサーバーで動作する異なるコンテナＶＭ内にウェブアプリケーション１２５を再配備するために、クラウド・コントローラ１３４への要求を開始してもよい。ステップ５１４から５１８の結果、クラウド・コントローラ１３４によってウェブアプリケーション１２５の再配備が成功すると、ルーター１３６は自動的に新しいルーティング情報でアップデートされ、ルーター１３６は、異なるサーバー上の異なるコンテナＶＭ上に現在は配備されているウェブアプリケーション１２５へ、正しく要求をルーティングする（そして、従って新しいネットワークルーティング情報と関連付けられる）。上述の記載においては、ホスト名、ネットワークアドレス、及びポート番号を利用して、ウェブアプリケーションに対するネットワークアドレス情報を一般的に示したが、クラウド・コンピューティング環境１１２によって実装される接続ネットワーク及び通信プロトコルの構造により、実施形態ではどのような種類のネットワーク情報もネットワークアドレス情報として使用され得る、と解されるべきである。更に、クラウド・コントローラ１３４が将来にウェブアプリケーション１２５を停止するコマンドを受信した場合（例えば、管理者１４６等の要求によって）には、ステップ５２０では、配備エージェント４２８は、配備されたウェブアプリケーション１２５のプロセス識別子も識別し、停止スクリプトファイルを生成する。
【００２３】
[0030]添付の請求項に記載される発明の広い思想と範囲から逸脱することなく、ここに記述される具体的な実施形態は様々な改造や変更がなされてもよいと解されるべきである。例えば、上述の記載ではウェブアプリケーション又はインターネットアプリケーションを使用した実施形態を説明したが、あらゆるネットワーク使用アプリケーションがここに開示される技術を利用することができ、従って、ここで使われる「ウェブアプリケーション」は、ネットワークを基にした通信を採用する、あらゆる種類のクライアント・サーバー式のアプリケーションを含むと解されなければならない。更に、上述の実施形態は、配備されたウェブアプリケーションをホストするコンテナＶＭの使用に注目したが、あらゆる「アプリケーションコンテナ」がウェブアプリケーションをホストするのに使用でき、そのような「アプリケーションコンテナ」は、仮想マシンのそのようなＶＭとプロセス、従来の非仮想化されたオペレーティングシステムのカーネルレベルコンテナとプロセス、及びアプリケーションレベルのコードを実行することができる隔離された環境を提供する他のあらゆる実行環境を含むと解されなければならない。同様に、クラウド・コンピューティング環境１１２の様々なコンポーネントは１つ又は複数の仮想マシンとして実装されていると一般的に記載された（例えば、負荷分散とスケーラビリティのため）が、例えば、従来の非仮想化されたコンピューティング環境のバックグラウンドプロセス、スレッド又はデーモンを含め、あらゆる種類の「アプリケーションコンテナ」（上述したように）もそのようなコンポーネントとして実装されてもよいと解されなければならない。更に、ウェブアプリケーションをホストしその他のコンポーネントを実装する異なる種類の「アプリケーションコンテナ」組み合わせ（例えば、クラウド・コントローラ１３４、ルーター１３６、ヘルスマネージャー１３８、ベースサービス１２８、サービス提供者１３０、アドレシング・アンド・ディスカバリー層１３２等）が、特定のクラウド・コンピューティング環境１１２実装を構成することができる。更に、クラウド・コンピューティング環境１１２の様々なコンポーネントの複数のインスタンス（例えば、クラウド・コントローラ１３４、ルーター１３６、ヘルスモニター１３８、サービス提供者１３０等）は、例えば、スケーラビリティの目的のために別の実施形態に実装され得ると解されなければならない。
【００２４】
[0031]ここに記載される様々な実施形態は、様々なコンピューター実装動作を採用し、コンピューターシステムにデータを蓄積することを含んでいてもよい。例えば、それらの動作は、物理量の物理的操作を要求してもよく、通常は、（必ずではないが）それらの量は、電気又は磁気信号の形態を取り、それら（又はそれらを代表するもの）は、保存、転送、合併、比較、又は操作されることができる。更に、その様な操作は、生成、特定、決定、又は比較等の用語で呼ばれることが多い。発明の１つ又は複数の実施形態の一部を形成する、ここに記載されるあらゆる操作は、有用な機械操作であってもよい。更に、発明の１つ又は複数の実施形態は、それらの動作を行うデバイス又は装置も指す。装置は、具体的な要求される目的のために特別に構築されてもよく、又は、装置は、選択的に起動されるかコンピューターに記録されるコンピュータープログラムによって構成される汎用コンピューターであってもよい。特に、様々な汎用マシンが、本教示に従って書かれたコンピュータープログラムと共に使用されてもよく、又は様々な汎用マシンが、要求された動作を実行する、より特殊化した装置を構築するのにより便利であってもよい。
【００２５】
[0032]ここに記載される様々な実施形態は、ハンドヘルド機器、マイクロプロセッサシステム、マイクロプロセッサベースの又はプログラム可能な民生用電子機器、ミニコンピュータ、メインフレームコンピュータ等を含む、その他のコンピューターシステム設定と共に実行されてもよい。
【００２６】
[0033]本発明の１つ又は複数の実施形態は、１つ又は複数のコンピュータープログラムとして実装されてもよく、又は１つ又は複数のコンピューターで読み取り可能な媒体に埋め込まれる１つ又は複数のコンピュータープログラムモジュールとして実装されてもよい。「コンピューターで読み取り可能な媒体」という単語は、その後にコンピューターシステムに入力することができるデータを記憶することができる任意のデータ記憶装置を意味する。コンピューターで読み取り可能な媒体は、コンピュータープログラムをコンピューターで読み取り可能にするような既存又は将来開発される技術に基づいていてもよい。例えば、コンピューターで読み取り可能な媒体は、ハードドライブ、ネットワーク接続ストレージ（ＮＡＳ）、読み取り専用メモリ、ランダムアクセスメモリ（例えば、フラッシュメモリデバイス）、ＣＤ（コンパクトディスク）のＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ（デジタル多用途ディスク）、磁気テープ、及びその他の光学又は非光学データ記憶装置であってもよい。コンピューターで読み取り可能な媒体は、コンピューター読み取り可能なコードが格納され分散方式で実行されるように、ネットワーク結合されたコンピューターシステムを介して配布することもできる。
【００２７】
[0034]本発明の１つ又は複数の実施形態を明確な理解のためにある程度詳細に記載したが、請求項の範囲内で変更や改造がなされ得ることは明らかである。従って、説明した実施形態は、例示であり限定的ではないと考えられなければならず、請求項の範囲は、ここに与えられる詳細に限定されてはならず、請求項の範囲は、請求項の範囲及び同等の範囲内で改造され得る。請求項、要素、及び／又はステップは、明示的に請求項に記載されている場合を除き、操作の特定の順番を意味するものではない。
【００２８】
[0035]複数のインスタンスは、ここに記載されるコンポーネント、操作、又は構造のために、単一のインスタンスとして提供されてもよい。最後に、様々なコンポーネント、操作、及びデータストアの間の境界はやや恣意的であり、特定の操作は、具体的な例示的な構成の文脈で示されている。機能の他の割り当ては、想定されており、発明の範囲内に含まれる。一般的には、例示の構成で別のコンポーネントとして示される構造と機能は、組み合わせられた構造又はコンポーネントとして実装されてもよい。同様に、単一のコンポーネントとして示された構造と機能は、別のコンポーネントとして実装されてもよい。これら及び他の変形、改造、追加、改善は、添付の請求項の範囲内に入りうる。
【図２Ａ】
2011233146.tif 000003
【図２Ｂ】
2011233146.tif 000004
【図３】
2011233146.tif 000005
【図４】
2011233146.tif 000006
【図５】
2011233146.tif 000007
【図１Ａ】
2011233146.tif 000008
【図１Ｂ】
2011233146.tif 000009
【外国語明細書】
2011233146000001.pdf