(57)【特許請求の範囲】
【請求項１】
ヘテロジニアスなコンピューティング環境にわたってクラウドサービスをプロビジョニングするためのシステムであって、
１つ以上のマイクロプロセッサを含むコンピュータと、
複数の範囲に分割された複数のプロビジョニング命令を格納し、前記コンピュータ上で実行される構成管理サーバと、
複数のグループに構成された複数のクライアントノードとを備え、各々のグループは、１つ以上の仮想マシン上に１つ以上のコンピューティング環境を提供し、
前記各々のグループは、前記各々のグループにおいてコンピューティング環境を構成する際に使用される特定の範囲のプロビジョニング命令を指定するためのプログラムに関連付けられ、
特定のグループにおける仮想マシンが再始動すると、前記仮想マシン上の前記コンピューティング環境は、前記特定のグループに関連付けられた前記プログラムによって指定される範囲にある最新のプロビジョニング命令をサーチする、システム。
【請求項２】
ヘテロジニアスなコンピューティング環境にわたってクラウドサービスをプロビジョニングするための方法であって、
構成管理サーバ上に、複数の範囲に分割された複数のプロビジョニング命令を提供するステップと、
前記構成管理サーバに接続された複数のクライアントノードを複数のグループに構成するステップとを含み、各々のグループは、１つ以上のコンピューティング環境を提供し、前記方法はさらに、
各々のグループを、前記各々のグループにおけるコンピューティング環境を構成する際に使用されるべき特定の範囲のプロビジョニング命令を指定するためのプログラムに関連付けるステップを含み、
特定のグループにおける仮想マシンが再始動すると、前記仮想マシン上の前記コンピューティング環境は、前記特定のグループに関連付けられた前記プログラムによって指定される範囲内で最新のプロビジョニング命令をサーチする、方法。
【請求項３】
前記複数のプロビジョニング命令はそれぞれの対応するバージョン番号に基づいて分割される、請求項２に記載の方法。
【請求項４】
複数のビルドを生成するようにビルドサーバを構成するステップをさらに含み、各々のビルドはビルドラベルを含み、プロビジョニング命令に関連付けられており、さらに、
複数のＰＯＤ（point of delivery）を作成するステップを含み、各々の前記ＰＯＤは、仮想マシンを含み、前記クラウドサービスをプロビジョニングするために特定のコンピューティング環境にインストールされる、請求項２または３に記載の方法。
【請求項５】
各々のビルドに関連付けられた前記プロビジョニング命令はバージョン番号を含み、前記バージョン番号は、特定のグループのクライアントノードによって使用されるように前記プロビジョニング命令が提供されることを指定するカテゴリインジケータを含む、請求項４に記載の方法。
【請求項６】
前記プロビジョニング命令の前記バージョン番号は、前記ビルドのビルドラベルからの日付けおよび時間で更新される、請求項５に記載の方法。
【請求項７】
前記更新されたバージョン番号は前記構成管理サーバにアップロードされる、請求項６に記載の方法。
【請求項８】
プロビジョニング命令の各々の範囲は、特定のグループのクライアントノードにおける複数のさまざまなコンピューティング環境についての前記各々の範囲内でプロビジョニング命令を構成するかまたはカスタマイズするように、メタデータに関連付けられている、請求項２から７のいずれか一項に記載の方法。
【請求項９】
前記構成管理サーバはシェフサーバまたはパペットサーバである、請求項２から８のいずれか一項に記載の方法。
【請求項１０】
ヘテロジニアスなコンピューティング環境にわたってクラウドサービスをプロビジョニングするための１セットの命令を格納するコンピュータ読取可能プログラムであって、前記命令は、１つ以上のプロセッサによって実行されると、請求項２から９のいずれか一項に記載の方法を前記１つ以上のプロセッサに実行させる、コンピュータ読取可能プログラム。
【請求項１１】
ヘテロジニアスなコンピューティング環境にわたってクラウドサービスをプロビジョニングするための１セットの命令を格納するコンピュータ読取可能プログラムであって、前記命令は、１つ以上のプロセッサによって実行されると、前記１つ以上のプロセッサに、
複数の範囲に分割された複数のプロビジョニング命令を構成管理サーバ上に提供するステップと、
前記構成管理サーバに接続された複数のクライアントノードを複数のグループに構成するステップとを実行させ、各々のグループは、１つ以上のコンピューティング環境を提供し、前記１つ以上のプロセッサにさらに、
各々のグループを、前記各々のグループにおけるコンピューティング環境を構成する際に使用される特定の範囲のプロビジョニング命令を指定するためのプログラムに関連付けるステップを実行させ、
特定のグループにおける仮想マシンが再始動すると、前記仮想マシン上の前記コンピューティング環境は、前記特定のグループに関連付けられた前記プログラムによって指定される範囲にある最新のプロビジョニング命令をサーチする、コンピュータ読取可能プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
著作権表示
この特許文献の開示の一部は、著作権保護の対象となる題材を含んでいる。著作権の所有者は、特許商標庁の包袋または記録に掲載されるように特許文献または特許情報開示を誰でも複製できることに対して異議はないが、その他の点ではすべての如何なる著作権をも保有する。
【０００２】
発明の分野：
本発明の実施形態は、概して、ソフトウェアアプリケーションを連続的に統合して配信することに関し、特に、ヘテロジニアスな環境にわたってクラウドサービスをプロビジョニングするためのシステムおよび方法に関する。
【背景技術】
【０００３】
背景：
ソフトウェア開発の分野において、モノリシックにリリースされたウォーターフォールアプローチから、インクリメンタルにリリースされたアジャイルなアプローチへのパラダイムシフトにより、アプリケーションのライフサイクルの管理方法が変化してきた。たとえば、開発者は、統合の失敗を減らすために早期にかつより頻繁に統合を実行する傾向がある。構築、テストおよび展開の頻度の増加による要件に対応するために、ソフトウェア開発プロセスにおける複数のパーティシパント用の複数のマシン／クライアントノードの構成を管理するための、構成管理ツールなどの複数のツールを使用することができる。
【０００４】
これらのツールは、複数のプロビジョニング命令を使用して、さまざまな目的で、クライアントノードを構成することができる。しかしながら、構成管理サーバ上に格納される複数のプロビジョニング命令は、クライアントノードが検索することを意図していないプロビジョニング命令を、当該クライアントノードに検索させる可能性がある。
【発明の概要】
【課題を解決するための手段】
【０００５】
概要：
一実施形態に従うと、ヘテロジニアスなコンピューティング環境にわたってクラウドサービスをプロビジョニングするためのシステムおよび方法がこの明細書中に記載される。構成管理サーバ上に格納された複数のプロビジョニング命令は、複数の範囲に分割することができる。構成管理サーバに接続された複数のクライアントノードは、複数のグループに構成することができる。各々のグループは、クラウドサービスをホストするために１つ以上の仮想マシン上に１つ以上のコンピューティング環境を提供する。特定のグループにおける各々のコンピューティング環境は、特定の範囲のプロビジョニング命令を指定するプロビジョニング命令ランチャーに関連付けることができる。特定のグループにおける仮想マシンがリブートすると、仮想マシン上のコンピューティング環境は、特定のグループに対応する範囲にある最新のプロビジョニング命令をサーチする。
【図面の簡単な説明】
【０００６】
【図１】一実施形態に従った構成管理ツールを示す図である。
【図２】一実施形態に従った、ヘテロジニアスなコンピューティング環境にわたってクラウドサービスをプロビジョニングするためのシステムを示す図である。
【図３】一実施形態に従った、ヘテロジニアスなコンピューティング環境にわたってクラウドサービスをプロビジョニングするためのシステムをさらに示す図である。
【図４】一実施形態に従った、プロビジョニング命令のバージョン番号を分割することによって、ヘテロジニアスな環境にわたってクラウドサービスをプロビジョニングするためのフローチャートである。
【図５】一実施形態に従った、ヘテロジニアスなコンピューティング環境にわたってクラウドサービスをプロビジョニングするための方法を示す図である。
【発明を実施するための形態】
【０００７】
詳細な説明：
構成管理ツール（たとえば、シェフ（Chef））は、さまざまな目的でさまざまなタイプのクライアントノードを構成することができる。たとえば、１つのタイプのクライアントノードは開発者のために構成することができ、別のタイプのクライアントノードは試験者のために構成することができる。開発チームが連続的な統合および連続的な配信手段を使用する場合、さまざまなタイプのクライアントノードは、同じセットのサーバコンポーネントと、開発中の１つ以上のさまざまなバージョンのソフトウェアアプリケーションとを含み得る。
【０００８】
しかしながら、このような構成管理ツールは、プロビジョニング命令を格納するために構成管理サーバを使用することが多く、これにより、或る１つのタイプのクライアントノードに、別のタイプのクライアントノードを対象としたプロビジョニング命令を検索させる可能性がある。
【０００９】
さらに、構成管理サーバ上に集約的に格納された複数のプロビジョニング命令は、特定のタイプのコンピューティング環境についての構成情報を提供する傾向がある。しかしながら、ソフトウェア開発プロセスにおけるさまざまなパーティシパントは、ヘテロジニアスなコンピューティング環境を使用することが要求される可能性がある。たとえば、開発者は、開発のためにＷｉｎｄｏｗｓ（登録商標）環境を使用することが要求される可能性があり、試験者は、テストのためにＬｉｎｕｘ（登録商標）環境を使用することが要求される可能性がある。
【００１０】
上述の問題に対する既存の解決策は、さまざまなタイプのクライアントノードについてのプロビジョニング命令を格納するためにさまざまなサーバを作成することを含む。しかしながら、複数のサーバアプローチは連続的な統合および連続的な配信に適したものではない。
【００１１】
一実施形態に従うと、ヘテロジニアスなコンピューティング環境にわたってクラウドサービスをプロビジョニングするためのシステムおよび方法がこの明細書中に記載されている。構成管理サーバ上に格納された複数のプロビジョニング命令は、複数の範囲に分割することができる。構成管理サーバに接続された複数のクライアントノードは、複数のグループに構成することができる。各々のグループは、クラウドサービスをホストするために１つ以上の仮想マシン上に１つ以上のコンピューティング環境を提供する。特定のグループにおける各々のコンピューティング環境は、特定の範囲のプロビジョニング命令を指定するプロビジョニング命令ランチャーに関連付けることができる。特定のグループにおける仮想マシンがリブートすると、仮想マシン上のコンピューティング環境は、特定のグループに対応する範囲にある最新のプロビジョニング命令をサーチする。
【００１２】
図１は一実施形態に従った構成管理ツールを示す図である。
図１に示されるように、システムは、複数のクライアントノード（たとえば、クライアントノードＡ１１５およびクライアントノードＢ１１７）と、複数のクライアントノードにプロビジョニング命令１２３を提供する構成管理サーバ（たとえば、シェフサーバまたはパペットサーバ）１１１とを含み得る。
【００１３】
一実施形態に従うと、プロビジョニング命令（たとえばシェフのための１セットのクックブック）は、クライアントノードを特定の状態にするために構成管理サーバが使用する構成およびポリシーの詳細の基本単位としての役割を果たし得る。たとえば、仮の命令を使用して、ウェブサーバおよびデータベースサーバをインストールすることができ、さらに、さまざまなコンピューティング環境における構成ファイルを、それらのコンピューティング環境におけるクラウドサービスをプロビジョニングするために変更することができる。
【００１４】
一実施形態に従うと、クライアントノードは、物理サーバであってもよく、または、プライベートクラウドもしくはパブリッククラウドにおける仮想マシンであってもよい。各々のクライアントノードは、プロビジョニング命令をフェッチして、当該プロビジョニング命令を実行してそのクライアントノードを構成するエージェント（たとえば、エージェントＡ１２５およびエージェントＢ１２９）を含み得る。
【００１５】
一実施形態に従うと、各々のエージェントは、最新のプロビジョニング命令のために一定間隔で構成管理サーバをポーリングすることができ、クライアントノードがプロビジョニング命令によって定義された状態に適合していない場合、プロビジョニング命令を使用して、クライアントノードを最新の状態に更新することができる。
【００１６】
一実施形態に従うと、プロビジョニング命令は、１セットのファイル（たとえば、クックブックのファイル）およびこれらのファイルのバージョンを格納するためのメタデータを含み得る。プロビジョニング命令は、バージョンの根拠となるプロビジョニング命令とは異なる１セットの機能を表わし得る固有のバージョン番号を有し得る。
【００１７】
たとえば、プロビジョニング命令バージョン番号は、Ｘ．Ｙ．Ｚ．の形式を得ることができる。この場合、Ｘ．Ｙ．Ｚ．は、メジャー（Ｘ）バージョン、マイナー（Ｙ）バージョン、およびパッチ（Ｚ）バージョンを表わすのに用いられる１０進数である。
【００１８】
図１にさらに示されるように、コードリポジトリ１３７（たとえば、ソース制御アプリケーション／システムに関連付けられたデータベース）は、ソフトウェアアプリケーションの開発、テストまたは展開の際に使用されるクライアントノードを構成するためのソフトウェアアプリケーションおよびプロビジョニング命令についてのさまざまなバージョンのソースコードを格納するために使用することができる。
【００１９】
一実施形態に従うと、ビルドサーバ（たとえば、Jenkins）１１９は、ソフトウェアのソースコードにおける最新の変更を検索することができ、自動ビルドを実行して、一定間隔で、たとえば、夜毎に、または、コード変更が検出されるたびに、複数のビルドを生成することができる。ビルドサーバはそれらのビルドを利用し、各々のクライアントノード上のエージェントによって呼出されるデプロイメントプロセスを使用して、そのクライアントノード上に１つ以上のビルドをデプロイすることができる。
【００２０】
一実施形態に従うと、異なるバージョンのソフトウェアアプリケーションを、各々のノード上で実行されるようにデプロイすることができる。たとえば、サービスＡ１２７およびサービスＢ１３１の各々は、異なるバージョンのソフトウェアアプリケーションを表わし得る。各々のクライアントノードに割当てられたプロビジョニング命令を使用して、そのクライアントノードを、特定のバージョンのソフトウェアアプリケーションを実行するための所望の状態にすることができる。
【００２１】
図１に示されるように、コードリポジトリは、ビルドサーバに接続（１３９）することができ、ビルドサーバはさらに、構成管理サーバに接続（１４１）することができる。コードリポジトリにおいてコードが変更されるたびに、ビルドサーバまたは構成管理サーバにおける１つ以上の自動化プロセスがトリガされて、クライアントノード上のビルドにコードパッケージをインストールすることができる。
【００２２】
一実施形態に従うと、複数のクライアントノードは、ソフトウェア開発プロセスにおいてさまざまな役割をもつユーザによって使用されるように構成することができる。各々のクライアントノードは、開発ノードであろうと、またはテストノードであろうと、クラウドサービスのための別のバージョンのソフトウェアアプリケーションがプロビジョニングされ得る同じコンピューティング環境を使用することができる。上述のとおりクライアントノードを構成するために、複数のバージョンのプロビジョニング命令を使用することができる。各々のバージョンが同じサーバ状態と、異なるバージョンのソフトウェアアプリケーションとを定義している。
【００２３】
しかしながら、いずれのタイプのクライアントノードがリブートしても、それは最新バージョンのプロビジョニング命令をサーチすることができる。たとえば、開発者が加えた変更に対応するようにプロビジョニング命令が更新されていた場合、試験者が最新バージョンのソフトウェアアプリケーションをテストする準備ができていない可能性がある場合であっても、テスト用クライアントノードは、最新バージョンのプロビジョニング命令を検索することができる。
【００２４】
命令をプロビジョニングするためのバージョン番号の分割
図２は、一実施形態に従った、ヘテロジニアスなコンピューティング環境にわたってクラウドサービスをプロビジョニングするためのシステムを示す。
【００２５】
より特定的には、図２は、プロビジョニング命令のバージョン番号をさまざまな範囲に分割することによって、上述の問題を克服するために使用することができるシステムを示す。この場合、各々の範囲は、特定のタイプの１つ以上のクライアントノード（たとえば、１つ以上のテスト用クライアントノード、または１つ以上の開発クライアントノード）に割当てられている。
【００２６】
一実施形態に従うと、各々のタイプのクライアントノードは、ソフトウェア開発プロセスにおいて特定の役割をもつユーザによって使用され得るとともに、さまざまなグループに分割され得る。たとえば、開発クライアントノードは、１つのグループ内にあり得るとともに、テスト用クライアントノードは識別を容易にするために別のグループ内にあり得る。
【００２７】
図２に示されるように、ビルドサーバ２１９は、コードリポジトリ２３７からのソースコード２３９を使用して、一定間隔で（たとえば、１時間毎に、または夜毎に）複数のビルド２２１を自動的に生成するように構成することができる。各々のビルドは、４つの部分（ラベル名、日付け、時間およびビルド番号）を含むビルドラベルを有し得る。
【００２８】
たとえば、ビルドラベル「ＳＯＡＣＬＯＵＤ＿ＭＡＩＮ＿ＧＥＮＥＲＩＣ＿１４１０１７＿１１４５＿０２１９」において、「ＳＯＡＣＬＯＵＤ＿ＭＡＩＮ＿ＧＥＮＥＲＩＣ」はラベル名であり、数値は、ビルドが２０１４年１０月１７日午後１１時４５分に生成されたことを示しており、「０２１９」はビルド番号である。
【００２９】
一実施形態に従うと、各々のビルドは、コードリポジトリに格納されたプロビジョニング命令２４１から検索されたプロビジョニング命令に関連付けることができる。プロビジョニング命令のバージョン番号は複数の範囲に分割することができる。各々の範囲は、特定のタイプの１つ以上のクライアントノードを構成するための１つ以上のプロビジョニング命令を含み得る。
【００３０】
一実施形態に従うと、範囲は、プロビジョニング命令のバージョン番号中のメジャーバージョンについての数値であり得るカテゴリインジケータによって識別することができる。
【００３１】
具体例として、プロビジョニング命令のバージョン番号は、開発者のための範囲および試験者のための範囲に分割することができる。開発者のための範囲は、２．０．０よりも小さく１．０．０よりも大きいバージョン番号を有する任意のプロビジョニング命令を含み得る。
【００３２】
一実施形態に従うと、ビルドに関連付けられたプロビジョニング命令のバージョン番号は、ビルドをプロビジョニング命令と一致させるために、ビルドラベルからの日付けおよび時間の情報で更新することができる。
【００３３】
具体例として、コードリポジトリから検索されたプロビジョニング命令はバージョン番号「１．１．１」を有し得る。この場合、最初の「１」は開発ノードによって使用されるべきバージョンのプロビジョニング命令が作成されることを示すカテゴリインジケータであり、中間の「１」はマイナーバージョンであり、最後の「１」はパッチバージョンである。
【００３４】
一実施形態に従うと、ビルドサーバは、プロビジョニング命令のバージョン番号を格納するために使用されるメタデータを修正することにより、マイナーバージョンおよびビルド番号をそれぞれビルドラベルから抽出された日付けおよび時間と置換えることができる。
【００３５】
たとえば、更新後、プロビジョニング命令のバージョン番号は元のカテゴリインジケータを含む「１．１４１０１７．１１４５」になり、日付けおよび時間が、ビルドラベル「ＳＯＡＣＬＯＵＤ＿ＭＡＩＮ＿ＧＥＮＥＲＩＣ＿１４１０１７＿１１４５＿０２１９」から抽出される。
【００３６】
図２に示されるように、プロビジョニング命令２２２は、上述の方法に従って複数のビルドからのタイムスタンプ２２５を使用することによって、コードリポジトリ内の複数のプロビジョニング命令から作成することができる。さまざまな範囲に分割されたプロビジョニング命令は、ビルドサーバから構成管理サーバ２１１にアップロード（２４３）され得る。この場合、プロビジョニング命令２２３は、範囲Ａ２１６および範囲Ｂ２１８にバージョン番号を含み得る。
【００３７】
ＰＯＤ（Point of Delivery）
一実施形態に従うと、ビルドサーバは、複数のＰＯＤ（point of delivery）を作成するための複数のファイル２２６を含み得る。各々のＰＯＤは、１つ以上のビルドをクラウドサービスとして与えるためのコンピューティング環境を表わしている。
【００３８】
この明細書中において使用される場合、ＰＯＤは、サービス（たとえば、クラウドサービス）をインストールすることができるデプロイ可能なユニットまたはホストユニットであってもよい。たとえば、ＰＯＤは、１つ以上のアプリケーションコンテナ、これらコンテナのための共用ストレージ、およびこれらコンテナを如何に実行するかについてのオプションを含み得る。ＰＯＤは仮想マシンであってもよく、または仮想マシンから作成されてもよい。
【００３９】
図２にさらに示されるように、ビルドサーバ上の複数のファイルの各々には、更新されたバージョン番号のプロビジョニング命令をポストフィックスとして割当てることができる。複数のファイルは、その後、各々のビルドと共に大型のファイルサーバ２２４にアップロードすることができる。
【００４０】
一実施形態に従うと、複数のＰＯＤは、複数のファイルから作成することができ、複数のクライアントノード（たとえば、クライアントノードＡ２１５およびクライアントノードＢ２１７）にアップロードすることができる。
【００４１】
たとえば、ＰＯＤ  Ａ２４５は、クライアントノードＡにアップロードすることができ、ＰＯＤ  Ｂ２４９はクライアントノードＢにアップロードすることができる。
【００４２】
一実施形態に従うと、各々ＰＯＤは、マッピングファイル（たとえば、マッピングファイルＡ２４７またはマッピングファイルＢ２５１）を含み得る。各々のマッピングファイルは、プロビジョニング命令ランチャー（たとえば、プロビジョニング命令ランチャーＡ２４６およびプロビジョニング命令ランチャーＢ２４８）を指定することができる。各々のプロビジョニング命令ランチャーは、特定の範囲内にある最新のプロビジョニング命令を開始するためにクライアントノード内のエージェントによって使用されるファイル（たとえば、クックブックのファイル）であってもよい。
【００４３】
たとえば、プロビジョニング命令ランチャーＡは、範囲Ａ内における最新のプロビジョニング命令を開始するために使用することができ、プロビジョニング命令ランチャーＢは、範囲Ｂ内における最新のプロビジョニング命令を開始するために使用することができる。
【００４４】
一実施形態に従うと、特定のクライアントノードがリブートされるたびに、クライアントノード上のプロビジョニング命令ランチャーが、特定の範囲で最高（最新）のバージョン番号を有するプロビジョニング命令をサーチすることができる。
【００４５】
一実施形態に従うと、プロビジョニング命令のバージョン番号を、特定のタイプのクライアントノードにそれぞれ関連付けられたさまざまな範囲に分割することによって、システムは、複数のクライアントノードについてのプロビジョニング命令を構成管理サーバが格納することを可能にし、ソフトウェア開発プロセスにおいてさまざまな役割のユーザが使用できるようにする。
【００４６】
代替的な実施形態に従うと、ＰＯＤの作成中、ＰＯＤのマッピングファイルを使用して、特定のバージョンのプロビジョニング命令を明確にすることができる。たとえば、マッピングファイルは、どのバージョンのプロビジョニング命令を使用すべきかを明確に指定することができる。ＰＯＤが停止または再開されると、構成管理サーバ上でより新しいバージョンまたはより古いバージョンが利用可能であったとしても、指定されたバージョンのプロビジョニング命令をサーチすることができる。指定されたバージョンが利用可能でなければ、エラーを生成することができる。
【００４７】
図３は、一実施形態に従った、ヘテロジニアスなコンピューティング環境にわたってクラウドサービスをプロビジョニングするためのシステムをさらに示す。
【００４８】
より特定的には、図３は、１つのクライアントノードまたは複数のクライアントノードによって提供されるさまざまなタイプのコンピューティング環境を示す。
【００４９】
一実施形態に従うと、クラウドサービスを開発およびテストする場合、開発チームは、所与のＰＯＤに関して特定のバージョンのソフトウェアアプリケーションを使用することができる。各々のＰＯＤは、ハードウェアおよびオペレーティングシステムを含む別のコンピューティング環境に関連付けることができる。仮想化ソリューション（たとえば、Vagrant Box）は、ユーザが、クライアントノード上で仮想化を用いてさまざまなコンピューティング環境をシミュレートすることを可能にする。
【００５０】
図３に示されるように、クライアントノードＣ３１５はVagrant box環境を提供することができる、この場合、複数のＰＯＤ、たとえば、ＷｉｎｄｏｗｓのためのＰＯＤ  Ｘ３１９、ＬｉｎｕｘのためのＰＯＤ  Ｙ３２１およびＵｂｕｎｔｕのためのＰＯＤ  Ｚ３２３をインストールすることができる。各々のＰＯＤは仮想マシン（たとえば、Vagrant box）であってもよく、ＰＯＤにおいて共通のプロビジョニング提供ランチャー（たとえば、プロビジョニングランチャーＡ３２５、プロビジョニングランチャーＡ３２７またはプロビジョニングランチャーＡ３２９）を含み得る。
【００５１】
一実施形態に従うと、複数のＰＯＤは、開発者が、同じプロビジョニング命令を使用して、複数のコンピューティング環境においてクラウドサービスを開発またはテストすることを可能にする。
【００５２】
一実施形態に従うと、構成管理サーバ上に格納されたプロビジョニング命令の各々の範囲は、メタデータ（たとえば、メタデータＡ３０９およびメタデータＢ３１１）に関連付けることができる。メタデータを使用することにより、１つのクライアントノード上で、または複数のクライアントノードにわたって、同じプロビジョニング命令を、複数のさまざまなコンピューティング環境によって使用されるように構成またはカスタマイズすることができる。
【００５３】
一実施形態に従うと、範囲Ａ内のプロビジョニング命令は、クライアントノードＣ上の複数のコンピューティング環境の各々を、プロビジョニング命令によって定義される所望の状態に導くために使用することができる。メタデータＡは、クライアントノードＣ上の各コンピューティング環境の特定要件を満たすようにプロビジョニング命令をカスタマイズするための情報を含み得る。
【００５４】
同様に、メタデータＢは、特定タイプのさまざまなクライアントノード（たとえば、クライアントノードＤ３１７およびクライアントノードＥ３３４）上の複数のさまざまなコンピューティング環境の各々についての特定条件を満たすように、範囲Ｂにおけるプロビジョニング命令をカスタマイズするための情報を提供することができる。
【００５５】
一実施形態に従うと、クライアントノードＣ上のＰＯＤがリブートすると、当該ＰＯＤは、範囲Ａ内で最新のプロビジョニング命令をサーチするためにプロビジョニング命令ランチャーＡを呼出すことができる。クライアントノードＤおよびクライアントノードＥの各々がリブートすると、それら各々は、範囲Ｂ内で最新のプロビジョニング命令をサーチするために、同じプロビジョニング命令ランチャー（たとえば、プロビジョニング命令ランチャーＢ３３７またはプロビジョニング命令ランチャーＢ３３９）を呼出すことができる。
【００５６】
図４は、一実施形態に従った、プロビジョニング命令のバージョン番号を分割することによって、ヘテロジニアスな環境にわたってクラウドサービスをプロビジョニングするためのフローチャートを示す。
【００５７】
一実施形態に従うと、ステップ４１１において、開発者は、プロビジョニング命令を、当該プロビジョニング命令が特定のタイプのクライアントノード（たとえば開発ノード）によって使用されるべきであることを示すカテゴリインジケータを含むバージョン番号付きで作成する。
【００５８】
ステップ４１３として、ビルドサーバは、クラウドサービスを作成するために使用されるソフトウェアアプリケーションについてのコード変更を検出し、ビルドを、当該ビルドが生成されるビルド番号、日付けおよび時間を含むビルドラベル付きで作成する。
【００５９】
ステップ４１５において、ビルドサーバは、カテゴリインジケータを変更することなく、ビルドラベルからの日付けおよび時間でプロビジョニング命令のバージョン番号を更新する。
【００６０】
ステップ４１７において、更新されたバージョン番号のプロビジョニング命令は、クラウドサービスをデプロイするべきＰＯＤ（point of delivery）を作成するために提供される複数のファイルの各々についてのポストフィックスとして付与される。
【００６１】
ステップ４１９において、ビルドおよび複数のファイルが大型のファイルサーバにアップロードされる。
【００６２】
ステップ４２１において、ＰＯＤが複数のファイルから作成され、ＰＯＤがマッピングファイルで構成される。マッピングファイルは、カテゴリインジケータによって指定される範囲にある最新のプロビジョニング命令を開始する際に使用されるプロビジョニング命令ランチャーを定義する。
【００６３】
ステップ４２３において、ＰＯＤが、カテゴリインジケータによって示される特定のタイプの１つ以上のクライアントノードにインストールされる。
【００６４】
ステップ４２５において、新しいビルドが生成されると、プロビジョニング命令のバージョン番号が、各々のビルドのラベルからの日付けおよび時間で更新される。
【００６５】
ステップ４２７において、ＰＯＤは、プロビジョニング命令ランチャーを使用して、範囲内にある最新バージョンのプロビジョニング命令をサーチする。
【００６６】
図５は、一実施形態に従った、ヘテロジニアスなコンピューティング環境にわたってクラウドサービスをプロビジョニングするための方法を示す。
【００６７】
図５に示されるように、ステップ５１１において、複数の範囲に分割される複数のプロビジョニング命令が、複数のクライアントノードに接続された構成管理サーバ上に提供される。
【００６８】
ステップ５１３において、複数のクライアントノードが複数のグループに構成される。各々のグループは、クラウドサービスをホストするための１つ以上のコンピューティング環境を提供する。
【００６９】
ステップ５１５において、特定のグループにおける各々のコンピューティング環境は、特定の範囲のプロビジョニング命令を指定するプロビジョニング命令ランチャーに関連付けられている。
【００７０】
ステップ５１７において、リブート時、特定のグループにおけるコンピューティング環境が、特定のグループに対応する範囲にある最新のプロビジョニング命令をサーチする。
【００７１】
この発明の実施形態は、この開示の教示に従ってプログラミングされた１つ以上のプロセッサ、メモリおよび／またはコンピュータ読取り可能記憶媒体を含む、１つ以上の従来の汎用または特化型デジタルコンピュータ、コンピューティング装置、マシン、またはマイクロプロセッサを使用して都合よく実現されてもよい。ソフトウェア技術の当業者には明らかであるように、この開示の教示に基づいて、適切なソフトウェアコーディングが、熟練したプログラマによって容易に準備され得る。
【００７２】
実施形態によっては、本発明は、本発明のプロセスのうちいずれかを実行するためにコンピュータをプログラムするのに使用できる命令が格納された非一時的な記録媒体または（１つもしくは複数の）コンピュータ読取り可能な媒体であるコンピュータプログラムプロダクトを含む。この記録媒体の例は、フロッピー（登録商標）ディスク、光ディスク、ＤＶＤ、ＣＤ−ＲＯＭ、マイクロドライブ、および光磁気ディスクを含む、任意の種類のディスク、ＲＯＭ、ＲＡＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、ＤＲＡＭ、ＶＲＡＭ、フラッシュメモリデバイス、磁気もしくは光カード、ナノシステム（分子メモリＩＣを含む）、または、命令および／もしくはデータを格納するのに適した任意の種類の媒体もしくはデバイスを含み得るものの、これらに限定されない。
【００７３】
本発明の実施形態についてのこれまでの記載は例示および説明を目的として提供されている。すべてを網羅するかまたは本発明を開示された形態そのものに限定することは意図されていない。当業者には数多くの変更および変形が明らかであろう。変形例および変更例は、開示された特徴の任意の関連する組合わせを含む。実施の形態は、本発明の原理およびその実際の応用を最もうまく説明することによって他の当業者がさまざまな実施の形態および意図している特定の用途に適したさまざまな変形を理解できるようにするために、選択され説明されている。
【図１】
0006757735.tif 000002
【図２】
0006757735.tif 000003
【図３】
0006757735.tif 000004
【図４】
0006757735.tif 000005
【図５】
0006757735.tif 000006