(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024155168
(43)【公開日】2024-10-31
(54)【発明の名称】設計支援システム及び設計支援方法
(51)【国際特許分類】
G06F 8/61 20180101AFI20241024BHJP
【FI】
G06F8/61
【審査請求】未請求
【請求項の数】14
【出願形態】OL
(21)【出願番号】P 2023069628
(22)【出願日】2023-04-20
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.JAVASCRIPT
(71)【出願人】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110002365
【氏名又は名称】弁理士法人サンネクスト国際特許事務所
(72)【発明者】
【氏名】久恒 泰地
(72)【発明者】
【氏名】齊藤 信一郎
【テーマコード(参考)】
5B376
【Fターム(参考)】
5B376AB04
5B376AB12
5B376AD19
5B376AD23
(57)【要約】
【課題】クラウドデプロイシステムのアーキテクチャ設計に関し、非機能要件の充足性が高いシステムアーキテクチャの候補の発見を効果的に行う。
【解決手段】クラウドデプロイシステムのアーキテクチャの設計支援を行う設計支援システムは、新規にクラウド上にデプロイする新規システムとクラウド上で稼働中の稼働システムとがリソースを共有した場合のアーキテクチャ候補と、共有しない場合のアーキテクチャ候補を作成する。リソースを共有した場合とリソースを共有しない場合の両方のケースのアーキテクチャ候補に対して、稼働システムの非機能要件と、新規システムの非機能要件とを充足するアーキテクチャ候補を、クラウド上にデプロイするアーキテクチャと決定する。
【選択図】
図19
【特許請求の範囲】
【請求項1】
多段のノードで構成される処理フローを有する新規システムをクラウド上にデプロイする際のアーキテクチャの設計を支援する設計支援システムであって、
前記設計支援システムは、
記憶部と、メモリと、前記メモリと協働するプロセッサと、を有し、
前記記憶部は、
前記クラウド上で稼働中の稼働システムが使用する前記クラウドのリソースを示す稼働システム構成情報と、
前記稼働システムが充足すべき非機能要件を示す稼働システム非機能要件情報と、
前記リソースの性能に関する制約を示す制約情報と、を格納し、
前記プロセッサは、
前記新規システムが前記クラウド上にデプロイされて稼働する際に使用する前記リソースの組合せを示す第一アーキテクチャ候補と、前記新規システムのアーキテクチャが充足すべき非機能要件を示す新規非機能要件と、の入力を受け付け、
前記第一アーキテクチャ候補が前記稼働システムと共有できる可能性がある前記リソースを含むか否かを判定し、
前記第一アーキテクチャ候補に含まれる前記稼働システムと共有できる可能性がある前記リソースを前記新規システムと前記稼働システムとが共有した場合に、該リソースに係る前記制約が充足されるか否かを判定し、
前記制約が充足される場合に、前記新規システムと前記稼働システムとが共有できる前記リソースの特定情報を含めた前記第一アーキテクチャ候補を第二アーキテクチャ候補に追加し、
前記新規システムと前記稼働システムとが前記リソースを共有しない場合の前記第一アーキテクチャ候補を前記第二アーキテクチャ候補に追加し、
前記第二アーキテクチャ候補が前記非機能要件と前記新規非機能要件とを充足するか否かを評価し、
前記非機能要件と前記新規非機能要件とを充足する前記第二アーキテクチャ候補を前記クラウド上にデプロイする前記新規システムのアーキテクチャと決定する
ことを特徴とする設計支援システム。
【請求項2】
請求項1に記載の設計支援システムであって、
前記制約情報は、前記リソースの性能を向上させる際の閾値を含み、
前記プロセッサは、
前記第一アーキテクチャ候補が前記稼働システムと共有される前記リソースを含む際に該リソースに係る前記制約が充足されない場合、前記閾値の範囲内で該リソースの性能を向上させたときに該リソースに係る前記制約が充足されるか否かを判定し、
前記性能を向上させた前記リソースを共有可能である前記第一アーキテクチャ候補を前記第二アーキテクチャ候補に追加する
ことを特徴とする設計支援システム。
【請求項3】
請求項1に記載の設計支援システムであって、
前記記憶部は、
前記新規システムを構成するシステム要素に対して該システム要素の性能値を含む特徴を対応付けた特徴情報を格納し、
前記プロセッサは、
前記処理フローの入力を受け付け、
前記処理フローを、複数の前記ノードへ分割し、
複数の前記ノードに対して前記新規非機能要件を充足することができる各前記システム要素と各前記システム要素の性能値を決定し、
複数の前記システム要素の組合せを前記第一アーキテクチャ候補として生成する
ことを特徴とする設計支援システム。
【請求項4】
請求項1に記載の設計支援システムであって、
前記処理フローは、入力ノードと加工・出力ノードとを含んで構成される
ことを特徴とする設計支援システム。
【請求項5】
請求項4に記載の設計支援システムであって、
前記記憶部は、
キューに対して該キューの性能値を含む特徴を対応付けたキュー特徴情報と、
処理システムに対して該処理システムの性能値を含む特徴を対応付けた処理システム特徴情報と、
前記加工・出力ノードの処理負荷を該加工・出力ノードを構成する関数の処理に係る負荷を合計して算出する際の該関数に該負荷を対応付けたノード負荷情報と、
前記処理負荷に対して前記処理システムが該処理負荷の処理に必要とする性能値を対応付けた負荷・性能対応情報と、を格納し、
前記プロセッサは、
前記処理フローの入力を受け付け、
前記処理フローを、入力ノードと加工・出力ノードへ分割し、
前記キュー特徴情報に基づいて、前記入力ノードに対して前記新規非機能要件を充足することができる前記キューと前記キューの性能値を決定し、
前記処理システム特徴情報、前記ノード負荷情報、及び前記負荷・性能対応情報に基づいて、前記加工・出力ノードに対して前記新規非機能要件を充足することができる前記処理システムと該処理システムの前記性能値を決定し、
前記キューと前記処理システムの組合せを前記第一アーキテクチャ候補として生成する
ことを特徴とする設計支援システム。
【請求項6】
請求項1に記載の設計支援システムであって、
前記プロセッサは、
前記新規非機能要件の中で優先する非機能要件を示す優先要件の入力を受け付け、
前記非機能要件と前記新規非機能要件とを充足する前記第二アーキテクチャ候補が複数存在する場合に、前記優先要件に基づいて、前記クラウドにデプロイする前記新規システムのアーキテクチャを決定する
ことを特徴とする設計支援システム。
【請求項7】
請求項1に記載の設計支援システムであって、
前記プロセッサは、
前記クラウドにデプロイすると決定した前記第二アーキテクチャ候補を前記クラウド上にデプロイし、
前記新規非機能要件を前記稼働システム非機能要件情報に追加する
ことを特徴とする設計支援システム。
【請求項8】
多段のノードで構成される処理フローを有する新規システムをクラウド上にデプロイする際のアーキテクチャの設計を支援する設計支援システムが行う設計支援方法であって、
前記設計支援システムは、
記憶部と、メモリと、前記メモリと協働するプロセッサと、を有し、
前記記憶部は、
前記クラウド上で稼働中の稼働システムが使用する前記クラウドのリソースを示す稼働システム構成情報と、
前記稼働システムが充足すべき非機能要件を示す稼働システム非機能要件情報と、
前記リソースの性能に関する制約を示す制約情報と、を格納し、
前記プロセッサが、
前記新規システムが前記クラウド上にデプロイされて稼働する際に使用する前記リソースの組合せを示す第一アーキテクチャ候補と、前記新規システムのアーキテクチャが充足すべき非機能要件を示す新規非機能要件と、の入力を受け付け、
前記第一アーキテクチャ候補が前記稼働システムと共有できる可能性がある前記リソースを含むか否かを判定し、
前記第一アーキテクチャ候補に含まれる前記稼働システムと共有できる可能性がある前記リソースを前記新規システムと前記稼働システムとが共有した場合に、該リソースに係る前記制約が充足されるか否かを判定し、
前記制約が充足される場合に、前記新規システムと前記稼働システムとが共有できる前記リソースの特定情報を含めた前記第一アーキテクチャ候補を第二アーキテクチャ候補に追加し、
前記新規システムと前記稼働システムとが前記リソースを共有しない場合の前記第一アーキテクチャ候補を前記第二アーキテクチャ候補に追加し、
前記第二アーキテクチャ候補が前記非機能要件と前記新規非機能要件とを充足するか否かを評価し、
前記非機能要件と前記新規非機能要件とを充足する前記第二アーキテクチャ候補を前記クラウド上にデプロイする前記新規システムのアーキテクチャと決定する
各処理を有することを特徴とする設計支援方法。
【請求項9】
請求項8に記載の設計支援方法であって、
前記制約情報は、前記リソースの性能を向上させる際の閾値を含み、
前記プロセッサが、
前記第一アーキテクチャ候補が前記稼働システムと共有される前記リソースを含む際に該リソースに係る前記制約が充足されない場合、前記閾値の範囲内で該リソースの性能を向上させたときに該リソースに係る前記制約が充足されるか否かを判定し、
前記性能を向上させた前記リソースを共有可能である前記第一アーキテクチャ候補を前記第二アーキテクチャ候補に追加する
各処理を有することを特徴とする設計支援方法。
【請求項10】
請求項8に記載の設計支援方法であって、
前記記憶部は、
前記新規システムを構成するシステム要素に対して該システム要素の性能値を含む特徴を対応付けた特徴情報を格納し、
前記プロセッサが、
前記処理フローの入力を受け付け、
前記処理フローを、複数の前記ノードへ分割し、
複数の前記ノードに対して前記新規非機能要件を充足することができる各前記システム要素と各前記システム要素の性能値を決定し、
複数の前記システム要素の組合せを前記第一アーキテクチャ候補として生成する
各処理を有することを特徴とする設計支援方法。
【請求項11】
請求項8に記載の設計支援方法であって、
前記処理フローは、入力ノードと加工・出力ノードとを含んで構成される
ことを特徴とする設計支援方法。
【請求項12】
請求項11に記載の設計支援方法であって、
前記記憶部は、
キューに対して該キューの性能値を含む特徴を対応付けたキュー特徴情報と、
処理システムに対して該処理システムの性能値を含む特徴を対応付けた処理システム特徴情報と、
前記加工・出力ノードの処理負荷を該加工・出力ノードを構成する関数の処理に係る負荷を合計して算出する際の該関数に該負荷を対応付けたノード負荷情報と、
前記処理負荷に対して前記処理システムが該処理負荷の処理に必要とする性能値を対応付けた負荷・性能対応情報と、を格納し、
前記プロセッサが、
前記処理フローの入力を受け付け、
前記処理フローを、入力ノードと加工・出力ノードへ分割し、
前記キュー特徴情報に基づいて、前記入力ノードに対して前記新規非機能要件を充足することができる前記キューと前記キューの性能値を決定し、
前記処理システム特徴情報、前記ノード負荷情報、及び前記負荷・性能対応情報に基づいて、前記加工・出力ノードに対して前記新規非機能要件を充足することができる前記処理システムと該処理システムの前記性能値を決定し、
前記キューと前記処理システムの組合せを前記第一アーキテクチャ候補として生成する
各処理を有することを特徴とする設計支援方法。
【請求項13】
請求項8に記載の設計支援方法であって、
前記プロセッサが、
前記新規非機能要件の中で優先する非機能要件を示す優先要件の入力を受け付け、
前記非機能要件と前記新規非機能要件とを充足する前記第二アーキテクチャ候補が複数存在する場合に、前記優先要件に基づいて、前記クラウドにデプロイする前記新規システムのアーキテクチャを決定する
ことを特徴とする設計支援方法。
【請求項14】
請求項8に記載の設計支援方法であって、
前記プロセッサが、
前記クラウドにデプロイすると決定した前記第二アーキテクチャ候補を前記クラウド上にデプロイし、
前記新規非機能要件を前記稼働システム非機能要件情報に追加する
各処理を有することを特徴とする設計支援方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、クラウドデプロイシステムの設計支援システム及び設計支援方法に関する。
【背景技術】
【0002】
近年クラウドコンピューティング技術の発展によって、データの収集・加工・蓄積・可視化など様々な処理機能がSoftware as a Service(SaaS)としてクラウドベンダから提供されている。これらクラウドサービス及びその組合せからなるシステムは、ハードウェアのリソース制約に縛られずに柔軟に性能を変更することが可能である。ITシステムのアーキテクチャ設計者は、従来では限られたハードウェアリソースの下で要件に応じて処理システムを構築する手法から、クラウド上のSaaSから要件に応じて各処理機能サービスを選択し、それらの性能と組合せを設計する手法へと、開発手法を変化させてきている。
【0003】
一方でコストやマネージメント性など求められている非機能要件を満たしたアーキテクチャを設計するためには、複数のアーキテクチャ候補の中から最適なものを選択する必要がある。特にクラウドサービスの多くは従量課金性であるため、処理機能サービスの性能向上や全体のリソース量の増加は、使用料金の増加を招く。
【0004】
例えば特許文献1には、クラウドにおける非機能要件を満たしたアーキテクチャの設計手法として、「過去設計されたシステムの設計情報と当該設計情報が実現する要件とを対応付けて格納した第1のテーブルと、前記第1のテーブルが含む設計情報同士を組合せ利用する適性について、該当組合せ利用の実績に基づき順位付けして管理する第2のテーブルと、を記憶する記憶装置と、新規設計対象のシステムに関する複数の要件それぞれを実現する設計情報を、前記記憶装置の前記第1のテーブルで特定し、当該特定の結果、いずれかの要件について複数の設計情報を特定した場合、前記複数の設計情報それぞれと、前記複数の要件のうち他要件に関して特定された設計情報との組合せ利用の適性順位を、前記記憶装置の前記第2のテーブルで参照して、前記適性順位がより高い組合せとなる設計情報を前記複数の設計情報から特定し、前記複数の要件それぞれについて特定した設計情報を所定装置に出力する演算装置とを備えることを特徴とするシステム設計支援装置。」が開示されている。
【先行技術文献】
【特許文献】
【0005】
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかし、上述の従来技術では、既にクラウドへ他のシステムがデプロイされ稼働している状況を想定していない。既存システムがデプロイされているクラウドに新規システムをさらにデプロイする場合、既存システムとキューやデータベース、処理ユニットなどリソースを既存システムと新規システムとで共有することで、クラウド全体のコストの削減や、安定性の向上、運用容易化ができるケースが存在する。
【0007】
よって非機能要件評価では、リソースを共有した場合の候補とリソースを共有しない場合の候補を含めた評価が必要であるが、従来技術では、リソースを共有する場合の候補を含めた評価が困難であった。このため、非機能要件の充足性が高いシステムアーキテクチャの候補の発見を効果的に行うことが困難であるという問題があった。
【0008】
本発明は、上記を考慮してなされたものであり、クラウドデプロイシステムのアーキテクチャ設計に関し、非機能要件の充足性が高いシステムアーキテクチャの候補の発見を効果的に行うことを目的とする。
【課題を解決するための手段】
【0009】
上記課題を解決する一態様として、多段のノードで構成される処理フローを有する新規システムをクラウド上にデプロイする際のアーキテクチャの設計を支援する設計支援システムであって、前記設計支援システムは、記憶部と、メモリと、前記メモリと協働するプロセッサと、を有し、前記記憶部は、前記クラウド上で稼働中の稼働システムが使用する前記クラウドのリソースを示す稼働システム構成情報と、前記稼働システムが充足すべき非機能要件を示す稼働システム非機能要件情報と、前記リソースの性能に関する制約を示す制約情報と、を格納し、前記プロセッサは、前記新規システムが前記クラウド上にデプロイされて稼働する際に使用する前記リソースの組合せを示す第一アーキテクチャ候補と、前記新規システムのアーキテクチャが充足すべき非機能要件を示す新規非機能要件と、の入力を受け付け、前記第一アーキテクチャ候補が前記稼働システムと共有できる可能性がある前記リソースを含むか否かを判定し、前記第一アーキテクチャ候補に含まれる前記稼働システムと共有できる可能性がある前記リソースを前記新規システムと前記稼働システムとが共有した場合に、該リソースに係る前記制約が充足されるか否かを判定し、前記制約が充足される場合に、前記新規システムと前記稼働システムとが共有できる前記リソースの特定情報を含めた前記第一アーキテクチャ候補を第二アーキテクチャ候補に追加し、前記新規システムと前記稼働システムとが前記リソースを共有しない場合の前記第一アーキテクチャ候補を前記第二アーキテクチャ候補に追加し、前記第二アーキテクチャ候補が前記非機能要件と前記新規非機能要件とを充足するか否かを評価し、前記非機能要件と前記新規非機能要件とを充足する前記第二アーキテクチャ候補を前記クラウド上にデプロイする前記新規システムのアーキテクチャと決定することを特徴とする。
【発明の効果】
【0010】
本発明によれば、リソースを共有した場合の候補を非機能要件の評価対象へ含めることにより、リソースを共有しない場合の候補のみを評価した場合と比較して、非機能要件の充足性が高いシステムアーキテクチャの候補の発見を効果的に行うことがきる。
【図面の簡単な説明】
【0011】
【
図1】実施形態1に係る設計支援システムと設計支援画面及び関連するクラウドシステムとの関係を示す図。
【
図2】実施形態1に係る設計支援システムを構成するハードウェアの一例を示す図。
【
図3】実施形態1に係る設計支援画面の一例を示す図。
【
図4】実施形態1に係る設計支援画面で設計者が入力する処理フローの一例を示す図。
【
図5】実施形態1に係る第一アーキテクチャ候補生成処理の一例を示すフローチャート。
【
図6】実施形態1に係る性能決定DBが有するキュー特徴表の一例を示す図。
【
図7】実施形態1に係る設計支援画面で設計者が入力する非機能要件の一例を示す図。
【
図8】実施形態1に係るアーキテクチャ候補生成部においてデプロイするキューの性能の候補を示すキュー性能候補リストの一例を示す図。
【
図9】実施形態1に係る性能決定DBが有する処理システム特徴表の一例を示す図。
【
図10】実施形態1に係るアーキテクチャ候補生成部において処理負荷を判断するために加工・出力ノードを処理記述へ変換した一例を示す図。
【
図11】実施形態1に係る性能決定DBが有するノード負荷表の一例を示す図。
【
図12】実施例1に係る性能決定DBが持つ負荷・性能対応表の一例を示す図。
【
図13】実施形態1に係るアーキテクチャ候補生成部においてデプロイする処理システムの性能を候補として列挙した処理システム性能候補リストの一例を示す図。
【
図14】実施形態1に係るアーキテクチャ候補生成部においてデプロイするアーキテクチャを第一アーキテクチャ候補リストとして列挙した一例を示す図。
【
図15】実施形態1に係るリソース共有候補生成処理の一例を示すフローチャート。
【
図16】実施形態1に係る評価デプロイ部が評価する際に用いる稼働システム構成表の一例を示す図。
【
図17】実施形態1に係る性能決定DBが有する制約表の一例を示す図。
【
図18】実施形態1に係るリソース共有候補生成部がリソース共有を考慮したアーキテクチャ候補を第二アーキテクチャ候補リストとして列挙した一例を示す図。
【
図19】実施形態1に係る評価・デプロイ処理の一例を示すフローチャート。
【
図20】実施形態1に係る性能決定DBが有する稼働システム非機能要件表の一例を示す図。
【
図21】実施形態1に係る評価・デプロイ部において設計者の入力した非機能要件に基づいてアーキテクチャを評価した結果を示すアーキテクチャ評価表を示す図。
【
図22】実施形態1に係る設計支援システムがアーキテクチャをデプロイした結果を示すアーキテクチャデプロイ表である。
【
図23】実施形態2に係る設計支援システムと設計支援画面及び関連するクラウドシステムとの関係を示す図である。
【発明を実施するための形態】
【0012】
以下、図面を参照して本願開示に係る一実施形態を説明する。実施形態は、図面も含めて本願を説明するための例示である。実施形態では、説明の明確化のため、適宜、省略及び簡略化がされている。特に限定しない限り、実施形態の構成要素は単数でも複数でもよい。また、ある実施形態と他の実施形態を組み合わせた形態も、本願開示に係る実施形態に含まれる。
【0013】
以下の説明では、同一又は類似の構成要素には、同一の符号を付与し、後出の実施形態及び実施例では、説明を省略する、又は差分を中心とした説明のみを行う場合がある。また、同一又は類似の構成要素が複数ある場合には、同一の符号に異なる添字を付して説明する場合がある。また、これらの複数の構成要素を区別する必要がない場合には、添字を省略して説明する場合がある。各構成要素の数は、特に断りがない限り単数でも複数でもよい。
【0014】
以下の説明では、表(テーブル)の形式で各種情報を説明するが、各種情報は表以外のデータ構造で表現されていてもよい。「XX表」は、データ構造に依存しないため、「XX情報」と呼ぶことができる。各種情報のレコードを識別する情報として「番号」の表現を用いるが、「番号」「識別情報」「識別子」「名」「ID」等は互換可能である。
【0015】
以下の説明では、プログラムが行う処理について説明する場合がある。コンピュータは、プロセッサ(例えばCPU(Central Processing Unit)、GPU(Graphics Processing Unit))により、主記憶装置のメモリ等を用いながら、プログラムで定められた処理を行う。そのため、プログラムを実行して行う処理の主体を、プロセッサとしてもよい。プロセッサがプログラムを実行することで、処理を行う機能部が実現される。
【0016】
同様に、プログラムを実行して行う処理の主体が、プロセッサを有するコントローラ、装置、システム、計算機、ノードであってもよい。プログラムを実行して行う処理の主体は、演算部であればよく、特定の処理を行う専用回路を含んでいてもよい。専用回路は、例えばFPGA(Field Programmable Gate Array)やASIC(Application Specific Integrated Circuit)等である。
【0017】
以下の説明では、プログラムは、プログラムソースから計算機にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ又は計算機が読取り可能な非一時的な記憶メディアであってもよい。プログラムソースがプログラム配布サーバの場合、プログラム配布サーバはプロセッサと配布対象のプログラムを記憶する記憶資源(ストレージ)を含み、プログラム配布サーバのプロセッサが配布対象のプログラムを他の計算機に配布してもよい。また、実施形態において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
【0018】
なお以下で説明する実施形態及び図面で示すAWS、Azure、Java、JavaScript、Kinesis、S3、MSK、Kafka、Event Hubs、Lambda、Glue、EC2、Logstashは、登録商標である。
【0019】
[実施形態1]
実施形態1は、リアルタイムに生成されるセンサや環境情報などのIoT(Internet of Things)データを入力とし、ストリーム処理をするシステムのクラウド上へのデプロイを想定した形態である。そのために本実施形態では、システムが有する処理フローを、処理システムとキューの各システム要素へ分けてアーキテクチャ候補を生成している。しかし本発明にかかる解決手法は、ストリーム処理のシステムに限らず、多段のノードで構成される処理フローを有するシステムに対して広く適用可能である。
【0020】
<システム構成>
(実施形態1に係る設計支援システム101)
図1は、実施形態1に係る設計支援システム101と設計支援画面100及び関連するクラウド環境(クラウドシステム)102との関係を示す図である。本実施形態に係る設計支援システム101は、設計支援画面100から入力された情報に基づいて、クラウド環境102にデプロイする際のシステムのアーキテクチャを設計し、設計したシステムのアーキテクチャをクラウド環境102にデプロイする。
【0021】
設計支援画面100は、設計支援システム101に接続される端末に表示され、設計者200による新規システムの設計を支援する。設計支援画面100を通じて設計されたシステムは、処理フロー103、非機能要件104、及び優先要件105として出力される。
【0022】
設計支援システム101は、性能決定DB109と、アーキテクチャ候補生成部106、リソース共有候補生成部107、及び評価・デプロイ部108を有する。また設計支援システム101は、処理の中間生成リストとして、キュー性能候補リスト116、処理システム性能候補リスト117、稼働システム構成表118、第一アーキテクチャ候補リスト119、及び第二アーキテクチャ候補リスト120を有する。
【0023】
性能決定DB109は、各処理部が処理で用いる表を格納するDB(Data Base)である。アーキテクチャ候補生成部106は、キュー特徴表110、処理システム特徴表111、ノード負荷表113、及び負荷・性能対応表114を用いる。リソース共有候補生成部は、制約表112を用いる。評価・デプロイ部108は、稼働システム非機能要件表115を用いる。評価・デプロイ部108は、非機能要件を満たすアーキテクチャを選択し、クラウド環境102へデプロイする機能を持つ。
【0024】
クラウド環境102は、ネットワークを介して設計支援システム101と接続されたクラウド上に存在し、内部では稼働システム122が動作しているものとする。クラウド環境102は、複数存在することも可能であり、同一のベンダが提供するクラウド環境であっても、異なるベンダが提供するクラウド環境であってもよい。各クラウド環境102には、サービスマネージャ121が存在し、設計支援システム101から送信される状態確認コマンド等を受け付け、現在の稼働システム122の状況を応答できる機能を持つ。
【0025】
(実施形態1に係る設計支援システム101のハードウェア)
図2は、実施形態1に係る設計支援システム101を構成するハードウェアの一例を示す図である。設計支援画面100及び設計支援システム101は、計算装置2000上で動作する。計算装置2000は、プロセッサ2003、メモリ2004、及びストレージ装置2005を有する計算機である。計算装置2000は、入力装置2006としてマウスやキーボード等を接続することができる。計算装置2000は、出力装置2007としてディスプレイ等を接続することができる。設計者200は、入力装置2006及び出力装置2007を用いて設計支援画面100を操作することができる。
【0026】
計算装置2000は、ネットワークIF(Inert Face)2001を介してインターネット2002を介してクラウド環境2008へ接続することができる。クラウド環境2008上には、仮想計算装置2009が複数配置される。稼働システム122は、仮想計算装置2009上で、プロセッサ2011及びストレージ装置2010を用いて動作する。この時、稼働システム122は、複数の仮想計算装置2009が連携して動作する形であっても良い。
【0027】
<アーキテクチャの設計及びクラウドデプロイ処理>
以下に設計者200が設計支援画面100へ情報を入力してからアーキテクチャがデプロイされるまでの処理手順を示す。
【0028】
(実施形態1に係る設計支援画面100)
図3は、実施形態1に係る設計支援画面100の一例を示す図である。
図4は、実施形態1に係る設計支援画面100で設計者200が入力する処理フロー103の一例を示す図である。
【0029】
設計支援画面100は、設計者が処理フロー103、非機能要件104、優先要件105を設計する画面である。設計支援画面100は、フローベースプログラミング環境にて提供されている。フローベースプログラミングでは、ノード192と呼ばれる処理モジュールをエッジによって接続することでノーコードに処理システムを設計することができるプログラミング環境である。設計者200は、表示領域191に用意されたノード群から実装したい処理を実行するノード192を選択し配置することで、処理フロー103を設計することができる。
【0030】
本実施形態では、
図4に示すように、ストリーム処理を実現する多段のノード192には、入力ノード401、加工ノード402、出力ノード403のカテゴリがある。入力ノード401、加工ノード402、出力ノード403の順でノードを接続することが制約となっている。なお、加工ノード402と出力ノード403をまとめて、加工・出力ノードという。
【0031】
入力ノード401では、レコードが入力されるポート番号やフォーマット等を指定する。加工ノード402では、ストリーム処理としてレコードを加工する処理を指定する。出力ノード403では、加工したレコードを出力するDB情報等の出力先を指定する。
【0032】
非機能要件194は、処理フローに加えて設計者200が非機能要件を入力できる入力欄である。非機能要件194には、処理フローを実装する際のクラウドの利用料や運用方法、スケーラビリティ性等を指定することができる。例えば
図3に示す非機能要件194の入力例では、コストが月額300$以下であり、フルマネージドな運用サービスを利用し、秒間100レコードの受付を可能とし、負荷に応じたスケーリングができるアーキテクチャである事が要件として指定されている。
【0033】
設計者200は、加えて、優先要件195として非機能要件104のうち優先したい項目を指定することができる。設計支援システム101が複数の候補を選出した時、本優先要件195に最も適したアーキテクチャが採用される。上述した処理フロー、非機能要件194、及び優先要件195は、設計者200がdeployボタン193を押下すると、設計支援システム101へ出力される。
【0034】
尚、本実施形態にかかる要件の入力手法は、フローベースプログラミング環境に限らず、コード記述やその他のノーコードな入力であってもよい。
【0035】
<実施形態1に係る第一アーキテクチャ候補生成処理>
図5は、実施形態1に係る第一アーキテクチャ候補生成処理の一例を示すフローチャートである。実施形態1に係る第一アーキテクチャ候補生成処理は、設計支援システム101のアーキテクチャ候補生成部106によって実行される。
【0036】
(ステップS101)
アーキテクチャ候補生成部106は、設計支援画面100よりJSON(JavaScript Object Notation)等のフォーマットで記述された処理フロー及び非機能要件を受け取る。
【0037】
(ステップS102)
アーキテクチャ候補生成部106は、ステップS101で受け取った処理フローデータに対して、内部のノード情報を入力ノードと加工・出力ノードへ分割する。これは、ストリーム処理のデプロイにおいて、入力ノードはキューシステムの性能決定に活用し、加工・出力ノードは処理システムの性能決定に活用するためである。なお処理フローが与えられると、各ノードには入力、処理、又は出力のパラメータが与えられているので、一意に処理フローを入力ノードと、処理・出力ノードに分割される。
【0038】
(ステップS103)
アーキテクチャ候補生成部106は、性能決定DB109より、キュー特徴表110、処理システム特徴表111、ノード負荷表113、負荷・性能対応表114を読み込む。
【0039】
(ステップS104)
アーキテクチャ候補生成部106は、ステップS102で分割した入力ノードの情報と、設計支援画面100より受け取った非機能要件104に基づいて、キューの性能をキュー特徴表110から決定し、キュー性能候補リスト116へ出力する。非機能要件104は、新規にクラウド環境102にデプロイするシステムのアーキテクチャが充足すべき非機能要件を示す。
【0040】
ここでキュー特徴表110を説明する。
図6は、実施形態1に係る性能決定DB109が有するキュー特徴表110の一例を示す図である。キュー特徴表110には、クラウドサービスやOSS(Open Source Software)として提供されるキューシステムとその特徴が列挙されている。キュー特徴表110では、キューに対してキューの性能値を含む特徴が対応付けられて格納されている。
【0041】
行201に示す通り、キュー特徴表110は、各サービスの運用方法、分散性やスループット、サービス活用に関する制約、コストやベンダについて記録する。ここで、スループット等性能によって変わる数値では変数を用いた記録がされる。例えば列203のシャードあたりの秒間受付列では、キューシステムの持つシャード数によってその値が異なる。キューシステムの決定において設計者が変更可能な変数は列204に示す性能値にて指定することができる。その他クラウド環境やデプロイするシステムの制約に応じて非機能要件項目を追加してもよいものとする。
【0042】
図7は、実施形態1に係る設計支援画面100で設計者200が入力する非機能要件の一例を示す図である。非機能要件104では、入力スループットが3MB/s以上であること、運用がフルマネージドであること、スケーラビリティがありで負荷に応じてオンデマンドにシステムがスケールすること、が要件として示されている。さらに非機能要件104では、クラウドはAWSであること、価格は候補中で最も低いものであること、が要件として示されている。
【0043】
例えば非機能要件104の非機能要件に基づき、キュー特徴表110から利用可能なキューを判断すると、マネージドの列が○となっている行201のKinesis及び行202のS3がキューとして選択候補となる。また行201のKinesisの場合、列204の性能値としてShardの指定が可能であり、入力された非機能要件では入力スループット3MB/sが求められる。また行201のKinesisの場合、列203より(Shard)*1MBの秒間スループットを実現できることから、Shard数は3となる。候補として上がったキューシステム及びその性能値は、
図8に示すキュー性能候補リスト116へ出力される。
図8は、実施形態1に係るアーキテクチャ候補生成部においてデプロイするキューの性能の候補を示すキュー性能候補リスト116の一例を示す図である。
【0044】
(ステップS105)
アーキテクチャ候補生成部106は、ステップS101で分割した加工・出力ノードの情報と非機能要件に基づいて、処理システム特徴表111、ノード負荷表113、負荷・性能対応表114から、処理システムと処理システムの性能を決定する。
【0045】
図9は、実施形態1に係る性能決定DB109が有する処理システム特徴表111の一例を示す図である。処理システム特徴表111では、各行にストリーム処理においてデータ加工を担う処理システム候補が列挙されている。各列では、スケーラビリティやメモリ、vCPUの性能、スケール数、適用先のクラウド環境についての特徴を記録する。その他クラウド環境やデプロイするシステムの制約に応じて項目を追加してもよいものとする。なお、処理システム特徴表111では、処理システムに対して処理システムの性能値を含む特徴が対応付けられて格納されている。
【0046】
アーキテクチャ候補生成部106は、入力された非機能要件に基づいて、適合する処理システム候補を処理システム特徴表111から選出する。例えば非機能要件としてスケーラビリティが必要であり、クラウド環境としてAWSが指定された場合、処理システム特徴表中の行301と行302が候補となる。またキュー特徴表110と同様に候補における性能値の決定処理も加工・出力ノードの情報、ノード負荷表113、負荷・性能対応表114を用いて行う。処理システム特徴表111では、各処理システムの性能値はメモリや処理ユニットとなるため、加工・出力ノードの処理負荷より決定される。
【0047】
図10は、実施形態1に係るアーキテクチャ候補生成部において処理負荷を判断するために加工・出力ノードを処理記述へ変換した一例を示す図である。
【0048】
コード900は、JavaScript言語にて記述されており、object変数へinput関数、base64関数、dataFilter関数を適用後にoutput関数が実行されている。object変数は、ストリーム処理において入力されるレコード情報を示し、base64関数、dataFilter関数によって加工されている。これらの関数は設計者によって設計支援画面100中で、ノードで指定される。
【0049】
図11は、実施形態1に係る性能決定DB109Bが有するノード負荷表113の一例を示す図である。
図12は、実施例1に係る性能決定DBが持つ負荷・性能対応表114の一例を示す図である。
図13は、実施形態1に係るアーキテクチャ候補生成部106においてデプロイする処理システムの性能を候補として列挙した処理システム性能候補リスト117の一例を示す図である。
【0050】
ノード負荷表113は、加工・出力ノードを構成する各関数の処理負荷に基づいて加工・出力ノード全体の処理負荷を計算するための情報である。言い換えると、ノード負荷表113には、加工・出力ノードの処理負荷を加工・出力ノードを構成する関数の処理に係る負荷を合計して算出する際の関数に負荷が対応付けられて格納されている。
【0051】
例えばbase64関数は負荷3であり、フィールド操作系の関数であるdataFilter関数は負荷1となる。ノード負荷表113より加工処理コード中の関数全ての負荷を合計し、合計値を
図12に示す負荷・性能対応表114と照らし合わせる。
【0052】
負荷・性能対応表114は、負荷の合計値に対して各処理システムがどれだけの性能値を必要としているかを対応付けた表である。負荷・性能対応表114は、処理負荷に対して処理システムが処理負荷の処理に必要とする性能値が対応付けられて格納されている。例えば負荷が5である時は列501より負荷10の行を参照し、処理システムがLambdaの時は性能値が512MB、Glueの時は性能値が1となる。ここで決定された処理システム候補及びその性能値は、
図13に示す処理システム性能候補リスト117へ出力される。
【0053】
(ステップS106)
アーキテクチャ候補生成部106は、ステップS104、ステップS105にて出力したキュー性能候補リスト116及び処理システム性能候補リスト117を組み合わせ、
図15に示す第一アーキテクチャ候補リスト119とする。
図14は、実施形態1に係るアーキテクチャ候補生成部106においてデプロイするアーキテクチャを第一アーキテクチャ候補リスト119として列挙した一例を示す図である。本実施形態では、ストリーム処理を例としているため、各リスト中のキューシステム候補と処理システム候補を一つずつ選択した組合せを、1つのアーキテクチャ候補とする。第一アーキテクチャ候補リスト1119は、新規にデプロイするシステムがクラウド環境102上にデプロイされて稼働する際に使用するリソースの組合せを示す。
【0054】
(実施形態1に係るリソース共有候補生成処理)
図15は、実施形態1に係るリソース共有候補生成処理の一例を示すフローチャートである。リソース共有候補生成部107は、第一アーキテクチャ候補リスト119、稼働システム構成表118、及び制約表112を入力とする。そしてリソース共有候補生成部107は、新規システムと既存システムとがリソース共有する場合を含んだアーキテクチャ候補を第二アーキテクチャ候補リスト120として出力する。
【0055】
(ステップS111)
リソース共有候補生成部107は、アーキテクチャ候補生成部106から出力された第一アーキテクチャ候補リスト119を読み込む。
【0056】
(ステップS112)
リソース共有候補生成部107は、設計支援システム101が接続しているクラウド環境102上で既にデプロイされ稼働している稼働システム122の情報を取得する。この時に取得する稼働システム122は、設計支援システム101からアクセスの可能な稼働システムであればよく、本実施形態の設計支援システム101によってデプロイされたものである必要はない。稼働システム122の情報は、クラウド上のサービスマネージャ121に出力するコマンド等によって取得する。取得した稼働システム122の情報は、稼働システム構成表118として出力される。
【0057】
図16は、実施形態1に係る評価・デプロイ部108が評価する際に用いる稼働システム構成表118の一例を示す図である。稼働システム構成表118は、各稼働システム122として構成される内部のシステム及びシステムの性能を列挙する。言い換えると、稼働システム構成表118は、稼働システム122を構成する内部のシステムが使用するリソース及びリソースの性能を一覧する。本実施形態は、ストリーム処理の設計支援であり、稼働システムもキューシステムと処理システムから構成されている。
【0058】
(ステップS113)
リソース共有候補生成部107は、性能決定DB109の制約表112を読み込む。
図17は、実施形態1に係る性能決定DB109が有する制約表112の一例を示す図である。制約表112は、以降のステップにおいてリソースの共有判断を実行する際に、各システムの制約上達成する必要のある条件を記録する。制約表112は、稼働システム122を構成する内部のシステムが使用するリソースの性能に関する制約を示す。また、各システムの制約として性能向上閾値を設定してもよい。性能向上閾値は、ステップS117において、例えば該当のリソースの性能を向上させる際の限度を示す閾値であり、クラウド環境102や各リソースの性能に応じて決まる設計事項である。
【0059】
(ステップS114)
リソース共有候補生成部107は、第一アーキテクチャ候補リスト119中の候補のキュー性能と、稼働システム構成表118中のキューの性能を順に比較する。
【0060】
リソース共有候補生成部107は、各候補(以下アーキテクチャ候補と記述)全てに対してステップS115からステップS120を実行する。
【0061】
(ステップS115)
リソース共有候補生成部107は、アーキテクチャ候補のキューシステムと、稼働システム122のキューシステムが一致しているかどうか判断する。そしてリソース共有候補生成部107は、一致している場合、稼働システム122のキューの性能がアーキテクチャ候補のキューの性能以上であるかどうか判断する。これは、稼働システム122のキューの性能が、アーキテクチャ候補のキューの性能よりも優れていた場合、稼働システム122のキューの余剰性能をアーキテクチャ候補のキューとして活用できる可能性があるためである。リソース共有候補生成部107は、条件に対して適合した場合(ステップS115YES)はステップS116へ、不適合の場合(ステップS115NO)はステップS120へ移行する。
【0062】
なおステップS115では、言い換えると、第一アーキテクチャ候補が稼働システム122と共有できる可能性があるリソースを含むか否かを判定している。
【0063】
(ステップS116)
リソース共有候補生成部107は、ステップS113で読み込んだ制約表112に基づいて、アーキテクチャ候補と稼働システム122がリソース共有できるか判断する。例えば
図17に示す制約表112の1行目に示すキューKinesisでは処理システム数<Shard*5を制約としている。すなわち稼働システムのキューがKinesisでありShard数が3である時、当該キューに対して接続されている処理システムの数は15未満である必要がある。アーキテクチャ候補と稼働システム122のキューを共有した場合、アーキテクチャ候補の処理システムは当該キューに対して接続されるが、この時総接続数が15未満であるならばリソースの共有が可能であると判断される。その他制約としては、スループット量やデータの種類が挙げられる。リソース共有候補生成部107は、各制約条件に適合した場合(ステップS116YES)はステップS119へ、不適合である場合(ステップS116NO)はステップS117へ移行する。
【0064】
(ステップS117)
リソース共有候補生成部107は、ステップS116の処理において制約表112中の対象のキューに性能向上閾値が設定されている場合、稼働システムのキューの性能値を性能向上閾値分向上させるとアーキテクチャ候補とリソース共有可能かを判断する。例えば、稼働システム構成表118中の行701で示す稼働システム122があり、キューに対して14の処理システムが既に接続されている場合、アーキテクチャ候補は制約表112の1行目の処理システム数<Shard*5である。よって、現状ではリソース共有ができない。
【0065】
ここで性能向上閾値が1であるため、行701の稼働システムのキューの性能を3から4へ変更すると接続可能な処理システム数が20未満となり、アーキテクチャ候補とリソース共有が可能となる。リソース共有候補生成部107は、性能向上閾値以内で性能を向上させるとしてリソースの共有が可能であると判断された場合(ステップS117YES)はステップS118へ移行する。またリソース共有候補生成部107は、性能向上閾値以内の性能向上であっても制約表中の制約に適合できなかった場合(ステップS117NO)はステップS120へ移行する。
【0066】
(ステップS118)
リソース共有候補生成部107は、稼働システム122のキューの性能を向上させ、アーキテクチャ候補とリソースを共有したケースを第二アーキテクチャ候補へ追加する。リソース共有候補生成部107は、ステップS118が終了すると、ステップS120へ処理を移す。
【0067】
(ステップS119)
リソース共有候補生成部107は、稼働システム122のキューに対してそのままアーキテクチャ候補とリソースの共有が可能であるケースを第二アーキテクチャ候補へ追加する。リソース共有候補生成部107は、ステップS119が終了すると、ステップS120へ処理を移す。
【0068】
(ステップS120)
リソース共有候補生成部107は、稼働システム122とアーキテクチャ候補のリソースを共有しなかった場合を第二アーキテクチャ候補へ追加する。
【0069】
(ステップS121)
リソース共有候補生成部107は、第二アーキテクチャ候補として追加された各候補をまとめて第二アーキテクチャ候補リスト120として出力する。
図18は、実施形態1に係るリソース共有候補生成部107がリソース共有を考慮したアーキテクチャ候補を第二アーキテクチャ候補リスト120として列挙した一例を示す図である。
図18では、ステップS120で追加した、稼働システム122とアーキテクチャ候補のリソースを共有しなかった場合のアーキテクチャ候補の図示を省略している。
【0070】
なお本実施形態は、ストリーム処理であるため、キューの共有可否を判断したが、ストリーム処理以外の処理システムをデプロイする場合、共有可能なデータベースやメモリリソース、計算処理リソースの性能比較を行ってもよい。
【0071】
(実施形態1に係る評価・デプロイ処理)
図19は、実施形態1に係る評価・デプロイ処理の一例を示すフローチャートである。評価・デプロイ部108は、第二アーキテクチャ候補リスト120、及び稼働システム非機能要件表115を入力として、設計者の指定した非機能要件に適したアーキテクチャを候補として提案し、クラウドにデプロイする。
【0072】
(ステップS131)
評価・デプロイ部108は、リソース共有候補生成部107より出力された第二アーキテクチャ候補リスト120を読み込む。
【0073】
(ステップS132)
評価・デプロイ部108は、性能決定DB109より稼働システム非機能要件表115を読み込む。
【0074】
図20は、実施形態1に係る性能決定DB109が有する稼働システム非機能要件表115の一例を示す図である。稼働システム非機能要件表115は、稼働システム122をデプロイした際に指定した非機能要件情報を格納している。稼働システム非機能要件表115は、稼働システム122が充足すべき非機能要件を示す。稼働システム非機能要件表115は、本実施形態に係る設計支援システム101によってデプロイされたシステムである場合、設計者の入力した非機能要件をそのまま保持する。稼働システム非機能要件表115は、他システムによってデプロイされた稼働システムである場合は設計者が新規に記載することも可能である。
【0075】
加えて
図20の行601に示すように、クラウド環境上の稼働システムから得られる情報として自明である項目は、クラウド環境のサービスマネージャへの状態確認コマンドの送信結果に基づいて記録することも可能である。
【0076】
(ステップS134)
評価・デプロイ部108は、第二アーキテクチャ候補リスト120中の各候補(以下アーキテクチャ候補)に対してステップS134からステップS138までの非機能要件の評価を行う。
【0077】
図18に示す第二アーキテクチャ候補リスト120には、各アーキテクチャ候補のキュー及び処理システムの性能と、共有フロー番号と性能向上値が記録されている。第二アーキテクチャ候補リスト120における共有フロー番号1501は、
図16の稼働システム構成表118に記載されているフロー番号の稼働システム122とリソースの共有があることを示す。すなわち共有フロー番号1501は、共有可能なリソースを特定するための特定情報となる。性能向上値1502は、リソース共有時に向上させたリソースの性能値を示す。
【0078】
評価・デプロイ部108は、アーキテクチャ候補が稼働システム122とリソースを共有する場合(ステップS134YES)にステップS135へ、共有しない場合(ステップS134NO)にステップS137へ移行する。
【0079】
(ステップS135)
評価・デプロイ部108は、アーキテクチャ候補がリソースを共有する稼働システム122に対し、稼働システム非機能要件表115中の対象の稼働システム122の非機能要件の評価を行う。本ステップでは、リソースを共有し性能を向上させた結果、当該稼働システム122が非機能要件を満たさなくなる場合を防ぐ効果がある。評価・デプロイ部108は、非機能要件の評価の際、各非機能要件項目を満たすか満たさないかによって判定を行い、全て満たす場合のみ非機能要件を満たすと判断する。
【0080】
評価・デプロイ部108は、リソースを共有した場合においても当該稼働システムが非機能要件を満たす場合(ステップS136YES)は、ステップS137へ移行する。一方評価・デプロイ部108は、非機能要件を満たさない場合(ステップS136NO)は、次のアーキテクチャ候補の評価を行うためステップS134へ戻る。
【0081】
(ステップS137)
評価・デプロイ部108は、アーキテクチャ候補を、設計者の入力した非機能要件で評価する。
【0082】
図21は、実施形態1に係る評価・デプロイ部108において設計者の入力した非機能要件に基づいてアーキテクチャを評価した結果を示すアーキテクチャ評価表2100を示す図である。アーキテクチャ評価表2100では、キュー2101から性能向上値2102までがアーキテクチャ候補の持つ情報を示す列である。またアーキテクチャ評価表2100では、スループット2103から価格帯2104までが非機能要件を評価する列である。評価においては、先ず非機能要件の項目に対して各アーキテクチャ候補が満たしているかどうかの可否が判断される。価格やスループット等具体的な値が導出できる項目はその値を導出した上で記録する。リソースを共有する場合、価格の算出の際に共有したリソースが使用する料金を計上しない。これによって、リソースを共有するケースではリソースの共有分の料金削減を評価へ組み込むことができる。アーキテクチャ候補が全ての非機能要件を満たす場合総合評価の列に満たす旨(総合評価2105)を記載する。
【0083】
(ステップS138)
評価・デプロイ部108は、全てのアーキテクチャ候補の評価を完了した場合(ステップS138YES)、ステップS139へ移行する。
【0084】
(ステップS139)
評価・デプロイ部108は、
図21に示すアーキテクチャ評価表2100の総合評価2105より、複数のアーキテクチャ候補が非機能要件を満たす場合、設計者の入力した優先要件に基づいてデプロイアーキテクチャを決定する。例えば
図21に示すアーキテクチャ評価表2100において、価格(コスト)が優先要件105(
図3)として指定されていた場合、行2106で示す構成が500$と最も低価格であるため選出される。
【0085】
(ステップS140)
評価・デプロイ部108は、ステップS139で選出されたアーキテクチャ候補をデプロイするためのデプロイコードをYAML等の記述として生成する。評価・デプロイ部108は、コード形式で記述されたリソースを読み込む。なおクラウド上へデプロイするシステムは、各クラウドベンダより提供されている。
【0086】
(ステップS141)
評価・デプロイ部108は、ステップS139で選出されたアーキテクチャ候補が稼働システム122の性能を向上させる場合、稼働システム122のキュー性能を向上させるデプロイコードを新たに生成する。当該稼働システム122が本実施形態の設計支援システム101によりデプロイされた稼働システム122ではない場合、評価・デプロイ部108は、クラウド環境102上のサービスマネージャ121に対してキューの性能を変更するコマンドを送信する。サービスマネージャ121は、コマンド受信に応じて、該当のキューの性能を変更して稼働システム122を修正する。
【0087】
(ステップS142)
評価・デプロイ部108は、ステップS140及びステップS141で生成したデプロイコードに基づいて、アーキテクチャ候補及び修正した稼働システム122をクラウド環境上へデプロイする。
【0088】
(ステップS143)
評価・デプロイ部108は、性能決定DB109が有する稼働システム非機能要件表115に対し、デプロイしたアーキテクチャ候補の非機能要件を追加する。
【0089】
(ステップS144)
評価・デプロイ部108は、デプロイした結果を設計支援画面100上に表示する。
図22は、実施形態1に係る設計支援システム101がアーキテクチャをデプロイした結果を示すアーキテクチャデプロイ表2200である。アーキテクチャデプロイ表2200において、キューID2201は、各稼働システム122が有するキューの固有IDを表示している。当該固有IDが同一である時、各稼働システム122のキューが共有されていることを示す。
【0090】
上記フローチャートによって、設計者200が入力した処理フロー103及び非機能要件104からアーキテクチャ候補を生成する。そして、アーキテクチャ候補が稼働システムとリソースを共有した場合及び稼働システムのリソースの性能を向上した上でリソースを共有した場合を含めて非機能要件を評価する。これにより、リソースの共有を考慮しない場合と比較してより非機能要件を満たすアーキテクチャを選出することができる。
【0091】
なおステップS139からステップS143までの各ステップは、評価によって選出したアーキテクチャ候補をそのままデプロイする場合のステップである。ステップS138で全評価を完了した後に設計者に対して評価結果を表示し、設計者が最終的にデプロイするアーキテクチャを選出してもよい。この場合、
図21に示すアーキテクチャ評価表2100を設計支援画面100上に表示する。
【0092】
(実施形態1の効果)
上述の実施形態1では、クラウド環境にデプロイする多段に構成された新規システムと、クラウド環境で稼働中の稼働システムとが、キューや処理システム等のリソースを共有する場合としない場合の両方のアーキテクチャ候補を非機能要件の評価対象に含める。そして第二アーキテクチャ候補のうちで新規システムの非機能要件と稼働システムの非機能要件を充足するアーキテクチャをクラウド環境120にデプロイする新規システムのアーキテクチャと決定する。
【0093】
よって実施形態1によれば、リソースを共有した場合としない場合の両方のアーキテクチャ候補を非機能要件の評価対象へ含めることで、非機能要件を充足する適切な新規システムのアーキテクチャ候補を効率的に発見できる。
【0094】
また上述の実施形態1では、リソースの性能を向上させた上でリソースを共有するアーキテクチャ候補を非機能要件の評価対象へ含めることで、柔軟にアーキテクチャを設計できる。
【0095】
また上述の実施形態1では、複数のキューシステムと処理システムの組合せを第一アーキテクチャ候補として生成する。よって、より多くのアーキテクチャ候補から、非機能要件を充足する新規のリアルタイムのデータ処理システムのアーキテクチャ候補を効率的に発見できる。
【0096】
また上述の実施形態1では、設計者によって入力された処理フローから、新規システムの非機能要件を充足することができるキューシステムと処理システムを決定し、キューシステムと処理システムの組合せを第一アーキテクチャ候補として生成する。よって処理フローを基にして、非機能要件を充足する適切なアーキテクチャ候補を効率的に発見できる。
【0097】
また上述の実施形態1では、非機能要件と新規非機能要件とを充足する第二アーキテクチャ候補が複数存在する場合に、優先要件が最良値を示すアーキテクチャ候補を、クラウド環境120にデプロイする新規システムのアーキテクチャを決定する。よって要件に沿った最適なアーキテクチャを発見できる。
【0098】
また上述の実施形態1では、クラウド環境に新規システムのアーキテクチャをデプロイし、新規システムの非機能要件を、稼動中のシステムの非機能要件を保存する稼働システム非機能要件情報に追加する。よって、設計支援システムでアーキテクチャを設計したシステムに関する非機能要件やリソースの情報を、以後のシステムのアーキテクチャ設計の際に再利用することができる。
【0099】
(実施形態1の変形例)
実施形態1では、システムが有する処理フローを、処理システムとキューの各システム要素へ分けてアーキテクチャ候補を生成している。しかしストリーム処理のシステムに限らず、多段のノードで構成される処理フローを有するシステムに対して広く適用可能である。
【0100】
実施形態1の変形例では、性能決定DB109は、アーキテクチャの設計対象の新規システムを構成するシステム要素に対してシステム要素の性能値を含む特徴を対応付けた特徴情報を格納する。システム要素とは、例えばキューシステムや処理システムといった処理単位である。特徴情報は、例えばキュー特徴表110や処理システム特徴表111といったシステム要素の特徴と性能値を含む。
【0101】
そしてアーキテクチャ候補生成部106は、処理フローの入力を受け付け、処理フローを、n個(n≧2)のノードへ分割し、n個のノードのそれぞれに対して所定の非機能要件を充足することができるシステム要素とシステム要素の性能値を決定する。アーキテクチャ候補生成部106は、決定したシステム要素をn個のノードについて組合せて第一アーキテクチャ候補を生成する。そして実施形態1の変形例では、リソース共有107候補生成部及び評価・デプロイ部108は、生成した第一アーキテクチャ候補を、実施形態1と同様に処理する。
【0102】
上述の実施形態1の変形例では、複数のシステム要素の組合せを第一アーキテクチャ候補として生成することで、より多くのアーキテクチャ候補から、非機能要件を充足する適切な新規システムのアーキテクチャ候補を効率的に発見できる。
【0103】
[実施形態2]
図23は、実施形態2に係る設計支援システム101Bと設計支援画面100B及び関連するクラウド環境102との関係を示す図である。本実施形態では、設計者200は、設計支援画面100上で処理フロー103、非機能要件104、優先要件105、及びアーキテクチャデプロイ表2300を設計する。この時のアーキテクチャデプロイ表2300は、実施形態1の第一アーキテクチャ候補リスト119の持つ設計情報と同等の粒度の設計情報であるとする。設計された処理フロー103、非機能要件104、優先要件105、及びアーキテクチャデプロイ表2300は、設計支援システム101Bへ入力される。
【0104】
設計支援システム101Bは、リソース共有候補生成部107、評価・デプロイ部108、稼働システム構成表118、第二アーキテクチャ候補リスト120、性能決定DB109Bを含んで構成される。実施形態1と同様に、設計支援システム101Bは、クラウド環境102と接続される。
【0105】
設計支援画面100Bよりアーキテクチャデプロイ表2300が入力されると、リソース共有候補生成部107は、読み込み処理を実行する。この時の処理は、アーキテクチャデプロイ表2300が第一アーキテクチャ候補リスト119の1つとして入力される形式と同様である。第一アーキテクチャ候補リスト119に記載されるアーキテクチャ候補が稼働システム122とリソース共有ができるか判断され、第二アーキテクチャ候補リスト120へ出力される。
【0106】
評価・デプロイ部108の、実施形態1と同様である。評価・デプロイ部108は、第二アーキテクチャ候補リスト120を読み込み、非機能要件を満たす最も優先要件105に適合したアーキテクチャを、クラウド環境102にデプロイする。
【0107】
(実施形態2の効果)
本実施形態によって、設計者がアーキテクチャを直接設計した場合においても本願開示の技術が適用され、稼働システム122とリソース共有した場合を含めた非機能要件の評価が可能となる。
【0108】
以上、本願開示に係る一実施形態について詳述したが、本願開示は上述の実施形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能である。例えば、上述の実施形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また上述の実施形態の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【0109】
また上述の各構成、機能部、処理部、処理手段、スレッド等は、それらの一部又は全部を、例えば、集積回路で設計する等によりハードウェアで実現してもよい。また上述の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリやハードディスク、SSD(Solid State Drive)等の記録装置、ICカード、SDカード、DVD等の記録媒体に置くことができる。
【0110】
また上述の各図において、制御線や情報線は説明上必要と考えられるものを示しており、必ずしも実装上の全ての制御線や情報線を示しているとは限らない。例えば、実際には殆ど全ての構成が相互に接続されていると考えてもよい。
【0111】
また上述した設計支援システム101,101B、設計支援画面100,100B、及びクラウド環境102の各機能及びデータの配置形態は一例に過ぎない。各機能及びデータの配置形態は、ハードウェアやソフトウェアの性能、処理効率、通信効率等の観点から最適な配置形態に変更し得る。
【符号の説明】
【0112】
101,101B:設計支援システム、102:クラウド環境、103:処理フロー、104:非機能要件、105:優先要件、109:性能決定DB、110:キュー特徴表、111:処理システム特徴表、112:制約表、113:ノード負荷表、114:負荷・性能対応表、115:稼働システム非機能要件表、118:稼働システム構成表、119:第一アーキテクチャ候補リスト、120:第二アーキテクチャ候補リスト、2003:プロセッサ、2004:メモリ、2005:ストレージ装置。