(57)【要約】      （修正有）【課題】分散処理システムにおけるソフトウェア要素の配置決定において、余分な負荷を減ずる。【解決手段】連携する複数のソフトウェア要素の各々を、複数のノードとサーバとのいずれかにおいて実行する分散処理システムにおける配置決定方法であって、複数のノードの各々は、当該ノードにおいて実行するソフトウェア要素から送信されるパケットをキャプチャし、キャプチャしたパケットのうち、ループバックアドレス以外のアドレス宛に送られるパケットに関するトラフィックレートを算出し、算出したトラフィックレートを、サーバへ送信する処理を実行する。更に、サーバは、受信したトラフィックレートに基づいて、複数のソフトウェア要素の配置を決定する処理を実行する。【選択図】図３０
2019071518.tif 000002
【特許請求の範囲】
【請求項１】
連携する複数のソフトウェア要素の各々を、複数のノードとサーバとのいずれかにおいて実行する分散処理システムにおける配置決定方法であって、
前記複数のノードの各々は、
当該ノードにおいて実行するソフトウェア要素から送信されるパケットをキャプチャし、
キャプチャした前記パケットのうち、ループバックアドレス以外のアドレス宛に送られるパケットに関するトラフィックレートを算出し、
算出した前記トラフィックレートを、前記サーバへ送信する
処理を実行し、
前記サーバは、
受信した前記トラフィックレートに基づいて、前記複数のソフトウェア要素の配置を決定する
処理を実行する配置決定方法。
【請求項２】
前記配置を決定する処理において、
前記複数のソフトウェア要素に関する複数の配置パターンの各々について、前記トラフィックレートに基づいて各リンクにおける通信コストの合計を算出し、
算出した前記通信コストの合計に基づいて、いずれかの配置パターンを選択する
請求項１記載の配置決定方法。
【請求項３】
複数のノードとサーバとを含み、
連携する複数のソフトウェア要素の各々を、前記複数のノードと前記サーバとのいずれかにおいて実行する分散処理システムであって、
前記複数のノードの各々は、
当該ノードにおいて実行するソフトウェア要素から送信されるパケットをキャプチャするキャプチャ部と、
キャプチャした前記パケットのうち、ループバックアドレス以外のアドレス宛に送られるパケットに関するトラフィックレートを算出する算出部と、
算出した前記トラフィックレートを、前記サーバへ送信する送信部と
を有し、
前記サーバは、
受信した前記トラフィックレートに基づいて、前記複数のソフトウェア要素の配置を決定する決定部
を有する分散処理システム。
【請求項４】
ネットワークインフラに含まれるノードであるコンピュータにより実行されるトラフィックレート通知方法であって、
前記ネットワークインフラにおいて分散配備され連携する複数のソフトウェア要素のうち、当該ノードにおいて実行するソフトウェア要素から送信されるパケットをキャプチャし、
キャプチャした前記パケットのうち、ループバックアドレス以外のアドレス宛に送られるパケットに関するトラフィックレートを算出し、
算出した前記トラフィックレートを、前記複数のソフトウェア要素の配置を決定する装置へ送信する
処理を含むトラフィックレート通知方法。
【請求項５】
ネットワークインフラに含まれるノードであるコンピュータに、
前記ネットワークインフラにおいて分散配備され連携する複数のソフトウェア要素のうち、当該ノードにおいて実行するソフトウェア要素から送信されるパケットをキャプチャし、
キャプチャした前記パケットのうち、ループバックアドレス以外のアドレス宛に送られるパケットに関するトラフィックレートを算出し、
算出した前記トラフィックレートを、前記複数のソフトウェア要素の配置を決定する装置へ送信する
処理を実行させる処理プログラム。
【請求項６】
連携する複数のソフトウェア要素の各々を、複数のノードとサーバとのいずれかにおいて実行する分散処理システムにおける配置決定方法であって、
前記複数のノードの各々は、
当該ノードにおいて実行するソフトウェア要素から送信されるパケットをキャプチャし、
キャプチャした前記パケットに関するトラフィックレートを算出し、
算出した前記トラフィックレートを、前記サーバへ送信する
処理を実行し、
前記サーバは、
受信した前記トラフィックレートのうち、ループバックアドレス以外のアドレス宛に送られたパケットに関するトラフィックレートに基づいて、前記複数のソフトウェア要素の配置を決定する
処理を実行する配置決定方法。
【請求項７】
前記配置を決定する処理において、
前記複数のソフトウェア要素に関する複数の配置パターンの各々について、前記トラフィックレートに基づいて各リンクにおける通信コストの合計を算出し、
算出した前記通信コストの合計に基づいて、いずれかの配置パターンを選択する
請求項６記載の配置決定方法。
【請求項８】
複数のノードとサーバとを含み、
連携する複数のソフトウェア要素の各々を、前記複数のノードと前記サーバとのいずれかにおいて実行する分散処理システムであって、
前記複数のノードの各々は、
当該ノードにおいて実行するソフトウェア要素から送信されるパケットをキャプチャするキャプチャ部と、
キャプチャした前記パケットに関するトラフィックレートを算出する算出部と、
算出した前記トラフィックレートを、前記サーバへ送信する送信部と
を有し、
前記サーバは、
受信した前記トラフィックレートのうち、ループバックアドレス以外のアドレス宛に送られたパケットに関するトラフィックレートに基づいて、前記複数のソフトウェア要素の配置を決定する決定部
を有する分散処理システム。
【請求項９】
ネットワークインフラに含まれる管理装置であるコンピュータにより実行される配置決定方法であって、
前記ネットワークインフラにおいて分散配備され連携する複数のソフトウェア要素のいずれかを実行する各ノードから、当該ノードにおいて実行するソフトウェア要素から送信されるパケットに関するトラフィックレートを受信し、
受信した前記トラフィックレートのうち、ループバックアドレス以外のアドレス宛に送られたパケットに関するトラフィックレートに基づいて、前記複数のソフトウェア要素の配置を決定する
処理を含む配置決定方法。
【請求項１０】
ネットワークインフラに含まれる管理装置であるコンピュータに、
前記ネットワークインフラにおいて分散配備され連携する複数のソフトウェア要素のいずれかを実行する各ノードから、当該ノードにおいて実行するソフトウェア要素から送信されるパケットに関するトラフィックレートを受信し、
受信した前記トラフィックレートのうち、ループバックアドレス以外のアドレス宛に送られたパケットに関するトラフィックレートに基づいて、前記複数のソフトウェア要素の配置を決定する
処理を実行させる処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散処理システムに関する。
【背景技術】
【０００２】
例えば大量の収集データを活用するクラウドサービスにおいて、クラウドサーバにおける通信負荷を軽減するために、当該クラウドサービスを実現するためのソフトウェア要素（例えば、アプリケーションやデータストア）の一部を複数のノードに分散させることがある。このような分散処理システムでは、クラウドサーバにおいてノードにおいて加工されたデータを受けるようにして、トラフィックの集中を回避する。
【０００３】
そのため、クラウドサーバは、各ソフトウェア要素をいずれのノードに配置するかを決定する配置決定部を有する。当該配置決定部では、クラウドサーバ自身と複数のノードとに関するリンクを定めたトポロジデータと、ソフトウェア要素間のデータフローに関するトラフィックレートとに基づいて、より効率的な配置を決定する。
【０００４】
一方、各ノードは、クラウドサービスに係る動作が行われている状態で、自らに配備されたソフトウェア要素から送信されるデータのトラフィックレートを計測して、クラウドサーバへ通知する。
【０００５】
但し、ソフトウェア要素は、他のソフトウェア要素以外に、付属的なモジュール（例えば、付属データストア）と通信を行うことがある。このような通信に関するトラフィックレートは、配置決定部において不要である。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１６−１１６０２６号公報
【特許文献２】特開２０１０−８１５３４号公報
【特許文献３】特開２０１５−７６７８０号公報
【特許文献４】特開２０１０−２４４７０号公報
【特許文献５】特開２０１３−２０１６８５号公報
【非特許文献】
【０００７】
【非特許文献１】福田茂紀、外６名、「広域処理分散自動化におけるスケーラブルな外部環境変化への追従手法の提案」、マルチメディア，分散，協調とモバイルシンポジウム２０１４論文集、情報処理学会、２０１４年７月２日、ｐ．６７４ - ６８２
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本発明の目的は、一側面では、分散処理システムにおけるソフトウェア要素の配置決定に関し、余分な負荷を減ずることである。
【課題を解決するための手段】
【０００９】
一態様に係る配置決定方法は、連携する複数のソフトウェア要素の各々を、複数のノードとサーバとのいずれかにおいて実行する分散処理システムにおける配置決定方法であって、複数のノードの各々は、（Ａ）当該ノードにおいて実行するソフトウェア要素から送信されるパケットをキャプチャし、（Ｂ）キャプチャしたパケットのうち、ループバックアドレス以外のアドレス宛に送られるパケットに関するトラフィックレートを算出し、（Ｃ）算出したトラフィックレートを、サーバへ送信する処理を実行する。更に、サーバは、（Ｄ）受信したトラフィックレートに基づいて、複数のソフトウェア要素の配置を決定する処理を実行する。
【００１０】
また、一態様に係る配置決定方法は、連携する複数のソフトウェア要素の各々を、複数のノードとサーバとのいずれかにおいて実行する分散処理システムにおける配置決定方法であって、複数のノードの各々は、（Ｅ）当該ノードにおいて実行するソフトウェア要素から送信されるパケットをキャプチャし、（Ｆ）キャプチャしたパケットに関するトラフィックレートを算出し、（Ｇ）算出したトラフィックレートを、サーバへ送信する処理を実行する。更に、サーバは、（Ｈ）受信したトラフィックレートのうち、ループバックアドレス以外のアドレス宛に送られたパケットに関するトラフィックレートに基づいて、複数のソフトウェア要素の配置を決定する処理を実行する。
【発明の効果】
【００１１】
一側面としては、分散処理システムにおけるソフトウェア要素の配置決定に関し、余分な負荷を減ずることができる。
【図面の簡単な説明】
【００１２】
【図１】図１は、ソフトウェア要素間のデータフローの例を示す図である。
【図２】図２は、フローテーブルの例を示す図である。
【図３】図３は、ネットワーク構成例を示す図である。
【図４】図４は、トポロジデータの例を示す図である。
【図５】図５は、配置パターンの第１例を示す図である。
【図６】図６は、配置パターンデータの第１例を示す図である。
【図７】図７は、配置パターンの第２例を示す図である。
【図８】図８は、配置パターンデータの第２例を示す図である。
【図９】図９は、全体トラフィックレートテーブルの例を示す図である。
【図１０】図１０は、ノードのモジュール構成例を示す図である。
【図１１】図１１は、フロー受付処理フローを示す図である。
【図１２】図１２は、フローテーブルの例を示す図である。
【図１３】図１３は、パケットキャプチャ処理（Ａ）フローを示す図である。
【図１４】図１４は、パケットログデータの例を示す図である。
【図１５】図１５は、トラフィックレートテーブルの例を示す図である。
【図１６】図１６は、トラフィックレート通知処理（Ａ）フローを示す図である。
【図１７】図１７は、トラフィックレート算出処理フローを示す図である。
【図１８】図１８は、トラフィックレート算出処理フローを示す図である。
【図１９】図１９は、クラウドサーバのモジュール構成例を示す図である。
【図２０】図２０は、初期処理フローを示す図である。
【図２１】図２１は、トラフィックレート受付処理（Ａ）フローを示す図である。
【図２２】図２２は、トラフィックレート選別処理フローを示す図である。
【図２３】図２３は、トラフィックレートテーブルの例を示す図である。
【図２４】図２４は、トラフィックレート更新処理フローを示す図である。
【図２５】図２５は、全体トラフィックレートテーブルの例を示す図である。
【図２６】図２６は、配備ルーチン処理フローを示す図である。
【図２７】図２７は、配置決定処理フローを示す図である。
【図２８】図２８は、全体コスト算出処理フローを示す図である。
【図２９】図２９は、実施の形態２におけるノードのモジュール構成例を示す図である。
【図３０】図３０は、トラフィックレート通知処理（Ｂ）フローを示す図である。
【図３１】図３１は、パケットログ選別処理フローを示す図である。
【図３２】図３２は、パケットログデータの例を示す図である。
【図３３】図３３は、実施の形態２におけるクラウドサーバのモジュール構成例を示す図である。
【図３４】図３４は、トラフィックレート受付処理（Ｂ）フローを示す図である。
【図３５】図３５は、実施の形態３におけるノードのモジュール構成例を示す図である。
【図３６】図３６は、パケットキャプチャ処理（Ｂ）フローを示す図である。
【図３７】図３７は、実施の形態４におけるノードのモジュール構成例を示す図である。
【図３８】図３８は、パケットキャプチャ処理（Ｃ）フローを示す図である。
【図３９】図３９は、コンピュータの機能ブロック図である。
【発明を実施するための形態】
【００１３】
［実施の形態１］
例えばセンサを備えた多数のＩｏＴ（Internet of Things）デバイスで得られた計測データを活用するサービスに関して、クラウドサーバで計測データを収集して処理すると、クラウドサーバにトラフィックが集中して通信負荷が高まる。その結果、サービスが不安定になることもある。
【００１４】
分散処理システムでは、サービスの機能を実現するために連携するソフトウェア要素（アプリケーションやデータストア）を、ＩｏＴデバイスと直接接続するエッジノードやエッジノードとクラウドサーバとの間を中継するノードに、分散的に配置する。そして、ノード間では、例えば加工データを伝送するようにする。そのようにすれば、クラウドサーバにおけるトラフィックの集中を回避できるようになる。
【００１５】
サービスの機能の一部を担うソフトウェア要素をノードに配置するパターンは、複数想定される。また、ネットワーク経由のトラフィック量は、配置パターンによって異なる。そのため、自動的にソフトウェア要素の配置を決定する配置決定部は、配置パターン毎にネットワーク経由のトラフィック量が少ない配置パターンを採用する。当該ソフトウェアをアプリケーション配置プランナということがある。
【００１６】
本実施の形態で、配置決定部は、クラウドサーバに設けられる。配置決定部は、ソフトウェア要素間のデータフローにおけるトラフィックレートと、インフラのトポロジとに基づいて、ネットワークにおける通信コストがより小さい配置パターンを選択し、配置プランとして決定する。そして、配置プランに基づいてソフトウェア要素の再配備が実行される。
【００１７】
トラフィックのデータは、試行段階或いは運用段階で得られる。つまり、ノードにおいて当該ノードに配置されたソフトウェア要素の通信実績が計測され、当該通信実績が基礎となってトラフィックレートが算出される。
【００１８】
ソフトウェア要素自身がトラフィックレートを算出する方法も考えられるが、本実施の形態では、ソフトウェア要素にトラフィックレートを算出する処理を含めずに、外部からソフトウェア要素の通信実測を計測し、トラフィックレートを算出する方式を採用する。このようにすれば、ソフトウェア要素の開発に係る労力は軽減され、例えば一般的なソフトウェア要素への適用も簡単になる。
【００１９】
但し、外部からトラフィック要素を監視する場合に、ソフトウェア要素間の通信以外も計測対象となってしまうことがある。その結果、余分な処理を行うことになる。本実施の形態では、余分な処理を減ずる工夫をする。
【００２０】
図１に、ソフトウェア要素間のデータフローの例を示す。図示した例では、サービスの機能を６つに分割し、６つのソフトウェア要素の処理によって、当該サービスを実現する。この例におけるソフトウェア要素は、アプリケーション１０１ａ、データストア１０５ｅ、アプリケーション１０１ｂ、アプリケーション１０１ｃ、データストア１０５ｆ及びアプリケーション１０１ｄである。データストア１０５ｅ及びデータストア１０５ｆは、例えばデータベース或いはファイルシステムである。
【００２１】
プログラムＩＤ：ＡＰＬ＿Ａのアプリケーション１０１ａは、ＩｏＴデバイスで計測された計測データ、つまり生データを収集する機能を実現する。アプリケーション１０１ａは、収集した生データをデータストア１０５ｅへ登録する。
【００２２】
データストア１０５ｅは、収集された生データを所定の構成に従って蓄積する。データストア１０５ｅは、アプリケーション１０１ｂからのデータ取得要求に応じて生データを提供する。
【００２３】
プログラムＩＤ：ＡＰＬ＿Ｂのアプリケーション１０１ｂは、生データに関する一次加工処理を行う。アプリケーション１０１ｂは、一次加工処理において付属データストア１０３ｂに蓄積されている一次中間データを用いる。
【００２４】
付属データストア１０３ｂは、アプリケーション１０１ｂに従属する。そのため、付属データストア１０３ｂは、アプリケーション１０１ｂと同じ装置に設けられる。付属データストア１０３ｂは、アプリケーション１０１ｂからのデータ取得要求に応じて一次中間データを提供する。付属データストア１０３ｂは、例えばデータベース或いはファイルシステムである。
【００２５】
アプリケーション１０１ｂは、一次加工処理において生成した一次加工データをアプリケーション１０１ｃへ通知する。また、アプリケーション１０１ｂは、更新された一次中間データを付属データストア１０３ｂへ登録する処理も行う。
【００２６】
プログラムＩＤ：ＡＰＬ＿Ｃのアプリケーション１０１ｃは、通知された一次加工データに関する二次加工処理を行う。アプリケーション１０１ｃは、二次加工処理において付属データストア１０３ｃに蓄積されている二次中間データを用いる。
【００２７】
付属データストア１０３ｃは、アプリケーション１０１ｃに従属する。そのため、付属データストア１０３ｃは、アプリケーション１０１ｃと同じ装置に設けられる。付属データストア１０３ｃは、アプリケーション１０１ｃからのデータ取得要求に応じて二次中間データを提供する。付属データストア１０３ｃは、例えばデータベース或いはファイルシステムである。
【００２８】
アプリケーション１０１ｃは、二次加工処理において生成した二次加工データをデータストア１０５ｆへ登録する処理を行う。
【００２９】
データストア１０５ｆは、二次加工データを所定の構成に従って蓄積する。データストア１０５ｆは、アプリケーション１０１ｄからのデータ取得要求に応じて二次加工データを提供する。
【００３０】
アプリケーション１０１ｄは、データストア１０５ｆから提供された二次加工データに基づいて、状況の判定を行う。
【００３１】
図２に、図１に示したデータフローを定義するフローテーブルの例を示す。この例におけるフローテーブルは、ソフトウェア要素間のデータフローに対応するレコードを有している。フローテーブルのレコードは、出力プログラムＩＤが格納されるフィールドと、入力プログラムＩＤが格納されるフィールドと、入力プログラムのポート番号が格納されるフィールドとを有している。
【００３２】
出力プログラムＩＤは、データを出力するソフトウェア要素を特定する。入力プログラムＩＤは、データを入力するソフトウェア要素を特定する。入力プログラムのポート番号は、データを入力するソフトウェア要素が使用するポートを特定する。
【００３３】
図示した１番目のレコードは、第１のデータフローにおいて、プログラムＩＤ：ＡＰＬ＿Ａであるアプリケーション１０１ａから出力されたデータが、プログラムＩＤ：ＳＴＲ＿Ｅであるデータストア１０５ｅへ入力され、当該データストア１０５ｅは、ポート番号：ＰＲＴ＿Ｅを使用することを示している。
【００３４】
続いて、ネットワークインフラについて説明する。図３に、ネットワーク構成例を示す。ノードＩＤ：ＮＤ＿１のノード３０３ａは、ＩｏＴデバイス３０１ａ、ＩｏＴデバイス３０１ｂ及びＩｏＴデバイス３０１ｃと接続するエッジノードである。ノード３０３ａは、ノードＩＤ：ＮＤ＿２のノード３０３ｂ及びノードＩＤ：ＮＤ＿３のノード３０３ｃと接続している。ノード３０３ｂは、クラウドサーバ３０５とも接続している。一方、ノード３０３ｃは、ノード３０３ｄとも接続している。更に、ノード３０３ｄは、クラウドサーバ３０５とも接続している。つまり、ノード３０３ｂ、ノード３０３ｃ及びノード３０３ｄは、エッジノードとクラウドサーバ３０５との中間に位置する中継ノードである。クラウドサーバ３０５のノードＩＤは、ＮＤ＿Ｓである。
【００３５】
図４に、図３に示したネットワーク構成例に対応するトポロジデータを示す。この例におけるトポロジデータは、テーブル形式である。但し、トポロジデータは、テーブル形式以外の形式であってもよい。この例におけるトポロジデータは、ノード間のリンク（具体的には、伝送路のことを指す。）に対応するレコードを有している。トポロジデータのレコードは、ノードＩＤが格納されるフィールドと、ＩＰアドレスが格納されるフィールドと、次段ノードＩＤが格納されるフィールドと、通信単価が格納されるフィールドとを有している。
【００３６】
ノードＩＤは、リンクにおけるフィールド側（下位側ということもある。）のノードを特定する。ＩＰアドレスは、フィールド側のノードにおけるＩＰアドレスである。次段ノードＩＤは、リンクにおけるクラウド側（下位側ということもある。）のノードを特定する。通信単価は、当該リンクにおける単位通信量に要するコストである。
【００３７】
図示した１番目のレコードは、ノードＩＤ：ＮＤ＿１で特定されるノード３０３ａ（ＩＰアドレス：ＩＰ＿１）とノードＩＤ：ＮＤ＿２で特定されるノード３０３ｂとがリンクしていることを示している。また、当該レコードは、当該リンクにおける通信単価が、Ｃ＿１であることを示している。
【００３８】
次に、上述したデータフローとトポロジデータとを前提とする配置パターンについて説明する。
【００３９】
図５に、配置パターンの第１例を示す。配置パターンの第１例では、アプリケーション１０１ａとデータストア１０５ｅとが、ノード３０３ａに配置されている。同じく、アプリケーション１０１ｂとアプリケーション１０１ｃとが、ノード３０３ｂに配置されている。また、データストア１０５ｆとアプリケーション１０１ｄとが、クラウドサーバ３０５に配置されている。尚、アプリケーション１０１ｂが配置されるノード３０３ｂには、付属データストア１０３ｂが設けられる。同様に、アプリケーション１０１ｃと共に付属データストア１０３ｃが、ノード３０３ｂに設けられる。
【００４０】
ここで、ソフトウェア要素間のデータフローにおけるパケットに設定される宛先ＩＰアドレスについて説明する。各ソフトウェア要素は、出力先となるソフトウェア要素のプログラムＩＤに対応するＩＰアドレスをクラウドサーバ３０５から取得する。そして、取得したＩＰアドレスを出力するパケットに設定する。従って、同一ノード３０３に配備されているソフトウェア要素へ送るパケットには、ループバックアドレスではなく、グローバルＩＰアドレスが設定される。
【００４１】
この例で、アプリケーション１０１ａからデータストア１０５ｅへ送られるパケットには、ノード３０３ａのＩＰアドレス：ＩＰ＿１が設定される。同様に、アプリケーション１０１ｂからアプリケーション１０１ｃへ送られるパケットには、ノード３０３ｂのＩＰアドレス：ＩＰ＿２が設定される。同様に、データストア１０５ｆからアプリケーション１０１ｄへ送られるパケットには、クラウドサーバ３０５のＩＰアドレス：ＩＰ＿Ｓが設定される。
【００４２】
また、リンクを介して送られるパケットにも、出力先となるソフトウェア要素が配置されている装置のグローバルＩＰアドレスが設定される。
【００４３】
この例で、データストア１０５ｅからアプリケーション１０１ｂへ送られるパケットには、ノード３０３ｂのＩＰアドレス：ＩＰ＿２が設定される。同様に、アプリケーション１０１ｃからデータストア１０５ｆへ送られるパケットには、クラウドサーバ３０５のＩＰアドレス：ＩＰ＿Ｓが設定される。
【００４４】
一方、付属データストア１０３へ送られるパケットの宛先ＩＰアドレスには、ループバックアドレスが設定される。また、付属データストア１０３から送られるパケットの宛先ＩＰアドレスにも、ループバックアドレスが設定される。付属データストア１０３は、主たるアプリケーション１０１と同じ装置に設けられる前提で処理されるので、ループバックアドレスが適している。
【００４５】
この例で、アプリケーション１０１ｂから付属データストア１０３ｂへ送られるパケット、付属データストア１０３ｂからアプリケーション１０１ｂへ送られるパケット、アプリケーション１０１ｃから付属データストア１０３ｃへ送られるパケット及び付属データストア１０３ｃからアプリケーション１０１ｃへ送られるパケットのいずれにおいても、宛先ＩＰアドレスのフィールドにループバックアドレスが設定される。
【００４６】
ここで、配置パターンの第１例における通信コストについて説明する。データストア１０５ｅからアプリケーション１０１ｂへのデータフロー及びアプリケーション１０１ｃからデータストア１０５ｆへのデータフローにおいて通信コストが発生する。その他のデータフローは、装置内の通信によるのでコストが発生しない。
【００４７】
データストア１０５ｅからアプリケーション１０１ｂへのデータフローに係る通信コストは、データストア１０５ｅからアプリケーション１０１ｂへのデータフローにおけるトラフィックレートと、ノード３０３ａとノード３０３ｂとの間のリンクにおける通信単価との積として求められる。同様に、アプリケーション１０１ｃからデータストア１０５ｆへのデータフローに係る通信コストは、アプリケーション１０１ｃからデータストア１０５ｆへのデータフローにおけるトラフィックレートと、ノード３０３ｂとクラウドサーバ３０５との間のリンクにおける通信単価との積として求められる。
【００４８】
図６に、図５に示した第１例に対応する配置パターンデータを示す。この例における配置パターンデータは、テーブル形式である。但し、配置パターンデータは、テーブル形式以外の形式であってもよい。この例における配置パターンデータは、ソフトウェア要素に対応するレコードを有している。配置パターンデータのレコードは、プログラムＩＤが格納されるフィールドと、ノードＩＤが格納されるフィールドと、ＩＰアドレスが格納されるフィールドとを有している。
【００４９】
プログラムＩＤは、ソフトウェア要素を特定する。ノードＩＤは、当該ソフトウェア要素が配置される装置を特定する。ＩＰアドレスは、ソフトウェア要素が配置される装置のＩＰアドレスである。
【００５０】
図示した１番目のレコードは、プログラムＩＤ：ＡＰＬ＿Ａであるアプリケーション１０１ａが、ノードＩＤ：ＮＤ＿１で特定されるノード３０３ａ（ＩＰアドレス：ＩＰ＿１）に配置されることを示している。
【００５１】
別の配置パターン例についても説明する。図７に、配置パターンの第２例を示す。配置パターンの第２例では、アプリケーション１０１ａが、ノード３０３ａに配置されている。同じく、データストア１０５ｅとアプリケーション１０１ｂとが、ノード３０３ｃに配置されている。同じく、アプリケーション１０１ｃとデータストア１０５ｆとが、ノード３０３ｄに配置されている。また、アプリケーション１０１ｄが、クラウドサーバ３０５に配置されている。尚、アプリケーション１０１ｂが配置されるノード３０３ｃには、付属データストア１０３ｂが設けられる。また、アプリケーション１０１ｃが配置されるノード３０３ｄには、付属データストア１０３ｃが設けられる。
【００５２】
同じ装置に配置されているソフトウェア要素間の通信に関して述べる。データストア１０５ｅからアプリケーション１０１ｂへ送られるパケットには、ノード３０３ｃのＩＰアドレス：ＩＰ＿３が設定される。アプリケーション１０１ｃからデータストア１０５ｆへ送られるパケットには、ノード３０３ｄのＩＰアドレス：ＩＰ＿４が設定される。
【００５３】
異なる装置に配置されているソフトウェア要素間の通信に関して述べる。アプリケーション１０１ａからデータストア１０５ｅへ送られるパケットには、ノード３０３ｃのＩＰアドレス：ＩＰ＿３が設定される。アプリケーション１０１ｂからアプリケーション１０１ｃへ送られるパケットには、ノード３０３ｄのＩＰアドレス：ＩＰ＿４が設定される。データストア１０５ｆからアプリケーション１０１ｄへ送られるパケットには、クラウドサーバ３０５のＩＰアドレス：ＩＰ＿Ｓが設定される。
【００５４】
付属データストア１０３の通信に関して述べる。アプリケーション１０１ｂから付属データストア１０３ｂへ送られるパケット、付属データストア１０３ｂからアプリケーション１０１ｂへ送られるパケット、アプリケーション１０１ｃから付属データストア１０３ｃへ送られるパケット及び付属データストア１０３ｃからアプリケーション１０１ｃへ送られるパケットのいずれにおいても、宛先ＩＰアドレスのフィールドにループバックアドレスが設定される。
【００５５】
ここで、配置パターンの第２例における通信コストについて説明する。アプリケーション１０１ａからデータストア１０５ｅへのデータフロー、アプリケーション１０１ｂからアプリケーション１０１ｃへのデータフロー及びデータストア１０５ｆからアプリケーション１０１ｄへのデータフローにおいて通信コストが発生する。その他のデータフローは、装置内の通信によるので通信コストが発生しない。
【００５６】
アプリケーション１０１ａからデータストア１０５ｅへのデータフローに係る通信コストは、アプリケーション１０１ａからデータストア１０５ｅへのデータフローにおけるトラフィックレートと、ノード３０３ａとノード３０３ｃとの間のリンクにおける通信単価との積として求められる。同様に、アプリケーション１０１ｂからアプリケーション１０１ｃへのデータフローに係る通信コストは、アプリケーション１０１ｂからアプリケーション１０１ｃへのデータフローにおけるトラフィックレートと、ノード３０３ｃとノード３０３ｄとの間のリンクにおける通信単価との積として求められる。同様に、データストア１０５ｆからアプリケーション１０１ｄへのデータフローに係る通信コストは、データストア１０５ｆからアプリケーション１０１ｄへのデータフローにおけるトラフィックレートと、ノード３０３ｄとクラウドサーバ３０５との間のリンクにおける通信単価との積として求められる。
【００５７】
図８に、図７に示した第２例に対応する配置パターンデータを示す。配置パターンデータの構成は、図６の場合と同様である。
【００５８】
図示した１番目のレコードは、プログラムＩＤ：ＡＰＬ＿Ａであるアプリケーション１０１ａが、ノードＩＤ：ＮＤ＿１で特定されるノード３０３ａ（ＩＰアドレス：ＩＰ＿１）に配置されることを示している。
【００５９】
次に、各ノード３０３で計測されたトラフィックレートを纏めた全体トラフィックレートテーブルについて説明する。全体トラフィックレートテーブルは、クラウドサーバ３０５において保持される。
【００６０】
図９に、全体トラフィックレートテーブルの例を示す。この例における全体トラフィックレートテーブルは、データフローに対応するレコードを有している。全体トラフィックレートテーブルのレコードは、出力プログラムＩＤが格納されるフィールドと、入力プログラムＩＤが格納されるフィールドと、トラフィックレートが格納されるフィールドと、日付時刻が格納されるフィールドとを有している。
【００６１】
出力プログラムＩＤ及び入力プログラムＩＤは、データフローを特定する。トラフィックレートは、データフローにおける単位時間当たりの伝送データ量を示す。日付時刻は、当該トラフィックレートが計測された時点を示す。
【００６２】
図示した１番目のレコードは、出力プログラムＩＤ：ＡＰＬ＿Ａ及び入力プログラムＩＤ：ＳＴＲ＿Ｅで特定されるデータフローに関するトラフィックレートがＴＲＦ＿１０１であり、当該トラフィックレートが日付時刻：Ｔ＿１０１に計測されたことを示している。以上の例を用いて、詳細な説明を行う。
【００６３】
以下、ノード３０３の動作について説明する。図１０に、ノード３０３のモジュール構成例を示す。ノード３０３は、フロー受付部１００１、フロー記憶部１００３、計測対象プログラム１００５、パケット送信部１００７、パケットキャプチャ部１００９、パケットログ記憶部１０１１、トラフィックレート算出部１０１３、トラフィックレート記憶部１０１５及びトラフィックレート送信部１０１７を有する。
【００６４】
フロー受付部１００１は、クラウドサーバ３０５から送信されたフローテーブルを受け付けて、不要な部分を省く。フロー記憶部１００３は、不要な部分を省いたフローテーブルを記憶する。計測対象プログラム１００５は、当該ノード３０３に配備されているソフトウェア要素、つまりアプリケーション１０１及びデータストア１０５である。パケット送信部１００７は、パケットを送信する。パケットキャプチャ部１００９は、パケットをキャプチャする。パケットログ記憶部１０１１は、パケットログテーブルを記憶する。トラフィックレート算出部１０１３は、トラフィックレートを算出して、トラフィックレートテーブルを生成する。尚、トラフィックレートテーブルは、当該ノード３０３で計測されたトラフィックレートに関する。トラフィックレート記憶部１０１５は、トラフィックレートテーブルを記憶する。トラフィックレート送信部１０１７は、トラフィックレートをクラウドサーバ３０５へ送信する。
【００６５】
上述したフロー受付部１００１、パケット送信部１００７、パケットキャプチャ部１００９、トラフィックレート算出部１０１３及びトラフィックレート送信部１０１７は、ハードウエア資源（例えば、図３９）と、以下で述べる処理をプロセッサに実行させるプログラムとを用いて実現される。
【００６６】
上述したフロー記憶部１００３、パケットログ記憶部１０１１及びトラフィックレート記憶部１０１５は、ハードウエア資源（例えば、図３９）を用いて実現される。
【００６７】
ノード３０３における処理について詳述する。図１１に、フロー受付処理フローを示す。フロー受付部１００１は、クラウドサーバ３０５から送信されたフローテーブルを受信して、フロー記憶部１００３に記憶する（Ｓ１１０１）。フロー受付部１００１は、記憶したフローテーブルのレコードを１つ特定する（Ｓ１１０３）。フロー受付部１００１は、当該レコードにおいて特定される出力プログラムが、計測対象プログラム１００５のいずれかに該当するか否かを判定する（Ｓ１１０５）。
【００６８】
出力プログラムが計測対象プログラム１００５に該当しないと判定した場合には、フロー受付部１００１は、当該レコードを削除する（Ｓ１１０７）。一方、出力プログラムが計測対象プログラム１００５に該当すると判定した場合には、当該レコードを削除しない。
【００６９】
そして、フロー受付部１００１は、未特定のレコードがあるか否かを判定する（Ｓ１１０９）。未特定のレコードがあると判定した場合には、Ｓ１１０３に示した処理に戻って、上述した処理を繰り返す。一方、未特定のレコードがないと判定した場合には、Ｓ１１０１に戻って、再びフローテーブルを受信するまで待機する。
【００７０】
図１２に、フローテーブルの例を示す。図示したフローテーブルは、図５に示した配置パターンの第１例に従ってソフトウェア要素が配備されたノード３０３ｂで保持するフローテーブルを示している。当該フローテーブルで特定されるデータフローが、トラフィックレート計測の具体的な対象となる。上述したフロー受付処理は、準備段階の処理に相当する。
【００７１】
続いて、トラフィックレート計測を計測する段階の処理について説明する。本実施の形態では、計測対象プログラム１００５毎に、パケットキャプチャ処理（Ａ）が起動される。つまり、計測対象プログラム１００５の数に相当するパケットキャプチャ処理（Ａ）のプロセスが並行に動作する。但し、１つのプロセスにおいて、複数の計測対象プログラム１００５から送られるパケットを一括してキャプチャするようにしてもよい。
【００７２】
図１３に、パケットキャプチャ処理（Ａ）フローを示す。パケットキャプチャ部１００９は、計測対象プログラム１００５から出力されるパケットをキャプチャし（Ｓ１３０１）、当該パケットから宛先ＩＰアドレス及び宛先ポート番号を抽出する（Ｓ１３０３）。
【００７３】
パケットキャプチャ部１００９は、フローテーブルにおいて、出力プログラムＩＤが当該計測対象プログラム１００５に相当し、入力プログラムのポート番号が宛先ポート番号と一致するレコードを探索する（Ｓ１３０５）。
【００７４】
パケットキャプチャ部１００９は、該当するレコードがあったか否かを判定する（Ｓ１３０７）。該当するレコードがあったと判定した場合には、パケットキャプチャ部１００９は、当該レコードから入力プログラムＩＤを読み取る（Ｓ１３０９）。一方、該当するレコードがなかったと判定した場合には、パケットキャプチャ部１００９は、入力プログラムＩＤが不明とする（Ｓ１３１１）。
【００７５】
パケットキャプチャ部１００９は、当該パケットのサイズを特定して（Ｓ１３１３）、パケットログデータに当該パケットに関するエントリを追加する（Ｓ１３１５）。
【００７６】
図１４に、パケットログデータの例を示す。パケットログデータは、キャプチャされたパケットに対応するエントリを有している。パケットログデータのエントリは、出力プログラムＩＤが格納されるフィールドと、入力プログラムＩＤが格納されるフィールドと、宛先ＩＰアドレスが格納されるフィールドと、パケットサイズが格納されるフィールドと、日付時刻が格納されるフィールドとを有している。
【００７７】
出力プログラムＩＤは、キャプチャされたパケットを出力したソフトウェア要素を特定する。入力プログラムＩＤは、キャプチャされたパケットを入力するソフトウェア要素を特定する。宛先ＩＰアドレスは、キャプチャされたパケットのヘッダに設定されていたパラメータである。パケットサイズは、キャプチャされたパケットの大きさである。日付時刻は、パケットをキャプチャした時点を示す。
【００７８】
図示した１番目のエントリは、プログラムＩＤ：ＡＰＬ＿Ｂで特定されるアプリケーション１０１ｂから出力されたパケットを日付時刻：Ｔ＿２０１においてキャプチャし、当該パケットの大きさがＳＩＺＥ＿１であったことを示している。また、同エントリは、当該パケットの宛先ＩＰアドレスのフィールドには、ループバックアドレス（１２７．０．０．１）が設定されていたが、当該パケットを入力するソフトウェア要素は不明であったことも示している。
【００７９】
図１３の説明に戻る。追加されたエントリの出力プログラムＩＤのフィールドには、当該計測対象プログラム１００５のＩＤが格納される。宛先ＩＰアドレスのフィールドには、Ｓ１３０３において抽出した宛先ＩＰアドレスが格納される。日付時刻のフィールドには、当日日付及び現在時刻が設定される。そして、Ｓ１３０１に示した処理に戻って、上述した処理を繰り返す。
【００８０】
トラフィックレートを計測してクラウドサーバ３０５へ通知する処理について説明する前に、当該処理において生成されるトラフィックレートテーブルについて説明する。
【００８１】
図１５に、トラフィックレートテーブルの例を示す。トラフィックレートテーブルは、当該ノード３０３で計測したトラフィックレートに対応するレコードを有している。トラフィックレートテーブルのレコードは、出力プログラムＩＤが格納されるフィールドと、入力プログラムＩＤが格納されるフィールドと、宛先ＩＰアドレスが格納されるフィールドと、トラフィックレートが格納されるフィールドとを有している。
【００８２】
出力プログラムＩＤ及び入力プログラムＩＤは、キャプチャしたパケットの流れを特定する。宛先ＩＰアドレスは、パケットに設定されていたパラメータである。トラフィックレートは、同一の流れに係るパケットによって求められる。本実施の形態では、フローテーブルで特定されるデータフロー以外の流れについてもトラフィックレートが計測される。
【００８３】
図１６に、トラフィックレート通知処理（Ａ）フローを示す。トラフィックレート算出部１０１３は、トラフィックレートを通知するタイミングを待つ（Ｓ１６０１）。当該タイミングは、周期的に特定されるようにしてもよい。或いは、他の装置或いは運用者の指示によって検出されるタイミングであってもよい。
【００８４】
当該タイミングに至ると、トラフィックレート算出部１０１３は、パケットログデータにおいて、直近の所定期間内にキャプチャしたパケットに関するエントリを特定する（Ｓ１６０３）。トラフィックレート算出部１０１３は、トラフィックレート算出処理を実行する（Ｓ１６０５）。トラフィックレート算出部１０１３は、トラフィックレート算出処理において、計測対象プログラム１００５から送信されるデータに関するトラフィックレートを算出して、トラフィックレートテーブルを生成する。
【００８５】
図１７に、トラフィックレート算出処理フローを示す。トラフィックレート算出部１０１３は、Ｓ１６０３で特定された各エントリに格納されている出力プログラムＩＤのうち、１つの出力プログラムＩＤを特定する（Ｓ１７０１）。
【００８６】
トラフィックレート算出部１０１３は、上記エントリのいずれかにおいて当該出力プログラムＩＤに対応する入力プログラムＩＤを１つ特定する（Ｓ１７０３）。
【００８７】
更に、トラフィックレート算出部１０１３は、上記エントリのいずれかにおいて当該出力プログラムＩＤ及び当該入力プログラムＩＤに対応する宛先ＩＰアドレスを１つ特定する（Ｓ１７０５）。当該出力プログラムＩＤ、当該入力プログラムＩＤ及び当該宛先ＩＰアドレスは、１つのデータフローを特定する。
【００８８】
トラフィックレート算出部１０１３は、当該出力プログラムＩＤ、当該入力プログラムＩＤ及び当該宛先ＩＰアドレスが格納されているエントリの数を計数する（Ｓ１７０７）。トラフィックレート算出部１０１３は、エントリの数を期間長で割って、当該データフローにおけるトラフィックレートを算出する（Ｓ１７０９）。
【００８９】
トラフィックレート算出部１０１３は、トラフィックテーブルにレコードを追加する（Ｓ１７１１）。追加されたレコードには、当該出力プログラムＩＤ、当該入力プログラムＩＤ、当該宛先ＩＰアドレス及び算出したトラフィックレートが格納される。そして、端子Ａを介して、図１８に示したＳ１８０１の処理に移る。
【００９０】
トラフィックレート算出部１０１３は、当該出力プログラムＩＤ及び当該入力プログラムＩＤに対応する宛先ＩＰアドレスのうち、未特定の宛先ＩＰアドレスがあるか否かを判定する（Ｓ１８０１）。未特定の宛先ＩＰアドレスがあると判定した場合には、端子Ｂを介して、図１７に示したＳ１７０５の処理に戻る。
【００９１】
一方、未特定の宛先ＩＰアドレスがないと判定した場合には、トラフィックレート算出部１０１３は、当該出力プログラムＩＤに対応する入力プログラムＩＤのうち、未特定の入力プログラムＩＤがあるか否かを判定する（Ｓ１８０３）。未特定の入力プログラムＩＤがあると判定した場合には、端子Ｃを介して、図１７に示したＳ１７０３の処理に戻る。
【００９２】
一方、未特定の入力プログラムＩＤがないと判定した場合には、トラフィックレート算出部１０１３は、上記各エントリに格納されている出力プログラムＩＤのうち、未特定の出力プログラムＩＤがあるか否かを判定する（Ｓ１８０５）。未特定の出力プログラムＩＤがあると判定した場合には、端子Ｄを介して、図１７に示したＳ１７０１の処理に戻る。
【００９３】
一方、未特定の出力プログラムＩＤがないと判定した場合には、トラフィックレート算出処理を終えて、呼び出し元のトラフィックレート通知処理（Ａ）に復帰する。
【００９４】
図１６の説明に戻る。トラフィックレート送信部１０１７は、トラフィックレート算出処理において生成されたトラフィックレートテーブルをクラウドサーバ３０５へ送信する（Ｓ１６０７）。トラフィックレート送信部１０１７は、送信済みのトラフィックレートテーブルをクリアする（Ｓ１６０９）。そして、Ｓ１６０１に戻って次のタイミングを待つ。以上で、ノード３０３の動作に関する説明を終える。
【００９５】
続いて、クラウドサーバ３０５の動作について説明する。図１９に、クラウドサーバ３０５のモジュール構成例を示す。クラウドサーバ３０５は、初期化部１９０１、フロー記憶部１９０３、配信部１９０５、全体トラフィックレート記憶部１９０７、トラフィックレート受信部１９０９、トラフィック選別部１９１１、トラフィックレート更新部１９１３、配置決定部１９１５、トポロジ記憶部１９１７、配置プラン記憶部１９１９、配備実行部１９２１及びプログラム記憶部１９２３を有する。
【００９６】
初期化部１９０１は、フローテーブルに関する初期処理を行う。フロー記憶部１９０３は、フローテーブル（図２）を記憶する。配信部１９０５は、フローテーブルを各ノード３０３へ配信する。全体トラフィックレート記憶部１９０７は、全体トラフィックレートテーブル（図９）を記憶する。トラフィックレート受信部１９０９は、トラフィックレートテーブルを受信する。トラフィック選別部１９１１は、有用なトラフィックレートを選別する。トラフィックレート更新部１９１３は、全体トラフィックレートテーブルを更新する。配置決定部１９１５は、ソフトウェア要素の配置を決定する。トポロジ記憶部１９１７は、トポロジデータ（図４）を記憶する。配置プラン記憶部１９１９は、配置プランを記憶する。配備実行部１９２１は、ソフトウェア要素の配備を実行する。プログラム記憶部１９２３は、ソフトウェア要素を記憶する。
【００９７】
上述した初期化部１９０１、配信部１９０５、トラフィックレート受信部１９０９、トラフィック選別部１９１１、トラフィックレート更新部１９１３、配置決定部１９１５及び配備実行部１９２１は、ハードウエア資源（例えば、図３９）と、以下で述べる処理をプロセッサに実行させるプログラムとを用いて実現される。
【００９８】
上述したフロー記憶部１９０３、全体トラフィックレート記憶部１９０７、トポロジ記憶部１９１７、配置プラン記憶部１９１９及びプログラム記憶部１９２３は、ハードウエア資源（例えば、図３９）を用いて実現される。
【００９９】
図２０に、初期処理フローを示す。初期化部１９０１は、例えば運用者によって設定されるフローテーブルを受け付けると、受け付けたフローテーブルをフロー記憶部１９０３に記憶する（Ｓ２００１）。配信部１９０５は、当該フローテーブルを各ノード３０３へ配信する（Ｓ２００３）。
【０１００】
初期化部１９０１は、全体トラフィックレートテーブルを生成する（Ｓ２００５）。全体トラフィックレートテーブルには、当該フローテーブルと同数のレコードが設けられ、各レコードには、当該フローテーブルのレコードと同様の出力プログラムＩＤ及び入力プログラムＩＤが設定される。但し、当初トラフィックレート及び日付時刻は未定である。そして、初期処理を終える。
【０１０１】
図２１に、トラフィックレート受付処理（Ａ）フローを示す。トラフィックレート受信部１９０９がノード３０３からトラフィックレートテーブル（図１５）を受信すると（Ｓ２１０１）、トラフィック選別部１９１１は、当該トラフィックレートテーブルについてトラフィック選別処理を実行する（Ｓ２１０３）。トラフィック選別部１９１１は、トラフィック選別処理において、不要なトラフィックレートを除外し、使用するトラフィックレートを選別する。
【０１０２】
図２２に、トラフィックレート選別処理フローを示す。トラフィック選別部１９１１は、トラフィックレートテーブルのレコードを１つ特定し（Ｓ２２０１）、当該レコードに格納されている宛先ＩＰアドレスがループバックアドレスであるか否かを判定する（Ｓ２２０３）。
【０１０３】
宛先ＩＰアドレスがループバックアドレスであると判定した場合には、トラフィック選別部１９１１は、当該レコードを削除する（Ｓ２２０５）。一方、宛先ＩＰアドレスがループバックアドレスでないと判定した場合には、トラフィック選別部１９１１は、当該レコードを削除しない。
【０１０４】
そして、トラフィック選別部１９１１は、未特定のレコードがあるか否かを判定する（Ｓ２２０７）。未特定のレコードがあると判定した場合には、Ｓ２２０１に示した処理に戻って、上述した処理を繰り返す。一方、未特定のレコードがないと判定した場合には、トラフィックレート選別処理を終え、呼び出し元のトラフィックレート受付処理（Ａ）に復帰する。
【０１０５】
図２３に、トラフィックレート選別処理を終えた時点のトラフィックレートテーブルの例を示す。
【０１０６】
図２１の説明に戻る。トラフィックレート更新部１９１３は、トラフィックレート更新処理を実行する（Ｓ２１０５）。トラフィックレート更新部１９１３は、トラフィックレート更新処理において、全体トラフィックレートテーブルを更新する。
【０１０７】
図２４に、トラフィックレート更新処理フローを示す。トラフィックレート更新部１９１３は、トラフィックレート選別処理を終えた時点のトラフィックレートテーブルにおけるレコードを１つ特定する（Ｓ２４０１）。トラフィックレート更新部１９１３は、全体トラフィックレートテーブルにおいて、当該レコードと同じ出力プログラムＩＤ及び入力プログラムＩＤが格納されているレコードを特定する（Ｓ２４０３）。トラフィックレート更新部１９１３は、全体トラフィックレートテーブルの当該レコードにおけるトラフィックレート及び日付時刻を更新する（Ｓ２４０５）。具体的には、トラフィックレート更新部１９１３は、トラフィックレート選別処理を終えた時点のトラフィックレートテーブルの当該レコードに格納されているトラフィックレートを、全体トラフィックレートテーブルの当該レコードにコピーする。日付時刻のフィールドには、当日日付及び現在時刻が格納される。
【０１０８】
トラフィックレート更新部１９１３は、トラフィックレート選別処理を終えた時点のトラフィックレートテーブルにおいて未特定のレコードがあるか否かを判定する（Ｓ２４０７）。未特定のレコードがあると判定した場合には、Ｓ２４０１に示した処理に戻って、上述した処理を繰り返す。一方、未特定のレコードがないと判定した場合には、トラフィックレート更新処理を終え、呼び出し元のトラフィックレート受付処理（Ａ）に復帰する。図２５に、更新された全体トラフィックレートテーブルの例を示す。
【０１０９】
図２１の説明に戻る。トラフィックレート更新処理を終えると、Ｓ２１０１に示した処理に戻って、上述した処理を繰り返す。
【０１１０】
続いて、ソフトウェア要素の配備を変更する場合の処理について説明する。図２６に、配備ルーチン処理フローを示す。配置決定部１９１５は、配置見直しのタイミングを待つ（Ｓ２６０１）。当該タイミングは、周期的に特定されるようにしてもよい。或いは、他の装置或いは運用者の指示によって検出されるタイミングであってもよい。
【０１１１】
配置決定部１９１５は、配置決定処理を実行する（Ｓ２６０３）。配置決定部１９１５は、配置決定処理において、ソフトウェア要素の配置を決定し、配置プランを生成する。
【０１１２】
図２７に、配置決定処理フローを示す。配置決定部１９１５は、複数の配置パターンを生成する（Ｓ２７０１）。配置パターンを生成する方法は従来技術であるので、詳しい説明を省く。配置決定部１９１５は、配置パターンを１つ特定する（Ｓ２７０３）。配置決定部１９１５は、全体コスト算出処理を実行する（Ｓ２７０５）。配置決定部１９１５は、全体コスト算出処理において、当該配置パターンにおける通信コストの合計を算出する。
【０１１３】
図２８に、全体コスト算出処理フローを示す。配置決定部１９１５は、全体トラフィックレートテーブルのレコードを１つ特定する（Ｓ２８０１）。
【０１１４】
配置決定部１９１５は、当該レコードに設定されている出力プログラムが配置される出力ノードを特定し（Ｓ２８０３）、更に当該レコードに設定されている入力プログラムが配置される入力ノードを特定する（Ｓ２８０５）。配置決定部１９１５は、出力ノードと入力ノードが同じであるか否かを判定する（Ｓ２８０７）。
【０１１５】
出力ノードと入力ノードが同じであると判定した場合には、配置決定部１９１５は、当該レコードで特定されるデータフローの通信コストを０とする（Ｓ２８０９）。
【０１１６】
一方、出力ノードと入力ノードが異なると判定した場合には、配置決定部１９１５は、トポロジデータから、出力ノードと入力ノードの組に対応する通信単価を抽出する（Ｓ２８１１）。そして、配置決定部１９１５は、Ｓ２８０１で特定されたレコードに格納されているトラフィックレートに通信単価を乗じて、当該レコードで特定されるデータフローの通信コストを求める（Ｓ２８１３）。
【０１１７】
配置決定部１９１５は、Ｓ２８０１において未特定のレコードがあるか否かを判定する（Ｓ２８１５）。未特定のレコードがあると判定した場合には、Ｓ２８０１に示した処理に戻って、上述した処理を繰り返す。
【０１１８】
一方、未特定のレコードがないと判定した場合には、配置決定部１９１５は、各データフローの通信コストを合計し、全体コストを求める（Ｓ２８１７）。全体コスト算出処理を終えると、呼び出し元の配置決定処理に復帰する。
【０１１９】
図２７の説明に戻る。配置決定部１９１５は、未特定の配置パターンがあるか否かを判定する（Ｓ２７０７）。未特定の配置パターンがあると判定した場合には、Ｓ２７０３に示した処理に戻って、上述した処理を繰り返す。
【０１２０】
一方、未特定の配置パターンがないと判定した場合には、配置決定部１９１５は、全体コストが最小である配置パターンを選択し、選択した配置パターンを配置プランとして配置プラン記憶部１９１９に記憶する（Ｓ２７０９）。配置決定処理を終えると、呼び出し元の配備ルーチン処理に復帰する。
【０１２１】
図２６の説明に戻る。配備実行部１９２１は、配置プランに基づいて配備処理を実行する（Ｓ２６０５）。配備実行部１９２１は、配備処理において、配備プランに含まれる各ソフトウェア要素を、当該ソフトウェア要素に対応するノードに再配備する。配備処理は従来技術であるので、詳しい説明を省く。配置プランが変更されない場合には、配備処理を省くようにしてもよい。そして、Ｓ２６０１の処理に戻って上述した処理を繰り返す。
【０１２２】
本実施の形態によれば、分散処理システムにおけるソフトウェア要素の配置決定に関し、余分な処理負荷を減ずることができる。
【０１２３】
また、全体として、より通信コストが少ないソフトウェア要素の配置を決定できる。
【０１２４】
また、ソフトウェア要素自身に、トラフィックレートの計測に関する処理を組み込まなくても済むという面もある。
【０１２５】
［実施の形態２］
本実施の形態では、ノード３０３において不要なパケットログエントリを削除する例について説明する。
【０１２６】
図２９に、実施の形態２におけるノード３０３のモジュール構成例を示す。実施の形態２におけるノード３０３は、パケットログ選別部２９０１を有する。パケットログ選別部２９０１は、不要なパケットログエントリを削除し、有用なパケットログエントリを選別する。
【０１２７】
上述したパケットログ選別部２９０１は、ハードウエア資源（例えば、図３９）と、以下で述べる処理をプロセッサに実行させるプログラムとを用いて実現される。
【０１２８】
本実施の形態では、図１６に示したトラフィックレート通知処理（Ａ）に代えて、トラフィックレート通知処理（Ｂ）を実行する。図３０に、トラフィックレート通知処理（Ｂ）フローを示す。Ｓ１６０１及びＳ１６０３の処理は、図１６の場合と同様である。
【０１２９】
パケットログ選別部２９０１は、パケットログ選別処理を実行する（Ｓ３００１）。パケットログ選別部２９０１は、パケットログ選別処理において、パケットログデータにおける不用のエントリを除外し、使用するエントリを残す。
【０１３０】
図３１に、パケットログ選別処理フローを示す。パケットログ選別部２９０１は、パケットログデータのエントリを１つ特定する（Ｓ３１０１）。
【０１３１】
パケットログ選別部２９０１は、当該エントリに設定されている宛先ＩＰアドレスがループバックアドレスであるか否かを判定する（Ｓ３１０３）。当該エントリに設定されている宛先ＩＰアドレスがループバックアドレスであると判定した場合には、パケットログ選別部２９０１は、当該エントリを削除する（Ｓ３１０５）。一方、当該エントリに設定されている宛先ＩＰアドレスがループバックアドレスでないと判定した場合には、パケットログ選別部２９０１は、当該エントリを削除しない。
【０１３２】
パケットログ選別部２９０１は、未特定のエントリがあるか否かを判定する（Ｓ３１０７）。未特定のエントリがあると判定した場合には、Ｓ３１０１に示した処理に戻って、上述した処理を繰り返す。一方、未特定のエントリがないと判定した場合には、パケットログ選別処理を終えると、呼び出し元のトラフィックレート通知処理（Ｂ）に復帰する。
【０１３３】
図３２に、図１４に示したパケットログデータに対してパケットログ選別処理を行った後の状態の例を示す。
【０１３４】
図３０の説明に戻る。Ｓ１６０５乃至Ｓ１６０９の処理は、図１６の場合と同様である。
【０１３５】
図３３に、実施の形態２におけるクラウドサーバ３０５のモジュール構成例を示す。本実施の形態では、トラフィック選別部１９１１が省かれる。
【０１３６】
本実施の形態では、図２１に示したトラフィックレート受付処理（Ａ）に代えて、トラフィックレート受付処理（Ｂ）を実行する。図３４に、トラフィックレート受付処理（Ｂ）フローを示す。トラフィックレート受付処理（Ｂ）では、Ｓ２１０３に示したトラフィック選別処理の実行を省く。Ｓ２１０１及びＳ２１０５の処理は、図２１の場合と同様である。
【０１３７】
本実施の形態によれば、分散処理システムにおけるソフトウェア要素の配置決定に関し、余分な処理負荷及び通信負荷を減ずることができる。
【０１３８】
また、全体として、より通信コストが少ないソフトウェア要素の配置を決定できる。
【０１３９】
また、ソフトウェア要素自身に、トラフィックレートの計測に関する処理を組み込まなくても済むという面もある。
【０１４０】
［実施の形態３］
上述した実施の形態では、ノード３０３において不要なパケットログエントリを登録しない例について説明する。
【０１４１】
図３５に、実施の形態３におけるノード３０３のモジュール構成例を示す。実施の形態３におけるパケットログ選別部２９０１は、不要なパケットログエントリを生成しないようにする。
【０１４２】
本実施の形態では、図１３に示したパケットキャプチャ処理（Ａ）に代えて、パケットキャプチャ処理（Ｂ）を実行する。図３６に、パケットキャプチャ処理（Ｂ）フローを示す。Ｓ１３０１及びＳ１３０３の処理は、図１３の場合と同様である。
【０１４３】
パケットログ選別部２９０１は、キャプチャしたパケットから抽出した宛先ＩＰアドレスがループバックアドレスであるか否かを判定する（Ｓ３６０１）。宛先ＩＰアドレスがループバックアドレスであると判定した場合には、Ｓ１３０１に示した処理に戻って、上述した処理を繰り返す。一方、宛先ＩＰアドレスがループバックアドレスでないと判定した場合には、Ｓ１３０５の処理に移る。
【０１４４】
Ｓ１３０５乃至Ｓ１３１５の処理は、図１３の場合と同様である。
【０１４５】
本実施の形態では、トラフィックレート通知処理（Ａ）を実行する。
【０１４６】
クラウドサーバ３０５の動作は、実施の形態２の場合と同様である。
【０１４７】
本実施の形態によれば、分散処理システムにおけるソフトウェア要素の配置決定に関し、余分な処理負荷及び通信負荷を減ずることができる。
【０１４８】
また、全体として、より通信コストが少ないソフトウェア要素の配置を決定できる。
【０１４９】
また、ソフトウェア要素自身に、トラフィックレートの計測に関する処理を組み込まなくても済むという面もある。
【０１５０】
［実施の形態４］
本実施の形態では、アドレス解決部から出力されるパケットをキャプチャする例について説明する。
【０１５１】
上述した実施の形態では、ソフトウェア要素が、ＩＰアドレスを解決する例について説明したが、ソフトウェア要素がＩＰアドレスを解決しない形態も考えられる。
【０１５２】
図３７に、実施の形態４におけるノード３０３のモジュール構成例を示す。実施の形態４におけるノード３０３は、アドレス解決部３７０１を有する。
【０１５３】
アドレス解決部３７０１は、ＩＰアドレスを解決する処理を行う。具体的には、アドレス解決部３７０１は、ソフトウェア要素のプログラムＩＤに対応するＩＰアドレスをクラウドサーバ３０５から取得し、ソフトウェア要素から出力されるパケットにＩＰアドレスを設定する処理を行う。ＩＰアドレスが設定されたパケットは、上述した実施の形態においてソフトウェア要素から出力されるパケットと同様の状態となる。
【０１５４】
上述したアドレス解決部３７０１は、ハードウエア資源（例えば、図３９）と、以下で述べる処理をプロセッサに実行させるプログラムとを用いて実現される。
【０１５５】
本実施の形態では、実施の形態１における図１３に示したパケットキャプチャ処理（Ａ）に代えて、パケットキャプチャ処理（Ｃ）を実行する。
【０１５６】
図３８に、パケットキャプチャ処理（Ｃ）フローを示す。パケットキャプチャ部１００９は、アドレス解決部３７０１から出力されるパケットをキャプチャする（Ｓ３８０１）。
【０１５７】
Ｓ１３０３乃至Ｓ１３１５の処理は、図１３の場合と同様である。
【０１５８】
また、実施の形態２及び３においても、同様にパケットキャプチャ部１００９は、アドレス解決部３７０１から出力されるパケットをキャプチャするようにしてもよい。
【０１５９】
以上本発明の実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、上述の機能ブロック構成はプログラムモジュール構成に一致しない場合もある。
【０１６０】
また、上で説明した各記憶領域の構成は一例であって、上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ、処理の順番を入れ替えることや複数の処理を並列に実行させるようにしても良い。
【０１６１】
なお、上で述べたノード３０３及びクラウドサーバ３０５は、コンピュータ装置であって、図３９に示すように、メモリ２５０１とＣＰＵ（Central Processing Unit）２５０３とハードディスク・ドライブ（ＨＤＤ：Hard Disk Drive）２５０５と表示装置２５０９に接続される表示制御部２５０７とリムーバブル・ディスク２５１１用のドライブ装置２５１３と入力装置２５１５とネットワークに接続するための通信制御部２５１７とがバス２５１９で接続されている。オペレーティング・システム（ＯＳ：Operating System）及び本実施例における処理を実施するためのアプリケーション・プログラムは、ＨＤＤ２５０５に格納されており、ＣＰＵ２５０３により実行される際にはＨＤＤ２５０５からメモリ２５０１に読み出される。ＣＰＵ２５０３は、アプリケーション・プログラムの処理内容に応じて表示制御部２５０７、通信制御部２５１７、ドライブ装置２５１３を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ２５０１に格納されるが、ＨＤＤ２５０５に格納されるようにしてもよい。本発明の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク２５１１に格納されて頒布され、ドライブ装置２５１３からＨＤＤ２５０５にインストールされる。インターネットなどのネットワーク及び通信制御部２５１７を経由して、ＨＤＤ２５０５にインストールされる場合もある。このようなコンピュータ装置は、上で述べたＣＰＵ２５０３、メモリ２５０１などのハードウエアとＯＳ及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
【０１６２】
以上述べた本発明の実施の形態をまとめると、以下のようになる。
【０１６３】
本実施の形態に係る配置決定方法は、連携する複数のソフトウェア要素の各々を、複数のノードとサーバとのいずれかにおいて実行する分散処理システムにおける配置決定方法であって、複数のノードの各々は、（Ａ）当該ノードにおいて実行するソフトウェア要素から送信されるパケットをキャプチャし、（Ｂ）キャプチャしたパケットのうち、ループバックアドレス以外のアドレス宛に送られるパケットに関するトラフィックレートを算出し、（Ｃ）算出したトラフィックレートを、サーバへ送信する処理を実行する。更に、サーバは、（Ｄ）受信したトラフィックレートに基づいて、複数のソフトウェア要素の配置を決定する処理を実行する。
【０１６４】
このようにすれば、分散処理システムにおけるソフトウェア要素の配置決定に関し、余分な負荷を減ずることができる。
【０１６５】
本実施の形態に係る配置決定方法は、連携する複数のソフトウェア要素の各々を、複数のノードとサーバとのいずれかにおいて実行する分散処理システムにおける配置決定方法であって、複数のノードの各々は、（Ｅ）当該ノードにおいて実行するソフトウェア要素から送信されるパケットをキャプチャし、（Ｆ）キャプチャしたパケットに関するトラフィックレートを算出し、（Ｇ）算出したトラフィックレートを、サーバへ送信する処理を実行する。更に、サーバは、（Ｈ）受信したトラフィックレートのうち、ループバックアドレス以外のアドレス宛に送られたパケットに関するトラフィックレートに基づいて、複数のソフトウェア要素の配置を決定する処理を実行する。
【０１６６】
このようにすれば、分散処理システムにおけるソフトウェア要素の配置決定に関し、余分な負荷を減ずることができる。
【０１６７】
更に、上記配置を決定する処理において、複数のソフトウェア要素に関する複数の配置パターンの各々について、トラフィックレートに基づいて各リンクにおける通信コストの合計を算出するようにしてもよい。また、上記配置を決定する処理において、算出した通信コストの合計に基づいて、いずれかの配置パターンを選択するようにしてもよい。
【０１６８】
このようにすれば、全体として、より通信コストが少ないソフトウェア要素の配置を決定できる。
【０１６９】
なお、上記方法による処理をコンピュータに行わせるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、ＣＤ−ＲＯＭ、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納されるようにしてもよい。尚、中間的な処理結果は、一般的にメインメモリ等の記憶装置に一時保管される。
【０１７０】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０１７１】
（付記１）
連携する複数のソフトウェア要素の各々を、複数のノードとサーバとのいずれかにおいて実行する分散処理システムにおける配置決定方法であって、
前記複数のノードの各々は、
当該ノードにおいて実行するソフトウェア要素から送信されるパケットをキャプチャし、
キャプチャした前記パケットのうち、ループバックアドレス以外のアドレス宛に送られるパケットに関するトラフィックレートを算出し、
算出した前記トラフィックレートを、前記サーバへ送信する
処理を実行し、
前記サーバは、
受信した前記トラフィックレートに基づいて、前記複数のソフトウェア要素の配置を決定する
処理を実行する配置決定方法。
【０１７２】
（付記２）
前記配置を決定する処理において、
前記複数のソフトウェア要素に関する複数の配置パターンの各々について、前記トラフィックレートに基づいて各リンクにおける通信コストの合計を算出し、
算出した前記通信コストの合計に基づいて、いずれかの配置パターンを選択する
付記１記載の配置決定方法。
【０１７３】
（付記３）
複数のノードとサーバとを含み、
連携する複数のソフトウェア要素の各々を、前記複数のノードと前記サーバとのいずれかにおいて実行する分散処理システムであって、
前記複数のノードの各々は、
当該ノードにおいて実行するソフトウェア要素から送信されるパケットをキャプチャするキャプチャ部と、
キャプチャした前記パケットのうち、ループバックアドレス以外のアドレス宛に送られるパケットに関するトラフィックレートを算出する算出部と、
算出した前記トラフィックレートを、前記サーバへ送信する送信部と
を有し、
前記サーバは、
受信した前記トラフィックレートに基づいて、前記複数のソフトウェア要素の配置を決定する決定部
を有する分散処理システム。
【０１７４】
（付記４）
ネットワークインフラに含まれるノードであるコンピュータにより実行されるトラフィックレート通知方法であって、
前記ネットワークインフラにおいて分散配備され連携する複数のソフトウェア要素のうち、当該ノードにおいて実行するソフトウェア要素から送信されるパケットをキャプチャし、
キャプチャした前記パケットのうち、ループバックアドレス以外のアドレス宛に送られるパケットに関するトラフィックレートを算出し、
算出した前記トラフィックレートを、前記複数のソフトウェア要素の配置を決定する装置へ送信する
処理を含むトラフィックレート通知方法。
【０１７５】
（付記５）
ネットワークインフラに含まれるノードであるコンピュータに、
前記ネットワークインフラにおいて分散配備され連携する複数のソフトウェア要素のうち、当該ノードにおいて実行するソフトウェア要素から送信されるパケットをキャプチャし、
キャプチャした前記パケットのうち、ループバックアドレス以外のアドレス宛に送られるパケットに関するトラフィックレートを算出し、
算出した前記トラフィックレートを、前記複数のソフトウェア要素の配置を決定する装置へ送信する
処理を実行させる処理プログラム。
【０１７６】
（付記６）
連携する複数のソフトウェア要素の各々を、複数のノードとサーバとのいずれかにおいて実行する分散処理システムにおける配置決定方法であって、
前記複数のノードの各々は、
当該ノードにおいて実行するソフトウェア要素から送信されるパケットをキャプチャし、
キャプチャした前記パケットに関するトラフィックレートを算出し、
算出した前記トラフィックレートを、前記サーバへ送信する
処理を実行し、
前記サーバは、
受信した前記トラフィックレートのうち、ループバックアドレス以外のアドレス宛に送られたパケットに関するトラフィックレートに基づいて、前記複数のソフトウェア要素の配置を決定する
処理を実行する配置決定方法。
【０１７７】
（付記７）
前記配置を決定する処理において、
前記複数のソフトウェア要素に関する複数の配置パターンの各々について、前記トラフィックレートに基づいて各リンクにおける通信コストの合計を算出し、
算出した前記通信コストの合計に基づいて、いずれかの配置パターンを選択する
付記６記載の配置決定方法。
【０１７８】
（付記８）
複数のノードとサーバとを含み、
連携する複数のソフトウェア要素の各々を、前記複数のノードと前記サーバとのいずれかにおいて実行する分散処理システムであって、
前記複数のノードの各々は、
当該ノードにおいて実行するソフトウェア要素から送信されるパケットをキャプチャするキャプチャ部と、
キャプチャした前記パケットに関するトラフィックレートを算出する算出部と、
算出した前記トラフィックレートを、前記サーバへ送信する送信部と
を有し、
前記サーバは、
受信した前記トラフィックレートのうち、ループバックアドレス以外のアドレス宛に送られたパケットに関するトラフィックレートに基づいて、前記複数のソフトウェア要素の配置を決定する決定部
を有する分散処理システム。
【０１７９】
（付記９）
ネットワークインフラに含まれる管理装置であるコンピュータにより実行される配置決定方法であって、
前記ネットワークインフラにおいて分散配備され連携する複数のソフトウェア要素のいずれかを実行する各ノードから、当該ノードにおいて実行するソフトウェア要素から送信されるパケットに関するトラフィックレートを受信し、
受信した前記トラフィックレートのうち、ループバックアドレス以外のアドレス宛に送られたパケットに関するトラフィックレートに基づいて、前記複数のソフトウェア要素の配置を決定する
処理を含む配置決定方法。
【０１８０】
（付記１０）
ネットワークインフラに含まれる管理装置であるコンピュータに、
前記ネットワークインフラにおいて分散配備され連携する複数のソフトウェア要素のいずれかを実行する各ノードから、当該ノードにおいて実行するソフトウェア要素から送信されるパケットに関するトラフィックレートを受信し、
受信した前記トラフィックレートのうち、ループバックアドレス以外のアドレス宛に送られたパケットに関するトラフィックレートに基づいて、前記複数のソフトウェア要素の配置を決定する
処理を実行させる処理プログラム。
【符号の説明】
【０１８１】
１０１  アプリケーション
１０３  付属データストア
１０５  データストア
３０１  ＩｏＴデバイス
３０３  ノード
３０５  クラウドサーバ
１００１  フロー受付部
１００３  フロー記憶部
１００５  計測対象プログラム
１００７  パケット送信部
１００９  パケットキャプチャ部
１０１１  パケットログ記憶部
１０１３  トラフィックレート算出部
１０１５  トラフィックレート記憶部
１０１７  トラフィックレート送信部
１９０１  初期化部
１９０３  フロー記憶部
１９０５  配信部
１９０７  全体トラフィックレート記憶部
１９０９  トラフィックレート受信部
１９１１  トラフィック選別部
１９１３  トラフィックレート更新部
１９１５  配置決定部
１９１７  トポロジ記憶部
１９１９  配置プラン記憶部
１９２１  配備実行部
１９２３  プログラム記憶部
２９０１  パケットログ選別部
３７０１  アドレス解決部
【図１】
2019071518.tif 000003
【図２】
2019071518.tif 000004
【図３】
2019071518.tif 000005
【図４】
2019071518.tif 000006
【図５】
2019071518.tif 000007
【図６】
2019071518.tif 000008
【図７】
2019071518.tif 000009
【図８】
2019071518.tif 000010
【図９】
2019071518.tif 000011
【図１０】
2019071518.tif 000012
【図１１】
2019071518.tif 000013
【図１２】
2019071518.tif 000014
【図１３】
2019071518.tif 000015
【図１４】
2019071518.tif 000016
【図１５】
2019071518.tif 000017
【図１６】
2019071518.tif 000018
【図１７】
2019071518.tif 000019
【図１８】
2019071518.tif 000020
【図１９】
2019071518.tif 000021
【図２０】
2019071518.tif 000022
【図２１】
2019071518.tif 000023
【図２２】
2019071518.tif 000024
【図２３】
2019071518.tif 000025
【図２４】
2019071518.tif 000026
【図２５】
2019071518.tif 000027
【図２６】
2019071518.tif 000028
【図２７】
2019071518.tif 000029
【図２８】
2019071518.tif 000030
【図２９】
2019071518.tif 000031
【図３０】
2019071518.tif 000032
【図３１】
2019071518.tif 000033
【図３２】
2019071518.tif 000034
【図３３】
2019071518.tif 000035
【図３４】
2019071518.tif 000036
【図３５】
2019071518.tif 000037
【図３６】
2019071518.tif 000038
【図３７】
2019071518.tif 000039
【図３８】
2019071518.tif 000040
【図３９】
2019071518.tif 000041