添付図面を参照して、本発明の実施形態によるサービス構築システムを以下に説明する。
(第1実施形態)
はじめに、本発明の第1実施形態によるサービス構築システムを以下に説明する。
[構成の説明]
まず、本実施形態におけるサービス構築システムの構成の説明を行う。図1は、本実施形態におけるサービス構築システムの構成を示す図である。本実施形態のサービス構築システムは、分散コンピューティング環境1とサービス構築装置2とを備える。
まず、分散コンピューティング環境1の説明を行う。分散コンピューティング環境1は、一つ以上のネットワーク資源11と、一つ以上のIT資源12とを備える。
まず、ネットワーク資源11は、ネットワークルータ(以下、ルータ)や、ネットワークスイッチ(以下、スイッチ)や、ファイアウォールや、負荷分散装置に例示されるネットワーク機器のリソース全般を指す。また、ネットワーク資源11は、物理的なネットワークリソースだけでなく、仮想ルータや、仮想ファイアウォールに例示されるか仮想化された資源も含む。
次に、IT資源12は、汎用PC(Personal Computer)や、汎用サーバや、GPGPU(General Purpose Graphics Processing Unit)のように特定の処理を高速化するエンジンに例示される計算リソース全般を指す。また、IT資源12は、物理的な計算リソースだけでなく、仮想マシンなどの技術により仮想化された資源も含む。
ネットワーク資源11は、互いに接続されてネットワークを構成する。IT資源12は、ネットワーク資源11と接続される。ネットワーク資源11とIT資源12とは、サービス構築装置2によって、サービスを構築するための設定情報を設定される。なお、以下では、ネットワーク資源11とIT資源12とをまとめて、分散コンピューティング資源と呼ぶ。
次に、サービス構築装置2の説明を行う。図2は、本実施形態におけるサービス構築装置2の構成を示す図である。本実施形態におけるサービス構築装置2は、記憶部100と、制御部120と、通信部130と、入力部140と、出力部150とを備える。記憶部100と、制御部120と、通信部130と、入力部140と、出力部150とは、バス160を介して接続されており、データの送受信が可能である。
まず、通信部130は、外部装置との通信インターフェースである。通信部130は、NIC(Network Interface Card)に例示される。サービス構築装置2は、通信部130を介してネットワーク資源11やIT資源12とデータを送受信することが可能である。
次に、入力部140、出力部150は、サービス構築装置2のユーザとの入出力インターフェースである。入力部140は、キーボードや、マウスに例示される。出力部150は、LCD(Liquid Crystal Display)に例示される。ユーザは、入力部140、出力部150を用いて、サービス構築装置2を操作可能である。
次に、記憶部100は、サービス構築装置2の機能を実現するコンピュータプログラムやデータを記憶する。記憶部100は、RAM(Random Access Memory)や、ROM(Read Only Memory)や、HDD(Hard Disk Drive)に例示されるような主記憶装置、2次記憶装置により構成される。記憶部100は、コンピュータプログラムとしてサービス構築プログラム110を備える。
次に、制御部120は、記憶部100に記憶されたコンピュータプログラムを実行してサービス構築装置2の機能を実現する。制御部120は、CPU(Central Processing Unit)に例示される。
ここで、記憶部100に記憶されたサービス構築プログラム110は、移動可能な記憶媒体に記録することが可能である。記憶媒体とは、CD(Compact Disk)や、USB(Universal Serial Bus)インターフェースを搭載したフラッシュメモリ(USBメモリ)等に例示される。サービス構築プログラム110は、このような記録媒体により流通が可能である。
サービス構築プログラム110は、図示されないサービス構築装置2のCDドライブや、USBインターフェースを介して、サービス構築装置2へ導入される。また、サービス構築プログラム110は、図示されないネットワークに接続されたアプリケーションサーバのHDDにダウンロード可能な形で記憶されていても良い。この場合、サービス構築プログラム110は、ネットワークを介して、サービス構築装置2へ導入される。
次に、図3は、本実施形態におけるサービス構築装置2の機能を示す機能ブロック図である。本実施形態のサービス構築装置2は、アプリケーションフロー解析部21と、マッピング情報生成部22と、アプリケーション管理部23と、設定指示部24と、資源管理部25とを備える。ここで、サービス構築装置2の各機能ブロックは、前述の通りソフトウェアにより実現されても良いし、あるいはハードウェアによって実現されても良い。あるいは、ソフトウェアとハードウェアの組み合わせにより実現されても良い。以下、サービス構築装置2の各機能ブロックを詳細に説明する。
まず、アプリケーションフロー解析部21は、サービス定義42の示すサービスを構成する各処理の接続関係を解析する。アプリケーションフロー解析部21は、サービス定義42を入力とする。アプリケーションフロー解析部21は、サービス定義42の示すサービスを構成する各処理の接続関係を解析して、アプリケーションフロー解析結果を生成する。アプリケーションフロー解析部21は、アプリケーションフロー解析結果をマッピング情報生成部22へ出力する。
ここで、サービス定義42は、サービス構築装置2のユーザであるサービス設計者により入力される。サービス定義42は、設計されたサービスに含まれる処理の内容や、各処理をどのような順番で実行するか、処理の入出力形式は何かといった情報を含む。
また、アプリケーションフロー解析部21の解析する各処理の接続関係とは、各処理間における入出力関係を示す。すなわち、接続関係は、ある処理の出力がどの処理の入力となるのか、あるいは、ある処理の入力がどの処理の出力であるのか、といった情報を含む。
サービス定義42は、上述のような情報を含めば、特定の定義手法に限定しない。サービス定義42の一例として、ビジネスプロセスモデリング言語であるBPEL(Business Process Execution Language)が挙げられる。BPELは、アクティビティと呼ばれる個々の処理ステップを表現する命令を記述することで、Webサービスを定められた手順で呼び出すことができる。
また、サービス定義42は、サービスの制約事項を情報に含むことも考えられる。サービスの制約事項とは、例えば、サービスを分散コンピューティング資源へマッピングするにあたり満たすべき条件である。すなわち、サービスの制約事項は、サービス全体のスループットや、ある処理を実行する際の処理性能、ある処理とある処理との間のネットワーク遅延、サービスを稼動するのに必要な消費電力、あるいは、使用するべき分散コンピューティング資源の優先順位といった条件を含む。なお、マッピングとは、分散コンピューティング資源への設定と、分散コンピューティング資源へのアプリケーションの配置を含めた総称である。
次に、アプリケーション管理部23は、分散コンピューティング環境で実行可能なアプリケーション情報を記憶する。アプリケーション管理部23は、ユーザによりアプリケーション43を外部から登録される。ここで、アプリケーション43とは、何らかの機能を提供するコンピュータプログラムに限定しない。例えば、FPGA(Field Programmable Gate Array)のように、ハードウェアの構成を変更することが可能なハードウェアの設定情報も含む。
アプリケーション情報は、各アプリケーションがどのような機能を有して、どのような入出力を必要として、利用するためのどのような条件が必要であるか、といった情報を含む。利用するための条件とは、例えば、CPUの動作周波数や、メインメモリ容量といった性能条件や、ハードウェアの備えるべき機能、OS(Operating System)の種類やバージョン、必要とされるライブラリといった、アプリケーション実行環境に関する条件である。例えば、GPGPUを利用することを前提としたアプリケーションの場合、実行するためのハードウェアとしてGPUが備えられていることや、GPGPU専用のライブラリが備えられていること等が条件として考えられる。
次に、資源管理部25は、分散コンピューティング環境1の備える分散コンピューティング資源に関する資源情報を記憶する。例えば、資源情報は、IT資源12であれば、搭載されているCPUの性能、メモリ容量、ディスク容量、ネットワークインターフェースの通信速度、搭載されている拡張カード、MAC(Media Access Control)アドレス、IP(Internet Protocol)アドレス、ネットマスク、消費電力といった情報を含む。また、例えば、資源情報は、ネットワーク資源11であれば、各物理ポートにおけるリンクの通信速度、MACアドレス、IPアドレス、ネットマスク、諸費電力といった情報を含む。また、資源管理部25に、モニタリング装置を接続することで、分散コンピューティング資源の状態をモニタリングすることが可能となる。
資源管理部25は、分散コンピューティング資源から状態情報44を入力する。資源管理部25は、分散コンピューティング環境1の分散コンピューティング資源の追加、削除を含む構成の変更が生じた場合、状態情報45に基づいて記憶している資源情報の変更を行う。
次に、マッピング情報生成部22は、分散コンピューティング資源にサービスをマッピングするための設定情報であるマッピング情報を生成する。マッピング情報生成部22は、アプリケーションフロー解析部21からアプリケーションフロー解析結果を入力する。また、マッピング情報生成部22は、アプリケーション管理部23からアプリケーション情報と、資源管理部25から資源情報とを取得する。マッピング情報生成部22は、アプリケーションフロー解析結果と、アプリケーション情報と、資源情報とに基づいて、マッピング情報を生成する。
具体的に、マッピング情報生成部22は、資源情報を参照しつつ、アプリケーション管理部23に記憶されるアプリケーションのうちから、アプリケーションフロー解析結果に含まれる各処理を実現するアプリケーションを選択する。マッピング情報生成部22は、例えば、あるアプリケーションを実行するための十分な計算性能を備えたIT資源を選択したり、ファイアウォールのようなネットワーク資源で実行されるアプリケーションをIT資源上で動作させたりといった選択を行う。マッピング情報生成部22は、このようにして選択した結果を、マッピング情報として記憶する。
マッピング情報生成部22は、アプリケーションと、当該アプリケーションを動作させる分散コンピューティング資源とを選択すると、アプリケーション間の通信経路をアプリケーションフロー解析結果に基づいて決定する。マッピング情報生成部22は、アプリケーション間の通信経路を決定すると、通信経路上に存在する分散コンピューティング資源の設定情報を生成する。マッピング情報生成部22は、設定情報をマッピング情報に含める。ここで、通信経路を決定する方法として、例えば、ダイクストラ法が知られている。
マッピング情報生成部22は、このようにして生成したマッピング情報と、サービス定義とを設定指示部24へ出力する。
次に、設定指示部24は、分散コンピューティング資源への設定情報やアプリケーションの配置情報を生成する。設定指示部24は、マッピング情報生成部22からマッピング情報と、サービス定義とを入力する。設定指示部24は、マッピング情報とサービス定義とに基づいて、設定情報や配置情報を生成する。設定指示部24は、設定情報と配置情報とを含んだ設定要求41を送信して、分散コンピューティング資源へ設定情報と配置情報とをマッピングする。設定指示部24は、分散コンピューティング資源へのマッピングを完了すると、マッピング情報生成部22へマッピング結果を示す通知を出力する。設定指示部24は、マッピングを正常に完了した場合、マッピングの正常完了を示す完了通知をマッピング情報生成部22へ出力する。一方、設定指示部24は、分散コンピューティング資源の障害等により、マッピングを正常に完了できなかった場合、マッピングが異常終了を示す未完了通知をマッピング情報生成部22へ出力する。
以上が、本実施形態におけるサービス構築装置2及びサービス構築装置2を備える分散コンピューティング環境1の構成の説明である。
[動作の説明]
次に、上述したような構成の本実施形態におけるサービス構築装置2の動作の説明を行う。図4は、本実施形態におけるサービス構築装置2により構築されるサービスのサービス定義42の一例を示す図である。図4のサービス定義は、構築されるべきサービスの処理の流れを示している。
まず、「Input」は、サービスに対する入力である。「Output」は、サービスからの出力である。また、処理A〜Fは、それぞれ、ある機能を備えた処理単位を示す。図4に示されたサービスにおける処理では、サービスに対する入力は、処理Aを実行される。処理Aの処理結果は、処理Bへ出力されて、処理Bを実行される。処理Bの処理結果は、処理Cと処理Eとへ出力されて、処理C及び処理Eを実行される。処理Cの処理結果は、処理Dへ出力されて処理Dを実行される。処理Dの実行結果と処理Eの実行結果は、処理Fへ出力されて、処理Fを実行される。そして、処理Fの実行結果は、サービスからの出力として出力される。なお、処理Cと処理Eへ出力される処理Bの処理結果は、同一の内容に限らない。処理Bの処理結果に応じて、処理結果の出力先が選択されても良い。これは、構築されるサービスにおける処理内容に依存する。
次に、図5は、本実施形態におけるサービス構築装置2によりサービスを構築される分散コンピューティング環境1の一例を示す図である。図5の分散コンピューティング環境1は、ファイアウォール(Firewall)と、ロードバランサ(LoadBalancer)と、ルータ(Router)と、サーバ(Server)A〜Gとを備える。ファイアウォール、ロードバランサ、及びルータは、ネットワーク資源11である。サーバA〜Gは、IT資源12である。これらの分散コンピューティング資源は、ネットワークによって相互に接続されており、データの送受信を行うことが可能である。
次に、図6は、本実施形態におけるサービス構築装置2の動作を示すフローチャートである。以下では、サービス構築装置2が、上述のような、図5の分散コンピューティング環境1に図4のサービス定義42に示されたサービスを構築する場合の動作を説明する。
まず、アプリケーションフロー解析部21は、サービス定義42を入力とする。サービス定義42は、サービス構築装置2にユーザにより、入力部140から入力されてもよいし、ネットワークと通信部130とを介して入力されても良い。アプリケーションフロー解析部21は、サービス定義42の解析を行って、アプリケーションフロー解析結果を生成する(ステップS20)。アプリケーションフロー解析部21は、アプリケーションフロー解析結果をサービス定義42と共に、マッピング情報生成部22へ出力する。
マッピング情報生成部22は、アプリケーションフロー解析部21からアプリケーションフロー解析結果とサービス定義42とを入力する。また、マッピング情報生成部22は、アプリケーション管理部23からアプリケーション情報と、資源管理部25から資源情報とを取得する。マッピング情報生成部22は、アプリケーション解析結果と、アプリケーション情報と、資源情報とに基づいて、マッピング情報を生成する(ステップS22)。マッピング情報生成部22は、マッピング情報をサービス定義42と共に、設定指示部24へ出力する。
設定指示部24は、マッピング情報生成部22からマッピング情報とサービス定義42とを入力する。設定指示部24は、マッピング情報とサービス定義42に基づいて、設定情報や配置情報を生成する。設定指示部24は、設定情報と配置情報とを含めた設定要求41を送信して、分散コンピューティング環境1へサービスのマッピングを行う(ステップS24)。すなわち、設定指示部24は、マッピング情報とサービス定義42に基づいて分散コンピューティング資源のネットワーク資源11とIT資源12への設定とアプリケーションの配置を実行する。
設定指示部24は、マッピング結果をマッピング情報生成部22へ出力する。設定指示部24は、マッピングが正常に完了した場合、マッピング結果として完了通知を出力する。一方、設定指示部24は、マッピングが正常に完了しない場合、マッピング結果として未完了通知を出力する。
マッピング情報生成部22は、設定指示部24からマッピング結果として完了通知または未完了通知を入力する。マッピング情報生成部22は、マッピングが成功したか否かを判定する(ステップS26)。すなわち、マッピング情報生成部22は、分散コンピューティング環境への設定とアプリケーションの配置が成功したか否かを判定する。
マッピング情報生成部22は、マッピングが成功した場合(ステップS26のYes)、サービス構築が完了したことを示すサービス構築完了通知45を出力する(ステップS28)。一方、マッピングが成功しなかった場合(ステップS26のNo)、ステップS22へ戻る。この場合、マッピング情報生成部22は、再度、マッピング情報を生成することになる。
以上が、サービス構築装置2が、図5の分散コンピューティング環境1に図4のサービス定義42に示されたサービスを構築する場合の動作の説明である。
続いて、上述した図6のフローチャートに示された各ステップを詳細に説明する。まず、図6のフローチャートのステップS20に示された動作について詳細な説明を行う。図7は、本実施形態において図6に示されたフローチャートのステップS20における動作を詳細に示したフローチャートである。
まず、アプリケーションフロー解析部21は、サービス定義42の入力の有無を判定する(ステップS100)。この確認方法としては、アプリケーションフロー解析部21に対して、サービス定義42の入力に対応付けられた割り込みを発生させて通知する方法や、アプリケーションフロー解析部21が特定の記憶領域をポーリングして入力の有無を確認する方法等が考えられる。この場合の記憶領域には、記憶部100のメモリやハードディスク、あるいは制御部120のレジスタが相当する。
アプリケーションフロー解析部21は、サービス定義42の入力が無い場合(ステップS100のNo)、サービス定義42の入力があるまで本ステップを繰り返す。一方、アプリケーションフロー解析部21は、サービス定義42の入力が有る場合(ステップS100のYes)、サービス定義42の解析を行う(ステップS110)。サービス定義42の解析では、サービス定義42に含まれる処理の入出力関係に基づいて、アプリケーションフロー解析結果を生成する。処理の入出力関係とは、ある処理の出力がいずれの処理の入力となるか、あるいは、ある処理の入力がいずれの処理の出力であるかという関係を示す。
ここで、図8及び図9は、本実施形態におけるアプリケーションフロー解析結果の一例を示す図である。図8及び図9に示されるアプリケーションフロー解析結果は、図4のサービス定義42に示されたサービスに基づいて生成されたものである。図8のアプリケーションフロー解析結果は、ある処理と当該処理の次に実行されるべき処理とを関連づけたテーブルとなっている。例えば、サービスに対する入力である「Input」の次の処理は、「処理A」であることが示されている。また、「処理F」の次の処理は、サービスからの出力である「Output」であることが示されている。また、アプリケーションフロー解析結果は、図9に示すように、ある処理と当該処理の直前の処理とを関連付けたテーブルとして生成されても良い。なお、アプリケーションフロー解析結果は、図8及び図9に示されるようなテーブル形式の表現に限定しない。
次に、図7に戻り、アプリケーションフロー解析部21は、アプリケーション解析結果とサービス定義42とを、マッピング情報生成部22へ送信する(ステップS120)。以上が、図6のフローチャートのステップS20に示された動作の詳細な説明である。アプリケーションフロー解析部21は、上述のような動作によりアプリケーションフロー解析結果を生成する。
続いて、図6のフローチャートのステップS22に示された動作について詳細な説明を行う。図10は、本実施形態において図6のフローチャートのステップS20における動作を詳細に示したフローチャートである。
まず、マッピング情報生成部22は、アプリケーションフロー解析結果とサービス定義42との入力の有無を判定する(ステップS200)。この確認の方法として、マッピング情報生成部22に対してサービス定義42の解析結果の入力に対応付けられた割り込みを発生させて通知する方法や、マッピング情報生成部22が特定の記憶領域をポーリングして入力の有無を確認する方法等が考えられる。この場合の記憶領域には、記憶部100のメモリやハードディスク、あるいは制御部120のレジスタが相当する。
マッピング情報生成部22は、アプリケーションフロー解析結果とサービス定義42との入力が無い場合(ステップS200のNo)、アプリケーションフロー解析結果とサービス定義42との入力があるまで本ステップを繰り返す。一方、マッピング情報生成部22は、アプリケーションフロー解析結果とサービス定義42との入力がある場合(ステップS200のYes)、サービスを構成する各処理にアプリケーション43を割り当てる(ステップS210)。マッピング情報生成部22は、アプリケーション管理部23のアプリケーション情報を参照して、サービスを構成する各処理を実現するのに必要な機能を提供するアプリケーション43を各処理へ割り当てる。
各処理へアプリケーション43が割り当てられた結果は、マッピング情報として、マッピング情報生成部22の内部、あるいは外部の記憶領域に記憶される。この場合の記憶領域には、記憶部100のメモリやハードディスク、あるいは制御部120のレジスタが相当する。ステップS210が完了した時点でのマッピング情報は、あるアプリケーションと次に実行されるべきアプリケーションとを関連付けた情報となる。
ここで、図11は、本実施形態におけるステップS210が完了した時点のマッピング情報の一例を示す図である。図11に示されたマッピング情報は、図8に示されたアプリケーションフロー解析結果に基づいて生成されたものである。例えば、サービスに対する入力である「Input」の次に処理を行うアプリケーション(以下、Appと記載する場合がある。)43は、「AppA」であることが示されている。また、「AppF」による処理結果は、サービスからの出力である「Output」であることが示されている。なお、マッピング情報は、図11に示されるようなテーブル形式の表現に限定しない。
次に、図10へ戻り、マッピング情報生成部22は、各処理へ割り当てられたアプリケーションを、分散コンピューティング資源へ割り当てる(ステップS220)。マッピング情報生成部22は、資源管理部25の資源情報を参照して、マッピング情報を分散コンピューティング資源へ割り当てる。マッピング情報を分散コンピューティング資源へ割り当てた結果は、マッピング情報生成部22の内部、あるいは外部の記憶領域に記憶される。この場合の記憶領域には、記憶部100のメモリやハードディスク、あるいは制御部120のレジスタが相当する。ステップS220が完了した時点でのマッピング情報は、あるアプリケーションと、当該アプリケーションを実行する分散コンピューティング資源と、当該アプリケーションの次に実行されるべきアプリケーションとを関連付けた情報となる。
ここで、図12は、本実施形態におけるステップS220が完了した時点のマッピング情報の一例を示す図である。図12に示されたマッピング情報は、図11に示されたマッピング情報に分散コンピューティング資源を対応付けたものである。例えば、サービスに対する入力である「Input」は、「入力装置(Input Resource)」に入力される。「AppA」は、「ファイアウォール」により実行される。また、「AppF」は、「サーバF」により実行されて、「サーバF」の実行結果がサービスからの「Output」として出力されることが示されている。なお、マッピング情報は、図12に示されるようなテーブル形式の表現に限定しない。
また、マッピング情報生成部22は、ステップS210においてアプリケーション43を各処理へ割り当てる際に、ある処理がIT資源12でもネットワーク資源11でも機能を実現できる処理の場合、どちらの場合も割り当て候補として生成しておく。そして、マッピング情報生成部22は、ステップS220においてアプリケーション43に分散コンピューティング資源を割り当てる際に、評価関数に基づいていずれの候補を用いるのかを決定する動作とすることも可能である。ここで、評価関数とは、分散コンピューティング資源の消費電力やコストや、性能といった指標を用いた関数である。
次に、図10へ戻り、マッピング情報生成部22は、選択した分散コンピューティング資源の間に経路上資源が存在するかを判定する(ステップS230)。ここで、経路上資源とは、分散コンピューティング資源にアプリケーション43を割り当てた結果、選択された分散コンピューティング資源間で通信を行う経路上に存在する分散コンピューティング資源である。このような経路上資源に対しても、適切な設定を行う必要がある。
経路上資源が存在するか否かを判定する判定手法として、例えば、図1には図示されない、分散コンピューティング環境1に存在する全ての分散コンピューティング資源を管理する管理システムに対して問い合わせを行う方法が考えられる。あるいは、あるサーバからサーバまでの経路を探索するツールを利用してもよい。このようなツールは、「Traceroute」に例示される。
ここで、図13は、本実施形態におけるアプリケーションの割り当てられた分散コンピューティング資源間に存在する経路上資源を示した図である。図13を参照すると、例えば、サービスに対する入力である「Input」は、「AppA」で処理を行われる。「AppA」は、ファイアウォールに割り付けられている。「Input」がファイアウォールに到達するためには、経路上資源であるルータを経由する必要がある。また、「AppB」の処理を割り付けられたロードバランサと、「AppB」の次の処理を行う「AppC」を割り付けられたサーバFとの間には、経路上資源であるサーバCが存在する。このような場合、ルータやサーバCに対しても、アプリケーション43間で適切な通信を可能にするために設定を行う必要がある。
次に、図10に戻り、選択した分散コンピューティング資源の間に経路上資源が存在する場合(ステップS230のYes)、マッピング情報生成部22は、マッピング情報に経路上資源の情報を追加する(ステップS240)。一方、選択した分散コンピューティング資源の間に経路上資源が存在しない場合(ステップS230のNo)、マッピング情報生成部22は、マッピング情報への経路上資源の情報を追加しない。いずれも、その後ステップS250へ進む。
ここで、図14は、本実施形態におけるステップS240が完了した時点のマッピング情報の一例を示す図である。図14のマッピング情報は、図12のマッピング情報に、経路上資源の情報を追加したものである。例えば、サービスに対する入力である「Input」と、「Input」を処理するべき「AppA」の割り付けられたファイアウォールとの間に、経路上資源であるルータが関連付けられている。また、「AppB」の処理を割り付けられたロードバランサと、「AppB」の次の処理を行う「AppC」を割り付けられたサーバFとの間に、経路上資源であるサーバCが関連付けられている。なお、マッピング情報は、図14に示されるようなテーブル形式の表現に限定しない。
次に、図10へ戻り、マッピング情報生成部22は、生成されたマッピング情報をサービス定義42と共に設定指示部24へ出力する(ステップS250)。以上が、図6のフローチャートのステップS22に示された動作の詳細な説明である。マッピング情報生成部22は、上述のような動作によりマッピング情報を生成する。
続いて、図6のフローチャートのステップS24に示された動作について詳細な説明を行う。図15は、本実施形態において図6のフローチャートのステップS24における動作を詳細に示したフローチャートである。
まず、設定指示部24は、マッピング情報とサービス定義42との入力の有無を確認する(ステップS400)。この確認の方法として、設定指示部24に対してマッピング情報の入力に対応付けられた割り込みを発生させて通知する方法や、設定指示部24が特定の記憶領域をポーリングして入力の有無を確認する方法等が考えられる。この場合の記憶領域には、記憶部100のメモリやハードディスク、あるいは制御部120のレジスタが相当する。
設定指示部24は、マッピング情報とサービス定義42との入力が無い場合(ステップS400のNo)、マッピング情報とサービス定義42との入力があるまで本ステップを繰り返す。一方、設定指示部24は、マッピング情報とサービス定義42との入力がある場合(ステップS400のYes)、マッピング情報とサービス定義42とに基づいて、分散コンピューティング資源へのアプリケーション43の配置情報や設定情報を生成する(ステップS410)。
ここで、アプリケーション43の配置情報は、アプリケーション43が正常に稼動することができるのに必要な情報が含まれる。例えば、アプリケーション43のプログラムコードや、アプリケーションの引数、データ送受信の対向先のIPアドレスやアプリケーションポート番号といった情報に例示される。また、設定情報は、ルータへのルーティング情報や、ファイアウォールへのフィルタリング情報といった情報に例示される。
設定指示部24は、分散コンピューティング資源に反映するために、生成した配置情報や設定情報を含めた設定要求41を送信する(ステップS420)。設定指示部24は、設定要求41を送信した全ての分散コンピューティング資源から応答(ACK:Acknowlege)を待つ(ステップS430)。応答を待つ際の処理例として、設定要求41を送信した全ての分散コンピューティング資源から応答を受信するまで待機する方法や、一定時間待機した後に応答を受信していない分散コンピューティング資源に対して、再度、設定要求41を送信するという処理を一定回数繰り替えるといった方法が考えられる。また、ネットワークトラブルや、分散コンピューティング資源の故障等により設定に失敗する場合も考えられる。そこで、一定時間経過後、あるいは一定回数の要求再発行後に応答を受信できない分散コンピューティング資源については、サービスのマッピングに失敗したと判定する方法も考えられる。
設定指示部24は、マッピングの結果をマッピング情報生成部22へ通知する(ステップS440)。設定指示部24は、マッピングが正常に完了した場合、マッピング結果として完了通知を出力する。一方、設定指示部24は、マッピングが正常に完了しない場合、マッピング結果として未完了通知を出力する。以上が、図6のフローチャートのステップS24に示された動作の詳細な説明である。設定指示部24は、上述のような動作により分散コンピューティング資源への設定とアプリケーションの配置を行う。
続いて、図15のフローチャートのステップS430に示された動作について詳細な説明を行う。図16は、本実施形態において図15のフローチャートのステップS430における動作を詳細に示したフローチャートである。
まず、設定指示部24は、アプリケーション43の配置情報や設定情報を反映するための設定要求41を送信した全ての分散コンピューティング資源から応答が帰ってきたかを判定する(ステップS432)。設定指示部24は、全ての分散コンピューティング資源から応答が帰ってきていれば(ステップS432のYes)、サービスのマッピングに成功したと判定する(ステップS433)。一方、設定指示部24は、全ての分散コンピューティング資源から応答が帰ってきていない場合(ステップS432のNo)、該当する分散コンピューティング資源に設定要求41を特定の回数、再発行したかを判定する(ステップS434)。ここで、特定の回数とは、予め定められた、サービスのマッピングが失敗したと判定するための閾値となる回数である。
設定指示部24は、設定要求41の再発行回数が特定の回数へ達している場合(ステップS434のYes)、サービスのマッピングが失敗したと判定する(ステップS435)。一方、設定指示部24は、設定要求41の再発行回数が特定の回数へ達していない場合(ステップS434のNo)、該当する分散コンピューティング資源に対して設定要求41の再発行を行う(ステップS436)。以上が、図15のフローチャートのステップS430に示された動作の詳細な説明である。設定指示部24は、上述のような動作により分散コンピューティング資源へのマッピングの成功及び失敗を判定する。
続いて、図6のフローチャートのステップS26に示された動作について詳細な説明を行う。図17は、本実施形態において図6のフローチャートのステップS26における動作を詳細に示したフローチャートである。
まず、マッピング情報生成部22は、設定指示部24からサービスのマッピング結果の通知の有無を判定する(ステップS260)。この確認の方法として、マッピング情報生成部22に対してサービス定義42の解析結果の入力に対応付けられた割り込みを発生させて通知する方法や、マッピング情報生成部22が特定の記憶領域をポーリングして入力の有無を確認する方法等が考えられる。この場合の記憶領域には、記憶部100のメモリやハードディスク、あるいは制御部120のレジスタが相当する。
マッピング情報生成部22は、マッピング結果の通知が無い場合(ステップS260のNo)、マッピング結果の通知があるまで本ステップを繰り返す。一方、マッピング情報生成部22は、マッピング結果の通知があった場合(ステップS260のYes)、通知の内容を確認する(ステップS270)。マッピング情報生成部22は、通知の内容に基づいて、サービスのマッピングに成功したかを判定する(ステップS280)。
マッピングが成功していた場合(ステップS280のYes)、すなわち、マッピング結果が完了通知であった場合、図6に示したステップS28へ移行する。この場合、図6のステップS28に示したように、サービス構築完了通知45を出力することになる。一方、マッピングが失敗している場合(ステップS280のNo)、すなわち、マッピング結果が未完了通知であった場合、図6に示したステップS22へ移行する。この場合、マッピング情報生成部22は、再度、マッピング情報を生成することになる。以上が、図6のフローチャートのステップS26に示された動作の詳細な説明である。マッピング情報生成部22は、上述のような動作により分散コンピューティング資源へのサービスの構築完了を判定する。
以上が、本実施形態におけるサービス構築装置2の動作方法の説明である。
ここまで説明したように本実施形態では、サービス構築装置2のマッピング情報生成部22が、これまでIT資源12で実行されてきた処理と、これまでネットワーク資源11で実行されてきた処理を区別無く一様に扱ってマッピング情報を生成する。つまり、マッピング情報生成部22は、IT資源12とネットワーク資源11のうちから区別無く選択した資源上に各処理を割り当ててマッピング情報を生成する。また、マッピング情報生成部22は、選択されたIT資源12やネットワーク資源11で行われる処理間で適切な通信を可能とするために、経路上資源を抽出してこれら経路上資源に対してもマッピング情報を生成する。このように、IT資源12とネットワーク資源11の双方に対して単一の処理でマッピングが可能となる。そのため、サービス構築に要する時間を短縮することができる。
以上が、本実施形態におけるサービス構築装置の説明である。
(第2実施形態)
次に、本発明の第2実施形態におけるサービス構築システムの説明を行う。
[概要]
本実施形態におけるサービス構築システムは、分散コンピューティング環境1に構築されるサービスを、マッピング情報やサービス定義42に基づいて可視化する可視化装置3を備える。ユーザは、構築されたサービスを可視化装置3により確認することが可能となる。
[構成の説明]
まず、本実施形態におけるサービス構築システムの構成の説明を行う。本実施形態のサービス構築システムは、第1実施形態と同様、分散コンピューティング環境1とサービス構築装置2とを備え、さらに可視化装置3を備える。本実施形態におけるサービス構築システムは、可視化装置3をさらに備える点が第1実施形態と異なる。そのため、第1実施形態と同様の部分については重ねての説明を省略して、第1実施形態と異なる部分を中心に説明を行う。
図18は、本実施形態におけるサービス構築装置2と可視化装置3との機能を示す機能ブロック図である。なお、本実施形態のサービス構築装置2は、第1実施形態と同様、図2に示したようなハードウェア構成である。
可視化装置3は、分散コンピューティング環境1に構築されたサービスを可視化する。可視化装置3は、サービス構築装置2のマッピング情報生成部22と接続される。本実施形態のマッピング情報生成部22は、サービスのマッピングに成功してサービス構築完了通知45を出力する際に、サービス構築完了通知45にマッピング情報とサービス定義42を含めて出力する。可視化装置3は、マッピング情報とサービス定義42に基づいて、分散コンピューティング環境1に構築されたサービスを可視化する。なお、可視化装置3は、図18に示すようにサービス構築装置2の外部に構築されても良いし、サービス構築装置の内部に構築されても良い。なお、サービス構築装置2は、上述以外、第1実施形態と同様である。
以上が、本実施形態におけるサービス構築装置2の構成の説明である。
[動作の説明]
次に、本実施形態におけるサービス構築装置2の動作の説明を行う。図19は、本実施形態におけるサービス構築システムの動作を示すフローチャートである。なお、図19に示されたフローチャートでは、図6に示されたフローチャートのステップS28において実行される処理を示している。また、この時点でのマッピング情報は、図14に示した状態であるとする。
まず、マッピング情報生成部22は、マッピング情報において、複数の経路上資源に関連付けられた処理が存在するかを判定する(ステップS282)。マッピング情報生成部22は、複数の経路上資源に関連付けられた処理が存在する場合(ステップS282のYes)、該当する処理を新たな処理としてマッピング情報へ追加する(ステップS284)。具体的に、マッピング情報生成部22は、複数の経路上資源に関連付けられた処理の「次の処理」に関する情報を、該当する処理から最初に経由する経路上資源で実行される処理の「次の処理」の情報として、その経路上資源で行うべき処理をマッピング情報に追加する。この新たに追加される経路上資源で行うべき処理において、「次の処理」の情報は、変更前の該当する処理の「次の処理」の情報である。「経路上資源」の情報は、変更前の該当する処理の「経路上資源」の情報から、該当する処理が最初に経由する経路上資源の情報を除いたものになる。その後、ステップS282に戻り、他に複数の経路上資源に関連付けられた処理が存在するかを判定することになる。
ここで、図20は、本実施形態におけるステップS284が完了した時点のマッピング情報の一例を示す図である。図20のマッピング情報は、図14のマッピング情報に、複数の経路上資源に関連付けられた処理を新たな処理として追加したものである。なお、マッピング情報は、図20に示されるようなテーブル形式の表現に限定しない。
例えば、図14において、「AppD」は、複数の経路上資源に関連付けられた処理である。「AppD」の処理と「AppF」の処理との間の経路上資源は、「ServerC」と「Router」の二つ存在する。図20に示されたステップS284の処理を実行後のマッピング情報では、「AppD」の「次の処理」に関する情報を「ServerC」で実行される「Forwarding1」という処理に置き換えている。つまり、「ServerC」で実行される転送処理を「Forwarding1」という処理として追加している。ここで、「ServerC」と「Router」とのうち「ServerC」が選択されるのは、「AppD」から「AppF」への通信経路上で「ServerC」を最初に経由するためである。
なお、処理「Forwarding1」の「次の処理」は、図14において「AppD」に関連付けられていた「AppF」となる。さらに、処理「Forwarding1」の「経路上資源」は、図14において「AppD」に関連付けられていた「ServerC」と「Router」から「ServerC」を除いた「Router」となる。また、「AppD」の「次の処理」は、追加された「Forwarding1」となる。
次に、図19へ戻り、マッピング情報生成部22は、複数の経路上資源に関連付けられた処理が存在しない場合(ステップS282のNo)、経路上資源を関連付けられた処理が存在するかを判定する(ステップS286)。なお、ステップS286の段階では、複数の経路上資源に関連付けられた処理は存在しない。経路上資源を関連付けられた処理が存在しない(ステップS286のNo)、ステップS290へ進む。
マッピング情報生成部22は、経路上資源を関連付けられた処理が存在する場合(ステップS286のYes)、該当する処理を新たな処理としてマッピング情報へ追加する(ステップS288)。具体的に、マッピング情報生成部22は、該当する処理の「次の処理」に関する情報を、経路上資源で実行される処理の情報として、その経路上資源で行うべき処理をマッピング情報に追加する。この経路上資源で行うべき処理の「次の処理」の情報は、変更前の該当する処理の「次の処理」となる。
ここで、図21は、本実施形態におけるステップS288が完了した時点のマッピング情報の一例を示す図である。図21のマッピング情報は、図20のマッピング情報に、経路上資源による処理と新たな処理として追加したものである。なお、マッピング情報は、図21に示されるようなテーブル形式の表現に限定しない。
例えば、図20において、「AppB」は、経路上資源を関連付けられた処理である。「AppB」は、「ServerC」を経路上資源とする処理と、「Router」を経路上資源とする処理とが存在する。図21に示されたステップS288の処理を実行後のマッピング情報では、一方の「AppB」の「次の処理」に関する情報を「ServerC」で実行される「Forwarding3」という処理に置き換えている。つまり、「ServerC」で実行される転送処理を「Forwarding3」という処理として追加している。このとき、処理「Forwarding3」の「次の処理」は、図20において「AppB」に関連付けられていた「AppC」となる。また、「AppB」の「次の処理」は、追加された「Forwarding3」となる。
また、図21に示されたマッピング情報では、他方の「AppB」の「次の処理」に関する情報を「Router」で実行される「Forwarding4」という処理に置き換えている。つまり、「Router」で実行される転送処理を「Forwarding4」という処理として追加している。このとき、処理「Forwarding4」の「次の処理」は、図20において他方の「AppB」に関連付けられていた「AppE」となる。また、他方の「AppB」の「次の処理」は、追加された「Forwarding4」となる。
同様に、図20のマッピング情報における「Input」や、「Forwarding1」や、「AppF」等の処理も、関連付けられた経路上資源を新たな処理として追加する処理が行われる。このような処理が行われることで、図21に示されたステップS288を実行後のマッピング情報では、経路上資源に関連付けられている処理は存在しない。そして、IT資源12の処理もネットワーク資源11の処理も、統一された形式で表現が可能となる。
次に、図19に戻り、マッピング情報生成部22は、マッピング情報とサービス定義42をサービス構築完了通知45と共に出力する(ステップS290)。可視化装置3は、マッピング情報とサービス定義42を入力とする。可視化装置3は、マッピング情報とサービス定義42とに基づいて、分散コンピューティング環境1に構築されたサービスを可視化する(ステップS292)。以上が、本実施形態におけるサービス構築装置2の動作の説明である。
ここで、図22は、本実施形態における可視化装置3により可視化されたサービスの例を示す図である。可視化装置3は、図22に示すようなウィンドウW41〜W44を表示する。このような表示は、可視化装置3が独自に備える表示装置に表示されてもよいし、サービス構築装置2の出力部150のLCD等に表示されても良い。以下、各ウィンドウの説明を行う。
まず、ウィンドウW41は、サービスを選択するためのウィンドウである。ウィンドウW41は、現在、分散コンピューティング環境に構築されているサービスの一覧を表示する。ユーザは、ウィンドウW41において、可視化したいサービスを選択することができる。
次に、ウィンドウW42は、分散コンピューティング環境1を表示するウィンドウである。ウィンドウW42は、分散コンピューティング環境1の分散コンピューティング資源が、ネットワーク接続状態と共に表示される。また、ウィンドウW42には、ウィンドウW41で選択されたサービスのマッピング状況に応じた分散コンピューティング環境1が表示される。
次に、ウィンドウW43は、サービス定義を表示するウィンドウである。ウィンドウW43は、ウィンドウW41で選択されたサービスのサービス定義に基づいて、サービスを構成する処理間の接続に関する情報が表示される。
次に、ウィンドウW44は、マッピング情報を表示するウィンドウである。ウィンドウW44は、ウィンドウW41で選択されたサービスのマッピング情報が表示される。
次に、図23は、本実施形態における図4に示したサービス定義のサービスを可視化装置3により可視化した例を示す図である。
ウィンドウW41は、分散コンピューティング環境1に構築されているサービスを表示する。ユーザが、ウィンドウW41においてサービスを選択すると、ウィンドウW43にサービス定義42が表示される。このサービス定義42は、図4に示されたサービス定義42である。また、ウィンドウW44にマッピング情報が表示される。このマッピング情報は、図21に示されたマッピング情報である。さらに、ウィンドウW42にマッピング情報の内容が可視化されて表示される。
次に、図24は、本実施形態における図23の可視化表示において特定の情報を選択した場合を示す図である。
例えば、ユーザがウィンドウW44に表示されたマッピング情報の特定のデータを選択したとする。図24を参照すると、処理「AppA」が選択されている。これに伴い、ウィンドウW43では、処理「AppA」に対応する処理Aがハイライトされる。また、ウィンドウW42では、処理「AppA」と処理「AppA」を実行する「Firewall」がハイライトされる。なお、同様に、ウィンドウW43で特定の処理を選択すると、ウィンドウW44の対応するマッピング情報と、ウィンドウW42の対応する分散コンピューティング資源とアプリケーション43とがハイライトされる。また、ウィンドウW42で特定の分散コンピューティング資源、あるいはアプリケーション43を選択すると、ウィンドウW44の対応するマッピング情報と、ウィンドウW43に対応する処理とがハイライトされる。
このように、ユーザは、特定の表示を選択することで、当該処理に対応する情報を確認することができる。これにより、本来のサービス定義に含まれない経路上資源の情報を含めたマッピング情報が可視化され、サービスを構成する処理を詳細に確認することができる。そのため、分散コンピューティング環境1の分散コンピューティング資源が、あるサービスにおいてどのように使用されているのかを詳細に確認することが可能になる。
以上が、本実施形態におけるサービス構築装置2の動作の説明である。
ここまで本発明のサービス構築システムの説明を行ってきた。本発明の第1実施形態によるサービス構築装置2は、これまでIT資源12で実行されてきた処理と、これまでネットワーク資源11で実行されてきた処理を区別無く一様に扱ってマッピング情報を生成する。サービス構築装置2は、IT資源12とネットワーク資源11のうちから区別無く選択された資源上に、構築するべきサービスの各処理を割り当てて、マッピング情報を生成する。また、サービス構築装置2は、選択されたIT資源12やネットワーク資源11で行われる処理間で適切な通信を可能とするために経路上資源を抽出して、これら経路上資源に対してもマッピング情報を生成する。これにより、IT資源12とネットワーク資源11の双方に対して単一の処理でマッピングが可能となる。そのため、サービス構築に要する時間を短縮することができる。
また、本発明の第2実施形態によるサービス構築装置2は、本来のサービス定義に含まれない経路上資源の情報を含めたマッピング情報が可視化され、サービスを構成する処理を詳細に確認することができる。そのため、分散コンピューティング環境1の分散コンピューティング資源が、あるサービスにおいてどのように使用されているのかを詳細に確認することが可能になる。なお、各実施形態は独立して実現することも、組み合わせて実現することも可能である。
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更を行うことができる。
なお、上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
(付記1)互いに接続されてネットワークを構成する分散コンピューティング資源を具備する分散コンピューティング環境と、前記分散コンピューティング環境にサービスを構築するサービス構築装置とを備え、前記サービス構築装置は、前記サービスにおける処理の流れを示すアプリケーションフロー解析結果を生成するアプリケーションフロー解析部と、前記アプリケーションフロー解析結果に基づいて、前記分散コンピューティング資源のうちから前記処理を実現するアプリケーションを実行するべき第1選択分散コンピューティング資源と前記アプリケーション間の通信転送処理を実行するべき第2選択分散コンピューティング資源とを割り当てたマッピング情報を生成するマッピング情報生成部と、前記マッピング情報に基づいて、前記第1選択分散コンピューティング資源に対する前記アプリケーションの配置情報と、前記第2選択分散コンピューティング資源に対する通信転送処理の設定情報とをマッピングする設定指示部とを備えるサービス構築システム。
(付記2)付記1に記載のサービス構築システムであって、前記マッピング情報生成部は、前記処理に対して前記処理を実現するアプリケーションを割り当てて、前記分散コンピューティング資源のうちから前記アプリケーションを実行するべき前記第1選択分散コンピューティング資源を割り当てて、前記分散コンピューティング資源のうちから前記処理の流れにおいて前記第1選択分散コンピューティング資源に割り当てられた前記アプリケーション間の通信系路上に存在して通信転送処理を実行するべき第2選択分散コンピューティング資源を割り当てて前記マッピング情報を生成するサービス構築システム。
(付記3)付記1または付記2に記載のサービス構築システムであって、前記分散コンピューティング資源は、ネットワーク資源とIT資源とを含み、前記ネットワーク資源は、互いに接続されて前記ネットワークにおいて前記通信転送処理を行い、前記IT資源は、他のIT資源や前記ネットワーク資源に接続されて前記アプリケーションを実行し、前記マッピング情報生成部は、前記ネットワーク資源と前記ITとのうちから、前記第1選択分散コンピューティング資源と前記第2選択分散コンピューティング資源とを区別無く割り当てるサービス構築システム。
(付記4)付記1から付記3までのいずれかに記載のサービス構築システムであって、前記アプリケーションフロー解析部は、前記サービスの仕様を定めたサービス定義入力して、前記サービス定義に基づいて前記サービスにおける前記処理の入出力関係を示す前記アプリケーションフロー解析結果を生成するサービス構築システム。
(付記5)付記1から付記4までのいずれかに記載のサービス構築システムであって、前記サービス定義は、前記サービスに含まれる前記処理の内容や、前記処理の入出力関係や、前記サービスにおける制約事項を含むサービス構築システム。
(付記6)付記1から付記5までのいずれかに記載のサービス構築システムであって、前記分散コンピューティング資源に配置可能な前記アプリケーションと、前記アプリケーションを動作させる前記分散コンピューティング資源における条件を示すアプリケーション情報を記憶するアプリケーション管理部をさらに備え、前記マッピング情報生成部は、前記アプリケーション情報を用いて前記マッピング情報を生成するサービス構築システム。
(付記7)付記1から付記6までのいずれかに記載のサービス構築システムであって、前記分散コンピューティング資源と前記分散コンピューティング資源の各々の前記分散コンピューティング環境における接続関係を示す前記資源情報とを記憶する資源管理部をさらに備え、前記マッピング情報生成部は、前記資源情報を用いて前記マッピング情報を生成するサービス構築システム。
(付記8)付記1から付記7までのいずれかに記載されたサービス構築システムであって、前記サービス毎に前記マッピング情報に基づく処理の流れを前記分散コンピューティング環境における前記分散コンピューティング資源に対応付けて可視化する可視化装置をさらに備えるサービス構築システム。
(付記9)付記8に記載のサービス構築システムであって、前記サービス構築装置が前記可視化装置を備えるサービス構築システム。
(付記10)付記8または付記9に記載のサービス構築システムであって、前記マッピング情報生成部は、前記通信転送処理を前記サービスにおいて前記第2選択分散コンピューティング資源の実行する前記処理の1つとして前記マッピング情報へ追加すされた補正マッピング情報を生成して、前記可視化装置は、前記補正マッピング情報に基づいて前記処理の流れを前記分散コンピューティング環境における前記分散コンピューティング資源に対応付けるサービス構築システム。
(付記11)付記1から付記10までのいずれかに記載のサービス構築システムで用いられるサービス構築装置。
(付記12)互いに接続されてネットワークを構成する分散コンピューティング資源を具備する分散コンピューティング環境と、前記分散コンピューティング環境にサービスを構築するサービス構築装置とを備えるサービス構築システムにおいて、前記サービスにおける処理の流れを示すアプリケーションフロー解析結果を生成するステップと、前記アプリケーションフロー解析結果に基づいて、前記分散コンピューティング資源うちから前記処理を実現するアプリケーションを実行するべき第1選択分散コンピューティング資源と前記アプリケーション間の通信転送処理を実行するべき第2選択分散コンピューティング資源とを割り当てたマッピング情報を生成するステップと、前記マッピング情報に基づいて、前記第1選択分散コンピューティング資源に対する前記アプリケーションの配置情報と、前記第2選択分散コンピューティング資源に対する通信転送処理の設定情報とをマッピングするステップとを備えるサービス構築方法。
(付記13)付記12に記載のサービス構築方法をコンピュータに実行させるコンピュータプログラム。