(57)【要約】      （修正有）【課題】新たに配備される仮想マシンにおける資源の消費を減らす。【解決手段】一又は複数の仮想マシン１０１を含むシステムにおけるスケールアウト方法であって、一又は複数の仮想マシン１０１のうち、いずれかの仮想マシンにおける処理負荷の超過を検出した場合に、新たな仮想マシンを配備する処理と、処理負荷が超過した仮想マシンにおいて動作しているプロセスの各々における処理負荷に基づいて、所定の条件に一致するプロセスを選定する選定処理と、選定したプロセスに係る第１ソフトウエアを識別するための第１データ情報を特定する第１特定処理と、新たな仮想マシンにおいて、第１データ情報に基づいて第１ソフトウエアをセットアップするセットアップ処理とを含む。【選択図】図２
2015194810.tif 000002
【特許請求の範囲】
【請求項１】
一又は複数の仮想マシンを含むシステムにおけるスケールアウト方法であって、
前記一又は複数の仮想マシンのうち、いずれかの仮想マシンにおける処理負荷の超過を検出した場合に、新たな仮想マシンを配備する処理と、
処理負荷が超過した仮想マシンにおいて動作しているプロセスの各々における処理負荷に基づいて、所定の条件に一致するプロセスを選定する選定処理と、
選定した前記プロセスに係る第１ソフトウエアを識別するための第１データ情報を特定する第１特定処理と、
前記新たな仮想マシンにおいて、前記第１データ情報に基づいて前記第１ソフトウエアをセットアップするセットアップ処理と
を含み、一又は複数のコンピュータが実行するスケールアウト方法。
【請求項２】
更に、
前記第１ソフトウエアが依存する第２ソフトウエアを識別するための第２データ情報を特定する第２特定処理
を含み、
前記セットアップ処理において、更に、前記第２データ情報に基づいて、前記第２ソフトウエアを前記新たな仮想マシンにセットアップする
請求項１記載のスケールアウト方法。
【請求項３】
更に、
前記第１ソフトウエアが依存される第３ソフトウエアを識別するための第３データ情報を特定する第３特定処理
を含み、
前記セットアップ処理において、更に、前記第３データ情報に基づいて、前記第３ソフトウエアを前記新たな仮想マシンにセットアップする
請求項１又は２記載のスケールアウト方法。
【請求項４】
前記第１特定処理において、選定した前記プロセスに関連付けられている前記第１データ情報を特定する
請求項１乃至３のうち１つ記載のスケールアウト方法。
【請求項５】
更に、
ソフトウエアを識別するためのデータ情報と、当該データ情報に基づいて生成された起動スクリプトとを関連付ける第１関連付け処理と、
前記起動スクリプトと、前記起動スクリプトによって起動されたプロセスの識別子とを関連付ける第２関連付け処理と
を含み、
前記選定処理において、前記所定の条件に一致するプロセスの識別子を特定し、
前記第１特定処理において、前記識別子に関連する起動スクリプトに基づいて、前記第１データ情報を特定する
請求項１乃至３のうち１つ記載のスケールアウト方法。
【請求項６】
前記選定処理において、前記プロセスの各々における処理負荷のうち、最も大きい処理負荷に係るプロセスを選定する
請求項１乃至５のうち１つ記載のスケールアウト方法。
【請求項７】
前記選定処理において、選定されたプロセスにおける処理負荷の合計が所定基準を超えるように、一又は複数のプロセスを選定する
請求項１乃至５のうち１つ記載のスケールアウト方法。
【請求項８】
仮想マシンを動作させるための一又は複数の情報処理装置と、
前記一又は複数の情報処理装置に接続される管理装置と
を有し、
前記管理装置は、
いずれかの仮想マシンにおける処理負荷が超過した場合に、ソフトウエアを識別するためのデータ情報に基づいて当該ソフトウエアをセットアップするセットアップ部を含む新たな仮想マシンを、前記一又は複数の情報処理装置のうちのいずれかの情報処理装置に配備する配備部
を有し、
前記情報処理装置は、
当該仮想マシンにおいて動作しているプロセスの各々における処理負荷に基づいて、所定の条件に一致するプロセスを選定する選定部と、
選定した前記プロセスに係るソフトウエアを識別するためのデータ情報を特定する特定部と、
前記データ情報を前記管理装置へ送信する送信部と
を有し、
前記管理装置は、更に、
受信した前記データ情報により特定されるデータを、前記新たな仮想マシンに送信する送信部
を有するシステム。
【請求項９】
仮想マシンを動作させるための情報処理装置であって、
前記仮想マシンにおける処理負荷が超過した場合に、前記仮想マシンにおいて動作しているプロセスの各々における処理負荷に基づいて、所定の条件に一致するプロセスを選定する選定部と、
選定した前記プロセスに係るソフトウエアを識別するためのデータ情報を特定する特定部と、
前記データ情報を、管理装置へ送信する送信部と
を有する情報処理装置。
【請求項１０】
仮想マシンにおける処理負荷が超過した場合に、ソフトウエアを識別するためのデータ情報に基づいて当該ソフトウエアをセットアップするセットアップ部を含む新たな仮想マシンを、情報処理装置に配備する配備部と、
所定の条件に一致するプロセスに係るソフトウエアを識別するためのデータ情報により特定されるデータを、前記新たな仮想マシンに送信する送信部と
を有する管理装置。
【請求項１１】
仮想マシンを動作させるためのコンピュータに、
前記仮想マシンにおける処理負荷が超過した場合に、前記仮想マシンにおいて動作しているプロセスの各々における処理負荷に基づいて、所定の条件に一致するプロセスを選定する処理と、
選定した前記プロセスに係るソフトウエアを識別するためのデータ情報を特定する処理と、
前記データ情報を、管理装置へ送信する処理と
を実行させるためのプログラム。
【請求項１２】
仮想マシンにおける処理負荷が超過した場合に、ソフトウエアを識別するためのデータ情報に基づいて当該ソフトウエアをセットアップするセットアップ部を含む新たな仮想マシンを、情報処理装置に配備する処理と、
所定の条件に一致するプロセスに係るソフトウエアを識別するためのデータ情報により特定されるデータを、前記新たな仮想マシンに送信する処理と
をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想マシンのスケールアウト技術に関する。
【背景技術】
【０００２】
複数のプロセスが動作する仮想マシンを含むシステムの運用中に、例えば一部のプロセスに対する処理要求が増えて、当該仮想マシンの処理負荷が高まることがある。
【０００３】
自動化されたスケールアウトでは、システムに含まれるいずれかの仮想マシンにおける負荷超過を検出した場合に、負荷超過を検出した仮想マシンと同じ機能を全て持つ新たな仮想マシンを配備することによって処理負荷の分散を図る。
【０００４】
ある特許文献には、仮想サーバのＣＰＵ（Central Processing Unit）におけるアイドル時間が基準を下回った場合に、当該仮想サーバの新規イメージをインスタンス化することが記載されている。また同じ特許文献には、ソフトウエアのセットを含むイメージを用いて仮想サーバのインスタンス化を行うことも記載されている。
【０００５】
このように、負荷超過になる恐れのある仮想マシンに相当するイメージを予め準備しておき、当該仮想マシンが負荷超過になった場合に、そのイメージを用いて新たな仮想マシンを設ければ、新たな仮想マシンが負荷超過となった仮想マシンと同様の機能を担うようになる。その結果、処理要求の一部は、新たな仮想マシンにおいて扱われ、負荷超過は緩和される。
【０００６】
このとき、新たな仮想マシンに搭載されたソフトウエアの各々に対して資源が割り当てられる。従って、予め用意したイメージに沢山の種類のソフトウエアが含まれている場合には、新たな仮想マシンに多くの資源が求められる。また、搭載されたソフトウエアが処理負荷の分散に貢献しなければ、そのソフトウエアに割り当てられた資源は無駄になるという面もある。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特表２０１１−５２３４７２号公報
【特許文献２】特開２０１２−２０８７８１号公報
【特許文献３】特表２００３−５０７８１７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本発明の目的は、一側面によれば、新たに配備される仮想マシンにおける資源の消費を減らすことである。
【課題を解決するための手段】
【０００９】
一態様に係るスケールアウト方法は、一又は複数の仮想マシンを含むシステムにおけるスケールアウト方法であって、一又は複数の仮想マシンのうち、いずれかの仮想マシンにおける処理負荷の超過を検出した場合に、新たな仮想マシンを配備する処理と、処理負荷が超過した仮想マシンにおいて動作しているプロセスの各々における処理負荷に基づいて、所定の条件に一致するプロセスを選定する選定処理と、選定したプロセスに係る第１ソフトウエアを識別するための第１データ情報を特定する第１特定処理と、新たな仮想マシンにおいて、第１データ情報に基づいて第１ソフトウエアをセットアップするセットアップ処理とを含む。
【発明の効果】
【００１０】
一側面としては、新たに配備される仮想マシンにおける資源の消費を減らすことができる。
【図面の簡単な説明】
【００１１】
【図１】図１は、ソフトウエア構成と基盤構成との例を示す図である。
【図２】図２は、スケールアウトの例を示す図である。
【図３】図３は、クラウド環境におけるネットワーク構成例を示す図である。
【図４】図４は、管理装置を有する物理サーバの構成例を示す図である。
【図５】図５は、仮想マシンを有する物理サーバの構成例を示す図である。
【図６】図６は、構築フェーズにおけるシーケンスの例を示す図である。
【図７】図７は、運用フェーズにおけるシーケンスの例を示す図である。
【図８】図８は、構築部の構成例を示す図である。
【図９】図９は、自動スケーリング部の構成例を示す図である。
【図１０】図１０は、エージェントの構成例を示す図である。
【図１１】図１１は、管理装置用の補助記憶領域の例を示す図である。
【図１２】図１２は、セットアップ自動化データの例を示す図である。
【図１３】図１３は、ソフトウエア構成テーブルの例を示す図である。
【図１４】図１４は、仮想マシン管理テーブルの例を示す図である。
【図１５】図１５は、仮想マシン用の補助記憶領域の例を示す図である。
【図１６】図１６は、プロセス管理テーブルの例を示す図である。
【図１７】図１７は、第１関連テーブルの例を示す図である。
【図１８】図１８は、第２関連テーブルの例を示す図である。
【図１９】図１９は、構築処理フローを示す図である。
【図２０】図２０は、第１抽出処理フローを示す図である。
【図２１】図２１は、第１リストの例を示す図である。
【図２２】図２２は、第１決定処理フローを示す図である。
【図２３】図２３は、接続処理フローを示す図である。
【図２４】図２４は、第１エージェント処理フローを示す図である。
【図２５】図２５は、セットアップ処理フローを示す図である。
【図２６】図２６は、第１関連付け処理フローを示す図である。
【図２７】図２７は、第２エージェント処理フローを示す図である。
【図２８】図２８は、関連テーブルの例を示す図である。
【図２９】図２９は、自動スケーリング処理フローを示す図である。
【図３０】図３０は、スケールアウト処理フローを示す図である。
【図３１】図３１は、第２抽出処理（Ａ）フローを示す図である。
【図３２】図３２は、第２リストの例を示す図である。
【図３３】図３３は、第２特定処理フローを示す図である。
【図３４】図３４は、第２決定処理フローを示す図である。
【図３５】図３５は、第３エージェント処理フローを示す図である。
【図３６】図３６は、第４エージェント処理フローを示す図である。
【図３７】図３７は、選定処理（Ａ）フローを示す図である。
【図３８】図３８は、第１特定処理フローを示す図である。
【図３９】図３９は、第１関連テーブルの例を示す図である。
【図４０】図４０は、セットアップ自動化データの例を示す図である。
【図４１】図４１は、実施の形態２に係るソフトウエア構成と基盤構成との例を示す図である。
【図４２】図４２は、実施の形態２に係るソフトウエア構成テーブルの例を示す図である。
【図４３】図４３は、実施の形態２に係るスケールアウトの例を示す図である。
【図４４】図４４は、第２抽出処理（Ｂ）フローを示す図である。
【図４５】図４５は、第３特定処理フローを示す図である。
【図４６】図４６は、実施の形態２に係る第２リストの例を示す図である。
【図４７】図４７は、実施の形態３に係るソフトウエア構成と基盤構成との例を示す図である。
【図４８】図４８は、実施の形態３に係るソフトウエア構成テーブルの例を示す図である。
【図４９】図４９は、実施の形態３に係るスケールアウトの例を示す図である。
【図５０】図５０は、実施の形態３に係るプロセス管理テーブルの例を示す図である。
【図５１】図５１は、選定処理（Ｂ）フローを示す図である。
【図５２】図５２は、実施の形態３に係る第２リストの例を示す図である。
【図５３】図５３は、コンピュータの機能ブロック図である。
【発明を実施するための形態】
【００１２】
［実施の形態１］
まず、本実施の形態の概要について説明する。図１に、ソフトウエア構成と基盤構成との例を示す。このシステムにおける機能は、機能「アプリケーションＡ」、機能「アプリケーションＢ」、機能「ミドルウエアＰ」、機能「ミドルウエアＱ」及び機能「ミドルウエアＲ」を組み合わせることによって実現される。
【００１３】
図１の上部は、このシステムにおける機能を実現するためのソフトウエアの構成を示している。以降、「ソフトウエア」の語は、「プログラム」の意味として用いる。尚、機能「アプリケーションＡ」は、ソフトウエア「ＡｐｌＡ」の処理をいずれかの仮想マシン１０１で実行することによって実現される。同様に機能「アプリケーションＢ」は、ソフトウエア「ＡｐｌＢ」の処理をいずれかの仮想マシン１０１で実行することによって実現される。同様に機能「ミドルウエアＰ」は、ソフトウエア「ＭｉｄＰ」の処理をいずれかの仮想マシン１０１で実行することによって実現される。同様に機能「ミドルウエアＱ」は、ソフトウエア「ＭｉｄＱ」の処理をいずれかの仮想マシン１０１で実行することによって実現される。同様に機能「ミドルウエアＲ」は、ソフトウエア「ＭｉｄＲ」の処理をいずれかの仮想マシン１０１で実行することによって実現される。
【００１４】
以下では、説明の便宜のためにソフトウエアを機能グループに分ける。ソフトウエア「ＡｐｌＡ」とソフトウエア「ＭｉｄＰ」との組み合わせを第１機能グループと呼ぶ。ソフトウエア「ＡｐｌＢ」とソフトウエア「ＭｉｄＱ」との組み合わせを第２機能グループと呼ぶ。ソフトウエア「ＭｉｄＲ」を第３機能グループと呼ぶ。但し、ソフトウエアを機能グループに分類しないようにしてもよい。
【００１５】
図１の下部は、システムに用いられる仮想マシン１０１を含む基盤構成を示している。この例におけるシステムは、仮想マシン１０１ａと仮想マシン１０１ｂとを用いる。図示するように、仮想マシン１０１ａの仮想マシンＩＤは、「ＶＭ＿１０１」であり、仮想マシン１０１ｂの仮想マシンＩＤは、「ＶＭ＿１０２」である。また、仮想マシン１０１ａと仮想マシン１０１ｂとを結ぶ線は、仮想マシン１０１ａと仮想マシン１０１ｂとが仮想ネットワークを介して接続されていることを示している。
【００１６】
図１における大きい矢印１０３、つまり機能グループから仮想マシン１０１を指す矢印は、仮想マシン１０１とその仮想マシン１０１に搭載されるソフトウエアとの関係を示している。この関係は、そのソフトウエアに当該仮想マシン１０１の資源が割り当てられていることを意味する。左側の大きい矢印１０３ａは、第１機能グループに含まれるソフトウエア「ＡｐｌＡ」とソフトウエア「ＭｉｄＰ」とが仮想マシン１０１ａに搭載されることを示している。中央の大きい矢印１０３ｂは、第２機能グループに含まれるソフトウエア「ＡｐｌＢ」とソフトウエア「ＭｉｄＱ」とが仮想マシン１０１ａに搭載されることを示している。また、右側の大きい矢印１０３ｃは、第３機能グループに含まれるソフトウエア「ＭｉｄＲ」が仮想マシン１０１ｂに搭載されることを示している。
【００１７】
図１における実線の矢印１０５は、ソフトウエア同士における依存関係を示している。第１機能グループ内に示した実線の矢印１０５ａは、ソフトウエア「ＡｐｌＡ」がソフトウエア「ＭｉｄＰ」に依存していることを示している。この依存関係において、ソフトウエア「ＡｐｌＡ」が依存元であり、ソフトウエア「ＭｉｄＰ」が依存先である。
【００１８】
第２機能グループ内に示した実線の矢印１０５ｂは、ソフトウエア「ＡｐｌＢ」がソフトウエア「ＭｉｄＱ」に依存していることを示している。この依存関係において、ソフトウエア「ＡｐｌＢ」が依存元であり、ソフトウエア「ＭｉｄＱ」が依存先である。
【００１９】
また、図１における破線の矢印１０７は、ソフトウエア同士における呼び出し関係を示している。例えば、左側の破線の矢印１０７ａは、ソフトウエア「ＭｉｄＰ」がソフトウエア「ＭｉｄＱ」を呼び出すことを示している。この呼び出し関係において、ソフトウエア「ＭｉｄＰ」が呼び出し元であり、ソフトウエア「ＭｉｄＱ」が呼び出し先である。同様に右側の破線の矢印１０７ｂは、ソフトウエア「ＭｉｄＱ」がソフトウエア「ＭｉｄＲ」を呼び出すことを示している。この呼び出し関係において、ソフトウエア「ＭｉｄＱ」が呼び出し元であり、ソフトウエア「ＭｉｄＲ」が呼び出し先である。
【００２０】
図１の上部に示したソフトウエア構成は、例えばクラウド環境におけるＰａａＳ（Platform as a Service）及びＳａａＳ（Software as a Service）層に相当する。また、図１の下部に示した基盤構成は、例えばクラウド環境におけるＩａａＳ（Infrastructure as a Service）層に相当する。
【００２１】
続いて、本実施の形態におけるスケールアウトの概要について説明する。図２に、スケールアウトの例を示す。この例は、図１に示したソフトウエア構成と基盤構成とを前提としている。この例は、運用フェーズにおいて、図１に示したソフトウエア構成のうちソフトウエア「ＡｐｌＢ」に係るプロセスにおける処理負荷が高まり、その結果として仮想マシン１０１ａの処理負荷が基準を超えた場合を想定している。つまり、ソフトウエア「ＡｐｌＢ」に係るプロセスが、仮想マシン１０１ａにおける負荷超過の主因となっている。
【００２２】
本実施の形態では、自動スケーリング処理において処理負荷が基準を超えた仮想マシン１０１ａを検出し、スケールアウトを行う。そして、スケールアウトによって仮想マシン１０１ｃが増設される。図示するように、仮想マシン１０１ｃの仮想マシンＩＤは、「ＶＭ＿１０３」である。
【００２３】
仮想マシン１０１ｃには、仮想マシン１０１ａに搭載されているソフトウエアのうち一部のソフトウエアを搭載するようにする。この例では、ソフトウエア「ＡｐｌＢ」に係るプロセスにおける処理負荷が高まっているので、ソフトウエア「ＡｐｌＢ」を仮想マシン１０１ｃに搭載するようにする。つまり、既存の仮想マシン１０１ａで処理負荷が高まったソフトウエアの機能を、新たな仮想マシン１０１ｃでも実現するようにする。
【００２４】
また、ソフトウエア「ＡｐｌＢ」はソフトウエア「ＭｉｄＱ」に依存するので、ソフトウエア「ＭｉｄＱ」も一緒に仮想マシン１０１ｃに搭載するようにする。その結果大きな矢印２０１に示すように、第２機能グループに含まれるソフトウエア「ＡｐｌＢ」とソフトウエア「ＭｉｄＱ」とに、仮想マシン１０１ｃの資源が割り当てられるようになる。
【００２５】
一方、第１機能グループに含まれるソフトウエア「ＡｐｌＡ」とソフトウエア「ＭｉｄＰ」とは、仮想マシン１０１ｃに搭載されない。つまり、ソフトウエア「ＡｐｌＡ」とソフトウエア「ＭｉｄＰ」には、仮想マシン１０１ｃの資源が割り当てられない。このように、処理能力が足りている機能については、その機能に対して資源を追加で割り当てないようにするので、新たな資源を有効に活用できるようになる。
【００２６】
尚、破線の矢印２０３ａに示すように、仮想マシン１０１ｃに搭載されたソフトウエア「ＭｉｄＱ」は、仮想マシン１０１ｂに搭載されているソフトウエア「ＭｉｄＲ」を呼び出し、また破線の矢印２０３ｂに示すように、仮想マシン１０１ａに搭載されているソフトウエア「ＭｉｄＰ」は、仮想マシン１０１ｃに搭載されたソフトウエア「ＭｉｄＱ」を呼び出す。従って、基盤構成において、仮想マシン１０１ｃは仮想マシン１０１ａ及び仮想マシン１０１ｂに仮想ネットワークを介して接続する。
【００２７】
図２では、ソフトウエア「ＡｐｌＢ」に係るプロセスの処理負荷が高まり、第２機能グループに含まれるソフトウエアが、新たな仮想マシン１０１ｃに搭載される例を示した。しかし、ソフトウエア「ＡｐｌＡ」に係るプロセスの処理負荷が高まった場合には、第１機能グループに含まれるソフトウエアが、新たな仮想マシン１０１ｃに搭載されるようになる。このように本実施の形態では、処理負荷の分布状況に応じて、新たな仮想マシン１０１に搭載するソフトウエアの構成を選択する。従って、搭載させるソフトウエアの組み合わせに応じて多様なパターンのイメージを予め用意して処理負荷の分布状況に対応しようとする場合に比べて、資源を省力化できる面がある。
【００２８】
また、本実施の形態によれば、例えば当初は少数の仮想マシン１０１によって多くの機能グループをカバーし、運用段階で処理要求の増加に応じて一部の機能グループの分だけ資源を足すことによってシステムの処理能力を向上させることもできる。従って、初期の資源及び追加の資源共に節約できる場合がある。更に、同じソフトウエアを搭載させる仮想マシン１０１の数を抑えれば、当該ソフトウエアのライセンス数が少なくて済むという面もある。
【００２９】
次に、ネットワーク構成及び装置構成について説明する。図３に、クラウド環境におけるネットワーク構成例を示す。物理サーバ３０１ａ乃至３０１ｃでは、仮想マシン１０１が稼動する。尚、物理サーバ３０１ａの物理サーバＩＤは、「ＰＳ＿００１」である。また、物理サーバ３０１ｂの物理サーバＩＤは、「ＰＳ＿００２」である。物理サーバ３０１ｃの物理サーバＩＤは、「ＰＳ＿００３」である。
【００３０】
物理サーバ３０１ａ乃至３０１ｃは、ユーザ用のネットワーク３０３に接続されている。ユーザ用のネットワーク３０３は、ＦＷ（Firewall）兼ルーター３０５を介してインターネット側に接続している。ユーザ用のネットワーク３０３は、物理サーバ３０１ａ乃至３０１ｃ同士のユーザ通信及び物理サーバ３０１ａ乃至３０１ｃとインターネット側とのユーザ通信に用いられる。
【００３１】
物理サーバ３０１ａ乃至３０１ｃにおいて稼動する仮想マシン１０１は、例えばインターネット３０７を介してクライアントに対するサービスを提供する。つまり、物理サーバ３０１ａ乃至３０１ｃにおいて稼動する仮想マシン１０１は、仮想化サーバとして働くことがある。
【００３２】
また、物理サーバ３０１ａ乃至３０１ｃは、管理用のネットワーク３０９を介して接続されている。管理用のネットワーク３０９には、物理サーバ３０１ｄも接続されている。物理サーバ３０１ｄは、物理サーバ３０１ａ乃至３０１ｃを管理する管理装置を有する。尚、物理サーバ３０１ｄの物理サーバＩＤは、「ＰＳ＿００４」である。
【００３３】
次に、管理装置を有する物理サーバ３０１ｄについて説明する。図４に、管理装置を有する物理サーバ３０１ｄの構成例を示す。管理装置は仮想化されたコンピュータであり、図示したように物理サーバ３０１ｄにおいて実現される。
【００３４】
物理サーバ３０１ｄは、ＣＰＵ４０１と、補助記憶装置４０３と、メモリ４０５とを有する。ＣＰＵ４０１は、演算処理を行う。補助記憶装置４０３は、データを記憶する。ハイパーバイザ４０７は、メモリ４０５上に展開されている。管理装置４０９は、ハイパーバイザ４０７によって制御される。管理装置４０９は、管理用のネットワーク３０９に接続されている。管理装置４０９は、構築部４１１、自動スケーリング部４１３及びＯＳ（Operating System）４１５を有している。構築部４１１は、システムを構築する処理を行う。構築部４１１については、図８を用いて後述する。自動スケーリング部４１３は、自動スケーリングの処理を行う。自動スケーリング部４１３については、図９を用いて後述する。
【００３５】
管理装置４０９、構築部４１１及び自動スケーリング部４１３は、ハードウエア資源（例えば図４あるいは図５３）を用いて実現される。また、ハイパーバイザ４０７、管理装置４０９、構築部４１１、自動スケーリング部４１３及びＯＳ４１５に含まれるプログラムは、例えばメモリ（図４の４０５あるいは図５３の２５０１）にロードされ、ＣＰＵ（図４の４０１あるいは図５３の２５０３）で順次実行される。
【００３６】
次に、仮想マシン１０１が稼動する物理サーバ３０１ａ乃至３０１ｃについて説明する。図５に、仮想マシン１０１を有する物理サーバ３０１ａの構成例を示す。仮想マシン１０１ａは仮想化されたコンピュータであり、図示するように物理サーバ３０１ａにおいて実現される。
【００３７】
物理サーバ３０１ａは、物理サーバ３０１ｄと同様にＣＰＵ４０１と、補助記憶装置４０３と、メモリ４０５とを有する。また、物理サーバ３０１ｄと同様にＣＰＵ４０１は、演算処理を行う。同じく補助記憶装置４０３は、データを記憶する。同じくハイパーバイザ４０７は、メモリ４０５上に展開されている。
【００３８】
仮想マシン１０１ａは、ハイパーバイザ４０７によって制御される。仮想マシン１０１ａは、ユーザ用のネットワーク３０３及び管理用のネットワーク３０９に接続されている。
【００３９】
仮想マシン１０１ａでは、エージェント５０１と、ＯＳ５０３とが動作する。エージェント５０１は、例えばシステム構築及び自動スケーリングに関する仮想マシン１０１ａ側の処理を行う。エージェント５０１及びＯＳ５０３は、仮想マシン配備時にイメージ形式で仮想マシン１０１ａに展開される。システムにおける機能の一部を実現するためのソフトウエア（この例では「ＡｐｌＡ」、「ＡｐｌＢ」、「ＭｉｄＰ」及び「ＭｉｄＱ」）は、イメージに含まれず、セットアップによって仮想マシン１０１に搭載される。
【００４０】
仮想マシン１０１は、ハードウエア資源（例えば図５あるいは図５３）を用いて実現される。また、ハイパーバイザ４０７、仮想マシン１０１、システムにおける機能の一部を実現するためのソフトウエア、エージェント５０１及びＯＳ５０３に含まれるプログラムは、例えばメモリ（図５の４０５あるいは図５３の２５０１）にロードされ、ＣＰＵ（図５の４０１あるいは図５３の２５０３）で順次実行される。
【００４１】
尚、仮想マシン１０１と管理装置４０９とが、同じ物理サーバ３０１において稼動するようにしてもよい。
【００４２】
続いて、システムを構築するための構築フェーズにおけるシーケンスと、構築フェーズの後の運用フェーズにおけるシーケンスとを順に説明する。図６に、構築フェーズにおけるシーケンスの例を示す。構築フェーズにおいて、管理装置４０９は、システムにおいて用いる仮想マシン１０１を構築し、更にユーザ用のネットワーク３０３を介して仮想マシン１０１同士を接続させることによってシステムを構築する。
【００４３】
まず、仮想マシン１０１ａの構築について説明する。管理装置４０９は、第１配備処理において物理サーバ３０１ａに仮想マシン１０１ａを配備する（Ｓ６０１）。尚、第１配備処理については、図１９を用いて後述する。
【００４４】
次に、管理装置４０９は、第１抽出処理において、仮想マシン１０１ａに搭載するソフトウエアをソフトウエア構成テーブルから抽出する（Ｓ６０３）。尚、第１抽出処理については、図２０を用いて後述する。
【００４５】
次に、管理装置４０９は、第１決定処理において、セットアップするソフトウエアを順次決定する（Ｓ６０５）。例えばあるソフトウエアが他のソフトウエアに依存する場合のように、他のソフトウエアがセットアップされていることが、あるソフトウエアをセットアップするための条件となる場合がある。そのような場合には、管理装置４０９は、あるソフトウエアをセットアップする順番よりも他のソフトウエアをセットアップする順番を先にする。尚、第１決定処理については、図２２を用いて後述する。
【００４６】
以下の手順で、管理装置４０９は、仮想マシン１０１にソフトウエアをセットアップさせる。まず、管理装置４０９は、最初にセットアップしようとするソフトウエアのセットアップ自動化データを仮想マシン１０１ａへ送信する（Ｓ６０７）。
【００４７】
セットアップ自動化データは、ソフトウエアのセットアップを自動化するためのデータである。セットアップ自動化データは、例えば当該ソフトウエアを含むパッケージのインストールについての指示を含んでいる。また。セットアップ自動化データは、ソフトウエアに関連する初期設定についての指示を含んでいてもよい。セットアップ自動化データは、例えば、ソフトウエアの設定ファイルあるいは動作環境の設定ファイルを生成させる指示を含むようにしてもよい。セットアップ自動化データの例については、図１２及び図４０を用いて後述する。
【００４８】
仮想マシン１０１ａは、セットアップ自動化データを受信すると、第１エージェント処理を行う（Ｓ６０９）。第１エージェント処理において、仮想マシン１０１ａは、セットアップ自動化データに従って管理装置４０９から当該ソフトウエアを含むパッケージをインストールする（Ｓ６１１）。
【００４９】
更に、仮想マシン１０１ａは、セットアップ自動化データに従って当該ソフトウエアの起動スクリプトを生成する（Ｓ６１３）。このとき、仮想マシン１０１ａは、第１関連付け処理において、セットアップ自動化データ名と起動スクリプト名とを関連付けて記憶する（Ｓ６１５）。そして、仮想マシン１０１ａは、起動スクリプトを用いて、当該ソフトウエアのプロセスを起動させる（Ｓ６１７）。
【００５０】
このとき、仮想マシン１０１ａは、第２エージェント処理に相当する第２関連付け処理において、起動スクリプト名と起動されたプロセスのＩＤとを関連付けて記憶する（Ｓ６１９）。このように、仮想マシン１０１ａは、第１関連付け処理（Ｓ６１５）と第２関連付け処理（Ｓ６１９）とによって、セットアップ自動化データ名とプロセスＩＤとを関連付ける。
【００５１】
仮想マシン１０１ａは、第１エージェント処理（Ｓ６０９）において、上述したプロセスの起動を完了させると、完了通知を管理装置４０９に送信する（Ｓ６２１）。尚、第１エージェント処理については、図２４を用いて後述する。また、第２エージェント処理については、図２７を用いて後述する。第１エージェント処理と第２エージェント処理とは、一体の処理であってもよい。
【００５２】
このようにして、ソフトウエアのセットアップ手順（Ｓ６０７乃至Ｓ６２１）を終えると、管理装置４０９は、第１決定処理において次にセットアップしようとするソフトウエアを決定する（Ｓ６２３）。そして、上述したように次のソフトウエアについてのセットアップ手順が実行される。
【００５３】
Ｓ６０３において抽出されたソフトウエアがセットアップされると、仮想マシン１０１ａの構築が完了する。
【００５４】
図６では、ソフトウエアのセットアップ手順の中でプロセスを起動する例を示したが、ソフトウエアのセットアップ手順の中でプロセスを起動しないようにしてもよい。その場合には、ソフトウエアのセットアップ手順を完了させてから、まとめてプロセスを起動するようにしてもよい。また、ソフトウエアのセットアップ手順を完了させてから第２エージェント処理をまとめて行うようにしてもよい。
【００５５】
管理装置４０９は、システムにおいて用いる仮想マシン１０１ｂも同様に構築する。
【００５６】
構築フェーズの最後に、管理装置４０９は、接続処理において、呼び出し元のソフトウエアを搭載している仮想マシン１０１と呼び出し先のソフトウエアを搭載している仮想マシン１０１とを仮想ネットワークを介して接続させる（Ｓ６２５）。尚、接続処理については、図２３を用いて後述する。
【００５７】
続いて、運用フェーズにおけるシーケンスについて説明する。図７に、運用フェーズにおけるシーケンスの例を示す。運用フェーズにおいて、管理装置４０９は、システムにおいて用いている仮想マシン１０１を監視し、いずれかの仮想マシン１０１における処理負荷が超過すると、スケールアウト処理を行う。スケールアウト処理では、新しい仮想マシン１０１が増設される。
【００５８】
仮想マシン１０１ａを監視するために、管理装置４０９は、仮想マシン１０１ａに処理負荷を定期的に問い合わせる（Ｓ７０１）。このとき、管理装置４０９は、仮想マシン１０１ａを制御するハイパーバイザ４０７に、仮想マシン１０１ａにおける処理負荷を定期的に問い合わせるようにしてもよい。
【００５９】
仮想マシン１０１ａは、問い合わせを受けると、第３エージェント処理において自らの処理負荷を計測する（Ｓ７０３）。そして、仮想マシン１０１ａは、自らの処理負荷を示すデータを管理装置４０９に返信する（Ｓ７０５）。尚、第３エージェント処理については、図３５を用いて後述する。
【００６０】
管理装置４０９は、検出処理において、処理負荷が所定基準を超えている仮想マシン１０１を検出する（Ｓ７０７）。この例では、仮想マシン１０１ａの処理負荷が所定基準を超えているものとする。尚、検出処理については、図２９を用いて後述する。尚、図２９におけるＳ２９０１乃至Ｓ２９０７が、検出処理に相当する。
【００６１】
管理装置４０９は、第２配備処理において、システムに追加する仮想マシン１０１ｃを物理サーバ３０１ｃに配備する（Ｓ７０９）。尚、第２配備処理については、図３０を用いて後述する。
【００６２】
そして、管理装置４０９は、第２抽出処理において、仮想マシン１０１ａに搭載されているソフトウエアの中から、仮想マシン１０１ｃにセットアップすべきソフトウエアを抽出する（Ｓ７１１）。そのため、管理装置４０９は、仮想マシン１０１ａが負荷超過となった主因であるプロセスの選定を、仮想マシン１０１ａに要求する（Ｓ７１３）。
【００６３】
仮想マシン１０１ａは、選定要求を受けると、第４エージェント処理（Ｓ７１５）に含まれる選定処理において、所定の条件に該当するプロセスを選定する（Ｓ７１７）。更に、仮想マシン１０１ａは、第４エージェント処理（Ｓ７１５）に含まれる第１特定処理において、選定されたプロセスに係るソフトウエアのセットアップ自動化データ名を特定する（Ｓ７１９）。そして、仮想マシン１０１ａは、特定されたセットアップ自動化データ名を管理装置４０９へ返信する（Ｓ７２１）。尚、第４エージェント処理については、図３６を用いて後述する。
【００６４】
管理装置４０９は、セットアップ自動化データ名を受信すると、第３特定処理（Ｓ７２３）又は第２特定処理（Ｓ７２５）において、選定されたプロセスに係るソフトウエアと一緒にセットアップすべきソフトウエアを特定する。第３特定処理（Ｓ７２３）では、依存元のソフトウエアが特定される。つまり、依存元のソフトウエアもセットアップされるようにする。第２特定処理（Ｓ７２５）では、依存先のソフトウエアが特定される。つまり、依存先のソフトウエアもセットアップされるようにする。尚、第４エージェント処理については、図３６を用いて後述する。実施の形態１では、図３２に示した第２特定処理（Ｓ７２５）を含む第２抽出処理（Ａ）について、図３１を用いて説明する。第３特定処理（Ｓ７２３）を含む第２抽出処理（Ｂ）については、実施の形態２において説明する。
【００６５】
管理装置４０９は、第２決定処理において、セットアップに供されるセットアップ自動化データを順次決定する（Ｓ７２７）。第１決定処理（図６のＳ６０５）において説明したように、例えばあるソフトウエアが他のソフトウエアに依存する場合のように、他のソフトウエアがセットアップされていることが、あるソフトウエアをセットアップするための条件となる場合がある。そのような場合に、第２決定処理において、管理装置４０９は、あるソフトウエアのセットアップに供されるセットアップ自動化データの順番よりも他のソフトウエアのセットアップに供されるセットアップ自動化データの順番を先にする。尚、第２決定処理については、図３４を用いて後述する。
【００６６】
Ｓ７２９乃至Ｓ７３５において、図６に示したＳ６０７乃至Ｓ６２１と同様に、ソフトウエアのセットアップ手順が実行される。
【００６７】
そして、管理装置４０９は、第２決定処理において次のセットアップに供されるセットアップ自動化データを決定する（Ｓ７３７）。そして、当該セットアップ自動化データを用いて次のセットアップ手順が実行される。
【００６８】
Ｓ７１１において抽出されたセットアップ自動化データを用いて、セットアップが漏れなく行われると、仮想マシン１０１ｃの構築が完了する。
【００６９】
最後に、管理装置４０９は、接続処理において、呼び出し元のソフトウエアを搭載している仮想マシン１０１と呼び出し先のソフトウエアを搭載している仮想マシン１０１とを仮想ネットワークを介して接続させる（Ｓ７３９）。
【００７０】
続いて、モジュール構成について説明する。まず、管理装置４０９に含まれる構築部４１１の構成について説明する。図８に、構築部４１１の構成例を示す。構築部４１１は、第１配備部８０１、第１抽出部８０３、第１リスト記憶部８０５、第１決定部８０７、第１送信部８０９、第１受信部８１１及び第１接続部８１３を有している。
【００７１】
第１配備部８０１は、物理サーバ３０１に仮想マシン１０１を配備する第１配備処理を行う。第１抽出部８０３は、仮想マシン１０１にセットアップすべきソフトウエアをソフトウエア構成テーブルから抽出する第１抽出処理を行う。第１リスト記憶部８０５は、セットアップすべきソフトウエア名を並べた第１リストを記憶するために用いられる。第１決定部８０７は、セットアップしようとするソフトウエアを順次決定する第１決定処理を行う。第１送信部８０９は、セットアップ自動化データ及びパッケージ（目的のソフトウエアを含むインストール単位のデータ）などのデータを仮想マシン１０１へ送信する。第１受信部８１１は、仮想マシン１０１から例えばセットアップの完了通知を受信する。第１接続部８１３は、呼び出し元のソフトウエアを搭載している仮想マシン１０１と呼び出し先のソフトウエアを搭載している仮想マシン１０１とを仮想ネットワークを介して接続させる。
【００７２】
第１配備部８０１、第１抽出部８０３、第１リスト記憶部８０５、第１決定部８０７、第１送信部８０９、第１受信部８１１及び第１接続部８１３は、ハードウエア資源（例えば図４あるいは図５３）を用いて実現される。また、第１配備部８０１、第１抽出部８０３、第１決定部８０７、第１送信部８０９、第１受信部８１１及び第１接続部８１３に含まれるプログラムは、例えばメモリ（図４の４０５あるいは図５３の２５０１）にロードされ、ＣＰＵ（図４の４０１あるいは図５３の２５０３）で順次実行される。
【００７３】
次に、管理装置４０９に含まれる自動スケーリング部４１３の構成について説明する。図９に、自動スケーリング部４１３の構成例を示す。自動スケーリング部４１３は、検出部９０１及びスケールアウト部９０３を有している。また、スケールアウト部９０３は、第２配備部９０５、第２抽出部９０７、第２リスト記憶部９１３、第２決定部９１５、第２送信部９１７、第２受信部９１９及び第２接続部９２１を有している。また、第２抽出部９０７は、第２特定部９０９及び第３特定部９１１を含んでいる。
【００７４】
検出部９０１は、処理負荷が基準を超えている仮想マシン１０１を検出する検出処理を行う。スケールアウト部９０３は、システムに仮想マシン１０１を増設するスケールアウト処理を行う。
【００７５】
第２配備部９０５は、新たな仮想マシン１０１を物理サーバ３０１に配備する第２配備処理を行う。第２抽出部９０７は、負荷超過となった仮想マシン１０１に搭載されているソフトウエアの中から、増設される仮想マシン１０１にセットアップすべきソフトウエアを抽出し、抽出されたソフトウエアのためのセットアップ自動化データを特定する第２抽出処理を行う。第２特定部９０９は、依存先のソフトウエアのためのセットアップ自動化データを特定する第２特定処理を行う。第３特定部９１１は、依存元のソフトウエアのためのセットアップ自動化データを特定する第３特定処理を行う。第２リスト記憶部９１３は、セットアップすべきセットアップ自動化データ名を並べた第２リストを記憶するために用いられる。第２決定部９１５は、セットアップに供されるセットアップ自動化データを順次決定する第２決定処理を行う。第２送信部９１７は、セットアップ自動化データ及びパッケージ（目的のソフトウエアを含むインストール単位のデータ）などのデータを仮想マシン１０１へ送信する。第２受信部９１９は、仮想マシン１０１から例えばセットアップの完了通知を受信する。第２接続部９２１は、呼び出し元のソフトウエアを搭載している仮想マシン１０１と呼び出し先のソフトウエアを搭載している仮想マシン１０１とを仮想ネットワークを介して接続させる。
【００７６】
検出部９０１、スケールアウト部９０３、第２配備部９０５、第２抽出部９０７、第２特定部９０９、第３特定部９１１、第２リスト記憶部９１３、第２決定部９１５、第２送信部９１７、第２受信部９１９、及び第２接続部９２１は、ハードウエア資源（例えば図４あるいは図５３）を用いて実現される。また、検出部９０１、スケールアウト部９０３、第２配備部９０５、第２抽出部９０７、第２特定部９０９、第３特定部９１１、第２決定部９１５、第２送信部９１７、第２受信部９１９、及び第２接続部９２１に含まれるプログラムは、例えばメモリ（図４の４０５あるいは図５３の２５０１）にロードされ、ＣＰＵ（図４の４０１あるいは図５３の２５０３）で順次実行される。
【００７７】
次に、仮想マシン１０１に含まれるエージェント５０１の構成について説明する。図１０に、エージェント５０１の構成例を示す。エージェント５０１は、受付部１００１、送信部１００３、セットアップ部１００５、第１関連付け部１００７、測定部１００９、第２関連付け部１０１１、選定部１０１３及び第１特定部１０１５を有している。セットアップ部１００５は、エージェント５０１と別に仮想マシン１０１に設けられるようにしてもよい。
【００７８】
受付部１００１は、管理装置４０９からセットアップ自動化データや選定要求などのデータを受け付ける。送信部１００３は、例えば管理装置４０９へ通知を送信する。セットアップ部１００５は、ソフトウエアをセットアップする処理を行う。第１関連付け部１００７は、セットアップ自動化データ名と起動スクリプト名とを関連付ける処理を行う。測定部１００９は、仮想マシン１０１の処理負荷を測定する処理を行う。第２関連付け部１０１１は、起動スクリプト名と起動されたプロセスのＩＤとを関連付ける処理を行う。選定部１０１３は、所定の条件に該当するプロセスを選定する処理を行う。第１特定部１０１５は、選定されたプロセスに係るソフトウエアのセットアップ自動化データを特定する処理を行う。
【００７９】
受付部１００１、送信部１００３、セットアップ部１００５、第１関連付け部１００７、測定部１００９、第２関連付け部１０１１、選定部１０１３及び第１特定部１０１５は、ハードウエア資源（例えば図５あるいは図５３）を用いて実現される。また、受付部１００１、送信部１００３、セットアップ部１００５、第１関連付け部１００７、測定部１００９、第２関連付け部１０１１、選定部１０１３及び第１特定部１０１５に含まれるプログラムは、例えばメモリ（図５の４０５あるいは図５３の２５０１）にロードされ、ＣＰＵ（図５の４０１あるいは図５３の２５０３）で順次実行される。
【００８０】
次に、補助記憶領域及び当該補助記憶領域に記憶されるデータについて説明する。まず、管理装置４０９用の補助記憶領域について説明する。図１１に、管理装置４０９用の補助記憶領域の例を示す。管理装置４０９用の補助記憶領域は、例えばいずれかの物理サーバ３０１に含まれる補助記憶装置４０３に設けられる。管理装置４０９用の補助記憶領域には、セットアップ自動化データ記憶部１１０１、パッケージ記憶部１１０３、ソフトウエア構成テーブル記憶部１１０５、仮想マシン管理テーブル記憶部１１０７及びイメージ記憶部１１０９が含まれる。管理装置４０９用の補助記憶領域は、物理サーバ３０１以外のストレージ装置に設けられるようにしてもよい。
【００８１】
セットアップ自動化データ記憶部１１０１、パッケージ記憶部１１０３、ソフトウエア構成テーブル記憶部１１０５、仮想マシン管理テーブル記憶部１１０７及びイメージ記憶部１１０９は、例えば図５３に示すハードウエア資源によって実現される。
【００８２】
セットアップ自動化データ記憶部１１０１は、システムの機能の一部を実現するためのソフトウエアに対応するセットアップ自動化データを予め記憶している。この例におけるセットアップ自動化データ記憶部１１０１は、アプリケーションＡのセットアップ自動化データ、アプリケーションＢのセットアップ自動化データ、ミドルウエアＰのセットアップ自動化データ、ミドルウエアＱのセットアップ自動化データ及びミドルウエアＲのセットアップ自動化データを記憶している。尚、図示するように、アプリケーションＡのセットアップ自動化データのファイル名は、「ａｐｌａ．ｒｂ」である。同じくアプリケーションＢのセットアップ自動化データのファイル名は、「ａｐｌｂ．ｒｂ」である。同じくミドルウエアＰのセットアップ自動化データのファイル名は、「ｍｉｄｐ．ｒｂ」である。同じくミドルウエアＱのセットアップ自動化データのファイル名は、「ｍｉｄｑ．ｒｂ」である。同じくミドルウエアＲのセットアップ自動化データのファイル名は、「ｍｉｄｒ．ｒｂ」である。
【００８３】
図１２に、セットアップ自動化データの例を示す。図１２は、ソフトウエア「ＡｐｌＢ」のセットアップ自動化データ「ａｐｌｂ．ｒｂ」の例を示している。範囲１２０１には、所定のパッケージ管理システムを用いて、ソフトウエア「ＡｐｌＢ」を含むパッケージ「ａｐｌｂ」をインストールさせる指示が記述されている。範囲１２０３には、サービス「ａｐｌｂ」で受け付けるコマンドを設定させ、プロセスを起動させる指示が記述されている。範囲１２０５には、「ａｐｌｂ＿ｃｏｎｆ．ｅｒｂ」というテンプレートを用いて、ソフトウエア「ＡｐｌＢ」の設定ファイル「／ｏｐｔ／ｅｔｃ／ａｐｌｂ．ｃｏｎｆ」を作成し、各変数に初期値を設定させる指示が記述されている。範囲１２０７には、「ｅｔｃ＿ｒｅｓｏｌｖｅ．ｃｏｎｆ．ｅｒｂ」というテンプレートを用いて、動作環境の設定ファイル「／ｅｔｃ／ｒｅｓｏｌｖｅ．ｃｏｎｆ」を作成し、各変数に初期値を設定させる指示が記述されている。
【００８４】
図１１の説明に戻る。パッケージ記憶部１１０３は、システムの機能の一部を実現するためのソフトウエアを含むパッケージを予め記憶している。この例におけるパッケージ記憶部１１０３は、アプリケーションＡのパッケージ（ソフトウエア「ＡｐｌＡ」を含む。）、アプリケーションＢのパッケージ（ソフトウエア「ＡｐｌＢ」を含む。）、ミドルウエアＰのパッケージ（ソフトウエア「ＭｉｄＰ」を含む。）、ミドルウエアＱのパッケージ（ソフトウエア「ＭｉｄＱ」を含む。）及びミドルウエアＲのパッケージ（ソフトウエア「ＭｉｄＲ」を含む。）を記憶している。
【００８５】
ソフトウエア構成テーブル記憶部１１０５は、ソフトウエア構成テーブルを記憶する。図１３に、ソフトウエア構成テーブルの例を示す。
【００８６】
このテーブルのレコードは、特定のソフトウエアに関するデータを格納する。この例におけるレコードは、ソフトウエアＩＤを設定するためのフィールドと、ソフトウエア名を設定するためのフィールドと、ソフトウエアの機能名を設定するためのフィールドとを有する。
【００８７】
また、このテーブルのレコードは、当該ソフトウエアと所定の関係を有する他のソフトウエアを特定するデータも格納する。この例におけるレコードは、依存先となるソフトウエアのＩＤを設定するためのフィールドと、呼び出し先となるソフトウエアのＩＤを設定するためのフィールドと、排他の対象とするソフトウエアのＩＤを設定するためのフィールドと、共通の仮想マシン１０１に同時に搭載されることが条件となっているソフトウエアのＩＤを設定するためのフィールドとを有する。
【００８８】
更に、このテーブルのレコードは、セットアップに関するデータを格納する。この例におけるレコードは、セットアップ自動化データ名を設定するためのフィールドと、搭載される仮想マシン１０１のＩＤを設定するためのフィールドとを有している。
【００８９】
例えば、システムの機能を設計する段階で、ソフトウエアＩＤ、ソフトウエア名、ソフトウエアの機能名、依存先となるソフトウエアのＩＤ、呼び出し先となるソフトウエアのＩＤ、排他の対象となるソフトウエアのＩＤ、共通の仮想マシン１０１に同時に搭載されることが条件となっているソフトウエアのＩＤ及びセットアップ自動化データ名が決められる。そして、ソフトウエアに仮想マシン１０１が割り当てられる段階で、仮想マシン１０１のＩＤが決められる。従って、システムの機能を設計した段階では、仮想マシン１０１のＩＤが決められているとは限らない。また、排他の対象となるソフトウエアを同じ仮想マシン１０１に搭載しないように、仮想マシン１０１が割り当てられる。
【００９０】
また、このテーブルのレコードに、依存元となるソフトウエアのＩＤを設定するためのフィールドを設けることによって、ソフトウエアの依存関係を特定するようにしてもよい。更に、このテーブルのレコードに、呼び出し元となるソフトウエアのＩＤを設定するためのフィールドを設けることによって、ソフトウエアの呼び出し関係を特定するようにしてもよい。
【００９１】
図１３に示した例は、図１に示したソフトウエア構成を前提としている。以下、第１レコードについて説明する。当該ソフトウエアＩＤ「Ｓ＿０１」で識別されるソフトウエアの名は「ＡｐｌＡ」であり、当該ソフトウエアは機能「アプリケーションＡ」を実現することを示している。
【００９２】
更に、第１レコードは、当該ソフトウエアが依存するソフトウエアのＩＤが「Ｓ＿０２」であり、当該ソフトウエアが呼び出すソフトウエアは無いことを示している。つまり、ソフトウエア「ＡｐｌＡ」は、ソフトウエア「ＭｉｄＰ」に依存するが、他のソフトウエアを呼び出さないことを意味している。
【００９３】
更に、第１レコードは、当該ソフトウエアにおいて排他の対象とするソフトウエアは無く、共通の仮想マシン１０１に同時に搭載されることが条件となっているソフトウエアのＩＤが「Ｓ＿０２」であることを示している。つまり、ソフトウエア「ＡｐｌＡ」が搭載される仮想マシン１０１には、ソフトウエア「ＭｉｄＰ」が同時に搭載される。また、ソフトウエア「ＡｐｌＡ」が搭載される仮想マシン１０１には、任意のソフトウエアが同時に搭載されるようにしてもよい。
【００９４】
更に、第１レコードは、当該ソフトウエアのセットアップに供されるセットアップ自動化データの名は「ａｐｌａ．ｒｂ」であり、当該ソフトウエアが搭載される仮想マシン１０１のＩＤは、「ＶＭ＿１０１」であることを示している。
【００９５】
次に、第２レコードについて説明する。当該ソフトウエアＩＤ「Ｓ＿０２」で識別されるソフトウエアの名は「ＭｉｄＰ」であり、当該ソフトウエアは、機能「ミドルウエアＰ」を実現することを示している。
【００９６】
更に、第２レコードは、当該ソフトウエアが依存するソフトウエアは無く、当該ソフトウエアが呼び出すソフトウエアのＩＤが「Ｓ＿０４」であることを示している。つまり、ソフトウエア「ＭｉｄＰ」は、他のソフトウエアに依存しないが、ソフトウエア「ミドルウエアＱ」を呼び出すことを意味している。
【００９７】
更に、第２レコードは、当該ソフトウエアにおいて排他の対象とするソフトウエアのＩＤが「Ｓ＿０５」であり、共通の仮想マシン１０１に同時に搭載されることが条件となっているソフトウエアはないことを示している。つまり、ソフトウエア「ＭｉｄＰ」が搭載される仮想マシン１０１に、ソフトウエア「ＭｉｄＲ」は搭載されない。また、ソフトウエア「ＭｉｄＰ」が搭載される仮想マシン１０１に、特定のソフトウエアが同時に搭載されるとは限らない。
【００９８】
更に、第２レコードは、当該ソフトウエアのセットアップに供されるセットアップ自動化データの名は「ｍｉｄｐ．ｒｂ」であり、当該ソフトウエアが搭載される仮想マシン１０１のＩＤは、「ＶＭ＿１０１」であることを示している。
【００９９】
次に、第３レコードについて説明する。当該ソフトウエアＩＤ「Ｓ＿０３」で識別されるソフトウエアの名は「ＡｐｌＢ」であり、当該ソフトウエアは機能「アプリケーションＢ」を実現することを示している。
【０１００】
更に、第３レコードは、当該ソフトウエアが依存するソフトウエアのＩＤが「Ｓ＿０４」であり、当該ソフトウエアが呼び出すソフトウエアは無いことを示している。つまり、ソフトウエア「ＡｐｌＢ」は、ソフトウエア「ＭｉｄＱ」に依存するが、他のソフトウエアを呼び出さないことを意味している。
【０１０１】
更に、第３レコードは、当該ソフトウエアにおいて排他の対象とするソフトウエアは無く、共通の仮想マシン１０１に同時に搭載されることが条件となっているソフトウエアのＩＤが「Ｓ＿０４」であることを示している。つまり、ソフトウエア「ＡｐｌＢ」が搭載される仮想マシン１０１には、ソフトウエア「ＭｉｄＱ」が同時に搭載される。また、ソフトウエア「ＡｐｌＢ」が搭載される仮想マシン１０１には、任意のソフトウエアが同時に搭載されるようにしてもよい。
【０１０２】
更に、第３レコードは、当該ソフトウエアのセットアップに供されるセットアップ自動化データの名は「ａｐｌｂ．ｒｂ」であり、当該ソフトウエアが搭載される仮想マシン１０１のＩＤは、「ＶＭ＿１０１」であることを示している。
【０１０３】
次に、第４レコードについて説明する。当該ソフトウエアＩＤ「Ｓ＿０４」で識別されるソフトウエアの名は「ＭｉｄＱ」であり、当該ソフトウエアは、機能「ミドルウエアＱ」を実現することを示している。
【０１０４】
更に、第４レコードは、当該ソフトウエアが依存するソフトウエアは無く、当該ソフトウエアが呼び出すソフトウエアのＩＤが「Ｓ＿０５」であることを示している。つまり、ソフトウエア「ＭｉｄＱ」は、他のソフトウエアに依存しないが、ソフトウエア「ミドルウエアＲ」を呼び出すことを意味している。
【０１０５】
更に、第４レコードは、当該ソフトウエアにおいて排他の対象とするソフトウエアのＩＤが「Ｓ＿０５」であり、共通の仮想マシン１０１に同時に搭載されることが条件となっているソフトウエアはないことを示している。つまり、ソフトウエア「ＭｉｄＱ」が搭載される仮想マシン１０１に、ソフトウエア「ＭｉｄＲ」は搭載されない。また、ソフトウエア「ＭｉｄＱ」が搭載される仮想マシン１０１に、特定のソフトウエアが同時に搭載されるとは限らない。
【０１０６】
更に、第４レコードは、当該ソフトウエアのセットアップに供されるセットアップ自動化データの名は「ｍｉｄｑ．ｒｂ」であり、当該ソフトウエアが搭載される仮想マシン１０１のＩＤは、「ＶＭ＿１０１」であることを示している。
【０１０７】
次に、第５レコードについて説明する。当該ソフトウエアＩＤ「Ｓ＿０５」で識別されるソフトウエアの名は「ＭｉｄＲ」であり、当該ソフトウエアは、機能「ミドルウエアＲ」を実現することを示している。
【０１０８】
更に、第５レコードは、当該ソフトウエアが依存するソフトウエアは無く、当該ソフトウエアが呼び出すソフトウエアも無いことを示している。つまり、ソフトウエア「ＭｉｄＲ」は、他のソフトウエアに依存せず、更に他のソフトウエアを呼び出さないことを意味している。
【０１０９】
更に、第５レコードは、当該ソフトウエアにおいて排他の対象とするソフトウエアのＩＤが「Ｓ＿０２」及び「Ｓ＿０４」であり、共通の仮想マシン１０１に同時に搭載されることが条件となっているソフトウエアはないことを示している。つまり、ソフトウエア「ＭｉｄＲ」が搭載される仮想マシン１０１に、ソフトウエア「ＭｉｄＰ」及びソフトウエア「ＭｉｄＱ」は搭載されない。また、ソフトウエア「ＭｉｄＲ」が搭載される仮想マシン１０１に、特定のソフトウエアが同時に搭載されるとは限らない。
【０１１０】
更に、第５レコードは、当該ソフトウエアのセットアップに供されるセットアップ自動化データの名は「ｍｉｄｒ．ｒｂ」であり、当該ソフトウエアが搭載される仮想マシン１０１のＩＤは、「ＶＭ＿１０２」であることを示している。
【０１１１】
いずれかのソフトウエアに依存するソフトウエアは、依存先のソフトウエアと同じ仮想マシン１０１に搭載されるので、当該ソフトウエアが搭載される仮想マシン１０１は自ずと定まる。従って、依存先が存在するソフトウエアについては、仮想マシンＩＤの設定を省略するようにしてもよい。つまり、依存先のソフトウエアが無いソフトウエアに限って、仮想マシンＩＤを設定するようにしてもよい。例えば図１３の例において、第１レコードの仮想マシンＩＤと第３レコードの仮想マシンＩＤとを設定しないようにしてもよい。尚、この例に示したソフトウエア構成テーブルは、ソフトウエアトポロジーと呼ばれることもある。
【０１１２】
図１１の説明に戻る。仮想マシン管理テーブル記憶部１１０７は、仮想マシン管理テーブルを記憶する。図１４に、仮想マシン管理テーブルの例を示す。仮想マシン管理テーブルは、システムに含まれる仮想マシン１０１毎のレコードを有する。
【０１１３】
このテーブルのレコードは、当該仮想マシン１０１のＩＤを設定するためのフィールドと、物理サーバＩＤを設定するためのフィールドと、ＣＰＵのデータを設定するためのフィールドと、メモリのデータを設定するためのフィールドと、ＩＰアドレスを設定するためのフィールドとを有している。物理サーバＩＤは、当該仮想マシン１０１が配備される物理サーバのＩＤである。ＣＰＵのデータは、当該仮想マシン１０１に割り当てられるＣＰＵの動作周波数と個数を示す。メモリのデータは、当該仮想マシン１０１に割り当てられるメモリのサイズを示す。ＩＰアドレスは、当該仮想マシン１０１に割り当てられるＩＰアドレスを示す。
【０１１４】
この例における第１レコードは、仮想マシンＩＤ「ＶＭ＿１０１」で識別される仮想マシン１０１ａは、物理サーバＩＤ「ＰＳ＿００１」で識別される物理サーバ３０１ａに配備されることを示している。更に第１レコードは、当該仮想マシン１０１に、動作周波数「２ＧＨｚ」のＣＰＵが４つ割り当てられ、サイズ「６４ＧＢ」のメモリが割り当てられていることを示している。第１レコードは、当該仮想マシン１０１に、ＩＰアドレス「１９２．１６８．１０．２」が割り当てられていることを示している。
【０１１５】
この例における第２レコードは、仮想マシンＩＤ「ＶＭ＿１０２」で識別される仮想マシン１０１ｂは、物理サーバＩＤ「ＰＳ＿００２」で識別される物理サーバ３０１ｂに配備されることを示している。更に第２レコードは、当該仮想マシン１０１に、動作周波数「２ＧＨｚ」のＣＰＵが２つ割り当てられ、サイズ「１２８ＧＢ」のメモリが割り当てられていることを示している。第２レコードは、当該仮想マシン１０１に、ＩＰアドレス「１９２．１６８．１２．５」が割り当てられていることを示している。
【０１１６】
図１１の説明に戻る。イメージ記憶部１１０９は、仮想マシン１０１に展開されるイメージ５０５を予め記憶している。図５に示したように、イメージ５０５にはエージェント５０１及びＯＳ５０３が含まれている。イメージ記憶部１１０９で記憶されるイメージは、ディスクイメージを含むようにしてもよい。
【０１１７】
次に、仮想マシン１０１用の補助記憶領域について説明する。図１５に、仮想マシン１０１ａ用の補助記憶領域の例を示す。仮想マシン１０１用の補助記憶領域は、例えばいずれかの物理サーバ３０１に含まれる補助記憶装置４０３に設けられる。仮想マシン１０１ａ用の補助記憶領域には、起動スクリプト記憶部１５０１、ソフトウエア記憶部１５０３、プロセス管理テーブル記憶部１５０５、第１関連テーブル記憶部１５０７及び第２関連テーブル記憶部１５０９が含まれる。仮想マシン１０１用の補助記憶領域は、物理サーバ３０１以外のストレージ装置に設けられるようにしてもよい。
【０１１８】
起動スクリプト記憶部１５０１、ソフトウエア記憶部１５０３、プロセス管理テーブル記憶部１５０５、第１関連テーブル記憶部１５０７及び第２関連テーブル記憶部１５０９は、例えば図５３に示すハードウエア資源によって実現される。
【０１１９】
起動スクリプト記憶部１５０１は、仮想マシン１０１にセットアップされたソフトウエア毎の起動スクリプトを記憶する。この例における起動スクリプト記憶部１５０１は、アプリケーションＡの起動スクリプト、アプリケーションＢの起動スクリプト、ミドルウエアＰの起動スクリプト及びミドルウエアＱの起動スクリプトを記憶している。尚、図示するように、アプリケーションＡの起動スクリプトのファイル名（パスを含む）は、「／ｏｐｔ／ｘｘｘ／ｂｉｎ／ａｐｌａ．ｓｈ」である。同じくアプリケーションＢの起動スクリプトのファイル名（パスを含む）は、「／ｏｐｔ／ｌｏｃａｌ／ｂｉｎ／ａｐｌｂ．ｓｈ」である。同じくミドルウエアＰの起動スクリプトのファイル名（パスを含む）は、「／ｅｔｃ／ｉｎｉｔ．ｄ／ｈｔｔｐｄ」である。同じくミドルウエアＱの起動スクリプトのファイル名（パスを含む）は、「／ｏｐｔ／ｌｏｃａｌ／ｂｉｎ／ｍｉｄｑ．ｓｈ」である。図１５は、異なるパスに起動スクリプトのファイルを格納している例を示しているが、起動スクリプトのファイルを共通のパスに格納するようにしてもよい。
【０１２０】
ソフトウエア記憶部１５０３は、仮想マシン１０１にセットアップされたソフトウエアを記憶する。この例におけるソフトウエア記憶部１５０３は、機能「アプリケーションＡ」に係るソフトウエア「ＡｐｌＡ」、機能「アプリケーションＢ」に係るソフトウエア「ＡｐｌＢ」、機能「ミドルウエアＰ」に係るソフトウエア「ＭｉｄＰ」及び機能「ミドルウエアＱ」に係るソフトウエア「ＭｉｄＱ」を記憶している。ソフトウエア記憶部１５０３は、インストールされたパッケージに含まれているその他のソフトウエアを記憶するようにしてもよい。尚、先に述べた通り「ソフトウエア」の語は、「プログラム」の意味として用いている。
【０１２１】
プロセス管理テーブル記憶部１５０５は、プロセス管理テーブルを記憶する。図１６に、プロセス管理テーブルの例を示す。プロセス管理テーブルは、仮想マシン１０１で稼動しているプロセス毎のレコードを有する。
【０１２２】
このテーブルのレコードは、当該プロセスのＩＤを設定するためのフィールドと、ＣＰＵ使用率を設定するためのフィールドと、メモリ使用量を設定するためのフィールドと、コマンド名を設定するためのフィールドとを有している。
【０１２３】
ＣＰＵ使用率は、仮想マシン１０１において当該プロセスがＣＰＵを占有している時間の割合である。メモリ使用量は、仮想マシン１０１において当該プロセスが使用しているメモリの量である。コマンド名は、仮想マシン１０１において当該プロセスを起動させたコマンドの名である。
【０１２４】
この例における第１レコードは、プロセスＩＤ「１２３４」で識別されるプロセスのＣＰＵ使用率は、「０．１」であることを示している。また、第１レコードは、当該プロセスのメモリ使用量は、「６４Ｍ」であることを示している。更に、第１レコードは、当該プロセスは、コマンド「ｍｉｄｐ」で起動されたことを示している。
【０１２５】
第２レコードは、プロセスＩＤ「１６２３」で識別されるプロセスのＣＰＵ使用率は、「０．１」であることを示している。また、第２レコードは、当該プロセスのメモリ使用量は、「３００Ｍ」であることを示している。更に、第２レコードは、当該プロセスは、コマンド「ｍｉｄｑ」で起動されたことを示している。
【０１２６】
第３レコードは、プロセスＩＤ「１８４１」で識別されるプロセスのＣＰＵ使用率は、「０．１」であることを示している。また、第３レコードは、当該プロセスのメモリ使用量は、「３２Ｍ」であることを示している。更に、第３レコードは、当該プロセスは、コマンド「ａｐｌａ」で起動されたことを示している。
【０１２７】
第４レコードは、プロセスＩＤ「２０５７」で識別されるプロセスのＣＰＵ使用率は、「０．６」であることを示している。また、第４レコードは、当該プロセスのメモリ使用量は、「２５６Ｍ」であることを示している。更に、第４レコードは、当該プロセスは、コマンド「ａｐｌｂ」で起動されたことを示している。
【０１２８】
図示したプロセスの状態で、例えばＣＰＵ使用率に基づいて処理負荷を判断すると、プロセスＩＤ「２０５７」で識別されるプロセスの処理負荷が高いことになる。
【０１２９】
図１５の説明に戻る。第１関連テーブル記憶部１５０７は、第１関連付け処理（図６のＳ６１５）によって設けられる第１関連テーブルを記憶する。図１７に、第１関連テーブルの例を示す。
【０１３０】
このテーブルのレコードは、セットアップ自動化データ名を設定するためのフィールドと、起動スクリプト名を設定するためのフィールドとを有している。起動スクリプト名は、当該セットアップ自動化データによって生成された起動スクリプトの名である。
【０１３１】
この例における第１レコードは、セットアップ自動化データ「ｍｉｄｐ．ｒｂ」によって起動スクリプト「／ｅｔｃ／ｉｎｉｔ．ｄ／ｈｔｔｐｄ」が生成されたことを示している。同じく第２レコードは、セットアップ自動化データ「ｍｉｄｑ．ｒｂ」によって起動スクリプト「／ｏｐｔ／ｌｏｃａｌ／ｍｉｄｑ．ｓｈ」が生成されたことを示している。同じく第３レコードは、セットアップ自動化データ「ａｐｌａ．ｒｂ」によって起動スクリプト「／ｏｐｔ／ｘｘｘ／ｂｉｎ／ａｐｌａ．ｓｈ」が生成されたことを示している。同じく第４レコードは、セットアップ自動化データ「ａｐｌｂ．ｒｂ」によって起動スクリプト「／ｏｐｔ／ｌｏｃａｌ／ｂｉｎ／ａｐｌｂ．ｓｈ」が生成されたことを示している。
【０１３２】
図１５の説明に戻る。第２関連テーブル記憶部１５０９は、第２関連付け処理（図６のＳ６１９）によって設けられる第２関連テーブルを記憶する。図１８に、第２関連テーブルの例を示す。第２関連テーブルは、起動スクリプト毎のレコードを有する。
【０１３３】
このテーブルのレコードは、起動スクリプト名を設定するためのフィールドと、プロセスＩＤを設定するためのフィールドとを有している。起動スクリプト名は、起動スクリプトのファイルの位置を示すパスと当該ファイル名とを含んでいる。プロセスＩＤは、当該起動スクリプトによって起動されたプロセスのＩＤである。
【０１３４】
この例における第１レコードは、起動スクリプト「／ｅｔｃ／ｉｎｉｔ．ｄ／ｈｔｔｐｄ」によって、プロセスＩＤ「１２３４」のプロセスが起動されたことを示している。同じく第２レコードは、起動スクリプト「／ｏｐｔ／ｌｏｃａｌ／ｍｉｄｑ．ｓｈ」によって、プロセスＩＤ「１６２３」のプロセスが起動されたことを示している。同じく第３レコードは、起動スクリプト「／ｏｐｔ／ｘｘｘ／ｂｉｎ／ａｐｌａ．ｓｈ」によって、プロセスＩＤ「１８４１」のプロセスが起動されたことを示している。同じく第４レコードは、起動スクリプト「／ｏｐｔ／ｌｏｃａｌ／ｂｉｎ／ａｐｌｂ．ｓｈ」によって、プロセスＩＤ「２０５７」のプロセスが起動されたことを示している。
【０１３５】
次に、構築フェーズにおける処理について説明する。まず、構築フェーズにおける管理装置４０９側の構築処理について説明する。図１９に、構築処理フローを示す。第１配備部８０１は、例えばソフトウエア構成テーブルあるいは仮想マシン管理テーブルに基づいて、システムにおいて用いられる仮想マシン１０１を１つ特定する（Ｓ１９０１）。第１配備部８０１は、特定された仮想マシン１０１をいずれかの物理サーバ３０１に配備する。このとき第１配備部８０１は、配備された仮想マシン１０１にエージェント５０１とＯＳ５０３とを含むイメージ５０５を展開する（Ｓ１９０３）。尚、上述したＳ１９０１及びＳ１９０３は、図６に示した第１配備処理（Ｓ６０１）に相当する。
【０１３６】
第１抽出部８０３は、第１抽出処理を実行する（Ｓ１９０５）。第１抽出部８０３は、第１抽出処理において、ソフトウエア構成テーブルから、Ｓ１９０１で特定された仮想マシン１０１のＩＤが設定されているレコードを検索する。そして、第１抽出部８０３は、検索されたレコードのソフトウエア名を、第１リストに登録する。複数のレコードが検索された場合には、それぞれのレコードにおけるソフトウエア名を、第１リストに登録する。このようにすれば、仮想マシン１０１に搭載するソフトウエアが抽出される。
【０１３７】
但し、上述したように、図１３に示したソフトウエア構成テーブルにおいて、他のソフトウエアに依存するソフトウエアについて仮想マシンＩＤの設定を省略している場合には、図２０に示した第１抽出処理を実行する。
【０１３８】
第１抽出部８０３は、ソフトウエア構成テーブルから、Ｓ１９０１で特定された仮想マシン１０１のＩＤが設定されているレコードを検索する。そして、第１抽出部８０３は、当該レコードに設定されているソフトウエア名を第１リストに登録する（Ｓ２００１）。
【０１３９】
第１抽出部８０３は、第１リストに登録されているソフトウエア名を１つ特定する（Ｓ２００３）。例えば、第１リストの先頭から順次ソフトウエア名が特定される。第１抽出部８０３は、依存先のフィールドに、Ｓ２００３で特定されたソフトウエア名に対応するソフトウエアＩＤが設定されているレコードを検索する。そして、第１抽出部８０３は、当該レコードに設定されているソフトウエア名を第１リストに登録する（Ｓ２００５）。
【０１４０】
第１抽出部８０３は、第１リストにおいて未特定のソフトウエアがあるか否かを判定する（Ｓ２００７）。未特定のソフトウエアがあると判定した場合には、Ｓ２００３の処理に戻って上述した処理を繰り返す。未特定のソフトウエアがないと判定した場合には、第１抽出処理を終えて、図１９のＳ１９０７へ戻る。
【０１４１】
尚、Ｓ２００５において第１リストに登録されたソフトウエアも、Ｓ２００３において特定される対象となる。このようにすれば、依存元のソフトウエアに更に依存するソフトウエアに遡って、間接的に依存しているソフトウエアも抽出することができる。
【０１４２】
図２１に、第１リストの例を示す。第１リストは、セットアップすべきソフトウエアに関するレコードを有している。
【０１４３】
このリストのレコードは、当該ソフトウエアの名を設定するためのフィールドと、セットアップ済みフラグのフィールドとを有している。当該ソフトウエアがセットアップされていない場合に、セットアップ済みフラグにＯＦＦが設定され、当該ソフトウエアがセットアップされた場合に、セットアップ済みフラグにＯＮが設定される。
【０１４４】
この例における第１リストは、ソフトウエア「ＭｉｄＰ」、ソフトウエア「ＭｉｄＱ」、ソフトウエア「ＡｐｌＡ」及びソフトウエア「ＡｐｌＢ」をセットアップすることを示している。また、この段階では、いずれのソフトウエアもセットアップされていないことを示している。
【０１４５】
図１９の説明に戻る。Ｓ１９０７乃至Ｓ１９１５の処理によって、第１抽出処理（Ｓ１９０５）において抽出されたソフトウエアをセットアップさせる。
【０１４６】
第１決定部８０７は、第１決定処理を実行する（Ｓ１９０７）。図２２に、第１決定処理フローを示す。第１決定部８０７は、第１リストにおいて、セットアップ済フラグのフィールドにＯＦＦと設定されているレコードを検索し、セットアップされていないソフトウエアの名を１つ特定する（Ｓ２２０１）。
【０１４７】
第１決定部８０７は、ソフトウエア構成テーブルにおいて、Ｓ２２０１で特定されたソフトウエア名に対応するレコードにおける依存先のフィールドにいずれかのソフトウエアが設定されているか否かを判定する（Ｓ２２０３）。
【０１４８】
Ｓ２２０１で特定されたソフトウエア名に対応するレコードにおける依存先のフィールドにいずれのソフトウエアも設定されていない場合、つまり依存先のソフトウエアがない場合には、第１決定部８０７は、当該ソフトウエアを次にセットアップする順番に決定する（Ｓ２２０７）。
【０１４９】
一方、Ｓ２２０１で特定されたソフトウエア名に対応するレコードにおける依存先のフィールドにいずれかのソフトウエアが設定されている場合、つまり依存先のソフトウエアがある場合には、第１決定部８０７は、依存先のソフトウエアがセットアップ済みであるか否かを判定する（Ｓ２２０５）。具体的には、第１リストにおいて、依存先のソフトウエアに対応するレコードのセットアップ済フラグのフィールドにＯＮと設定されている場合に、第１決定部８０７は、依存先のソフトウエアがセットアップ済みであると判定する。
【０１５０】
依存先のソフトウエアがセットアップ済みでないと判定した場合には、Ｓ２２０１に戻って、上述の処理を繰り返す。一方、依存先のソフトウエアがセットアップ済みであると判定した場合には、第１決定部８０７は、当該ソフトウエアを次にセットアップする順番に決定する（Ｓ２２０７）。そして、第１決定処理を終え、図１９に示したＳ１９０９の処理に戻る。
【０１５１】
Ｓ２２０３において、ソフトウエア構成テーブルに基づいて、共通の仮想マシン１０１に同時に搭載されることが条件となっているソフトウエアがあるか否かを判断するようにしてもよい。そして、共通の仮想マシン１０１に同時に搭載されることが条件となっているソフトウエアを依存先のソフトウエアと同様に扱うようにしてもよい。
【０１５２】
図１９の説明に戻る。第１送信部８０９は、第１決定処理において決定したソフトウエアのセットアップ自動化データを、Ｓ１９０３において配備された仮想マシン１０１に送信する（Ｓ１９０９）。
【０１５３】
第１受信部８１１は、待機して、仮想マシン１０１から完了通知を受信する（Ｓ１９１１）。完了通知を受信すると、第１決定部８０７は、セットアップ済を記録する（Ｓ１９１３）。つまり、第１決定部８０７は、第１リストにおける当該ソフトウエアに対応するセットアップ済フラグのフィールドにＯＮを設定する。
【０１５４】
第１決定部８０７は、未だセットアップされていないソフトウエアがあるか否かを判定する（Ｓ１９１５）。未だセットアップされていないソフトウエアがあると判定した場合には、Ｓ１９０７に戻って、上述した処理を繰り返す。
【０１５５】
一方、セットアップされていないソフトウエアがないと判定した場合には、第１配備部８０１は、未配備の仮想マシン１０１があるか否かを判定する（Ｓ１９１７）。未配備の仮想マシン１０１があると判定した場合には、Ｓ１９０１に戻って、上述した処理を繰り返す。
【０１５６】
一方、未配備の仮想マシン１０１がないと判定した場合には、第１接続部８１３は、接続処理を実行する（Ｓ１９１９）。
【０１５７】
図２３に、接続処理フローを示す。第１送信部８０９は、システムで稼動するソフトウエアの呼び出し関係を１つ特定する（Ｓ２３０１）。具体的には、第１送信部８０９は、ソフトウエア構成テーブルのいずれかのレコードで、呼び出し先にいずれかのソフトウエアＩＤが設定されている場合に、呼び出し元のソフトウエアと呼び出し先のソフトウエアとを特定する。第１送信部８０９は、呼び出し元のソフトウエアが搭載されている仮想マシン１０１と呼び出し元のソフトウエアが搭載されている仮想マシン１０１との間を、仮想ネットワークを介して接続するように設定する（Ｓ２３０３）。
【０１５８】
そして、第１送信部８０９は、ソフトウエア構成テーブルにおいて未特定の呼び出し関係があるか否かを判定する（Ｓ２３０５）。未特定の呼び出し関係があると判定した場合には、Ｓ２３０１に戻って、上述した処理を繰り返す。未特定の呼び出し関係がないと判定した場合には、接続処理を終え、図１９に示した構築処理フローに戻る。そして、管理装置４０９は、構築処理を終える。
【０１５９】
続いて、構築フェーズにおける仮想マシン１０１側の処理について説明する。まず、図１９に示したＳ１９０９において管理装置４０９から送信されたセットアップ自動化データを受信した場合の仮想マシン１０１側の第１エージェント処理（図６のＳ６０９）について説明する。
【０１６０】
図２４に、第１エージェント処理フローを示す。受付部１００１は、待機して、管理装置４０９からセットアップ自動化データを受け付ける（Ｓ２４０１）。セットアップ自動化データを受け付けると、エージェント５０１は、セットアップ部１００５によるセットアップ処理を起動する（Ｓ２４０３）。
【０１６１】
図２５に、セットアップ処理フローを示す。セットアップ部１００５は、セットアップ自動化データにおいて指示されたパッケージをインストールする（Ｓ２５０１）。当該パッケージには、セットアップしようとするソフトウエアが含まれている。このとき、セットアップ自動化データにおいてインストーラが指定されている場合には、セットアップ部１００５は、当該インストーラを起動するようにしてもよい。この例におけるインストーラは、パッケージ管理システムと呼ばれる。
【０１６２】
このとき、管理装置４０９側では、構築部４１１に含まれる第１送信部８０９が、パッケージを送信する。尚、後述する運用フェーズにおいてセットアップする場合には、スケールアウト部９０３に含まれる第２送信部９１７が、パッケージを送信する。
【０１６３】
仮想マシン１０１側の処理に戻って、セットアップ部１００５は、セットアップ自動化データに基づいて起動スクリプトを生成する（Ｓ２５０３）。そして、セットアップ部１００５は、生成された起動スクリプトの名を第１関連付け部１００７へ渡す（Ｓ２５０５）。図１７に示したように、この例ではパスを含むファイル名の形式によるスクリプト名が渡される。
【０１６４】
更に、セットアップ部１００５は、セットアップ自動化データに含まれる指示に従って、初期設定を行う（Ｓ２５０７）。その後、エージェント５０１は、起動スクリプトを実行して、プロセスを起動させる（Ｓ２５０９）。プロセスを起動させると、セットアップ部１００５はセットアップ処理を終える。尚、セットアップ部１００５は、プロセスを起動させた後に、初期設定を行うようにしてもよい。
【０１６５】
図２４の説明に戻る。エージェント５０１は、Ｓ２４０３においてセットアップ処理を起動すると、セットアップ処理の終了を待たずにＳ２４０５の処理に移る。そして、第１関連付け部１００７は、第１関連付け処理を実行する（Ｓ２４０５）。
【０１６６】
図２６に、第１関連付け処理フローを示す。第１関連付け部１００７は、図２５に示したＳ２５０５の処理によってセットアップ部１００５から渡される起動スクリプト名を取得する（Ｓ２６０１）。第１関連付け部１００７は、図２４に示したＳ２４０１の処理において受け付けたセットアップ自動化データの名と起動スクリプト名とを関連付けて、第１関連テーブルに記録する（Ｓ２６０３）。そして、第１関連付け処理を終えると、図２４のＳ２４０７に戻る。
【０１６７】
図２４の説明に戻る。エージェント５０１は、セットアップ部１００５によるセットアップ処理が終了したか否かを判定する（Ｓ２４０７）。セットアップ部１００５によるセットアップ処理が終了していないと判定した場合には、更にＳ２４０７における判定処理を繰り返す。
【０１６８】
セットアップ部１００５によるセットアップ処理が終了したと判定した場合には、送信部１００３は、セットアップの完了通知を管理装置４０９へ送信する（Ｓ２４０９）。そして、Ｓ２４０１における待機状態へ戻る。
【０１６９】
次に、図２５のＳ２５０９におけるプロセスの起動を監視する第２エージェント処理（図６のＳ６１９）について説明する。図２７に、第２エージェント処理フローを示す。第２関連付け部１０１１は、ＯＳ５０３から新たに起動されたプロセスのコマンド名を取得する（Ｓ２７０１）。このとき、第２関連付け部１０１１は、ＯＳ５０３からプロセス管理テーブルを取得し、新たに起動されたプロセスを特定するようにしてもよい。
【０１７０】
第２関連付け部１０１１は、取得したコマンド名が、第１関連テーブルに記録されているいずれかの起動スクリプト名に合致するか否かを判定する（Ｓ２７０３）。この例では、コマンド名が起動スクリプト名に含まれるファイル基底名と一致する場合に、第２関連付け部１０１１は、コマンド名が起動スクリプト名に合致すると判定する。また、起動スクリプト名とコマンド名との対応関係が予め定められている場合には、コマンド名が所定の起動スクリプト名と対応する場合に、第２関連付け部１０１１は、コマンド名が起動スクリプト名に合致すると判定するようにしてもよい。
【０１７１】
取得したコマンド名が、第１関連テーブルに記録されているいずれの起動スクリプト名にも合致しないと判定した場合には、Ｓ２７０１へ戻って上述した処理を繰り返す。
【０１７２】
一方、取得したコマンド名が、第１関連テーブルに記録されているいずれかの起動スクリプト名に合致すると判定した場合には、第２関連付け部１０１１は、ＯＳ５０３からプロセス管理テーブルを取得する（Ｓ２７０５）。Ｓ２７０１において取得したプロセス管理テーブルを用いる場合には、Ｓ２７０５による取得処理は省略してもよい。
【０１７３】
第２関連付け部１０１１は、プロセス管理テーブルに基づいて、新たに起動されたプロセスのＩＤを特定する（Ｓ２７０７）。そして、第２関連付け部１０１１は、起動スクリプト名とプロセスＩＤとを関連付けて、第２関連テーブルに記録する（Ｓ２７０９）。
【０１７４】
尚、上述した例では、第１関連テーブルとは別に第２関連テーブルを設けているが、第１関連テーブルと第２関連テーブルとを一体化したテーブルを用いるようにしてもよい。図２８に、第１関連テーブルと第２関連テーブルとを一体化した関連テーブルの例を示す。この例における関連テーブルのレコードは、セットアップ自動化データ名を設定するためのフィールドと、起動スクリプト名を設定するためのフィールドと、プロセスＩＤを設定するためのフィールドとを有している。
【０１７５】
この例における第１レコードは、セットアップ自動化データ「ｍｉｄｐ．ｒｂ」によって起動スクリプト「／ｅｔｃ／ｉｎｉｔ．ｄ／ｈｔｔｐｄ」が生成され、当該起動スクリプトによってプロセスＩＤ「１２３４」のプロセスが起動されたことを示している。同じく第２レコードは、セットアップ自動化データ「ｍｉｄｑ．ｒｂ」によって起動スクリプト「／ｏｐｔ／ｌｏｃａｌ／ｍｉｄｑ．ｓｈ」が生成され、当該起動スクリプトによってプロセスＩＤ「１６２３」のプロセスが起動されたことを示している。同じく第３レコードは、セットアップ自動化データ「ａｐｌａ．ｒｂ」によって起動スクリプト「／ｏｐｔ／ｘｘｘ／ｂｉｎ／ａｐｌａ．ｓｈ」が生成され、当該起動スクリプトによってプロセスＩＤ「１８４１」のプロセスが起動されたことを示している。同じく第４レコードは、セットアップ自動化データ「ａｐｌｂ．ｒｂ」によって起動スクリプト「／ｏｐｔ／ｌｏｃａｌ／ｂｉｎ／ａｐｌｂ．ｓｈ」が生成され、当該起動スクリプトによってプロセスＩＤ「２０５７」のプロセスが起動されたことを示している。
【０１７６】
図２７の説明に戻る。Ｓ２７０９の処理において、第２関連付け部１０１１は、図２８に示した関連テーブルにおいて起動スクリプト名に関連付けて、プロセスＩＤを記録するようにしてもよい。そして、Ｓ２７０９の処理を終えると、Ｓ２７０１へ戻る。
【０１７７】
続いて、運用フェーズにおける処理フローについて説明する。まず、運用フェーズにおける管理装置４０９側の処理について説明する。運用フェーズでは、管理装置４０９側の自動スケーリング部４１３が自動スケーリング処理を実行する。
【０１７８】
図２９に、自動スケーリング処理フローを示す。検出部９０１は、例えばソフトウエア構成テーブルあるいは仮想マシン管理テーブルに基づいて、システムで用いている仮想マシン１０１を１つ特定する（Ｓ２９０１）。検出部９０１は、例えば所定の順番に従って仮想マシン１０１を特定するようにしてもよい。検出部９０１は、特定された仮想マシン１０１に、当該仮想マシン１０１における処理負荷を問い合わせる（Ｓ２９０３）。
【０１７９】
検出部９０１は、仮想マシン１０１から当該仮想マシン１０１の処理負荷を示すデータを取得すると（Ｓ２９０５）、当該仮想マシン１０１の処理負荷が所定基準を超えているか否かを判定する（Ｓ２９０７）。例えば、検出部９０１は、当該仮想マシン１０１のＣＰＵ使用率が所定の使用率を超えている場合に、当該仮想マシン１０１の処理負荷が所定基準を超えていると判定する。あるいは、検出部９０１は、当該仮想マシン１０１のメモリ使用率が所定のメモリ使用率を超えている場合に、当該仮想マシン１０１の処理負荷が所定基準を超えていると判定するようにしてもよい。あるいは、検出部９０１は、当該仮想マシン１０１のレスポンスタイムが所定の時間を超えている場合に、当該仮想マシン１０１の処理負荷が所定基準を超えていると判定するようにしてもよい。当該仮想マシン１０１の処理負荷が所定基準を超えていないと判定した場合には、Ｓ２９０１へ戻って、上述した処理を繰り返す。
【０１８０】
当該仮想マシン１０１の処理負荷が所定基準を超えていると判定した場合には、スケールアウト部９０３は、スケールアウト処理を実行する（Ｓ２９０９）。尚、上述したＳ２９０１乃至Ｓ２９０７は、検出処理（図７のＳ７０７）に相当する。
【０１８１】
図３０に、スケールアウト処理フローを示す。第２配備部９０５は、新たな仮想マシン１０１をいずれかの物理サーバ３０１に配備する。このとき第２配備部９０５は、配備された仮想マシン１０１にエージェント５０１とＯＳ５０３とを含むイメージ５０５を展開する（Ｓ３００１）。Ｓ３００１における処理は、図７に示した第２配備処理（Ｓ７０９）に相当する。
【０１８２】
第２抽出部９０７は、第２抽出処理を実行する（Ｓ３００３）。第２抽出部９０７は、第２抽出処理において、図２９のＳ２９０７において処理負荷が基準を超えていると判定された仮想マシン１０１、つまり負荷超過となった仮想マシン１０１に搭載されているソフトウエアのうち、新たにセットアップすべきソフトウエアを抽出し、抽出されたソフトウエアのためのセットアップ自動化データを特定する。
【０１８３】
図３１に、第２抽出処理（Ａ）フローを示す。第２抽出部９０７は、負荷超過となった仮想マシン１０１へ選定要求を送信する（Ｓ３１０１）。選定要求は、負荷超過となった仮想マシン１０１に、所定の条件に該当するプロセスに係るソフトウエアを選定させるための要求である。
【０１８４】
第２抽出部９０７は、負荷超過となった仮想マシン１０１から、所定の条件に該当するプロセスに係るソフトウエアのセットアップ自動化データ名を受信し、受信したセットアップ自動化データ名を第２リストに登録する（Ｓ３１０３）。
【０１８５】
図３２に、第２リストの例を示す。第２リストは、増設される仮想マシン１０１におけるセットアップに供されるべきセットアップ自動化データに関するレコードを有している。
【０１８６】
このリストのレコードは、セットアップ自動化データ名を設定するためのフィールドと、セットアップ済みフラグのフィールドとを有している。当該セットアップ自動化データによるセットアップが行われていない場合に、セットアップ済みフラグにＯＦＦが設定され、当該セットアップ自動化データによるセットアップが行われた場合に、セットアップ済みフラグにＯＮが設定される。
【０１８７】
この例における第２リストは、セットアップ自動化データ「ａｐｌｂ．ｒｂ」及びセットアップ自動化データ「ｍｉｄｑ．ｒｂ」がセットアップに供されることを示している。また、この段階では、いずれのセットアップ自動化データもセットアップに供されていないことを示している。
【０１８８】
図３１の説明に戻る。第２特定部９０９は、第２特定処理を実行する（Ｓ３１０５）。第２特定部９０９は、第２特定処理において、負荷超過となった仮想マシン１０１によって選定されたソフトウエアの依存先に相当するソフトウエアのためのセットアップ自動化データを特定する。
【０１８９】
図３３に、第２特定処理フローを示す。第２特定部９０９は、第２リストに登録されているセットアップ自動化データ名を１つ特定する（Ｓ３３０１）。第２特定部９０９は、ソフトウエア構成テーブルを用いて、当該セットアップ自動化データがセットアップ対象とするソフトウエアを特定する（Ｓ３３０３）。
【０１９０】
第２特定部９０９は、ソフトウエア構成テーブルを用いて、Ｓ３３０３において特定されたソフトウエアが依存するソフトウエア、つまり依存先のソフトウエアを特定する（Ｓ３３０５）。更に、第２特定部９０９は、ソフトウエア構成テーブルを用いて、依存先のソフトウエアのためのセットアップ自動化データの名を特定し、特定したセットアップ自動化データ名を第２リストに登録する（Ｓ３３０７）。
【０１９１】
第２特定部９０９は、第２リストにおいて未特定のセットアップ自動化データ名があるか否かを判定する（Ｓ３３０９）。未特定のセットアップ自動化データ名があると判定した場合には、Ｓ３３０１へ戻って、上述した処理を繰り返す。
【０１９２】
尚、Ｓ３３０７において登録されたセットアップ自動化データ名は、Ｓ３３０９において未特定であると判定され、Ｓ３３０１において特定される対象となる。このようにすれば、依存先のソフトウエアが依存するソフトウエア、つまり間接的に依存するソフトウエアも特定することができる。
【０１９３】
Ｓ３３０９において、未特定のセットアップ自動化データ名がないと判定した場合には、第２特定処理を終え、図３１に示した第２抽出処理（Ａ）へ戻る。更に第２抽出処理（Ａ）も終え、図３０のＳ３００５へ戻る。
【０１９４】
図３０の説明に戻る。第２決定部９１５は、第２決定処理を実行する（Ｓ３００５）。図３４に、第２決定処理フローを示す。第２決定部９１５は、第２リストにおいて、セットアップ済フラグのフィールドにＯＦＦと設定されているレコードを検索し、セットアップに供されていないセットアップ自動化データの名を１つ特定する（Ｓ３４０１）。第２決定部９１５は、ソフトウエア構成テーブルを用いて、当該セットアップ自動化データがセットアップ対象とするソフトウエアを特定する（Ｓ３４０３）。
【０１９５】
第２決定部９１５は、ソフトウエア構成テーブルにおいて、Ｓ３４０３で特定されたソフトウエアに対応するレコードにおける依存先のフィールドにいずれかのソフトウエアが設定されているか否かを判定する（Ｓ３４０５）。
【０１９６】
Ｓ３４０３で特定されたソフトウエアに対応するレコードにおける依存先のフィールドにいずれのソフトウエアも設定されていない場合、つまり依存先のソフトウエアがない場合には、第２決定部９１５は、当該セットアップ自動化データを次にセットアップに供する順番に決定する（Ｓ３４０９）。
【０１９７】
一方、Ｓ３４０３で特定されたソフトウエアに対応するレコードにおける依存先のフィールドにいずれかのソフトウエアが設定されている場合、つまり依存先のソフトウエアがある場合には、第２決定部９１５は、依存先のソフトウエアがセットアップ済みであるか否かを判定する（Ｓ３４０７）。具体的には、第２リストにおいて、依存先のソフトウエアのセットアップ自動化データに対応するレコードのセットアップ済フラグのフィールドにＯＮと設定されている場合に、第２決定部９１５は、依存先のソフトウエアがセットアップ済みであると判定する。
【０１９８】
依存先のソフトウエアがセットアップ済みでないと判定した場合には、Ｓ３４０１に戻って、上述の処理を繰り返す。一方、依存先のソフトウエアがセットアップ済みであると判定した場合には、第２決定部９１５は、当該セットアップ自動化データを次にセットアップに供する順番に決定する（Ｓ３４０９）。そして、第２決定処理を終え、図３０に示したＳ３００７の処理に戻る。
【０１９９】
Ｓ３４０５において、ソフトウエア構成テーブルに基づいて、共通の仮想マシン１０１に同時に搭載されることが条件となっているソフトウエアがあるか否かを判断するようにしてもよい。そして、共通の仮想マシン１０１に同時に搭載されることが条件となっているソフトウエアを依存先のソフトウエアと同様に扱うようにしてもよい。
【０２００】
図３０の説明に戻る。第２送信部９１７は、第２決定処理（Ｓ３００５）で次の順番に決定されたセットアップ自動化データを、Ｓ３００１において配備された仮想マシン１０１に送信する（Ｓ３００７）。
【０２０１】
第２受信部９１９は、待機して、完了通知を受信する（Ｓ３００９）。完了通知を受信すると、第２決定部９１５は、セットアップ済を記録する（Ｓ１９１３）。つまり、第２決定部９１５は、第２リストにおける当該セットアップ自動化データに対応するセットアップ済フラグのフィールドにＯＮを設定する。
【０２０２】
第２決定部９１５は、未だセットアップに供されていないセットアップ自動化データがあるか否かを判定する（Ｓ３０１３）。未だセットアップに供されていないセットアップ自動化データがあると判定した場合には、Ｓ３００５に戻って、上述した処理を繰り返す。
【０２０３】
一方、未だセットアップに供されていないセットアップ自動化データがないと判定した場合には、第２接続部９２１は、接続処理を実行する（Ｓ３０１５）。第２接続部９２１による接続処理は、上述した第１送信部８０９による接続処理（図２３）と同様である。但し、Ｓ２３０１において特定される呼び出し関係のうち、図３０に示したＳ３００３において抽出されたソフトウエアが呼び出し元あるいは呼び出し先に相当する場合に限り、Ｓ２３０３におけるネットワーク接続の処理を行う。
【０２０４】
続いて、運用フェーズにおける仮想マシン１０１側の処理について説明する。まず、図２９のＳ２９０３に示した管理装置４０９からの問い合わせに応じる仮想マシン１０１側の第３エージェント処理（図７のＳ７０３）について説明する。
【０２０５】
図３５に、第３エージェント処理フローを示す。受付部１００１は、管理装置４０９から処理負荷の問い合わせを受け付ける（Ｓ３５０１）。処理負荷の問い合わせを受け付けると、測定部１００９は、仮想マシン１０１自身の処理負荷を測定する（Ｓ３５０３）。
【０２０６】
例えば処理負荷として仮想マシン１０１のＣＰＵ使用率を用いる場合には、測定部１００９は、ＯＳ５０３から仮想マシン１０１自身のＣＰＵ使用率を取得する。測定部１００９は、ＯＳ５０３からプロセス管理テーブルを取得し、各プロセスのＣＰＵ使用率を合算して仮想マシン１０１自身のＣＰＵ使用率を算出するようにしてもよい。
【０２０７】
例えば処理負荷として仮想マシン１０１のメモリ使用率を用いる場合には、測定部１００９は、ＯＳ５０３から仮想マシン１０１自身のメモリ使用量を取得し、仮想マシン１０１自身のメモリ使用率を算出する。測定部１００９は、ＯＳ５０３からプロセス管理テーブルを取得し、各プロセスのメモリ使用量に基づいて仮想マシン１０１自身のメモリ使用量を算出するようにしてもよい。
【０２０８】
例えば処理負荷として仮想マシン１０１におけるレスポンスタイムを用いる場合には、測定部１００９は、仮想マシン１０１におけるレスポンスタイムを計測するようにしてもよい。
【０２０９】
そして、送信部１００３は、仮想マシン１０１自身の処理負荷の通知を管理装置４０９へ送信する（Ｓ３５０５）。
【０２１０】
次に、図３１のＳ３１０１において第２抽出部９０７から送信された選定要求を受信した場合の仮想マシン１０１側の第４エージェント処理（図７のＳ７１５）について説明する。
【０２１１】
図３６に、第４エージェント処理フローを示す。受付部１００１は、第２抽出部９０７から選定要求を受け付ける（Ｓ３６０１）。選定要求を受け付けると、選定部１０１３は、選定処理を実行する（Ｓ３６０３）。
【０２１２】
本実施の形態では、選定部１０１３は選定処理（Ａ）を実行する。尚、実施の形態３では、選定部１０１３は選定処理（Ｂ）を実行する。図３７に、選定処理（Ａ）フローを示す。選定部１０１３は、当該仮想マシン１０１に搭載されているソフトウエアによる各プロセスの処理負荷を測定する（Ｓ３７０１）。
【０２１３】
例えば処理負荷としてＣＰＵ使用率を用いる場合には、選定部１０１３は、ＯＳ５０３からプロセス管理テーブルを取得し、プロセスのＣＰＵ使用率を特定するようにしてもよい。
【０２１４】
例えば処理負荷としてメモリ使用率を用いる場合には、選定部１０１３は、ＯＳ５０３からプロセス管理テーブルを取得し、プロセスのメモリ使用量に基づいてプロセスのメモリ使用率を算出するようにしてもよい。
【０２１５】
例えば処理負荷としてレスポンスタイムを用いる場合には、選定部１０１３は、プロセスのレスポンスタイムを測定するようにしてもよい。選定部１０１３は、測定部１００９にプロセスのレスポンスタイムを測定させるようにしてもよい。
【０２１６】
そして、選定部１０１３は、処理負荷が最も大きいプロセスのＩＤを選定する（Ｓ３７０３）。例えば、図１６に示したプロセス管理テーブルの例で、最もＣＰＵ使用率が大きいプロセスのＩＤは、「２０５７」である。選定処理（Ａ）を終えると、図３６のＳ３６０５に戻る。
【０２１７】
図３６の説明に戻る。第１特定部１０１５は、第１特定処理を実行する（Ｓ３６０５）。図３８に、第１特定処理フローを示す。第１特定部１０１５は、第２関連テーブルを用いて、選定処理（Ｓ３６０３）において選定されたプロセスＩＤに関連する起動スクリプト名を特定する（Ｓ３８０１）。更に、第１特定部１０１５は、第１関連テーブルを用いて、当該起動スクリプト名に関連するセットアップ自動化データ名を特定する（Ｓ３８０３）。
【０２１８】
例えば、選定されたプロセスＩＤが「２０５７」である場合には、図１８に示した第２関連テーブルを用いて、起動スクリプト名「／ｏｐｔ／ｌｏｃａｌ／ｂｉｎ／ａｐｌｂ．ｓｈ」が特定される。更に、図１７に示した第１関連テーブルを用いて、起動スクリプト名「／ｏｐｔ／ｌｏｃａｌ／ｂｉｎ／ａｐｌｂ．ｓｈ」に対応するセットアップ自動化データ名「ａｐｌｂ．ｒｂ」が特定される。
【０２１９】
第１特定処理において、第１特定部１０１５は、図２８に示した関連テーブルを用いて、選定処理（Ｓ３６０３）において選定されたプロセスＩＤに関連するセットアップ自動化データ名を直接的に特定するようにしてもよい。第１特定処理を終えると、図３６に示したＳ３６０７の処理に戻る。
【０２２０】
図３６の説明に戻る。送信部１００３は、特定されたセットアップ自動化データ名の通知を管理装置４０９へ送信する（Ｓ３６０７）。
【０２２１】
ここで、バージョン毎のソフトウエアの区別について述べる。例えば、バージョン２のソフトウエア「ＡｐｌＢ」が搭載されている状態でも、バージョン１のソフトウエア「ＡｐｌＢ」が搭載されている場合と同様に、起動スクリプト名は「ｏｐｔ／ｌｏｃａｌ／ｂｉｎ／ａｐｌｂ．ｓｈ」となり、プロセスを起動させたときのコマンド名は共に「ａｐｌｂ」となる。従って、コマンド名に基づいて、バージョン１のソフトウエア「ＡｐｌＢ」とバージョン２のソフトウエア「ＡｐｌＢ」とを区別することは難しい。しかし、本実施の形態によれば、異なるバージョンのソフトウエアも区別することができる。
【０２２２】
本実施の形態によれば、第１関連テーブルによって、セットアップ時に用いられたセットアップ自動化データを特定するので、バージョン毎に異なるセットアップ自動化データを区別することができる。
【０２２３】
図３９に、バージョン２のソフトウエア「ＡｐｌＢ」が搭載されている場合の第１関連テーブルの例を示す。この例における第１関連テーブルは、図１７に示した第１関連テーブルと同じ構造である。また、この例における第１レコード乃至第３レコードは、図１７の場合と同様である。しかし、第４レコードにおけるセットアップ自動化データ名は、「ａｐｌｂ＿２．ｒｂ」となり、図１７に示した第１関連テーブルの場合とは異なる。このように、バージョン２のソフトウエア「ＡｐｌＢ」のためのセットアップ自動化データ名「ａｐｌｂ＿２．ｒｂ」が関連付けられる。
【０２２４】
図４０に、「ａｐｌｂ＿２．ｒｂ」のセットアップ自動化データの例を示す。範囲４００１には、所定のパッケージ管理システムを用いて、バージョン２のパッケージ「ａｐｌｂ＿２」をインストールさせる指示が記述されている。図１２に示した範囲１２０１の場合とはパッケージの名前が異なる。範囲４００３には、図１２に示した範囲１２０３の場合と同様にサービス「ａｐｌｂ」で受け付けるコマンドを設定させ、プロセスを起動させる指示が記述されている。範囲４００５には、「ａｐｌｂ＿ｃｏｎｆ．ｅｒｂ」というテンプレートを用いて、ソフトウエア「ＡｐｌＢ」の設定ファイル「／ｏｐｔ／ｅｔｃ／ａｐｌｂ．ｃｏｎｆ」を作成し、各変数に初期値を設定させる指示が記述されている。この例では、図１２に示した範囲１２０５に比べて指示が１つ増えている。具体的には、変数「ｍａｘ＿ｓｅｓｓｉｏｎ」に関する指示が増えている。このように、バージョンによって初期設定の内容が異なる場合もある。範囲４００７には、図１２に示した範囲１２０７の場合と同様に「ｅｔｃ＿ｒｅｓｏｌｖｅ．ｃｏｎｆ．ｅｒｂ」というテンプレートを用いて、動作環境の設定ファイル「／ｅｔｃ／ｒｅｓｏｌｖｅ．ｃｏｎｆ」を作成し、各変数に初期値を設定させる指示が記述されている。この例では、バージョン１と同様の動作環境の設定が行われるが、動作環境の設定についてもバージョンによって異なる指示を記述するようにしてもよい。
【０２２５】
先に述べたように、負荷超過となった仮想マシン１０１にバージョン１のソフトウエア「ＡｐｌＢ」が搭載されている場合には、バージョン１のソフトウエア「ＡｐｌＢ」がセットアップされた時に用いられたセットアップ自動化データ「ａｐｌｂ．ｒｂ」（図１２）が特定される。そして、この「ａｐｌｂ．ｒｂ」によって、新たな仮想マシン１０１にバージョン１に相当するパッケージ「ａｐｌｂ」がインストールされ、バージョン１用の初期設定が行われる。
【０２２６】
一方、負荷超過となった仮想マシン１０１にバージョン２のソフトウエア「ＡｐｌＢ」が搭載されている場合には、バージョン２のソフトウエア「ＡｐｌＢ」がセットアップされた時に用いられたセットアップ自動化データ「ａｐｌｂ＿２．ｒｂ」（図４０）が特定される。そして、この「ａｐｌｂ＿２．ｒｂ」によって、新たな仮想マシン１０１にバージョン２に相当するパッケージ「ａｐｌｂ＿２」がインストールされ、バージョン２用の初期設定が行われる。
【０２２７】
従って、例えば負荷超過となった仮想マシン１０１にバージョン２のソフトウエア「ＡｐｌＢ」が搭載されているにも関わらず、バージョン１のセットアップ自動化データによってバージョン１のソフトウエア「ＡｐｌＢ」がインストールされてしまうような誤動作を回避できる。また、誤ってバージョン１用の初期設定が行われるようなことも防げる。
【０２２８】
本実施の形態によれば、処理負荷が超過した仮想マシン１０１で動作しているプロセス群のうち、所定の条件に該当するプロセスに係るソフトウエアが新たな仮想マシン１０１に選択的に搭載されるようになるので、搭載されるソフトウエアを限定し、新たに配備される仮想マシン１０１における資源の消費を減らすことができる。
【０２２９】
また、依存先のソフトウエアによる処理を含めて、所定の条件に該当するプロセスに係るソフトウエアの動作を保全することによって、所定の条件に該当するプロセスにおける処理が分散され、当該ソフトウエアに割り当てられた資源を有効に利用することができる。
【０２３０】
また、第１関連付け処理と第２関連付け処理とを行い、起動スクリプトとの関連によって当初のセットアップに用いられたセットアップ自動化データを特定するので、新たな仮想マシン１０１において起動されるプロセスが所定の条件に該当するプロセスと等価であることが保証されるようになる。従って、当該プロセスに係るソフトウエアに割り当てられた資源が無駄にならない。
【０２３１】
また、プロセスの各々における処理負荷のうち、最も大きい処理負荷に係るプロセスを選定するので、処理負荷を分散させる効率を高め、新たな仮想マシン１０１において当該プロセスに係るソフトウエアに割り当てられた資源を有効に利用することができる。
【０２３２】
［実施の形態２］
上述した実施の形態では、アプリケーションのように依存元のソフトウエアに係るプロセスにおける処理負荷が高まる例を示したが、本実施の形態では、ミドルウエアのように依存先のソフトウエアに係るプロセスにおける処理負荷が高まる例について説明する。
【０２３３】
図４１に、実施の形態２に係るソフトウエア構成と基盤構成との例を示す。このシステムにおける機能は、機能「アプリケーションＣ」、機能「アプリケーションＤ」、機能「アプリケーションＥ」、機能「アプリケーションＦ」、機能「ミドルウエアＰ」、機能「ミドルウエアＱ」及び機能「ミドルウエアＲ」を組み合わせることによって実現される。
【０２３４】
実施の形態１において説明した図１の場合と同様に、図４１の上部は、このシステムにおける機能を実現するためのソフトウエアの構成を示している。尚、機能「アプリケーションＣ」は、ソフトウエア「ＡｐｌＣ」の処理をいずれかの仮想マシン１０１で実行することによって実現される。同様に機能「アプリケーションＤ」は、ソフトウエア「ＡｐｌＤ」の処理をいずれかの仮想マシン１０１で実行することによって実現される。機能「アプリケーションＥ」は、ソフトウエア「ＡｐｌＥ」の処理をいずれかの仮想マシン１０１で実行することによって実現される。同様に機能「アプリケーションＦ」は、ソフトウエア「ＡｐｌＦ」の処理をいずれかの仮想マシン１０１で実行することによって実現される。
【０２３５】
実施の形態１において説明した図１の場合と同様に、説明の便宜のためにソフトウエアを機能グループに分ける。ソフトウエア「ＡｐｌＣ」とソフトウエア「ＭｉｄＰ」との組み合わせを第４機能グループと呼ぶ。ソフトウエア「ＡｐｌＤ」とソフトウエア「ＡｐｌＥ」とソフトウエア「ＡｐｌＦ」とソフトウエア「ＭｉｄＱ」との組み合わせを第５機能グループと呼ぶ。ソフトウエア「ＭｉｄＲ」を第６機能グループと呼ぶ。但し、ソフトウエアを機能グループに分類しないようにしてもよい。
【０２３６】
実施の形態１において説明した図１の場合と同様に、図４１の下部は、システムに用いられる仮想マシン１０１を含む基盤構成を示している。この例におけるシステムは、仮想マシン１０１ｄと仮想マシン１０１ｅと仮想マシン１０１ｆとを用いる。図示するように、仮想マシン１０１ｄの仮想マシンＩＤは、「ＶＭ＿２０１」であり、仮想マシン１０１ｅの仮想マシンＩＤは、「ＶＭ＿２０２」であり、仮想マシン１０１ｆの仮想マシンＩＤは、「ＶＭ＿２０３」である。また、仮想マシン１０１ｄと仮想マシン１０１ｅと仮想マシン１０１ｆを結ぶ線は、仮想マシン１０１ｄと仮想マシン１０１ｅと仮想マシン１０１ｆとが仮想ネットワークを介して接続されていることを示している。
【０２３７】
実施の形態１において説明した図１の場合と同様に、図４１における大きい矢印４１０１、つまり機能グループから仮想マシン１０１を指す矢印は、仮想マシン１０１とその仮想マシン１０１に搭載されるソフトウエアとの関係を示している。左側の大きい矢印４１０１ａは、第４機能グループに含まれるソフトウエア「ＡｐｌＣ」とソフトウエア「ＭｉｄＰ」とが仮想マシン１０１ｄに搭載されることを示している。中央の大きい矢印４１０１ｂは、第５機能グループに含まれるソフトウエア「ＡｐｌＤ」とソフトウエア「ＡｐｌＥ」とソフトウエア「ＡｐｌＦ」とソフトウエア「ＭｉｄＱ」とが仮想マシン１０１ｅに搭載されることを示している。また、右側の大きい矢印４１０１ｃは、第６機能グループに含まれるソフトウエア「ＭｉｄＲ」が仮想マシン１０１ｆに搭載されることを示している。
【０２３８】
実施の形態１において説明した図１の場合と同様に、図４１における実線の矢印４１０３は、ソフトウエア同士における依存関係を示している。第４機能グループ内に示した実線の矢印４１０３ａは、ソフトウエア「ＡｐｌＣ」がソフトウエア「ＭｉｄＰ」に依存していることを示している。この依存関係において、ソフトウエア「ＡｐｌＣ」が依存元であり、ソフトウエア「ＭｉｄＰ」が依存先である。
【０２３９】
第５機能グループ内に示した実線の矢印４１０３ｂ乃至４１０３ｄは、ソフトウエア「ＡｐｌＤ」、ソフトウエア「ＡｐｌＥ」及びソフトウエア「ＡｐｌＦ」がソフトウエア「ＭｉｄＱ」に依存していることを示している。これらの依存関係において、ソフトウエア「ＡｐｌＤ」、ソフトウエア「ＡｐｌＥ」及びソフトウエア「ＡｐｌＦ」が依存元であり、ソフトウエア「ＭｉｄＱ」が共通の依存先である。
【０２４０】
実施の形態１において説明した図１の場合と同様に、図４１における破線の矢印４１０５は、ソフトウエア同士における呼び出し関係を示している。例えば、左側の破線の矢印４１０５ａは、ソフトウエア「ＭｉｄＰ」がソフトウエア「ＭｉｄＱ」を呼び出すことを示している。この呼び出し関係において、ソフトウエア「ＭｉｄＰ」が呼び出し元であり、ソフトウエア「ＭｉｄＱ」が呼び出し先である。同様に右側の破線の矢印４１０５ｂは、ソフトウエア「ＭｉｄＱ」がソフトウエア「ＭｉｄＲ」を呼び出すことを示している。この呼び出し関係において、ソフトウエア「ＭｉｄＱ」が呼び出し元であり、ソフトウエア「ＭｉｄＲ」が呼び出し先である。
【０２４１】
図４２に、実施の形態２に係るソフトウエア構成テーブルの例を示す。この例におけるソフトウエア構成テーブルは、図１３に示したソフトウエア構成テーブルと同じ構造である。
【０２４２】
図４２に示した例は、図４１に示したソフトウエア構成を前提としている。以下、第１レコードについて説明する。当該ソフトウエアＩＤ「Ｓ＿０１」で識別されるソフトウエアの名は「ＡｐｌＣ」であり、当該ソフトウエアは機能「アプリケーションＣ」を実現することを示している。
【０２４３】
更に、第１レコードは、当該ソフトウエアが依存するソフトウエアのＩＤが「Ｓ＿０２」であり、当該ソフトウエアが呼び出すソフトウエアは無いことを示している。つまり、ソフトウエア「ＡｐｌＣ」は、ソフトウエア「ＭｉｄＰ」に依存するが、他のソフトウエアを呼び出さないことを意味している。
【０２４４】
更に、第１レコードは、当該ソフトウエアにおいて排他の対象とするソフトウエアは無く、共通の仮想マシン１０１に同時に搭載されることが条件となっているソフトウエアのＩＤが「Ｓ＿０２」であることを示している。つまり、ソフトウエア「ＡｐｌＣ」が搭載される仮想マシン１０１には、ソフトウエア「ＭｉｄＰ」が同時に搭載される。また、ソフトウエア「ＡｐｌＣ」が搭載される仮想マシン１０１には、任意のソフトウエアが同時に搭載されるようにしてもよい。
【０２４５】
更に、第１レコードは、当該ソフトウエアのセットアップに供されるセットアップ自動化データの名は「ａｐｌｃ．ｒｂ」であり、当該ソフトウエアが搭載される仮想マシン１０１のＩＤは、「ＶＭ＿２０１」であることを示している。
【０２４６】
次に、第２レコードについて説明する。当該ソフトウエアＩＤ「Ｓ＿０２」で識別されるソフトウエアの名は「ＭｉｄＰ」であり、当該ソフトウエアは、機能「ミドルウエアＰ」を実現することを示している。
【０２４７】
更に、第２レコードは、当該ソフトウエアが依存するソフトウエアは無く、当該ソフトウエアが呼び出すソフトウエアのＩＤが「Ｓ＿０６」であることを示している。つまり、ソフトウエア「ＭｉｄＰ」は、他のソフトウエアに依存しないが、ソフトウエア「ＭｉｄＱ」を呼び出すことを意味している。
【０２４８】
更に、第２レコードは、当該ソフトウエアにおいて排他の対象とするソフトウエアのＩＤが「Ｓ＿０７」であり、共通の仮想マシン１０１に同時に搭載されることが条件となっているソフトウエアはないことを示している。つまり、ソフトウエア「ＭｉｄＰ」が搭載される仮想マシン１０１に、ソフトウエア「ＭｉｄＲ」は搭載されない。また、ソフトウエア「ＭｉｄＰ」が搭載される仮想マシン１０１に、特定のソフトウエアが同時に搭載されるとは限らない。
【０２４９】
更に、第２レコードは、当該ソフトウエアのセットアップに供されるセットアップ自動化データの名は「ｍｉｄｐ．ｒｂ」であり、当該ソフトウエアが搭載される仮想マシン１０１のＩＤは、「ＶＭ＿２０１」であることを示している。
【０２５０】
次に、第３レコードについて説明する。当該ソフトウエアＩＤ「Ｓ＿０３」で識別されるソフトウエアの名は「ＡｐｌＤ」であり、当該ソフトウエアは機能「アプリケーションＤ」を実現することを示している。
【０２５１】
更に、第３レコードは、当該ソフトウエアが依存するソフトウエアのＩＤが「Ｓ＿０６」であり、当該ソフトウエアが呼び出すソフトウエアは無いことを示している。つまり、ソフトウエア「ＡｐｌＤ」は、ソフトウエア「ＭｉｄＱ」に依存するが、他のソフトウエアを呼び出さないことを意味している。
【０２５２】
更に、第３レコードは、当該ソフトウエアにおいて排他の対象とするソフトウエアは無く、共通の仮想マシン１０１に同時に搭載されることが条件となっているソフトウエアのＩＤが「Ｓ＿０６」であることを示している。つまり、ソフトウエア「ＡｐｌＤ」が搭載される仮想マシン１０１には、ソフトウエア「ＭｉｄＱ」が同時に搭載される。また、ソフトウエア「ＡｐｌＤ」が搭載される仮想マシン１０１には、任意のソフトウエアが同時に搭載されるようにしてもよい。
【０２５３】
更に、第３レコードは、当該ソフトウエアのセットアップに供されるセットアップ自動化データの名は「ａｐｌｄ．ｒｂ」であり、当該ソフトウエアが搭載される仮想マシン１０１のＩＤは、「ＶＭ＿２０２」であることを示している。
【０２５４】
次に、第４レコードについて説明する。当該ソフトウエアＩＤ「Ｓ＿０４」で識別されるソフトウエアの名は「ＡｐｌＥ」であり、当該ソフトウエアは機能「アプリケーションＥ」を実現することを示している。
【０２５５】
更に、第４レコードは、当該ソフトウエアが依存するソフトウエアのＩＤが「Ｓ＿０６」であり、当該ソフトウエアが呼び出すソフトウエアは無いことを示している。つまり、ソフトウエア「ＡｐｌＥ」は、ソフトウエア「ＭｉｄＱ」に依存するが、他のソフトウエアを呼び出さないことを意味している。
【０２５６】
更に、第４レコードは、当該ソフトウエアにおいて排他の対象とするソフトウエアは無く、共通の仮想マシン１０１に同時に搭載されることが条件となっているソフトウエアのＩＤが「Ｓ＿０６」であることを示している。つまり、ソフトウエア「ＡｐｌＥ」が搭載される仮想マシン１０１には、ソフトウエア「ＭｉｄＱ」が同時に搭載される。また、ソフトウエア「ＡｐｌＥ」が搭載される仮想マシン１０１には、任意のソフトウエアが同時に搭載されるようにしてもよい。
【０２５７】
更に、第４レコードは、当該ソフトウエアのセットアップに供されるセットアップ自動化データの名は「ａｐｌｅ．ｒｂ」であり、当該ソフトウエアが搭載される仮想マシン１０１のＩＤは、「ＶＭ＿２０２」であることを示している。
【０２５８】
次に、第５レコードについて説明する。当該ソフトウエアＩＤ「Ｓ＿０５」で識別されるソフトウエアの名は「ＡｐｌＦ」であり、当該ソフトウエアは機能「アプリケーションＦ」を実現することを示している。
【０２５９】
更に、第５レコードは、当該ソフトウエアが依存するソフトウエアのＩＤが「Ｓ＿０６」であり、当該ソフトウエアが呼び出すソフトウエアは無いことを示している。つまり、ソフトウエア「ＡｐｌＦ」は、ソフトウエア「ＭｉｄＱ」に依存するが、他のソフトウエアを呼び出さないことを意味している。
【０２６０】
更に、第５レコードは、当該ソフトウエアにおいて排他の対象とするソフトウエアは無く、共通の仮想マシン１０１に同時に搭載されることが条件となっているソフトウエアのＩＤが「Ｓ＿０６」であることを示している。つまり、ソフトウエア「ＡｐｌＦ」が搭載される仮想マシン１０１には、ソフトウエア「ＭｉｄＱ」が同時に搭載される。また、ソフトウエア「ＡｐｌＦ」が搭載される仮想マシン１０１には、任意のソフトウエアが同時に搭載されるようにしてもよい。
【０２６１】
更に、第５レコードは、当該ソフトウエアのセットアップに供されるセットアップ自動化データの名は「ａｐｌｆ．ｒｂ」であり、当該ソフトウエアが搭載される仮想マシン１０１のＩＤは、「ＶＭ＿２０２」であることを示している。
【０２６２】
次に、第６レコードについて説明する。当該ソフトウエアＩＤ「Ｓ＿０６」で識別されるソフトウエアの名は「ＭｉｄＱ」であり、当該ソフトウエアは、機能「ミドルウエアＱ」を実現することを示している。
【０２６３】
更に、第６レコードは、当該ソフトウエアが依存するソフトウエアは無く、当該ソフトウエアが呼び出すソフトウエアのＩＤが「Ｓ＿０７」であることを示している。つまり、ソフトウエア「ＭｉｄＱ」は、他のソフトウエアに依存しないが、ソフトウエア「ミドルウエアＲ」を呼び出すことを意味している。
【０２６４】
更に、第６レコードは、当該ソフトウエアにおいて排他の対象とするソフトウエアのＩＤが「Ｓ＿０７」であり、共通の仮想マシン１０１に同時に搭載されることが条件となっているソフトウエアはないことを示している。つまり、ソフトウエア「ＭｉｄＱ」が搭載される仮想マシン１０１に、ソフトウエア「ＭｉｄＲ」は搭載されない。また、ソフトウエア「ＭｉｄＱ」が搭載される仮想マシン１０１に、特定のソフトウエアが同時に搭載されるとは限らない。
【０２６５】
更に、第６レコードは、当該ソフトウエアのセットアップに供されるセットアップ自動化データの名は「ｍｉｄｑ．ｒｂ」であり、当該ソフトウエアが搭載される仮想マシン１０１のＩＤは、「ＶＭ＿２０２」であることを示している。
【０２６６】
次に、第７レコードについて説明する。当該ソフトウエアＩＤ「Ｓ＿０７」で識別されるソフトウエアの名は「ＭｉｄＲ」であり、当該ソフトウエアは、機能「ミドルウエアＲ」を実現することを示している。
【０２６７】
更に、第７レコードは、当該ソフトウエアが依存するソフトウエアは無く、当該ソフトウエアが呼び出すソフトウエアも無いことを示している。つまり、ソフトウエア「ＭｉｄＲ」は、他のソフトウエアに依存せず、更に他のソフトウエアを呼び出さないことを意味している。
【０２６８】
更に、第７レコードは、当該ソフトウエアにおいて排他の対象とするソフトウエアのＩＤが「Ｓ＿０２」及び「Ｓ＿０６」であり、共通の仮想マシン１０１に同時に搭載されることが条件となっているソフトウエアはないことを示している。つまり、ソフトウエア「ＭｉｄＲ」が搭載される仮想マシン１０１に、ソフトウエア「ＭｉｄＰ」及びソフトウエア「ＭｉｄＱ」は搭載されない。また、ソフトウエア「ＭｉｄＲ」が搭載される仮想マシン１０１に、特定のソフトウエアが同時に搭載されるとは限らない。
【０２６９】
更に、第７レコードは、当該ソフトウエアのセットアップに供されるセットアップ自動化データの名は「ｍｉｄｒ．ｒｂ」であり、当該ソフトウエアが搭載される仮想マシン１０１のＩＤは、「ＶＭ＿２０３」であることを示している。
【０２７０】
続いて、実施の形態２に係るスケールアウトについて説明する。図４３に、実施の形態２に係るスケールアウトの例を示す。この例は、図４１に示したソフトウエア構成と基盤構成とを前提としている。運用フェーズにおいて、図４１に示したソフトウエア構成のうちソフトウエア「ＭｉｄＱ」に係るプロセスにおける処理負荷が高まり、その結果として仮想マシン１０１ｅの処理負荷が基準を超えた場合を想定している。つまり、ソフトウエア「ＭｉｄＱ」に係るプロセスが、仮想マシン１０１ｅにおける負荷超過の主因となっている。
【０２７１】
本実施の形態では、自動スケーリング処理において処理負荷が基準を超えた仮想マシン１０１ｅを検出し、スケールアウトを行う。そして、スケールアウトによって仮想マシン１０１ｇが増設される。図示するように、仮想マシン１０１ｇの仮想マシンＩＤは、「ＶＭ＿２０４」である。
【０２７２】
仮想マシン１０１ｇには、仮想マシン１０１ｅに搭載されているソフトウエアのうち一部のソフトウエアを搭載するようにする。この例では、ソフトウエア「ＭｉｄＱ」に係るプロセスにおける処理負荷が高まっているので、ソフトウエア「ＭｉｄＱ」を仮想マシン１０１ｅに搭載するようにする。つまり、既存の仮想マシン１０１ｅで処理負荷が高まったソフトウエアの機能を、新たな仮想マシン１０１ｇでも実現するようにする。
【０２７３】
また、ソフトウエア「ＭｉｄＱ」は、ソフトウエア「ＡｐｌＤ」、ソフトウエア「ＡｐｌＥ」及びソフトウエア「ＡｐｌＦ」に依存される。この例では、ソフトウエア「ＡｐｌＤ」、ソフトウエア「ＡｐｌＥ」及びソフトウエア「ＡｐｌＦ」のうち、最も処理負荷の高いソフトウエア「ＡｐｌＥ」も一緒に仮想マシン１０１ｇに搭載するようにする。このようにすれば、ソフトウエア「ＡｐｌＥ」とソフトウエア「ＭｉｄＱ」とが連動するようになる。大きな矢印４３０１に示すように、第５機能グループの一部に相当するソフトウエア「ＡｐｌＥ」とソフトウエア「ＭｉｄＱ」とに、仮想マシン１０１ｇの資源が割り当てられるようになる。
【０２７４】
一方、第５機能グループに含まれるソフトウエア「ＡｐｌＤ」とソフトウエア「ＡｐｌＦ」とは、仮想マシン１０１ｇに搭載されない。また、第４機能グループに含まれるソフトウエア「ＡｐｌＣ」とソフトウエア「ＭｉｄＰ」とも、仮想マシン１０１ｇに搭載されない。つまり、ソフトウエア「ＡｐｌＣ」、ソフトウエア「ＡｐｌＤ」、ソフトウエア「ＡｐｌＦ」及びソフトウエア「ＭｉｄＰ」には、仮想マシン１０１ｇの資源が割り当てられない。このように、処理能力が足りている機能については、その機能に対して資源を追加で割り当てないようにするので、新たな資源の消費を減らすことができる。
【０２７５】
尚、破線の矢印４３０３ａに示すように、仮想マシン１０１ｇに搭載されたソフトウエア「ＭｉｄＱ」は、仮想マシン１０１ｆに搭載されているソフトウエア「ＭｉｄＲ」を呼び出し、また破線の矢印４３０３ｂに示すように、仮想マシン１０１ｄに搭載されているソフトウエア「ＭｉｄＰ」は、仮想マシン１０１ｇに搭載されたソフトウエア「ＭｉｄＱ」を呼び出す。従って、基盤構成において、仮想マシン１０１ｇは仮想マシン１０１ｄ及び仮想マシン１０１ｆに仮想ネットワークを介して接続する。
【０２７６】
本実施の形態では、図３０に示したＳ３００３において、実施の形態１において説明した第２抽出処理（Ａ）に代えて、第２抽出処理（Ｂ）を実行する。
【０２７７】
図４４に、第２抽出処理（Ｂ）フローを示す。第２抽出部９０７は、図３１に示したＳ３１０１の場合と同様に、負荷超過となった仮想マシン１０１へ選定要求を送信する（Ｓ４４０１）。
【０２７８】
第２抽出部９０７は、図３１に示したＳ３１０３の場合と同様に、負荷超過となった仮想マシン１０１から、所定の条件に該当するプロセスに係るソフトウエアのセットアップ自動化データ名を受信し、受信したセットアップ自動化データ名を第２リストに登録する（Ｓ４４０３）。
【０２７９】
第３特定部９１１は、第３特定処理を実行し（Ｓ４４０５）、次に第２特定部９０９は、第２特定処理を実行する（Ｓ４４０７）。つまり、本実施の形態では、第２特定処理において、依存先のソフトウエアのためのセットアップ自動化データを特定する前に、第３特定処理において、依存元のソフトウエアのためのセットアップ自動化データを特定する。このように、先に依存元側を特定すれば、例えば図４３に示したソフトウエア「ＡｐｌＥ」が他のソフトウエアに依存するような場合に、当該他のソフトウエアもセットアップできるようになり、ソフトウエア「ＡｐｌＥ」における不具合を回避できるようになる。但し、第２特定処理の後に第３特定処理を行うようにしてもよい。あるいは、第２特定処理を省くようにしてもよい。
【０２８０】
図４５に、第３特定処理フローを示す。第３特定部９１１は、第２リストに登録されているセットアップ自動化データ名を１つ特定する（Ｓ４５０１）。第３特定部９１１は、ソフトウエア構成テーブルを用いて、当該セットアップ自動化データがセットアップ対象とするソフトウエアを特定する（Ｓ４５０３）。
【０２８１】
第３特定部９１１は、ソフトウエア構成テーブルを用いて、Ｓ４５０１において特定されたソフトウエアが依存されるソフトウエア、つまり依存元のソフトウエアを特定する（Ｓ４５０５）。
【０２８２】
依存元が複数特定された場合には、第３特定部９１１は、処理負荷が最も高いソフトウエアを選択する（Ｓ４５０７）。但し、第３特定部９１１は、依存元のソフトウエアを限定しないようにしてもよい。更に、第３特定部９１１は、ソフトウエア構成テーブルを用いて、依存元のソフトウエアのためのセットアップ自動化データの名を特定し、特定したセットアップ自動化データ名を第２リストに登録する（Ｓ４５０９）。
【０２８３】
第３特定部９１１は、第２リストにおいて未特定のセットアップ自動化データ名があるか否かを判定する（Ｓ４５１１）。未特定のセットアップ自動化データ名があると判定した場合には、Ｓ４５０１へ戻って、上述した処理を繰り返す。
【０２８４】
尚、Ｓ４５０９において登録されたセットアップ自動化データ名は、Ｓ４５１１において未特定であると判定され、Ｓ４５０１において特定される対象となる。このようにすれば、依存元のソフトウエアが依存されるソフトウエア、つまり間接的に依存されるソフトウエアも特定することができる。
【０２８５】
Ｓ４５１１において、未特定のセットアップ自動化データ名がないと判定した場合には、第３特定処理を終え、図４４のＳ４４０７へ戻る。
【０２８６】
第２特定部９０９が第２特定処理を実行し、第２抽出処理（Ｂ）を終えると、図３０のＳ３００５へ戻る。これ以降は、実施の形態１の場合と同様に処理する。
【０２８７】
図４６に、実施の形態２に係る第２リストの例を示す。この例におけるソフトウエア構成テーブルは、図３２に示した第２リストと同じ構造である。
【０２８８】
この例における第２リストは、セットアップ自動化データ「ｍｉｄｐ．ｒｂ」及びセットアップ自動化データ「ａｐｌｅ．ｒｂ」がセットアップに供されることを示している。またこの段階では、いずれのセットアップ自動化データもセットアップに供されていないことを示している。
【０２８９】
本実施の形態によれば、依存元のソフトウエアの処理に連動することによって所定の条件に該当するプロセスにおける処理が分散され、所定の条件に該当するプロセスに係るソフトウエアに割り当てられた資源を無駄にしない。つまり、所定の条件に該当するプロセスに係るソフトウエアが機能を発揮しない事態を回避できる。
【０２９０】
［実施の形態３］
上述した実施の形態では、処理負荷が最も高いプロセスを選定する例を示したが、本実施の形態では、選定されたプロセスにおける処理負荷の合計が、所定基準を超えるように、１つ又は複数のプロセスを選定する例について説明する。
【０２９１】
図４７に、実施の形態３に係るソフトウエア構成と基盤構成との例を示す。このシステムにおける機能は、実施の形態２において説明した図４１の場合と同様である。
【０２９２】
このシステムにおける機能を実現するためのソフトウエアの構成は、実施の形態２において説明した図４１の場合と同様である。
【０２９３】
ソフトウエアの機能グループは、実施の形態２において説明した図４１の場合と同様である。
【０２９４】
実施の形態２において説明した図４１の場合と同様に、図４７の下部は、システムに用いられる仮想マシン１０１を含む基盤構成を示している。この例におけるシステムは、仮想マシン１０１ｈと仮想マシン１０１ｉとを用いる。図示するように、仮想マシン１０１ｈの仮想マシンＩＤは、「ＶＭ＿３０１」であり、仮想マシン１０１ｉの仮想マシンＩＤは、「ＶＭ＿３０２」である。また、仮想マシン１０１ｈと仮想マシン１０１ｉを結ぶ線は、仮想マシン１０１ｈと仮想マシン１０１ｉが仮想ネットワークを介して接続されていることを示している。
【０２９５】
実施の形態２において説明した図４１の場合と同様に、図４７における大きい矢印４７０１、つまり機能グループから仮想マシン１０１を指す矢印は、仮想マシン１０１とその仮想マシン１０１に搭載されるソフトウエアとの関係を示している。左側の大きい矢印４７０１ａは、第４機能グループに含まれるソフトウエア「ＡｐｌＣ」とソフトウエア「ＭｉｄＰ」とが仮想マシン１０１ｈに搭載されることを示している。中央の大きい矢印４７０１ｂは、第５機能グループに含まれるソフトウエア「ＡｐｌＤ」とソフトウエア「ＡｐｌＥ」とソフトウエア「ＡｐｌＦ」とソフトウエア「ＭｉｄＱ」とが仮想マシン１０１ｈに搭載されることを示している。また、右側の大きい矢印４７０１ｃは、第６機能グループに含まれるソフトウエア「ＭｉｄＲ」が仮想マシン１０１ｉに搭載されることを示している。
【０２９６】
実施の形態２において説明した図４１の場合と同様に、図４７における実線の矢印４７０３は、ソフトウエア同士における依存関係を示している。第４機能グループ内に示した実線の矢印４７０３ａは、ソフトウエア「ＡｐｌＣ」がソフトウエア「ＭｉｄＰ」に依存していることを示している。この依存関係において、ソフトウエア「ＡｐｌＣ」が依存元であり、ソフトウエア「ＭｉｄＰ」が依存先である。
【０２９７】
第５機能グループ内に示した実線の各矢印４７０３ｂ乃至４７０３ｄは、ソフトウエア「ＡｐｌＤ」、ソフトウエア「ＡｐｌＥ」及びソフトウエア「ＡｐｌＦ」がソフトウエア「ＭｉｄＱ」に依存していることを示している。これらの依存関係において、ソフトウエア「ＡｐｌＤ」、ソフトウエア「ＡｐｌＥ」及びソフトウエア「ＡｐｌＦ」が依存元であり、ソフトウエア「ＭｉｄＱ」が共通の依存先である。
【０２９８】
実施の形態２において説明した図４１の場合と同様に、図４７における破線の矢印４７０５は、ソフトウエア同士における呼び出し関係を示している。例えば、左側の破線の矢印４７０５ａは、ソフトウエア「ＭｉｄＰ」がソフトウエア「ＭｉｄＱ」を呼び出すことを示している。この呼び出し関係において、ソフトウエア「ＭｉｄＰ」が呼び出し元であり、ソフトウエア「ＭｉｄＱ」が呼び出し先である。同様に右側の破線の矢印４７０５ｂは、ソフトウエア「ＭｉｄＱ」がソフトウエア「ＭｉｄＲ」を呼び出すことを示している。この呼び出し関係において、ソフトウエア「ＭｉｄＱ」が呼び出し元であり、ソフトウエア「ＭｉｄＲ」が呼び出し先である。
【０２９９】
図４８に、実施の形態３に係るソフトウエア構成テーブルの例を示す。この例におけるソフトウエア構成テーブルは、図４２に示したソフトウエア構成テーブルと同じ構造である。
【０３００】
図４８に示した例は、図４７に示したソフトウエア構成を前提としている。図４２の場合と比べて、仮想マシンＩＤが異なる。ソフトウエア「ＡｐｌＣ」、ソフトウエア「ＭｉｄＰ」、ソフトウエア「ＡｐｌＤ」、ソフトウエア「ＡｐｌＥ」、ソフトウエア「ＡｐｌＦ」及びソフトウエア「ＭｉｄＱ」は、仮想マシンＩＤ「ＶＭ＿３０１」の仮想マシン１０１ｈに搭載され、ソフトウエア「ＭｉｄＲ」は、仮想マシンＩＤ「ＶＭ＿３０２」の仮想マシン１０１ｉに搭載されることを示している。
【０３０１】
図４９に、実施の形態３に係るスケールアウトの例を示す。この例は、図４７に示したソフトウエア構成と基盤構成とを前提としている。運用フェーズにおいて、図４７に示したソフトウエア構成のうちソフトウエア「ＡｐｌＣ」に係るプロセス及びソフトウエア「ＡｐｌＤ」に係るプロセスにおける処理負荷が高まり、その結果として仮想マシン１０１ｈの処理負荷が基準を超えた場合を想定している。つまり、ソフトウエア「ＡｐｌＣ」に係るプロセス及びソフトウエア「ＡｐｌＤ」に係るプロセスが、仮想マシン１０１ｈにおける負荷超過の主因となっている。
【０３０２】
本実施の形態では、自動スケーリング処理において処理負荷が基準を超えた仮想マシン１０１ｈを検出し、スケールアウトを行う。そして、スケールアウトによって仮想マシン１０１ｊが増設される。図示するように、仮想マシン１０１ｊの仮想マシンＩＤは、「ＶＭ＿３０３」である。
【０３０３】
仮想マシン１０１ｊには、仮想マシン１０１ｈに搭載されているソフトウエアのうち一部のソフトウエアを搭載するようにする。この例では、ソフトウエア「ＡｐｌＣ」及びソフトウエア「ＡｐｌＤ」に係るプロセスにおける処理負荷が高まっているので、ソフトウエア「ＡｐｌＣ」及びソフトウエア「ＡｐｌＤ」を仮想マシン１０１ｊに搭載するようにする。つまり、既存の仮想マシン１０１ｈで処理負荷が高まったソフトウエアの機能を、新たな仮想マシン１０１ｊでも実現するようにする。
【０３０４】
また、ソフトウエア「ＡｐｌＣ」はソフトウエア「ＭｉｄＰ」に依存するので、ソフトウエア「ＭｉｄＰ」も一緒に仮想マシン１０１ｊに搭載するようにする。更に、ソフトウエア「ＡｐｌＤ」はソフトウエア「ＭｉｄＱ」に依存するので、ソフトウエア「ＭｉｄＱ」も一緒に仮想マシン１０１ｊに搭載するようにする。その結果大きな矢印４９０１ａに示すように、第４機能グループに含まれるソフトウエア「ＡｐｌＣ」とソフトウエア「ＭｉｄＰ」とに、仮想マシン１０１ｊの資源が割り当てられるようになる。更に大きな矢印４９０１ｂに示すように、第５機能グループの一部に相当するソフトウエア「ＡｐｌＤ」とソフトウエア「ＭｉｄＱ」とに、仮想マシン１０１ｊの資源が割り当てられるようになる。
【０３０５】
一方、第５機能グループに含まれるソフトウエア「ＡｐｌＥ」とソフトウエア「ＡｐｌＦ」とは、仮想マシン１０１ｊに搭載されない。つまり、ソフトウエア「ＡｐｌＥ」及びソフトウエア「ＡｐｌＦ」には、仮想マシン１０１ｊの資源が割り当てられない。このように、処理能力が足りている機能については、その機能に対して資源を追加で割り当てないようにするので、新たな資源の消費を減らすことができる。
【０３０６】
尚、破線の矢印４９０３ａに示すように、仮想マシン１０１ｊに搭載されたソフトウエア「ＭｉｄＱ」は、仮想マシン１０１ｉに搭載されているソフトウエア「ＭｉｄＲ」を呼び出す。従って、基盤構成において、仮想マシン１０１ｊは仮想マシン１０１ｉに仮想ネットワークを介して接続する。また、破線の矢印４９０３ｂに示すように、仮想マシン１０１ｊに搭載されているソフトウエア「ＭｉｄＰ」は、同じ仮想マシン１０１ｊに搭載されたソフトウエア「ＭｉｄＱ」を呼び出す。
【０３０７】
図５０に、実施の形態３に係るプロセス管理テーブルの例を示す。この例におけるプロセス管理テーブルは、図１６に示したプロセス管理テーブルと同じ構造である。
【０３０８】
第１レコードは、プロセスＩＤ「１２３５」で識別されるプロセスのＣＰＵ使用率は、「０．１」であることを示している。また、第１レコードは、当該プロセスのメモリ使用量は、「６４Ｍ」であることを示している。更に、第１レコードは、当該プロセスは、コマンド「ｍｉｄｐ」で起動されたことを示している。
【０３０９】
第２レコードは、プロセスＩＤ「１６２４」で識別されるプロセスのＣＰＵ使用率は、「０．１」であることを示している。また、第２レコードは、当該プロセスのメモリ使用量は、「３００Ｍ」であることを示している。更に、第２レコードは、当該プロセスは、コマンド「ｍｉｄｑ」で起動されたことを示している。
【０３１０】
第３レコードは、プロセスＩＤ「１８４２」で識別されるプロセスのＣＰＵ使用率は、「０．３」であることを示している。また、第３レコードは、当該プロセスのメモリ使用量は、「２５６Ｍ」であることを示している。更に、第３レコードは、当該プロセスは、コマンド「ａｐｌｃ」で起動されたことを示している。
【０３１１】
第４レコードは、プロセスＩＤ「２０５８」で識別されるプロセスのＣＰＵ使用率は、「０．２５」であることを示している。また、第４レコードは、当該プロセスのメモリ使用量は、「２５６Ｍ」であることを示している。更に、第４レコードは、当該プロセスは、コマンド「ａｐｌｄ」で起動されたことを示している。
【０３１２】
第５レコードは、プロセスＩＤ「１７８４」で識別されるプロセスのＣＰＵ使用率は、「０．１」であることを示している。また、第５レコードは、当該プロセスのメモリ使用量は、「６４Ｍ」であることを示している。更に、第５レコードは、当該プロセスは、コマンド「ａｐｌｅ」で起動されたことを示している。
【０３１３】
第６レコードは、プロセスＩＤ「２１０３」で識別されるプロセスのＣＰＵ使用率は、「０．１」であることを示している。また、第６レコードは、当該プロセスのメモリ使用量は、「６４Ｍ」であることを示している。更に、第６レコードは、当該プロセスは、コマンド「ａｐｌｆ」で起動されたことを示している。
【０３１４】
図５０における最大のＣＰＵ使用率、つまりプロセスＩＤ「１８４２」のプロセスにおけるＣＰＵ使用率「０．３」は、実施の形態１で示した図１６のプロセスＩＤ「２０５７」のプロセスにおけるＣＰＵ使用率「０．６」に比べると小さい。従って、処理負荷が最も高いプロセスに係るソフトウエアを新たな仮想マシン１０１に搭載させても、図１６に示した状態の場合よりも負荷分散の効果は少ない。しかし、プロセスＩＤ「１８４２」のプロセスに係るソフトウエアとプロセスＩＤ「２０５８」のプロセスに係るソフトウエアを同時に新たな仮想マシン１０１に搭載させるようにすると、負荷分散の効果は大きくなる。
【０３１５】
図５１に、選定処理（Ｂ）フローを示す。選定部１０１３は、図３７に示したＳ３７０１の場合と同様に、当該仮想マシン１０１に搭載されている各ソフトウエアによるプロセスの処理負荷を測定する（Ｓ５１０１）。
【０３１６】
選定部１０１３は、処理負荷が大きい順にプロセスを１つ選定結果に加える（Ｓ５１０３）。選定部１０１３は、選定結果に含まれるプロセスにおける処理負荷を合計する（Ｓ５１０３）。そして、選定部１０１３は、処理負荷の合計が所定基準を超えたか否かを判定する（Ｓ５１０７）。処理負荷の合計が所定基準を超えていないと判定した場合には、Ｓ５１０１に戻って、上述した処理を繰り返す。一方、処理負荷の合計が所定基準を超えたと判定した場合には、選定処理（Ｂ）を終えて、図３６のＳ３６０５に戻る。
【０３１７】
処理負荷の合計が超えるべき所定基準が「０．４」であれば、図５０に示した例におけるプロセスＩＤ「１８４２」とプロセスＩＤ「２０５８」とが選定される。尚、プロセスＩＤ「１８４２」は、ソフトウエア「ＡｐｌＣ」に係るプロセスを指し、プロセスＩＤ「２０５８」は、ソフトウエア「ＡｐｌＤ」に係るプロセスを指している。
【０３１８】
図５２に、実施の形態３に係る第２リストの例を示す。この例における第２リストは、図３２及び図４６に示した第２リストと同じ構造である。
【０３１９】
この例における第２リストは、セットアップ自動化データ「ａｐｌｃ．ｒｂ」、セットアップ自動化データ「ａｐｌｄ．ｒｂ」、セットアップ自動化データ「ｍｉｄｐ．ｒｂ」及びセットアップ自動化データ「ｍｉｄｑ．ｒｂ」がセットアップに供されることを示している。また、この段階では、いずれのセットアップ自動化データもセットアップに供されていないことを示している。
【０３２０】
本実施の形態によれば、選定されたプロセスにおける処理負荷の合計が所定基準を超えるように、１つ又は複数のプロセスを選定するので、処理負荷を分散させる実効性が高まり、新たな仮想マシン１０１において当該プロセスに係るソフトウエアに割り当てられた資源を有効に利用することができる。
【０３２１】
以上本発明の実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、上述の機能ブロック構成は実際のプログラムモジュール構成に一致しない場合もある。
【０３２２】
また、上で説明した各記憶領域の構成は一例であって、上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ処理の順番を入れ替えることも可能である。さらに、並列に実行させるようにしても良い。
【０３２３】
なお、上で述べた物理サーバ３０１は、コンピュータ装置であって、図５３に示すように、メモリ２５０１とＣＰＵ（Central Processing Unit）２５０３とハードディスク・ドライブ（ＨＤＤ：Hard Disk Drive）２５０５と表示装置２５０９に接続される表示制御部２５０７とリムーバブル・ディスク２５１１用のドライブ装置２５１３と入力装置２５１５とネットワークに接続するための通信制御部２５１７とがバス２５１９で接続されている。オペレーティング・システム（ＯＳ：Operating System）及び本実施例における処理を実施するためのアプリケーション・プログラムは、ＨＤＤ２５０５に格納されており、ＣＰＵ２５０３により実行される際にはＨＤＤ２５０５からメモリ２５０１に読み出される。ＣＰＵ２５０３は、アプリケーション・プログラムの処理内容に応じて表示制御部２５０７、通信制御部２５１７、ドライブ装置２５１３を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ２５０１に格納されるが、ＨＤＤ２５０５に格納されるようにしてもよい。本発明の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク２５１１に格納されて頒布され、ドライブ装置２５１３からＨＤＤ２５０５にインストールされる。インターネットなどのネットワーク及び通信制御部２５１７を経由して、ＨＤＤ２５０５にインストールされる場合もある。このようなコンピュータ装置は、上で述べたＣＰＵ２５０３、メモリ２５０１などのハードウエアとＯＳ及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
【０３２４】
以上述べた本発明の実施の形態をまとめると、以下のようになる。
【０３２５】
本実施の形態に係るスケールアウト方法は、一又は複数の仮想マシンを含むシステムにおけるスケールアウト方法であって、一又は複数の仮想マシンのうち、いずれかの仮想マシンにおける処理負荷の超過を検出した場合に、新たな仮想マシンを配備する処理と、処理負荷が超過した仮想マシンにおいて動作しているプロセスの各々における処理負荷に基づいて、所定の条件に一致するプロセスを選定する選定処理と、選定したプロセスに係る第１ソフトウエアを識別するための第１データ情報を特定する第１特定処理と、新たな仮想マシンにおいて、第１データ情報に基づいて第１ソフトウエアをセットアップするセットアップ処理とを含む。
【０３２６】
このようにすれば、処理負荷が超過した仮想マシンで動作しているプロセス群のうち、所定の条件に一致するプロセスに係る第１ソフトウエアが新たな仮想マシンに選択的に搭載されるようになるので、搭載されるソフトウエアを限定し、新たに配備される仮想マシンにおける資源の消費を減らすことができる。
【０３２７】
上記スケールアウト方法は、更に、第１ソフトウエアが依存する第２ソフトウエアを識別するための第２データ情報を特定する第２特定処理を含むようにしてもよい。また、上記セットアップ処理において、更に、第２データ情報に基づいて、第２ソフトウエアを新たな仮想マシンにセットアップするようにしてもよい。
【０３２８】
このようにすれば、依存する処理を含めて第１ソフトウエアの動作を保全することによって、所定の条件に一致するプロセスにおける処理が分散され、第１ソフトウエアに割り当てられた資源を有効に利用することができる。
【０３２９】
上記スケールアウト方法は、更に、第１ソフトウエアが依存される第３ソフトウエアを識別するための第３データ情報を特定する第３特定処理を含むようにしてもよい。また、上記セットアップ処理において、更に、第３データ情報に基づいて、第３ソフトウエアを新たな仮想マシンにセットアップするようにしてもよい。
【０３３０】
このようにすれば、依存元である第３ソフトウエアの処理に連動して依存先である第１ソフトウエアが処理を行うようになるので、所定の条件に一致するプロセスにおける処理が分散され、第１ソフトウエアに割り当てられた資源を有効に利用することができる。
【０３３１】
上記第１特定処理において、選定したプロセスに関連付けられている第１データ情報を特定するようにしてもよい。
【０３３２】
このようにすれば、選定したプロセスとの関連によって第１データ情報を特定するので、新たな仮想マシンにおいて起動されるプロセスが選定したプロセスと等価であることが保証されるようになる。従って、第１ソフトウエアに割り当てられた資源が無駄にならない。
【０３３３】
上記スケールアウト方法は、更に、ソフトウエアを識別するためのデータ情報と、当該データ情報に基づいて生成された起動スクリプトとを関連付ける第１関連付け処理を含むようにしてもよい。上記スケールアウト方法は、更に、起動スクリプトと、起動スクリプトによって起動されたプロセスの識別子とを関連付ける第２関連付け処理を含むようにしてもよい。また、上記選定処理において、所定の条件に一致するプロセスの識別子を特定するようにしてもよい。また、上記第１特定処理において、上記識別子に関連する起動スクリプトに基づいて、第１データ情報を特定するようにしてもよい。
【０３３４】
このようにすれば、所定の条件に一致するプロセスの識別子に関連する起動スクリプトに基づいて第１データ情報を特定するので、新たな仮想マシンにおいて起動されるプロセスが所定の条件に一致するプロセスと等価であることが保証されるようになる。従って、第１ソフトウエアに割り当てられた資源が無駄にならない。
【０３３５】
更に、上記選定処理において、プロセスの各々における処理負荷のうち、最も大きい処理負荷に係るプロセスを選定するようにしてもよい。
【０３３６】
このようにすれば、処理負荷を分散させる効率を高め、第１ソフトウエアに割り当てられた資源を有効に利用することができる。
【０３３７】
更に、上記選定処理において、選定されたプロセスにおける処理負荷の合計が所定基準を超えるように、一又は複数のプロセスを選定するようにしてもよい。
【０３３８】
このようにすれば、処理負荷を分散させる実効性が高まり、第１ソフトウエアに割り当てられた資源を有効に利用することができる。
【０３３９】
なお、上記方法による処理をコンピュータに行わせるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、ＣＤ−ＲＯＭ、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納されるようにしてもよい。尚、中間的な処理結果は、一般的にメインメモリ等の記憶装置に一時保管される。
【０３４０】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０３４１】
（付記１）
一又は複数の仮想マシンを含むシステムにおけるスケールアウト方法であって、
前記一又は複数の仮想マシンのうち、いずれかの仮想マシンにおける処理負荷の超過を検出した場合に、新たな仮想マシンを配備する処理と、
処理負荷が超過した仮想マシンにおいて動作しているプロセスの各々における処理負荷に基づいて、所定の条件に一致するプロセスを選定する選定処理と、
選定した前記プロセスに係る第１ソフトウエアを識別するための第１データ情報を特定する第１特定処理と、
前記新たな仮想マシンにおいて、前記第１データ情報に基づいて前記第１ソフトウエアをセットアップするセットアップ処理と
を含み、一又は複数のコンピュータが実行するスケールアウト方法。
【０３４２】
（付記２）
更に、
前記第１ソフトウエアが依存する第２ソフトウエアを識別するための第２データ情報を特定する第２特定処理
を含み、
前記セットアップ処理において、更に、前記第２データ情報に基づいて、前記第２ソフトウエアを前記新たな仮想マシンにセットアップする
付記１記載のスケールアウト方法。
【０３４３】
（付記３）
更に、
前記第１ソフトウエアが依存される第３ソフトウエアを識別するための第３データ情報を特定する第３特定処理
を含み、
前記セットアップ処理において、更に、前記第３データ情報に基づいて、前記第３ソフトウエアを前記新たな仮想マシンにセットアップする
付記１又は２記載のスケールアウト方法。
【０３４４】
（付記４）
前記第１特定処理において、選定した前記プロセスに関連付けられている前記第１データ情報を特定する
付記１乃至３のうち１つ記載のスケールアウト方法。
【０３４５】
（付記５）
更に、
ソフトウエアを識別するためのデータ情報と、当該データ情報に基づいて生成された起動スクリプトとを関連付ける第１関連付け処理と、
前記起動スクリプトと、前記起動スクリプトによって起動されたプロセスの識別子とを関連付ける第２関連付け処理と
を含み、
前記選定処理において、前記所定の条件に一致するプロセスの識別子を特定し、
前記第１特定処理において、前記識別子に関連する起動スクリプトに基づいて、前記第１データ情報を特定する
付記１乃至３のうち１つ記載のスケールアウト方法。
【０３４６】
（付記６）
前記選定処理において、前記プロセスの各々における処理負荷のうち、最も大きい処理負荷に係るプロセスを選定する
付記１乃至５のうち１つ記載のスケールアウト方法。
【０３４７】
（付記７）
前記選定処理において、選定されたプロセスにおける処理負荷の合計が所定基準を超えるように、一又は複数のプロセスを選定する
付記１乃至５のうち１つ記載のスケールアウト方法。
【０３４８】
（付記８）
仮想マシンを動作させるための一又は複数の情報処理装置と、
前記一又は複数の情報処理装置に接続される管理装置と
を有し、
前記管理装置は、
いずれかの仮想マシンにおける処理負荷が超過した場合に、ソフトウエアを識別するためのデータ情報に基づいて当該ソフトウエアをセットアップするセットアップ部を含む新たな仮想マシンを、前記一又は複数の情報処理装置のうちのいずれかの情報処理装置に配備する配備部
を有し、
前記情報処理装置は、
当該仮想マシンにおいて動作しているプロセスの各々における処理負荷に基づいて、所定の条件に一致するプロセスを選定する選定部と、
選定した前記プロセスに係るソフトウエアを識別するためのデータ情報を特定する特定部と、
前記データ情報を前記管理装置へ送信する送信部と
を有し、
前記管理装置は、更に、
受信した前記データ情報により特定されるデータを、前記新たな仮想マシンに送信する送信部
を有するシステム。
【０３４９】
（付記９）
仮想マシンを動作させるための情報処理装置であって、
前記仮想マシンにおける処理負荷が超過した場合に、前記仮想マシンにおいて動作しているプロセスの各々における処理負荷に基づいて、所定の条件に一致するプロセスを選定する選定部と、
選定した前記プロセスに係るソフトウエアを識別するためのデータ情報を特定する特定部と、
前記データ情報を、管理装置へ送信する送信部と
を有する情報処理装置。
【０３５０】
（付記１０）
仮想マシンにおける処理負荷が超過した場合に、ソフトウエアを識別するためのデータ情報に基づいて当該ソフトウエアをセットアップするセットアップ部を含む新たな仮想マシンを、情報処理装置に配備する配備部と、
所定の条件に一致するプロセスに係るソフトウエアを識別するためのデータ情報により特定されるデータを、前記新たな仮想マシンに送信する送信部と
を有する管理装置。
【０３５１】
（付記１１）
仮想マシンを動作させるためのコンピュータに、
前記仮想マシンにおける処理負荷が超過した場合に、前記仮想マシンにおいて動作しているプロセスの各々における処理負荷に基づいて、所定の条件に一致するプロセスを選定する処理と、
選定した前記プロセスに係るソフトウエアを識別するためのデータ情報を特定する処理と、
前記データ情報を、管理装置へ送信する処理と
を実行させるためのプログラム。
【０３５２】
（付記１２）
仮想マシンにおける処理負荷が超過した場合に、ソフトウエアを識別するためのデータ情報に基づいて当該ソフトウエアをセットアップするセットアップ部を含む新たな仮想マシンを、情報処理装置に配備する処理と、
所定の条件に一致するプロセスに係るソフトウエアを識別するためのデータ情報により特定されるデータを、前記新たな仮想マシンに送信する処理と
をコンピュータに実行させるためのプログラム。
【符号の説明】
【０３５３】
１０１  仮想マシン    ３０１  物理サーバ
３０３  ユーザ用のネットワーク    ３０５  ＦＷ兼ルーター
３０７  インターネット    ３０９  管理用のネットワーク
４０１  ＣＰＵ    ４０３  補助記憶装置
４０５  メモリ    ４０７  ハイパーバイザ
４０９  管理装置    ４１１  構築部
４１３  自動スケーリング部    ４１５  ＯＳ
５０１  エージェント    ５０３  ＯＳ
５０５  イメージ    ８０１  第１配備部
８０３  第１抽出部    ８０５  第１リスト記憶部
８０７  第１決定部    ８０９  第１送信部
８１１  第１受信部    ８１３  第１接続部
９０１  検出部    ９０３  スケールアウト部
９０５  第２配備部    ９０７  第２抽出部
９０９  第２特定部    ９１１  第３特定部
９１３  第２リスト記憶部    ９１５  第２決定部
９１７  第２送信部    ９１９  第２受信部
９２１  第２接続部    １００１  受付部
１００３  送信部    １００５  セットアップ部
１００７  第１関連付け部    １００９  測定部
１０１１  第２関連付け部    １０１３  選定部
１０１５  第１特定部    １１０１  セットアップ自動化データ記憶部
１１０３  パッケージ記憶部    １１０５  ソフトウエア構成テーブル記憶部
１１０７  仮想マシン管理テーブル記憶部    １１０９  イメージ記憶部
１２０１  範囲    １２０３  範囲
１２０５  範囲    １２０７  範囲
１５０１  起動スクリプト記憶部    １５０３  ソフトウエア記憶部
１５０５  プロセス管理テーブル記憶部    １５０７  第１関連テーブル記憶部
１５０９  第２関連テーブル記憶部    ４００１  範囲
４００３  範囲    ４００５  範囲
４００７  範囲
【図１】
2015194810.tif 000003
【図２】
2015194810.tif 000004
【図３】
2015194810.tif 000005
【図４】
2015194810.tif 000006
【図５】
2015194810.tif 000007
【図６】
2015194810.tif 000008
【図７】
2015194810.tif 000009
【図８】
2015194810.tif 000010
【図９】
2015194810.tif 000011
【図１０】
2015194810.tif 000012
【図１１】
2015194810.tif 000013
【図１２】
2015194810.tif 000014
【図１３】
2015194810.tif 000015
【図１４】
2015194810.tif 000016
【図１５】
2015194810.tif 000017
【図１６】
2015194810.tif 000018
【図１７】
2015194810.tif 000019
【図１８】
2015194810.tif 000020
【図１９】
2015194810.tif 000021
【図２０】
2015194810.tif 000022
【図２１】
2015194810.tif 000023
【図２２】
2015194810.tif 000024
【図２３】
2015194810.tif 000025
【図２４】
2015194810.tif 000026
【図２５】
2015194810.tif 000027
【図２６】
2015194810.tif 000028
【図２７】
2015194810.tif 000029
【図２８】
2015194810.tif 000030
【図２９】
2015194810.tif 000031
【図３０】
2015194810.tif 000032
【図３１】
2015194810.tif 000033
【図３２】
2015194810.tif 000034
【図３３】
2015194810.tif 000035
【図３４】
2015194810.tif 000036
【図３５】
2015194810.tif 000037
【図３６】
2015194810.tif 000038
【図３７】
2015194810.tif 000039
【図３８】
2015194810.tif 000040
【図３９】
2015194810.tif 000041
【図４０】
2015194810.tif 000042
【図４１】
2015194810.tif 000043
【図４２】
2015194810.tif 000044
【図４３】
2015194810.tif 000045
【図４４】
2015194810.tif 000046
【図４５】
2015194810.tif 000047
【図４６】
2015194810.tif 000048
【図４７】
2015194810.tif 000049
【図４８】
2015194810.tif 000050
【図４９】
2015194810.tif 000051
【図５０】
2015194810.tif 000052
【図５１】
2015194810.tif 000053
【図５２】
2015194810.tif 000054
【図５３】
2015194810.tif 000055