以下に、本願の開示する分散配備装置の一例であるサーバノード、分散配備プログラム及び分散配備方法の実施例を図面に基づいて詳細に説明する。なお、実施例は開示の技術を限定するものではない。
[実施例に係るセンサネットワークシステムのシステム構成の一例]
図1は、実施例に係るセンサネットワークシステムのシステム構成の一例を示す図である。図1に示すセンサネットワークシステム10は、イベントを加工する処理を行う各種の処理インスタンス(モジュール)をどのノード(センサノード、GWノード、サーバノード)に配備するかを決定するシステムである。ここでいうイベントとは、センサノードによってセンシングされたデータ、または、センシングされたデータが加工処理されたデータを指す。
図1の例に示すように、センサネットワークシステム10は、サーバノード1と、5つのセンサノード21a〜21eと、4つのGW(GateWay)ノード22a〜22dとを有する。図1の例では、センサノード21a,21bと、GWノード22aとが通信可能に接続される。また、センサノード21c,21d,21eと、GWノード22bとが通信可能に接続される。また、GWノード22a,22bと、GWノード22cとが通信可能に接続される。また、GWノード22cと、GWノード22dとが通信可能に接続される。
また、図1の例では、サーバノード1とGWノード22dとがネットワーク23を介して通信可能に接続される。ネットワーク23の一例としては、有線または無線を問わず、インターネット(internet)、LAN(Local Area Network)やVPN(Virtual Private Network)などの通信網が挙げられる。なお、図1では、センサネットワークシステム10が、5つのセンサノード21a〜21eを有する場合を例示したが、センサネットワークシステム10は、任意の数のセンサノードを有することができる。また、以下の説明では、5つのセンサノード21a〜21eを区別することなく総称する場合には、単に、「センサノード21」と表記する。また、図1の例では、センサネットワークシステム10が、4つのGWノード22a〜22dを有する場合を例示したが、センサネットワークシステム10は、任意の数のGWノードを有することができる。また、以下の説明では、4つのGWノード22a〜22dを区別することなく総称する場合には、単に、「GWノード22」と表記する。
また、図1の例では、サーバノード1と、端末99とが通信可能に接続される。端末99は、センサネットワークシステム10で実行される複数のモジュールを含むアプリケーションを開発者が開発や変更するための開発環境における端末である。開発者が端末99を操作することによりアプリケーションを開発したり、開発済みのアプリケーションを変更したりする。そして、端末99は、開発されたアプリケーションや、変更されたアプリケーションをサーバノード1に送信する。
また、端末99は、アプリケーションをサーバノード1に送信する際に、アプリケーションとともに、アプリケーション定義データをサーバノード1に送信する。ここで、アプリケーション定義データについて説明する。
図2は、開発されたアプリケーションの一例を示す図である。また、図3は、図2の例に示すアプリケーションとともに、サーバノードに送信されるアプリケーション定義データの一例を示す図である。
図2に示すアプリケーションは、所定の順序で実行される3つのモジュールを有する。1番目に実行されるモジュールは、従業員単位で、業務で使用するPC(Personal Computer)などの各種の機器の消費電力を取得するモジュールであり、名称が「電力取得1」である。1番目に実行されるモジュールの次に実行されるモジュール、すなわち、2番目に実行されるモジュールは、会社の部署単位で、各部署に属する従業員の消費電力を集計するモジュールであり、名称が「電力集計2」である。2番目に実行されるモジュールの次に実行されるモジュール、すなわち、3番目に実行されるモジュールは、会社単位で、部署単位で集計された消費電力を集計するモジュールであり、名称が「電力集計3」である。図2に示すようなアプリケーションが開発された場合には、端末99は、図2に示すアプリケーションとともに、図3に示すアプリケーション定義データをサーバノード1に送信する。
図3の例に示すアプリケーション定義データは、「処理名」、「入力型」、「出力型」、「集約キー名」、「モジュール」、「処理設定」、「処理変更」、「集約キー変更」の各項目を有する。これらの各項目には、アプリケーションを開発した開発者などが端末99を操作することにより各種の内容が登録されたり、端末99がアプリケーションの変更を検知したときに各種の内容が登録される。
「処理名」の項目には、開発したアプリケーションに含まれる、所定の順序で実行される複数のモジュールのそれぞれの名称が開発者などにより登録される。図3の例は、アプリケーション定義データの1番目のレコードの「処理名」の項目に、開発したアプリケーションに含まれる1番目に実行されるモジュールの名称「電力取得1」が登録された場合を示す。また、図3の例は、アプリケーション定義データの2番目のレコードの「処理名」の項目に、開発したアプリケーションに含まれる2番目に実行されるモジュールの名称「電力集計2」が登録された場合を示す。また、図3の例は、アプリケーション定義データの3番目のレコードの「処理名」の項目に、開発したアプリケーションに含まれる3番目に実行されるモジュールの名称「電力集計3」が登録された場合を示す。
「入力型」の項目には、「処理名」の項目に名称が登録されたモジュールの入力となるイベントの型が開発者などにより登録される。図3の例は、アプリケーション定義データの1番目のレコードの「入力型」の項目に、イベントの型「センサ電力」が登録された場合を示す。ここで、「センサ電力」は、名称が「電力取得1」であるモジュールの入力となるイベントの型であり、センサによって検出されて出力された、従業員の消費電力を含むイベントの型である。また、図3の例は、アプリケーション定義データの2番目のレコードの「入力型」の項目に、イベントの型「集計電力1」が登録された場合を示す。ここで、「集計電力1」は、名称が「電力集計2」であるモジュールの入力となるイベントの型であり、名称が「電力取得1」であるモジュールによって加工されたイベントの型である。また、図3の例は、アプリケーション定義データの3番目のレコードの「入力型」の項目に、イベントの型「集計電力2」が登録された場合を示す。ここで、「集計電力2」は、名称が「電力集計3」であるモジュールの入力となるイベントの型であり、名称が「電力集計2」であるモジュールによって加工されたイベントの型である。
「出力型」の項目には、「処理名」の項目に名称が登録されたモジュールによって実行された処理の出力となるイベントの型が開発者などにより登録される。図3の例は、アプリケーション定義データの1番目のレコードの「出力型」の項目に、イベントの型「集計電力1」が登録された場合を示す。この「集計電力1」は、名称が「電力取得1」であるモジュールによって加工されたイベントの型である。また、図3の例は、アプリケーション定義データの2番目のレコードの「出力型」の項目に、イベントの型「集計電力2」が登録された場合を示す。この「集計電力2」は、名称が「電力集計2」であるモジュールによって加工されたイベントの型である。また、図3の例は、アプリケーション定義データの3番目のレコードの「出力型」の項目に、イベントの型「集計電力結果」が登録された場合を示す。この「集計電力結果」は、名称が「電力集計3」であるモジュールによって加工されたイベントの型である。
「集約キー名」の項目には、「処理名」の項目に名称が登録されたモジュールによって実行される処理における処理単位を示すキーが開発者などにより登録される。図3の例は、アプリケーション定義データの1番目のレコードの「集約キー名」の項目に、従業員IDが登録された場合を示す。すなわち、図3の例に示すアプリケーション定義データの1番目のレコードの「集約キー名」の項目は、名称が「電力取得1」であるモジュールにより、従業員IDが示す従業員単位で、業務で使用する各種の機器の消費電力を取得する処理が実行されることを示す。また、図3の例は、アプリケーション定義データの2番目のレコードの「集約キー名」の項目に、部署IDが登録された場合を示す。すなわち、図3の例に示すアプリケーション定義データの2番目のレコードの「集約キー名」の項目は、名称が「電力集計2」であるモジュールにより、部署IDが示す部署単位で、各部署に属する従業員の消費電力を集計する処理が実行されることを示す。また、図3の例は、アプリケーション定義データの3番目のレコードの「集約キー名」の項目に、会社IDが登録された場合を示す。すなわち、図3の例に示すアプリケーション定義データの3番目のレコードの「集約キー名」の項目は、名称が「電力集計3」であるモジュールにより、会社IDが示す会社単位で、各部署の消費電力を集計する処理が実行されることを示す。
「モジュール」の項目には、「処理名」の項目に名称が登録されたモジュールが開発者などにより登録される。図3の例は、アプリケーション定義データの1番目のレコードの「モジュール」の項目に、名称が「電力取得1」であるモジュール「取得.jar」が登録された場合を示す。また、図3の例は、アプリケーション定義データの2番目のレコードの「モジュール」の項目に、名称が「電力集計2」であるモジュール「集計.jar」が登録された場合を示す。また、図3の例は、アプリケーション定義データの3番目のレコードの「モジュール」の項目に、名称が「電力集計3」であるモジュール「集計.jar」が登録された場合を示す。
「処理設定」の項目には、「処理名」の項目に名称が登録されたモジュールが各種の処理を実行する際に用いるパラメータが開発者などにより登録される。図3の例は、アプリケーション定義データの1番目のレコードの「処理設定」の項目に、「取得対象=list.xml」が登録された場合を示す。この「取得対象=list.xml」は、消費電力を取得する処理を実行する際に、消費電力を取得する対象の従業員の従業員IDと同従業員の消費電力を計測するセンサのアドレス(URLなど)が登録されたlist.xmlを参照して、list.xmlに従業員IDが登録された従業員について消費電力を取得することを示す。また、図3の例は、アプリケーション定義データの2番目のレコードの「処理設定」の項目に、「集計キー=電力」が登録された場合を示す。この「集計キー=電力」は、部署単位で、入力されたイベントの属性に含まれる「電力」をキーとして、「電力」に対応付けられた消費電力を集計することを示す。また、図3の例は、アプリケーション定義データの3番目のレコードの「処理設定」の項目に、「集計キー=電力」が登録された場合を示す。この「集計キー=電力」は、会社単位で、入力されたイベントの属性に含まれる「電力」をキーとして、「電力」に対応付けられた消費電力を集計することを示す。
「処理変更」の項目には、「処理名」の項目に名称が登録されたモジュールが変更された場合に、端末99によって「あり」が登録される。例えば、端末99は、アプリケーションが開発された時点では、全てのモジュールのそれぞれに対応する「処理変更」の項目に「なし」を登録する。また、端末99は、アプリケーションに含まれるモジュールが開発者により変更されたか否かを監視している。そして、端末99は、モジュールに変更があったことを検知した場合に、変更があったモジュールに対応する「処理変更」の項目に、「あり」を登録する。図2の例に示すアプリケーションは、開発されてから、いずれのモジュールも変更されていないので、図3の例に示すように、全てのモジュールのそれぞれに対応する「処理変更」の項目には、「なし」が登録される。
「集約キー変更」の項目には、「処理名」の項目に名称が登録されたモジュールが変更され、変更されたモジュールによって実行される処理における処理単位が変更された場合には、端末99によって「あり」が登録される。また、「集約キー変更」の項目には、モジュールが変更されても、処理単位が変更されていない場合には、端末99によって「なし」が登録される。例えば、端末99は、アプリケーションが開発された時点では、全てのモジュールのそれぞれに対応する「集約キー変更」の項目に「なし」を登録する。そして、端末99は、モジュールに変更があったことを検知し、かつ、変更されたモジュールによって実行される処理における処理単位が変更されたことを検知した場合に、変更されたモジュールに対応する「集約キー変更」の項目に、「あり」を登録する。ここで、処理単位が変更された場合には、「集約キー名」の項目に登録された内容も変更されるので、「処理変更」の項目には、「集約キー名」の項目に登録された内容に変更があった場合に、「あり」が登録され、「集約キー名」の項目に登録された内容に変更がない場合に、「なし」が登録されることとなる。図2の例に示すアプリケーションは、開発されてから、いずれのモジュールも変更されていないので、図3の例に示すように、全てのモジュールのそれぞれに対応する「集約キー変更」の項目には、「なし」が登録される。
また、「集約キー変更」の項目には、「処理名」の項目に名称が登録されたモジュールが実行する処理によって、入力されたイベントを加工する処理が変更された場合に、端末99によって「あり」が登録される。例えば、端末99は、モジュールに変更があったことを検知した場合には、入力されたイベントを加工する処理が変更されたかどうかを開発者に問い合わせるための画面を端末99の図示しない表示部に表示する。図4は、イベントを加工する処理が変更されたかどうかを開発者に問い合わせるための画面の一例を示す図である。例えば、図4の例に示す画面は、名称が「電力集計2」であるモジュールにおいて、会社単位で消費電力を集計する、名称が「電力集計3」であるモジュールに対して出力するイベントを加工する際の処理を変更したかどうかを問い合わせるための画面である。図4の例に示す画面において、「Yes」と表記されたボタンが押下されると、端末99は、イベントを加工する際の処理に変更があったため、「電力集計3」であるモジュールに対応する「集約キー変更」の項目に、「あり」を登録する。また、図4の例に示す画面において、「No」と表記されたボタンが押下されると、端末99は、イベントを加工する際の処理に変更がなかったため、名称が「電力集計3」であるモジュールに対応する「集約キー変更」の項目に、「なし」を登録する。
図2に示すアプリケーションが開発された場合には、端末99は、開発されたアプリケーションとともに、上述したような方法で各種の内容が登録された図3に示すアプリケーション定義データをサーバノード1に送信する。
また、図2に示すアプリケーションに対して、開発者が、図5の例に示すように、名称が「電力集計2」であるモジュールが実行する処理における処理単位を「部署」から「Project(プロジェクト)」に変更した場合について説明する。なお、開発者は、名称が「電力集計2」であるモジュールにおいて、入力されたイベントを加工する処理をも変更している。この場合には、モジュールを変更した開発者が、図3に示すアプリケーション定義データにおける2番目のレコードの「集約キー名」の項目に登録された「部署ID」を、プロジェクトを示す「プロジェクトID」に変更する。そして、端末99は、2番目のレコードの「集約キー名」の項目の登録内容が「プロジェクトID」に変更されたアプリケーション定義データの「処理変更」及び「集約キー変更」の各項目の登録内容をクリアする。そして、端末99は、図6Aに示すように、名称が「電力集計2」である変更されたモジュールの「処理変更」の項目に、「あり」を登録し、その他の変更されていないモジュールの「処理変更」の項目に、「なし」を登録する。そして、端末99は、図6Bに示すように、処理単位が「部署」から「Project(プロジェクト)」に変更されたモジュールの「集約キー変更」の項目に「あり」を登録する。そして、端末99は、名称が「電力集計2」であるモジュールにおいて、入力されたイベントを加工する処理が変更されたかどうかを開発者に問い合わせるための画面を端末99の図示しない表示部に表示する。なお、この場合における、入力されたイベントを加工する処理は、名称が「電力集計3」であるモジュールに対して出力するイベントを加工する際の処理のことを指す。また、ここでは、開発者から、名称が「電力集計2」であるモジュールにおいて、入力されたイベントを加工する処理が変更されたとの回答を得たものとする。この場合には、端末99は、図6Cに示すように、名称が「電力集計3」であるモジュールに対応する「集約キー変更」の項目に、「あり」を登録する。また、図6Cに示すように、端末99は、変更されたモジュールよりも前に実行されるモジュール、すなわち、名称が「電力取得1」であるモジュールに対応する「集約キー変更」の項目には、「なし」を登録する。そして、端末99は、図5に示す変更されたアプリケーションとともに、上述したような方法で各種の内容が登録された図6Cに示すアプリケーション定義データをサーバノード1に送信する。
また、図2に示すアプリケーションに対して、開発者が、名称が「電力集計2」であるモジュールにおいて、入力されたイベントを加工する処理を変更した場合について説明する。この場合には、端末99は、図3に示すアプリケーション定義データの「処理変更」及び「集約キー変更」の各項目の登録内容をクリアする。そして、端末99は、図7Aに示すように、名称が「電力集計2」である変更されたモジュールに対応する「処理変更」の項目に、「あり」を登録し、その他の変更されていないモジュールの「処理変更」の項目に、「なし」を登録する。そして、端末99は、名称が「電力集計2」であるモジュールにおいて処理単位が変更されていないため、図7Bに示すように、名称が「電力集計2」であるモジュールに対応する「集約キー変更」の項目に「なし」を登録する。そして、端末99は、名称が「電力集計2」であるモジュールにおいて、入力されたイベントを加工する処理が変更されたかどうかを開発者に問い合わせるための画面を端末99の図示しない表示部に表示する。ここでは、開発者から、名称が「電力集計2」であるモジュールにおいて、入力されたイベントを加工する処理が変更されたとの回答を得たものとする。この場合には、端末99は、図7Cに示すように、名称が「電力集計3」であるモジュールに対応する「集約キー変更」の項目に、「あり」を登録する。また、図7Cに示すように、端末99は、変更されたモジュールよりも前に実行されるモジュール、すなわち、名称が「電力取得1」であるモジュールに対応する「集約キー変更」の項目に、「なし」を登録する。そして、端末99は、名称が「電力集計2」であるモジュールにおいて、入力されたイベントを加工する処理が変更されたアプリケーションとともに、上述したような方法で各種の内容が登録された図7Cに示すアプリケーション定義データをサーバノード1に送信する。
また、図2に示すアプリケーションに対して、開発者が、名称が「電力集計2」であるモジュールが実行する処理における処理単位を「部署」から「Project(プロジェクト)」に変更した場合について説明する。なお、開発者は、名称が「電力集計2」であるモジュールにおいて、入力されたイベントを加工する処理については変更していない。この場合には、モジュールを変更した開発者が、図3に示すアプリケーション定義データにおける2番目のレコードの「集約キー名」の項目に登録された「部署ID」を、プロジェクトを示す「プロジェクトID」に変更する。そして、端末99は、2番目のレコードの「集約キー名」の項目の登録内容が「プロジェクトID」に変更されたアプリケーション定義データの「処理変更」及び「集約キー変更」の各項目の登録内容をクリアする。そして、端末99は、図8Aに示すように、名称が「電力集計2」である変更されたモジュールの「処理変更」の項目に、「あり」を登録し、その他の変更されていないモジュールの「処理変更」の項目に、「なし」を登録する。そして、端末99は、図8Bに示すように、処理単位が「部署」から「Project(プロジェクト)」に変更されたモジュールに対応する「集約キー変更」の項目に「あり」を登録する。そして、端末99は、名称が「電力集計2」であるモジュールにおいて、入力されたイベントを加工する処理が変更されたかどうかを開発者に問い合わせるための画面を端末99の図示しない表示部に表示する。ここでは、開発者から、名称が「電力集計2」であるモジュールにおいて、入力されたイベントを加工する処理が変更されていないとの回答を得たものとする。この場合には、端末99は、図8Cに示すように、名称が「電力集計3」であるモジュールに対応する「集約キー変更」の項目に、「なし」を登録する。また、図8Cに示すように、端末99は、変更されたモジュールよりも前に実行されるモジュール、すなわち、名称が「電力取得1」であるモジュールに対応する「集約キー変更」の項目に、「なし」を登録する。そして、端末99は、処理単位が「部署」から「Project」に変更されたアプリケーションとともに、上述したような方法で各種の内容が登録された図8Cに示すアプリケーション定義データをサーバノード1に送信する。
また、図2に示すアプリケーションに対して、開発者が、名称が「電力集計2」であるモジュールを変更したが、処理単位、及び、入力されたイベントを加工する処理について変更していない場合について説明する。この場合には、端末99は、図3に示すアプリケーション定義データの「処理変更」及び「集約キー変更」の各項目の登録内容をクリアする。そして、端末99は、図9Aに示すように、名称が「電力集計2」である変更されたモジュールの「処理変更」の項目に、「あり」を登録し、その他の変更されていないモジュールの「処理変更」の項目に、「なし」を登録する。そして、端末99は、名称が「電力集計2」であるモジュールにおいて処理単位が変更されていないため、図9Bに示すように、名称が「電力集計2」であるモジュールに対応する「集約キー変更」の項目に「なし」を登録する。そして、端末99は、名称が「電力集計2」であるモジュールにおいて、入力されたイベントを加工する処理が変更されたかどうかを開発者に問い合わせるための画面を端末99の図示しない表示部に表示する。ここでは、開発者から、名称が「電力集計2」であるモジュールにおいて、入力されたイベントを加工する処理が変更されていないとの回答を得たものとする。この場合には、端末99は、図9Cに示すように、名称が「電力集計3」であるモジュールに対応する「集約キー変更」の項目に、「なし」を登録する。また、図9Cに示すように、端末99は、変更されたモジュールよりも前に実行されるモジュール、すなわち、名称が「電力取得1」であるモジュールに対応する「集約キー変更」の項目に、「なし」を登録する。そして、端末99は、名称が「電力集計2」であるモジュールが変更されたが、このモジュールにおいて処理単位、及び、入力されたイベントを加工する処理については変更されていないアプリケーションとともに、上述したような方法で各種の内容が登録された図8Cに示すアプリケーション定義データをサーバノード1に送信する。
図1の説明に戻り、センサネットワークシステム10では、センサノード21から送信されたイベントを、GWノード22及びネットワーク23を介して、サーバノード1が収集する。
センサノード21は、センサが搭載された通信端末である。センサノード21の一態様としては、パーソナルコンピュータやパーソナルコンピュータの周辺機器、AV(Audio Visual)機器、携帯電話機やPHS(Personal Handyphone System)の携帯端末、家電製品などの各種の機器が挙げられる。また、センサノード21に搭載されるセンサの一態様としては、照度を検出する照度センサ、温度を検出する温度センサ、湿度を検出する湿度センサ、温度及び湿度を検出する温湿度センサなどの環境センサが挙げられる。なお、センサノード21に搭載されるセンサは、環境センサに限られない。例えば、センサノード21に搭載されるセンサは、GPS(Global Positioning System)センサ、加速度センサ、ジャイロセンサや従業員の消費電力を検出するセンサなどの各種のセンサでもよい。ここで、以下、センサノード21に、従業員の消費電力を検出するセンサが搭載された場合について説明する。
GWノード22は、サーバノード1とセンサノード21との通信を中継するノードである。例えば、GWノード22は、センサノード21から送信されたイベントを受信し、受信したイベントを、ネットワーク23を介してサーバノード1へ送信する。以下の説明では、センサネットワークにおけるルートノードであるサーバノード1以外のノード、すなわち、センサノード21およびGWノード22を「下位ノード」と表記する場合がある。
サーバノード1は、センサネットワークにおけるルートノードとしての機能を有する。サーバノード1は、イベントを加工する処理を行う各種のモジュールをどのノード(センサノード、GWノード、サーバノード)に配備するかを決定するサーバである。
[サーバノード1の機能構成の一例]
続いて、本実施例に係るサーバノード1の機能構成の一例について説明する。図10は、実施例に係るサーバノードの機能構成の一例を示すブロック図である。図10の例に示すように、サーバノード1は、入力部2と、出力部3と、通信部4と、制御部6と、アプリケーション記憶部5aと、アプリケーション定義データ記憶部5bとを有する。
入力部2は、各種の情報をサーバノード1に入力する。例えば、入力部2は、サーバノード1のユーザから、後述の分散配備処理を実行する指示を受け付けた場合には、受け付けた指示をサーバノード1に入力する。入力部2のデバイスの一例としては、キーボードやマウスなどが挙げられる。
出力部3は、各種の情報を出力する。例えば、出力部3は、後述の配備部6dが実行する処理により、イベントを加工する処理を行う各種のモジュールの配備先を示す情報を表示するように制御される。出力部3のデバイスの一例としては、液晶ディスプレイなどの各種の表示装置や、音声を出力する音声出力装置が挙げられる。
通信部4は、サーバノード1と、下位ノードとの通信を行う。例えば、通信部4は、端末99から送信されたアプリケーション及びアプリケーション定義データを受信すると、受信したアプリケーション及びアプリケーション定義データを制御部6に送信する。また、通信部4は、後述の配備部6dが実行する後述の処理により、モジュールを下位ノードに送信するように制御される。通信部4のデバイスの一例として、ネットワークインタフェースカードなどの各種の通信を行うためのデバイスが挙げられる。
アプリケーション記憶部5aには、後述の登録部6aにより、サーバノード1が受信したアプリケーションのうち、最新のアプリケーションが登録される。
アプリケーション定義データ記憶部5bには、後述の登録部6aにより、サーバノード1が受信したアプリケーション定義データのうち、最新のアプリケーション定義データが登録される。
制御部6は、登録部6aと、特定部6bと、生成部6cと、配備部6dとを有する。制御部6は、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)、CPU(Central Processing Unit)、MPU(Micro Processing Unit)などの回路である。
登録部6aは、各種の情報を登録する。登録部6aの一態様について説明する。例えば、登録部6aは、通信部4により送信されたアプリケーションを受信すると、受信したアプリケーションをアプリケーション記憶部5aに登録する。なお、登録部6aは、受信したアプリケーションをアプリケーション記憶部5aに登録する際に、アプリケーション記憶部5aに他のアプリケーションが記憶されている場合には、他のアプリケーションをアプリケーション記憶部5aから削除する。そして、登録部6aは、受信したアプリケーションをアプリケーション記憶部5aに登録する。これにより、アプリケーション記憶部5aには、サーバノード1が受信したアプリケーションのうち、最新のアプリケーションのみが記憶される。
また、登録部6aは、通信部4により送信されたアプリケーション定義データを受信すると、受信したアプリケーション定義データをアプリケーション定義データ記憶部5bに登録する。なお、登録部6aは、受信したアプリケーション定義データをアプリケーション定義データ記憶部5bに登録する際に、アプリケーション定義データ記憶部5bに他のアプリケーション定義データが記憶されている場合には、他のアプリケーション定義データを削除する。そして、登録部6aは、受信したアプリケーション定義データをアプリケーション定義データ記憶部5bに登録する。これにより、アプリケーション定義データ記憶部5bには、サーバノード1が受信したアプリケーション定義データのうち、最新のアプリケーション定義データのみが記憶される。
特定部6bは、所定の順序で実行される複数のモジュールのそれぞれの処理インスタンスが配備された複数の下位ノードにおけるモジュールが変更された場合に、次の処理を行う。すなわち、特定部6bは、変更されたモジュールの変更内容に応じて、複数のモジュールの中から再配備の対象のモジュールを特定する。
特定部6bの一態様について説明する。例えば、特定部6bは、登録部6aによりアプリケーションがアプリケーション記憶部5aに登録され、アプリケーション定義データがアプリケーション定義データ記憶部5bに登録された場合に、次の処理を行う。すなわち、特定部6bは、アプリケーション記憶部5aからアプリケーションを取得するとともに、アプリケーション定義データ記憶部5bからアプリケーション定義データを取得する。
そして、特定部6bは、取得したアプリケーション定義データの全レコードの中に、「処理変更」の項目に「あり」が登録されたレコードがあるか否かを判定する。「処理変更」の項目に「あり」が登録されたレコードがあると判定した場合には、特定部6bは、「処理変更」の項目に「あり」が登録されたレコードの「集約キー変更」の項目に登録された内容を取得する。すなわち、「処理変更」の項目に「あり」が登録されたレコードがあると判定した場合には、特定部6bは、変更されたモジュールにおいて、処理単位が変更されたか否かを示す情報を取得する。
また、「処理変更」の項目に「あり」が登録されたレコードがあると判定した場合には、特定部6bは、「処理変更」の項目に「あり」が登録されたレコードの「出力型」の項目に登録された内容を取得する。そして、特定部6bは、取得した「出力型」の項目の登録内容が、「入力型」の項目に登録されたレコードをアプリケーション定義データの全レコードの中から特定する。さらに特定したレコードの「出力型」の項目の登録内容が、「入力型」の項目に登録されたレコードを特定し、出力-入力の連鎖が続く限り再帰的に特定を続ける。そして、特定部6bは、特定したレコードの「集約キー変更」の項目に登録された内容を取得する。すなわち、「処理変更」の項目に「あり」が登録されたレコードがあると判定した場合には、特定部6bは、変更されたモジュールにおいて、実行される処理の内容が変更されたか否かを示す情報を取得する。
上述したように、特定部6bは、モジュールが変更された場合に、変更されたモジュールにおいて、処理単位が変更されたか否かを示す情報を取得し、実行される処理の内容が変更されたか否かを示す情報を取得する。例えば、図6Cに示すアプリケーション定義データをアプリケーション定義データ記憶部5bから取得した場合には、特定部6bは、次の情報を取得する。すなわち、特定部6bは、名称が「電力集計2」であるモジュールにおいて、処理単位が変更されたことを示す情報「あり」を取得し、実行される処理の内容が変更されたことを示す情報「あり」を取得する。また、図7Cに示すアプリケーション定義データをアプリケーション定義データ記憶部5bから取得した場合には、特定部6bは、次の情報を取得する。すなわち、特定部6bは、名称が「電力集計2」であるモジュールにおいて、処理単位が変更されていないことを示す情報「なし」を取得し、実行される処理の内容が変更されたことを示す情報「あり」を取得する。また、図8Cに示すアプリケーション定義データをアプリケーション定義データ記憶部5bから取得した場合には、特定部6bは、次の情報を取得する。すなわち、特定部6bは、名称が「電力集計2」であるモジュールにおいて、処理単位が変更されていることを示す情報「あり」を取得し、実行される処理の内容が変更されていないことを示す情報「なし」を取得する。また、図9Cに示すアプリケーション定義データをアプリケーション定義データ記憶部5bから取得した場合には、特定部6bは、次の情報を取得する。すなわち、特定部6bは、名称が「電力集計2」であるモジュールにおいて、処理単位が変更されていないことを示す情報「なし」を取得し、実行される処理の内容が変更されていないことを示す情報「なし」を取得する。
そして、特定部6bは、取得した処理単位が変更されたか否かを示す情報、及び、取得した実行される処理の内容が変更されたか否かを示す情報に応じて、再配備の対象となるモジュールを特定する。
例えば、図6Cに示すアプリケーション定義データから、名称が「電力集計2」であるモジュールにおいて、処理単位が変更されたことを示す情報「あり」を取得し、実行される処理の内容が変更されたことを示す情報「あり」を取得した場合について説明する。この場合には、名称が「電力集計2」であるモジュールにおいて、処理単位が変更されたため、名称が「電力集計2」であるモジュールの処理インスタンスが変更される。また、名称が「電力集計2」であるモジュールにおいて、実行される処理の内容が変更されたため、名称が「電力集計3」であるモジュールの処理インスタンスが変更される。そこで、特定部6bは、名称が「電力集計2」であるモジュール、及び、名称が「電力集計3」であるモジュールを再配備するために、名称が「電力集計2」であるモジュール、及び、名称が「電力集計3」であるモジュールを再配備の対象のモジュールとして特定する。
また、図7Cに示すアプリケーション定義データから、名称が「電力集計2」であるモジュールにおいて、処理単位が変更されていないことを示す情報「なし」を取得し、実行される処理の内容が変更されたことを示す情報「あり」を取得した場合について説明する。この場合には、名称が「電力集計2」であるモジュールにおいて、処理単位が変更されていないため、名称が「電力集計2」であるモジュールの処理インスタンスは、変更されない。一方、名称が「電力集計2」であるモジュールにおいて、実行される処理の内容が変更されたため、名称が「電力集計3」であるモジュールの処理インスタンスは、変更される。そこで、特定部6bは、名称が「電力集計3」であるモジュールを再配備するために、名称が「電力集計3」であるモジュールを再配備の対象のモジュールとして特定する。
また、図8Cに示すアプリケーション定義データから、名称が「電力集計2」であるモジュールにおいて、処理単位が変更されたことを示す情報「あり」を取得し、実行される処理の内容が変更されていないことを示す情報「なし」を取得した場合について説明する。この場合には、名称が「電力集計2」であるモジュールにおいて、処理単位が変更されたため、名称が「電力集計2」であるモジュールの処理インスタンスは、変更される。一方、名称が「電力集計2」であるモジュールにおいて、実行される処理の内容が変更されないため、名称が「電力集計3」であるモジュールの処理インスタンスは、変更されない。そこで、特定部6bは、名称が「電力集計2」であるモジュールを再配備するために、名称が「電力集計2」であるモジュールを再配備の対象のモジュールとして特定する。
また、図9Cに示すアプリケーション定義データから、名称が「電力集計2」であるモジュールにおいて、処理単位が変更されていないことを示す情報「なし」を取得し、実行される処理の内容が変更されていないことを示す情報「なし」を取得した場合について説明する。この場合には、名称が「電力集計2」であるモジュールにおいて、処理単位が変更されていないため、名称が「電力集計2」であるモジュールの処理インスタンスは、変更されない。また、名称が「電力集計2」であるモジュールにおいて、実行される処理の内容が変更されないため、名称が「電力集計3」であるモジュールの処理インスタンスも、変更されない。そこで、この場合には、特定部6bは、再配備の対象のモジュールを特定しない。
生成部6cは、特定部6bにより特定されたモジュールの処理インスタンスを生成する。
生成部6cの一態様について説明する。例えば、生成部6cは、特定されたモジュールを、下位ノードのうちイベントが流れる方向の最下流側に位置するノードに配備した上で、アプリケーションに含まれる複数のモジュールを実行させる。そして、生成部6cは、特定されたモジュールの入出力データを表すログを解析することにより、特定されたモジュールを分割する分割数を算出する。ここで、モジュールの入力データの一例としては、モジュールに入力されるイベントが挙げられ、モジュールの出力データの一例としては、モジュールによって加工されたイベントが挙げられる。そして、生成部6cは、特定されたモジュールについて分割数分の処理インスタンスを生成する。そして、生成部6cは、アプリケーションに含まれる複数のモジュールのそれぞれの処理インスタンスの接続関係を示すインスタンスフローを生成する。
図11〜図14を参照して、生成部6cが実行する処理の一例について説明する。図11は、アプリケーションの変更前後のインスタンスフロー及び処理インスタンスの配備先の一例を示す図である。図11中左上側には、図2に示す変更前のアプリケーションに含まれるモジュールの処理インスタンスが接続されたインスタンスフローが示されている。このインスタンスフローは、名称が「電力取得1」であるモジュールの処理インスタンス「取得1a」〜「取得1e」と、名称が「電力集計2」であるモジュールの処理インスタンス「集計2x」、「集計2y」と、名称が「電力集計3」であるモジュールの処理インスタンス「集計3P」、「集計3Q」との接続関係を示す。なお、処理インスタンス「取得1a」〜「取得1e」のそれぞれは、処理インスタンス「1a」〜「1e」のそれぞれと表記される場合がある。また、処理インスタンス「集計2x」、「集計2y」のそれぞれは、処理インスタンス「2x」、「2y」のそれぞれと表記される場合がある。また、処理インスタンス「集計3P」、「集計3Q」のそれぞれは、処理インスタンス「3P」、「3Q」のそれぞれと表記される場合がある。各インスタンスの末尾につく記号は、各処理の集約キー値に対応する。すなわち、「取得1a」〜「取得1e」は従業員ID「a」〜「e」の各データに対応する処理を行い、「集計2x」、「集計2y」は部署ID「x」と「y」に対応する処理を行う。また、後述する末尾に?が付くインスタンスは、集約キーの値が不明の場合の処理、あるいは既知でない集約キー値に対応する処理を表す。また、図11中左下側には、図2に示す変更前のアプリケーションに含まれるモジュールの処理インスタンスの配備先の一例が示されている。図11中左下側に示す例は、処理インスタンス「1a」、「1b」がGWノード22aに配備され、処理インスタンス「1c」〜「1e」、「2y」がGWノード22bに配備され、処理インスタンス「2x」、「3P」、「3Q」がGWノード22cに配備された場合を示す。このような場合に、名称が「電力集計2」であるモジュール、及び、名称が「電力集計3」であるモジュールが再配備の対象のモジュールとして特定された場合には、生成部6cは、次の処理を行う。すなわち、生成部6cは、図11中右下側に示すように、イベントが流れる方向において最上流に位置するGWノード22dに、名称が「電力集計2」であるモジュール「2?」、及び、名称が「電力集計3」であるモジュール「3?」をまず配備する。そして、生成部6cは、アプリケーションに含まれる複数のモジュールを実行させる。そして、生成部6cは、モジュール「2?」,「3?」の入出力データを表すログを解析することにより、モジュール「2?」,「3?」のそれぞれを分割する分割数を算出する。そして、生成部6cは、モジュール「2?」,「3?」のそれぞれについて分割数分の処理インスタンスを生成する。そして、生成部6cは、アプリケーションに含まれる複数のモジュールのそれぞれの処理インスタンスの接続関係を示すインスタンスフローを生成する。これにより、全てのモジュールの入出力データを解析することなく、インスタンスフローを生成することができるので、複数のモジュールのうち、一部のモジュールに変更があった場合でも、簡易にインスタンスフローを生成することができる。なお、図11中右上側には、モジュール「2?」,「3?」と、処理インスタンス「1a」〜「1e」との接続関係が示されている。
図12は、アプリケーションの変更前後のインスタンスフロー及び処理インスタンスの配備先の一例を示す図である。図12中左上側には、図2に示す変更前のアプリケーションに含まれるモジュールの処理インスタンスが接続されたインスタンスフローが示されている。このインスタンスフローは、図11中左側に示されたインスタンスフローと同様であるため、説明を省略する。また、図12中左下側には、図2に示す変更前のアプリケーションに含まれるモジュールの処理インスタンスの配備先の一例が示されている。この処理インスタンスの配備先の一例についても、図11中左下側に示された処理インスタンスの配備先の一例と同様であるため、説明を省略する。図12中左上側及び図12中左下側に示すような場合に、名称が「電力集計3」であるモジュールが再配備の対象のモジュールとして特定された場合には、生成部6cは、次の処理を行う。すなわち、生成部6cは、図12中右下側に示すように、イベントが流れる方向において最上流に位置するGWノード22dに、名称が「電力集計3」であるモジュール「3?」をまず配備する。そして、生成部6cは、アプリケーションに含まれる複数のモジュールを実行させる。そして、生成部6cは、モジュール「3?」の入出力データを表すログを解析することにより、モジュール「3?」を分割する分割数を算出する。そして、生成部6cは、モジュール「3?」について分割数分の処理インスタンスを生成する。そして、生成部6cは、アプリケーションに含まれる複数のモジュールのそれぞれの処理インスタンスの接続関係を示すインスタンスフローを生成する。これにより、全てのモジュールの入出力データを解析することなく、インスタンスフローを生成することができるので、複数のモジュールのうち、一部のモジュールに変更があった場合でも、簡易にインスタンスフローを生成することができる。なお、図12中右上側には、モジュール「3?」と、処理インスタンス「1a」〜「1e」,「2x」,「2y」との接続関係が示されている。
図13は、アプリケーションの変更前後のインスタンスフロー及び処理インスタンスの配備先の一例を示す図である。図13中左上側には、図2に示す変更前のアプリケーションに含まれるモジュールの処理インスタンスが接続されたインスタンスフローが示されている。このインスタンスフローは、図11中左側に示されたインスタンスフローと同様であるため、説明を省略する。また、図13中左下側には、図2に示す変更前のアプリケーションに含まれるモジュールの処理インスタンスの配備先の一例が示されている。この処理インスタンスの配備先の一例についても、図11中左下側に示された処理インスタンスの配備先の一例と同様であるため、説明を省略する。図13中左上側及び図13中左下側に示すような場合に、名称が「電力集計2」であるモジュールが再配備の対象のモジュールとして特定された場合には、生成部6cは、次の処理を行う。すなわち、生成部6cは、図13中右下側に示すように、イベントが流れる方向において最上流に位置するGWノード22dに、名称が「電力集計3」であるモジュール「2?」をまず配備する。これに加えて、生成部6cは、処理インスタンス「3P」,「3Q」をもGWノード22dに配備する。これは、処理インスタンス「3P」,「3Q」がGWノード22cに配備された場合に、複数のモジュールが実行された場合には、処理インスタンス「3P」,「3Q」とモジュール「2?」との通信に時間がかかってしまうからである。そして、生成部6cは、アプリケーションに含まれる複数のモジュールを実行させる。そして、生成部6cは、モジュール「2?」の入出力データを表すログを解析することにより、モジュール「2?」を分割する分割数を算出する。そして、生成部6cは、モジュール「2?」について分割数分の処理インスタンスを生成する。そして、生成部6cは、アプリケーションに含まれる複数のモジュールのそれぞれの処理インスタンスの接続関係を示すインスタンスフローを生成する。これにより、全てのモジュールの入出力データを解析することなく、インスタンスフローを生成することができるので、複数のモジュールのうち、一部のモジュールに変更があった場合でも、簡易にインスタンスフローを生成することができる。なお、図13中右上側には、モジュール「2?」と、処理インスタンス「1a」〜「1e」,「3P」,「3Q」との接続関係が示されている。
図14は、アプリケーションの変更前後のインスタンスフロー及び処理インスタンスの配備先の一例を示す図である。図14中左上側には、図2に示す変更前のアプリケーションに含まれるモジュールの処理インスタンスが接続されたインスタンスフローが示されている。このインスタンスフローは、図11中左側に示されたインスタンスフローと同様であるため、説明を省略する。また、図14中左下側には、図2に示す変更前のアプリケーションに含まれるモジュールの処理インスタンスの配備先の一例が示されている。この処理インスタンスの配備先の一例についても、図11中左下側に示された処理インスタンスの配備先の一例と同様であるため、説明を省略する。図14中左上側及び図14中左下側に示すような場合に、モジュールが変更されたにも関わらず、再配備の対象のモジュールが特定されなかった場合には、生成部6cは、何も処理を行わず、サーバノード1は、モジュールの配備先に変更がないものとして扱う。これにより、一部のモジュールに変更があった場合でも、インスタンスフローを再生成しないので、簡易にモジュールの配備先が決定できる結果、簡易にモジュールを配備することができる。なお、図14中右上側には、処理インスタンス「1a」〜「1e」,「2x」,「2y」,「3P」,「3Q」との接続関係を示すインスタンスフローが示されている。
この実施例の処理の中で、集約キーの変更などで対応するデータが集約されると保証されないインスタンス「2x」「2y」「3P」「3Q」を消滅させ、未知のデータに対応する「2?」または「3?」を生成するケースがある。この時、消滅させたインスタンスの内容を、対応する未知データのインスタンスに移動して引き継いでも良い。すなわち、インスタンス「2?」に「2y」「2x」のデータを移動し、インスタンス「3?」に「3P」「3Q」のデータを移動する。この時、未知のデータに対応するインスタンス「2?」は、再びデータxに対応するデータが届いた場合には「2x」から引き継いだデータを元に処理を継続する。さらに、引き継いだインスタンス内容に対応するデータが届かない場合、一定時間の後に内容を消去すると良い。
図10の説明に戻り、配備部6dは、生成部6cにより生成されたインスタンスフローを用いて処理インスタンスの配備先のノードを決定し、決定された配備先のノードに、処理インスタンスを配備する。したがって、本実施例によれば、上述したように、インスタンスフローを簡易に生成することができる結果、簡易に処理インスタンスを配備先のノードに配備することができる。
センサノード21の機能構成について説明する。図15は、実施例に係るセンサノードの機能構成の一例を示す図である。図15に示すように、センサノード21は、制御部70を有する。制御部70は、センサノード21に搭載されたセンサによってセンシングされたデータをイベントとして、GWノード22及びネットワーク23を介して、サーバノード1へ送信する。また、制御部70は、サーバノード1から送信された処理インスタンスを受信すると、受信した処理インスタンスを自ノードに配備する。これにより、制御部70は、受信した処理インスタンスを実行することができる。
次に、GWノード22の機能構成について説明する。図16は、実施例に係るGWノードの機能構成の一例を示す図である。図16に示すように、GWノード22は、制御部71を有する。制御部71は、センサノード21から送信されたイベントを受信すると、受信したイベントをネットワーク23を介して、サーバノード1へ送信する。また、制御部71は、サーバノード1から送信された処理インスタンスを受信すると、受信した処理インスタンスを自ノードに配備する。これにより、制御部71は、受信した処理インスタンスを実行することができる。
[処理の流れ]
次に、実施例に係るサーバノード1が実行する分散配備処理の流れについて説明する。図17は、実施例に係る分散配備処理の手順を示すフローチャートである。実施例に係る分散配備処理は、例えば、通信部4により送信されたアプリケーション及びアプリケーション定義データを制御部6が受信するたびに、制御部6により実行される。
図17に示すように、登録部6aは、受信したアプリケーションをアプリケーション記憶部5aに登録し、受信したアプリケーション定義データをアプリケーション定義データ記憶部5bに登録する(S101)。
そして、特定部6bは、アプリケーション記憶部5aからアプリケーションを取得するとともに、アプリケーション定義データ記憶部5bからアプリケーション定義データを取得する(S102)。
そして、特定部6bは、取得したアプリケーション定義データの全レコードの中に、「処理変更」の項目に「あり」が登録されたレコードがあるか否かを判定する(S103)。「処理変更」の項目に「あり」が登録されたレコードがあると判定した場合(S103;Yes)には、特定部6bは、次の処理を行う。すなわち、特定部6bは、変更されたモジュールにおいて、処理単位が変更されたか否かを示す情報を取得し、実行される処理の内容が変更されたか否かを示す情報を取得する。そして、特定部6bは、処理単位が変更されたことを示す情報「あり」を取得し、かつ、実行される処理の内容が変更されたことを示す情報「あり」を取得したか否かを判定する(S104)。処理単位が変更されたことを示す情報「あり」を取得し、かつ、実行される処理の内容が変更されたことを示す情報「あり」を取得したと判定した場合(S104;Yes)には、特定部6bは、次の処理を行う。すなわち、特定部6bは、変更されたモジュール、及び、変更されたモジュールより後に実行されるモジュールを再配備の対象のモジュールとして特定し(S105)、後述するS110に進む。
処理単位が変更されたことを示す情報「あり」を取得していないか、または、実行される処理の内容が変更されたことを示す情報「あり」を取得していないと判定した場合(S104;No)には、特定部6bは、次の処理を行う。すなわち、特定部6bは、処理単位が変更されていないことを示す情報「なし」を取得し、かつ、実行される処理の内容が変更されたことを示す情報「あり」を取得したか否かを判定する(S106)。
処理単位が変更されていないことを示す情報「なし」を取得し、かつ、実行される処理の内容が変更されたことを示す情報「あり」を取得したと判定した場合(S106;Yes)には、特定部6bは、次の処理を行う。すなわち、特定部6bは、変更されたモジュールより後に実行されるモジュールを再配備の対象のモジュールとして特定し(S107)、後述するS110に進む。
処理単位が変更されていないことを示す情報「なし」を取得していなか、または、実行される処理の内容が変更されたことを示す情報「あり」を取得していないと判定した場合(S106;No)には、特定部6bは、次の処理を行う。すなわち、特定部6bは、処理単位が変更されたことを示す情報「あり」を取得し、かつ、実行される処理の内容が変更されていないことを示す情報「なし」を取得したか否かを判定する(S108)。
処理単位が変更されたことを示す情報「あり」を取得し、かつ、実行される処理の内容が変更されていないことを示す情報「なし」を取得したと判定した場合(S108;Yes)には、特定部6bは、次の処理を行う。すなわち、特定部6bは、変更されたモジュールを再配備の対象のモジュールとして特定し(S109)、後述するS110に進む。一方、処理単位が変更されたことを示す情報「あり」を取得していないか、または、実行される処理の内容が変更されていないことを示す情報「なし」を取得していないと判定した場合(S108;No)には、分散配備処理を終了する。
S110では、生成部6cは、特定されたモジュールを、下位ノードのうちイベントが流れる方向の最下流側に位置するノードに配備した上で、アプリケーションに含まれる複数のモジュールを実行させる。そして、生成部6cは、特定されたモジュールの入出力データを表すログを解析することにより、特定されたモジュールを分割する分割数を算出する。ここで、モジュールの入力データの一例としては、モジュールに入力されるイベントが挙げられ、モジュールの出力データの一例としては、モジュールによって加工されたイベントが挙げられる。そして、生成部6cは、特定されたモジュールについて分割数分の処理インスタンスを生成する。そして、生成部6cは、アプリケーションに含まれる複数のモジュールのそれぞれの処理インスタンスの接続関係を示すインスタンスフローを生成する。
そして、配備部6dは、生成部6cにより生成されたインスタンスフローを用いて処理インスタンスの配備先のノードを決定し、決定された配備先のノードに、処理インスタンスを配備し(S111)、分散配備処理を終了する。
一方、取得したアプリケーション定義データの全レコードの中に、「処理変更」の項目に「あり」が登録されたレコードがないと判定した場合(S103;No)には、生成部6cは、取得したアプリケーションに含まれる全てのモジュールを、いずれかの下位ノードに仮に配備した上で、アプリケーションに含まれる複数のモジュールを実行させる。そして、生成部6cは、全てのモジュールの入出力データを表すログを解析することにより、全てのモジュールのそれぞれを分割する分割数を算出する。そして、生成部6cは、全てのモジュールのそれぞれについて分割数分の処理インスタンスを生成する。そして、生成部6cは、アプリケーションに含まれる全てのモジュールのそれぞれの処理インスタンスの接続関係を示すインスタンスフローを生成する(S112)。
そして、配備部6dは、生成部6cにより生成されたインスタンスフローを用いて処理インスタンスの配備先のノードを決定し、決定された配備先のノードに、処理インスタンスを配備し(S113)、分散配備処理を終了する。
上述したように、本実施例に係るサーバノード1によれば、簡易に処理インスタンスを配備先のノードに配備することができる。
さて、これまで開示の装置に関する実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。
例えば、実施例において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともできる。また、実施例において説明した各処理のうち、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。
また、各種の負荷や使用状況などに応じて、実施例において説明した各処理の各ステップでの処理を任意に細かくわけたり、あるいはまとめたりすることができる。また、ステップを省略することもできる。
また、各種の負荷や使用状況などに応じて、実施例において説明した各処理の各ステップでの処理の順番を変更できる。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的状態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
[分散配備プログラム]
また、上記の実施例で説明したサーバノード1の各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することもできる。そこで、以下では、図18を用いて、上記の実施例で説明したサーバノード1と同様の機能を有する分散配備プログラムを実行するコンピュータの一例を説明する。図18は、分散配備プログラムを実行するコンピュータを示す図である。
図18に示すように、コンピュータ300は、CPU310、ROM320、HDD(Hard Disk Drive)330、RAM340を有する。これら各機器310〜340は、バス350を介して接続されている。
ROM320には、OS(Operating System)などの基本プログラムが記憶されている。また、HDD330には、登録部6aと、特定部6bと、生成部6cと、配備部6dと同様の機能を発揮する分散配備プログラム330aが予め記憶される。
そして、CPU310が、分散配備プログラム330aをHDD330から読み出して実行する。
なお、上記した分散配備プログラム330aについては、必ずしも最初からHDD330に記憶させておく必要はない。
例えば、コンピュータ300に挿入されるフレキシブルディスク(FD)、CD−ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に分散配備プログラム330aを記憶させておく。そして、コンピュータ300がこれらから分散配備プログラム330aを読み出して実行するようにしてもよい。
さらには、公衆回線、インターネット、LAN、WANなどを介してコンピュータ300に接続される「他のコンピュータ(またはサーバ)」などに分散配備プログラム330aを記憶させておく。そして、コンピュータ300がこれらから分散配備プログラム330aを読み出して実行するようにしてもよい。