(57)【要約】デプロイメント・システムは、専用ジョブを実行する複数の相互接続されたノードを有するクラウド計算プラットフォームアプリケーション等のマルチノード分散アプリケーションをデプロイする機能を提供する。デプロイメント・システムは、クラウド計算プラットフォームアプリケーションの複数のノードをホストする１つ又は複数の仮想マシン（ＶＭ）を含む基盤をプロビジョニングするデプロイメント・ディレクタを含む。デプロイメント・ディレクタは、デプロイメント・マニフェストにおける基盤とクラウド計算プラットフォームアプリケーションにより実行すべき複数の専用ジョブとの間のマッピングに基づいて、複数のジョブ（例えば、アプリケーションパッケージ及び構成）を、プロビジョニングされたＶＭで実行中のデプロイメント・エージェントに分散させる。デプロイメント・エージェントは、ジョブを各ＶＭに適用して（例えば、アプリケーションを起動し）、クラウド計算プラットフォームアプリケーションをデプロイする。
2014514659.tif 000002
【特許請求の範囲】
【請求項１】
複数の異なるノードで実行される複数の機能構成要素を有するアプリケーションをデプロイする方法であって、
デプロイメント・モジュールが、前記アプリケーションの仕様を受信することであって、前記仕様は、（ｉ）デプロイすべき前記アプリケーションの各機能構成要素のインスタンス数及び（ｉｉ）前記機能構成要素のうちの任意の１つを実行する任意のノードが必要とするハードウェア属性を識別する、前記アプリケーションの仕様を受信すること、
別個の仮想マシン（ＶＭ）で機能構成要素の各インスタンスを実行するのに十分な、複数のＶＭを起動させる仮想基盤プラットフォームを要求することであって、前記複数のＶＭのそれぞれは、（ｉ）前記機能構成要素のうちの少なくとも１つが要求するハードウェア属性をサポートするように構成され、（ｉｉ）前記デプロイメント・モジュールと通信するように構成されるエージェント構成要素を含む、前記仮想基盤プラットフォームを要求すること、
前記複数のＶＭのそれぞれにおけるエージェント構成要素のそれぞれに、前記ＶＭの前記ハードウェア属性に適合する前記機能構成要素の１つを実施するコードを前記ＶＭにインストールするように命令して、前記ＶＭに前記アプリケーションの前記機能構成要素の前記インスタンスの１つとして実行させることを備える、方法。
【請求項２】
前記エージェント構成要素のそれぞれにコードをインストールするように命令することは、
前記複数のＶＭのそれぞれにおける前記エージェント構成要素のそれぞれに、各機能構成要素の前記仕様により指定され且つ各ＶＭにより実行された場合、前記機能構成要素の動作を実行するように構成されるコンピュータ実行可能命令パッケージをインストールするように命令することをさらに含む、請求項１に記載の方法。
【請求項３】
デプロイすべき前記アプリケ−ションの前記仕様は、前記機能構成要素の任意の１つを実行している任意のノードが必要とするネットワーク属性を識別し、
前記複数のＶＭのそれぞれは、前記機能構成要素のうちの少なくとも１つが要求する前記ネットワーク属性に従って構成される、請求項１に記載の方法。
【請求項４】
前記仕様は、前記機能構成要素の任意の１つに対して複数の構成設定を識別し、前記エージェント構成要素のそれぞれにコードをインストールするように命令することは、
前記機能構成要素の１つの構成ファイルを検索することであって、前記構成ファイルは、前記仕様内の前記複数の構成設定の１つを参照する変数を有する少なくとも１つの構成設定を識別する、前記構成ファイルを検索すること、
前記仕様により提供済みの参照された構成設定の値で前記変数を置換するように、前記構成ファイルを変更すること、
前記変更された構成ファイルを、前記変更された構成ファイルに対応する前記機能構成要素のインスタンスをホストする前記複数のＶＭのそれぞれにおける前記エージェント構成要素のそれぞれに提供すること、をさらに含む、請求項１に記載の方法。
【請求項５】
前記仕様により識別される補助ＶＭの数に従って複数の補助ＶＭを起動させるように、前記仮想基盤プラットフォームに要求することであって、前記複数の補助ＶＭのそれぞれは、前記機能構成要素のうちの少なくとも１つにより要求される前記ハードウェア属性をサポートするように構成される、前記仮想基盤プラットフォームに要求すること、
前記複数の補助ＶＭのそれぞれに、マシンアーキテクチャから独立したコードを、前記複数のＶＭのそれぞれが、前記アプリケーションの前記機能構成要素の前記インスタンスの１つとして実行するために実行可能なコードにコンパイルするように命令することをさらに備える、請求項１に記載の方法。
【請求項６】
前記複数のＶＭを起動させるように前記仮想基盤プラットフォームに要求することは、
ゲストオペレーティングシステム及び前記エージェント構成要素がインストールされたディスクイメージを識別するテンプレートを使用して、前記複数のＶＭのそれぞれのプロビジョニングを要求することをさらに含む、請求項１に記載の方法。
【請求項７】
前記アプリケーションの前記複数の機能構成要素は調整されて、１つ又は複数のウェブアプリケーションをホストするクラウド計算サービスを提供するように構成される、請求項１に記載の方法。
【請求項８】
持続性コンピュータ可読記憶媒体であって、
コンピュータにおいて実行された場合に、
デプロイメント・モジュールが、アプリケーションの仕様を受信するステップであって、前記仕様は、（ｉ）デプロイすべき前記アプリケーションの各機能構成要素のインスタンス数及び（ｉｉ）前記機能構成要素のうちの任意の１つを実行する任意のノードが必要とするハードウェア属性を識別する、前記アプリケーションの仕様を受信するステップと、
別個の仮想マシン（ＶＭ）で機能構成要素の各インスタンスを実行するのに十分な、複数のＶＭを起動させる仮想基盤プラットフォームを要求するステップであって、前記複数のＶＭのそれぞれは、（ｉ）前記機能構成要素のうちの少なくとも１つが要求するハードウェア属性をサポートするように構成され、（ｉｉ）前記デプロイメント・モジュールと通信するように構成されるエージェント構成要素を含む、前記仮想基盤プラットフォームを要求するステップと、
前記複数のＶＭのそれぞれにおける前記エージェント構成要素のそれぞれに、前記ＶＭの前記ハードウェア属性に適合する前記機能構成要素の１つを実施するコードを前記ＶＭにインストールするように命令して、前記ＶＭに前記アプリケーションの前記機能構成要素の前記インスタンスの１つとして実行させるステップと
を実行することにより、複数の異なるノードで実行される複数の機能構成要素を有するアプリケーションをデプロイする命令を備える、持続性コンピュータ可読記憶媒体。
【請求項９】
前記エージェント構成要素のそれぞれにコードをインストールするように命令するステップは、
前記複数のＶＭのそれぞれの前記エージェント構成要素のそれぞれに、各機能構成要素の前記仕様により指定され且つ各ＶＭにより実行された場合、前記機能構成要素の動作を実行するように構成されるコンピュータ実行可能命令パッケージをインストールするように命令するステップをさらに含む、請求項８に記載の持続性コンピュータ可読記憶媒体。
【請求項１０】
デプロイすべき前記アプリケ−ションの前記仕様は、前記機能構成要素の任意の１つを実行している任意のノードが必要とするネットワーク属性を識別し、前記複数のＶＭのそれぞれは、前記機能構成要素のうちの少なくとも１つが要求する前記ネットワーク属性に従って構成される、請求項８に記載の持続性コンピュータ可読記憶媒体。
【請求項１１】
前記仕様は、前記機能構成要素の任意の１つに対して複数の構成設定を識別し、
前記エージェント構成要素のそれぞれにコードをインストールするように命令するステップは、
前記機能構成要素の１つの構成ファイルを検索するステップであって、前記構成ファイルは、前記仕様内の前記複数の構成設定の１つを参照する変数を有する少なくとも１つの構成設定を識別するステップと、
前記仕様により提供済みの参照された構成設定の値で前記変数を置換するように、前記構成ファイルを変更するステップと、
前記変更された構成ファイルを、前記変更された構成ファイルに対応する前記機能構成要素のインスタンスをホストする前記複数のＶＭのそれぞれにおける前記エージェント構成要素のそれぞれに提供するステップとをさらに含む、請求項８に記載の持続性コンピュータ可読記憶媒体。
【請求項１２】
前記仕様により識別される補助ＶＭの数に従って複数の補助ＶＭを起動させるように、前記仮想基盤プラットフォームに要求するステップであって、前記補助ＶＭのそれぞれは、前記機能構成要素のうちの少なくとも１つにより要求される前記ハードウェア属性をサポートするように構成されるステップと、
前記補助ＶＭのそれぞれに、マシンアーキテクチャから独立したコードを、前記複数のＶＭのそれぞれが、前記アプリケーションの前記機能構成要素の前記インスタンスの１つとして実行するために実行可能なコードにコンパイルするように命令するステップとをさらに含む、請求項８に記載の持続性コンピュータ可読記憶媒体。
【請求項１３】
前記複数のＶＭを起動させるように前記仮想基盤プラットフォームに要求するステップは、
ゲストオペレーティングシステム及び前記エージェント構成要素がインストールされたディスクイメージを識別するテンプレートを使用して、前記複数のＶＭのそれぞれのプロビジョニングを要求するステップをさらに含む、請求項８に記載の持続性コンピュータ可読記憶媒体。
【請求項１４】
前記アプリケーションの前記複数の機能構成要素は調整されて、１つ又は複数のウェブアプリケーションをホストするクラウド計算サービスを提供するように構成される、請求項８に記載の持続性コンピュータ可読記憶媒体。
【請求項１５】
複数の異なるノードで実行される複数の機能構成要素を有するアプリケーションをデプロイするコンピュータシステムであって、システムメモリ及びプロセッサを備え、前記プロセッサは、
デプロイメント・モジュールが、前記アプリケーションの仕様を受信するステップであって、前記仕様は、（ｉ）デプロイすべき前記アプリケーションの各機能構成要素のインスタンス数及び（ｉｉ）前記機能構成要素のうちの任意の１つを実行する任意のノードが必要とするハードウェア属性を識別する、前記アプリケーションの仕様を受信するステップと、
別個の仮想マシン（ＶＭ）で機能構成要素の各インスタンスを実行するのに十分な複数のＶＭを起動させる仮想基盤プラットフォームを要求するステップであって、前記ＶＭのそれぞれは、（ｉ）前記機能構成要素のうちの少なくとも１つが要求するハードウェア属性をサポートするように構成され、（ｉｉ）前記デプロイメント・モジュールと通信するように構成されるエージェント構成要素を含む、前記仮想基盤プラットフォームを要求するステップと、
前記複数のＶＭのそれぞれにおける前記エージェント構成要素のそれぞれに、前記ＶＭの前記ハードウェア属性に適合する前記機能構成要素の１つを実施するコードを前記ＶＭにインストールするように命令して、前記ＶＭに前記アプリケーションの前記機能構成要素の前記インスタンスの１つとして実行させるステップとを実行するようにプログラムされる、コンピュータシステム。
【請求項１６】
前記プロセッサは、
前記複数のＶＭのそれぞれにおける前記エージェント構成要素のそれぞれに、各機能構成要素の前記仕様により識別され且つ各ＶＭにより実行された場合、前記機能構成要素の動作を実行するように構成されるコンピュータ実行可能命令パッケージをインストールするように命令するステップを実行するようにさらにプログラムされる、請求項１５に記載のコンピュータシステム。
【請求項１７】
デプロイすべき前記アプリケ−ションの前記仕様は、前記機能構成要素の任意の１つを実行している任意のノードが必要とするネットワーク属性を識別し、前記複数のＶＭのそれぞれは、前記機能構成要素のうちの少なくとも１つが要求する前記ネットワーク属性に従って構成される、請求項１５に記載のコンピュータシステム。
【請求項１８】
前記仕様は、前記機能構成要素の任意の１つに対して複数の構成設定を識別し、前記プロセッサは、
前記機能構成要素の１つの構成ファイルを検索するステップであって、前記構成ファイルは、前記仕様内の前記複数の構成設定の１つを参照する変数を有する少なくとも１つの構成設定を指定する、前記構成ファイルを検索するステップと、
前記仕様により提供済みの参照された構成設定の値で前記変数を置換するように、前記構成ファイルを変更するステップと、
変更された前記構成ファイルを、前記変更された構成ファイルに対応する前記機能構成要素のインスタンスをホストする前記複数のＶＭのそれぞれにおける前記エージェント構成要素のそれぞれに提供するステップとを実行するようにさらにプログラムされる、請求項１５に記載のコンピュータシステム。
【請求項１９】
前記プロセッサは、
前記仕様により識別される補助ＶＭの数に従って複数の補助ＶＭを起動させるように、前記仮想基盤プラットフォームに要求するステップであって、前記補助ＶＭのそれぞれは、前記機能構成要素のうちの少なくとも１つにより要求される前記ハードウェア属性をサポートするように構成される、前記仮想基盤プラットフォームに要求するステップと、
前記補助ＶＭのそれぞれに、マシンアーキテクチャから独立したコードを、前記ＶＭのそれぞれが、前記アプリケーションの前記機能構成要素の前記インスタンスの１つとして実行するために実行可能なコードにコンパイルするように命令するステップとを実行するようにさらにプログラムされる、請求項１５に記載のコンピュータシステム。
【請求項２０】
前記アプリケーションの前記複数の機能構成要素は、１つ又は複数のウェブアプリケーションをホストするクラウド計算サービスを提供するように調整するように構成される、請求項１５に記載のコンピュータシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
「プラットフォーム・アズ・サービス」（一般に「PaaS(Platform-as-a Service）」とも呼ばれる）は一般に、ウェブ開発者（又は任意の他のアプリケーション開発者）がウェブアプリケーション（又は任意の他の種類のネットワーク化アプリケーション）のライフサイクルを構築し、デプロイし、管理できるようにする統合解決策としてサービスプロバイダにより提供される技術一式を説明する。ＰａａＳの１つの主要構成要素は「クラウド計算プラットフォーム」であり、このプラットフォームは、開発されたウェブアプリケーションをデプロイし得る、サービスプロバイダにより実行され管理されるネットワーク（例えば、インターネット等）基盤である。ウェブアプリケーションをロバストに実行するために必要なハードウェアリソース及びソフトウェアレイヤを提供することにより、クラウド計算プラットフォームにおいて、開発者はウェブアプリケーション自体の開発に集中することができ、（例えば、サービスプロバイダにより課金されるコストで）スケーラビリティ並びに他の計算及び記憶リソース要件（例えば、データ記憶、データベースアクセス、処理力、設備、電力、及び帯域幅等）をクラウド計算プラットフォームに任せることができる。サービスプロバイダはさらに、ＩＤＥ（すなわち、統合開発環境（integrated development environment））を使用して、サービスプロバイダのクラウド計算プラットフォームに適合するように、そのようなアプリケーションを適宜構築し、開発し、テストするウェブアプリケーションを作成する開発者を支援するプラグイン構成要素を従来のＩＤＥに提供し得る。開発者がＩＤＥを使用してウェブアプリケーションを完成させると、プラグイン構成要素は、ウェブアプリケーションをクラウド計算プラットフォームにデプロイするに当たり開発者を支援する。
【発明の概要】
【発明が解決しようとする課題】
【０００２】
しかし、柔軟でスケーラブルなクラウド計算プラットフォームを提供する際の複雑性により、ＰａａＳは、少数のサービスプロバイダにより提供されている。クラウド計算プラットフォームの現在の実施は、異なる役割を実行し、互いの間で調整して、クラウド計算サービスを提供する複数の構成要素（例えば、クラウドコントローラ、ヘルスマネージャ（health manager）、サービスプロビジョナ、ルータ、及びアプリケーション実行エージェント）を使用する。そのようなクラウド計算プラットフォームをデプロイするために、システム管理者は、各構成要素（例えば、クラウドコントローラ、ヘルスマネージャ、サービスプロビジョナ、ルータ、及びアプリケーション実行エージェント）を構築し、構成し、デプロイし、保守しなければならない。デプロイは、すべての構成要素を単一のシステム（例えば、ラップトップ、サーバ）にインストールする際に手動で実行し得るが、構成要素が複数のネットワーク化システムにわたってインストールされる場合、そのようなインストールでは、クラウド計算プラットフォーム内でシステムの割り当てられた役割を実行するために、各システムに特定の計算リソースをプロビジョニングし、特定のネットワーク構成をセットアップし、従属ライブラリ及び／又はランタイムがインストールされた異なるソフトウェアアプリケーションを有さなければならないため、デプロイメント・プロセスは難問になる。さらに、任意の構成要素の更新（例えば、ライブラリ又はオペレーティングシステムのセキュリティパッチ）では、システム管理者が、クラウド計算プラットフォーム内の他の構成要素の動作を変更する必要がある。例えば、構成要素の１つを更新する必要がある場合、システム管理者は、その構成要素に現在接続されている他の構成要素の動作を一時停止するか、又は別の例では、更新された構成要素に正確に接続するように他の構成要素の設定を更新する必要があり得る。したがって、クラウド計算プラットフォーム等のマルチノードアプリケーションのデプロイメント・プロセスは、システム管理者が管理するには複雑すぎ、且つ時間がかかり過ぎることがある。
【課題を解決するための手段】
【０００３】
本発明の１つ又は複数の実施形態は、特別な役割を実行する任意の数のノード並びに専用の各役割に利用される任意の従属ソフトウェア及び／又はネットワーキング、記憶、及びサービス構成を有するマルチノード分散アプリケーション（例えば、クラウド計算プラットフォーム）のデプロイメント・システムを提供する。デプロイメント・システムのインスタンスは、仮想化基盤等の計算リソースの動的プロビジョニングを可能にするハードウェア基盤上において実施し得る。デプロイメント・システムは、基盤（例えば、仮想マシン）を自動的にプロビジョニングするとともに、専用の各役割に必要なアプリケーションパッケージをインストールし構成するために、体系化されたデプロイメント・マニフェストを利用する自動フレームワークを含む。体系化されたデプロイメント・マニフェストは、様々な要件を有する複雑なマルチノードアプリケーションのデプロイメント・プロセスを簡易化し、繰り返し可能で予測可能なデプロイメントを可能にする。
【０００４】
複数の異なるノードで実行される複数の機能構成要素を有するアプリケーションをデプロイする方法は、一実施形態によれば、デプロイメント・モジュールが、アプリケーションの仕様を受信することを含む。仕様は、（ｉ）デプロイすべきアプリケーションの各機能構成要素のインスタンス数及び（ｉｉ）任意の１つの機能構成要素を実行する任意のノードが必要とするハードウェア属性を指定する。本方法は、別個の仮想マシン（VM:virtual machine）で機能構成要素の各インスタンスを実行するのに十分な、複数のＶＭを起動させる仮想基盤プラットフォームを要求することを含む。ＶＭのそれぞれは、（ｉ）機能構成要素のうちの少なくとも１つが要求するハードウェア属性をサポートするように構成され、（ｉｉ）デプロイメント・モジュールと通信するように構成されるエージェント構成要素を含む。本方法は、ＶＭのそれぞれのうちのエージェント構成要素のそれぞれに、ＶＭのハードウェア属性に適合する機能構成要素の１つを実施するコードをＶＭにインストールし、それにより、ＶＭにアプリケーションの機能構成要素のインスタンスの１つとして実行させるように命令することをさらに含む。
【０００５】
持続性コンピュータ可読記憶媒体は、計算装置において実行されると、複数の異なるノードで実行される複数の機能構成要素を有するアプリケーションをデプロイする命令を含む。持続性コンピュータ可読記憶媒体は、一実施形態によれば、デプロイメント・モジュールがアプリケーションの仕様を受信するステップを実行する命令を含み、仕様は、（ｉ）デプロイすべきアプリケーションの各機能構成要素のインスタンス数及び（ｉｉ）任意の１つの機能構成要素を実行する任意のノードが必要とするハードウェア属性を指定する。命令は、別個の仮想マシン（ＶＭ）で機能構成要素の各インスタンスを実行するのに十分な複数のＶＭを起動させる仮想基盤プラットフォームを要求するステップをさらに実行する。ＶＭのそれぞれは、（ｉ）機能構成要素のうちの少なくとも１つが要求するハードウェア属性をサポートするように構成され、（ｉｉ）デプロイメント・モジュールと通信するように構成されるエージェント構成要素を含む。命令は、ＶＭのそれぞれのうちのエージェント構成要素のそれぞれに、ＶＭのハードウェア属性に適合する機能構成要素の１つを実施するコードをＶＭにインストールし、それにより、ＶＭにアプリケーションの機能構成要素のインスタンスの１つとして実行させるように命令するステップをさらに実行する。
【０００６】
複数の異なるノードで実行される複数の機能構成要素を有するアプリケーションをデプロイするコンピュータシステムは、一実施形態によれば、システムメモリ及びプロセッサを含み、プロセッサは、デプロイメント・モジュールが、アプリケーションの仕様を受信するステップを実行するようにプログラムされる。仕様は、（ｉ）デプロイすべきアプリケーションの各機能構成要素のインスタンス数及び（ｉｉ）任意の１つの機能構成要素を実行する任意のノードが必要とするハードウェア属性を指定する。プロセッサは、別個の仮想マシン（ＶＭ）で機能構成要素の各インスタンスを実行するのに十分な、複数のＶＭを起動させる仮想基盤プラットフォームを要求するステップを実行するようにプログラムされ、ＶＭのそれぞれは、（ｉ）機能構成要素のうちの少なくとも１つが要求するハードウェア属性をサポートするように構成され、（ｉｉ）デプロイメント・モジュールと通信するように構成されるエージェント構成要素を含む。プロセッサは、ＶＭのそれぞれのうちのエージェント構成要素のそれぞれに、ＶＭのハードウェア属性に適合する機能構成要素の１つを実施するコードをＶＭにインストールし、それにより、ＶＭにアプリケーションの機能構成要素のインスタンスの１つとして実行させるように命令するステップを実行するようにさらにプログラムされる。
【図面の簡単な説明】
【０００７】
【図１】マルチノード分散アプリケーションの一般化概略図を示す。
【図２】図１のマルチノード分散アプリケーションの一例、すなわち、クラウド計算プラットフォームアプリケーションを示す。
【図３】マルチノード分散アプリケーションのデプロイメント・システムの一実施形態を示す。
【図４】デプロイメント・システムのデプロイメント・ディレクタ及びエージェントの一実施形態を示す。
【図５】デプロイメント・ディレクタによりクラウド計算プラットフォームアプリケーションをデプロイするフローチャートを示す。
【図６】クラウド計算プラットフォームアプリケーションのデプロイ後の図４のデプロイメント・システムを示す。
【発明を実施するための形態】
【０００８】
図１は、マルチノード分散アプリケーション１００の一般化概略図を示す。マルチノードアプリケーション１００は、メッセージバス１０４を介して通信して、アプリケーションサービスをユーザ１０６に提供する複数のノード１０２（例えば、フロント及びバックエンドジョブ）を含む。各ノード１０２は、機能構成要素のインスタンスとして実行され、マルチノードアプリケーション１００内の機能構成要素の１つ又は複数の専用タスクを実行する構成要素ソフトウェアのアプリケーション及び／又はライブラリを含む。上述したように、マルチノードアプリケーション１００のセットアップ及びデプロイは複雑であり得る。例えば、複数のノード１０２のそれぞれは、マルチノードアプリケーション１００内で異なる役割を果たし得るため、ノード１０２は異なるネットワーク上にあり得、複数の従属サービス１０８に接続し得、異なる構成要素ソフトウェアアプリケーションを使用し得、異なるリソース要件を有し得る等である。
【０００９】
図２はクラウド計算プラットフォームアプリケーション２００を示し、クラウド計算プラットフォームアプリケーション２００は、マルチノードアプリケーション１００の一例であり得、ウェブアプリケーション２２０をホストするために利用されるクラウド計算サービスを動的に提供する。クラウド計算プラットフォームアプリケーション２００の一例については、２０１０年４月２６日に出願された「クラウドプラットフォームアーキテクチャ（Ｃｌｏｕｄ  Ｐｌａｔｆｏｒｍ  Ａｒｃｈｉｔｅｃｔｕｒｅ）」という名称の米国特許出願第１２／７６７，０１０号明細書にさらに記載されており、この米国特許出願は参照により本明細書に援用される。クラウド計算プラットフォームアプリケーション２００は、クラウドコントローラ２０２、ルータ２０４、アプリケーション実行エージェント２０６、ヘルスマネージャ（health manager）２０８、サービスプロビジョナ２１０、サービス２１２、及びメッセージバス２１４等の専用機能構成要素を含む。これらの機能構成要素は協働して動作して、ウェブアプリケーション２２０がアクセスし得る関係データベースサービス（例えば、ＭｙＳＱＬ等）、ＣＲＭ（顧客関係管理）サービス、ウェブサービス、アプリケーションサーバサービス（例えば、ＪＢｏｓｓ、Ｒａｉｌｓ等）、管理サービス、バックグラウンドタスクスケジューラ、ログサービス、メッセージングサービス、メモリオブジェクトキャッシュサービス、及び任意の他の適するソフトウェアサービス等のクラウド計算サービスを提供する。
【００１０】
一実施形態では、クラウドコントローラ２０２は、開発者２５０により提出されるウェブアプリケーション２２０のデプロイメント・プロセスを指揮する。クラウドコントローラ２０２は、クラウド計算プラットフォームアプリケーション２００の他の機能構成要素と対話して、提出されたウェブアプリケーション２２０が必要とするサービスをバインドし、ウェブアプリケーションをパッケージングして、デプロイのためにアプリケーション実行エージェント２０６に送信する。ヘルスマネージャ２０８は、クラウド計算プラットフォームアプリケーション２００の他の機能構成要素によりメッセージバス２１４上でブロードキャストされるメッセージを監視することにより、クラウド計算プラットフォームアプリケーション２００の「ヘルス（health）」を追跡し維持する。ウェブアプリケーション２２０は、関係データベースサービス（例えば、ＭｙＳＱＬ等）、監視サービス、バックグラウンドタスクスケジューラ、ログサービス、メッセージングサービス、メモリオブジェクトキャッシュサービス等のクラウド計算プラットフォームアプリケーション２００により提供されるサービス２１２のセットにアクセスする。サービスプロビジョナ２１０は、サービス２１２と、クラウド計算プラットフォームアプリケーション２００の他の機能構成要素（例えば、クラウドコントローラ２０２、ヘルスマネージャ２０８、ルータ２０４等）との間での通信仲介として機能し、ウェブアプリケーションのデプロイメント・プロセス中、そのような利用可能なサービスのプロビジョニング及びウェブアプリケーション２２０へのバインドのタスクを支援する。メッセージバス２１４は、サービスプロビジョナ２１０、クラウドコントローラ２０２、ヘルスマネージャ２０８、ルータ２０４、及びアプリケーション実行エージェント２０６等のクラウド計算プラットフォームアプリケーション２００の機能構成要素が通信し、通知を受信できるようにする共通インタフェースを提供する。
【００１１】
クラウドコントローラ２０２が、１つ又は複数のアプリケーション実行エージェント２０６でのウェブアプリケーション２２０のデプロイメントを首尾良く指揮すると、エンドユーザ１０６は、例えば、ウェブブラウザ、コンピュータラップトップに常駐する任意の他の適切なクライアントアプリケーション、又は一般に任意の計算装置を通してウェブアプリケーション２２０にアクセスすることができる。ルータ２０４は、ウェブブラウザのアクセス要求（例えば、ユニフォームリソースロケータ、すなわちＵＲＬ）を受信し、ウェブアプリケーション２２０をホストする対応のシステムに要求をルーティングする。
【００１２】
説明したように、各構成要素は、別個のソフトウェアアプリケーション及びライブラリ従属性（例えば、ＭｙＳＱＬ、Ｒｅｄｉｓ、ＭｏｎｇｏＤＢ、Ａｐａｃｈｅ）を有する、クラウド計算プラットフォームアプリケーション２００内の別個の役割を有し、クラウド計算プラットフォームアプリケーション２００が全体として機能するように特に構築され、構成され、デプロイされ、保守される。さらに、各構成要素は通常、１つ又は複数の仮想マシン（ＶＭ）で実行されるため、各ＶＭも特に、システム管理者によりプロビジョニングされ、構成され、デプロイされ、保守される。したがって、ウェブアプリケーション２２０がデプロイされるクラウド計算プラットフォームアプリケーション２００はそれ自体、面倒で複雑なデプロイ手順を有する。したがって、実施形態は、自動フレームワーク及びツーリングを使用して、簡易化され、自動化され、繰り返し可能なデプロイのためのデプロイメント技法をクラウド計算プラットフォームアプリケーションに提供する。
【００１３】
図３は、マルチノード分散アプリケーションをデプロイするデプロイメント・システム３０６を有するマルチノードアプリケーション・プラットフォーム３００の一実施形態を示す。例えば、システム管理者３０２は、マルチノードアプリケーション・プラットフォーム３００を利用して、ウェブアプリケーション２２０をデプロイし得る図２のクラウド計算プラットフォームアプリケーション２００をデプロイし得る。
【００１４】
一実施形態では、システム管理者３０２は、例えば、コマンドラインインタフェース（ＣＬＩ：ｃｏｍｍａｎｄ  ｌｉｎｅ  ｉｎｔｅｒｆａｃｅ）又は管理クライアント３０４の他のユーザインタフェースを通してデプロイメント・システム３０６に通信可能に接続された管理クライアント３０４を通して１つ又は複数のコマンドを発行することにより、デプロイメント・システム３０６に命令する。システム管理者３０２により発行される１つ又は複数のコマンドの送信に加えて、管理クライアント３０４は、アプリケーションデータ、構成ファイル、及び他の情報のバンドル（まとめて「リリース」と呼ばれる）をさらに送信し得、これらは、後述するようにクラウド計算プラットフォームアプリケーション２００をデプロイするために、デプロイメント・システム３０６により開封され（unpacked）、処理され、且つ／又は配布される。リリースに加えて、管理クライアント３０４は、クラウド計算プラットフォームアプリケーション２００をデプロイした後のクラウド計算プラットフォームアプリケーション２００の望ましい計算環境を記述した、リリースに関連付けられたデプロイメント・マニフェストを提供する。デプロイメント・マニフェストは、後述するように、利用すべきリソースプール（例えば、ＶＭ群）の数、セットアップすべきネットワーク、及び他の設定等の望ましい計算環境の属性を記述し、この実施形態では、デプロイの仕様として機能する。
【００１５】
マルチノードアプリケーション・プラットフォーム３００は、クラウド計算プラットフォームアプリケーション２００がデプロイされ実行される基盤プラットフォーム３０８を含む。図３の実施形態では、基盤プラットフォーム３０８は、サーバ３１２１〜３１２Ｎ等のハードウェアリソース３１０と、サーバ３１２１〜３１２Ｎにわたる複数の仮想マシン（ＶＭ）の実行をサポートする仮想化環境３１６を提供するように構成されるＳＡＮ３１４等の１つ又は複数のストレージアレイ・ネットワーク（ＳＡＮ：ｓｔｏｒａｇｅ  ａｒｒａｙ  ｎｅｔｗｏｒｋ）と、を備える。さらに後述するように、これらのＶＭは、デプロイメント・システム３０６により実行されるサービス及び機能をサポートする仮想計算リソースと、クラウド計算プラットフォームアプリケーション２００の機能構成要素をホストするための仮想計算リソースと、を提供する。一実施形態では、基盤プラットフォーム３０８は、サービスとしてコンピュータ基盤を提供するクラウド基盤サービス又は他のインフラストラクチャアズサービス（「ＩａａＳ：Ｉｎｆｒａｓｔｒｕｃｔｕｒｅ−ａｓ−ａ−Ｓｅｒｖｉｃｅ」）として実施し得る。
【００１６】
仮想化環境３１６は指揮構成要素３１８（例えば、一実施形態では、仮想マシンで実行されるプロセスとして実施される）を含み、指揮構成要素３１８は、（例えば、さらに後述するように、アドレッシング・検出レイヤ（addressing and discovery layer）３３４を通してルーティングされる通信を監視することにより）デプロイメント・システム３０６の基盤リソース消費レベル及び要件を監視し、必要又は所望に応じて追加の基盤リソースをデプロイメント・システム３０６に提供する。例えば、デプロイメント・システム３０６が、クラウド計算プラットフォームアプリケーション２００の新たにデプロイされた機能構成要素をホストし、ピーク需要をサポートするために現在実行中のマルチノードアプリケーションをスケーリングするために、追加のＶＭを要求する場合、指揮構成要素３１８は、サーバ３１２１〜３１２Ｎ上の仮想マシンのインスタンス化を開始して管理し、そのようなニーズをサポートすることができる。図３と同様の一実施形態の一実施例では、カリフォルニア州パロアルト（Ｐａｌｏ  Ａｌｔｏ）に所在のＶＭウェア社（ＶＭｗａｒｅ，Ｉｎｃ．）により提供されるＶＭウェアＥＳＸ（ＶＭｗａｒｅ  ＥＳＸ）（商標）に基づくハイパーバイザ技術をサーバ３１２１〜３１２Ｎで実行することにより、仮想化環境３１６を実施し得る（しかし、本明細書の教示に従って、ゼン（Ｘｅｎ）（登録商標）及びマイクロソフトハイパーＶ（Ｍｉｃｒｏｓｏｆｔ  Ｈｙｐｅｒ−Ｖ）仮想化技術を含む任意の他の仮想化技術を利用し得ることを認識されたい）。
【００１７】
図３の実施形態では、デプロイメント・システム３０６は、（例えば、１つ又は複数のＶＭで実行される）デプロイメント・ディレクタ３２０を含み、デプロイメント・ディレクタ３２０は、デプロイメント・システム３０６に供給されたデプロイメント・マニフェストに従って、クラウド計算プラットフォームアプリケーション２００のデプロイメント・プロセスを指揮する。デプロイメント・ディレクタ３２０は、デプロイメント・マニフェストの命令を受信し、デプロイメント・システム３０６の他の構成要素と対話して、クラウド計算プラットフォームアプリケーション２００がデプロイされる論理基盤３５０を生成する。図３に示される実施形態では、デプロイメント・ディレクタ３２０は、代表状態転送（ＲＥＳＴ：Ｒｅｐｒｅｓｅｎｔａｔｉｖｅ  Ｓｔａｔｅ  Ｔｒａｎｓｆｅｒ）アーキテクチャ等の通信インタフェースを露出し（expose）、通信インタフェースを通して、デプロイメント・ディレクタ３２０は、管理コマンド及び他のデプロイメント・データ（例えば、リリース）をクライアント（例えば、管理クライアント３０４）から受信する。
【００１８】
デプロイメント・ディレクタ３２０は、クラウドコントローラ２０２、アプリケーション実行エージェント２０６、ヘルスマネージャ２０８、ルータ２０４、サービスプロビジョナ２１０等のクラウド計算プラットフォームアプリケーション２００の機能構成要素をホストするように、ＶＭ（ステムセル（stem cell）ＶＭ３２４１〜３２４Ｍとして識別される）をプロビジョニングし得る。図３の実施形態では、デプロイメント・ディレクタ３２０は、ステムセルＶＭ（例えば、ステムセルＶＭ３２４１〜３２４Ｍ）を動的に作成し削除するように、基盤プラットフォーム３０８に要求する。ステムセルＶＭ３２４１〜３２４Ｍは、基本オペレーティングシステム、エージェント３２２、並びにサポートライブラリ、ランタイム、及び／又はアプリケーションを含む事前定義されたＶＭテンプレート（「ステムセル」と呼ばれる）に基づいて作成されたＶＭである。エージェント３２２は、デプロイメント・ディレクタ３２０と協調して、クラウド計算プラットフォームアプリケーション２００の様々な役割を実行するようにステムセルＶＭ３２４１〜３２４Ｍを構成する。エージェント３２２は、ステムセルＶＭ３２４１がクラウド計算プラットフォームアプリケーション２００内の特定の管理役割を実行するように、特定のジョブ（例えば、クラウドコントローラ２０２、ヘルスマネージャ２０８、アプリケーション実行エージェント２０６等のうちの１つのジョブ）を実行中のステムセルＶＭ３２４１に適用する。
【００１９】
ステムセルＶＭのプロビジョニングに加えて、デプロイメント・ディレクタ３２０は、デプロイメントに役立つ１つ又は複数の処理タスクを実行する、ワーカ３３０と呼ばれる一時的なＶＭを動的に作成し削除するように、基盤プラットフォーム３０８に要求し得る。一実施形態では、例えば、ワーカ３３０を作成して、ステムセルＶＭ３２４１〜３２４Ｍにデプロイすべき構成要素アプリケーション及び／又はライブラリのソフトウェアコンパイルを実行し得る。ワーカ３３０には、ステムセルＶＭ３２４１〜３２４Ｍと同様の構成（例えば、同一の仮想ハードウェア仕様、アーキテクチャ、及び／又は構成）が構成され、コンパイルされたソフトウェアをステムセルＶＭ３２４１〜３２４Ｍで実行できるようにする。処理タスク（例えば、ソフトウェアコンパイル）の結果及び他のキャッシュされたデータは、デプロイメント・プロセス中に生成されるアーチファクトを保持するために使用されるオブジェクト記憶装置３３２（例えば、ブロブ記憶装置）に記憶し得る。さらに、デプロイメント・ディレクタ３２０は、（例えば、１つ又は複数のＶＭで実行される）サービス３２８のセットを利用して、デプロイメント・プロセスの指揮に役立ち得る。例えば、関係データベースサービス（例えば、ＭｙＳＱＬ等）、監視サービス、バックグラウンドタスクスケジューラ、ログサービス、メッセージングサービス、メモリオブジェクトキャッシュサービス等がサービス３２８を構成し得る。
【００２０】
アドレッシング・検出レイヤ３３４は共通のインタフェースを提供し、このインタフェースを通して、ステムセルＶＭ３２４１〜３２４Ｍで実行中のデプロイメント・ディレクタ３２０、ヘルスモニタ３３６、サービス３２８、ワーカ３３０、及び１つ又は複数のエージェント３２２等のデプロイメント・システム３０６の構成要素は通信し、通知を受信することができる。例えば、デプロイメント・ディレクタ３２０は、アドレッシング・検出レイヤ３３４を利用して、基盤プラットフォーム３０８からＶＭのプロビジョニングを要求するとともに、クラウド計算プラットフォームアプリケーション２００のデプロイ中、エージェント３２２にデプロイメント・機能を提供し得る。同様に、ステムセルＶＭ３２４１は、クラウド計算プラットフォームアプリケーション２００のデプロイ中、アドレッシング・検出レイヤ３３４を通して他のステムセルＶＭ３２４Ｍと通信し得る。一実施形態では、アドレッシング・検出レイヤ３３４は、デプロイメント・システム３０６の構成要素がメッセージを交換し、通知及び他の情報をブロードキャストすることができる共通プロトコル及びメッセージフォーマットを定義するメッセージ仲介サービス（例えば、１つ又は複数のＶＭで実行される）として実施される。そのような一実施形態では、デプロイメント・システム３０６の構成要素は、例えば、（例えば、メッセージ仲介サービスへの「加入」と呼ばれることもある）既知の認証技法（例えば、パスワード等）を通してメッセージ仲介サービスとの接続を確立し、メッセージ仲介サービスに接続されると、メッセージ、通知、及び他の同様の情報を、メッセージ仲介システムに加入する他の構成要素に提供し、そのような他の構成要素から受信し、及び要求することができる。一実施形態において使用し得るメッセージ仲介サービスの一例は、ＡＭＰＱ（アドバンストメッセージキューイングプロトコル）オープンプロトコル規格に基づくラビットＭＱ（ＲａｂｂｉｔＭＱ）（商標）である。しかし、アドレッシング・検出レイヤ３３４を実施するために、そのようなメッセージ仲介サービス以外の代替のインタフェース及び通信方式を実施してもよいことを認識されたい。
【００２１】
デプロイメント・システム３０６はヘルスモニタ３３６（例えば、ＶＭで実行される）をさらに備え、ヘルスモニタ３３６は、デプロイメント・システム３０６の他の構成要素によりアドレッシング・検出レイヤ３３４にブロードキャストされるメッセージを監視することにより、デプロイメント・システム３０６の「ヘルス（health）」を追跡し維持する。例えば、ヘルスモニタ３３６は、エージェント３２２（例えば、ステムセルＶＭで実行される）からの通信がないことを検出し、ステムセルＶＭの故障（例えば、クラウド計算プラットフォームアプリケーション２００の構成要素の故障）を判断し得る。ヘルスモニタ３３６は、故障したステムセルＶＭを再開する要求をデプロイメント・ディレクタ３２０に自動的にブロードキャストし得、又は同じ役割を実行する代替ステムセルＶＭをプロビジョニングし得る。ヘルスモニタ３３６は、故障した提供サービス又はデプロイメント・システム３０６の他の構成要素（例えば、デプロイメント・ディレクタ３２０、オブジェクト記憶装置３３２、サービス３２８、ワーカ３３０、及びステムセルＶＭ３２４１〜３２４Ｍで実行中の１つ又は複数のエージェント３２２等）の再開を開始するようにさらに構成し得る。
【００２２】
本明細書の教示に従って、図３の実施形態以外のデプロイメント・システムアーキテクチャを実施してもよいことを認識されたい。例えば、図３はデプロイメント・システム３０６を、マルチノードアプリケーションプラットフォーム３００によりホストされる基盤プラットフォーム３０８で実施するが、マルチノードアプリケーション・プラットフォーム３００以外のエンティティにより、非仮想化基盤プラットフォーム等の任意の種類のハードウェア基盤上で、ハードウェアリソース３１０上のプロセッサ又はデーモンとして直接、デプロイメント・システム３０６を実施してもよいことを認識されたい。実施形態が、デプロイメント・システム３０６と基盤プラットフォーム３０８との通信が、アドレッシング・検出レイヤ３３４に接続することによりハードウェアリソース消費を監視する基盤プラットフォーム３０８の指揮構成要素３１８を通してのみ行われる状態で緩く結合されるように、デプロイメント・システム３０６及び基盤プラットフォーム３０８を構成し得ることをさらに認識されたい。そのような緩く結合される実施形態では、デプロイメント・システム３０６を、ラップトップ又はパーソナルコンピュータを含む任意の基盤プラットフォームで実施し得る（例えば、その場合、デプロイメント・システム３０６の各構成要素は、ラップトップ又はパーソナルコンピュータ上の別個のプロセス又はデーモンとして実行される）ことを認識されたい。
【００２３】
図４は、デプロイメント・ディレクタ３２０の一実施形態のより詳細な図を示す。デプロイメント・ディレクタ３２０は、クラウド計算プラットフォームアプリケーション２００のデプロイ後の所望の計算環境を記述するデプロイメント・マニフェスト４０２に基づいて、クラウド計算プラットフォームアプリケーション２００のデプロイを管理する。デプロイメント・マニフェスト４０２は、例えば、クラウド計算プラットフォームアプリケーション２００の名前及び／又はバージョン番号により、デプロイすべきリリースを指定する。デプロイメント・マニフェスト４０２は、特定の機能構成要素（例えば、クラウドコントローラ２０２、ヘルスマネージャ２０８、アプリケーション実行エージェント２０６等）、基盤プラットフォーム３０８により提供される論理基盤３５０（例えば、ステムセルＶＭ２３４Ｍ）、論理基盤３５０への機能構成要素マッピングを含め、クラウド計算プラットフォームアプリケーション２００の完全な仕様を提供する。例えば、デプロイメント・マニフェスト４０２は、クラウド計算プラットフォームアプリケーション２００を構成する構成要素をホストするために、１０個のステムセルＶＭをプロビジョニングすべきであることを指定し得る。システム管理者は、クラウド計算プラットフォームアプリケーション２００の初期デプロイのデプロイメント・マニフェスト４０２を作成し、既にデプロイされているクラウド計算プラットフォームアプリケーション２００の規模を拡大又は縮小するようにデプロイメント・マニフェスト４０２を変更し、又はデプロイされたクラウド計算プラットフォームアプリケーション２００を更新し得る。特定の一実装態様では、デプロイメント・マニフェスト４０２は、デプロイメント・システム３０６によるデプロイメント・プロセスに役立つ名前−値対及び／又は名前−値対の階層セクションを有する、ＹＡＭＬ又は拡張可能マークアップ言語（ＸＭＬ：ｅＸｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）等の構造化ドキュメントフォーマットでフォーマットされる構成ファイルである。デプロイメント・マニフェスト４０２の詳細について、以下の表１に示されるサンプルデプロイメント・マニフェストに関連して説明する。
【００２４】
【表１】
2014514659.tif 000003
2014514659.tif 000004
2014514659.tif 000005
表１  デプロイメント・マニフェスト例
デプロイメント・マニフェスト４０２は、１つ又は複数のネットワーク及び／又は仮想ローカルエリアネットワーク（ＶＬＡＮ：ｖｉｒｔｕａｌ  ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋ）を含むクラウド計算プラットフォームアプリケーション２００のネットワーク構成を指定し得る。例えば、デプロイメント・マニフェスト４０２は、サブネット、静的又は動的ＩＰアドレス、ゲートウェイ及びＤＮＳアドレス、並びに確保されたインターネットプロトコル（ＩＰ）アドレス（すなわち、デプロイメント・システム３０６が使用すべきではないＩＰアドレス）を指定する設定を有する１つ又は複数のネットワークを定義し得る。表１のデプロイメントの例では、「ｍａｎａｇｅｍｅｎｔ」と記される第１のネットワーク及び「ａｐｐｓ」と記される第２のネットワークは、「ｎｅｔｗｏｒｋｓ」というタイトルのセクションの下で指定される。静的ＩＰアドレス範囲１１．２３．３．２．１７〜１１．２３．２．１２８、ゲートウェイアドレス１１．２３．２．１及びＤＮＳアドレス１１．２２．２２．１５３を有する「ｍａｎａｇｅｍｅｎｔ」と記されるネットワークが指定される。デプロイメント・マニフェスト４０２は、静的及び確保ＩＰアドレスを除くデプロイメント・ディレクタ３２０が使用し得るネットワークの「範囲」をＩＰアドレスの動的プールとして指定し得る。デプロイメント・マニフェスト４０２により指定されるゲートウェイ及びＤＮＳ情報を、初期起動及びブートストラップのために、ステムセルＶＭ及びそこで実行中のエージェント３２２に渡し得る。デプロイメント・マニフェスト４０２は、各セクションに、デプロイメント中に基盤プラットフォーム３０８に提供される１つ又は複数のパススルー設定（例えば、「ｃｌｏｕｄ＿ｐｒｏｐｅｒｔｉｅｓ」）を含み得る。
【００２５】
デプロイメント・マニフェスト４０２に基づいて、デプロイメント・ディレクタ３２０は、ステムセルＶＭをステムセル（例えば、ＶＭテンプレート）及びネットワークに関連付ける１つ又は複数のリソースプール（図４においてリソースプール４０４１及び４０４２として識別される）を含む論理基盤３５０を生成する。例えば、「ｓｍａｌｌ」と記されるリソースプールには、「ｂｏｓｈ−ｓｔｅｍｃｅｌｌ」バージョン０．２．３９として指定されるステムセル及びデプロイメント・マニフェスト４０２内で定義される「ｍａｎａｇｅｍｅｎｔ」ネットワークが関連付けられる。ステムセルは、デプロイメント・ディレクタ３２０により提供され、デプロイメント・マニフェスト４０２により指定されるジョブの実行をサポートする一般化ソフトウェア基盤を定義するＶＭテンプレートを参照する。いくつかの実施形態では、ステムセルは、ゲストオペレーティングシステム４０６にインストールされるエージェント３２２並びに、エージェント３２２の任意のサポートランタイム、フレームワーク、及びライブラリを含むＶＭテンプレートである。各リソースプールにはそのリソースプールにプロビジョニングすべきステムセル３２４Ｍの数に対応するサイズを割り当て得る。例えば、デプロイメント・ディレクタ３２０は、１４個のステムセルＶＭを「ｓｍａｌｌ」リソースプールにプロビジョニングする。デプロイメント・マニフェスト４０２は、リソースプール４０４をプロビジョニングするための基盤プラットフォーム３０８のパススルー設定を含み得る。例えば、「ｃｌｏｕｄ＿ｐｒｏｐｅｒｔｉｅｓ」セクションは、「ｓｍａｌｌ」リソースプールへのステムセルＶＭ（すなわち、１０２４ＭＢのＲＡＭ、４０９６Ｍｂのディスク空間、及び１ＣＰＵを有する）をプロビジョニングするに当たり基盤プラットフォーム３０８により使用されることが意図される「ｒａｍ」、「ｄｉｓｋ」、及び「ｃｐｕ」属性を示す。
【００２６】
デプロイメント・マニフェスト４０２は、デプロイメント中のソフトウェアパッケージのコンパイル及び／又は他の補助処理タスクのためのワーカー（例えば、ワーカー３３０）の専用リソースプールを定義し得る。ワーカーの専用リソースプールは、基盤プラットフォーム３０８により提供される１つ又は複数の補助ＶＭを含み得る。デプロイメント・マニフェスト４０２は、コンパイルを実行し得るワーカーリソースプール及びネットワークに割り振られるＶＭの数を指定し得る。例えば、上の「ｃｏｍｐｉｌａｔｉｏｎ」セクションは、ソフトウェアパッケージをコンパイルするために「ｍａｎａｇｅｍｅｎｔ」ネットワークに割り当てられた６つのワーカーを有するリソースプールを指定する。
【００２７】
デプロイメント・マニフェスト４０２は、クラウド計算プラットフォームアプリケーション２００内の１つ又は複数の役割（例えば、クラウドコントローラ２０２、ルータ２０４、アプリケーション実行エージェント２０６、ヘルスマネージャ２０８、サービスプロビジョナ２１０、サービス２１２、メッセージバス２１４等）として、１つ又は複数のステムセルＶＭ３２４Ｍにより実行し得る複数のジョブを定義する。デプロイメント・マニフェスト４０２は、上で指定されたリソースプール４０４及びネットワークの論理基盤３５０への各ジョブのマッピングを指定する。デプロイメント・マニフェスト４０２は、特定のジョブのデプロイすべきインスタンス数、どのリソースプールがステムセルＶＭを使用すべきか、及び／又はどのネットワークにジョブがあるかを指定し得る。例えば、表１の例では、「ｃｌｏｕｄ＿ｃｏｎｔｒｏｌｌｅｒ」と記されるジョブが、リソースプール「ｌａｒｇｅ」から引き出され、「ｍａｎａｇｅｍｅｎｔ」ネットワークに割り当てられる８つのインスタンス（例えば、ステムセルＶＭ３２４）を有するものとして列挙される。各ジョブは、いくつかの構成ファイルテンプレートを含み得、テンプレートには、鍵となるパラメータ（例えば、認証情報、ＩＰアドレス、ポート）が変数として指定される。
【００２８】
一実施形態では、デプロイメント・マニフェスト４０２は、システム管理者がこれらの構成ファイルテンプレートをパラメータ化できるようにする提供する「ｐｒｏｐｅｒｔｉｅｓ」セクションを含む。したがって、デプロイメント・ディレクタ３２０がクラウド計算プラットフォームアプリケーション２００をデプロイする場合、デプロイメント・ディレクタ３２０は、構成ファイルテンプレートをパーズし（parse）、「ｐｒｏｐｅｒｔｉｅｓ」セクションにおいて提供される対応する値に基づいて適切なパラメータを「記入」し得る。例えば、ルータジョブは、ルータサービスのログイン認証情報を変数（「＜＄ｕｓｅｒ＞」、「＜＄ｐａｓｓｗｏｒｄ＞」）として列挙する構成ファイルを有し得る。そのような一例では、デプロイメント・ディレクタ３２０は、ｐｒｏｐｅｒｔｉｅｓセクションにおいて提供される「ｕｓｅｒ：」及び「ｐａｓｓｗｏｒｄ：」名前−値対に基づいて変数をパーズして評価する。表２は、デプロイメント・ディレクタ３２０によりパーズし得るルビーオンレイルズ（Ｒｕｂｙ  ｏｎ  Ｒａｉｌｓ）スクリプトファイル（例えば、ＥＲＢテンプレート）として実施される構成ファイルテンプレートの一例を列挙する。
【００２９】
【表２】
2014514659.tif 000006
表２  構成ファイルテンプレート例
図５は、デプロイメント・ディレクタ３２０によりクラウド計算プラットフォームアプリケーション２００をデプロイするフローチャートを示す。ステップ５００において、デプロイメント・ディレクタ３２０は、例えば、管理クライアント３０４からクラウド計算プラットフォームアプリケーション２００をデプロイする要求を受信する。デプロイメント・マニフェスト４０２及びリリースは、要求に含めることができ、又は代替では、デプロイメント要求の発行前にデプロイメント・ディレクタ３２０に前もってロードし得る。上述したように、デプロイメント・マニフェスト４０２は、デプロイメント・ディレクタ３２０が、デプロイメント中、クラウド計算プラットフォームアプリケーション２００に必要な管理ジョブを仮想計算リソースにマッピングするために使用し得るクラウド計算プラットフォームアプリケーション２００の仕様を提供する。一実施形態では、リリースは、テープアーカイブファイル又は「ｔａｒ」ファイル（「ターボール（ｔａｒｂａｌｌ）」とも呼ばれる）に編成された１つ又は複数のアプリケーションパッケージ及び構成ファイルを含む。リリース自体を送信するのではなく、代替の実施形態は、ステップ５００において、リリースをダウンロードするため、又はリリースに他の様式でアクセスするための参照を受信することにより、例えば、オブジェクト記憶装置３３２、ユニフォームリソースロケータ（「ＵＲＬ」）、Ｇｉｔリポジトリへの参照、又はパッケージデータへの他の同様の参照を提供することにより、リリースを受信してもよいことを認識されたい。したがって、そのような実施形態では、リリースを受信するステップは、提供される参照を利用して、リリースをフェッチする。
【００３０】
ステップ５０２において、デプロイメント・ディレクタ３２０は、デプロイメント・マニフェスト４０２に基づいて、クラウド計算プラットフォームアプリケーション２００をホストする論理基盤３５０を決定する。例えば、一実施形態では、デプロイメント・ディレクタ３２０は、デプロイメント・マニフェスト４０２を処理して、クラウド計算プラットフォームアプリケーション２００のノードをホストするリソースプール及びネットワークグループに編成されたステムセルＶＭの割り振りを決定する。ステップ５０６において、デプロイメント・ディレクタ３２０は、ステップ５０２において決定された論理基盤３５０に基づいて、複数のステムセルＶＭのプロビジョニング要求を基盤プラットフォーム３０８に送信し、基盤プラットフォーム３０８は次に、ステップ５０６において、プロビジョニング要求を受信する。例えば、一実施形態では、デプロイメント・ディレクタ３２０は、「クラウドプロバイダ・インタフェース」（ＣＰＩ）と呼ばれることもあるクラウドプロバイダ・アプリケーション・プログラミング・インタフェースを利用して、クラウド基盤サービスプロバイダからステムセルＶＭのインスタンスのプロビジョニングを要求する。ステップ５０８において、基盤プラットフォーム３０８は、エージェント３２２が事前にインストールされ、デプロイメント・マニフェスト４０２により指定されるリソース及びネットワーク構成を有するステムセルテンプレートを利用して、ステムセルＶＭの１つ又は複数のインスタンスを作成する。例えば、一実施形態では、基盤プラットフォーム３０８は、オープン仮想化フォーマット（ＯＶＦ）等のパッケージングされたフォーマットを有し、ゲストオペレーティングシステムカーネル、ユーティリティ（例えば、ｏｐｅｎｓｓｈ−ｓｅｒｖｅｒ、ｍｏｎｉｔ）、ライブラリ（例えば、ｌｉｂｘｍｌ、ｌｉｂｍｙｓｑｌ、ｌｉｂｓｑｌｉｔｅ）、ランタイム従属性（例えば、ルビー（Ｒｕｂｙ）、Ｊａｖａ（登録商標）仮想マシン（Ｊａｖａ  Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ））、及びエージェント３２２を含むテンプレート（例えば、ステムセル）を利用して、ステムセルＶＭを作成し得る。特定の一実施態様では、デプロイメント手順の開始前にステムセルを生成し、記憶し、後に基盤プラットフォーム３０８及び／又はデプロイメント・ディレクタ３２０により検索し得る。
【００３１】
ステップ５１０において、１つ又は複数のステムセルＶＭ（例えば、ステムセルＶＭ３２４１）は、動作を開始し、エージェント３２２を起動させる。ステップ５１２において、デプロイメント・ディレクタ３２０は、アドレッシング・検出レイヤ３３４を介して、ジョブ構成及びデータを、デプロイメント・マニフェスト４０２により指定される各ジョブのステムセルＶＭ３２４に提供する。例えば、デプロイメント・ディレクタ３２０は、デプロイメント・マニフェスト４０２が、「クラウドコントローラ」ジョブが所定のリソースプール及び所定のネットワークグループから引き出されたステムセルＶＭの８つのインスタンスを使用することを指定すると判断する。デプロイメント・ディレクタ３２０は、クラウドコントローラジョブのジョブ構成及びデータをステムセルＶＭ３２４の８つのインスタンスに提供する。ステップ５１４において、ステムセルＶＭ３２４（例えば、ステムセルＶＭ３２４１）が、アドレッシング・検出レイヤ３３４を介してジョブ構成及びデータを受信する。ジョブ構成及びデータは、１つ又は複数のパッケージアプリケーション、ライブラリ、ランタイム、構成ファイル、メタデータ、及びクラウド計算プラットフォームアプリケーション２００内で役割を実行するための他のサポートデータを含み得る。一実施形態では、エージェント３２２は、デプロイメント・ディレクタ３２０により提供されるリンク又はアドレスを利用して、オブジェクト記憶装置３３２に記憶された１つ又は複数のデータオブジェクトに対応するジョブ構成及びデータを検索し得る。ステップ５１６において、エージェント３２２は、受信したジョブ構成及びデータを適用して、ステムセルＶＭ３２４１をクラウド計算プラットフォームアプリケーション２００内の分散ノード（distributed node）に変換する。エージェント３２２は、受信したジョブデータの１つ又は複数のアプリケーションパッケージをインストールし、受信したジョブ構成を利用して、インストールされたソフトウェアパッケージの任意の適するセットアップ及び構成を実行し、クラウド計算プラットフォームアプリケーション２００の他のデプロイされたジョブに接続し、クラウド計算プラットフォームアプリケーション２００内の１つ又は複数の専用タスクを実行するプロセスを起動させる。例えば、一実施形態では、エージェント３２２は、１つ又は複数のアプリケーションパッケージをインストールし、構成し、起動させて、ルータ（例えば、ルータ２０４）を動作させて、入ってきた要求を、ウェブアプリケーションを実行中のクラウド計算プラットフォームアプリケーション２００の他の構成要素に転送することができる。デプロイメント・ディレクタ３２０は、すべてのジョブが、デプロイメント・マニフェスト４０２により指定される１つ又は複数のステムセルＶＭ３２４にデプロイされるまで、ステップ５１２の動作を繰り返す。したがって、デプロイメント手順が完了した後、複数のステムセルＶＭは、図６に示されるように、デプロイされたクラウド計算プラットフォームアプリケーション２００を構成する複数の相互接続されたノード（例えば、クラウドコントローラ２０２、アプリケーション実行エージェント２０６、��ルスマネージャ２０８、ルータ２０４、サービスプロビジョナ２１０等）に変換されている。
【００３２】
図６は、クラウド計算プラットフォームアプリケーション２００のデプロイメントが完了した後の図４のデプロイメント・システム３０６を示す。上述したデプロイメント手順の実行後、論理基盤３５０からのステムセルＶＭ（例えば、ＶＭ３２４１〜３２４Ｍ）は、クラウド計算プラットフォームアプリケーション２００のノード（例えば、ルータ２０４、クラウドコントローラ２０２、ヘルスマネージャ２０８、アプリケーション実行エージェント２０６、サービスプロビジョナ２１０、サービス２１２、メッセージバス２１４）に「変換される（transformed）」。図６の実施形態では、各ステムセルＶＭ３２４１〜３２４Ｍは、クラウド計算プラットフォームアプリケーション２００により実行される管理ジョブ（例えば、ルータジョブ６０４、クラウドコントローラジョブ６０２、ヘルスマネージャジョブ６０８、アプリケーション実行エージェントジョブ６０６、サービスプロビジョナジョブ６１０、サービスジョブ６１２、メッセージバスジョブ６１４）を実行する各ステムセルＶＭ３２４１〜３２４Ｍで実行中のエージェント３２２を有する。
【００３３】
添付の特許請求の範囲に記載される本発明のより広い趣旨及び範囲から逸脱せずに、様々な変形及び変更を本明細書に記載の特定の実施形態に対して行い得ることを認識されたい。例えば、上記説明は、分散クラウド計算プラットフォームアプリケーションの実施形態を考察したが、任意のネットワーク利用アプリケーションが本明細書に開示される技法を利用することができ、したがって、本明細書において使用される場合、「クラウド計算プラットフォームアプリケーション」を、ネットワークに基づく通信を利用する任意の種類のマルチノード分散アプリケーションを含むものとして解釈すべきであることを認識されたい。さらに、上記実施形態は、デプロイされたジョブをホストするステムセルＶＭの使用に焦点を合わせたが、デプロイされたジョブをホストするために、そのようなステムセルＶＭ、仮想マシン内のプロセス、カーネルレベルコンテナ、従来の非仮想化オペレーティングシステム内のプロセス、及びアプリケーションレベルコードを実行可能な分離された環境を提供する任意の他の実行環境を含め、任意の「アプリケーションコンテナ」を使用し得ることを認識されたい。同様に、デプロイメント・システム３０６の様々な構成要素は一般に、１つ又は複数の仮想マシンで実施されるものとして説明されたが（例えば、負荷平衡及びスケーラビリティのため）、任意の種類の「アプリケーションコンテナ」（上述したように）が、例えば、従来の非仮想化計算環境バックグラウンドプロセス、スレッド、又はデーモンを含め、そのような構成要素を実施してもよいことを認識されたい。さらに、デプロイされたジョブをホストし、他の構成要素（例えば、デプロイメント・ディレクタ３２０、ヘルスモニタ３３６、サービス３２８、オブジェクト記憶装置３３２、ワーカ３３０、アドレッシング・発見レイヤ３３４等）を実施する異なる種類の「アプリケーションコンテナ」の任意の組み合わせが、任意の特定のデプロイメント・システム３０６の実施態様を含むことができる。デプロイメント・システム３０６の様々な構成要素の複数のインスタンス（例えば、デプロイメント・ディレクタ３２０、ヘルスモニタ３３６、サービス３２８、ワーカ３３０、オブジェクト記憶装置３３２等）を、例えば、スケーラビリティのために、代替の実施形態において実施し得ることをさらに認識されたい。
【００３４】
本明細書に記載の様々な実施形態は、コンピュータシステムに記憶されたデータを含む様々なコンピュータ実施動作を利用し得る。例えば、これらの動作は物理的数量の物理的操作を必要とし得、必ずではないが通常、これらの数量は電気又は磁気信号の形態をとり得、電気又は磁気信号又はそれらの代表は、記憶、転送、結合、比較、又は他の様式での操作が可能である。さらに、そのような操作は多くの場合、生成、識別、特定、又は比較等の用語で呼ばれる。本発明の１つ又は複数の実施形態の一部をなす本明細書に記載の任意の動作は、有用なマシン動作であり得る。さらに、本発明の１つ又は複数の実施形態は、これらの動作を実行するデバイス又は装置にも関する。装置は特に、特定の所要目的に向けて構築し得、又はコンピュータに記憶されたコンピュータプログラムにより選択的にアクティブ化若しくは構成される汎用コンピュータであり得る。特に、様々な汎用マシンを、本明細書における教示に従って書かれたコンピュータプログラムと共に使用し得、又は必要とされる動作を実行するより専用化された装置を構築することがより好都合であり得る。
【００３５】
本明細書に記載の様々な実施形態は、ハンドヘルド装置、マイクロプロセッサシステム、マイクロプロセッサベース又はプログラマブル消費者電子装置、ミニコンピュータ、メインフレームコンピュータ等を含む他のコンピュータシステム構成を用いて実施することもできる。
【００３６】
本発明の１つ又は複数の実施形態は、１つ又は複数のコンピュータプログラムとして、又は１つ若しくは複数のコンピュータ可読媒体において具現される１つ若しくは複数のコンピュータプログラムモジュールとして実施し得る。コンピュータ可読媒体という用語は、データを記憶し、その後、データをコンピュータシステムに入力することが可能な任意のデータ記憶装置を指し、コンピュータ可読媒体は、コンピュータが読み取り可能なようにコンピュータプログラムを具現する任意の既存又は続けて開発される技術に基づき得る。コンピュータ可読媒体の例としては、ハードドライブ、ネットワーク接続ストレージ（ＮＡＳ）、読み取り専用メモリ、ランダムアクセスメモリ（例えば、フラッシュメモリ装置）、ＣＤ（コンパクトディスク）、ＣＤ−ＲＯＭ、ＣＤ−Ｒ又はＣＤ−ＲＷ、ＤＶＤ（デジタル多用途ディスク）、磁気テープ、並びに他の光学及び非光学データ記憶装置が挙げられる。コンピュータ可読媒体は、コンピュータ可読コードが分散して記憶され実行されるように、ネットワーク結合コンピュータシステムに分散することもできる。
【００３７】
単一の事例として本明細書に記載された構成要素、動作、又は構造に対し複数の事例を提供し得る。最後に、様々な構成要素、動作、及びデータ記憶装置間の境界はいくらか任意的なものであり、特定の動作は、特定の例示的な構成の状況で示される。機能の他の割り振りも考えられ、本発明の範囲内にあり得る。一般に、例示的な構成において別個の構成要素として提示される構造及び機能は、結合された構造又は構成要素として実施し得る。同様に、単一の構成要素として提示される構造及び機能は、別個の構成要素として実施し得る。これら及び他の変形形態、変更形態、追加形態、及び改良形態は、添付の特許請求の範囲内にあり得る。
【図１】
2014514659.tif 000007
【図２】
2014514659.tif 000008
【図３】
2014514659.tif 000009
【図４】
2014514659.tif 000010
【図５】
2014514659.tif 000011
【図６】
2014514659.tif 000012
【国際調査報告】
2014514659.tif 000013
2014514659.tif 000014
2014514659.tif 000015