(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6058628
(24)【登録日】2016年12月16日
(45)【発行日】2017年1月11日
(54)【発明の名称】マルチノードアプリケーションのデプロイメント・システム
(51)【国際特許分類】
G06F 9/445 20060101AFI20161226BHJP
G06F 9/46 20060101ALI20161226BHJP
【FI】
G06F9/06 610A
G06F9/06 610L
G06F9/46 350
【請求項の数】17
【全頁数】23
(21)【出願番号】特願2014-505286(P2014-505286)
(86)(22)【出願日】2012年4月12日
(65)【公表番号】特表2014-514659(P2014-514659A)
(43)【公表日】2014年6月19日
(86)【国際出願番号】US2012033356
(87)【国際公開番号】WO2012142310
(87)【国際公開日】20121018
【審査請求日】2014年12月12日
(31)【優先権主張番号】61/474,669
(32)【優先日】2011年4月12日
(33)【優先権主張国】US
(31)【優先権主張番号】13/428,109
(32)【優先日】2012年3月23日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】516165387
【氏名又は名称】ピボタル ソフトウェア インコーポレイテッド
【氏名又は名称原語表記】PIVOTAL SOFTWARE,INC.
(74)【代理人】
【識別番号】100105957
【弁理士】
【氏名又は名称】恩田 誠
(74)【代理人】
【識別番号】100068755
【弁理士】
【氏名又は名称】恩田 博宣
(74)【代理人】
【識別番号】100142907
【弁理士】
【氏名又は名称】本田 淳
(72)【発明者】
【氏名】スピバク、バディム
(72)【発明者】
【氏名】スカー、ケント
(72)【発明者】
【氏名】シャルディビン、オレグ
【審査官】
多賀 実
(56)【参考文献】
【文献】
国際公開第2009/151875(WO,A1)
【文献】
特開2011−060035(JP,A)
【文献】
欧州特許出願公開第02299360(EP,A1)
【文献】
米国特許出願公開第2008/0209016(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/445
G06F 9/46
(57)【特許請求の範囲】
【請求項1】
複数の異なるノードで実行される複数の機能構成要素を有するアプリケーションをデプロイする方法であって、
デプロイメント・モジュールが、前記アプリケーションの仕様を受信することであって、前記仕様は、(i)デプロイすべき前記アプリケーションの各機能構成要素のインスタンス数及び(ii)前記機能構成要素のうちの任意の1つを実行する任意のノードが必要とするハードウェア属性を識別する、前記アプリケーションの仕様を受信すること、
別個の仮想マシン(VM)で機能構成要素の各インスタンスを実行するのに十分な複数のVMを起動させるように、仮想基盤プラットフォームに要求することであって、前記複数のVMのそれぞれは、(i)前記機能構成要素のうちの少なくとも1つが要求するハードウェア属性をサポートするように構成され、(ii)前記デプロイメント・モジュールと通信するように構成されるエージェント構成要素を含む、前記仮想基盤プラットフォームに要求すること、
前記仕様により識別される補助VMの数に従って複数の補助VMを起動させるように、前記仮想基盤プラットフォームに要求することであって、前記複数の補助VMのそれぞれは、前記機能構成要素のうちの少なくとも1つに対応し、前記複数の補助VMのそれぞれは、対応する機能構成要素により実行されるソフトウェアのコンパイルを実行可能に構成されている、前記仮想基盤プラットフォームに要求すること、
前記複数の補助VMの少なくとも1つに、マシンアーキテクチャから独立したコードを、前記複数のVMのそれぞれが、前記アプリケーションの前記機能構成要素の前記インスタンスの1つとして実行するために実行可能なコードにコンパイルするように命令すること、
前記複数のVMのそれぞれにおけるエージェント構成要素のそれぞれに、前記VMの前記ハードウェア属性に適合する前記機能構成要素の1つを実施する前記少なくとも1つの補助VMによりコンパイルされたコードを前記VMにインストールするように命令して、前記VMに前記アプリケーションの前記機能構成要素の前記インスタンスの1つとして実行させることを備える、方法。
【請求項2】
前記エージェント構成要素のそれぞれにコードをインストールするように命令することは、
前記複数のVMのそれぞれにおける前記エージェント構成要素のそれぞれに、各機能構成要素の前記仕様により指定され且つ各VMにより実行された場合、前記機能構成要素の動作を実行するように構成されるコンピュータ実行可能命令パッケージをインストールするように命令することをさらに含む、請求項1に記載の方法。
【請求項3】
デプロイすべき前記アプリケ−ションの前記仕様は、前記機能構成要素の任意の1つを実行している任意のノードが必要とするネットワーク属性を識別し、
前記複数のVMのそれぞれは、前記機能構成要素のうちの少なくとも1つが要求する前記ネットワーク属性に従って構成される、請求項1に記載の方法。
【請求項4】
前記仕様は、前記機能構成要素の任意の1つに対して複数の構成設定を識別し、前記エージェント構成要素のそれぞれにコードをインストールするように命令することは、
前記機能構成要素の1つの構成ファイルを検索することであって、前記構成ファイルは、前記仕様内の前記複数の構成設定の1つを参照する変数を有する少なくとも1つの構成設定を識別する、前記構成ファイルを検索すること、
前記仕様により提供済みの参照された構成設定の値で前記変数を置換するように、前記構成ファイルを変更すること、
前記変更された構成ファイルを、前記変更された構成ファイルに対応する前記機能構成要素のインスタンスをホストする前記複数のVMのそれぞれにおける前記エージェント構成要素のそれぞれに提供すること、をさらに含む、請求項1に記載の方法。
【請求項5】
前記複数のVMを起動させるように前記仮想基盤プラットフォームに要求することは、
ゲストオペレーティングシステム及び前記エージェント構成要素がインストールされたディスクイメージを識別するテンプレートを使用して、前記複数のVMのそれぞれのプロビジョニングを要求することをさらに含む、請求項1に記載の方法。
【請求項6】
前記アプリケーションの前記複数の機能構成要素は調整されて、1つ又は複数のウェブアプリケーションをホストするクラウド計算サービスを提供するように構成される、請求項1に記載の方法。
【請求項7】
持続性コンピュータ可読記憶媒体であって、
コンピュータにおいて実行された場合に、
デプロイメント・モジュールが、アプリケーションの仕様を受信するステップであって、前記仕様は、(i)デプロイすべき前記アプリケーションの各機能構成要素のインスタンス数及び(ii)前記機能構成要素のうちの任意の1つを実行する任意のノードが必要とするハードウェア属性を識別する、前記アプリケーションの仕様を受信するステップと、
別個の仮想マシン(VM)で機能構成要素の各インスタンスを実行するのに十分な複数のVMを起動させるように、仮想基盤プラットフォームに要求するステップであって、前記複数のVMのそれぞれは、(i)前記機能構成要素のうちの少なくとも1つが要求するハードウェア属性をサポートするように構成され、(ii)前記デプロイメント・モジュールと通信するように構成されるエージェント構成要素を含む、前記仮想基盤プラットフォームに要求するステップと、
前記仕様により識別される補助VMの数に従って複数の補助VMを起動させるように、前記仮想基盤プラットフォームに要求するステップであって、前記複数の補助VMのそれぞれは、前記機能構成要素のうちの少なくとも1つに対応し、前記複数の補助VMのそれぞれは、対応する機能構成要素により実行されるソフトウェアのコンパイルを実行可能に構成されている、前記仮想基盤プラットフォームに要求するステップと、
前記複数の補助VMの少なくとも1つに、マシンアーキテクチャから独立したコードを、前記複数のVMのそれぞれが、前記アプリケーションの前記機能構成要素の前記インスタンスの1つとして実行するために実行可能なコードにコンパイルするように命令するステップと、
前記複数のVMのそれぞれにおける前記エージェント構成要素のそれぞれに、前記VMの前記ハードウェア属性に適合する前記機能構成要素の1つを実施する少なくとも1つの補助VMによりコンパイルされたコードを前記VMにインストールするように命令して、前記VMに前記アプリケーションの前記機能構成要素の前記インスタンスの1つとして実行させるステップと
を実行することにより、複数の異なるノードで実行される複数の機能構成要素を有するアプリケーションをデプロイする命令を備える、持続性コンピュータ可読記憶媒体。
【請求項8】
前記エージェント構成要素のそれぞれにコードをインストールするように命令するステップは、
前記複数のVMのそれぞれの前記エージェント構成要素のそれぞれに、各機能構成要素の前記仕様により指定され且つ各VMにより実行された場合、前記機能構成要素の動作を実行するように構成されるコンピュータ実行可能命令パッケージをインストールするように命令するステップをさらに含む、請求項7に記載の持続性コンピュータ可読記憶媒体。
【請求項9】
デプロイすべき前記アプリケ−ションの前記仕様は、前記機能構成要素の任意の1つを実行している任意のノードが必要とするネットワーク属性を識別し、前記複数のVMのそれぞれは、前記機能構成要素のうちの少なくとも1つが要求する前記ネットワーク属性に従って構成される、請求項7に記載の持続性コンピュータ可読記憶媒体。
【請求項10】
前記仕様は、前記機能構成要素の任意の1つに対して複数の構成設定を識別し、
前記エージェント構成要素のそれぞれにコードをインストールするように命令するステップは、
前記機能構成要素の1つの構成ファイルを検索するステップであって、前記構成ファイルは、前記仕様内の前記複数の構成設定の1つを参照する変数を有する少なくとも1つの構成設定を識別するステップと、
前記仕様により提供済みの参照された構成設定の値で前記変数を置換するように、前記構成ファイルを変更するステップと、
前記変更された構成ファイルを、前記変更された構成ファイルに対応する前記機能構成要素のインスタンスをホストする前記複数のVMのそれぞれにおける前記エージェント構成要素のそれぞれに提供するステップとをさらに含む、請求項7に記載の持続性コンピュータ可読記憶媒体。
【請求項11】
前記複数のVMを起動させるように前記仮想基盤プラットフォームに要求するステップは、
ゲストオペレーティングシステム及び前記エージェント構成要素がインストールされたディスクイメージを識別するテンプレートを使用して、前記複数のVMのそれぞれのプロビジョニングを要求するステップをさらに含む、請求項7に記載の持続性コンピュータ可読記憶媒体。
【請求項12】
前記アプリケーションの前記複数の機能構成要素は調整されて、1つ又は複数のウェブアプリケーションをホストするクラウド計算サービスを提供するように構成される、請求項7に記載の持続性コンピュータ可読記憶媒体。
【請求項13】
複数の異なるノードで実行される複数の機能構成要素を有するアプリケーションをデプロイするコンピュータシステムであって、システムメモリ及びプロセッサを備え、前記プロセッサは、
デプロイメント・モジュールが、前記アプリケーションの仕様を受信するステップであって、前記仕様は、(i)デプロイすべき前記アプリケーションの各機能構成要素のインスタンス数及び(ii)前記機能構成要素のうちの任意の1つを実行する任意のノードが必要とするハードウェア属性を識別する、前記アプリケーションの仕様を受信するステップと、
別個の仮想マシン(VM)で機能構成要素の各インスタンスを実行するのに十分な複数のVMを起動させるように、仮想基盤プラットフォームに要求するステップであって、前記VMのそれぞれは、(i)前記機能構成要素のうちの少なくとも1つが要求するハードウェア属性をサポートするように構成され、(ii)前記デプロイメント・モジュールと通信するように構成されるエージェント構成要素を含む、前記仮想基盤プラットフォームに要求するステップと、
前記仕様により識別される補助VMの数に従って複数の補助VMを起動させるように、前記仮想基盤プラットフォームに要求するステップであって、前記複数の補助VMのそれぞれは、前記機能構成要素のうちの少なくとも1つに対応し、前記複数の補助VMのそれぞれは、対応する機能構成要素により実行されるソフトウェアのコンパイルを実行可能に構成されている、前記仮想基盤プラットフォームに要求するステップと、
前記複数の補助VMの少なくとも1つに、マシンアーキテクチャから独立したコードを、前記VMのそれぞれが、前記アプリケーションの前記機能構成要素の前記インスタンスの1つとして実行するために実行可能なコードにコンパイルするように命令するステップと、
前記複数のVMのそれぞれにおける前記エージェント構成要素のそれぞれに、前記VMの前記ハードウェア属性に適合する前記機能構成要素の1つを実施する少なくとも1つの補助VMによりコンパイルされたコードを前記VMにインストールするように命令して、前記VMに前記アプリケーションの前記機能構成要素の前記インスタンスの1つとして実行させるステップとを実行するようにプログラムされる、コンピュータシステム。
【請求項14】
前記プロセッサは、
前記複数のVMのそれぞれにおける前記エージェント構成要素のそれぞれに、各機能構成要素の前記仕様により識別され且つ各VMにより実行された場合、前記機能構成要素の動作を実行するように構成されるコンピュータ実行可能命令パッケージをインストールするように命令するステップを実行するようにさらにプログラムされる、請求項13に記載のコンピュータシステム。
【請求項15】
デプロイすべき前記アプリケ−ションの前記仕様は、前記機能構成要素の任意の1つを実行している任意のノードが必要とするネットワーク属性を識別し、前記複数のVMのそれぞれは、前記機能構成要素のうちの少なくとも1つが要求する前記ネットワーク属性に従って構成される、請求項13に記載のコンピュータシステム。
【請求項16】
前記仕様は、前記機能構成要素の任意の1つに対して複数の構成設定を識別し、前記プロセッサは、
前記機能構成要素の1つの構成ファイルを検索するステップであって、前記構成ファイルは、前記仕様内の前記複数の構成設定の1つを参照する変数を有する少なくとも1つの構成設定を指定する、前記構成ファイルを検索するステップと、
前記仕様により提供済みの参照された構成設定の値で前記変数を置換するように、前記構成ファイルを変更するステップと、
変更された前記構成ファイルを、前記変更された構成ファイルに対応する前記機能構成要素のインスタンスをホストする前記複数のVMのそれぞれにおける前記エージェント構成要素のそれぞれに提供するステップとを実行するようにさらにプログラムされる、請求項13に記載のコンピュータシステム。
【請求項17】
前記アプリケーションの前記複数の機能構成要素は、1つ又は複数のウェブアプリケーションをホストするクラウド計算サービスを提供するように調整するように構成される、請求項13に記載のコンピュータシステム。
【発明の詳細な説明】
【背景技術】
【0001】
「プラットフォーム・アズ・サービス」(一般に「PaaS(Platform-as-a Service)」とも呼ばれる)は一般に、ウェブ開発者(又は任意の他のアプリケーション開発者)がウェブアプリケーション(又は任意の他の種類のネットワーク化アプリケーション)のライフサイクルを構築し、デプロイし、管理できるようにする統合解決策としてサービスプロバイダにより提供される技術一式を説明する。PaaSの1つの主要構成要素は「クラウド計算プラットフォーム」であり、このプラットフォームは、開発されたウェブアプリケーションをデプロイし得る、サービスプロバイダにより実行され管理されるネットワーク(例えば、インターネット等)基盤である。ウェブアプリケーションをロバストに実行するために必要なハードウェアリソース及びソフトウェアレイヤを提供することにより、クラウド計算プラットフォームにおいて、開発者はウェブアプリケーション自体の開発に集中することができ、(例えば、サービスプロバイダにより課金されるコストで)スケーラビリティ並びに他の計算及び記憶リソース要件(例えば、データ記憶、データベースアクセス、処理力、設備、電力、及び帯域幅等)をクラウド計算プラットフォームに任せることができる。サービスプロバイダはさらに、IDE(すなわち、統合開発環境(integrated development environment))を使用して、サービスプロバイダのクラウド計算プラットフォームに適合するように、そのようなアプリケーションを適宜構築し、開発し、テストするウェブアプリケーションを作成する開発者を支援するプラグイン構成要素を従来のIDEに提供し得る。開発者がIDEを使用してウェブアプリケーションを完成させると、プラグイン構成要素は、ウェブアプリケーションをクラウド計算プラットフォームにデプロイするに当たり開発者を支援する。
【発明の概要】
【発明が解決しようとする課題】
【0002】
しかし、柔軟でスケーラブルなクラウド計算プラットフォームを提供する際の複雑性により、PaaSは、少数のサービスプロバイダにより提供されている。クラウド計算プラットフォームの現在の実施は、異なる役割を実行し、互いの間で調整して、クラウド計算サービスを提供する複数の構成要素(例えば、クラウドコントローラ、ヘルスマネージャ(health manager)、サービスプロビジョナ、ルータ、及びアプリケーション実行エージェント)を使用する。そのようなクラウド計算プラットフォームをデプロイするために、システム管理者は、各構成要素(例えば、クラウドコントローラ、ヘルスマネージャ、サービスプロビジョナ、ルータ、及びアプリケーション実行エージェント)を構築し、構成し、デプロイし、保守しなければならない。デプロイは、すべての構成要素を単一のシステム(例えば、ラップトップ、サーバ)にインストールする際に手動で実行し得るが、構成要素が複数のネットワーク化システムにわたってインストールされる場合、そのようなインストールでは、クラウド計算プラットフォーム内でシステムの割り当てられた役割を実行するために、各システムに特定の計算リソースをプロビジョニングし、特定のネットワーク構成をセットアップし、従属ライブラリ及び/又はランタイムがインストールされた異なるソフトウェアアプリケーションを有さなければならないため、デプロイメント・プロセスは難問になる。さらに、任意の構成要素の更新(例えば、ライブラリ又はオペレーティングシステムのセキュリティパッチ)では、システム管理者が、クラウド計算プラットフォーム内の他の構成要素の動作を変更する必要がある。例えば、構成要素の1つを更新する必要がある場合、システム管理者は、その構成要素に現在接続されている他の構成要素の動作を一時停止するか、又は別の例では、更新された構成要素に正確に接続するように他の構成要素の設定を更新する必要があり得る。したがって、クラウド計算プラットフォーム等のマルチノードアプリケーションのデプロイメント・プロセスは、システム管理者が管理するには複雑すぎ、且つ時間がかかり過ぎることがある。
【課題を解決するための手段】
【0003】
本発明の1つ又は複数の実施形態は、特別な役割を実行する任意の数のノード並びに専用の各役割に利用される任意の従属ソフトウェア及び/又はネットワーキング、記憶、及びサービス構成を有するマルチノード分散アプリケーション(例えば、クラウド計算プラットフォーム)のデプロイメント・システムを提供する。デプロイメント・システムのインスタンスは、仮想化基盤等の計算リソースの動的プロビジョニングを可能にするハードウェア基盤上において実施し得る。デプロイメント・システムは、基盤(例えば、仮想マシン)を自動的にプロビジョニングするとともに、専用の各役割に必要なアプリケーションパッケージをインストールし構成するために、体系化されたデプロイメント・マニフェストを利用する自動フレームワークを含む。体系化されたデプロイメント・マニフェストは、様々な要件を有する複雑なマルチノードアプリケーションのデプロイメント・プロセスを簡易化し、繰り返し可能で予測可能なデプロイメントを可能にする。
【0004】
複数の異なるノードで実行される複数の機能構成要素を有するアプリケーションをデプロイする方法は、一実施形態によれば、デプロイメント・モジュールが、アプリケーションの仕様を受信することを含む。仕様は、(i)デプロイすべきアプリケーションの各機能構成要素のインスタンス数及び(ii)任意の1つの機能構成要素を実行する任意のノードが必要とするハードウェア属性を指定する。本方法は、別個の仮想マシン(VM:virtual machine)で機能構成要素の各インスタンスを実行するのに十分な、複数のVMを起動させる仮想基盤プラットフォームを要求することを含む。VMのそれぞれは、(i)機能構成要素のうちの少なくとも1つが要求するハードウェア属性をサポートするように構成され、(ii)デプロイメント・モジュールと通信するように構成されるエージェント構成要素を含む。本方法は、VMのそれぞれのうちのエージェント構成要素のそれぞれに、VMのハードウェア属性に適合する機能構成要素の1つを実施するコードをVMにインストールし、それにより、VMにアプリケーションの機能構成要素のインスタンスの1つとして実行させるように命令することをさらに含む。
【0005】
持続性コンピュータ可読記憶媒体は、計算装置において実行されると、複数の異なるノードで実行される複数の機能構成要素を有するアプリケーションをデプロイする命令を含む。持続性コンピュータ可読記憶媒体は、一実施形態によれば、デプロイメント・モジュールがアプリケーションの仕様を受信するステップを実行する命令を含み、仕様は、(i)デプロイすべきアプリケーションの各機能構成要素のインスタンス数及び(ii)任意の1つの機能構成要素を実行する任意のノードが必要とするハードウェア属性を指定する。命令は、別個の仮想マシン(VM)で機能構成要素の各インスタンスを実行するのに十分な複数のVMを起動させる仮想基盤プラットフォームを要求するステップをさらに実行する。VMのそれぞれは、(i)機能構成要素のうちの少なくとも1つが要求するハードウェア属性をサポートするように構成され、(ii)デプロイメント・モジュールと通信するように構成されるエージェント構成要素を含む。命令は、VMのそれぞれのうちのエージェント構成要素のそれぞれに、VMのハードウェア属性に適合する機能構成要素の1つを実施するコードをVMにインストールし、それにより、VMにアプリケーションの機能構成要素のインスタンスの1つとして実行させるように命令するステップをさらに実行する。
【0006】
複数の異なるノードで実行される複数の機能構成要素を有するアプリケーションをデプロイするコンピュータシステムは、一実施形態によれば、システムメモリ及びプロセッサを含み、プロセッサは、デプロイメント・モジュールが、アプリケーションの仕様を受信するステップを実行するようにプログラムされる。仕様は、(i)デプロイすべきアプリケーションの各機能構成要素のインスタンス数及び(ii)任意の1つの機能構成要素を実行する任意のノードが必要とするハードウェア属性を指定する。プロセッサは、別個の仮想マシン(VM)で機能構成要素の各インスタンスを実行するのに十分な、複数のVMを起動させる仮想基盤プラットフォームを要求するステップを実行するようにプログラムされ、VMのそれぞれは、(i)機能構成要素のうちの少なくとも1つが要求するハードウェア属性をサポートするように構成され、(ii)デプロイメント・モジュールと通信するように構成されるエージェント構成要素を含む。プロセッサは、VMのそれぞれのうちのエージェント構成要素のそれぞれに、VMのハードウェア属性に適合する機能構成要素の1つを実施するコードをVMにインストールし、それにより、VMにアプリケーションの機能構成要素のインスタンスの1つとして実行させるように命令するステップを実行するようにさらにプログラムされる。
【図面の簡単な説明】
【0007】
【
図1】マルチノード分散アプリケーションの一般化概略図を示す。
【
図2】
図1のマルチノード分散アプリケーションの一例、すなわち、クラウド計算プラットフォームアプリケーションを示す。
【
図3】マルチノード分散アプリケーションのデプロイメント・システムの一実施形態を示す。
【
図4】デプロイメント・システムのデプロイメント・ディレクタ及びエージェントの一実施形態を示す。
【
図5】デプロイメント・ディレクタによりクラウド計算プラットフォームアプリケーションをデプロイするフローチャートを示す。
【
図6】クラウド計算プラットフォームアプリケーションのデプロイ後の
図4のデプロイメント・システムを示す。
【発明を実施するための形態】
【0008】
図1は、マルチノード分散アプリケーション100の一般化概略図を示す。マルチノードアプリケーション100は、メッセージバス104を介して通信して、アプリケーションサービスをユーザ106に提供する複数のノード102(例えば、フロント及びバックエンドジョブ)を含む。各ノード102は、機能構成要素のインスタンスとして実行され、マルチノードアプリケーション100内の機能構成要素の1つ又は複数の専用タスクを実行する構成要素ソフトウェアのアプリケーション及び/又はライブラリを含む。上述したように、マルチノードアプリケーション100のセットアップ及びデプロイは複雑であり得る。例えば、複数のノード102のそれぞれは、マルチノードアプリケーション100内で異なる役割を果たし得るため、ノード102は異なるネットワーク上にあり得、複数の従属サービス108に接続し得、異なる構成要素ソフトウェアアプリケーションを使用し得、異なるリソース要件を有し得る等である。
【0009】
図2はクラウド計算プラットフォームアプリケーション200を示し、クラウド計算プラットフォームアプリケーション200は、マルチノードアプリケーション100の一例であり得、ウェブアプリケーション220をホストするために利用されるクラウド計算サービスを動的に提供する。クラウド計算プラットフォームアプリケーション200の一例については、2010年4月26日に出願された「クラウドプラットフォームアーキテクチャ(Cloud Platform Architecture)」という名称の米国特許出願第12/767,010号明細書にさらに記載されており、この米国特許出願は参照により本明細書に援用される。クラウド計算プラットフォームアプリケーション200は、クラウドコントローラ202、ルータ204、アプリケーション実行エージェント206、ヘルスマネージャ(health manager)208、サービスプロビジョナ210、サービス212、及びメッセージバス214等の専用機能構成要素を含む。これらの機能構成要素は協働して動作して、ウェブアプリケーション220がアクセスし得る関係データベースサービス(例えば、MySQL等)、CRM(顧客関係管理)サービス、ウェブサービス、アプリケーションサーバサービス(例えば、JBoss、Rails等)、管理サービス、バックグラウンドタスクスケジューラ、ログサービス、メッセージングサービス、メモリオブジェクトキャッシュサービス、及び任意の他の適するソフトウェアサービス等のクラウド計算サービスを提供する。
【0010】
一実施形態では、クラウドコントローラ202は、開発者250により提出されるウェブアプリケーション220のデプロイメント・プロセスを指揮する。クラウドコントローラ202は、クラウド計算プラットフォームアプリケーション200の他の機能構成要素と対話して、提出されたウェブアプリケーション220が必要とするサービスをバインドし、ウェブアプリケーションをパッケージングして、デプロイのためにアプリケーション実行エージェント206に送信する。ヘルスマネージャ208は、クラウド計算プラットフォームアプリケーション200の他の機能構成要素によりメッセージバス214上でブロードキャストされるメッセージを監視することにより、クラウド計算プラットフォームアプリケーション200の「ヘルス(health)」を追跡し維持する。ウェブアプリケーション220は、関係データベースサービス(例えば、MySQL等)、監視サービス、バックグラウンドタスクスケジューラ、ログサービス、メッセージングサービス、メモリオブジェクトキャッシュサービス等のクラウド計算プラットフォームアプリケーション200により提供されるサービス212のセットにアクセスする。サービスプロビジョナ210は、サービス212と、クラウド計算プラットフォームアプリケーション200の他の機能構成要素(例えば、クラウドコントローラ202、ヘルスマネージャ208、ルータ204等)との間での通信仲介として機能し、ウェブアプリケーションのデプロイメント・プロセス中、そのような利用可能なサービスのプロビジョニング及びウェブアプリケーション220へのバインドのタスクを支援する。メッセージバス214は、サービスプロビジョナ210、クラウドコントローラ202、ヘルスマネージャ208、ルータ204、及びアプリケーション実行エージェント206等のクラウド計算プラットフォームアプリケーション200の機能構成要素が通信し、通知を受信できるようにする共通インタフェースを提供する。
【0011】
クラウドコントローラ202が、1つ又は複数のアプリケーション実行エージェント206でのウェブアプリケーション220のデプロイメントを首尾良く指揮すると、エンドユーザ106は、例えば、ウェブブラウザ、コンピュータラップトップに常駐する任意の他の適切なクライアントアプリケーション、又は一般に任意の計算装置を通してウェブアプリケーション220にアクセスすることができる。ルータ204は、ウェブブラウザのアクセス要求(例えば、ユニフォームリソースロケータ、すなわちURL)を受信し、ウェブアプリケーション220をホストする対応のシステムに要求をルーティングする。
【0012】
説明したように、各構成要素は、別個のソフトウェアアプリケーション及びライブラリ従属性(例えば、MySQL、Redis、MongoDB、Apache)を有する、クラウド計算プラットフォームアプリケーション200内の別個の役割を有し、クラウド計算プラットフォームアプリケーション200が全体として機能するように特に構築され、構成され、デプロイされ、保守される。さらに、各構成要素は通常、1つ又は複数の仮想マシン(VM)で実行されるため、各VMも特に、システム管理者によりプロビジョニングされ、構成され、デプロイされ、保守される。したがって、ウェブアプリケーション220がデプロイされるクラウド計算プラットフォームアプリケーション200はそれ自体、面倒で複雑なデプロイ手順を有する。したがって、実施形態は、自動フレームワーク及びツーリングを使用して、簡易化され、自動化され、繰り返し可能なデプロイのためのデプロイメント技法をクラウド計算プラットフォームアプリケーションに提供する。
【0013】
図3は、マルチノード分散アプリケーションをデプロイするデプロイメント・システム306を有するマルチノードアプリケーション・プラットフォーム300の一実施形態を示す。例えば、システム管理者302は、マルチノードアプリケーション・プラットフォーム300を利用して、ウェブアプリケーション220をデプロイし得る
図2のクラウド計算プラットフォームアプリケーション200をデプロイし得る。
【0014】
一実施形態では、システム管理者302は、例えば、コマンドラインインタフェース(CLI:command line interface)又は管理クライアント304の他のユーザインタフェースを通してデプロイメント・システム306に通信可能に接続された管理クライアント304を通して1つ又は複数のコマンドを発行することにより、デプロイメント・システム306に命令する。システム管理者302により発行される1つ又は複数のコマンドの送信に加えて、管理クライアント304は、アプリケーションデータ、構成ファイル、及び他の情報のバンドル(まとめて「リリース」と呼ばれる)をさらに送信し得、これらは、後述するようにクラウド計算プラットフォームアプリケーション200をデプロイするために、デプロイメント・システム306により開封され(unpacked)、処理され、且つ/又は配布される。リリースに加えて、管理クライアント304は、クラウド計算プラットフォームアプリケーション200をデプロイした後のクラウド計算プラットフォームアプリケーション200の望ましい計算環境を記述した、リリースに関連付けられたデプロイメント・マニフェストを提供する。デプロイメント・マニフェストは、後述するように、利用すべきリソースプール(例えば、VM群)の数、セットアップすべきネットワーク、及び他の設定等の望ましい計算環境の属性を記述し、この実施形態では、デプロイの仕様として機能する。
【0015】
マルチノードアプリケーション・プラットフォーム300は、クラウド計算プラットフォームアプリケーション200がデプロイされ実行される基盤プラットフォーム308を含む。
図3の実施形態では、基盤プラットフォーム308は、サーバ312
1〜312
N等のハードウェアリソース310と、サーバ312
1〜312
Nにわたる複数の仮想マシン(VM)の実行をサポートする仮想化環境316を提供するように構成されるSAN314等の1つ又は複数のストレージアレイ・ネットワーク(SAN:storage array network)と、を備える。さらに後述するように、これらのVMは、デプロイメント・システム306により実行されるサービス及び機能をサポートする仮想計算リソースと、クラウド計算プラットフォームアプリケーション200の機能構成要素をホストするための仮想計算リソースと、を提供する。一実施形態では、基盤プラットフォーム308は、サービスとしてコンピュータ基盤を提供するクラウド基盤サービス又は他のインフラストラクチャアズサービス(「IaaS:Infrastructure−as−a−Service」)として実施し得る。
【0016】
仮想化環境316は指揮構成要素318(例えば、一実施形態では、仮想マシンで実行されるプロセスとして実施される)を含み、指揮構成要素318は、(例えば、さらに後述するように、アドレッシング・検出レイヤ(addressing and discovery layer)334を通してルーティングされる通信を監視することにより)デプロイメント・システム306の基盤リソース消費レベル及び要件を監視し、必要又は所望に応じて追加の基盤リソースをデプロイメント・システム306に提供する。例えば、デプロイメント・システム306が、クラウド計算プラットフォームアプリケーション200の新たにデプロイされた機能構成要素をホストし、ピーク需要をサポートするために現在実行中のマルチノードアプリケーションをスケーリングするために、追加のVMを要求する場合、指揮構成要素318は、サーバ312
1〜312
N上の仮想マシンのインスタンス化を開始して管理し、そのようなニーズをサポートすることができる。
図3と同様の一実施形態の一実施例では、カリフォルニア州パロアルト(Palo Alto)に所在のVMウェア社(VMware,Inc.)により提供されるVMウェアESX(VMware ESX)(商標)に基づくハイパーバイザ技術をサーバ312
1〜312
Nで実行することにより、仮想化環境316を実施し得る(しかし、本明細書の教示に従って、ゼン(Xen)(登録商標)及びマイクロソフトハイパーV(Microsoft Hyper−V)仮想化技術を含む任意の他の仮想化技術を利用し得ることを認識されたい)。
【0017】
図3の実施形態では、デプロイメント・システム306は、(例えば、1つ又は複数のVMで実行される)デプロイメント・ディレクタ320を含み、デプロイメント・ディレクタ320は、デプロイメント・システム306に供給されたデプロイメント・マニフェストに従って、クラウド計算プラットフォームアプリケーション200のデプロイメント・プロセスを指揮する。デプロイメント・ディレクタ320は、デプロイメント・マニフェストの命令を受信し、デプロイメント・システム306の他の構成要素と対話して、クラウド計算プラットフォームアプリケーション200がデプロイされる論理基盤350を生成する。
図3に示される実施形態では、デプロイメント・ディレクタ320は、代表状態転送(REST:Representative State Transfer)アーキテクチャ等の通信インタフェースを露出し(expose)、通信インタフェースを通して、デプロイメント・ディレクタ320は、管理コマンド及び他のデプロイメント・データ(例えば、リリース)をクライアント(例えば、管理クライアント304)から受信する。
【0018】
デプロイメント・ディレクタ320は、クラウドコントローラ202、アプリケーション実行エージェント206、ヘルスマネージャ208、ルータ204、サービスプロビジョナ210等のクラウド計算プラットフォームアプリケーション200の機能構成要素をホストするように、VM(ステムセル(stem cell)VM324
1〜324
Mとして識別される)をプロビジョニングし得る。
図3の実施形態では、デプロイメント・ディレクタ320は、ステムセルVM(例えば、ステムセルVM324
1〜324
M)を動的に作成し削除するように、基盤プラットフォーム308に要求する。ステムセルVM324
1〜324
Mは、基本オペレーティングシステム、エージェント322、並びにサポートライブラリ、ランタイム、及び/又はアプリケーションを含む事前定義されたVMテンプレート(「ステムセル」と呼ばれる)に基づいて作成されたVMである。エージェント322は、デプロイメント・ディレクタ320と協調して、クラウド計算プラットフォームアプリケーション200の様々な役割を実行するようにステムセルVM324
1〜324
Mを構成する。エージェント322は、ステムセルVM324
1がクラウド計算プラットフォームアプリケーション200内の特定の管理役割を実行するように、特定のジョブ(例えば、クラウドコントローラ202、ヘルスマネージャ208、アプリケーション実行エージェント206等のうちの1つのジョブ)を実行中のステムセルVM324
1に適用する。
【0019】
ステムセルVMのプロビジョニングに加えて、デプロイメント・ディレクタ320は、デプロイメントに役立つ1つ又は複数の処理タスクを実行する、ワーカ330と呼ばれる一時的なVMを動的に作成し削除するように、基盤プラットフォーム308に要求し得る。一実施形態では、例えば、ワーカ330を作成して、ステムセルVM324
1〜324
Mにデプロイすべき構成要素アプリケーション及び/又はライブラリのソフトウェアコンパイルを実行し得る。ワーカ330には、ステムセルVM324
1〜324
Mと同様の構成(例えば、同一の仮想ハードウェア仕様、アーキテクチャ、及び/又は構成)が構成され、コンパイルされたソフトウェアをステムセルVM324
1〜324
Mで実行できるようにする。処理タスク(例えば、ソフトウェアコンパイル)の結果及び他のキャッシュされたデータは、デプロイメント・プロセス中に生成されるアーチファクトを保持するために使用されるオブジェクト記憶装置332(例えば、ブロブ記憶装置)に記憶し得る。さらに、デプロイメント・ディレクタ320は、(例えば、1つ又は複数のVMで実行される)サービス328のセットを利用して、デプロイメント・プロセスの指揮に役立ち得る。例えば、関係データベースサービス(例えば、MySQL等)、監視サービス、バックグラウンドタスクスケジューラ、ログサービス、メッセージングサービス、メモリオブジェクトキャッシュサービス等がサービス328を構成し得る。
【0020】
アドレッシング・検出レイヤ334は共通のインタフェースを提供し、このインタフェースを通して、ステムセルVM324
1〜324
Mで実行中のデプロイメント・ディレクタ320、ヘルスモニタ336、サービス328、ワーカ330、及び1つ又は複数のエージェント322等のデプロイメント・システム306の構成要素は通信し、通知を受信することができる。例えば、デプロイメント・ディレクタ320は、アドレッシング・検出レイヤ334を利用して、基盤プラットフォーム308からVMのプロビジョニングを要求するとともに、クラウド計算プラットフォームアプリケーション200のデプロイ中、エージェント322にデプロイメント・機能を提供し得る。同様に、ステムセルVM324
1は、クラウド計算プラットフォームアプリケーション200のデプロイ中、アドレッシング・検出レイヤ334を通して他のステムセルVM324
Mと通信し得る。一実施形態では、アドレッシング・検出レイヤ334は、デプロイメント・システム306の構成要素がメッセージを交換し、通知及び他の情報をブロードキャストすることができる共通プロトコル及びメッセージフォーマットを定義するメッセージ仲介サービス(例えば、1つ又は複数のVMで実行される)として実施される。そのような一実施形態では、デプロイメント・システム306の構成要素は、例えば、(例えば、メッセージ仲介サービスへの「加入」と呼ばれることもある)既知の認証技法(例えば、パスワード等)を通してメッセージ仲介サービスとの接続を確立し、メッセージ仲介サービスに接続されると、メッセージ、通知、及び他の同様の情報を、メッセージ仲介システムに加入する他の構成要素に提供し、そのような他の構成要素から受信し、及び要求することができる。一実施形態において使用し得るメッセージ仲介サービスの一例は、AMPQ(アドバンストメッセージキューイングプロトコル)オープンプロトコル規格に基づくラビットMQ(RabbitMQ)(商標)である。しかし、アドレッシング・検出レイヤ334を実施するために、そのようなメッセージ仲介サービス以外の代替のインタフェース及び通信方式を実施してもよいことを認識されたい。
【0021】
デプロイメント・システム306はヘルスモニタ336(例えば、VMで実行される)をさらに備え、ヘルスモニタ336は、デプロイメント・システム306の他の構成要素によりアドレッシング・検出レイヤ334にブロードキャストされるメッセージを監視することにより、デプロイメント・システム306の「ヘルス(health)」を追跡し維持する。例えば、ヘルスモニタ336は、エージェント322(例えば、ステムセルVMで実行される)からの通信がないことを検出し、ステムセルVMの故障(例えば、クラウド計算プラットフォームアプリケーション200の構成要素の故障)を判断し得る。ヘルスモニタ336は、故障したステムセルVMを再開する要求をデプロイメント・ディレクタ320に自動的にブロードキャストし得、又は同じ役割を実行する代替ステムセルVMをプロビジョニングし得る。ヘルスモニタ336は、故障した提供サービス又はデプロイメント・システム306の他の構成要素(例えば、デプロイメント・ディレクタ320、オブジェクト記憶装置332、サービス328、ワーカ330、及びステムセルVM324
1〜324
Mで実行中の1つ又は複数のエージェント322等)の再開を開始するようにさらに構成し得る。
【0022】
本明細書の教示に従って、
図3の実施形態以外のデプロイメント・システムアーキテクチャを実施してもよいことを認識されたい。例えば、
図3はデプロイメント・システム306を、マルチノードアプリケーションプラットフォーム300によりホストされる基盤プラットフォーム308で実施するが、マルチノードアプリケーション・プラットフォーム300以外のエンティティにより、非仮想化基盤プラットフォーム等の任意の種類のハードウェア基盤上で、ハードウェアリソース310上のプロセッサ又はデーモンとして直接、デプロイメント・システム306を実施してもよいことを認識されたい。実施形態が、デプロイメント・システム306と基盤プラットフォーム308との通信が、アドレッシング・検出レイヤ334に接続することによりハードウェアリソース消費を監視する基盤プラットフォーム308の指揮構成要素318を通してのみ行われる状態で緩く結合されるように、デプロイメント・システム306及び基盤プラットフォーム308を構成し得ることをさらに認識されたい。そのような緩く結合される実施形態では、デプロイメント・システム306を、ラップトップ又はパーソナルコンピュータを含む任意の基盤プラットフォームで実施し得る(例えば、その場合、デプロイメント・システム306の各構成要素は、ラップトップ又はパーソナルコンピュータ上の別個のプロセス又はデーモンとして実行される)ことを認識されたい。
【0023】
図4は、デプロイメント・ディレクタ320の一実施形態のより詳細な図を示す。デプロイメント・ディレクタ320は、クラウド計算プラットフォームアプリケーション200のデプロイ後の所望の計算環境を記述するデプロイメント・マニフェスト402に基づいて、クラウド計算プラットフォームアプリケーション200のデプロイを管理する。デプロイメント・マニフェスト402は、例えば、クラウド計算プラットフォームアプリケーション200の名前及び/又はバージョン番号により、デプロイすべきリリースを指定する。デプロイメント・マニフェスト402は、特定の機能構成要素(例えば、クラウドコントローラ202、ヘルスマネージャ208、アプリケーション実行エージェント206等)、基盤プラットフォーム308により提供される論理基盤350(例えば、ステムセルVM234
M)、論理基盤350への機能構成要素マッピングを含め、クラウド計算プラットフォームアプリケーション200の完全な仕様を提供する。例えば、デプロイメント・マニフェスト402は、クラウド計算プラットフォームアプリケーション200を構成する構成要素をホストするために、10個のステムセルVMをプロビジョニングすべきであることを指定し得る。システム管理者は、クラウド計算プラットフォームアプリケーション200の初期デプロイのデプロイメント・マニフェスト402を作成し、既にデプロイされているクラウド計算プラットフォームアプリケーション200の規模を拡大又は縮小するようにデプロイメント・マニフェスト402を変更し、又はデプロイされたクラウド計算プラットフォームアプリケーション200を更新し得る。特定の一実装態様では、デプロイメント・マニフェスト402は、デプロイメント・システム306によるデプロイメント・プロセスに役立つ名前−値対及び/又は名前−値対の階層セクションを有する、YAML又は拡張可能マークアップ言語(XML:eXtensible Markup Language)等の構造化ドキュメントフォーマットでフォーマットされる構成ファイルである。デプロイメント・マニフェスト402の詳細について、以下の表1に示されるサンプルデプロイメント・マニフェストに関連して説明する。
【0024】
【表1】
表1 デプロイメント・マニフェスト例
デプロイメント・マニフェスト402は、1つ又は複数のネットワーク及び/又は仮想ローカルエリアネットワーク(VLAN:virtual local area network)を含むクラウド計算プラットフォームアプリケーション200のネットワーク構成を指定し得る。例えば、デプロイメント・マニフェスト402は、サブネット、静的又は動的IPアドレス、ゲートウェイ及びDNSアドレス、並びに確保されたインターネットプロトコル(IP)アドレス(すなわち、デプロイメント・システム306が使用すべきではないIPアドレス)を指定する設定を有する1つ又は複数のネットワークを定義し得る。表1のデプロイメントの例では、「management」と記される第1のネットワーク及び「apps」と記される第2のネットワークは、「networks」というタイトルのセクションの下で指定される。静的IPアドレス範囲11.23.3.2.17〜11.23.2.128、ゲートウェイアドレス11.23.2.1及びDNSアドレス11.22.22.153を有する「management」と記されるネットワークが指定される。デプロイメント・マニフェスト402は、静的及び確保IPアドレスを除くデプロイメント・ディレクタ320が使用し得るネットワークの「範囲」をIPアドレスの動的プールとして指定し得る。デプロイメント・マニフェスト402により指定されるゲートウェイ及びDNS情報を、初期起動及びブートストラップのために、ステムセルVM及びそこで実行中のエージェント322に渡し得る。デプロイメント・マニフェスト402は、各セクションに、デプロイメント中に基盤プラットフォーム308に提供される1つ又は複数のパススルー設定(例えば、「cloud_properties」)を含み得る。
【0025】
デプロイメント・マニフェスト402に基づいて、デプロイメント・ディレクタ320は、ステムセルVMをステムセル(例えば、VMテンプレート)及びネットワークに関連付ける1つ又は複数のリソースプール(
図4においてリソースプール404
1及び404
2として識別される)を含む論理基盤350を生成する。例えば、「small」と記されるリソースプールには、「bosh−stemcell」バージョン0.2.39として指定されるステムセル及びデプロイメント・マニフェスト402内で定義される「management」ネットワークが関連付けられる。ステムセルは、デプロイメント・ディレクタ320により提供され、デプロイメント・マニフェスト402により指定されるジョブの実行をサポートする一般化ソフトウェア基盤を定義するVMテンプレートを参照する。いくつかの実施形態では、ステムセルは、ゲストオペレーティングシステム406にインストールされるエージェント322並びに、エージェント322の任意のサポートランタイム、フレームワーク、及びライブラリを含むVMテンプレートである。各リソースプールにはそのリソースプールにプロビジョニングすべきステムセル324
Mの数に対応するサイズを割り当て得る。例えば、デプロイメント・ディレクタ320は、14個のステムセルVMを「small」リソースプールにプロビジョニングする。デプロイメント・マニフェスト402は、リソースプール404をプロビジョニングするための基盤プラットフォーム308のパススルー設定を含み得る。例えば、「cloud_properties」セクションは、「small」リソースプールへのステムセルVM(すなわち、1024MBのRAM、4096Mbのディスク空間、及び1CPUを有する)をプロビジョニングするに当たり基盤プラットフォーム308により使用されることが意図される「ram」、「disk」、及び「cpu」属性を示す。
【0026】
デプロイメント・マニフェスト402は、デプロイメント中のソフトウェアパッケージのコンパイル及び/又は他の補助処理タスクのためのワーカー(例えば、ワーカー330)の専用リソースプールを定義し得る。ワーカーの専用リソースプールは、基盤プラットフォーム308により提供される1つ又は複数の補助VMを含み得る。デプロイメント・マニフェスト402は、コンパイルを実行し得るワーカーリソースプール及びネットワークに割り振られるVMの数を指定し得る。例えば、上の「compilation」セクションは、ソフトウェアパッケージをコンパイルするために「management」ネットワークに割り当てられた6つのワーカーを有するリソースプールを指定する。
【0027】
デプロイメント・マニフェスト402は、クラウド計算プラットフォームアプリケーション200内の1つ又は複数の役割(例えば、クラウドコントローラ202、ルータ204、アプリケーション実行エージェント206、ヘルスマネージャ208、サービスプロビジョナ210、サービス212、メッセージバス214等)として、1つ又は複数のステムセルVM324Mにより実行し得る複数のジョブを定義する。デプロイメント・マニフェスト402は、上で指定されたリソースプール404及びネットワークの論理基盤350への各ジョブのマッピングを指定する。デプロイメント・マニフェスト402は、特定のジョブのデプロイすべきインスタンス数、どのリソースプールがステムセルVMを使用すべきか、及び/又はどのネットワークにジョブがあるかを指定し得る。例えば、表1の例では、「cloud_controller」と記されるジョブが、リソースプール「large」から引き出され、「management」ネットワークに割り当てられる8つのインスタンス(例えば、ステムセルVM324)を有するものとして列挙される。各ジョブは、いくつかの構成ファイルテンプレートを含み得、テンプレートには、鍵となるパラメータ(例えば、認証情報、IPアドレス、ポート)が変数として指定される。
【0028】
一実施形態では、デプロイメント・マニフェスト402は、システム管理者がこれらの構成ファイルテンプレートをパラメータ化できるようにする提供する「properties」セクションを含む。したがって、デプロイメント・ディレクタ320がクラウド計算プラットフォームアプリケーション200をデプロイする場合、デプロイメント・ディレクタ320は、構成ファイルテンプレートをパーズし(parse)、「properties」セクションにおいて提供される対応する値に基づいて適切なパラメータを「記入」し得る。例えば、ルータジョブは、ルータサービスのログイン認証情報を変数(「<$user>」、「<$password>」)として列挙する構成ファイルを有し得る。そのような一例では、デプロイメント・ディレクタ320は、propertiesセクションにおいて提供される「user:」及び「password:」名前−値対に基づいて変数をパーズして評価する。表2は、デプロイメント・ディレクタ320によりパーズし得るルビーオンレイルズ(Ruby on Rails)スクリプトファイル(例えば、ERBテンプレート)として実施される構成ファイルテンプレートの一例を列挙する。
【0029】
【表2】
表2 構成ファイルテンプレート例
図5は、デプロイメント・ディレクタ320によりクラウド計算プラットフォームアプリケーション200をデプロイするフローチャートを示す。ステップ500において、デプロイメント・ディレクタ320は、例えば、管理クライアント304からクラウド計算プラットフォームアプリケーション200をデプロイする要求を受信する。デプロイメント・マニフェスト402及びリリースは、要求に含めることができ、又は代替では、デプロイメント要求の発行前にデプロイメント・ディレクタ320に前もってロードし得る。上述したように、デプロイメント・マニフェスト402は、デプロイメント・ディレクタ320が、デプロイメント中、クラウド計算プラットフォームアプリケーション200に必要な管理ジョブを仮想計算リソースにマッピングするために使用し得るクラウド計算プラットフォームアプリケーション200の仕様を提供する。一実施形態では、リリースは、テープアーカイブファイル又は「tar」ファイル(「ターボール(tarball)」とも呼ばれる)に編成された1つ又は複数のアプリケーションパッケージ及び構成ファイルを含む。リリース自体を送信するのではなく、代替の実施形態は、ステップ500において、リリースをダウンロードするため、又はリリースに他の様式でアクセスするための参照を受信することにより、例えば、オブジェクト記憶装置332、ユニフォームリソースロケータ(「URL」)、Gitリポジトリへの参照、又はパッケージデータへの他の同様の参照を提供することにより、リリースを受信してもよいことを認識されたい。したがって、そのような実施形態では、リリースを受信するステップは、提供される参照を利用して、リリースをフェッチする。
【0030】
ステップ502において、デプロイメント・ディレクタ320は、デプロイメント・マニフェスト402に基づいて、クラウド計算プラットフォームアプリケーション200をホストする論理基盤350を決定する。例えば、一実施形態では、デプロイメント・ディレクタ320は、デプロイメント・マニフェスト402を処理して、クラウド計算プラットフォームアプリケーション200のノードをホストするリソースプール及びネットワークグループに編成されたステムセルVMの割り振りを決定する。ステップ506において、デプロイメント・ディレクタ320は、ステップ502において決定された論理基盤350に基づいて、複数のステムセルVMのプロビジョニング要求を基盤プラットフォーム308に送信し、基盤プラットフォーム308は次に、ステップ506において、プロビジョニング要求を受信する。例えば、一実施形態では、デプロイメント・ディレクタ320は、「クラウドプロバイダ・インタフェース」(CPI)と呼ばれることもあるクラウドプロバイダ・アプリケーション・プログラミング・インタフェースを利用して、クラウド基盤サービスプロバイダからステムセルVMのインスタンスのプロビジョニングを要求する。ステップ508において、基盤プラットフォーム308は、エージェント322が事前にインストールされ、デプロイメント・マニフェスト402により指定されるリソース及びネットワーク構成を有するステムセルテンプレートを利用して、ステムセルVMの1つ又は複数のインスタンスを作成する。例えば、一実施形態では、基盤プラットフォーム308は、オープン仮想化フォーマット(OVF)等のパッケージングされたフォーマットを有し、ゲストオペレーティングシステムカーネル、ユーティリティ(例えば、openssh−server、monit)、ライブラリ(例えば、libxml、libmysql、libsqlite)、ランタイム従属性(例えば、ルビー(Ruby)、Java(登録商標)仮想マシン(Java Virtual Machine))、及びエージェント322を含むテンプレート(例えば、ステムセル)を利用して、ステムセルVMを作成し得る。特定の一実施態様では、デプロイメント手順の開始前にステムセルを生成し、記憶し、後に基盤プラットフォーム308及び/又はデプロイメント・ディレクタ320により検索し得る。
【0031】
ステップ510において、1つ又は複数のステムセルVM(例えば、ステムセルVM324
1)は、動作を開始し、エージェント322を起動させる。ステップ512において、デプロイメント・ディレクタ320は、アドレッシング・検出レイヤ334を介して、ジョブ構成及びデータを、デプロイメント・マニフェスト402により指定される各ジョブのステムセルVM324に提供する。例えば、デプロイメント・ディレクタ320は、デプロイメント・マニフェスト402が、「クラウドコントローラ」ジョブが所定のリソースプール及び所定のネットワークグループから引き出されたステムセルVMの8つのインスタンスを使用することを指定すると判断する。デプロイメント・ディレクタ320は、クラウドコントローラジョブのジョブ構成及びデータをステムセルVM324の8つのインスタンスに提供する。ステップ514において、ステムセルVM324(例えば、ステムセルVM324
1)が、アドレッシング・検出レイヤ334を介してジョブ構成及びデータを受信する。ジョブ構成及びデータは、1つ又は複数のパッケージアプリケーション、ライブラリ、ランタイム、構成ファイル、メタデータ、及びクラウド計算プラットフォームアプリケーション200内で役割を実行するための他のサポートデータを含み得る。一実施形態では、エージェント322は、デプロイメント・ディレクタ320により提供されるリンク又はアドレスを利用して、オブジェクト記憶装置332に記憶された1つ又は複数のデータオブジェクトに対応するジョブ構成及びデータを検索し得る。ステップ516において、エージェント322は、受信したジョブ構成及びデータを適用して、ステムセルVM324
1をクラウド計算プラットフォームアプリケーション200内の分散ノード(distributed node)に変換する。エージェント322は、受信したジョブデータの1つ又は複数のアプリケーションパッケージをインストールし、受信したジョブ構成を利用して、インストールされたソフトウェアパッケージの任意の適するセットアップ及び構成を実行し、クラウド計算プラットフォームアプリケーション200の他のデプロイされたジョブに接続し、クラウド計算プラットフォームアプリケーション200内の1つ又は複数の専用タスクを実行するプロセスを起動させる。例えば、一実施形態では、エージェント322は、1つ又は複数のアプリケーションパッケージをインストールし、構成し、起動させて、ルータ(例えば、ルータ204)を動作させて、入ってきた要求を、ウェブアプリケーションを実行中のクラウド計算プラットフォームアプリケーション200の他の構成要素に転送することができる。デプロイメント・ディレクタ320は、すべてのジョブが、デプロイメント・マニフェスト402により指定される1つ又は複数のステムセルVM324にデプロイされるまで、ステップ512の動作を繰り返す。したがって、デプロイメント手順が完了した後、複数のステムセルVMは、
図6に示されるように、デプロイされたクラウド計算プラットフォームアプリケーション200を構成する複数の相互接続されたノード(例えば、クラウドコントローラ202、アプリケーション実行エージェント206、ヘルスマネージャ208、ルータ204、サービスプロビジョナ210等)に変換されている。
【0032】
図6は、クラウド計算プラットフォームアプリケーション200のデプロイメントが完了した後の
図4のデプロイメント・システム306を示す。上述したデプロイメント手順の実行後、論理基盤350からのステムセルVM(例えば、VM324
1〜324
M)は、クラウド計算プラットフォームアプリケーション200のノード(例えば、ルータ204、クラウドコントローラ202、ヘルスマネージャ208、アプリケーション実行エージェント206、サービスプロビジョナ210、サービス212、メッセージバス214)に「変換される(transformed)」。
図6の実施形態では、各ステムセルVM324
1〜324
Mは、クラウド計算プラットフォームアプリケーション200により実行される管理ジョブ(例えば、ルータジョブ604、クラウドコントローラジョブ602、ヘルスマネージャジョブ608、アプリケーション実行エージェントジョブ606、サービスプロビジョナジョブ610、サービスジョブ612、メッセージバスジョブ614)を実行する各ステムセルVM324
1〜324
Mで実行中のエージェント322を有する。
【0033】
添付の特許請求の範囲に記載される本発明のより広い趣旨及び範囲から逸脱せずに、様々な変形及び変更を本明細書に記載の特定の実施形態に対して行い得ることを認識されたい。例えば、上記説明は、分散クラウド計算プラットフォームアプリケーションの実施形態を考察したが、任意のネットワーク利用アプリケーションが本明細書に開示される技法を利用することができ、したがって、本明細書において使用される場合、「クラウド計算プラットフォームアプリケーション」を、ネットワークに基づく通信を利用する任意の種類のマルチノード分散アプリケーションを含むものとして解釈すべきであることを認識されたい。さらに、上記実施形態は、デプロイされたジョブをホストするステムセルVMの使用に焦点を合わせたが、デプロイされたジョブをホストするために、そのようなステムセルVM、仮想マシン内のプロセス、カーネルレベルコンテナ、従来の非仮想化オペレーティングシステム内のプロセス、及びアプリケーションレベルコードを実行可能な分離された環境を提供する任意の他の実行環境を含め、任意の「アプリケーションコンテナ」を使用し得ることを認識されたい。同様に、デプロイメント・システム306の様々な構成要素は一般に、1つ又は複数の仮想マシンで実施されるものとして説明されたが(例えば、負荷平衡及びスケーラビリティのため)、任意の種類の「アプリケーションコンテナ」(上述したように)が、例えば、従来の非仮想化計算環境バックグラウンドプロセス、スレッド、又はデーモンを含め、そのような構成要素を実施してもよいことを認識されたい。さらに、デプロイされたジョブをホストし、他の構成要素(例えば、デプロイメント・ディレクタ320、ヘルスモニタ336、サービス328、オブジェクト記憶装置332、ワーカ330、アドレッシング・発見レイヤ334等)を実施する異なる種類の「アプリケーションコンテナ」の任意の組み合わせが、任意の特定のデプロイメント・システム306の実施態様を含むことができる。デプロイメント・システム306の様々な構成要素の複数のインスタンス(例えば、デプロイメント・ディレクタ320、ヘルスモニタ336、サービス328、ワーカ330、オブジェクト記憶装置332等)を、例えば、スケーラビリティのために、代替の実施形態において実施し得ることをさらに認識されたい。
【0034】
本明細書に記載の様々な実施形態は、コンピュータシステムに記憶されたデータを含む様々なコンピュータ実施動作を利用し得る。例えば、これらの動作は物理的数量の物理的操作を必要とし得、必ずではないが通常、これらの数量は電気又は磁気信号の形態をとり得、電気又は磁気信号又はそれらの代表は、記憶、転送、結合、比較、又は他の様式での操作が可能である。さらに、そのような操作は多くの場合、生成、識別、特定、又は比較等の用語で呼ばれる。本発明の1つ又は複数の実施形態の一部をなす本明細書に記載の任意の動作は、有用なマシン動作であり得る。さらに、本発明の1つ又は複数の実施形態は、これらの動作を実行するデバイス又は装置にも関する。装置は特に、特定の所要目的に向けて構築し得、又はコンピュータに記憶されたコンピュータプログラムにより選択的にアクティブ化若しくは構成される汎用コンピュータであり得る。特に、様々な汎用マシンを、本明細書における教示に従って書かれたコンピュータプログラムと共に使用し得、又は必要とされる動作を実行するより専用化された装置を構築することがより好都合であり得る。
【0035】
本明細書に記載の様々な実施形態は、ハンドヘルド装置、マイクロプロセッサシステム、マイクロプロセッサベース又はプログラマブル消費者電子装置、ミニコンピュータ、メインフレームコンピュータ等を含む他のコンピュータシステム構成を用いて実施することもできる。
【0036】
本発明の1つ又は複数の実施形態は、1つ又は複数のコンピュータプログラムとして、又は1つ若しくは複数のコンピュータ可読媒体において具現される1つ若しくは複数のコンピュータプログラムモジュールとして実施し得る。コンピュータ可読媒体という用語は、データを記憶し、その後、データをコンピュータシステムに入力することが可能な任意のデータ記憶装置を指し、コンピュータ可読媒体は、コンピュータが読み取り可能なようにコンピュータプログラムを具現する任意の既存又は続けて開発される技術に基づき得る。コンピュータ可読媒体の例としては、ハードドライブ、ネットワーク接続ストレージ(NAS)、読み取り専用メモリ、ランダムアクセスメモリ(例えば、フラッシュメモリ装置)、CD(コンパクトディスク)、CD−ROM、CD−R又はCD−RW、DVD(デジタル多用途ディスク)、磁気テープ、並びに他の光学及び非光学データ記憶装置が挙げられる。コンピュータ可読媒体は、コンピュータ可読コードが分散して記憶され実行されるように、ネットワーク結合コンピュータシステムに分散することもできる。
【0037】
単一の事例として本明細書に記載された構成要素、動作、又は構造に対し複数の事例を提供し得る。最後に、様々な構成要素、動作、及びデータ記憶装置間の境界はいくらか任意的なものであり、特定の動作は、特定の例示的な構成の状況で示される。機能の他の割り振りも考えられ、本発明の範囲内にあり得る。一般に、例示的な構成において別個の構成要素として提示される構造及び機能は、結合された構造又は構成要素として実施し得る。同様に、単一の構成要素として提示される構造及び機能は、別個の構成要素として実施し得る。これら及び他の変形形態、変更形態、追加形態、及び改良形態は、添付の特許請求の範囲内にあり得る。