(57)【要約】【課題】装置を効率的に遠隔制御できるようにする。【解決手段】情報処理装置１０は、選択手段１３と依頼手段１４とを有する。選択手段１３は、制御対象装置６〜８と複数の制御装置３〜５それぞれとの間の通信速度に基づいて、複数の制御装置３〜５の中から、制御対象装置６〜８を制御する制御装置を選択する。依頼手段１４は、選択した該制御装置に該制御対象装置の制御を依頼する。【選択図】図１
2015007876.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
制御対象装置と複数の制御装置それぞれとの間の通信速度に基づいて、前記複数の制御装置の中から、該制御対象装置を制御する制御装置を選択し、
選択した該制御装置に該制御対象装置の制御を依頼する、
処理を実行させるプログラム。
【請求項２】
前記コンピュータに、さらに、
前記複数の制御装置それぞれから、前記制御対象装置との間の通信速度の情報を収集する処理を実行させることを特徴とする請求項１記載のプログラム。
【請求項３】
制御装置の選択では、複数の制御対象装置を制御する複数の処理の実行手順が定義された定義情報に基づいて、前記複数の処理それぞれについて、処理に従って制御対象装置を制御する制御装置を選択し、
制御の依頼では、前記定義情報に示された処理順で、前記複数の処理それぞれについて選択された制御装置に、処理の実行を依頼する、
ことを特徴とする請求項１または２に記載のプログラム。
【請求項４】
前記コンピュータに、さらに、
前記複数の処理のうち、同じ制御装置が選択された、処理順が連続する複数の処理を同じグループにグループ化する処理を実行させ、
制御の依頼では、同じグループに含まれるすべての処理について共通に選択された制御装置に、該グループに含まれるすべての処理の実行をまとめて依頼する、
ことを特徴とする請求項１乃至３のいずれかに記載のプログラム。
【請求項５】
前記定義情報には、順番に実行する複数の処理を含む処理列が複数あり、該複数の処理列を並行して実行することが定義されており、
処理のグループ化では、異なる処理列の処理は別のグループにグループ化する、
ことを特徴とする請求項４記載のプログラム。
【請求項６】
前記定義情報には、順番に実行する複数の処理を含む処理列が複数あり、条件分岐により該複数の処理列のうちの１つの処理列を実行することが定義されており、
処理のグループ化では、処理列内の処理のうち、処理順が早い方から１以上の処理が、条件分岐直前の処理と同じ制御装置が選択された場合、該１以上の処理を、条件分岐直前の処理と同じグループに含める、
ことを特徴とする請求項４または５に記載のプログラム。
【請求項７】
前記コンピュータに、さらに、
処理順となった処理の依頼時に、該処理について選択された制御装置と通信できない場合、該制御装置を選択対象から除外して、前記処理順となった処理以降の処理について、制御装置を再選択し、
前記処理順となった処理以降の処理について再選択された制御装置に、処理の実行を依頼する、
処理を実行させることを特徴とする請求項３乃至６のいずれかに記載のプログラム。
【請求項８】
制御の依頼では、前記制御対象装置との間の通信速度が最も速い制御装置が該制御対象装置を制御した場合に通信に要する時間よりも、前記コンピュータが該制御対象装置を制御した場合に通信に要する時間の方が短い場合、制御装置に制御を依頼せずに、前記コンピュータに該制御対象装置を制御させる、
ことを特徴とする請求項１乃至７のいずれかに記載のプログラム。
【請求項９】
コンピュータが、
制御対象装置と複数の制御装置それぞれとの間の通信速度に基づいて、前記複数の制御装置の中から、該制御対象装置を制御する制御装置を選択し、
選択した該制御装置に該制御対象装置の制御を依頼する、
制御依頼方法。
【請求項１０】
制御対象装置と複数の制御装置それぞれとの間の通信速度に基づいて、前記複数の制御装置の中から、該制御対象装置を制御する制御装置を選択する選択手段と、
選択した該制御装置に該制御対象装置の制御を依頼する依頼手段と、
を有する情報処理装置。
【請求項１１】
複数の制御対象装置と、
前記複数の制御対象装置の少なくとも１つにネットワークを介して接続されており、依頼に応じて接続された制御対象装置を制御する複数の制御装置と、
前記複数の制御装置それぞれにネットワークを介して接続されており、前記複数の制御対象装置のうちの特定の制御対象装置と前記複数の制御装置それぞれとの間の通信速度に基づいて、前記複数の制御装置の中から、該制御対象装置を制御する制御装置を選択し、選択した該制御装置に該制御対象装置の制御を依頼する情報処理装置と、
を有するシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御対象装置の制御を制御装置に依頼する制御依頼方法、情報処理装置、システム、およびプログラムに関する。
【背景技術】
【０００２】
企業内のＩＣＴ（Information and Communication Technology）システムやデータセンターでは、運用管理作業の軽減化のために運用管理の自動化ソフトウェアを利用してサーバの電源管理などの処理が自動化されている。以下、運用管理の対象となるサーバを、管理対象サーバと呼ぶ。また自動化ソフトウェアに基づいて運用管理を行うサーバを、以下、管理サーバと呼ぶ。例えば管理サーバは、ワークフローに定義された手順で管理対象サーバを遠隔で制御することで、システム全体の運用管理を行う。
【０００３】
近年のコンピュータシステムの大規模化に伴い、管理対象サーバは増加する傾向にある。また管理サーバは、複数のワークフローを同時多重で実行する場合がある。大量の管理対象サーバを管理する管理サーバが、ワークフローを同時多重で実行すると、管理サーバの負荷が増大し、管理対象サーバの制御の遅延が発生する。すると、例えば、急な計画停電などで大量の管理対象サーバを短時間で停止する場合において、一部の管理対象サーバについて、停止操作完了が停電時間に間に合わないような事態が起こり得る。
【０００４】
管理サーバの負荷増大を抑制する技術として、例えば、複数のサーバのそれぞれに配備された１つ以上の各種ソフトウェアコンポーネントを順次呼び出して処理を実行する技術がある。この技術では、それぞれのサーバに１つのソフトウェアコンポーネントの実行を依頼したと仮定して、ソフトウェアコンポーネント群全体の処理量の見積もりが行われる。そして、見積もった処理量に基づいて、１つのソフトウェアコンポーネントの配備された複数のサーバ内のいずれか１つのサーバが依頼先として決定される。また、システム全体の処理効率を向上させるため、計算機のネットワーク上での距離を考慮してタスクの割当てを行う計算機システムもある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００７−２５７１６３号公報
【特許文献２】特開２００５−３１０１２０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし従来の技術では、複数のサーバの中から管理対象サーバを制御するサーバを決定する際に、制御するサーバと制御対象となる管理対象サーバとの間の通信性能について考慮されていない。そのため、管理対象サーバとの間の通信速度が遅いサーバに、その管理対象サーバを制御する処理が割り当てられる場合があり、管理対象サーバの運用管理の自動化における、処理の効率化が十分ではない。
【０００７】
なお上記の例では、制御対象を管理対象サーバとしているが、ネットワークに接続されたサーバ以外の装置が制御対象となる場合もある。そしてサーバ以外の装置が制御される場合でも、処理の効率化が十分でないのは同様である。
【０００８】
１つの側面では、本件の目的は、装置を効率的に制御できるようにすることである。
【課題を解決するための手段】
【０００９】
１つの案では、コンピュータに、制御対象装置と複数の制御装置それぞれとの間の通信速度に基づいて、前記複数の制御装置の中から、該制御対象装置を制御する制御装置を選択し、選択した該制御装置に該制御対象装置の制御を依頼する、処理を実行させるプログラムが提供される。
【発明の効果】
【００１０】
１態様によれば、装置を効率的に制御することができる。
【図面の簡単な説明】
【００１１】
【図１】第１の実施の形態に係るシステムの構成例を示す図である。
【図２】第２の実施の形態のシステム構成例を示す図である。
【図３】管理サーバのハードウェアの一構成例を示す図である。
【図４】管理サーバと実行サーバとの機能を示すブロック図である。
【図５】プロセス定義の定義内容の一例を示す図である。
【図６】構成情報更新処理の手順の一例を示すフローチャートである。
【図７】ＣＭＤＢのデータ構造の一例を示す図である。
【図８】自動化フロー実行処理の手順の一例を示すフローチャートである。
【図９】プロセス定義解析処理の手順の一例を示すフローチャートである。
【図１０】ノード・実行サーバ管理テーブルの一例を示す図である。
【図１１】自動化フローの第１の例を示す図である。
【図１２】自動化フローの第２の例を示す図である。
【図１３】自動化フローの第３の例を示す図である。
【図１４】自動化フローの第４の例を示す図である。
【図１５】グルーピング処理の手順の一例を示すフローチャートである。
【図１６】運用操作部品ノードのグルーピング処理の手順の一例を示すフローチャートである。
【図１７】並行処理分岐時のグルーピング処理の手順の一例を示すフローチャートである。
【図１８】条件分岐時のグルーピング処理の手順の一例を示すフローチャートである。
【図１９】グループ管理テーブルのデータ構造の一例を示す図である。
【図２０】グルーピングの第１の例を示す図である。
【図２１】グルーピングの第２の例を示す図である。
【図２２】グルーピングの第３の例を示す図である。
【図２３】グルーピングの第４の例を示す図である。
【図２４】性能解析処理の手順の一例を示すフローチャートである。
【図２５】通信性能管理テーブルのデータ構造の一例を示す図である。
【図２６】実行サーバ決定処理の手順の一例を示すフローチャートである。
【図２７】処理実行サーバ管理テーブルのデータ構造の一例を示す図である。
【図２８】自動化フロー実行の処理手順の一例を示すフローチャートである。
【図２９】実行サーバにおける自動化フロー実行処理の手順の一例を示すフローチャートである。
【図３０】１００ＭＢｙｔｅのファイルを転送するのに要する時間を示す図である。
【図３１】グルーピングした場合の通信回数の一例を示す図である。
【図３２】処理時間の短縮効果を示す図である。
【発明を実施するための形態】
【００１２】
以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第１の実施の形態〕
図１は、第１の実施の形態に係るシステムの構成例を示す図である。第１の実施の形態では、情報処理装置１０と複数の制御装置３〜５とが、ネットワーク１を介して接続されている。また複数の制御装置３〜５と複数の制御対象装置６〜８とが、ネットワーク２を介して接続されている。複数の制御装置３〜５には、それぞれの識別子を「Ａ」、「Ｂ」、「Ｃ」とする。また複数の制御対象装置６〜８には、それぞれの識別子を「ａ」、「ｂ」、「ｃ」とする。
【００１３】
制御装置３〜５は、情報処理装置１０からの依頼に従って、制御対象装置６〜８を制御することができる。例えば制御装置３が制御対象装置６の機能を停止させたり、起動させたりすることができる。情報処理装置１０は、制御対象装置６〜８の制御処理を、複数の制御装置３〜５に分散して実行させる。
【００１４】
ここで、制御装置３〜５それぞれと制御対象装置６〜８それぞれとの間のネットワーク２上の距離や通信帯域は様々である。すると、制御対象装置を制御する処理をどの制御装置に実行させるかにより、処理効率が変わってくる。そこで、第１の実施の形態では、ある制御対象装置に対する制御処理は、その制御対象装置との間の通信速度ができるだけ速い制御装置に実行させるようにする。
【００１５】
情報処理装置１０は、いずれかの制御対象装置の制御を伴う複数の処理を、複数の制御装置３〜５に分散して実行させる。そして情報処理装置１０は、効率よく制御できる制御装置に処理を依頼するため、記憶手段１１、収集手段１２、選択手段１３、および依頼手段１４を有している。
【００１６】
記憶手段１１は、複数の制御対象装置６〜８を制御する複数の処理の実行手順が定義された定義情報１１ａを記憶している。例えば定義情報１１ａには、３つの処理が定義されている。最初の処理（＃１）は、識別子「ａ」の制御対象装置６を制御する処理である。２番目の処理（＃２）は、識別子「ｂ」の制御対象装置７を制御する処理である。３番目の処理（＃３）は、識別子「ｃ」の制御対象装置８を制御する処理である。
【００１７】
収集手段１２は、複数の制御装置３〜４それぞれから、制御対象装置６〜８それぞれとの間の通信速度の情報を収集する。そして収集手段１２は、収集した情報をメモリなどの記憶装置に保持する。
【００１８】
選択手段１３は、複数の制御対象装置６〜８それぞれと複数の制御装置３〜５それぞれとの間の通信速度に基づいて、複数の制御装置３〜５の中から、複数の制御対象装置６〜８それぞれを制御する制御装置を選択する。例えば選択手段１３は、制御対象装置との間の通信速度が最も速い制御装置を、その制御対象装置を制御する制御装置として選択する。なお、選択手段１３は、記憶手段１１に格納された定義情報１１ａに基づいて、定義情報１１ａに定義された複数の処理それぞれについて、処理に従って制御対象装置を制御する制御装置を選択することもできる。
【００１９】
依頼手段１４は、選択手段１３が選択した制御装置に制御対象装置の制御を依頼する。例えば依頼手段１４は、定義情報１１ａに示された処理順で、複数の処理それぞれについて選択された制御装置に、処理の実行を依頼する。
【００２０】
このようなシステムにより、複数の制御対象装置６〜８を制御する処理を、効率的に制御装置３〜５に分散して実行させることができる。例えば定義情報１１ａの最初の処理（＃１）は、制御対象装置６を制御する処理である。収集手段１２が収集した情報を参照すると、複数の制御装置３〜５のうち、制御対象装置６との間の通信速度が最も速いのは、識別子「Ａ」の制御装置３である。そこで選択手段１３により、最初の処理（＃１）の処理を依頼する依頼先の制御装置として、制御装置３が選択される。すると依頼手段１４により、最初の処理（＃１）の実行依頼が、制御装置３に送信される。制御装置３は、処理の実行依頼に応じて、制御対象装置６を制御する。同様に、他の処理（＃２，＃３）についても、選択手段１３により、処理対象装置７，８それぞれとの間で最も通信速度が速い制御装置４，５が、処理の依頼先として選択される。そして、依頼手段１４により、２番目の処理（＃２）の実行依頼が制御装置４に送信され、３番目の処理（＃３）の実行依頼が制御装置５に送信される。これにより、定義情報１１ａに示された一連の処理が、複数の制御装置３〜５によって効率的に分散実行される。
【００２１】
なお、情報処理装置１０は、複数の処理のうち、同じ制御装置が選択された、処理順が連続する複数の処理を同じグループにグループ化することもできる。その場合、依頼手段１４は、制御の依頼では、同じグループに含まれるすべての処理について共通に選択された制御装置に、グループに含まれるすべての処理の実行をまとめて依頼する。これにより、情報処理装置１０と制御装置との間の通信回数を削減し、処理を効率化することができる。
【００２２】
なお定義情報には、順番に実行する複数の処理を含む処理列が複数あり、該複数の処理列を並行して実行することが定義されている場合がある。並行して実行する複数の処理は、別々の制御装置に依頼した方が効率よく分散処理できる。そこで、並行して実行する処理を含む定義情報に基づいて処理をグループ化する場合、情報処理装置１０は、例えば、異なる処理列の処理は別のグループにグループ化する。これにより、並行して実行する処理について、グループごとに別々の制御装置に処理の実行を依頼し、効率的な分散処理が可能となる。
【００２３】
さらに定義情報には、順番に実行する複数の処理を含む処理列が複数あり、条件分岐により複数の処理列のうちの１つの処理列を実行することが定義されている場合もある。この場合、情報処理装置１０は、例えば、処理列内の処理のうち、処理順が早い方から１以上の処理が、条件分岐直前の処理と同じ制御装置が選択されているかどうかを判断する。そして情報処理装置１０は、条件分岐直前の処理と同じ制御装置が選択されている、分岐後の処理列の先頭から１以上の処理を、条件分岐直前の処理と同じグループに含める。これにより、より多くの処理を１つのグループにまとめ、情報処理装置と制御装置との間の通信回数を、さらに削減することができる。
【００２４】
ところで、制御装置に処理を依頼する時点で、依頼先の制御装置が障害などで正常に動作していない場合があり得る。そこで選択手段１３は、例えば、処理順となった処理の依頼時に、その処理について選択された制御装置と通信できない場合、前記処理順となった処理以降の処理について、制御装置を再選択してもよい。再選択の差異には、通信できなかった制御装置は、選択対象から除外される。この場合、依頼手段１４は、未処理の各処理については、再選択された制御装置に、その処理の実行を依頼する。これにより、定義情報に基づいた処理の実行中に一部の制御装置が故障しても、即座に効率的な処理が可能な依頼先を再選択し、正常に動作している制御装置で処理を継続することができる。
【００２５】
なお、制御対象装置６〜８を制御する処理を、情報処理装置１０自身が実施してもよい。例えば、制御対象装置との間の通信速度が最も速い制御装置が該制御対象装置を制御した場合に通信に要する時間よりも、情報処理装置１０がその制御対象装置を制御した場合に通信に要する時間の方が短い場合があり得る。このような場合、制御装置に制御を依頼せずに、情報処理装置１０が制御対象装置を制御することができる。これにより、より処理効率をさらに高めることができる。
【００２６】
なお、情報処理装置１０は、例えばプロセッサやメモリなどを有するコンピュータである。そして収集手段１２、選択手段１３、および依頼手段１４は、例えば情報処理装置１０が有するプロセッサにより実現することができる。その場合、収集手段１２、選択手段１３、および依頼手段１４が実行する処理手順を記述したプログラムが提供される。そのプログラムをプロセッサに実行させることで、情報処理装置１０の機能が実現される。また、記憶手段１１は、例えば情報処理装置１０が有するメモリにより実現することができる。
【００２７】
また、図１に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。
〔第２の実施の形態〕
第２の実施の形態は、クラウドコンピューティングが一般的となった現状（クラウド時代）における運用管理を想定したものである。
【００２８】
これまでの運用管理では、管理サーバは、同一ネットワーク内や、同一データセンター内の管理対象サーバの運用管理を実施している。そのため、管理対象サーバ数もさほど大量ではない。
【００２９】
しかし、クラウド時代になり、ＩＣＴシステムは目的にあわせてパブリッククラウド、プライベートクラウド、オンプレミスなど、様々な環境を組み合わせて構成される。また、データセンターのグローバル化が進み、管理対象サーバは世界中に存在する。しかも、システム全体の運用の共通化や運用の効率化も進められている。そのため管理対象サーバ数が増加し、１台の管理サーバで管理しきれなくなってきている。例えば、１台の管理サーバで多数の管理対象サーバに対して処理を行うと、管理サーバの負荷が増大し、すべての管理対象サーバへの処理品質を確保することが困難となる。
【００３０】
そこで、ワークフローに基づいて管理サーバが行う運用管理を、複数の実行サーバで代行させることが考えられる。なお、クラウドコンピューティングでは、多くのネットワークを経由して管理対象サーバが接続される。ワークフローによる運用管理の自動化を実施した場合、ワークフロー内で操作する管理対象サーバへのネットワーク上の距離や経由するネットワーク性能により、各管理対象サーバの操作に対するレスポンスにばらつきが発生する。すると、運用管理全体として安定的な処理性能を確保できない。そのため、管理サーバが行う処理の一部を実行サーバに代行させるとしても、その実行サーバと管理対象サーバとの物理的な距離を考慮して、処理を実行される実行サーバを決定するのが適切である。
【００３１】
すなわち、ワークフロー上には、複数のタスク（処理単位）が存在し、タスクに従って、異なる拠点に点在する様々な管理対象サーバの操作が実施される。このとき、ワークフロー全体を実行サーバに分散しても、実行サーバと管理対象サーバ間の通信性能が貧弱で、管理対象サーバの操作が長期化する可能性がある。例えば、管理対象サーバからログファイルを取得する操作がある。このような操作は、通信性能によって処理性能が左右され、例えば実行サーバのプロセッサやメモリの負荷状態だけで処理を分散しても、十分な性能が確保できない。
【００３２】
そこで第２の実施の形態では、管理対象サーバの操作に関する個々の処理を、管理サーバと管理対象サーバ、管理サーバと実行サーバ、および実行サーバと管理対象サーバ、それぞれのネットワーク上の距離をトータルで考慮して、処理を実行するサーバを選択する。
【００３３】
図２は、第２の実施の形態のシステム構成例を示す図である。管理サーバ１００は、ネットワーク３０を介して実行サーバ２００，２００ａ，２００ｂ，２００ｃ，・・・や管理対象サーバ４１，４１ａ，・・・に接続されている。実行サーバ２００ａは、ネットワーク３１を介して管理対象サーバ４２，４２ａ，・・・に接続されている。実行サーバ２００ｂは、ネットワーク３２を介して管理対象サーバ４３，４３ａ，・・・に接続されている。実行サーバ２００ｃは、ネットワーク３３を介して管理対象サーバ４４，４４ａ，・・・に接続されている。
【００３４】
管理サーバ１００は、自動化フローに基づく運用管理を制御するコンピュータである。自動化フローは、ワークフロー形式で処理順が表現されたソフトウェアである。自動化フローでは、処理単位ごとがノードで表されており、ノードごとに異なるサーバで実行可能である。以下、自動化フローを定義する情報を、プロセス定義と呼ぶ。またノードに対応する処理が記述されたプログラムを、運用操作部品と呼ぶ。
【００３５】
管理サーバ１００は、自動化フロー全体を効率的に実行できるように、その自動化フローに含まれるノードの処理を実行するサーバを決定する。ノードの処理を実行するサーバは、管理サーバ１００または実行サーバ２００，２００ａ，２００ｂ，２００ｃ，・・・である。
【００３６】
実行サーバ２００，２００ａ，２００ｂ，２００ｃ，・・・は、自動化フローのノードのうち、管理サーバ１００から指定されたノードの処理を実行するコンピュータである。実行サーバ２００，２００ａ，２００ｂ，２００ｃ，・・・は、ノードに対応するプログラムに従って、管理対象サーバをネットワーク経由で遠隔操作する。
【００３７】
管理対象サーバ４１，４１ａ，・・・，４２，４２ａ，・・・，４３，４３ａ，・・・，４４，４４ａ，・・・は、自動化フローの管理対象となる装置である。
図２に示すようなシステムにおける管理サーバ１００は、プロセス定義から、操作対象の管理対象サーバを特定し、管理対象サーバに対する通信速度を考慮した上で、ワークフローの処理をネットワーク上の距離が近いサーバで実行するように制御する。また管理サーバ１００は、できるだけ長距離の通信を行わないようにするために、自動化フロー内のノードをグルーピングし、グループ単位で処理を実行するように制御する。
【００３８】
なお、管理サーバ１００は、図１に示した情報処理装置１０の一例である。実行サーバ２００，２００ａ，２００ｂ，２００ｃ，・・・は、図１に示した制御装置３〜５の一例である。管理対象サーバ４１，４１ａ，・・・，４２，４２ａ，・・・，４３，４３ａ，・・・，４４，４４ａ，・・・は、図１に示した制御対象装置６〜８の一例である。さらに、第２の実施の形態における管理対象サーバの「操作」とは、第１の実施の形態に示した制御対象装置の「制御」の一例である。
【００３９】
図３は、管理サーバのハードウェアの一構成例を示す図である。管理サーバ１００は、プロセッサ１０１によって装置全体が制御されている。プロセッサ１０１には、バス１０９を介してメモリ１０２と複数の周辺機器が接続されている。プロセッサ１０１は、マルチプロセッサであってもよい。プロセッサ１０１は、例えばＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、またはＤＳＰ（Digital Signal Processor）である。プロセッサ１０１の機能の少なくとも一部を、ＡＳＩＣ（Application Specific Integrated Circuit）、ＰＬＤ（Programmable Logic Device）などの電子回路で実現してもよい。
【００４０】
メモリ１０２は、管理サーバ１００の主記憶装置として使用される。メモリ１０２には、プロセッサ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ１０２には、プロセッサ１０１による処理に必要な各種データが格納される。メモリ１０２としては、例えばＲＡＭ（Random Access Memory）などの揮発性の半導体記憶装置が使用される。
【００４１】
バス１０９に接続されている周辺機器としては、ＨＤＤ（Hard Disk Drive）１０３、グラフィック処理装置１０４、入力インタフェース１０５、光学ドライブ装置１０６、機器接続インタフェース１０７およびネットワークインタフェース１０８がある。
【００４２】
ＨＤＤ１０３は、内蔵したディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。ＨＤＤ１０３は、管理サーバ１００の補助記憶装置として使用される。ＨＤＤ１０３には、ＯＳのプログラム、アプリケーションプログラム、および各種データが格納される。なお、補助記憶装置としては、フラッシュメモリなどの不揮発性の半導体記憶装置を使用することもできる。
【００４３】
グラフィック処理装置１０４には、モニタ２１が接続されている。グラフィック処理装置１０４は、プロセッサ１０１からの命令に従って、画像をモニタ２１の画面に表示させる。モニタ２１としては、ＣＲＴ（Cathode Ray Tube）を用いた表示装置や液晶表示装置などがある。
【００４４】
入力インタフェース１０５には、キーボード２２とマウス２３とが接続されている。入力インタフェース１０５は、キーボード２２やマウス２３から送られてくる信号をプロセッサ１０１に送信する。なお、マウス２３は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【００４５】
光学ドライブ装置１０６は、レーザ光などを利用して、光ディスク２４に記録されたデータの読み取りを行う。光ディスク２４は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク２４には、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。
【００４６】
機器接続インタフェース１０７は、管理サーバ１００に周辺機器を接続するための通信インタフェースである。例えば機器接続インタフェース１０７には、メモリ装置２５やメモリリーダライタ２６を接続することができる。メモリ装置２５は、機器接続インタフェース１０７との通信機能を搭載した記録媒体である。メモリリーダライタ２６は、メモリカード２７へのデータの書き込み、またはメモリカード２７からのデータの読み出しを行う装置である。メモリカード２７は、カード型の記録媒体である。
【００４７】
ネットワークインタフェース１０８は、ネットワーク３０に接続されている。ネットワークインタフェース１０８は、ネットワーク３０を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
【００４８】
以上のようなハードウェア構成によって、第２の実施の形態の処理機能を実現することができる。なお実行サーバ２００，２００ａ，２００ｂ，２００ｃ，・・・や管理対象サーバ４１，４１ａ，・・・，４２，４２ａ，・・・，４３，４３ａ，・・・，４４，４４ａ，・・・も管理サーバ１００と同様のハードウェアで実現できる。さらに、第１の実施の形態に示した情報処理装置１０も、図３に示した管理サーバ１００と同様のハードウェアにより実現することができる。
【００４９】
管理サーバ１００や実行サーバ２００，２００ａ，２００ｂ，２００ｃ，・・・は、例えばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第２の実施の形態の処理機能を実現する。管理サーバ１００または実行サーバ２００，２００ａ，２００ｂ，２００ｃ，・・・に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、管理サーバ１００に実行させるプログラムをＨＤＤ１０３に格納しておくことができる。プロセッサ１０１は、ＨＤＤ１０３内のプログラムの少なくとも一部をメモリ１０２にロードし、プログラムを実行する。また管理サーバ１００に実行させるプログラムを、光ディスク２４、メモリ装置２５、メモリカード２７などの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ１０１からの制御により、ＨＤＤ１０３にインストールされた後、実行可能となる。またプロセッサ１０１が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
【００５０】
次に、管理サーバ１００と実行サーバ２００，２００ａ，２００ｂ，２００ｃ，・・・との機能について説明する。
図４は、管理サーバと実行サーバとの機能を示すブロック図である。管理サーバ１００は、構成情報収集部１１０、ＣＭＤＢ（Configuration Management DataBase）１２０、プロセス定義記憶部１３０、解析部１４０、実行制御部１５０、およびフロー実行部１６０を有する。
【００５１】
構成情報収集部１１０は、管理サーバ１００と実行サーバまたは管理対象サーバと通信して、システム全体の構成に関する情報（構成情報）を収集する。構成情報収集部１１０は、収集した構成情報をＣＭＤＢ１２０に格納する。
【００５２】
ＣＭＤＢ１２０は、システムの構成情報を管理するデータベースである。例えばメモリ１０２またはＨＤＤ１０３の記憶領域の一部が、ＣＭＤＢ１２０として使用される。
プロセス定義記憶部１３０は、プロセス定義を記憶する。例えばメモリ１０２またはＨＤＤ１０３の記憶領域の一部がプロセス定義記憶部１３０として使用される。
【００５３】
解析部１４０は、プロセス定義を解析して、ノードのグルーピング情報を作成する。そして解析部１４０は、各ノード・グループの処理を実行するサーバに応じた通信性能を算出する。
【００５４】
実行制御部１５０は、解析部１４０が算出した通信性能情報を元に、処理を実行するサーバを決定する。
フロー実行部１６０は、実行制御部１５０からの指示に従って、自動化フロー内のノードの処理を実行する。
【００５５】
実行サーバ２００は、構成情報収集部２１０、プロセス定義記憶部２２０、およびフロー実行部２３０を有する。なお図４には、実行サーバ２００が有する機能を示しているが、他の実行サーバ２００ａ，２００ｂ，２００ｃ，・・・も同様の機能を有している。
【００５６】
構成情報収集部２１０は、実行サーバ２００から通信できる管理対象サーバの構成情報を収集し、管理サーバ１００に送信する。
プロセス定義記憶部２２０は、プロセス定義を記憶する。例えば実行サーバ２００のメモリまたはＨＤＤの記憶領域の一部が、プロセス定義記憶部２２０として使用される。
【００５７】
フロー実行部２３０は、管理サーバ１００の実行制御部１５０からの指示に従って、自動化フロー内のノードの処理を実行する。
図４に示したように、実行サーバ２００，２００ａ，２００ｂ，２００ｃ，・・・だけでなく、管理サーバ１００もフロー実行部１６０を有し、自動化フロー内のノードの処理を実行することができる。従って管理サーバ１００は、実行サーバとして機能することができる。
【００５８】
なお、プロセス定義記憶部１３０は、図１に示した記憶手段１１の一例である。構成情報収集部１１０は、図１に示した収集手段１２の一例である。解析部１４０は、図１に示した選択手段１３の一例である。実行制御部１５０は、図１に示した依頼手段１４の一例である。また図４に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。
【００５９】
次に、プロセス定義の定義内容について説明する。
図５は、プロセス定義の定義内容の一例を示す図である。プロセス定義５０には、自動化フロー５１が定義されている。自動化フロー５１は、システムの運用管理に関する処理手順を示すワークフローである。自動化フロー５１には、複数のノード５１ａ〜５１ｇが定義されている。ノード５１ａは開始ノードであり、処理の開始位置を示している。ノード５１ｇは、終了ノードであり、処理の終了位置を示している。開始ノードと終了ノードとの間には、処理の実行単位であるノード５１ｂ〜５１ｆが接続されている。ノード５１ｂ〜５１ｆには、処理内容を記述したプログラムや、その処理で操作対象とする管理対象サーバの識別子などが対応付けられている。なおノードに示される処理のなかには、管理対象サーバの操作を伴わないものがある。そのようなノードには、管理対象サーバの識別子は対応付けられていない。
【００６０】
自動化フロー５１に基づいて処理を実行する場合、開始ノードから処理が開始され、接続関係を辿り、到達したノードに対応する処理が実行される。そして終了ノードに到達すると、処理完了となる。
【００６１】
このようなプロセス定義に示された自動化フローを実行する場合、まず、ＣＭＤＢ１２０内の構成情報が更新される。
図６は、構成情報更新処理の手順の一例を示すフローチャートである。
【００６２】
［ステップＳ１０１］管理サーバ１００の構成情報収集部１１０は、実行サーバの構成情報を収集する。
例えば構成情報収集部１１０は、各実行サーバの構成情報収集部から各管理対象サーバの構成情報を収集し、管理サーバ上のＣＭＤＢ１２０に格納する。収集された構成情報には、管理対象サーバ、実行サーバのホスト名、ＩＰ（Internet Protocol）アドレスと共に、各実行サーバと各管理対象サーバ間の通信速度情報（bps）が含まれる。
【００６３】
通信速度は、実行サーバの構成情報収集部により、所定のコマンド（例えば「ping」）などを使用して計測される。例えば各実行サーバは、同じネットワークに接続された管理対象サーバとの間の通信速度に加え、複数のネットワークを跨がって接続される管理対象サーバとの間の通信速度も計測する。通信速度の計測にpingを使用した場合、以下のようにして通信速度が算出される。
＜手順１＞
実行サーバから管理対象サーバに以下のようなコマンドを発行する。
> ping （管理対象サーバのＩＰアドレス） -l 65000
65000は、転送するコマンドに付与するデータサイズである。このコマンドにより、pingを発行してから応答を受信するまでの時間が計測される。
＜手順２＞
手順１の処理を各５回くりかえし、結果の平均値を算出する。
＜手順３＞
以下の計算を実施した結果を速度情報とする。
65000×２／（手順１で得られた値の平均値）＝速度情報（bps）
［ステップＳ１０２］構成情報収集部１１０は、管理サーバ１００と、各管理対象サーバとの間の通信速度を計測する。例えば構成情報収集部１１０は、ステップＳ１０１でのＣＭＤＢ１２０への構成情報格納を契機に、管理サーバ１００と管理対象サーバ間の通信速度（bps）を測定し、ＣＭＤＢ１２０に速度情報を格納する。通信速度の計測方法は、実行サーバによる通信速度の計測方法と同じである。そして構成情報収集部１１０は、管理対象サーバに対応付けて、管理サーバ１００および各実行サーバそれぞれと、その管理対象サーバとの間の通則速度を、ＣＭＤＢ１２０に格納する。この際、構成情報収集部１１０は、管理対象サーバごとに、通信速度が速い順に、管理サーバおよび実行サーバを並べ変える。
【００６４】
また構成情報収集部１１０は、管理サーバ１００と各実行サーバとの間の通信速度も計測し、ＣＭＤＢ１２０に格納する。
このような構成情報更新処理は、運用に合わせ、例えば１日１回など定期的に実施される。これにより、ＣＭＤＢ１２０内の情報を最新化し、情報の精度を上げることができる。また、管理対象サーバやネットワーク機器の追加、変更があった場合にも更新情報更新処理を実施することで、情報を最新化してもよい。
【００６５】
次にＣＭＤＢ１２０のデータ構造について説明する。
図７は、ＣＭＤＢのデータ構造の一例を示す図である。ＣＭＤＢ１２０には、要素名（Element Name）、親要素（Parent Element）、要素記述（Element Description）、コンポーネント名（Component Name）、コンポーネントタイプ（Component Type）、コンポーネント記述（Component Description）、データタイプ（Data Type）、データ数（# of）などが定義されている。
【００６６】
要素名は、格納されている要素の名称である。
親要素は、その要素の親要素の名称である。親要素として他の要素が設定されている要素は、その親要素の子要素である。子要素には、親要素に関する情報が設定される。なお親要素として、自分自身の要素名が設定されている場合、その要素が最上位の要素である。
【００６７】
要素記述は、該当要素を説明する文字列である。例えば、サーバノード情報、ネットワーク性能、性能データといった種別が、要素記述に設定される。
コンポーネント名は、要素に含まれる情報（コンポーネント）の名称である。１つの要素に、複数のコンポーネントを含めることができる。コンポーネントとしては、子の要素も含まれる。
【００６８】
コンポーネントタイプは、コンポーネントの種別である。種別として、例えば、対応する要素の属性情報（Attribute）、また子の要素（Element）が設定される。
コンポーネント記述は、コンポーネントを説明する文字列である。コンポーネント記述には、例えば、ユニークな識別子、ホスト名。代表ＩＰアドレス、サーバ間性能情報といった文字列が設定される。
【００６９】
データタイプは、コンポーネントのデータの型である。例えば文字列型のデータであれば、データタイプは「string」である。
データ数は、登録されるデータの数である。
【００７０】
このように管理された各要素のコンポーネントとして、ＣＭＤＢ１２０内にデータが格納される。ＣＭＤＢ１２０を参照すれば、例えば実行サーバのホスト名、ＩＰアドレス、通信性能などを把握できる。なおＣＭＤＢ１２０内の情報は、例えばＸＭＬ（Extensible Markup Language ）形式で保持できる。
【００７１】
次に、管理サーバ１００における自動化フロー実行処理について説明する。
図８は、自動化フロー実行処理の手順の一例を示すフローチャートである。
［ステップＳ１１１］解析部１４０は、プロセス定義を解析する。例えば解析部１４０は、プロセス定義記憶部１３０から実行するプロセス定義を読み出す。そして解析部１４０は、呼び出したプロセス定義の内容と、ＣＭＤＢ１２０に格納された各サーバ間の通信速度に応じて、自動化フロー内のノードをグルーピングする。なおプロセス定義解析処理の詳細は後述する（図９参照）。
【００７２】
［ステップＳ１１２］解析部１４０は、自動化フローの各ノードの処理を負荷分散で処理させた場合の性能解析を行う。この処理の詳細は後述する（図２４参照）。
［ステップＳ１１３］実行制御部１５０は、性能がより高くなるように、自動化フローの各ノードの処理を実行するサーバ（管理サーバまたた実行サーバ）を決定する。この際、同じグループに属するノードは、同じサーバに実行させるようにする。この処理の詳細は後述する（図２６参照）。
【００７３】
［ステップＳ１１４］実行制御部１５０は、自動化フローに定義された処理を実行する。この処理の詳細は後述する（図２８参照）。
このようにして、自動化フローが実行される。以下、図８に示す各ステップの処理を詳細に説明する。
【００７４】
＜プロセス定義解析処理＞
図９は、プロセス定義解析処理の手順の一例を示すフローチャートである。
［ステップＳ１２１］解析部１４０は、プロセス定義記憶部１３０からプロセス定義を取得し、各ノードで操作する管理対象サーバを特定する。例えばプロセス定義では、各ノードに関連付けて、そのノードで操作する管理対象サーバのＩＰアドレスまたはホスト名が設定されている。解析部１４０は、ノードごとのＩＰアドレスまたはホスト名を取得して、各ノードで操作する管理対象サーバを認識する。
【００７５】
［ステップＳ１２２］解析部１４０は、操作対象の管理対象サーバを通信可能な実行サーバのリストを取得する。例えば解析部１４０は、ステップＳ１２１で取得したＩＰアドレスまたはホスト名を検索キーとして、ＣＭＤＢ１２０から管理対象サーバを検索する。そして解析部１４０は、該当する管理対象サーバの構成情報をＣＭＤＢ１２０から取得する。管理対象サーバの構成情報には、その管理対象サーバを遠隔操作可能な実行サーバのリストや、その実行サーバと管理対象サーバとの間の通信速度が含まれる。
【００７６】
［ステップＳ１２３］解析部１４０は、ステップＳ１２１で特定された管理対象サーバを遠隔操作可能な実行サーバのうち、最も通信性能のよい実行サーバを、その管理対象サーバに関連付ける。例えば解析部１４０は、ステップＳ１２２で取得したリストに含まれる実行サーバのうちの起動している各実行サーバと管理対象サーバとの間の通信速度を比較する。そして解析部１４０は、最も通信速度が速い実行サーバを、管理対象サーバに関連付けてノード・実行サーバ管理テーブルに登録する。
【００７７】
［ステップＳ１２４］解析部１４０は、ノードのグルーピングを行う。この処理の詳細は後述する（図１５参照）。
このようにして、プロセス定義が解析される。なおステップＳ１２３では、以下のようなノード・実行サーバ管理テーブルが生成される。
【００７８】
図１０は、ノード・実行サーバ管理テーブルの一例を示す図である。ノード・実行サーバ管理テーブル１４１には、ノード名、実行サーバ、およびノードの種類の欄が設けられている。
【００７９】
ノード名の欄には、自動化フローに含まれるノードの名称が設定される。実行サーバの欄には、各ノードの処理を実行する実行サーバの名称が設定される。なおノードには、管理対象サーバの操作を行うものと、管理対象サーバの操作を伴わないものとがある。管理対象サーバの操作を伴わないノードとしては、例えば、実行結果として得られたデータの加工処理を行うノードがある。管理対象サーバの操作を伴わないノードは、どのサーバで実行してもよい。そのため、管理対象サーバの操作を伴わないノードの実行サーバの欄には、サーバを問わないことを示す情報（例えばアスタリスク）が設定される。
【００８０】
ノードの種類の欄には、ノードの種類が設定される。ノードの種類には、開始（start）、終了（end）、運用操作部品、複数条件分岐などがある。開始ノードは、自動化フローの開始点となるノードである。終了ノードは、自動化フローの終点となるノードである。運用操作部品は、サーバに何らかの処理を実行させるノードである。複数条件分岐は、条件分岐の判断処理を行う運用操作部品である。
【００８１】
このようなノード・実行サーバ管理テーブル１４１を参照して、ノードのグルーピングが行われる。例えばクラウドコンピューティングのようなネットワーク上の距離が遠い環境では、通信の回数を極力減らすことが重要である。そのため解析部１４０は、同一のサーバで実行可能なノードをグルーピングし、グループ単位でノードの処理の実行を依頼することで、管理ノードと実行サーバとの間の通信回数を低減する。
【００８２】
例えば解析部１４０は、プロセス定義に記載された自動化フローの実行順序の情報から、同一のサーバで連続して実行するノードをノード群としてグルーピングする。詳細には、以下のような手順でグルーピングが行われる。なお以下の処理では、ノードの実行順に名前を付け、ｎ番目（ｎは１以上の整数）のノードをノード（ｎ）、ｎ＋１番目ノードをノード（ｎ＋１）と呼ぶ。
【００８３】
図１１は、自動化フローの第１の例を示す図である。図１１に示す自動化フロー５２は、運用操作部品が連続する場合の例であり、複数のノード５２ａ，４２ｂ，５２ｃ，５２ｄが直列に接続されている。図中、左側のノードから順に、処理が実行されるものとする。
【００８４】
このような自動化フロー５２では、ノード（ｎ）とノード（ｎ＋１）とのそれぞれに関連付けられた実行サーバが比較される。実行サーバが一致する場合、または、どちらが実行サーバを問わない場合、ノード（ｎ）とノード（ｎ＋１）とが同一グループにグルーピングされる。そのグループには、ノード（ｎ）とノード（ｎ＋１）とに関連付けられた実行サーバが関連付けられる。
【００８５】
例えばノード（ｎ）の情報が既にグループ管理テーブルに存在する場合は、ノード（ｎ）と同じグループにノード（ｎ＋１）が追加される。またノード（ｎ）の情報が既にグループ管理テーブルに存在しない場合は、ノード（ｎ）とノード（ｎ＋１）とを含む新しいグループが生成され、グループ管理テーブルに追加される。
【００８６】
図１２は、自動化フローの第２の例を示す図である。図１２に示す自動化フロー５３では、ノード５３ａから並行処理分岐ノード５３ｂを介して、複数のルートに分岐している。各ルートには、複数のノードが含まれており、一連の処理列が定義されている。図１２の例では、一方のルートではノード５３ｃ，５３ｄが実行され、他方のルートではノード５３ｅ，５３ｆが実行される。これらの２つのルートは、並行して実行される。
【００８７】
このような自動化フロー５３の場合、ノード（ｎ）が属するグループを判定する際に、ノード（ｎ＋１）の情報が取得される。図１２の例では、複数のノード５３ｃ，５３ｅが、ノード（ｎ＋１）に該当する。この場合、ルートごとに、個別に、運用操作部品が連続する場合と同様の論理に従ってグルーピングが行われる。例えばノード５３ｄに関連付けられた実行サーバが、ノード５３ｃに関連付けられた実行サーバと共通であれば、ノード５３ｃとノード５３ｄとを含むグループが生成される。同様に、ノード５３ｆに関連付けられた実行サーバが、ノード５３ｅに関連付けられた実行サーバと共通であれば、ノード５３ｅとノード５３ｆとを含むグループが生成される。
【００８８】
図１３は、自動化フローの第３の例を示す図である。図１３に示す自動化フロー５４では、２つのルートで並列に処理されていた複数のノード５４ａ，５４ｂを、同期ノード５４ｃで同期させ、ノード５４ｄ，５４ｅを実行するものである。ここで同期させるとは、複数の系統で並行して実行されていた処理がすべて完了するのを待って、次の処理の実行を開始することである。
【００８９】
グループを判断する対象となったノード（ｎ）が同期ノード５４ｃであれば、同期ノード５４ｃはどのグループに含められない。すなわち、ノード（ｎ−１）に該当する複数のノード５４ａ，５４ｂそれぞれと同期ノード５４ｃとが別グループであれば、複数のノード５４ａ，５４ｂそれぞれを実行したサーバは、実行完了を管理サーバ１００に通知することになる。そこで例えば同期ノード５４ｃを管理サーバ１００が実行することにより、複数のルートで並行して実行された処理がすべて完了したかの判断が可能となる。
【００９０】
図１４は、自動化フローの第４の例を示す図である。図１４に示す自動化フロー５５では、ノード５５ａの次に条件分岐ノード５５ｂを介して複数のルートに処理が分岐している。１つ目のルートではノード５５ｃ，５５ｄが実行され、２つ目のルートではノード５５ｅ，５５ｆが実行され、３つ目のルートではノード５５ｇ，５５ｈが実行され、４つ目のルートではノード５５ｉ，５５ｊが実行される。条件分岐ノード５５ｂでは、複数の分岐先のルートのうちの１つが選択され、選択されたルートのノードのみが実行される。
【００９１】
このような自動化フロー５５では、分岐前のノード５５ａの処理結果によって分岐先が変わる。そのため、以下のようなグルーピングが行われる。
まずノード（ｎ−１）の情報とノード（ｎ＋１）の情報とが、ノード・実行サーバ管理テーブル１４１から取得される。なお分岐後のノード（ｎ＋１）に該当するノードは複数存在する。
【００９２】
ここで、ノード（ｎ−１）が既にグループ管理テーブルに存在する場合、ノード（ｎ−１）を含むグループに関連付けられた実行サーバの情報が取得され、ノード（ｎ＋１）に関連付けられた実行サーバの情報と比較される。実行サーバが一致している場合は、ノード（ｎ−１）が存在するグループに対して、ノード（ｎ）、ノード（ｎ＋１）が追加される。一致しない場合は、グルーピングせずに、ノード（ｎ＋１）から新たにグルーピングの判断が行われる。
【００９３】
ノード（ｎ−１）がグループ管理テーブルに存在しない場合、ノード（ｎ−１）に関連付けられた実行サーバの情報が取得され、ノード（ｎ＋１）に関連付けられた実行サーバの情報と比較される。実行サーバが一致している場合は、ノード（ｎ−１）、ノード（ｎ）、ノード（ｎ＋１）が新規グループとしてグループ管理テーブルに追加される。一致しない場合は、グルーピングせずに、ｎ＋１番目のノードから新たにグルーピングの判断が行われる。
【００９４】
分岐後の各ルートでは、運用操作部品が連続する場合と同様に、判断対象のノードが、直前のノードと同じサーバで実行されるのであれば、判断対象のノードが、直前のノードと同じグループに追加される。
【００９５】
このようなグルーピングの処理手順は以下の通りである。
図１５は、グルーピング処理の手順の一例を示すフローチャートである。
［ステップＳ１３１］解析部１４０は、ｎに１を設定し、自動化フローの先頭のノードから解析を開始する。
【００９６】
［ステップＳ１３２］解析部１４０は、ノード・実行サーバ管理テーブル１４１から、ノード（ｎ）の情報を取得する。
［ステップＳ１３３］解析部１４０は、ノード（ｎ）の種類が開始ノードか否かを判断する。開始ノードであれば処理がステップＳ１４２に進められる。開始ノードでなければ、処理がステップＳ１３４に進められる。
【００９７】
［ステップＳ１３４］解析部１４０は、ノード（ｎ）の種類が同期ノードか否かを判断する。同期ノードは、複数に分岐して並行実行された処理を同期させて、１系統に戻すノードである。同期ノードであれば、処理がステップＳ１４２に進められる。同期ノードでなければ、処理がステップＳ１３５に進められる。
【００９８】
［ステップＳ１３５］解析部１４０は、ノード（ｎ）の種類が運用操作部品か否かを判断する。運用操作部品であれば、処理がステップＳ１３６に進められる。運用操作部品でなければ、処理がステップＳ１３７に進められる。
【００９９】
［ステップＳ１３６］ノード（ｎ）の種類が運用操作部品であれば、解析部１４０は、運用操作部品ノードのグルーピング処理を実行する。この処理の詳細は後述する（図１６参照）。その後、処理がステップＳ１３２に進められる。
【０１００】
［ステップＳ１３７］解析部１４０は、ノード（ｎ）の種類が並行処理分岐ノードか否かを判断する。並行処理分岐ノードであれば、処理がステップＳ１３８に進められる。並行処理分岐ノードでなければ、処理がステップＳ１３９に進められる。
【０１０１】
［ステップＳ１３８］ノード（ｎ）が並行処理分岐ノードであれば、解析部１４０は、並行処理分岐時のグルーピング処理を実行する。この処理の詳細は後述する（図１７参照）。その後、処理がステップＳ１３２に進められる。
【０１０２】
［ステップＳ１３９］解析部１４０は、ノード（ｎ）の種類が条件分岐ノードか否かを判断する。条件分岐ノードであれば、処理がステップＳ１４０に進められる。条件分岐ノードでなければ、処理がステップＳ１４１に進められる。
【０１０３】
［ステップＳ１４０］ノード（ｎ）が条件分岐ノードであれば、解析部１４０は、条件分岐時のグルーピング処理を実行する。この処理の詳細は後述する（図１８参照）。その後、処理がステップＳ１３２に進められる。
【０１０４】
［ステップＳ１４１］解析部１４０は、ノード（ｎ）の種類が終了ノードか否かを判断する。終了ノードであれば、グルーピング処理が終了する。終了ノードでなければ、処理がステップＳ１４２に進められる。
【０１０５】
［ステップＳ１４２］解析部１４０は、ｎに１を加算し、処理をステップＳ１３２に進める。
このようにして、ノードの種類に応じたグルーピング処理が行われる。以下、種類ごとのグルーピング処理について詳細に説明する。
【０１０６】
まず運用管理部品ノードに関するグルーピング処理について説明する。
図１６は、運用操作部品ノードのグルーピング処理の手順の一例を示すフローチャートである。
【０１０７】
［ステップＳ１５１］解析部１４０は、ノード・実行サーバ管理テーブル１４１から、ノード（ｎ＋１）の情報を取得する。
［ステップＳ１５２］解析部１４０は、ノード（ｎ）に関連付けられた実行サーバと、ノード（ｎ＋１）に関連付けられた実行サーバとを比較する。実行サーバが一致した場合、処理がステップＳ１５３に進められる。一致しない場合、処理がステップＳ１５６に進められる。なお、比較するノードの少なくとも一方について、実行サーバを問わない場合、実行サーバが一致するものと判定される。
【０１０８】
［ステップＳ１５３］解析部１４０は、実行サーバが一致する場合、グループ管理テーブルにノード（ｎ）が属するグループが存在するか否かを判断する。該当するグループが存在すれば、処理がステップＳ１５４に進められる。該当するグループが存在しなければ、処理がステップＳ１５５に進められる。
【０１０９】
［ステップＳ１５４］解析部１４０は、グループ管理テーブル内のノード（ｎ）と同じグループに、ノード（ｎ＋１）を追加する。その後、処理がステップＳ１５６に進められる。
【０１１０】
なおノード（ｎ）が複数のグループに含まれる場合もある。例えば途中で条件分岐ノードがある場合、分岐した複数のルートが合流した後のノードは、複数のグループに含まれることがあり得る（図２３参照）。ノード（ｎ）が複数のグループに含まれる場合は、ステップＳ１５４の処理では、ノード（ｎ＋１）も複数のグループに追加される。
【０１１１】
［ステップＳ１５５］解析部１４０は、ノード（ｎ）とノード（ｎ＋１）とを含むグループを作成し、グループ管理テーブルに追加する。その後、処理がステップＳ１５６に進められる。
【０１１２】
［ステップＳ１５６］解析部１４０は、ｎに１を加算し、運用管理部品ノードのグルーピング処理を終了する。
次に、並行処理分岐時のグルーピング処理について説明する。
【０１１３】
図１７は、並行処理分岐時のグルーピング処理の手順の一例を示すフローチャートである。
［ステップＳ１６１］解析部１４０は、ｍ（１以上の整数）にｎ＋１を設定する。
【０１１４】
［ステップＳ１６２］解析部１４０は、ｎにｍの値を設定する。
［ステップＳ１６３］解析部１４０は、ｎ番目の複数のノードそれぞれから開始される複数のルートのうち、未処理のルートを選択する。例えば解析部１４０は、並行して実行する区間に含まれるノード数が少ないルートから順に選択する。そして解析部１４０は、選択したルートのノード（ｎ）の情報を、ノード・実行サーバ管理テーブル１４１から取得する。
【０１１５】
［ステップＳ１６４］解析部１４０は、選択したルート内のノード（ｎ）について、運用操作部品のグルーピング処理と同様の処理により、グルーピングを行う。
［ステップＳ１６５］解析部１４０は、同一ルートの最後のノードの処理が完了したか否かを判断する。同一ルート内の最後のノードの処理が完了した場合、処理がステップＳ１６６に進められる。最後のノードの処理が完了していなければ、処理がステップＳ１６４に進められる。
【０１１６】
［ステップＳ１６６］解析部１４０は、並行処理を行う複数のルートのなかに、未処理のルートがあるか否かを判断する。未処理のルートがあれば、処理がステップＳ１６２に進められる。未処理のルートがなければ、並行処理分岐ノードのグルーピング処理が終了する。
【０１１７】
次に、条件分岐時のグルーピング処理について説明する。
図１８は、条件分岐時のグルーピング処理の手順の一例を示すフローチャートである。
［ステップＳ１７１］解析部１４０は、現在のｎの値を、ｍに設定する。
【０１１８】
［ステップＳ１７２］解析部１４０は、ノード・実行サーバ管理テーブル１４１から、ノード（ｎ−１）の情報を取得する。すなわち解析部１４０は、条件分岐ノードの直前のノードの情報を取得する。以後、このノードをノードＷとする。
【０１１９】
［ステップＳ１７３］解析部１４０は、条件分岐後の複数のルートのうち、未処理のルートを１つ選択する。例えば解析部１４０は、ノード数が少ないルートから順に選択する。
【０１２０】
［ステップＳ１７４］解析部１４０は、ノード・実行サーバ管理テーブル１４１から、選択したルートにおけるノード（ｎ＋１）の情報を取得する。なお、各ルートのノードには、分岐したルートの合流点のノード（図２３のノード５９ｍ）とその次のノード（図２３のノード５９ｎ）とを含めるものとする。これにより、合流点のノードとその次のノードは、複数のグループに含まれる可能性が生まれる。同じルート内にノード（ｎ＋１）に該当するノードが存在しない場合、ノード（ｎ＋１）の情報はなし（Ｎｕｌｌ）となる。
【０１２１】
［ステップＳ１７５］解析部１４０は、グループ管理テーブルに、ノードＷを含むグループがあるか否かを判断する。該当するグループが存在すれば、処理がステップＳ１７６に進められる。該当するグループがなければ、処理がステップＳ１８０に進められる。
【０１２２】
［ステップＳ１７６］ノードＷを含むグループがある場合、ノードＷを含むグループに関連付けられた実行サーバの情報を、グループ管理テーブルから取得する。
［ステップＳ１７７］解析部１４０は、ノードＷを含むグループに関連付けられた実行サーバが、ノード（ｎ＋１）に関連付けられた実行サーバと同じか否かを判断する。実行サーバが一致すれば、処理がステップＳ１７８に進められる。実行サーバが異なれば、処理がステップＳ１８４に進められる。なお、比較するグループとノードとの少なくとも一方について、実行サーバを問わない場合、実行サーバが一致するものと判定される。またステップＳ１７４でノード（ｎ＋１）の情報が取得できなかった場合は、実行サーバは一致しないと判定される。
【０１２３】
［ステップＳ１７８］解析部１４０は、ノードＷと同じグループに、ノード（ｎ＋１）を追加する。
［ステップＳ１７９］解析部１４０は、ｎに１を加算し、処理をステップＳ１７４に進める。
【０１２４】
［ステップＳ１８０］ノードＷを含むグループがない場合、解析部１４０は、ノードＷに関連付けられた実行サーバの情報を、グループ管理テーブルから取得する。
［ステップＳ１８１］解析部１４０は、ノードＷに関連付けられた実行サーバが、ノード（ｎ＋１）に関連付けられた実行サーバと同じか否かを判断する。実行サーバが一致すれば、処理がステップＳ１８２に進められる。実行サーバが異なれば、処理がステップＳ１８４に進められる。なお、比較するノードの少なくとも一方について、実行サーバを問わない場合、実行サーバが一致するものと判定される。またステップＳ１７４でノード（ｎ＋１）の情報が取得できなかった場合は、サーバは一致しないと判定される。
【０１２５】
［ステップＳ１８２］解析部１４０は、ノードＷとノード（ｎ＋１）とを含むグループを作成する。
［ステップＳ１８３］解析部１４０は、ｎに１を加算し、処理をステップＳ１７４に進める。
【０１２６】
［ステップＳ１８４］ノードＷを含むグループまたはノードＷに関連付けられた実行サーバと、ノード（ｎ＋１）に関連付けられた実行サーバとが異なる場合、解析部１４０は、ｎに１を加算し、処理をステップＳ１８５に進める。
【０１２７】
［ステップＳ１８５］解析部１８５は、選択したルートの処理が終了したかどうかを判断する。例えば、ノード（ｎ）が、選択したルートの最後のノードであれば、そのルートの処理が完了したと判定される。選択したルートの処理が完了した場合、処理がステップＳ１８７に進められる。選択したルートの処理が完了していなければ、処理がステップＳ１８６に進められる。
【０１２８】
［ステップＳ１８６］解析部１４０は、選択したルート内のノードに関して、運用部品ノードのグルーピング処理を行う（図１６参照）。その後、処理がステップＳ１８５に進められる。
【０１２９】
［ステップＳ１８７］解析部１４０は、条件分岐ノードで分岐した後のすべてのルートについて処理が完了したか否かを判定する。すべてのルートの処理が完了した場合、条件分岐時のグルーピング処理が終了する。未処理のルータがある場合、処理がステップＳ１８８に進められる。
【０１３０】
［ステップＳ１８８］解析部１４０は、ｍの値をｎに設定する。これにより、再度、条件分岐ノードがノード（ｎ）となる。その後、処理がステップＳ１７３に進められる。
以上のようにして、自動化フロー内のノードのグルーピングが行われる。そしてグルーピングの結果が、グループ管理テーブルに設定される。なおグループ管理テーブルは、例えばメモリ１０２内に格納される。
【０１３１】
図１９は、グループ管理テーブルのデータ構造の一例を示す図である。グループ管理テーブル１４２には、グループＩＤ、ノード名、および実行サーバの欄が設けられている。
グループＩＤの欄には、グループを一意に識別する識別子（グループＩＤ）が設定される。ノード名の欄には、グループに含まれる２以上のノードの名称が設定される。実行サーバの欄には、グループに含まれるノードに関連付けられた実行サーバの名称が設定される。
【０１３２】
次に、グルーピング結果の例を、図２０〜図２３を参照して説明する。なお図２０〜図２３では、各ノード内に、そのノードに割り当てられた実行サーバの名称を示している。
図２０は、グルーピングの第１の例を示す図である。図２０に示す自動化フロー５６には、開始ノード５６ａから終了ノード５６ｇまでに、１つずつ順番に処理が実行される５つのノード５６ｂ〜５６ｆが含まれている。ノード５６ｂには管理対象サーバ４５ａを操作する処理が定義されており、ノード５６ｂの処理を実行するのは、実行サーバ「Ａ」である。ノード５６ｃには管理対象サーバ４５ｂを操作する処理が定義されており、ノード５６ｃの処理を実行するのは、実行サーバ「Ａ」である。ノード５６ｄには管理対象サーバ４５ｃを操作する処理が定義されており、ノード５６ｄの処理を実行するのは、実行サーバ「Ｂ」である。ノード５６ｅには管理対象サーバ４５ｄを操作する処理が定義されており、ノード５６ｅの処理を実行するのは、実行サーバ「Ｃ」である。ノード５６ｆには管理対象サーバ４５ｅを操作する処理が定義されており、ノード５６ｆの処理を実行するのは、実行サーバ「Ｃ」である。
【０１３３】
この場合、運用操作部品ノードのグルーピング処理（図１６参照）によってグルーピングが行われる。すなわち、共通のサーバで処理が実行されるノードが連続している場合、それらのノードが同じグループに纏められる。図２０の例では、ノード５６ｂとノード５６ｃとを含むグループ「Ｇ１」と、ノード５６ｅとノード５６ｆとを含むグループ「Ｇ２」が生成されている。
【０１３４】
図２１は、グルーピングの第２の例を示す図である。図２１に示す自動化フロー５７には、開始ノード５７ａから終了ノード５７ｇまでに、１つずつ順番に処理が実行される５つのノード５７ｂ〜５７ｆが含まれている。ノード５７ｂには管理対象サーバ４６ａを操作する処理が定義されており、ノード５７ｂの処理を実行するのは、実行サーバ「Ａ」である。ノード５７ｃには管理対象サーバ４６ｂを操作する処理が定義されており、ノード５７ｃの処理を実行するのは、実行サーバ「Ａ」である。ノード５７ｄには管理対象サーバの操作を含まない処理が定義されており、ノード５７ｄの処理を実行するのは、実行サーバ「Ａ」である。ノード５７ｅには管理対象サーバ４６ｃを操作する処理が定義されており、ノード５７ｅの処理を実行するのは、実行サーバ「Ｂ」である。ノード５７ｆには管理対象サーバ４６ｄを操作する処理が定義されており、ノード５７ｆの処理を実行するのは、実行サーバ「Ｂ」である。
【０１３５】
この場合、運用操作部品ノードのグルーピング処理（図１６参照）によってグルーピングが行われる。すなわち、管理対象サーバを操作しない処理について、直前のノードと同じグループに含められる。図２１の例では、ノード５７ｂ〜５７ｄを含むグループ「Ｇ３」と、ノード５７ｅとノード５７ｆとを含むグループ「Ｇ４」が生成されている。
【０１３６】
なお図２１の例では、管理対象サーバを操作しない処理に関するノード５７ｄは、前のノード５７ｃと同じグループに含まれているが、ノード５７ｄを、次のノード５７ｅと同じグループに入れてもよい。
【０１３７】
図２２は、グルーピングの第３の例を示す図である。図２２には、並列処理分岐ノードを含む自動化フロー５８の例が示されている。
自動化フロー５８では、開始ノード５８ａの次に並列処理分岐ノード５８ｂが設けられている。並列処理分岐ノード５８ｂからは、ノード５８ｄ〜５８ｆを処理するルートと、ノード５８ｇ〜５８ｉを処理するルートとの２つのルートに処理が分かれる。２つのルートの処理は、並行して実行される。２つに分かれたルートは同期ノード５８ｊで合流し、最後のノード５８ｋの処理が実行される。ノード５８ｋの次は、終了ノード５８ｌである。なお、図２２では、各ノードの処理で操作する管理対象サーバを省略しているが、ノード５８ｄ〜５８ｉ，５８ｋの処理は、管理対象サーバを操作する処理である。
【０１３８】
ノード５８ｄ〜５８ｆそれぞれの処理を実行するのは、実行サーバ「Ａ」である。ノード５８ｇ，５８ｈそれぞれの処理を実行するのは、実行サーバ「Ｂ」である。ノード５８ｉ，５８ｋそれぞれの処理を実行するのは、実行サーバ「Ｃ」である。
【０１３９】
このように途中で並行処理分岐をするような自動化フロー５８の場合、図１８に示した手順に従いグルーピングが行われる。すなわち分岐前後および、合流前後ではグルーピングは行われず、分岐後の個別のルート処理内でグルーピングが行われる。図２２の例では、分岐後のノード５８ｄ〜５８ｆの処理は共に実行サーバ「Ａ」で実行されるため、１つのグループ「Ｇ５」にグルーピングされている。またノード５８ｇ，５８ｈの処理は共に実行サーバ「Ｂ」で実行されるため、１つのグループ「Ｇ６」にグルーピングされている。ノード５８ｉとノード５８ｋとの処理は、処理順としては連続しており、双方とも実行サーバ「Ｃ」で実行されるが、同期ノード５８ｊを挟むため、グルーピングされていない。
【０１４０】
図２３は、グルーピングの第４の例を示す図である。図２３には、条件分岐ノードを含む自動化フロー５９の例が示されている。
自動化フロー５９では、開始ノード５９ａの次に運用操作部品のノード５９ｂがあり、その次に条件分岐ノード５９ｃが設定されている。条件分岐ノード５９ｃからは、３つのルートが設けられており、条件分岐ノード５９ｃにおける条件判断の結果に基づいて、いずれか１つのルートの処理が実行される。１つ目のルートは、ノード５９ｄ〜５９ｆの処理を実行するルートである。２つ目のルートは、ノード５９ｇ〜５９ｉの処理を実行するルートである。３つ目のルートは、ノード５９ｊ〜５９ｌの処理を実行するルートである。これらのルートは、ノード５９ｍで合流し、ノード５９ｎの処理が実行される。ノード５９ｎの次は、終了ノード５９ｏである。なお、図２３では、各ノードの処理で操作する管理対象サーバを省略しているが、ノード５９ｂ，５９ｄ〜５９ｌ，５９ｎの処理は、管理対象サーバを操作する処理である。
【０１４１】
ノード５９ｂ，５９ｄ〜５９ｇそれぞれの処理を実行するのは、実行サーバ「Ａ」である。ノード５９ｊ，５９ｋそれぞれの処理を実行するのは、実行サーバ「Ｂ」である。ノード５９ｈ，５９ｉ，５９ｌ，５９ｎそれぞれの処理を実行するのは、実行サーバ「Ｃ」である。
【０１４２】
このように途中で条件分岐するような自動化フロー５９の場合、条件分岐の後は、複数のルートがあり、どのルートが動作するかは実行時に分岐ノードに到達するまでわからない。この場合、条件分岐前のノード５９ｂの処理を実行するサーバと、条件分岐後のノード５９ｄ，５９ｇ，５９ｊそれぞれの処理を実行するサーバとが比較され、サーバが一致するノードがまとめてグルーピングされる。
【０１４３】
図２３の例では、１つ目のルートについては、すべてのノード５９ｄ〜５９ｆについて、処理を実行するサーバが、分岐前のノード５９ｂの処理を実行するサーバと一致する。そのため、ノード５９ｂとノード５９ｄ〜５９ｆとは、同じグループ「Ｇ７」に含められている。２つ目のルートでは、ノード５９ｇの処理を実行するサーバは分岐前のノード５９ｂの処理を実行するサーバと一致するが、その次のノード５９ｈの処理を実行するサーバは分岐前のノード５９ｂの処理を実行するサーバと異なる。そこで２つ目のルート内のノード５９ｇ〜５９ｉのうち、ノード５９ｇのみが、ノード５９ｂと同じグループ「Ｇ７」に含められている。３つ目のルートでは、ノード５９ｊの処理を実行するサーバが分岐前のノード５９ｂの処理を実行するサーバと異なる。そのため３つ目のルート内のノード５９ｊ〜５９ｉは、グループ「Ｇ７」に含められていない。なお条件分岐ノード５９ｃは、例えば、分岐前のノード５９ｂと同じグループ「Ｇ７」に含められる。
【０１４４】
２つ目のルートのうち、ノード５９ｈ、５９ｉは、処理を実行するサーバが一致するため、同じグループ「Ｇ８」に含められている。３つ目のルートのうち、ノード５９ｊ、５９ｋは、処理を実行するサーバが一致するため、同じグループ「Ｇ９」に含められている。
【０１４５】
複数のルートが合流した後のノード５９ｎの処理を実行するサーバは、２つ目のルートの最後のノード５９ｉの処理を実行するサーバと一致する。そのためノード５９ｎは、ノード５９ｉと同じグループ「Ｇ８」に含められている。またノード５９ｎの処理を実行するサーバは、３つ目のルートの最後のノード５９ｌの処理を実行するサーバとも一致する。そこで、ノード５９ｌとノード５９ｎとを含むグループ「Ｇ１０」が生成されている。すなわち、ノード５９ｎは、２つのグループに重複してグルーピングされている。
【０１４６】
なお複数のルートの合流部のノード５９ｍは、例えば次のノード５９ｎと同じグループに含められる。
図２３のようにグルーピングされると、実行時の遷移先が、ノード５９ｄ，５９ｇの２つのルートの場合は、管理サーバ１００に処理結果を返す必要がなく、通信回数を削減することができる。
【０１４７】
以上のように、実行するサーバが共通のノードを同じグループにグルーピングすることで、管理サーバと実行サーバとの間の通信回数を減らすことができる。その結果、処理の効率化が図れる。
【０１４８】
＜性能解析処理＞
次に、性能解析処理について詳細に説明する。
図２４は、性能解析処理の手順の一例を示すフローチャートである。
【０１４９】
［ステップＳ２０１］解析部１４０は、自動化フローに含まれる運用操作部品ごとの通信回数を取得する。そして解析部１４０は、取得した通信回数を変数ｉに設定する。
例えば解析部１４０には、運用操作部品の種類ごとに、その運用操作部品の処理に含まれる管理対象サーバとの間の通信回数が定義されている。定義内容は、例えばメモリ１０２またはＨＤＤ１０３内に予め保持されている。解析部１４０は、運用操作部品の種別を判断し、その種別に対応付けて設定された通信回数を、メモリ１０２などから取得する。なお運用操作部品の種類ごとの通信回数は、ユーザが任意に設定することができる。例えば、ユーザが作成した運用操作部品については、その運用操作部品の通信回数をユーザが定義する。
【０１５０】
［ステップＳ２０２］解析部１４０は、自動化フローで操作対象となる各管理対象サーバに管理サーバ１００から通信し、管理サーバ１００が管理対象サーバを操作する場合の通信速度を、ＣＭＤＢ１２０から取得する。ここで、管理サーバが管理対象サーバを操作する場合の通信速度をＳａとする。
【０１５１】
［ステップＳ２０３］解析部１４０は、自動化フローで操作対象となる各管理対象サーバに、各実行サーバから通信してその管理対象サーバを操作する場合の通信速度を、ＣＭＤＢ１２０から取得する。ここで、実行サーバが管理対象サーバを操作する場合の通信速度をＳｂとする。
【０１５２】
［ステップＳ２０４］解析部１４０は、管理サーバと実行サーバとの間の通信速度を、ＣＭＤＢ１２０から取得する。ここで、管理サーバと実行サーバとの間の通信速度をＳｃとする。
【０１５３】
［ステップＳ２０５］解析部１４０は、ノード・グループごとに管理サーバ１００から管理対象サーバを直接操作した場合の通信性能を計算する。この計算は、自動化フローにおいて操作対象となるすべての管理対象サーバについて行われる。通信性能は、例えば以下のような式で計算される。
【０１５４】
・グループに含まれないノードの場合
計算対象のノードで表される運用操作部品の処理パケット長をＸとする。この場合、そのノードの通信性能は以下の式で計算される。
Ｘ／Ｓａ×ｉ    ・・・（１）
式（１）における通信速度Ｓａは、管理サーバと、計算対象のノードの処理で操作する管理対象サーバとの間の通信速度である。
【０１５５】
・複数のノードを含むグループの場合
グループ内のノードの数をｋ（ｋは１以上の整数）として、各ノードで表される運用操作部品の処理パケット長を｛Ｘ１，Ｘ２，・・・，Ｘｋ｝とする。このときグループ内の処理を実行する際の通信性能は、以下の式で計算される。
｛Ｘ１／Ｓａ×ｉ｝＋｛Ｘ２／Ｓａ×ｉ｝＋・・・＋｛Ｘｋ／Ｓａ×ｉ｝  ・・・（２）
式（２）における通信速度Ｓａは、管理サーバと、計算対象のグループの処理で操作する管理対象サーバとの間の通信速度である。
【０１５６】
［ステップＳ２０６］解析部１４０は、管理サーバ１００から実行サーバに自動化フローの制御を移したあとに、実行サーバから管理対象サーバを操作した場合の通信性能を計算する。この計算は、管理サーバと管理対象サーバとのすべての組み合わせについて行われる。通信性能は、例えば以下のような式で計算される。
【０１５７】
・グループに含まれないノードの場合
実行サーバへのフロー実行要求パケットのパケット長をＹ、実行サーバから管理サーバへのフロー実行完了通知パケットのパケット長をＺとする。この場合、そのノードの通信性能は以下の式で計算される。
Ｙ／Ｓｃ＋Ｘ／Ｓｂ×ｉ＋Ｚ／Ｓｃ  ・・・（３）
式（３）における通信速度Ｓｂは、計算対象のノードに関連付けられた実行サーバと、そのノードの処理で操作する管理対象サーバとの間の通信速度である。式（３）における通信速度Ｓｃは、管理サーバと、計算対象のノードに関連付けられた実行サーバとの間の通信速度である。
【０１５８】
・複数のノードを含むグループの場合
｛Ｙ／Ｓｃ｝＋｛Ｘ１／Ｓｂ×ｉ｝＋｛Ｘ２／Ｓｂ×ｉ｝＋・・・＋｛Ｘｎ／Ｓｂ×ｉ｝＋｛Ｚ／Ｓｃ｝  ・・・（４）
式（４）における通信速度Ｓｂは、計算対象のグループに関連付けられた実行サーバと、そのグループの処理で操作する管理対象サーバとの間の通信速度である。式（４）における通信速度Ｓｃは、管理サーバと、計算対象のグループに関連付けられた実行サーバとの間の通信速度である。
【０１５９】
なお実行サーバに制御を移す場合において、グループが構成されている場合は、そのグループ内のノード群それぞれの処理を実行する実行サーバは同じである。そのため、実行サーバへのフロー実行要求とフロー実行完了通知とは、それぞれ１度ずつで済む。
【０１６０】
なお、各運用操作部品の処理パケット、実行サーバへのフロー実行要求パケット、実行サーバから管理サーバへのフロー実行完了通知パケットそれぞれのパケット長については、例えば予め計測した値が設定される。また運用に伴って実施した操作の際にパケット長を計測し、各パケット長の値を更新することもできる。運用に伴ってパケット長を動的に更新することで、精度を上げることが可能である。
【０１６１】
以上のようにして、通信性能が計算される。上記に示した計算式では、通信性能がよいほど、計算結果の値が小さくなる。計算された通信性能は、例えば通信性能管理テーブルとしてメモリ１０２内に格納される。
【０１６２】
図２５は、通信性能管理テーブルのデータ構造の一例を示す図である。通信性能管理テーブル１４３には、ノード・グループ、実行サーバからの性能、管理サーバからの性能の欄が設けられている。ノード・グループの欄には、ノードまたはグループの名称が設定される。実行サーバからの性能の欄には、実行サーバから管理対象サーバを操作する場合の通信性能が設定される。管理サーバからの性能の欄には、管理サーバから管理対象サーバを操作する場合の通信性能が設定される。
【０１６３】
＜実行サーバ決定＞
解析部１４０で通信性能が算出されると、実行制御部１５０は、実行する自動化フローのノードまたはグループそれぞれについて、処理を実行するサーバを決定する。
【０１６４】
図２６は、実行サーバ決定処理の手順の一例を示すフローチャートである。
［ステップＳ３０１］実行制御部１５０は、通信性能管理テーブル１４３を参照し、通信性能を取得する。
【０１６５】
［ステップＳ３０２］実行制御部１５０は、ノードまたはグループごとに、通信性能が高いサーバ（管理サーバ１００または実行サーバ）を、処理を実行するサーバ（処理実行サーバ）に決定する。例えば実行制御部１５０は、ノードまたはグループに対応付けられた実行サーバからの通信性能と、管理サーバ１００からの通信性能とを比較する。実行サーバからの通信性能の方が高ければ（値が小さければ）、そのノードまたはグループに関連付けられた実行サーバを、処理実行サーバに決定する。また管理サーバ１００からの通信性能の方が高ければ（値が小さければ）、管理サーバ１００を、処理実行サーバに決定する。そして実行制御部１５０は、決定内容を、例えば処理実行サーバ管理テーブルとしてメモリ１０２に格納する。
【０１６６】
図２７は、処理実行サーバ管理テーブルのデータ構造の一例を示す図である。処理実行サーバ管理テーブル１４４には、ノード・グループと処理実行サーバとの欄が設けられている。ノード・グループの欄には、実行する自動化フローのノードのうちのグループに含まれないノードの名称と、その自動化フローから生成されたグループの名称とが設定される。処理実行サーバの欄には、ノードまたはグループの処理を実行するサーバの名称が設定される。処理を実行するサーバは、管理サーバまたはいずれかの実行サーバである。実行サーバが処理を実行する場合、その実行サーバの識別子が処理実行サーバの欄に設定される。
【０１６７】
＜自動化フロー実行＞
次に自動化フローの実行処理について説明する。自動化フローの実行処理は、管理サーバ１００の実行制御部１５０による自動化フロー実行処理と、制御の移転を受けた実行サーバでの自動化フロー実行処理とに分かれる。
【０１６８】
図２８は、自動化フロー実行の処理手順の一例を示すフローチャートである。
［ステップＳ４０１］実行制御部１５０は、自動化フローのノードのうちの、次に実行するノードの情報を、プロセス定義記憶部１３０から取得する。
【０１６９】
［ステップＳ４０２］実行制御部１５０は、次に実行するノードが終了ノードか否かを判断する。終了ノードであれば、自動化フロー実行指示の処理が終了する。終了ノードでなければ、処理がステップＳ４０３に進められる。
【０１７０】
［ステップＳ４０３］実行制御部１５０は、処理実行サーバ管理テーブル１４４とグループ管理テーブル１４２を参照し、次に実行するノードの処理実行サーバの情報を取得する。例えば実行制御部１５０は、次に実行するノードがグループに含まれていなければ、処理実行サーバ管理テーブル１４４で対応付けられている管理サーバまたは実行サーバを、処理実行サーバと認識する。また実行制御部１５０は、次に実行するノードがグループに含まれている場合、グループ管理テーブル１４２を参照し、そのノードを含むグループのグループＩＤを認識する。次に実行制御部１５０は、そのグループに対して、処理実行サーバ管理テーブル１４４で対応付けられている管理サーバまたは実行サーバを、処理実行サーバと認識する。
【０１７１】
［ステップＳ４０４］実行制御部１５０は、実行サーバに自動化フローの実行制御を移転するか否かを判断する。例えば実行制御部１５０は、処理実行サーバが実行サーバであれば、実行サーバへ制御を移転するものと判断する。また実行制御部１５０は、処理実行サーバが管理サーバ１００であれば、実行サーバへの制御の移転は行わないものと判断する。制御を移転する場合、処理がステップＳ４０６に進められる。制御を移転しない場合、処理がステップＳ４０５に進められる。
【０１７２】
［ステップＳ４０５］実行制御部１５０は、管理サーバ１００内のフロー実行部１６０に、次に実行するノードの処理を実行させる。なお、次に実行するノードがいずれかのグループに含まれる場合、実行制御部１５０は、そのグループに含まれるすべてのノードの処理を、フロー実行部１６０に実行させる。フロー実行部１６０は、実行制御部１５０からの指示に従って、ノードの処理を実行する。その後、処理がステップＳ４０１に進められる。
【０１７３】
［ステップＳ４０６］実行制御部１５０は、次に実行するノードまたはそのノードを含むグループの処理の実行を、処理実行サーバである実行サーバに依頼する。例えば実行制御部１５０は、自動化フローにおいて、処理を依頼するノードまたはグループの次に、管理サーバ１００に制御を戻す手順を定義したノードを追加する。そして実行制御部１５０は、次に実行するノードから追加したノードまでの処理を、実行サーバに依頼する。
【０１７４】
［ステップＳ４０７］実行制御部１５０は、ステップＳ４０６の処理において、実行サーバに通信が接続できたか否かを判断する。接続できた場合、処理がステップＳ４０８に進められる。接続できなかった場合、処理がステップＳ４１０に進められる。
【０１７５】
［ステップＳ４０８］実行制御部１５０は、実行サーバからの処理の完了通知を待つ。
［ステップＳ４０９］実行制御部１５０は、実行サーバから処理の完了通知を受信する。その後、処理がステップＳ４０１に進められる。
【０１７６】
［ステップＳ４１０］実行サーバに接続できなかった場合、実行制御部１５０は、ステップＳ４０１で取得したノードを開始位置として、図９に示したプロセス定義解析処理を実行する。この際、接続できなかった実行サーバは、起動していないものとして扱われる。これにより、現在起動している実行サーバの情報に基づいて、再度グルーピングが行われる。
【０１７７】
［ステップＳ４１１］実行制御部１５０は、図２４に示した性能解析処理を実行する。この際も、ステップＳ４０６で接続できなかった実行サーバは、性能解析の対象から除外される。
【０１７８】
［ステップＳ４１２］実行制御部１５０は、図２６に示した実行サーバ決定処理を実行する。その後、実行制御部１５０は、前回のステップＳ４０１の処理で取得したノードを、再度、次のノードに指定して、処理をステップＳ４０１に進める。
【０１７９】
このようにして、自動化フローに含まれる各ノードの処理が、効率のよいサーバによって実行される。実行サーバの方が効率よく処理を実行できるのであれば、実行サーバに処理の実行依頼が送信される。実行サーバは、処理の実行依頼に応じて処理を実行する。
【０１８０】
図２９は、実行サーバにおける自動化フロー実行処理の手順の一例を示すフローチャートである。以下、実行サーバ２００に処理の実行依頼が送信された場合における、実行サーバ２００での自動化フロー実行処理について説明する。
【０１８１】
［ステップＳ４２１］フロー実行部２３０は、管理サーバ１００からの処理の実行依頼を受信し、管理サーバに制御を戻す手順が定義されたノードの情報をメモリに保持する。このノードは実行する自動化フロー内に挿入されるノードであり、ノードの情報には挿入位置が定義されている。
【０１８２】
［ステップＳ４２２］フロー実行部２３０は、プロセス定義記憶部２２０から自動化フローを読み出し、次に実行するノードの処理を実行する。
［ステップＳ４２３］フロー実行部２３０は、ステップＳ４２２で１つのノードの処理が実行されると、その次に実行するノードが、管理サーバ１００に制御を戻すノードか否かを判断する。制御を戻すノードであれば、処理がステップＳ４２６に進められる。制御を戻すノードでなければ、処理がステップＳ４２４に進められる。
【０１８３】
［ステップＳ４２４］フロー実行部２３０は、次に実行するノードが、複数のルートの１つを実行する条件分岐ノードか否かを判断する。条件分岐ノードであれば、処理がステップＳ４２５に進められる。条件分岐ノードでなければ、処理がステップＳ４２２に進められる。
【０１８４】
［ステップＳ４２５］次のノードが条件分岐ノードの場合、フロー実行部２３０は、条件分岐の分岐先を判断し、分岐先のノードの処理を実行するサーバが、自サーバ（実行サーバ２００）か否かを判断する。次のノードの処理を実行するのが自サーバであれば、処理がステップＳ４２２に進められる。次のノードの処理を実行するのが自サーバでなければ、処理がステップＳ４２６に進められる。
【０１８５】
［ステップＳ４２６］制御を管理サーバ１００に戻すノードに達した場合、または条件分岐による分岐先のノードの処理を実行するのが他のサーバの場合、フロー実行部２３０は、管理サーバ１００に、自動化フロー実行の制御を戻す。例えばフロー実行部２３０は、依頼された処理の完了通知を管理サーバ１００に送信する。
【０１８６】
なお条件分岐による分岐先のノードの処理を実行するのが他のサーバの場合には、管理サーバ１００に、分岐先のノードの識別子を完了通知に含める。これにより管理サーバ１００では、自動化フロー内のどのノードから処理が返却されたかを判断することができる。ノードの識別子としては、例えばインスタンスＩＤが用いられる。ノードのインスタンスＩＤは自動化フロー実行時にシステム上で一意になるように予め設定された識別子である。
【０１８７】
＜第２の実施の形態の効果＞
このようにして、自動化フローの処理を効率的に分散して実行することができる。すなわち、第２の実施の形態では、管理サーバ１００と実行サーバとの間の通信速度だけでなく、実行サーバと管理対象サーバとの間の通信速度までも考慮し、効率的に処理を実行で器量に、各処理を実行するサーバを決定している。その結果、自動化フローの処理を効率的に実行することができる。
【０１８８】
このような通信速度を考慮した処理の効率化は、大量のデータを通信する処理を行う場合に特に有効となる。例えば、大量のログファイルを取得する場合、通信性能によって処理性能が左右される。
【０１８９】
図３０は、１００ＭＢｙｔｅのファイルを転送するのに要する時間を示す図である。通信速度が１０Ｍｂｐｓしかなければ、１００ＭＢｙｔｅのファイルを転送するのに１０秒の時間がかかる。通信速度が１００Ｍｂｐｓであれば、１秒程度で同じファイルを転送することができる。通信速度が１Ｇｂｐｓであれば、０．１秒程度で同じファイルを転送することができる。
【０１９０】
このように通信性能によって処理時間が大きく異なる場合、分散先のＣＰＵやメモリの負荷状態だけで処理を分散しても、自動化フロー全体の処理時間の短縮効果は不十分となる。第２の実施の形態では、通信性能を考慮して処理の分散実行するため、大量のデータ転送を伴う自動化フローについて、効率的に処理を実行することができる。
【０１９１】
しかも第２の実施の形態では、連続するノードの処理が同じ実行サーバで効率的に実行できる場合、複数のノードを１つのグループに纏め、グループ単位で処理の実行を依頼することができる。その結果、管理サーバと実行サーバとの間の通信回数が削減され、処理の効率化が促進される。
【０１９２】
図３１は、グルーピングした場合の通信回数の一例を示す図である。図３１には、図２０に示したようにグルーピングされた自動化フロー５６を実行した場合のサーバ間の通信状況が示されている。管理サーバ１００は、自動化フロー５６の実行を開始すると、まず、２つのノード５６ｂ，５６ｃを含むグループ「Ｇ１」の実行依頼を、実行サーバ２００ａに送信する。実行サーバ２００ａは、ノード５６ｂ，５６ｃに定義された処理を実行する。この処理の実行時には、実行サーバ２００ａから管理対象サーバ４５ａ，４５ｂに、操作内容の送信などの通信が行われ、管理対象サーバ４５ａ，４５ｂが操作される。その後、実行サーバ２００ａから管理サーバ１００に完了通知が送信される。
【０１９３】
管理サーバ１００は、実行サーバ２００ａからの完了通知を受けて、自動化フロー５６の処理をノード５６ｄに進める。そして管理サーバ１００は、ノード５６ｄの実行依頼を実行サーバ２００ｂに送信する。実行サーバ２００ｂは、管理対象サーバ４５ｃの操作を伴う処理を実行し、完了通知を管理サーバ１００に送信する。
【０１９４】
管理サーバ１００は、実行サーバ２００ｂからの完了通知を受けて、自動化フロー５６の処理をノード５６ｅに進める。そして管理サーバ１００は、グループ「Ｇ２」に含まれるノード５６ｅ，５６ｆの実行依頼を実行サーバ２００ｃに送信する。実行サーバ２００ｃは、管理対象サーバ４５ｄ，４５ｅの操作を伴う処理を実行し、完了通知を管理サーバ１００に送信する。
【０１９５】
このように、管理サーバ１００と各実行サーバ２００ａ，２００ｂ，２００ｃとの間では、処理を依頼するごとに、実行依頼と完了通知とが送受される。このような処理の依頼を、グルーピングを行わずにノード単位で行った場合、自動化フロー５６の例であれば、実行依頼の通信が５回、完了通知の通信が５回発生する。しかしグルーピングを行うことにより、通信階数が３回ずつに削減されている。通信回数が削減されれば、自動化フローの全体の処理時間が短縮される。
【０１９６】
図３２は、処理時間の短縮効果を示す図である。図３２には、通信速度を考慮せずに処理を分散させた場合、通信速度を考慮して処理を分散させた場合、通信速度を考慮し、グルーピングを行った処理を分散させた場合の、自動化フローの処理時間の例が示されている。図３２に示すように、通信速度を考慮して処理を分散させると、ログ取得などのデータ通信を伴う処理の時間が大きく短縮される。さらにグルーピングを行うと、自動化フロー内の個々のノードの処理ではなく、処理を分散させるために実行される、サーバ間の通信処理に要する時間が短縮される。
【０１９７】
さらに第２の実施の形態では、障害などによって、処理の依頼先となる実行サーバと接続できない場合、自動で、処理の依頼先の再決定が行われる。これにより、例えば夜間の時間帯に分散処理を実行する場合において、処理の依頼先の実行サーバが障害で停止してしまっても、翌朝には、自動化フローの処理を完了させることができる。
【０１９８】
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の２以上の構成（特徴）を組み合わせたものであってもよい。
【符号の説明】
【０１９９】
１，２  ネットワーク
３〜５  制御装置
６〜８  制御対象装置
１０  情報処理装置
１１  記憶手段
１１ａ  定義情報
１２  収集手段
１３  選択手段
１４  依頼手段
【図１】
2015007876.tif 000003
【図２】
2015007876.tif 000004
【図３】
2015007876.tif 000005
【図４】
2015007876.tif 000006
【図５】
2015007876.tif 000007
【図６】
2015007876.tif 000008
【図７】
2015007876.tif 000009
【図８】
2015007876.tif 000010
【図９】
2015007876.tif 000011
【図１０】
2015007876.tif 000012
【図１１】
2015007876.tif 000013
【図１２】
2015007876.tif 000014
【図１３】
2015007876.tif 000015
【図１４】
2015007876.tif 000016
【図１５】
2015007876.tif 000017
【図１６】
2015007876.tif 000018
【図１７】
2015007876.tif 000019
【図１８】
2015007876.tif 000020
【図１９】
2015007876.tif 000021
【図２０】
2015007876.tif 000022
【図２１】
2015007876.tif 000023
【図２２】
2015007876.tif 000024
【図２３】
2015007876.tif 000025
【図２４】
2015007876.tif 000026
【図２５】
2015007876.tif 000027
【図２６】
2015007876.tif 000028
【図２７】
2015007876.tif 000029
【図２８】
2015007876.tif 000030
【図２９】
2015007876.tif 000031
【図３０】
2015007876.tif 000032
【図３１】
2015007876.tif 000033
【図３２】
2015007876.tif 000034