(57)【特許請求の範囲】
【請求項１】
一番上位の階層となる第１階層から、一番下位の階層となる第Ｎ階層（Ｎは２以上の整数）までのいずれかの階層として機能する機器を有する分散システムに適用されるアプリケーションを構成する複数のソフトウェアコンポーネントの配置を決定する管理装置であって、
前記ソフトウェアコンポーネントは前記第１階層に配置されており、
前記ソフトウェアコンポーネント同士の通信は、同じ機器を経由する、または、前記第Ｎ階層となる機器間を経由することで実現され、
前記ソフトウェアコンポーネント同士の通信は、経由する機器が示す階層が下位であるほど時間がかかり、
第Ｋ階層（Ｋ＝１，２，・・・，Ｎ）として機能する機器に対応する前記ソフトウェアコンポーネントは、グルーピング処理をすることで第Ｋ階層グループを構成することができ、
前記管理装置は、記憶部および処理部を備えており、
前記記憶部は、
通信する前記ソフトウェアコンポーネントのペアごとの第１の通信頻度、および、前記第１の通信頻度に基づいて決定される、前記第Ｋ階層グループのペアごとの第２の通信頻度を示す通信頻度データと、
特定の前記ソフトウェアコンポーネントのペアごとに予め決められ、および、特定の前記第Ｋ階層グループのペアごとに予め決められた最大距離制約プロパティ値を示す最大距離制約プロパティデータと、を記憶しており、
前記処理部は、
前記記憶部の通信頻度データを参照し、通信頻度の高いペアから順に、前記ソフトウェアコンポーネント、および、前記第Ｋ階層グループのグルーピング処理を、所定の容量制約条件に従い、前記第１階層から前記第Ｎ階層まで繰り返し実行する際、
前記グルーピング処理が行われる階層が１つ下位の階層に切り替わるたびに、前記最大距離制約プロパティ値をデクリメントし、前記最大距離制約プロパティ値が下限値に達したペアを同じグループに所属させる、
ことを特徴とする管理装置。
【請求項２】
前記処理部は、
前記最大距離制約プロパティ値が下限値に達したペアを同じグループに所属させると当該グループのキャパシティを超過する場合、当該ペアを構成するソフトウェアコンポーネントまたは第Ｋ階層グループをスケールアウトする、
ことを特徴とする請求項１に記載の管理装置。
【請求項３】
一番上位の階層となる第１階層から、一番下位の階層となる第Ｎ階層（Ｎは２以上の整数）までのいずれかの階層として機能する機器を有する分散システムに適用されるアプリケーションを構成する複数のソフトウェアコンポーネントの配置を決定する管理装置であって、
前記ソフトウェアコンポーネントは前記第１階層に配置されており、
前記ソフトウェアコンポーネント同士の通信は、同じ機器を経由する、または、前記第Ｎ階層となる機器間を経由することで実現され、
前記ソフトウェアコンポーネント同士の通信は、経由する機器が示す階層が下位であるほど時間がかかり、
第Ｋ階層（Ｋ＝１，２，・・・，Ｎ）として機能する機器に対応する前記ソフトウェアコンポーネントは、グルーピング処理をすることで第Ｋ階層グループを構成することができ、
前記管理装置は、記憶部および処理部を備えており、
前記記憶部は、
通信する前記ソフトウェアコンポーネントのペアごとの第１の通信頻度、および、前記第１の通信頻度に基づいて決定される、前記第Ｋ階層グループのペアごとの第２の通信頻度を示す通信頻度データと、
特定の前記ソフトウェアコンポーネントのペアごとに予め決められ、および、特定の前記第Ｋ階層グループのペアごとに予め決められた最小距離制約プロパティ値を示す最小距離制約プロパティデータと、を記憶しており、
前記処理部は、
前記記憶部の通信頻度データを参照し、通信頻度の高いペアから順に、前記ソフトウェアコンポーネント、および、前記第Ｋ階層グループのグルーピング処理を、所定の容量制約条件に従い、前記第１階層から前記第Ｎ階層まで繰り返し実行する際、
前記グルーピング処理が行われる階層が１つ下位の階層に切り替わるたびに、前記最小距離制約プロパティ値をデクリメントし、前記最小距離制約プロパティ値が下限値に達しないペアを同じグループに所属させない、
ことを特徴とする管理装置。
【請求項４】
前記記憶部は、
特定の前記ソフトウェアコンポーネントのペアごとに予め決められ、および、特定の前記第Ｋ階層グループのペアごとに予め決められた最大距離制約プロパティ値を示す最大距離制約プロパティデータをさらに記憶し、
前記最小距離制約プロパティデータに基づく前記グルーピング処理、および、前記最大距離制約プロパティデータに基づく前記グルーピング処理のいずれを優先させるかを決定するための優先度を、前記最小距離制約プロパティデータおよび前記最大距離制約プロパティデータに含めて記憶し、
前記処理部は、前記グルーピング処理が行われる階層が１つ下位の階層に切り替わるたびに、前記最大距離制約プロパティ値をデクリメントし、前記最大距離制約プロパティ値が下限値に達したペアを同じグループに所属させ、
前記最小距離制約プロパティデータの優先度および前記最大距離制約プロパティデータの優先度を参照して、前記最小距離制約プロパティデータに基づく前記グルーピング処理、および、前記最大距離制約プロパティデータに基づく前記グルーピング処理の少なくともいずれかを実行する
ことを特徴とする請求項３に記載の管理装置。
【請求項５】
一番上位の階層となる第１階層から、一番下位の階層となる第Ｎ階層（Ｎは２以上の整数）までのいずれかの階層として機能する機器を有する分散システムに適用されるアプリケーションを構成する複数のソフトウェアコンポーネントの配置を決定する管理装置によるソフトウェアコンポーネントグルーピング方法であって、
前記ソフトウェアコンポーネントは前記第１階層に配置されており、
前記ソフトウェアコンポーネント同士の通信は、同じ機器を経由する、または、前記第Ｎ階層となる機器間を経由することで実現され、
前記ソフトウェアコンポーネント同士の通信は、経由する機器が示す階層が下位であるほど時間がかかり、
第Ｋ階層（Ｋ＝１，２，・・・，Ｎ）として機能する機器に対応する前記ソフトウェアコンポーネントは、グルーピング処理をすることで第Ｋ階層グループを構成することができ、
前記管理装置の記憶部は、
通信する前記ソフトウェアコンポーネントのペアごとの第１の通信頻度、および、前記第１の通信頻度に基づいて決定される、前記第Ｋ階層グループのペアごとの第２の通信頻度を示す通信頻度データと、
特定の前記ソフトウェアコンポーネントのペアごとに予め決められ、および、特定の前記第Ｋ階層グループのペアごとに予め決められた最大距離制約プロパティ値を示す最大距離制約プロパティデータと、を記憶しており、
前記管理装置は、
前記記憶部の通信頻度データを参照し、通信頻度の高いペアから順に、前記ソフトウェアコンポーネント、および、前記第Ｋ階層グループのグルーピング処理を、所定の容量制約条件に従い、前記第１階層から前記第Ｎ階層まで繰り返し実行する際、
前記グルーピング処理が行われる階層が１つ下位の階層に切り替わるたびに、前記最大距離制約プロパティ値をデクリメントし、前記最大距離制約プロパティ値が下限値に達したペアを同じグループに所属させる、
ことを特徴とするソフトウェアコンポーネントグルーピング方法。
【請求項６】
一番上位の階層となる第１階層から、一番下位の階層となる第Ｎ階層（Ｎは２以上の整数）までのいずれかの階層として機能する機器を有する分散システムに適用されるアプリケーションを構成する複数のソフトウェアコンポーネントの配置を決定する管理装置によるソフトウェアコンポーネントグルーピング方法であって、
前記ソフトウェアコンポーネントは前記第１階層に配置されており、
前記ソフトウェアコンポーネント同士の通信は、同じ機器を経由する、または、前記第Ｎ階層となる機器間を経由することで実現され、
前記ソフトウェアコンポーネント同士の通信は、経由する機器が示す階層が下位であるほど時間がかかり、
第Ｋ階層（Ｋ＝１，２，・・・，Ｎ）として機能する機器に対応する前記ソフトウェアコンポーネントは、グルーピング処理をすることで第Ｋ階層グループを構成することができ、
前記管理装置の記憶部は、
通信する前記ソフトウェアコンポーネントのペアごとの第１の通信頻度、および、前記第１の通信頻度に基づいて決定される、前記第Ｋ階層グループのペアごとの第２の通信頻度を示す通信頻度データと、
特定の前記ソフトウェアコンポーネントのペアごとに予め決められ、および、特定の前記第Ｋ階層グループのペアごとに予め決められた最小距離制約プロパティ値を示す最小距離制約プロパティデータと、を記憶しており、
前記管理装置は、
前記記憶部の通信頻度データを参照し、通信頻度の高いペアから順に、前記ソフトウェアコンポーネント、および、前記第Ｋ階層グループのグルーピング処理を、所定の容量制約条件に従い、前記第１階層から前記第Ｎ階層まで繰り返し実行する際、
前記グルーピング処理が行われる階層が１つ下位の階層に切り替わるたびに、前記最小距離制約プロパティ値をデクリメントし、前記最小距離制約プロパティ値が下限値に達しないペアを同じグループに所属させない、
ことを特徴とするソフトウェアコンポーネントグルーピング方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散システムに適用されるアプリケーションを構成する複数のソフトウェアコンポーネントの適切な配置を決定する技術に関する。
【背景技術】
【０００２】
近年、階層化された分散システムにアプリケーションを適用することが増えている。例えば、図８に示すように、対象とする分散システムは、下位層から順に、データセンタ、同スイッチ配下のラック、物理サーバ、仮想サーバの４つの階層からなる。
【０００３】
データセンタは、複数設けられている。
１つのデータセンタに、複数のラックが対応して設けられている。
１つのラックに、複数の物理サーバが対応して設けられている。
１つの物理サーバに、複数の仮想サーバが対応して設けられている。
１つの仮想サーバに、複数のプロセスが対応して設けられている。
そして、プロセスに、ソフトウェアコンポーネントが１対１対応で配置（ロード）される。
【０００４】
アプリケーションは、複数のソフトウェアコンポーネントから構成される。ここで、ソフトウェアコンポーネントとは、何らかの機能を提供するソフトウェアのひとまとまりを指す。
【０００５】
図８に示す分散システムでは、任意のソフトウェアコンポーネント間で通信が発生する。そして、ソフトウェアコンポーネント同士の通信は、経由する階層が下位層であるほど時間がかかる。つまり、このような階層化された分散システムでは、通信経路が下位層に及ぶほど通信遅延が増大してしまうため、通信頻度の高いソフトウェアコンポーネント間の通信経路が下位層に及んでしまうと、通信遅延の影響が顕著に表れてしまう。
【０００６】
したがって、ソフトウェアコンポーネントの配置が処理時間（通信時間）を大きく左右するので、通信遅延を低減するには、ソフトウェアコンポーネント間の通信が、なるべく上位層で行われるようにすることが必要である。
【０００７】
このような事情に鑑みて、非特許文献１では、グラフ理論を利用して、通信遅延を低減するように、分散環境におけるソフトウェアコンポーネントの配置最適化の方式について開示されている。
【先行技術文献】
【非特許文献】
【０００８】
【非特許文献１】小林弘明、他３名、“分散環境におけるソフトウェアコンポーネントの配置最適化”、電子情報通信学会、信学技報、NS2015-17(2015-5)
【発明の概要】
【発明が解決しようとする課題】
【０００９】
分散システムにアプリケーションを適用するにあたり、リソース利用効率の向上、信頼性／可用性の向上などのさまざまな観点から、アプリケーションの要件次第では、所定の制約を設定する必要がある。しかし、そのような制約を満たしつつ、ソフトウェアコンポーネントの配置の最適化を人手で決定するのは容易でない。非特許文献１には、このような問題を解消する記載も示唆もない。
【００１０】
そこで、本発明は、上記事情に鑑みて、複数階層を有する分散システムに適用されるアプリケーションに対して求める制約を満たしつつ、アプリケーションを構成する複数のソフトウェアコンポーネントの適切な配置を決定することを課題とする。
【課題を解決するための手段】
【００１１】
前記課題を解決するために、請求項１に記載の発明は、一番上位の階層となる第１階層から、一番下位の階層となる第Ｎ階層（Ｎは２以上の整数）までのいずれかの階層として機能する機器を有する分散システムに適用されるアプリケーションを構成する複数のソフトウェアコンポーネントの配置を決定する管理装置であって、前記ソフトウェアコンポーネントは前記第１階層に配置されており、前記ソフトウェアコンポーネント同士の通信は、同じ機器を経由する、または、前記第Ｎ階層となる機器間を経由することで実現され、前記ソフトウェアコンポーネント同士の通信は、経由する機器が示す階層が下位であるほど時間がかかり、第Ｋ階層（Ｋ＝１，２，・・・，Ｎ）として機能する機器に対応する前記ソフトウェアコンポーネントは、グルーピング処理をすることで第Ｋ階層グループを構成することができ、前記管理装置は、記憶部および処理部を備えており、前記記憶部は、通信する前記ソフトウェアコンポーネントのペアごとの第１の通信頻度、および、前記第１の通信頻度に基づいて決定される、前記第Ｋ階層グループのペアごとの第２の通信頻度を示す通信頻度データと、特定の前記ソフトウェアコンポーネントのペアごとに予め決められ、および、特定の前記第Ｋ階層グループのペアごとに予め決められた最大距離制約プロパティ値を示す最大距離制約プロパティデータと、を記憶しており、前記処理部は、前記記憶部の通信頻度データを参照し、通信頻度の高いペアから順に、前記ソフトウェアコンポーネント、および、前記第Ｋ階層グループのグルーピング処理を、所定の容量制約条件に従い、前記第１階層から前記第Ｎ階層まで繰り返し実行する際、前記グルーピング処理が行われる階層が１つ下位の階層に切り替わるたびに、前記最大距離制約プロパティ値をデクリメントし、前記最大距離制約プロパティ値が下限値に達したペアを同じグループに所属させる、ことを特徴とする。
【００１２】
また、請求項５に記載の発明は、一番上位の階層となる第１階層から、一番下位の階層となる第Ｎ階層（Ｎは２以上の整数）までのいずれかの階層として機能する機器を有する分散システムに適用されるアプリケーションを構成する複数のソフトウェアコンポーネントの配置を決定する管理装置によるソフトウェアコンポーネントグルーピング方法であって、前記ソフトウェアコンポーネントは前記第１階層に配置されており、前記ソフトウェアコンポーネント同士の通信は、同じ機器を経由する、または、前記第Ｎ階層となる機器間を経由することで実現され、前記ソフトウェアコンポーネント同士の通信は、経由する機器が示す階層が下位であるほど時間がかかり、第Ｋ階層（Ｋ＝１，２，・・・，Ｎ）として機能する機器に対応する前記ソフトウェアコンポーネントは、グルーピング処理をすることで第Ｋ階層グループを構成することができ、前記管理装置の記憶部は、通信する前記ソフトウェアコンポーネントのペアごとの第１の通信頻度、および、前記第１の通信頻度に基づいて決定される、前記第Ｋ階層グループのペアごとの第２の通信頻度を示す通信頻度データと、特定の前記ソフトウェアコンポーネントのペアごとに予め決められ、および、特定の前記第Ｋ階層グループのペアごとに予め決められた最大距離制約プロパティ値を示す最大距離制約プロパティデータと、を記憶しており、前記管理装置は、前記記憶部の通信頻度データを参照し、通信頻度の高いペアから順に、前記ソフトウェアコンポーネント、および、前記第Ｋ階層グループのグルーピング処理を、所定の容量制約条件に従い、前記第１階層から前記第Ｎ階層まで繰り返し実行する際、前記グルーピング処理が行われる階層が１つ下位の階層に切り替わるたびに、前記最大距離制約プロパティ値をデクリメントし、前記最大距離制約プロパティ値が下限値に達したペアを同じグループに所属させる、ことを特徴とする。
【００１３】
請求項１，５に記載の発明によれば、特定のソフトウェアコンポーネントのペア、および、特定の第Ｋ階層グループのペアに最大距離制約プロパティ値を設定することで、通信頻度が低く本来的には別々のグループに配置されてしまうソフトウェアコンポーネントのペア、および、第Ｋ階層グループのペアであっても、アプリケーションの要件に対して意図的に同じグループに所属させることができる。
したがって、複数階層を有する分散システムに適用されるアプリケーションに対して求める制約を満たしつつ、アプリケーションを構成する複数のソフトウェアコンポーネントの適切な配置を決定することができる。
【００１４】
また、請求項２に記載の発明は、請求項１に記載の発明において、前記処理部は、前記最大距離制約プロパティ値が下限値に達したペアを同じグループに所属させると当該グループのキャパシティを超過する場合、当該ペアを構成するソフトウェアコンポーネントまたは第Ｋ階層グループをスケールアウトする、ことを特徴とする。
【００１５】
請求項２に記載の発明によれば、最大距離制約プロパティ値が下限値に達したペアを構成するソフトウェアコンポーネントまたは第Ｋ階層グループをスケールアウトすることで、これらのソフトウェアコンポーネントまたは第Ｋ階層グループが所属するグループを確実に形成することができる。
【００１６】
また、請求項３に記載の発明は、一番上位の階層となる第１階層から、一番下位の階層となる第Ｎ階層（Ｎは２以上の整数）までのいずれかの階層として機能する機器を有する分散システムに適用されるアプリケーションを構成する複数のソフトウェアコンポーネントの配置を決定する管理装置であって、前記ソフトウェアコンポーネントは前記第１階層に配置されており、前記ソフトウェアコンポーネント同士の通信は、同じ機器を経由する、または、前記第Ｎ階層となる機器間を経由することで実現され、前記ソフトウェアコンポーネント同士の通信は、経由する機器が示す階層が下位であるほど時間がかかり、第Ｋ階層（Ｋ＝１，２，・・・，Ｎ）として機能する機器に対応する前記ソフトウェアコンポーネントは、グルーピング処理をすることで第Ｋ階層グループを構成することができ、前記管理装置は、記憶部および処理部を備えており、前記記憶部は、通信する前記ソフトウェアコンポーネントのペアごとの第１の通信頻度、および、前記第１の通信頻度に基づいて決定される、前記第Ｋ階層グループのペアごとの第２の通信頻度を示す通信頻度データと、特定の前記ソフトウェアコンポーネントのペアごとに予め決められ、および、特定の前記第Ｋ階層グループのペアごとに予め決められた最小距離制約プロパティ値を示す最小距離制約プロパティデータと、を記憶しており、前記処理部は、前記記憶部の通信頻度データを参照し、通信頻度の高いペアから順に、前記ソフトウェアコンポーネント、および、前記第Ｋ階層グループのグルーピング処理を、所定の容量制約条件に従い、前記第１階層から前記第Ｎ階層まで繰り返し実行する際、前記グルーピング処理が行われる階層が１つ下位の階層に切り替わるたびに、前記最小距離制約プロパティ値をデクリメントし、前記最小距離制約プロパティ値が下限値に達しないペアを同じグループに所属させない、ことを特徴とする。
【００１７】
また、請求項６に記載の発明は、一番上位の階層となる第１階層から、一番下位の階層となる第Ｎ階層（Ｎは２以上の整数）までのいずれかの階層として機能する機器を有する分散システムに適用されるアプリケーションを構成する複数のソフトウェアコンポーネントの配置を決定する管理装置によるソフトウェアコンポーネントグルーピング方法であって、前記ソフトウェアコンポーネントは前記第１階層に配置されており、前記ソフトウェアコンポーネント同士の通信は、同じ機器を経由する、または、前記第Ｎ階層となる機器間を経由することで実現され、前記ソフトウェアコンポーネント同士の通信は、経由する機器が示す階層が下位であるほど時間がかかり、第Ｋ階層（Ｋ＝１，２，・・・，Ｎ）として機能する機器に対応する前記ソフトウェアコンポーネントは、グルーピング処理をすることで第Ｋ階層グループを構成することができ、前記管理装置の記憶部は、通信する前記ソフトウェアコンポーネントのペアごとの第１の通信頻度、および、前記第１の通信頻度に基づいて決定される、前記第Ｋ階層グループのペアごとの第２の通信頻度を示す通信頻度データと、特定の前記ソフトウェアコンポーネントのペアごとに予め決められ、および、特定の前記第Ｋ階層グループのペアごとに予め決められた最小距離制約プロパティ値を示す最小距離制約プロパティデータと、を記憶しており、前記管理装置は、前記記憶部の通信頻度データを参照し、通信頻度の高いペアから順に、前記ソフトウェアコンポーネント、および、前記第Ｋ階層グループのグルーピング処理を、所定の容量制約条件に従い、前記第１階層から前記第Ｎ階層まで繰り返し実行する際、前記グルーピング処理が行われる階層が１つ下位の階層に切り替わるたびに、前記最小距離制約プロパティ値をデクリメントし、前記最小距離制約プロパティ値が下限値に達しないペアを同じグループに所属させない、ことを特徴とする。
【００１８】
請求項３，６に記載の発明によれば、特定のソフトウェアコンポーネントのペア、および、特定の第Ｋ階層グループのペアに最小距離制約プロパティ値を設定することで、通信頻度が高く本来的には同じグループに配置されてしまうソフトウェアコンポーネントのペア、および、第Ｋ階層グループのペアであっても、アプリケーションの要件に対して意図的に別々のグループに所属させることができる。
したがって、複数階層を有する分散システムに適用されるアプリケーションに対して求める制約を満たしつつ、アプリケーションを構成する複数のソフトウェアコンポーネントの適切な配置を決定することができる。
【００１９】
また、請求項４に記載の発明は、請求項３に記載の発明において、前記記憶部は、特定の前記ソフトウェアコンポーネントのペアごとに予め決められ、および、特定の前記第Ｋ階層グループのペアごとに予め決められた最大距離制約プロパティ値を示す最大距離制約プロパティデータをさらに記憶し、前記最小距離制約プロパティデータに基づく前記グルーピング処理、および、前記最大距離制約プロパティデータに基づく前記グルーピング処理のいずれを優先させるかを決定するための優先度を、前記最小距離制約プロパティデータおよび前記最大距離制約プロパティデータに含めて記憶し、前記処理部は、前記グルーピング処理が行われる階層が１つ下位の階層に切り替わるたびに、前記最大距離制約プロパティ値をデクリメントし、前記最大距離制約プロパティ値が下限値に達したペアを同じグループに所属させ、前記最小距離制約プロパティデータの優先度および前記最大距離制約プロパティデータの優先度を参照して、前記最小距離制約プロパティデータに基づく前記グルーピング処理、および、前記最大距離制約プロパティデータに基づく前記グルーピング処理の少なくともいずれかを実行することを特徴とする。
【００２０】
請求項４に記載の発明によれば、最小距離制約プロパティデータおよび最大距離制約プロパティデータに優先度を含めることで、最小距離制約および最大距離制約が競合した場合であっても少なくともいずれかの制約を満たし、ソフトウェアコンポーネントの配置先を確実に決定することができる。
【発明の効果】
【００２１】
本発明によれば、複数階層を有する分散システムに適用されるアプリケーションに対して求める制約を満たしつつ、アプリケーションを構成する複数のソフトウェアコンポーネントの適切な配置を決定することができる。
【図面の簡単な説明】
【００２２】
【図１】本実施形態の分散システムと管理装置の全体構成図である。
【図２】ソフトウェアコンポーネントのグルーピング処理のステップ１の説明図である。
【図３】ソフトウェアコンポーネントのグルーピング処理のステップ２の説明図である。
【図４】ソフトウェアコンポーネントのグルーピング処理のステップ３の説明図である。
【図５】最大距離制約を考慮したグルーピングの流れの説明図である。
【図６】最大距離制約を満たせないケースの説明図である。
【図７】最大距離制約を考慮したグルーピングの流れの説明図である。
【図８】従来技術の分散システムの説明図である。
【発明を実施するための形態】
【００２３】
以下、本発明に係る分散システム１および管理装置２の実施形態について、図面を参照して説明する。
【００２４】
図１に示すように、分散システム１は、複数のソフトウェアコンポーネントから構成されるアプリケーションを適用対象とするシステムであり、下位層から順に、データセンタ１１、ラック１２、物理サーバ１３、仮想サーバ１４の４つの階層からなる。
【００２５】
データセンタ１１は、複数設けられている。
１つのデータセンタ１１に、複数のラック１２が対応して設けられている。
１つのラック１２に、複数の物理サーバ１３が対応して設けられている。
１つの物理サーバ１３に、複数の仮想サーバ１４が対応して設けられている。
１つの仮想サーバ１４に、複数のプロセス１５が対応して設けられている。
プロセス１５に、ソフトウェアコンポーネント３（以下、符号無しで「ソフトウェアコンポーネント」と称する場合がある。）が１対１対応で配置される。
【００２６】
分散システム１において、プロセス１５に対応して配置されたソフトウェアコンポーネント同士の通信は、経由する階層が下位層であるほど時間がかかる。例えば、仮想サーバ１４を経由するよりも物理サーバ１３を経由するほうが、時間がかかる。また、物理サーバ１３を経由するよりもラック１２を経由するほうが、時間がかかる。さらに、ラック１２を経由するよりもデータセンタ１１を経由するほうが、時間がかかる。
【００２７】
管理装置２は、分散システム１に適用されるアプリケーションを構成する複数のソフトウェアコンポーネントの配置を決定するコンピュータ装置であり、処理部２１、記憶部２２、入力部２３、出力部２４、通信部２５を備えて構成される。
【００２８】
処理部２１は、記憶部２２に記憶された各データに基づいて、分散システム１に適用されるアプリケーションを構成する複数のソフトウェアコンポーネントの配置を決定する。具体的には、初期配置を決定して実行し、また、再配置を決定し実行する。処理部２１は、例えばＣＰＵ（Central Processing Unit）によって実現される。
【００２９】
記憶部２２は、通信頻度データ、グルーピングデータ、マッピングデータ、制約プロパティデータなどを記憶し、例えば、ＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）、ＨＤＤ（Hard Disk Drive）などによって実現される。
【００３０】
通信頻度データは、ソフトウェアコンポーネントのペアごとの通信頻度のデータであり、例えば、分散システム１へソフトウェアコンポーネントを配置する前に予測したソフトウェアコンポーネント同士の通信頻度のデータである。
その場合、処理部２１は、当該通信頻度データに基づき、ソフトウェアコンポーネントを階層的にグルーピングし、分散システム１に対するソフトウェアコンポーネントの初期配置を実行する（詳細は後記）。
【００３１】
また、通信頻度データは、分散システム１におけるソフトウェアコンポーネント間の実際の通信頻度を集計したデータであってもよい。
その場合、処理部２１は、当該通信頻度データに基づき、ソフトウェアコンポーネントを階層的にグルーピングし、分散システム１に対するソフトウェアコンポーネントの再配置を実行する（詳細は後記）。
【００３２】
グルーピングデータは、処理部２１が記憶部２２の通信頻度データに基づいてソフトウェアコンポーネント間の通信がなるべく上位層で行われるようにソフトウェアコンポーネントのグルーピングを行った結果のデータである。
【００３３】
マッピングデータは、処理部２１が記憶部２２のグルーピングデータに基づいて分散システム１に対するソフトウェアコンポーネントの配置（マッピング）を行った結果のデータである。
【００３４】
制約プロパティデータは、ソフトウェアコンポーネントのペアに付与されるプロパティ値を含むデータである。また、制約プロパティデータは、ソフトウェアコンポーネントのグループのペアに付与されるプロパティ値も含むことができる。これらのプロパティ値は、分散システム１に適用されるアプリケーションに求める制約を表現する（詳細は後記）。
【００３５】
入力部２３は、管理装置２のユーザが情報を入力するための入力インタフェースであり、例えばキーボード、マウス、タッチパネルなどによって実現される。
出力部２４は、情報を出力するための出力インタフェースであり、例えば、液晶画面表示装置により実現される。
通信部２５は、分散システム１などの外部装置との通信を行うための通信インタフェースである。
【００３６】
次に、本実施形態における処理の概要を説明する。なお、説明を簡潔にするために、処理主体が管理装置２の処理部２１であることや、その処理部２１が記憶部２２の各データを用いることなどの記載は、適宜省略する。
【００３７】
また、第１階層グループとは、通信頻度が高いソフトウェアコンポーネント（各図では単に「コンポーネント」と記載している場合もある。）をグルーピングしたグループである。そして、１つの第１階層グループは、１つの仮想サーバ１４に対応する。
【００３８】
また、第２階層グループとは、通信頻度が中程度のソフトウェアコンポーネントをグルーピングしたグループである。つまり、通信頻度が中程度のソフトウェアコンポーネントのペアは、第１階層グループとしてはグルーピングされていないが、第２階層グループとしてグルーピングされることになる。そして、１つの第２階層グループは、１つの物理サーバ１３に対応する。
【００３９】
また、第３階層グループとは、通信頻度が低いソフトウェアコンポーネントをグルーピングしたグループである。つまり、通信頻度が低いソフトウェアコンポーネントのペアは、第１階層グループ、第２階層グループとしてはグルーピングされていないが、第３階層グループとしてグルーピングされることになる。そして、１つの第３階層グループは、１つのラック１２に対応する。
【００４０】
なお、図１には図示していないが、図４に図示しているように、第４階層グループとは、通信頻度がさらに低いソフトウェアコンポーネントをグルーピングしたグループである。つまり、通信頻度がさらに低いソフトウェアコンポーネントのペアは、第１階層グループ、第２階層グループ、第３階層グループとしてはグルーピングされていないが、第４階層グループとしてグルーピングされることになる。そして、１つの第４階層グループは、１つのデータセンタ１１に対応する。
【００４１】
本実施形態では、通信頻度が高いソフトウェアコンポーネントのペアがなるべく上位層で通信できるよう、ソフトウェアコンポーネント間の通信頻度に基づいてソフトウェアコンポーネントを階層的にグルーピングする（図１の符号Ａ）。
そして、そのグルーピング結果に基づいて、分散システム１にソフトウェアコンポーネントを配置する（符号Ｂ。マッピング。）。
【００４２】
記憶部２２の通信頻度データは、ソフトウェアコンポーネントのペアごとの通信頻度だけでなく、第Ｋ階層グループ（Ｋは１以上の整数であり、本実施形態ではＫ＝１，２，３，４。）のペア（第Ｋ階層グループ間）ごとの通信頻度のデータも含む。第Ｋ階層グループのペアの通信頻度を決定する方法については後記する。
【００４３】
本実施形態によるグルーピング処理は、次のステップ１〜４により実現できる。なお、ここでは、ソフトウェアコンポーネントの初期配置ではなく再配置の場合を例にとって説明する。
【００４４】
＜ステップ１＞
アプリケーションを構成するすべてのソフトウェアコンポーネント間の通信回数（通信頻度）を一定期間計測する。
＜ステップ２＞
ソフトウェアコンポーネント間の通信頻度（記憶部２２の通信頻度データ）に基づき、ソフトウェアコンポーネントの第１階層でのグルーピングを実行する。
【００４５】
＜ステップ３＞
グルーピングを階層的に繰り返し実行する。つまり、第Ｋ階層グループについて、Ｋをインクリメントして順次グルーピングを実行する。
＜ステップ４＞
階層的にグルーピングしたソフトウェアコンポーネントを、階層化された分散システム１へ対応付けて配置する。
【００４６】
［ステップ１の詳述］
ステップ１について詳述すると、図２に示すように、アプリケーションを構成するソフトウェアコンポーネントの集合Ｓに含まれるソフトウェアコンポーネントｓｎ，ｓｍ間の通信回数をｃ（ｓｎ，ｓｍ）として、本ステップによりｃの集合Ｃ＝｛ｃ（ｓｎ，ｓｍ）｜ｓｎ＜ｓｍ∧ｓｎ∈Ｓ∧ｓｍ∈Ｓ｝を得る。例えば、ｓ１，ｓ２の間の通信回数が１８回であることは、ｃ（ｓ１，ｓ２）＝１８と表すことができる。
【００４７】
［ステップ２の詳述］
また、ステップ２について詳述すると、まず、通信するソフトウェアコンポーネントのすべてのペアについて、通信頻度の高いペアから順に、ペアを同じ第１階層グループに所属させるか、または、所定の第１容量制約条件によりペアを同じ第１階層グループに所属させられない場合には、ペアの通信頻度を、それぞれが所属する第１階層グループ間の通信頻度として加算することで、第１階層グルーピングを完了する。第１容量制約条件としての上限値は、例えば、一つの仮想サーバ１４上に配置可能なソフトウェアコンポーネントの数などである。
【００４８】
その後、通信する第１階層グループのすべてのペアについて、通信頻度の高いペアから順に、ペアを同じ第２階層グループに所属させるか、または、所定の第２容量制約条件によりペアを同じ第２階層グループに所属させられない場合には、ペアの通信頻度を、それぞれが所属する第２階層グループ間の通信頻度として加算することで、第２階層グルーピングを完了する。
その後、さらに、同様のグルーピング処理を第Ｎ階層（Ｎは２以上の整数）まで繰り返し実行する。
【００４９】
このステップ２を実現するための具体的なステップ２−１〜２−５について、図３を参照して説明する。
ステップ２−１では、集合Ｃの要素ｃ（ｓｎ，ｓｍ）を降順にソートする。
次に、ステップ２−２では、先頭の要素ｃ（ｓｎ，ｓｍ）を取得する。つまり、通信回数の多いペアからグルーピング処理を実行する。
次に、ステップ２−３では、判定アルゴリズムに基づいてグルーピング条件判定を行う。この判定アルゴリズムについては後記する。
【００５０】
次に、ステップ２−４では、適切なグループｇへソフトウェアコンポーネントｓｎ，ｓｍを追加する。この際、符号２−４−１に示すように、一例として、ｃ（ｓ３，ｓ９）を処理する場合、例えば、既にｓ３が属していたグループｇ３へｓ９を挿入することが考えられる。その場合、そのペアの通信回数ｃ（ｓｎ，ｓｍ）は保存される。
【００５１】
また、符号２−４−２に示すように、ペア（ｓｎとｓｍ）が別グループｇｏ，ｇｐに分かれる場合、グループｇｏ，ｇｐ間の通信回数ｃｇ（ｇｏ，ｇｐ）に、そのペアの通信回数ｃ（ｓｎ，ｓｍ）を加算（カウント）する。例えば、ペア（ｓ８とｓ１１）が別グループｇ１，ｇ２に分かれる場合、ペア（ｓ８とｓ１１）の通信回数ｃ（ｓ８とｓ１１）をグループｇ１，ｇ２間の通信回数ｃｇ（ｇ１，ｇ２）に加算してｃｇ（ｇ１，ｇ２）＝７９とする。
【００５２】
次に、ステップ２−５（不図示）では、ステップ２−２〜２−４を、通信回数の多いものから順次、繰り返し実行する。
つまり、集合Ｃのすべての要素に対してステップ２−２〜２−４を実行する。
このようにして、ステップ２を実現することができる。
【００５３】
ステップ２−３で用いる判定アルゴリズムは、ｓｎ，ｓｍを以下のケース１〜ケース４に場合分けする。
【００５４】
ケース１：ｓｎ，ｓｍのいずれも既存のグループに属さない場合
ケース２：ｓｎ，ｓｍのどちらか一方だけ既存のグループに属する場合
ケース３：ｓｎ，ｓｍのそれぞれが既存の別々のグループに属する場合
ケース４：ｓｎ，ｓｍの両方が既存の同じグループに属する場合
【００５５】
ケース１の場合、新しいグループを作成し、判定対象のコンポーネントペアｓｎ，ｓｍをそのグループに入れる。その場合、そのペアの通信回数ｃ（ｓｎ，ｓｍ）は保存される。
【００５６】
ケース２の場合、ｓｎが既存のグループｇｏに属すると仮定すると、（ａ）グループｇｏの要素数が上限値に達していないときは、第１容量制約条件を満たすことができ、ｇｏにｓｍを挿入する。その場合、判定対象のコンポーネントペアの通信回数ｃ（ｓｎ，ｓｍ）は保存される。（ｂ）一方、グループｇｏの要素数がすでに上限値に達しているときは、第１容量制約条件を満たせることができず、新たなグループｇｐを作成し、グループｇｐにｓｍを挿入する。さらに、グループ間の通信回数ｃｇ（ｇｏ，ｇｐ）に、判定対象のコンポーネントペアの通信回数ｃ（ｓｎ，ｓｍ）を加算する。
なお、既存のグループｇｏに属するのがｓｎではなくｓｍの場合も同様である。
【００５７】
ケース３の場合、ｓｎ，ｓｍのそれぞれが既存の別々のグループｇｏ，ｇｐに属すると仮定すると、（ａ）グループｇｏ，ｇｐをマージ（統合）しても、マージしたグループの要素数の合計が上限値を超えないときは、第１容量制約条件を満たすことができ、ｇｏとｇｐをマージ（統合）する。その場合、判定対象のコンポーネントペアの通信回数ｃ（ｓｎ，ｓｍ）は保存される。（ｂ）一方、グループｇｏ，ｇｐをマージすると、マージしたグループの要素数の合計が上限値を超えてしまうときは、第１容量制約条件を満たすことができず、マージはしない。この場合、グループｇｏ，ｇｐ間の通信回数ｃｇ（ｇｏ，ｇｐ）に、判定対象のコンポーネントペアの通信回数ｃ（ｓｎ，ｓｍ）を加算する（元々、互いに独立していたグループｇｏ，ｇｐを、通信回数ｃ（ｓｎ，ｓｍ）を用いて関連付ける）。
【００５８】
ケース４の場合、グルーピングはそのままで、判定対象のコンポーネントペアの通信回数ｃ（ｓｎ，ｓｍ）の情報を追加する。
【００５９】
［ステップ３の詳述］
また、ステップ３について詳述すると、ステップ２と同様のグルーピングを階層的に繰り返し実行する。つまり、ステップ２ですでに第１階層グループとしてのグルーピングが完了しているので、まず、第１階層グループ単位でグルーピングを行って第２階層グループを作成し、その第２階層グループ単位でグルーピングを行って第３階層グループを作成し、という処理を最終の第Ｎ階層グループを作成するまで行う。
【００６０】
このステップ３に関し、第１階層グループのグルーピング結果に基づいて次のグルーピングを行う具体的な手順であるステップ３−１〜３−５について、図４を参照して説明する。なお、ステップ２で用いていた所定の第１容量制約条件の代わりに、ステップ３では第２階層グループに所属させることができる第１階層グループの数の上限値である所定の第２容量制約条件を用いる。この所定の第２容量制約条件としての上限値は、例えば、一つの物理サーバ１３上に搭載可能な仮想サーバ１４の数などである。第２容量制約条件は、一般的に、第Ｋ階層グループに所属させることができる第（Ｋ−１）階層グループの数の上限値として用いることができる（第０階層グループは、ソフトウェアコンポーネントとみなす）。
【００６１】
ステップ３−１では、集合Ｃｇの要素ｃｇ（ｇｎ，ｇｍ）を降順にソートする。
次に、ステップ３−２では、先頭の要素ｃｇ（ｇｎ，ｇｍ）を取得する。つまり、通信回数の多いペアからグルーピング処理を実行する。
次に、ステップ３−３では、判定アルゴリズムに基づいてグルーピング条件判定を行う。この判定アルゴリズムについては、ステップ２における判定アルゴリズムと同様であるので、説明を省略する。
【００６２】
次に、ステップ３−４では、適切なグループ（第２階層グループ）へｇｎ，ｇｍを追加する。この際、ステップ２−４と同様、ペア（ｇｎ，ｇｍ）が別グループに分かれる場合、そのグループ間の通信回数に、そのペアの通信回数ｃｇ（ｇｏ，ｇｐ）を加算する。
【００６３】
次に、ステップ３−５（不図示）では、ステップ３−２〜３−４を繰り返し実行する。つまり、集合Ｃｇのすべての要素に対してステップ３−２〜３−４を実行する。
【００６４】
このようなステップ３を、最終階層グループを作成するまで行う。最終階層グループが第４階層グループである場合、階層的なグルーピングが完了した状態は、図４（ｂ）に示す通りである。このグルーピングの結果のデータは、記憶部２２のグルーピングデータとして記憶される。
【００６５】
［ステップ４の詳述］
同じ第１階層グループ内のソフトウェアコンポーネントは、同じ仮想サーバ１４内に配置される。また、同じ第２階層グループ内の第１階層グループは、同じ物理サーバ１３内に配置される。また、同じ第３階層グループ内の第２階層グループは、同じラック１２内に配置される。また、同じ第４階層グループ内の第３階層グループは、同じデータセンタ１１内に配置される。このソフトウェアコンポーネントの配置のデータは、記憶部２２のマッピングデータとして記憶される。
【００６６】
（最大距離制約）
本実施形態の管理装置２が上記のステップ１〜４の処理を実行すれば、通信頻度の高いペアを構成するソフトウェアコンポーネント同士の通信、および、通信頻度の高いペアを構成する第Ｋ階層グループの各々に所属するソフトウェアコンポーネント同士の通信が上位層を経由するようにソフトウェアコンポーネントを配置し、下位層の通信を減らし、分散システム１における通信遅延を低減することができる。このことは、通信頻度の低いペアは別々のグループに（遠くに）配置される傾向にあることを意味する。
【００６７】
しかし、分散システム１に適用されるアプリケーションの要件次第では、通信頻度の低いペアを同じグループに（近くに）配置するという制約（最大距離制約）を設定する必要がある。例えば、複数のソフトウェアコンポーネントに関連する処理のリアルタイム要件が厳しく、それらのソフトウェアコンポーネント間の通信頻度が低くても、それらのソフトウェアコンポーネントを同じ物理サーバ１３に配置する必要がある。
【００６８】
この場合、ある程度の通信遅延を許容する（例えば、遅延１msec以下）ように制約条件を設定する。具体的には、ソフトウェアコンポーネントのペア、および、第Ｋ階層グループのペアに、最大距離制約プロパティ値ｐ（ｐは１以上の整数）を付与する。ここで、第Ｋ階層グループのペアに最大距離制約プロパティ値ｐを付与するとは、第Ｋ階層グループの各々に所属するソフトウェアコンポーネントのペアに最大距離制約プロパティ値ｐを付与することを意味し、本質的には、最大距離制約プロパティ値ｐは、ソフトウェアコンポーネント間に設定される値である。そこで、ソフトウェアコンポーネントおよび第Ｋ階層グループを「ノード」と総称し、ノードのペアに最大距離制約プロパティ値ｐを付与するとして説明を続ける。
【００６９】
最大距離制約プロパティ値ｐは、ステップ２，３で説明したグルーピング処理が行われる階層が１つ下位の階層に切り替わるたびにデクリメントする。また、最大距離制約プロパティ値ｐは、下限値（ｐ＝１）に達した場合、対応するノードのペアは、通信頻度に関わらず、最優先で同じグループに所属させる。最大距離制約プロパティ値ｐは、ノードのペアごとに、記憶部２２の制約プロパティデータ（ここでは、最大距離制約プロパティデータ）のプロパティ値として記憶される。
【００７０】
上記の具体的なステップＡ−１〜Ａ−５について、図５を参照して説明する。
ステップＡ−１では、例えば、管理装置２のオペレータが最大距離制約の内容（例：遅延１msec以下）を入力し、制約を指定する。
次に、ステップＡ−２では、指定された制約を、グルーピング処理に適合するように変換する。例えば、遅延１msec以下、という最大距離制約は、第３階層以上（下位）で同じグループに所属させる、という内容に変換される。このとき、最大距離制約プロパティ値ｐは３となる。図５では、特定のノードｎ１，ｎ８のペアに対して、ｐ＝３（四角の囲み付き数値として図示）を初期値として付与されることが図示されており、ｐは制約プロパティデータとして保存される。
【００７１】
次に、ステップＡ−３では、ステップ２，３で説明したグルーピング処理が行われる階層が１つ下位の階層に切り替わるたびにｐをデクリメントする（プロパティ値の操作）。図５では、初期値が３となる最大距離制約プロパティ値ｐは、第１階層グルーピング（ステップ２に相当）が終了すると２となり、第２階層グルーピング（ステップ３に相当）が終了すると１となることが図示されている。
【００７２】
次に、ステップＡ−４では、ステップ３−１（図４）にて集合Ｃｇの要素ｃｇ（ｇｎ，ｇｍ）を降順にソートする際（ｐの初期値が１の場合、ステップ２−１（図３）にて集合Ｃの要素ｃ（ｓｎ，ｓｍ）を降順にソートする際）、ｐ＝１となったノードのペアを先頭に（優先的に）配置する。図５では、ｐ＝１となったノードｎ１，ｎ８のペアが先頭に配置されていることが図示されている。
【００７３】
次に、ステップＡ−５では、ステップ２，３と同様に、判定アルゴリズムに基づいて先頭の要素からグルーピング条件判定を行う。このとき、ｐ＝１となったノードのペアは、すでに説明したケース１〜４に該当してもしなくても、同じグループに所属するように判定する。図５では、先頭に配置されたノードｎ１，ｎ８のペアがグループｇ１に配置されたことが図示されている。
【００７４】
上記のような最大距離制約プロパティ値を導入した態様でステップ１〜４の処理が実行される。すると、最大距離制約を満たしつつ、ソフトウェアコンポーネントの配置を最適化することができる。
【００７５】
ステップＡ−１〜Ａ−５の処理を徹底すると、複数のソフトウェアコンポーネントに対して最大距離制約を同時に満たせない場合がある。例えば、図６（ａ）に示すように、ノードｎ８とのペアを形成し、最大距離制約プロパティ値ｐが１となる多数のノードｎ１〜ｎ６が存在する場合を考える。この場合、ノードｎ１〜ｎ６、ｎ８とで１つのグループを形成したいが、第１容量制約条件または第２容量制約条件を満たさなければならないためにキャパシティ（容量）超過となり、グループを形成できない。
【００７６】
この場合、図６（ｂ）に示すようにノード（ここでは、ノードｎ８とするが、他のノードでもよい）をスケールアウトする。そして、第１容量制約条件または第２容量制約条件を満たす複数のグループｇ１，ｇ２を形成し、グループｇ１，ｇ２の各々で最大距離制約を満たすようにノードｎ１〜ｎ６を配置すればよい。
【００７７】
また、第１容量制約条件または第２容量制約条件を満たさなければならないためにキャパシティ（容量）超過となり、グループを形成できない場合には、その旨を所定の態様で管理者にアラーム通知してもよい。
【００７８】
（最小距離制約）
また、本実施形態のソフトウェアコンポーネントに配置の最適化によれば、通信頻度の高いペアを同じグループに（近くに）配置される傾向にある。しかし、分散システム１に適用されるアプリケーションの要件次第では、通信頻度の高いペアを別々のグループに（遠くに）配置するという制約（最小距離制約）を設定する必要がある。例えば、激甚災害に備えて、高い通信頻度を有する複数のソフトウェアコンポーネントを別々のラックに配置する必要がある。
【００７９】
この場合、ある程度の可用性を許容する（例えば、ラック電源断に耐える冗長化）ように制約条件を設定する。具体的には、最大距離制約プロパティ値ｐと同様、ノードのペアに、最小距離制約プロパティ値ｑ（ｑは０以上の整数）を付与する。
【００８０】
最小距離制約プロパティ値ｑは、ステップ２，３で説明したグルーピング処理が行われる階層が１つ下位の階層に切り替わるたびにデクリメントする。また、最小距離制約プロパティ値ｑが下限値（ｑ＝０）に達しないペアを、通信頻度に関わらず、同じグループに所属させない。最小距離制約プロパティ値ｑは、ノードのペアごとに、記憶部２２の制約プロパティデータ（ここでは、最小距離制約プロパティデータ）のプロパティ値として記憶される。
【００８１】
上記の具体的なステップＢ−１〜Ｂ−５について、図７を参照して説明する。
ステップＢ−１では、例えば、管理装置２のオペレータが最小距離制約の内容（例：ラック電源断に耐える冗長化）を入力し、制約を指定する。
次に、ステップＢ−２では、指定された制約を、グルーピング処理に適合するように変換する。例えば、ラック電源断に耐える冗長化、という最大距離制約は、第２階層以下（上位）で同じグループに所属させない、という内容に変換される。このとき、最小距離制約プロパティ値ｑは２となる。図７では、特定のノードｎ１，ｎ８のペアに対して、ｑ＝２（三角の囲み付き数値として図示）を初期値として付与されることが図示されており、ｑは制約プロパティデータとして保存される。
【００８２】
次に、ステップＢ−３では、ステップ２，３で説明したグルーピング処理が行われる階層が１つ下位の階層に切り替わるたびにｑをデクリメントする（プロパティ値の操作）。図７では、初期値が２となる最小距離制約プロパティ値ｑは、第１階層グルーピング（ステップ２に相当）が終了すると１となり、第２階層グルーピング（ステップ３に相当）が終了すると０となることが図示されている。ｑ＝０となるノードのペアに対しては最小距離制約を解除する。
【００８３】
次に、ステップＢ−４では、ステップ３−１（図４）による集合Ｃｇの要素ｃｇ（ｇｎ，ｇｍ）の降順ソート（または、ステップ２−１（図３）による集合Ｃの要素ｃ（ｓｎ，ｓｍ）の降順ソート）と同様の降順ソートを行う。
【００８４】
次に、ステップＢ−５では、ステップ２，３と同様に、判定アルゴリズムに基づいて先頭の要素からグルーピング条件判定を行う。このとき、ｑ＝０となっていない（ｑが１以上の）ノードのペアは、すでに説明したケース１〜４に該当してもしなくても、別々のグループに所属するように判定する。図５では、判定対象のノードｎ１，ｎ８のペア（ｑ＝１）について、ノードｎ１がグループｇ１に配置され、ノードｎ８がグループｇ２に配置されたことが図示されている。ｑ＝０となるノードのペアについては、ケース１〜４のいずれに該当するかが判定される。
【００８５】
上記のような最小距離制約プロパティ値を導入した態様でステップ１〜４の処理が実行される。すると、最小距離制約を満たしつつ、ソフトウェアコンポーネントの配置を最適化することができる。
なお、複数のソフトウェアコンポーネントの要件を同時に満たすことができないなどの諸事情で最小距離制約を満たせない場合は、その旨を所定の態様で管理者にアラーム通知してもよい。
【００８６】
上記した最大距離制約と最小距離制約とが競合して、ノードをどのグループに配置させるかを判定できない可能性がある。そこで、最大距離制約プロパティデータおよび最小距離制約プロパティデータに対して優先度を設定して、優先度を含む制約プロパティデータを記憶部２２に記憶することができる。処理部２１は、最大距離制約と最小距離制約とが競合した場合には優先度の値がより大きな制約を優先してソフトウェアコンポーネントの配置を決定する。優先度の値は、例えば、管理装置２の管理者が指定することができる。例えば、サービスの継続性を重視するアプリケーションに対しては、最小距離制約プロパティデータの優先度を、最大距離制約プロパティデータの優先度よりも高くする。
なお、最大距離制約と最小距離制約とが競合しない場合、または、最大距離制約と最小距離制約とが競合しない範囲内では、最大距離制約と最小距離制約の両方を満たすようにソフトウェアコンポーネントの配置を決定することができる。
【００８７】
このように、本実施形態によれば、特定のソフトウェアコンポーネントのペア、および、特定の第Ｋ階層グループのペアに最大距離制約プロパティ値を設定することで、通信頻度が低く本来的には別々のグループに配置されてしまうソフトウェアコンポーネントのペア、および、第Ｋ階層グループのペアであっても、アプリケーションの要件に対して意図的に同じグループに所属させることができる。
したがって、複数階層を有する分散システムに適用されるアプリケーションに対して求める制約を満たしつつ、アプリケーションを構成する複数のソフトウェアコンポーネントの適切な配置を決定することができる。
【００８８】
また、最大距離制約プロパティ値が下限値に達したペアを構成するソフトウェアコンポーネントまたは第Ｋ階層グループをスケールアウトすることで、これらのソフトウェアコンポーネントまたは第Ｋ階層グループが所属するグループを確実に形成することができる。
【００８９】
また、特定のソフトウェアコンポーネントのペア、および、特定の第Ｋ階層グループのペアに最小距離制約プロパティ値を設定することで、通信頻度が高く本来的には同じグループに配置されてしまうソフトウェアコンポーネントのペア、および、第Ｋ階層グループのペアであっても、アプリケーションの要件に対して意図的に別々のグループに所属させることができる。
したがって、複数階層を有する分散システムに適用されるアプリケーションに対して求める制約を満たしつつ、アプリケーションを構成する複数のソフトウェアコンポーネントの適切な配置を決定することができる。
【００９０】
また、最小距離制約プロパティデータおよび最大距離制約プロパティデータに優先度を含めることで、最小距離制約および最大距離制約が競合した場合であっても少なくともいずれかの制約を満たし、ソフトウェアコンポーネントの配置先を確実に決定することができる。
【００９１】
なお、上記した実施形態では、分散システム１におけるソフトウェアコンポーネント間の実際の通信頻度を集計した通信頻度データに基づき、ソフトウェアコンポーネントを階層的にグルーピングし、分散システム１に対するソフトウェアコンポーネントの再配置を実行するものとした。しかし、それ以外に、分散システム１へソフトウェアコンポーネントを配置する前に予測したソフトウェアコンポーネント同士の通信頻度のデータに基づき、ソフトウェアコンポーネントを階層的にグルーピングし、分散システム１に対するソフトウェアコンポーネントの初期配置を実行するようにしてもよい。つまり、本実施形態の方式によれば、分散システム１に対するソフトウェアコンポーネントの初期配置を決定し、その後、運用状況に追従してソフトウェアコンポーネントの再配置を行うことができる。
【００９２】
（変形例）
以上で本実施形態の説明を終えるが、本発明の態様はこれらに限定されるものではない。
（１）：例えば、本実施形態では分散システム１が４つの階層を有する場合について説明したが、これに限定されず、２つの階層、３つの階層、または、５つ以上の階層を有する場合にも適用できる。
【００９３】
（２）：また、ソフトウェアコンポーネントとプロセスとの対応は、１対１対応に限定されず、１対Ｎ対応（Ｎは２以上の整数）、Ｎ対１対応（Ｎは２以上の整数）であってもよい。
【００９４】
（３）：また、第１容量制約条件、第２容量制約条件は、サーバ容量の制限に基づく数値に限定されず、所定の理由により同じグループにグルーピングできないソフトウェアコンポーネントに関する情報などでもよい。
【００９５】
（４）：また、ソフトウェアコンポーネントのグルーピング処理を実行するのは、分散システム１の外部にある管理装置２に限定されず、例えば、分散システム１内のデータセンタ１１内のコンピュータ装置など、他の装置であってもよい。
【００９６】
本実施形態で説明した種々の技術を適宜組み合わせた技術を実現することもできる。
本実施形態で説明したソフトウェアをハードウェアとして実現することもでき、ハードウェアをソフトウェアとして実現することもできる。
その他、ハードウェア、ソフトウェア、フローチャートなどについて、本発明の趣旨を逸脱しない範囲で適宜変更が可能である。
【符号の説明】
【００９７】
１      分散システム
２      管理装置
３      ソフトウェアコンポーネント
１１    データセンタ
１２    ラック
１３    物理サーバ
１４    仮想サーバ
１５    プロセス
２１    処理部
２２    記憶部
２３    入力部
２４    出力部
２５    通信部
【図１】
0006417341.tif 000002
【図２】
0006417341.tif 000003
【図３】
0006417341.tif 000004
【図４】
0006417341.tif 000005
【図５】
0006417341.tif 000006
【図６】
0006417341.tif 000007
【図７】
0006417341.tif 000008
【図８】
0006417341.tif 000009