(57)【要約】  異なる処理装置のコンポーネント間に依存関係があるような分散システムの構築に対して、コンポーネントの分散配備を行う。  配備装置（１００）のスクリプト生成部（１３０）は、論理構成情報（１１１）と物理構成情報（１２１）とをもとに、複数の処理装置（２００）の各々について、スクリプト（１３１）を生成する。ここで、論理構成情報（１１１）は、システムを構成するソフトウェアコンポーネント間の依存関係を示す。物理構成情報（１２１）は、システムを構成するソフトウェアコンポーネントの各々が配備される処理装置（２００）を示す。スクリプト（１３１）には、処理装置（２００）に配備される各ソフトウェアコンポーネントを配備するための処理と、同期モジュールを配備するための処理と、が実行順序とともに記述される。同期モジュールは、他の処理装置（２００）に配備される同期モジュールとの間でスクリプト（１３１）の処理の同期をとる。
2014167790.tif 000002
【特許請求の範囲】
【請求項１】
システムを構成する複数のソフトウェアコンポーネント間の依存関係を示す論理構成情報を記憶する論理構成記憶手段と、
複数の処理装置の内、前記システムを構成する複数のソフトウェアコンポーネントの各々が配備される処理装置を示す物理構成情報を記憶する物理構成記憶手段と、
前記論理構成情報と前記物理構成情報とをもとに、前記複数の処理装置の各々について、当該処理装置に配備される各ソフトウェアコンポーネントを配備するための処理と、他の処理装置に配備される同期モジュールとの間でスクリプトの処理の同期をとる同期モジュールを配備するための処理と、が実行順序とともに記述された、当該処理装置上で実行されるスクリプトを生成するスクリプト生成手段と、
を備える情報処理装置。
【請求項２】
前記同期モジュールとして、配備時にレスポンダにメッセージを送信するイニシエータと配備時に前記イニシエータからの前記メッセージを待ち受ける前記レスポンダとが用いられ、
前記スクリプト生成手段は、第１の処理装置に配備される第１のソフトウェアコンポーネントが第２の処理装置に配備される第２のソフトウェアコンポーネントに依存する場合、前記第１の処理装置の前記スクリプトにおける前記第１のソフトウェアコンポーネントを配備するための処理の前に、前記レスポンダを配備するための処理を挿入し、前記第２の処理装置の前記スクリプトにおける前記第２のソフトウェアコンポーネントを配備するための処理の後に、前記イニシエータを配備するための処理を挿入する、
請求項１に記載の情報処理装置。
【請求項３】
前記同期モジュールは、配備完了時に、当該同期モジュールの配備を解除する、
請求項１または２に記載の情報処理装置。
【請求項４】
さらに、前記複数の処理装置の各々に、当該処理装置に対して生成されたスクリプトを配布するスクリプト配布手段を備える、
請求項１から３のいずれかに記載の情報処理装置。
【請求項５】
システムを構成する複数のソフトウェアコンポーネント間の依存関係を示す論理構成情報を記憶し、
複数の処理装置の内、前記システムを構成する複数のソフトウェアコンポーネントの各々が配備される処理装置を示す物理構成情報を記憶し、
前記論理構成情報と前記物理構成情報とをもとに、前記複数の処理装置の各々について、当該処理装置に配備される各ソフトウェアコンポーネントを配備するための処理と、他の処理装置に配備される同期モジュールとの間でスクリプトの処理の同期をとる同期モジュールを配備するための処理と、が実行順序とともに記述された、当該処理装置上で実行されるスクリプトを生成する、
配備方法。
【請求項６】
前記同期モジュールとして、配備時にレスポンダにメッセージを送信するイニシエータと配備時に前記イニシエータからの前記メッセージを待ち受ける前記レスポンダとが用いられ、
前記スクリプトの生成において、第１の処理装置に配備される第１のソフトウェアコンポーネントが第２の処理装置に配備される第２のソフトウェアコンポーネントに依存する場合、前記第１の処理装置の前記スクリプトにおける前記第１のソフトウェアコンポーネントを配備するための処理の前に、前記レスポンダを配備するための処理を挿入し、前記第２の処理装置の前記スクリプトにおける前記第２のソフトウェアコンポーネントを配備するための処理の後に、前記イニシエータを配備するための処理を挿入する、
請求項５に記載の配備方法。
【請求項７】
コンピュータに、
システムを構成する複数のソフトウェアコンポーネント間の依存関係を示す論理構成情報を記憶し、
複数の処理装置の内、前記システムを構成する複数のソフトウェアコンポーネントの各々が配備される処理装置を示す物理構成情報を記憶し、
前記論理構成情報と前記物理構成情報とをもとに、前記複数の処理装置の各々について、当該処理装置に配備される各ソフトウェアコンポーネントを配備するための処理と、他の処理装置に配備される同期モジュールとの間でスクリプトの処理の同期をとる同期モジュールを配備するための処理と、が実行順序とともに記述された、当該処理装置上で実行されるスクリプトを生成する、
処理を実行させるプログラムを格納する、コンピュータが読み取り可能な記録媒体。
【請求項８】
前記同期モジュールとして、配備時にレスポンダにメッセージを送信するイニシエータと配備時に前記イニシエータからの前記メッセージを待ち受ける前記レスポンダとが用いられ、
前記スクリプトの生成において、第１の処理装置に配備される第１のソフトウェアコンポーネントが第２の処理装置に配備される第２のソフトウェアコンポーネントに依存する場合、前記第１の処理装置の前記スクリプトにおける前記第１のソフトウェアコンポーネントを配備するための処理の前に、前記レスポンダを配備するための処理を挿入し、前記第２の処理装置の前記スクリプトにおける前記第２のソフトウェアコンポーネントを配備するための処理の後に、前記イニシエータを配備するための処理を挿入する、
処理を実行させる請求項７に記載のプログラムを格納する、コンピュータが読み取り可能な記録媒体。
【請求項９】
コンピュータに、
システムを構成する複数のソフトウェアコンポーネントの内の当該コンピュータに配備される各ソフトウェアコンポーネントを配備するための処理と、
他の処理装置に配備される同期モジュールとの間でスクリプトの処理の同期をとる同期モジュールを配備するための処理と、
を前記複数のソフトウェアコンポーネント間の依存関係をもとに決定される順序で実行させるプログラムを格納する、コンピュータが読み取り可能な記録媒体。
【請求項１０】
前記同期モジュールとして、配備時にレスポンダにメッセージを送信するイニシエータと配備時に前記イニシエータからの前記メッセージを待ち受ける前記レスポンダとが用いられ、
前記コンピュータに配備される第１のソフトウェアコンポーネントが他のコンピュータに配備される第２のソフトウェアコンポーネントに依存する場合、前記第１のソフトウェアコンポーネントを配備するための処理の前に、前記他のコンピュータにおいて前記第２のソフトウェアコンポーネントの後に配備される前記イニシエータからの前記メッセージを待ち受ける前記レスポンダを配備するための処理を実行し、前記第２のソフトウェアコンポーネントが前記第１のソフトウェアコンポーネントに依存する場合、前記第１のソフトウェアコンポーネントを配備するための処理の後に、前記他のコンピュータにおいて前記第２のソフトウェアコンポーネントの前に配備される前記レスポンダへ前記メッセージを送信する前記イニシエータを配備するための処理を実行する、
処理を実行させる請求項９に記載のプログラムを格納する、コンピュータが読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアコンポーネントの配備を実行する情報処理装置、及び、配備方法、及び、プログラムに関する。特に、本発明は、システムを構成する複数のソフトウェアコンポーネントを複数の処理装置に分散して配備する情報処理装置、配備方法、及び、プログラムに関する。
【背景技術】
【０００２】
現在のＩＴ（Information Technology）システムは、データベースやアプリケーションサーバなどのミドルウェアや、関連するプログラムライブラリ、アプリケーションプログラムなど、複数のソフトウェアコンポーネントから構成されている。これらのコンポーネントは、相互に通信して動作し、コンポーネント間に依存関係があるため、システムを処理装置上に構築する場合には、依存関係をもとに決まるコンポーネントの配備順序を守る必要がある。【０００３】
例えば、特許文献１には、複数のソフトウェアを同時にインストールする場合に、ソフトウェアの整合性に応じて、ソフトウェアを適切なインストール順に並び替えるソフトウェアインストールシステムが開示されている。【０００４】
また、多くの場合、システムを構成するコンポーネントは、負荷分散や可用性向上のために、複数の処理装置に分散して配備される。このような分散システムの構築において、異なる処理装置のコンポーネント間に依存関係がある場合、当該異なる処理装置のコンポーネント間で配備順序を制御する必要がある。【０００５】
分散システムの構築におけるコンポーネントの配備順序の制約は、一般に非常に煩雑である。このため、非特許文献1に記載されているような運用管理ミドルウェアでは、中央管理型の配備サーバが用いられる。この場合、配備サーバは、システムを構成する各コンポーネントの配備順序を制御する。しかしながら、中央管理型の配備サーバを用いた場合、各コンポーネントの配備のための制御通信が配備サーバに集中し、性能的、あるいは、可用性上のネックとなる。これは、特に、近年のビッグデータ解析などで用いられる、処理装置の数が数百台に及ぶような大規模分散システムの構築において問題となる。【０００６】
一方で、近年、分散システムの構築において、非特許文献２に記載されているような配備スクリプトを用いたコンポーネントの配備の分散化も行われている。この場合、各処理装置は、処理装置ごとに生成された配備スクリプトに従って、当該処理装置に配備すべきコンポーネントをリポジトリから取得し、配備を行う。この方法では、特定のサーバに制御通信が集中することなく、各処理装置が個別にコンポーネントの配備を実行するため、大規模なシステムを構築しやすい。しかしながら、このような配備スクリプトは、同一の処理装置に配備されるコンポーネント間の配備順序は制御できるが、異なる処理装置のコンポーネント間の配備順序の制御はできない。したがって、非特許文献２に記載の分散配備は、異なる処理装置のコンポーネント間に依存関係があるような分散システムの構築には適用できない。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１２−０４８４１０号公報
【非特許文献】
【０００８】
【非特許文献１】"WebSAM DeploymentManager"、NEC Corporation、［online］、［平成25年3月22日検索］、インターネット〈URL：http://www.nec.co.jp/middle/WebSAM/products/deploy_win/〉
【非特許文献２】"Puppet Labs: IT Automation Software for System Administrators"、Puppet Labs、［online］、［平成25年3月22日検索］、インターネット〈URL：http://puppetlabs.com/〉
【発明の概要】
【発明が解決しようとする課題】
【０００９】
上述のように、非特許文献２に記載の分散配備は、異なる処理装置のコンポーネント間に依存関係があるような分散システムの構築には適用できない。【００１０】
本発明の目的は、上述の課題を解決し、異なる処理装置のコンポーネント間に依存関係があるような分散システムの構築に対しても、コンポーネントの分散配備を行うことができる、情報処理装置、及び、配備方法を提供することである。
【課題を解決するための手段】
【００１１】
本発明の一態様における情報処理装置は、システムを構成する複数のソフトウェアコンポーネント間の依存関係を示す論理構成情報を記憶する論理構成記憶手段と、複数の処理装置の内、前記システムを構成する複数のソフトウェアコンポーネントの各々が配備される処理装置を示す物理構成情報を記憶する物理構成記憶手段と、前記論理構成情報と前記物理構成情報とをもとに、前記複数の処理装置の各々について、当該処理装置に配備される各ソフトウェアコンポーネントを配備するための処理と、他の処理装置に配備される同期モジュールとの間でスクリプトの処理の同期をとる同期モジュールを配備するための処理と、が実行順序とともに記述された、当該処理装置上で実行されるスクリプトを生成するスクリプト生成手段と、を備える。【００１２】
本発明の一態様における配備方法は、システムを構成する複数のソフトウェアコンポーネント間の依存関係を示す論理構成情報を記憶し、複数の処理装置の内、前記システムを構成する複数のソフトウェアコンポーネントの各々が配備される処理装置を示す物理構成情報を記憶し、前記論理構成情報と前記物理構成情報とをもとに、前記複数の処理装置の各々について、当該処理装置に配備される各ソフトウェアコンポーネントを配備するための処理と、他の処理装置に配備される同期モジュールとの間でスクリプトの処理の同期をとる同期モジュールを配備するための処理と、が実行順序とともに記述された、当該処理装置上で実行されるスクリプトを生成する。【００１３】
本発明の一態様におけるコンピュータが読み取り可能な第１の記録媒体は、コンピュータに、システムを構成する複数のソフトウェアコンポーネント間の依存関係を示す論理構成情報を記憶し、複数の処理装置の内、前記システムを構成する複数のソフトウェアコンポーネントの各々が配備される処理装置を示す物理構成情報を記憶し、前記論理構成情報と前記物理構成情報とをもとに、前記複数の処理装置の各々について、当該処理装置に配備される各ソフトウェアコンポーネントを配備するための処理と、他の処理装置に配備される同期モジュールとの間でスクリプトの処理の同期をとる同期モジュールを配備するための処理と、が実行順序とともに記述された、当該処理装置上で実行されるスクリプトを生成する、処理を実行させるプログラムを格納する。【００１４】
本発明の一態様におけるコンピュータが読み取り可能な第２の記録媒体は、コンピュータに、システムを構成する複数のソフトウェアコンポーネントの内の当該コンピュータに配備される各ソフトウェアコンポーネントを配備するための処理と、他の処理装置に配備される同期モジュールとの間でスクリプトの処理の同期をとる同期モジュールを配備するための処理と、を前記複数のソフトウェアコンポーネント間の依存関係をもとに決定される順序で実行させるプログラムを格納する。
【発明の効果】
【００１５】
本発明の効果は、分散システムの配備を各処理装置で分散化して実行する場合に、処理装置間でのコンポーネントの配備の順序を適切に制御できることである。
【図面の簡単な説明】
【００１６】
【図１】本発明の第１の実施の形態の特徴的な構成を示すブロック図である。
【図２】本発明の第１の実施の形態における、情報処理システムの構成を示すブロック図である。
【図３】本発明の第１の実施の形態における、論理構成情報１１１の例を示す図である。
【図４】本発明の第１の実施の形態における、物理構成情報１２１の例を示す図である。
【図５】本発明の第１の実施の形態における、スクリプト１３１（同期モジュール挿入前）の例を示す図である。
【図６】本発明の第１の実施の形態における、スクリプト１３１（同期モジュール挿入後）の例を示す図である。
【図７】本発明の第１の実施の形態における、同期モジュールの構成を示す図である。
【図８】本発明の第１の実施の形態における、スクリプト１３１の生成処理を示すフローチャートである。
【図９】本発明の第１の実施の形態における、同期モジュールのスクリプト部品の挿入処理を示すフローチャートである。
【図１０】本発明の第１の実施の形態における、イニシエータ５０１、及び、レスポンダ５１１の初期化処理を示すフローチャートである。
【図１１】本発明の第２の実施の形態における、スクリプト１３１（同期モジュール挿入後）の例を示す図である。
【図１２】本発明の第３の実施の形態における、同期モジュールの構成を示す図である。
【図１３】本発明の第３の実施の形態におけるイニシエータ６０１、及び、レスポンダ６１１の初期化処理を示すフローチャートである。
【発明を実施するための形態】
【００１７】
（第１の実施の形態）
本発明の第１の実施の形態について説明する。
【００１８】
はじめに、本発明の第１の実施の形態の構成について説明する。
【００１９】
図２は、本発明の第１の実施の形態における、情報処理システム（以下、配備システムとも言う）の構成を示すブロック図である。
【００２０】
図２を参照すると、配備システムは、配備装置１００、複数の処理装置２００、及び、構成部品リポジトリ３００を含む。配備装置１００は、本発明の情報処理装置の一実施形態である。
【００２１】
配備装置１００は、ＩＴシステムを構成する、複数のソフトウェアコンポーネント（以下、単に、コンポーネントとする）の各々を、複数の処理装置２００のいずれかに配備することにより、システムを構築する。ここで、コンポーネントは、オペレーティングシステム（ＯＳ）、ミドルウェア（ＭＷ）、アプリケーション（ＡＰ）等のプログラムモジュールである。
【００２２】
処理装置２００は、システムを構成する各コンポーネントの処理を実行するコンピュータである。処理装置２００は、エージェント２１０を含む。エージェント２１０は、配備装置１００から受信したスクリプト１３１に従って、配備すべきコンポーネントを構成部品リポジトリ３００から取得し、当該コンポーネントの配備（インストール、及び、初期化処理の起動）を行う。処理装置２００は、コンピュータ上に構築される仮想マシン（Virtual Machine：ＶＭ）であってもよい。
【００２３】
構成部品リポジトリ３００は、システムを構成するためのコンポーネントを記憶する。
【００２４】
配備装置１００は、論理構成記憶部１１０、物理構成記憶部１２０、スクリプト生成部１３０、スクリプト配布部１４０、及び、スクリプトリポジトリ１５０を含む。
【００２５】
論理構成記憶部１１０は、論理構成情報１１１を記憶する。論理構成情報１１１は、システムを構成するコンポーネント間の依存関係を示す。論理構成情報１１１は、管理者等により予め設定される。また、図示しない論理構成取得部が、配備装置１００の外部から論理構成情報１１１を取得し、論理構成記憶部１１０に保存してもよい。
【００２６】
図３は、本発明の第１の実施の形態における、論理構成情報１１１の例を示す図である。図３の例では、論理構成情報１１１は、ＸＭＬ（Extensible Markup Language）形式で記述されている。なお、以降の説明において、ＸＭＬに付与された行番号は、説明の便宜上付与されたものであり、実際の行数とは異なる。図３における論理構成情報１１１は、右側に示した論理構成に対応する。
【００２７】
図３の論理構成において、点線の矢印は依存関係を示す。ここで、点線の矢印の元のコンポーネントは、矢印の先のコンポーネントに依存していることを示す。また、実線の矢印は配備の順序を示す。ここで、実線の矢印の元のコンポーネントは、矢印の先のコンポーネントより前に配備される必要があることを示す。
【００２８】
図３の例では、システムは、コンポーネント「Ａ１」、「Ａ２」、「Ｂ」、「Ｃ１」、「Ｃ２」から構成される。コンポーネント「Ｃ１」、「Ｃ２」はコンポーネント「Ｂ」に依存するため、コンポーネント「Ｂ」は、コンポーネント「Ｃ１」、「Ｃ２」より前に配備される必要がある。また、コンポーネント「Ｂ」はコンポーネント「Ａ１」、「Ａ２」に依存するため、コンポーネント「Ａ１」、「Ａ２」は、コンポーネント「Ｂ」より前に配備される必要がある。なお、コンポーネント「Ｃ１」、「Ｃ２」は、コンポーネント「Ｂ」の配備後に、いずれかが先に配備されても、同時に配備されてもよい。
【００２９】
論理構成情報１１１は、システムを構成する各コンポーネントについて、コンポーネントの実体（ファイル等）の識別子（例えば、図３の論理構成情報１１１、１３行目）、依存する他のコンポーネントの識別子（１４、１５行目）を含む。コンポーネントの実体の識別子をもとに、スクリプトリポジトリ１５０、及び、構成部品リポジトリ３００から、当該コンポーネントを配備するためのスクリプト部品、及び、コンポーネントが取得される。
【００３０】
物理構成記憶部１２０は、物理構成情報１２１を記憶する。物理構成情報１２１は、システムを構成するコンポーネントの各々を配備すべき処理装置２００を示す。物理構成情報１２１は、管理者等により予め設定される。また、図示しない物理構成取得部が、配備装置１００の外部から物理構成情報１２１を取得して、物理構成記憶部１２０に保存してもよい。
【００３１】
図４は、本発明の第１の実施の形態における、物理構成情報１２１の例を示す図である。図４の例では、物理構成情報１２１はＸＭＬ形式で記述されている。図４における物理構成情報１２１は、右側に示した物理構成に対応する。
【００３２】
図４の物理構成では、システムを構成するコンポーネント「Ａ１」、「Ａ２」、「Ｂ」、「Ｃ１」、「Ｃ２」は、仮想マシン「ＶＭ１」〜「ＶＭ４」に分散して配備される。
【００３３】
物理構成情報１２１は、処理装置２００ごとに、当該処理装置２００に配備すべきコンポーネントを含む（例えば、図４の物理構成情報１２１、１〜４行目、５〜７行目、８〜１０行目、１１行目〜１３行目）。
【００３４】
スクリプト生成部１３０は、各処理装置２００が当該処理装置２００のコンポーネントを配備するための処理が記述されたプログラムである、スクリプト１３１を生成する。
【００３５】
ここで、スクリプト生成部１３０は、はじめに、非特許文献２に記載されているようなスクリプトと同様な、同じ処理装置２００のコンポーネント間の配備順序を考慮したスクリプト１３１を生成する。さらに、スクリプト生成部１３０は、生成したスクリプト１３１に、同期モジュールのスクリプト部品を挿入する。同期モジュールは、他の処理装置２００に配備される同期モジュールとの間でスクリプト１３１の処理の同期をとるためのプログラムモジュールである。
【００３６】
図５は、本発明の第１の実施の形態における、スクリプト１３１（１３１ａ〜ｄ）（同期モジュール挿入前）の例を示す図である。図５の例では、スクリプト１３１はＸＭＬ形式で記述されている。
【００３７】
スクリプト１３１には、処理装置２００に配備される各コンポーネントのスクリプト部品が配置される。
【００３８】
例えば、図５の仮想マシン「ＶＭ１」のスクリプト１３１ａには、コンポーネント「Ａ１」を配備するためのスクリプト部品（２〜８行目）、及び、コンポーネント「Ｂ」を配備するためのスクリプト部品（１０〜１６行目）が配置されている。
【００３９】
各スクリプト部品は、コンポーネントをインストールするためのコマンド（例えば、図５のスクリプト１３１ａ、３行目）、コンポーネントの初期化時のパラメータ（４、５行目）、コンポーネントの初期化処理を起動するためのコマンド（７行目）を含む。これらの記述に従って、コンポーネントのインストール、及び、初期化処理が行われることにより、コンポーネントの配備が行われる。
【００４０】
また、コンポーネント間で配備順序に制約がある場合、後に配備すべきコンポーネントのスクリプト部品には、先に配備すべき他のコンポーネント（必要コンポーネント）のリストが追加される（例えば、図５のスクリプト１３１ａ、１１行目）。
【００４１】
例えば、図５のスクリプト１３１ａにおいて、コンポーネント「Ｂ」の必要コンポーネントとして、コンポーネント「Ａ１」が指定されている。
【００４２】
なお、配備順序に制約がないコンポーネントは、並列に配備されてもよい。
【００４３】
図６は、本発明の第１の実施の形態における、スクリプト１３１（１３１ａ〜ｄ）（同期モジュール挿入後）の例を示す図である。
【００４４】
本発明の第１の実施の形態では、同期モジュールとして、イニシエータ５０１とレスポンダ５１１とが用いられる。イニシエータ５０１は、指定されたレスポンダ５１１に、処理装置２００間でのスクリプト１３１の処理の同期を行うためのメッセージを送信するコンポーネントである。また、レスポンダ５１１は、指定されたイニシエータ５０１からのメッセージを待ち受けるコンポーネントである。
【００４５】
例えば、図６の仮想マシン「ＶＭ１」のスクリプト１３１ａには、図５のスクリプト１３１ａに対して、レスポンダ５１１「Ｘｒ」を配備するためのスクリプト部品（５〜８行目）が挿入されている。さらに、イニシエータ５０１「Ｙｉ」を配備するためのスクリプト部品（１３〜１７行目）、及び、イニシエータ５０１「Ｚｉ」を配備するためのスクリプト部品（１８〜２２行目）が挿入されている。
【００４６】
レスポンダ５１１のスクリプト部品は、レスポンダ５１１の識別子（例えば、図６のスクリプト１３１ａ、５行目）、レスポンダ５１１がメッセージを待ち受けるイニシエータ５０１の識別子のリスト（送信元イニシエータリスト）（６行目）を含む。レスポンダ５１１の初期化処理において、レスポンダ５１１は、送信元イニシエータリストに含まれるイニシエータ５０１からのメッセージを待ち受ける。
【００４７】
例えば、図６のスクリプト１３１ａにおいて、レスポンダ５１１「Ｘｒ」は、仮想マシン「ＶＭ２」に配備されるイニシエータ５０１「Ｘｉ」からのメッセージを待ち受ける。
【００４８】
また、レスポンダ５１１が配備された後に配備すべきコンポーネントの必要コンポーネントには、当該レスポンダ５１１が追加される（例えば、図６のスクリプト１３１ａ、１０行目）。
【００４９】
例えば、図６のスクリプト１３１ａにおいて、コンポーネント「Ｂ」の必要コンポーネントに、レスポンダ５１１「Ｘｒ」が追加されている。
【００５０】
イニシエータ５０１のスクリプト部品は、イニシエータ５０１の識別子（例えば、図６のスクリプト１３１ａ、１３行目）、必要コンポーネントの識別子（１４行目）を含む。さらに、イニシエータ５０１のスクリプト部品は、イニシエータ５０１がメッセージを送信するレスポンダ５１１の識別子のリスト（宛先レスポンダリスト）（１５行目）を含む。イニシエータ５０１の初期化処理において、イニシエータ５０１は、宛先レスポンダリストに含まれるレスポンダ５１１にメッセージを送信し、メッセージの受信確認を待ち受ける。
【００５１】
例えば、図６のスクリプト１３１ａにおいて、イニシエータ５０１「Ｙｉ」、「Ｚｉ」の必要コンポーネントには、コンポーネント「Ｂ」が設定されている。また、イニシエータ５０１「Ｙｉ」の宛先レスポンダリストには、仮想マシン「ＶＭ３」に配備されるレスポンダ５１１「Ｙｒ」が設定されている。イニシエータ５０１「Ｚｉ」の宛先レスポンダリストには、仮想マシン「ＶＭ４」に配備されるレスポンダ５１１「Ｚｒ」が設定されている。
【００５２】
図７は、本発明の第１の実施の形態における、同期モジュールの構成を示す図である。図７の例では、同期モジュールとして、２つのイニシエータ５０１（５０１ａ、５０１ｂ）と１つのレスポンダ５１１が示されている。
【００５３】
イニシエータ５０１は、レスポンダリスト５０２、及び、メッセージ送信部５０３を含む。レスポンダリスト５０２は、イニシエータ５０１がメッセージを送信するレスポンダ５１１の識別子のリストである。レスポンダリスト５０２には、イニシエータ５０１の初期化処理の起動時の引数等により、スクリプト部品の宛先レスポンダリストの内容が設定される。メッセージ送信部５０３は、レスポンダリスト５０２に含まれるレスポンダ５１１にメッセージを送信する。
【００５４】
レスポンダ５１１は、イニシエータリスト５１２、メッセージ受信部５１３、及び、受信メッセージ記憶部５１４を含む。イニシエータリスト５１２は、レスポンダ５１１がメッセージを待ち受けるイニシエータ５０１の識別子のリストである。イニシエータリスト５１２には、レスポンダ５１１の初期化処理の起動時の引数等により、スクリプト部品の送信元イニシエータリストの内容が設定される。メッセージ受信部５１３は、イニシエータ５０１からのメッセージを受信する。受信メッセージ記憶部５１４は、受信したメッセージを記憶する。
【００５５】
スクリプト配布部１４０は、スクリプト生成部１３０により生成されたスクリプト１３１を、各処理装置２００に配布する。
【００５６】
スクリプトリポジトリ１５０は、各コンポーネントの配備処理を記述したスクリプト部品を記憶する。
【００５７】
なお、配備装置１００はＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）とプログラムを記憶した記憶媒体を含み、プログラムに基づく制御によって動作するコンピュータであってもよい。また、論理構成記憶部１１０と、物理構成記憶部１２０と、スクリプトリポジトリ１５０とは、それぞれ個別の記憶媒体でも、１つの記憶媒体によって構成されてもよい。
【００５８】
また、論理構成情報１１１、物理構成情報１２１、スクリプト１３１は、ＸＭＬ以外の他の形式で記述されてもよい。
【００５９】
次に、本発明の第１の実施の形態の動作について説明する。
【００６０】
はじめに、本発明の第１の実施の形態における、スクリプト１３１の生成処理、及び、同期モジュールのスクリプト部品の挿入処理を説明する。
【００６１】
図８は、本発明の第１の実施の形態における、スクリプト１３１の生成処理を示すフローチャートである。また、図９は、本発明の第１の実施の形態における、同期モジュールのスクリプト部品の挿入処理を示すフローチャートである。
【００６２】
スクリプト生成部１３０は、スクリプト１３１の生成処理（図８）により、スクリプト１３１を生成する。そして、スクリプト生成部１３０は、同期モジュールのスクリプト部品の挿入処理（図９）により、生成したスクリプト１３１に、同期モジュールのスクリプト部品を挿入する。
【００６３】
ここでは、論理構成記憶部１１０、物理構成記憶部１２０に、それぞれ、図４の論理構成情報１１１、図５の物理構成情報１２１が記憶されていると仮定する。
【００６４】
スクリプト生成部１３０は、物理構成情報１２１から、システムを構成するコンポーネントが配備される処理装置２００（対象処理装置）を１つ選択する（ステップＳ１０１）。スクリプト生成部１３０は、物理構成情報１２１を参照し、対象処理装置に配備すべきコンポーネントのリストを抽出する（ステップＳ１０２）。スクリプト生成部１３０は、スクリプトリポジトリ１５０から、抽出した各コンポーネントを配備するためのスクリプト部品を取得し、配置することにより、対象処理装置で実行すべきスクリプト１３１を生成する（ステップＳ１０３）。
【００６５】
例えば、スクリプト生成部１３０は、図４の物理構成情報１２１から、仮想マシン「ＶＭ１」について、コンポーネント「Ａ１」、「Ｂ」を配備するためのスクリプト部品を、図５のスクリプト１３１ａのように配置する。
【００６６】
スクリプト生成部１３０は、スクリプト１３１内のコンポーネント（対象コンポーネント）を１つ選択する（ステップＳ１０４）。スクリプト生成部１３０は、論理構成情報１１１を参照する。スクリプト生成部１３０は、対象コンポーネントが依存するコンポーネント（依存コンポーネント）の内、対象コンポーネントと同じ処理装置２００（対象処理装置）に配備される依存コンポーネントのリストを抽出する（ステップＳ１０５）。対象処理装置に配備される依存コンポーネントがある場合（ステップＳ１０６／Ｙ）、スクリプト生成部１３０は、当該依存コンポーネントを、対象コンポーネントの必要コンポーネントに設定する（ステップＳ１０７）。
【００６７】
例えば、スクリプト生成部１３０は、図３の論理構成情報１１１をもとに、コンポーネント「Ｂ」の依存コンポーネントの内、仮想マシン「ＶＭ１」に配備されるコンポーネント「Ａ１」を、図５のようにコンポーネント「Ｂ」の必要コンポーネントに設定する。
【００６８】
スクリプト生成部１３０は、スクリプト１３１内の全てのコンポーネントについて、ステップＳ１０４〜Ｓ１０７の処理を繰り返す（ステップＳ１０８）。
【００６９】
また、スクリプト生成部１３０は、システムを構成するコンポーネントが配備される全ての処理装置２００について、ステップＳ１０１〜Ｓ１０８の処理を繰り返す（ステップＳ１０９）。
【００７０】
この結果、仮想マシン「ＶＭ１」〜「ＶＭ４」について、図５のスクリプト１３１ａ〜ｄがそれぞれ生成される。
【００７１】
次に、スクリプト生成部１３０は、論理構成情報１１１から、システムを構成するコンポーネント（対象コンポーネント）を１つ選択する（ステップＳ２０１）。スクリプト生成部１３０は、論理構成情報１１１を参照し、対象コンポーネントの依存コンポーネントの内、対象コンポーネントとは異なる処理装置２００に配備される依存コンポーネントのリストを抽出する（ステップＳ２０２）。異なる処理装置２００に配備される依存コンポーネントがある場合（ステップＳ２０３／Ｙ）、スクリプト生成部１３０は、以下の処理を行う。スクリプト生成部１３０は、対象コンポーネントが配備される処理装置２００のスクリプト１３１に、レスポンダ５１１を配備するためのスクリプト部品を挿入する（ステップＳ２０４）。そして、スクリプト生成部１３０は、対象コンポーネントの必要コンポーネントにステップＳ２０４で挿入したレスポンダ５１１の識別子を追加する（ステップＳ２０５）。
【００７２】
例えば、スクリプト生成部１３０は、図３の論理構成情報１１１をもとに、コンポーネント「Ｂ」の依存コンポーネントに、仮想マシン「ＶＭ１」とは異なる仮想マシン「ＶＭ２」に配備されるコンポーネント「Ａ２」があると判断する。スクリプト生成部１３０は、図６のように、仮想マシン「ＶＭ１」のスクリプト１３１ａにレスポンダ５１１「Ｘｒ」のスクリプト部品を挿入し、コンポーネント「Ｂ」の必要コンポーネントにレスポンダ５１１「Ｘｒ」を追加する。
【００７３】
次に、スクリプト生成部１３０は、ステップＳ２０２で抽出された異なる処理装置２００に配備される依存コンポーネントのリストから依存コンポーネント（対象依存コンポーネント）を１つ選択する（ステップＳ２０６）。スクリプト生成部１３０は、対象依存コンポーネントが配備される処理装置２００のスクリプト１３１に、イニシエータ５０１を配備するためのスクリプト部品を挿入する（ステップＳ２０７）。スクリプト生成部１３０は、イニシエータ５０１の必要コンポーネントに対象依存コンポーネントの識別子、宛先レスポンダリストにステップＳ２０４で挿入したレスポンダ５１１の識別子を設定する（ステップＳ２０８）。スクリプト生成部１３０は、ステップＳ２０４で挿入したレスポンダ５１１の送信元イニシエータリストに、ステップＳ２０７で挿入したイニシエータ５０１の識別子を設定する（ステップＳ２０９）。
【００７４】
例えば、スクリプト生成部１３０は、図６のように、コンポーネント「Ａ２」が配備される仮想マシン「ＶＭ２」のスクリプト１３１ｂにイニシエータ５０１「Ｘｉ」のスクリプト部品を挿入する。スクリプト生成部１３０は、イニシエータ５０１「Ｘｉ」の必要コンポーネントにコンポーネント「Ａ２」、宛先レスポンダリストにレスポンダ５１１「Ｘｒ」をそれぞれ設定する。また、スクリプト生成部１３０は、図６のように、レスポンダ５１１「Ｘｒ」の送信元イニシエータリストにイニシエータ５０１「Ｘｉ」を設定する。
【００７５】
スクリプト生成部１３０は、ステップＳ２０２で抽出された異なる処理装置２００に配備される依存コンポーネントのリスト内の全ての依存コンポーネントについて、ステップＳ２０６〜Ｓ２０９の処理を繰り返す（ステップＳ２１０）。
【００７６】
また、スクリプト生成部１３０は、システムを構成する全てのコンポーネントについて、ステップＳ２０１〜Ｓ２１０の処理を繰り返す（ステップＳ２１１）。
【００７７】
この結果、仮想マシン「ＶＭ１」〜「ＶＭ４」のスクリプト１３１ａ〜ｄに対して、図６のように、同期モジュールのスクリプト部品が挿入される。
【００７８】
同期モジュールのスクリプト部品が挿入されたスクリプト１３１は、スクリプト配布部１４０により、各処理装置２００に配布される。各処理装置２００上のエージェント２１０は、配布されたスクリプト１３１を実行し、コンポーネント、及び、同期モジュール（イニシエータ５０１、レスポンダ５１１）を配備する。
【００７９】
次に、本発明の第１の実施の形態における、イニシエータ５０１、及び、レスポンダ５１１の初期化処理を説明する。
【００８０】
図１０は、本発明の第１の実施の形態における、イニシエータ５０１、及び、レスポンダ５１１の初期化処理を示すフローチャートである。
【００８１】
エージェント２１０は、スクリプト１３１に従ってイニシエータ５０１をインストールした後に、イニシエータ５０１の初期化処理（図１０）を起動する。スクリプト１３１の処理は、イニシエータ５０１の初期化処理が完了するまでブロックされる。
【００８２】
イニシエータ５０１は、レスポンダリスト５０２に含まれるレスポンダ５１１に同期のためのメッセージを送信する（ステップＳ３０１）。イニシエータ５０１は、レスポンダ５１１からメッセージの受信確認を受信するまで、ステップＳ３０１を繰り返す（ステップＳ３０２）。そして、イニシエータ５０１は、レスポンダ５１１からメッセージの受信確認を受信すると（ステップＳ３０２／Ｙ）、自身の配備解除（アンインストール）を行う（ステップＳ３０３）。
【００８３】
また、エージェント２１０は、スクリプト１３１に従ってレスポンダ５１１をインストールした後に、レスポンダ５１１の初期化処理（図１０）を起動する。スクリプト１３１の処理は、レスポンダ５１１の初期化処理が完了するまでブロックされる。
【００８４】
レスポンダ５１１は、イニシエータ５０１からメッセージを受信すると（ステップＳ４０１）、メッセージの送信元のイニシエータ５０１に、メッセージの受信確認を送信する（ステップＳ４０２）。レスポンダ５１１は、イニシエータリスト５１２に含まれる全てのイニシエータ５０１からメッセージを受信するまで、ステップＳ４０１、Ｓ４０２の処理を繰り返す（ステップＳ４０３）。全てのイニシエータ５０１からメッセージを受信した場合（ステップＳ４０３／Ｙ）、レスポンダ５１１は、自身の配備解除（アンインストール）を行う（ステップＳ４０４）。
【００８５】
イニシエータ５０１、及び、レスポンダ５１１は、システムの動作には必要がないため、このように、初期化処理の完了とともにアンインストールされてもよい。
【００８６】
次に、システムの配備の具体例を説明する。ここでは、図４の論理構成情報１１１、図５の物理構成情報１２１に対して、図６のスクリプト１３１ａ〜ｄが生成され、仮想マシン「ＶＭ１」〜「ＶＭ４」に配布されていると仮定する。
【００８７】
仮想マシン「ＶＭ２」のエージェント２１０は、図６のスクリプト１３１ｂに従って、コンポーネント「Ａ２」、イニシエータ５０１「Ｘｉ」を順番に配備する。イニシエータ５０１「Ｘｉ」の初期化処理において、イニシエータ５０１「Ｘｉ」は、レスポンダ５１１「Ｘｒ」へメッセージを送信する。
【００８８】
仮想マシン「ＶＭ１」のエージェント２１０は、図６のスクリプト１３１ａに従って、コンポーネント「Ａ１」、レスポンダ５１１「Ｘｒ」を配備する。レスポンダ５１１「Ｘｒ」の初期化処理において、レスポンダ５１１「Ｘｒ」は、イニシエータ５０１「Ｘｉ」からのメッセージを待ち受ける。イニシエータ５０１「Ｘｉ」からのメッセージを受信するまで、レスポンダ５１１「Ｘｒ」の配備処理（初期化処理）はブロックされる。
【００８９】
仮想マシン「ＶＭ１」のエージェント２１０は、コンポーネント「Ａ１」、レスポンダ５１１「Ｘｒ」の配備が完了すると、コンポーネント「Ｂ」を配備する。そして、仮想マシン「ＶＭ１」のエージェント２１０は、コンポーネント「Ｂ」の配備が完了すると、イニシエータ５０１「Ｙｉ」、「Ｚｉ」を配備する。
【００９０】
仮想マシン「ＶＭ３」のエージェント２１０は、図６のスクリプト１３１ｃに従って、レスポンダ５１１「Ｙｒ」を配備する。レスポンダ５１１「Ｙｒ」の初期化処理において、レスポンダ５１１「Ｙｒ」は、イニシエータ５０１「Ｙｉ」からのメッセージを待ち受ける。イニシエータ５０１「Ｙｉ」からのメッセージを受信するまで、レスポンダ５１１「Ｙｒ」の配備処理（初期化処理）はブロックされる。仮想マシン「ＶＭ３」のエージェント２１０は、レスポンダ５１１「Ｙｒ」の配備が完了すると、コンポーネント「Ｃ１」を配備する。
【００９１】
仮想マシン「ＶＭ４」のエージェント２１０は、図６のスクリプト１３１ｄに従って、レスポンダ５１１「Ｚｒ」を配備する。レスポンダ５１１「Ｚｒ」の初期化処理において、レスポンダ５１１「Ｚｒ」は、イニシエータ５０１「Ｚｉ」からのメッセージを待ち受ける。イニシエータ５０１「Ｚｉ」からのメッセージを受信するまで、レスポンダ５１１「Ｚｒ」の配備処理（初期化処理）はブロックされる。仮想マシン「ＶＭ４」のエージェント２１０は、レスポンダ５１１「Ｚｒ」の配備が完了すると、コンポーネント「Ｃ２」を配備する。
【００９２】
また、イニシエータ５０１「Ｘｉ」、「Ｙｉ」、「Ｚｉ」、レスポンダ５１１「Ｘｒ」、「Ｙｒ」、「Ｚｒ」は、配備の完了とともにアンインストールされる。
【００９３】
このように、図４の論理構成情報１１１に従ったコンポーネント間の配備順序の制御が、異なる処理装置２００間で実行される。
【００９４】
以上により、本発明の第１の実施の形態の動作が完了する。
【００９５】
次に、本発明の第１の実施の形態の特徴的な構成を説明する。図１は、本発明の第１の実施の形態の特徴的な構成を示すブロック図である。
【００９６】
図１を参照すると、配備装置１００は、論理構成記憶部１１０、物理構成記憶部１２０、及び、スクリプト生成部１３０を含む。
【００９７】
論理構成記憶部１１０は、システムを構成する複数のソフトウェアコンポーネント間の依存関係を示す論理構成情報１１１を記憶する。
【００９８】
物理構成記憶部１２０は、複数の処理装置２００の内、システムを構成する複数のソフトウェアコンポーネントの各々が配備される処理装置２００を示す物理構成情報１２１を記憶する。
【００９９】
スクリプト生成部１３０は、論理構成情報１１１と物理構成情報１２１とをもとに、複数の処理装置２００の各々について、当該処理装置２００上で実行されるスクリプト１３１を生成する。ここで、スクリプト１３１には、当該処理装置２００に配備される各ソフトウェアコンポーネントを配備するための処理と、同期モジュールを配備するための処理と、が実行順序とともに記述される。同期モジュールは、他の処理装置２００に配備される同期モジュールとの間でスクリプト１３１の処理の同期をとる。
【０１００】
本発明の第１の実施の形態によれば、異なる処理装置のコンポーネント間に依存関係があるような分散システムの構築に対しても、コンポーネントの分散配備を行うことができる。その理由は、スクリプト生成部１３０が、以下のようなスクリプト１３１を生成するためである。スクリプト１３１には、処理装置２００に配備される各コンポーネントを配備するための処理と、同期モジュールを配備するための処理と、が実行順序とともに記述される。ここで、同期モジュールは、他の処理装置２００に配備される同期モジュールとの間でスクリプト１３１の処理の同期をとる。
【０１０１】
これにより、異なる処理装置のコンポーネント間に依存関係があるような分散システムの構築において、中央管理型の配備サーバは不要であり、配備サーバに制御通信が集中しない。したがって、大規模な分散システムであっても、短時間で構築できる。
【０１０２】
また、本発明の第１の実施の形態によれば、処理装置が特別な手段を備えることなく、異なる処理装置のコンポーネント間の配備順序を制御できる。その理由は、処理装置２００において、スクリプト１３１に従って同期モジュールを配備することで、他の処理装置２００に配備される同期モジュールとの間でスクリプト１３１の処理の同期が行われるためである。
【０１０３】
また、本発明の第１の実施の形態によれば、コンポーネント毎に同期をとる他の処理装置を、処理装置に対して指定することなく、異なる処理装置のコンポーネント間の配備順序を制御できる。その理由は、スクリプト生成部１３０が、論理構成情報１１１と物理構成情報１２１とをもとに、同期をとるべきスクリプト１３１の組に対して、同期モジュールを配備するための処理を挿入するためである。
【０１０４】
（第２の実施の形態）
次に、本発明の第２の実施の形態について説明する。
【０１０５】
本発明の第１の実施の形態では、図６のコンポーネント「Ｂ」とコンポーネント「Ｃ１」、「Ｃ２」のように、同じコンポーネントに複数のコンポーネントが依存する場合、複数の異なるイニシエータ５０１（「Ｙｉ」、「Ｚｉ」）のスクリプト部品が挿入される。このため、同じコンポーネントに依存するコンポーネントの数が多くなると、イニシエータ５０１の配備処理が増え、システム構築に要する時間が長くなる。
【０１０６】
本発明の第２の実施の形態では、同じコンポーネントに複数のコンポーネントが依存する場合、共通のイニシエータ５０１を用いる。
【０１０７】
次に、本発明の第２の実施の形態について説明する。
【０１０８】
はじめに、本発明の第２の実施の形態の構成について説明する。
【０１０９】
本発明の第２の実施の形態の配備システムの構成、及び、同期モジュールの構成は、本発明の第１の実施の形態（図２、図７）と同様である。
【０１１０】
図１１は、本発明の第２の実施の形態における、スクリプト１３１（１３１ａ〜ｄ）（同期モジュール挿入後）の例を示す図である。
【０１１１】
図１１の仮想マシン「ＶＭ１」のスクリプト１３１ａには、図５のスクリプト１３１ａに対して、イニシエータ５０１「Ｙｉ」を配備するためのスクリプト部品（１３〜１７行目）が挿入されている。イニシエータ５０１「Ｙｉ」の宛先レスポンダリストには、仮想マシン「ＶＭ３」に配備されるレスポンダ５１１「Ｙｒ」、及び、仮想マシン「ＶＭ４」に配備されるレスポンダ５１１「Ｚｒ」が設定されている。
【０１１２】
次に、本発明の第２の実施の形態の動作について説明する。
【０１１３】
本発明の第２の実施の形態におけるスクリプト１３１の生成処理は、本発明の第１の実施の形態（図８）と同様となる。
【０１１４】
本発明の第２の実施の形態における同期モジュールのスクリプト部品の挿入処理は、本発明の第１の実施の形態（図９）と、以下の点で異なる。
【０１１５】
図９のステップＳ２０７において、次の場合、スクリプト生成部１３０は、新たなイニシエータ５０１のスクリプト部品の挿入を行わない。対象依存コンポーネントが配備される処理装置２００のスクリプト１３１に、対象依存コンポーネントが必要コンポーネントとして設定されているイニシエータ５０１のスクリプト部品が既に存在する場合、スクリプト生成部１３０は、挿入を行わない。
【０１１６】
そして、ステップＳ２０８において、スクリプト生成部１３０は、既に存在するイニシエータ５０１のスクリプト部品における宛先レスポンダリストに、レスポンダ５１１の識別子を追加する。
【０１１７】
また、ステップＳ２０９において、スクリプト生成部１３０は、レスポンダ５１１の送信元イニシエータリストに、既に存在するイニシエータ５０１の識別子を追加する。
【０１１８】
例えば、コンポーネント「Ｂ」とコンポーネント「Ｃ１」、「Ｃ２」について、スクリプト生成部１３０は、以下のような処理を行う。はじめに、スクリプト生成部１３０は、図１１のように、コンポーネント「Ｃ１」が配備される仮想マシン「ＶＭ３」のスクリプト１３１ｃにレスポンダ５１１「Ｙｒ」のスクリプト部品を挿入する。また、スクリプト生成部１３０は、コンポーネント「Ｂ」が配備される仮想マシン「ＶＭ１」のスクリプト１３１ａにイニシエータ５０１「Ｙｉ」のスクリプト部品を挿入する。スクリプト生成部１３０は、イニシエータ５０１「Ｙｉ」の必要コンポーネントにコンポーネント「Ｂ」、宛先レスポンダリストにレスポンダ５１１「Ｙｒ」を設定する。
【０１１９】
次に、スクリプト生成部１３０は、コンポーネント「Ｃ２」が配備される仮想マシン「ＶＭ３」のスクリプト１３１ｄにレスポンダ５１１「Ｚｒ」のスクリプト部品を挿入する。この場合、仮想マシン「ＶＭ１」のスクリプト１３１ａに、必要コンポーネントがコンポーネント「Ｂ」であるイニシエータ５０１「Ｙｉ」のスクリプト部品が既に存在する。したがって、スクリプト生成部１３０は、イニシエータ５０１「Ｙｉ」の宛先レスポンダリストにレスポンダ５１１「Ｚｒ」を追加する。また、スクリプト生成部１３０は、レスポンダ５１１「Ｚｒ」の送信元イニシエータリストにイニシエータ５０１「Ｙｉ」を設定する。
【０１２０】
この結果、仮想マシン「ＶＭ１」〜「ＶＭ４」のスクリプト１３１ａ〜ｄに対して、図１１のように、同期モジュールのスクリプト部品が挿入される。
【０１２１】
次に、本発明の第２の実施の形態における、イニシエータ５０１、及び、レスポンダ５１１の初期化処理を説明する。
【０１２２】
本発明の第２の実施の形態におけるイニシエータ５０１、及び、レスポンダ５１１の初期化処理は、本発明の第１の実施の形態（図１０）と、以下の点で異なる。
【０１２３】
図１０のステップＳ３０１において、イニシエータ５０１は、レスポンダリスト５０２に含まれるレスポンダ５１１の内、メッセージの受信確認を受信していない全レスポンダ５１１に同期のためのメッセージを送信する。
【０１２４】
また、ステップＳ３０２において、イニシエータ５０１は、レスポンダリスト５０２に含まれる全レスポンダ５１１からメッセージの受信確認を受信するまで、ステップＳ３０１を繰り返す。
【０１２５】
以上により、本発明の第２の実施の形態の動作が完了する。
【０１２６】
本発明の第２の実施の形態によれば、本発明の第１の実施の形態に比べて、より短時間でシステムを構築できる。その理由は、同じコンポーネントに複数のコンポーネントが依存する場合、共通のイニシエータ５０１を用いることで、イニシエータ５０１の配備処理を減らし、システム構築に要する時間を短くできるためである。
【０１２７】
（第３の実施の形態）
次に、本発明の第３の実施の形態について説明する。
【０１２８】
本発明の第１の実施の形態では、イニシエータ５０１とレスポンダ５１１との間で直接メッセージを送受信することにより、処理装置２００間での配備順序を制御する。この場合、制御の分散化が図れる一方で、レスポンダ５１１が受信可能状態になるまでイニシエータ５０１が通知を再送し続けるため、無駄な通信が発生する可能性がある。
【０１２９】
本発明の第３の実施の形態では、イニシエータ６０１とレスポンダ６１１との間のメッセージの送受信を、メッセージキュー６２１を介して行う。
【０１３０】
はじめに、本発明の第３の実施の形態の構成について説明する。
【０１３１】
本発明の第３の実施の形態の配備システムの構成は、本発明の第１の実施の形態（図２）と同様である。
【０１３２】
図１２は、本発明の第３の実施の形態における、同期モジュールの構成を示す図である。本発明の第３の実施の形態では、本発明の第１の実施の形態におけるイニシエータ５０１とレスポンダ５１１が、イニシエータ６０１（６０１ａ、６０１ｂ）とレスポンダ６１１に置き換えられる。
【０１３３】
イニシエータ６０１は、レスポンダリスト６０２、及び、メッセージ送信部６０３を含む。レスポンダリスト６０２は、レスポンダリスト５０２と同様である。メッセージ送信部６０３は、レスポンダリスト６０２に含まれるレスポンダ６１１へのメッセージをメッセージキュー６２１に送信する。
【０１３４】
レスポンダ６１１は、イニシエータリスト６１２、及び、メッセージ確認部６１３を含む。イニシエータリスト６１２は、イニシエータリスト５１２と同様である。メッセージ確認部６１３は、イニシエータ６０１からレスポンダ６１１宛のメッセージの受信を、メッセージキュー６２１に確認する。
【０１３５】
メッセージキュー６２１は、例えば、処理装置２００のいずれかに配置される。メッセージキュー６２１は、メッセージ受信部６２２、受信メッセージ記憶部６２３、及び、メッセージ検索部６２４を含む。メッセージ受信部６２２は、イニシエータ６０１からのメッセージを受信する。受信メッセージ記憶部６２３は、受信したメッセージを記憶する。メッセージ検索部６２４は、レスポンダ６１１からの要求に応じて、イニシエータ６０１からのメッセージを検索する。
【０１３６】
次に、本発明の第３の実施の形態の動作について説明する。
【０１３７】
本発明の第３の実施の形態における、スクリプト１３１の生成処理、及び、同期モジュールのスクリプト部品の挿入処理は、本発明の第１の実施の形態（図８、図９）と同様である。
【０１３８】
次に、本発明の第３の実施の形態における、イニシエータ６０１、及び、レスポンダ６１１の初期化処理を説明する。
【０１３９】
図１３は、本発明の第３の実施の形態におけるイニシエータ６０１、及び、レスポンダ６１１の初期化処理を示すフローチャートである。
【０１４０】
イニシエータ６０１は、レスポンダリスト６０２に含まれるレスポンダ６１１あてのメッセージを、メッセージキュー６２１に送信する（ステップＳ５０１）。イニシエータ６０１は、自身の配備解除（アンインストール）を行う（ステップＳ５０２）。
【０１４１】
メッセージキュー６２１のメッセージ受信部６２２は、イニシエータ６０１からメッセージを受信すると、受信メッセージ記憶部６２３に保存する。
【０１４２】
レスポンダ６１１のメッセージ確認部６１３は、イニシエータリスト６１２に含まれるイニシエータ６０１からレスポンダ６１１宛のメッセージの受信の有無を、メッセージキュー６２１に問い合わせる（ステップＳ６０１）。メッセージ検索部６２４は、レスポンダ６１１からの要求に応じて、イニシエータ６０１からレスポンダ６１１宛のメッセージを検索し、結果をレスポンダ６１１へ応答する。レスポンダ６１１は、イニシエータリスト６１２に含まれる全てのイニシエータ６０１からのメッセージの受信を確認するまで、ステップＳ６０１の処理を繰り返す（ステップＳ６０２）。全てのイニシエータ６０１からのメッセージの受信を確認した場合（ステップＳ６０２／Ｙ）、レスポンダ６１１は、自身の配備解除（アンインストール）を行う（ステップＳ６０３）。
【０１４３】
本発明の第３の実施の形態によれば、本発明の第１の実施の形態に比べて、イニシエータ５０１とレスポンダ５１１との間の無駄な通信を低減できる。その理由は、イニシエータ６０１とレスポンダ６１１との間のメッセージの送受信を、メッセージキュー６２１を介して行うためである。
【０１４４】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【０１４５】
この出願は、２０１３年４月１１日に出願された日本出願特願２０１３−０８３０８５を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【符号の説明】
【０１４６】
１００    配備装置
１１０    論理構成記憶部
１１１    論理構成情報
１２０    物理構成記憶部
１２１    物理構成情報
１３０    スクリプト生成部
１３１    スクリプト
１４０    スクリプト配布部
１５０    スクリプトリポジトリ
２００    処理装置
２１０    エージェント
３００    構成部品リポジトリ
５０１    イニシエータ
５０２    レスポンダリスト
５０３    メッセージ送信部
５１１    レスポンダ
５１２    イニシエータリスト
５１３    メッセージ受信部
５１４    受信メッセージ記憶部
６０１    イニシエータ
６０２    レスポンダリスト
６０３    メッセージ送信部
６１１    レスポンダ
６１２    イニシエータリスト
６１３    メッセージ確認部
６２１    メッセージキュー
６２２    メッセージ受信部
６２３    受信メッセージ記憶部
６２４    メッセージ検索部
【図１】
2014167790.tif 000003
【図２】
2014167790.tif 000004
【図３】
2014167790.tif 000005
【図４】
2014167790.tif 000006
【図５】
2014167790.tif 000007
【図６】
2014167790.tif 000008
【図７】
2014167790.tif 000009
【図８】
2014167790.tif 000010
【図９】
2014167790.tif 000011
【図１０】
2014167790.tif 000012
【図１１】
2014167790.tif 000013
【図１２】
2014167790.tif 000014
【図１３】
2014167790.tif 000015
【手続補正書】
【提出日】平成27年9月17日(2015.9.17)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項７
【補正方法】変更
【補正の内容】
【請求項７】
コンピュータに、
システムを構成する複数のソフトウェアコンポーネント間の依存関係を示す論理構成情報を記憶し、
複数の処理装置の内、前記システムを構成する複数のソフトウェアコンポーネントの各々が配備される処理装置を示す物理構成情報を記憶し、
前記論理構成情報と前記物理構成情報とをもとに、前記複数の処理装置の各々について、当該処理装置に配備される各ソフトウェアコンポーネントを配備するための処理と、他の処理装置に配備される同期モジュールとの間でスクリプトの処理の同期をとる同期モジュールを配備するための処理と、が実行順序とともに記述された、当該処理装置上で実行されるスクリプトを生成する、
処理を実行させるプログラム。
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項８
【補正方法】変更
【補正の内容】
【請求項８】
前記同期モジュールとして、配備時にレスポンダにメッセージを送信するイニシエータと配備時に前記イニシエータからの前記メッセージを待ち受ける前記レスポンダとが用いられ、
前記スクリプトの生成において、第１の処理装置に配備される第１のソフトウェアコンポーネントが第２の処理装置に配備される第２のソフトウェアコンポーネントに依存する場合、前記第１の処理装置の前記スクリプトにおける前記第１のソフトウェアコンポーネントを配備するための処理の前に、前記レスポンダを配備するための処理を挿入し、前記第２の処理装置の前記スクリプトにおける前記第２のソフトウェアコンポーネントを配備するための処理の後に、前記イニシエータを配備するための処理を挿入する、
処理を実行させる請求項７に記載のプログラム。
【手続補正３】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項９
【補正方法】変更
【補正の内容】
【請求項９】
コンピュータに、
システムを構成する複数のソフトウェアコンポーネントの内の当該コンピュータに配備される各ソフトウェアコンポーネントを配備するための処理と、
他の処理装置に配備される同期モジュールとの間でスクリプトの処理の同期をとる同期モジュールを配備するための処理と、
を前記複数のソフトウェアコンポーネント間の依存関係をもとに決定される順序で実行させるプログラム。
【手続補正４】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項１０
【補正方法】変更
【補正の内容】
【請求項１０】
前記同期モジュールとして、配備時にレスポンダにメッセージを送信するイニシエータと配備時に前記イニシエータからの前記メッセージを待ち受ける前記レスポンダとが用いられ、
前記コンピュータに配備される第１のソフトウェアコンポーネントが他のコンピュータに配備される第２のソフトウェアコンポーネントに依存する場合、前記第１のソフトウェアコンポーネントを配備するための処理の前に、前記他のコンピュータにおいて前記第２のソフトウェアコンポーネントの後に配備される前記イニシエータからの前記メッセージを待ち受ける前記レスポンダを配備するための処理を実行させ、前記第２のソフトウェアコンポーネントが前記第１のソフトウェアコンポーネントに依存する場合、前記第１のソフトウェアコンポーネントを配備するための処理の後に、前記他のコンピュータにおいて前記第２のソフトウェアコンポーネントの前に配備される前記レスポンダへ前記メッセージを送信する前記イニシエータを配備するための処理を実行させる、
請求項９に記載のプログラム。
【国際調査報告】
2014167790.tif 000016
2014167790.tif 000017
2014167790.tif 000018