特開2019-211955(P2019-211955A)IP Force 特許公報掲載プロジェクト 2015.5.11 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社日立製作所の特許一覧
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】特開2019-211955(P2019-211955A)
(43)【公開日】2019年12月12日
(54)【発明の名称】システム及びサービス制御方法
(51)【国際特許分類】
   G06F 9/48 20060101AFI20191115BHJP
   G06F 9/50 20060101ALI20191115BHJP
   G06F 13/00 20060101ALI20191115BHJP
【FI】
   G06F9/48 300A
   G06F9/50 150B
   G06F13/00 357Z
【審査請求】未請求
【請求項の数】12
【出願形態】OL
【全頁数】29
(21)【出願番号】特願2018-106888(P2018-106888)
(22)【出願日】2018年6月4日
(71)【出願人】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110001678
【氏名又は名称】特許業務法人藤央特許事務所
(72)【発明者】
【氏名】早坂 光雄
(72)【発明者】
【氏名】松澤 敬一
(72)【発明者】
【氏名】松原 和正
(72)【発明者】
【氏名】島田 明男
【テーマコード(参考)】
5B089
【Fターム(参考)】
5B089GA01
5B089GA11
5B089GB01
5B089HA06
5B089HA10
5B089JA11
5B089JB10
5B089KA06
5B089KA07
5B089KC28
5B089KC32
5B089KC59
5B089KC60
(57)【要約】      (修正有)
【課題】マイクロサービスアーキテクチャを用いて開発されたサービスの実行速度が向上し、また、通信リソースの消費量が削減できるシステム及びサービス制御方法を提供する。
【解決手段】複数のマイクロサービスから構成されるサービスを提供するシステムであって、システムは、ネットワークを介して接続される複数の計算機システムに接続される。複数のマイクロサービスを実行可能な計算機システムは、複数のマイクロサービスの実行順番を制御するサービス順序制御部を有する。サービス順序制御部は、データに対して実行する複数のマイクロサービスと、その実行順番と、マイクロサービスを実行させる計算機システムと、を含む処理管理情報を作成し、処理管理情報に基づいて、マイクロサービスを実行させる計算機システムに、一つ又は実行順番が連続する複数のマイクロサービスの実行要求を送信する。
【選択図】図1
【特許請求の範囲】
【請求項1】
複数のマイクロサービスから構成されるサービスを提供するシステムであって、
前記システムは、ネットワークを介して接続される複数の計算機システムに接続され、
前記複数の計算機システムの各々は、前記複数のマイクロサービスを実行可能な計算機システムを有し、
前記システムは、前記複数のマイクロサービスの実行順番を制御するサービス順序制御部を有し、
前記サービス順序制御部は、
データに対して実行する複数のマイクロサービスと、その実行順番と、前記マイクロサービスを実行させる計算機システムと、を含む処理管理情報を作成し、
前記処理管理情報に基づいて、前記マイクロサービスを実行させる前記計算機システムに、一つ又は実行順番が連続する複数の前記マイクロサービスの実行要求を送信して前記サービスを実行させ、
前記実行順番が連続する複数のマイクロサービスの実行要求を受信した前記計算機システムは、前記複数のマイクロサービスを実行完了した場合に処理データを送信することを特徴とするシステム。
【請求項2】
請求項1に記載のシステムであって、
前記複数の計算機システムの各々は、前記マイクロサービスを実行可能な計算機システム一つ又は複数含み、
前記サービス順序制御部は、
マイクロサービスの実行における通信が少なくなるように、前記マイクロサービスを実行させる計算機システムを決定して前記処理管理情報を作成し、
前記処理管理情報に基づいて、前記マイクロサービスを前記計算機システムに配置することを特徴とするシステム。
【請求項3】
請求項1に記載のシステムであって、
前記複数の計算機システムの各々は、前記マイクロサービスを実行可能な計算機システム一つ又は複数含み、
前記サービス順序制御部は、
複数のマイクロサービスを一括で処理する一括処理を行えるように、前記マイクロサービスを実行させる計算機システムを決定して前記処理管理情報を作成し、
前記処理管理情報に基づいて、前記マイクロサービスを前記計算機システムに配置することを特徴とするシステム。
【請求項4】
請求項1に記載のシステムであって、
前記実行順番が連続する複数のマイクロサービスに、前記マイクロサービスを繰り返し処理する繰り返し処理が含まれている場合、前記サービス順序制御部は、当該処理の通信を非同期通信に変更し、
前記繰り返し処理を行う計算機システムは、前記処理を繰り返し行い、前記サービス順序制御部から問い合わせを受信した場合に、前記繰り返し処理にかかる応答を行うことを特徴とするシステム。
【請求項5】
請求項1に記載のシステムであって、
前記サービス順序制御部は、前記マイクロサービスを行う前記計算機システムに、前記一つ又は実行順番が連続する複数のマイクロサービスの実行要求と、入力データとを送信し、その処理結果のデータを受信することを繰り返すことで、全サービスを実行することを特徴とするシステム。
【請求項6】
請求項1に記載のシステムであって、
前記サービス順序制御部は、前記マイクロサービスを行う処理システムとしての前記計算機システムに、前記一つ又は実行順番が連続する複数のマイクロサービスの実行要求と、入力データとを送信し、その処理結果のデータを次の処理を行う計算機システムに送信させることを繰り返すことで、全サービスを実行することを特徴とするシステム。
【請求項7】
複数のマイクロサービスから構成されるサービスを提供するシステムが実行するサービス制御方法であって、
前記システムは、ネットワークを介して接続される複数の計算機システムに接続され、
前記複数の計算機システムの各々は、前記複数のマイクロサービスを実行可能な計算機システムを有し、
前記システムは、前記複数のマイクロサービスの実行順番を制御するサービス順序制御部を有し、
前記サービス制御方法は、
前記サービス順序制御部が、データに対して実行する複数のマイクロサービスと、その実行順番と、前記マイクロサービスを実行させる計算機システムと、を含む処理管理情報を作成する第1のステップと、
前記サービス順序制御部が、前記処理管理情報に基づいて、前記マイクロサービスを実行させる前記計算機システムに、一つ又は実行順番が連続する複数の前記マイクロサービスの実行要求を送信して前記サービスを実行させる第2のステップと、
前記実行順番が連続する複数のマイクロサービスの実行要求を受信した前記計算機システムが、前記複数のマイクロサービスを実行完了した場合に処理データを送信する第3のステップと、を含むことを特徴とするサービス制御方法。
【請求項8】
請求項7に記載のサービス制御方法であって、
前記複数の計算機システムの各々は、前記マイクロサービスを実行可能な計算機システム一つ又は複数含み、
前記第1のステップは、前記サービス順序制御部が、マイクロサービスの実行における通信が少なくなるように、前記マイクロサービスを実行させる計算機システムを決定して前記処理管理情報を作成するステップを含み、
前記第2のステップは、前記サービス順序制御部が、前記処理管理情報に基づいて、前記マイクロサービスを前記計算機システムに配置するステップを含むことを特徴とするサービス制御方法。
【請求項9】
請求項7に記載のサービス制御方法であって、
前記複数の計算機システムの各々は、前記マイクロサービスを実行可能な計算機システム一つ又は複数含み、
前記第1のステップは、前記サービス順序制御部が、複数のマイクロサービスを一括で処理する一括処理を行えるように、前記マイクロサービスを実行させる計算機システムを決定して前記処理管理情報を作成するステップを含み、
前記第2のステップは、前記サービス順序制御部が、前記処理管理情報に基づいて、前記マイクロサービスを前記計算機システムに配置するステップを含むことを特徴とするサービス制御方法。
【請求項10】
請求項7に記載のサービス制御方法であって、
前記第1のステップは、前記サービス順序制御部は、前記実行順番が連続する複数のマイクロサービスに、前記マイクロサービスを繰り返し処理する繰り返し処理が含まれている場合、当該処理の通信を非同期通信に変更するステップを含み、
前記第3のステップは、前記繰り返し処理を行う計算機システムが、前記処理を繰り返し行い、前記サービス順序制御部から問い合わせを受信した場合に、前記繰り返し処理にかかる応答を行うステップを含むことを特徴とするサービス制御方法。
【請求項11】
請求項7に記載のサービス制御方法であって、
前記サービス順序制御部が、前記マイクロサービスを行う前記計算機システムに、前記一つ又は実行順番が連続する複数のマイクロサービスの実行要求と、入力データとを送信し、その処理結果のデータを受信することを繰り返すことで、全サービスを実行することを特徴とするサービス制御方法。
【請求項12】
請求項7に記載のサービス制御方法であって、
前記サービス順序制御部が、前記マイクロサービスを行う処理システムとしての前記計算機システムに、前記一つ又は実行順番が連続する複数のマイクロサービスの実行要求と、入力データとを送信し、その処理結果のデータを次の処理を行う計算機システムに送信させることを繰り返すことで、全サービスを実行することを特徴とするサービス制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、マイクロサービスを組み合わせたサービスの開発及び実行を行うシステムに関する。
【背景技術】
【0002】
近年、個別に開発された小さなサービスを組み合わせて、一つのサービスを提供する開発手法が注目を浴びている。これらは、マイクロサービス、SaaS(Software AS a service)、SOA(Service Oriented Architecture)等として知られている。以下の説明では、開発手法を表すとき、マイクロサービスアーキテクチャと記載し、マイクロサービスアーキテクチャを用いて開発されたサービス群をマイクロサービスと記載する。
【0003】
マイクロサービスアーキテクチャでは、複数のマイクロサービスを組み合わせてサービスが開発される。開発されたサービスは他のサービスを構成するマイクロサービスとして組み込むことができる。
【0004】
マイクロサービスアーキテクチャを用いて開発されたサービスは、顧客サイトで構築されたプライベートクラウド及び顧客サイト外のパブリッククラウド等で、ネットワークを介して処理される。マイクロサービスアーキテクチャを用いたサービス開発の容易にするために、マイクロサービスアーキテクチャが提供するAPI同士を容易につなげる開発プラットフォームPaaS(Platform AS a Service)を提供することが主流となっている。
【0005】
例えば、特許文献1では、各種のクラウド上のマイクロサービスを、インターコネクションプラットフォームでAPI同士をつなげて、サービスを提供する技術が開示されている。また、マイクロサービス化した処理を、GUIベースで処理サーバを配置し、処理サーバ同士をつなげることで、アプリを容易に開発する基盤を提供する方法が広まっている。例えば、OSSとして提供されるNode−REDなどである。Node−REDでは、ノードと呼ばれる、特定の機能を実現する処理要素を接続して、一つのフロー(マイクロサービス)を生成する。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】米国特許出願公開第2016/0124742号明細書
【発明の概要】
【発明が解決しようとする課題】
【0007】
マイクロサービスアーキテクチャを用いて開発されたサービスは、サービスを構成するマイクロサービス毎に処理が実行される。そのため、ネットワークを介して接続されるシステムに複数のマイクロサービスを配置した場合、マイクロサービス間の通信によってサービスの実行速度が低下し、また、通信リソースの消費量が増大する。
【課題を解決するための手段】
【0008】
本願において開示される発明の代表的な一例を示せば以下の通りである。すなわち、複数のマイクロサービスから構成されるサービスを提供するシステムであって、前記システムは、ネットワークを介して接続される複数の計算機システムに接続され、前記複数の計算機システムの各々は、前記複数のマイクロサービスを実行可能な計算機システムを有し、前記システムは、前記複数のマイクロサービスの実行順番を制御するサービス順序制御部を有し、前記サービス順序制御部は、データに対して実行する複数のマイクロサービスと、その実行順番と、前記マイクロサービスを実行させる計算機システムと、を含む処理管理情報を作成し、前記処理管理情報に基づいて、前記マイクロサービスを実行させる前記計算機システムに、一つ又は実行順番が連続する複数の前記マイクロサービスの実行要求を送信して前記サービスを実行させ、前記実行順番が連続する複数のマイクロサービスの実行要求を受信した前記計算機システムは、前記複数のマイクロサービスを実行完了した場合に処理データを送信することを特徴とする。
【発明の効果】
【0009】
本発明の一形態によれば、マイクロサービスアーキテクチャを用いて開発されたサービスの実行速度が向上し、また、通信リソースの消費量が削減できる。上記した以外の課題、構成及び効果は、以下の実施例の説明により明らかにされる。
【図面の簡単な説明】
【0010】
図1】実施例1の計算機システムの構成例を示す図である。
図2】実施例1の基盤サーバの構成例を示すブロック図である。
図3】実施例1のサービス処理サーの構成例を示すブロック図である。
図4】実施例1の処理管理情報のデータ構造の一例を示す図である。
図5】実施例1のサービス制御システム情報のデータ構造の一例を示す図である。
図6】実施例1の開発基盤処理部が提供するGUIの一例を示す図である。
図7】実施例1の基盤サーバが実行する処理を説明するフローチャートである。
図8】実施例1の基盤サーバが実行するマイクロサービス配置最適化処理を説明するフローチャートである。
図9】実施例1のサービス処理サーバがデプロイされたマイクロサービス(実行ファイル)を受け付けた場合に実行する処理を説明するフローチャートである。
図10】実施例1の基盤サーバがサービスの提供時に実行する処理を説明するフローチャートである。
図11】実施例2の開発基盤処理部が提供するGUIの一例を示す図である。
図12A】実施例2の基盤サーバが実行するマイクロサービス配置最適化処理を説明するフローチャートである。
図12B】実施例2の基盤サーバが実行するマイクロサービス配置最適化処理を説明するフローチャートである。
図13】実施例2の基盤サーバがサービスの提供時に実行する処理を説明するフローチャートである。
図14】実施例3の基盤サーバが処理要求を送信する場合に実行する処理を説明するフローチャートである。
図15】実施例4の基盤サーバがサービスの提供時に実行する処理を説明するフローチャートである。
図16】実施例5の開発基盤処理部によって提示されるポータルの一例を示す図である。
図17A】実施例5の開発基盤処理部が提供するGUIの一例を示す図である。
図17B】実施例5の開発基盤処理部が提供するGUIの一例を示す図である。
図17C】実施例5の開発基盤処理部が提供するGUIの一例を示す図である。
【発明を実施するための形態】
【0011】
本明細書では、「aaaテーブル」の表現にて各種情報を説明することがあるが、各種情報は、テーブル以外のデータ構造で表現されていてもよい。データ構造に依存しないことを示すために「aaaテーブル」を「aaa情報」と呼ぶこともできる。
【0012】
本明細書では、各テーブルの構成は一例であり、一つのテーブルは、二以上のテーブルに分割されてもよいし、二つ以上のテーブルの全部又は一部が一つのテーブルであってもよい。
【0013】
本明細書では、「インタフェース」は、一つ以上の通信インタフェースデバイスを含んでよい。一つ以上の通信インタフェースデバイスは、NIC(Network Interface Card)及びHBA(Host Bus Adapter)等の一つ以上の同種の通信インタフェースデバイスであってもよいし、二つ以上の異種の通信インタフェースデバイスであってもよい。
【0014】
本明細書では、プログラムを主語として処理を説明する場合、プロセッサ及びCPU(Central Processing Unit)等の演算装置及び演算装置を有する計算機が処理を実行していることを示す。
【0015】
本明細書では、ストレージシステム等が有するコントローラは、演算装置、又は、コントローラが行う処理の一部若しくは全部を行うハードウェア回路を含んでもよい。
【0016】
本明細書では、プログラムは、予め計算機に格納されていてもよいし、プログラムソースから計算機にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ又はコンピュータ読取可能な(例えば非一時的な)記憶メディアであってもよい。また、以下の説明において、二つ以上のプログラムが一つのプログラムとして実現されてもよいし、一つのプログラムが二つ以上のプログラムとして実現されてもよい。
【0017】
本明細書では、要素の識別情報の一例としてIDを記載しているが、IDの代わりに他の識別情報を使用してもよいし、IDとともに他の識別情報を使用してもよい。
【0018】
本明細書では、同種の要素を区別しない場合、同じ参照符号を用い、同種の要素を区別する場合、同種の識別可能な参照符号を用いる。
【0019】
本明細書では、分散システムは、一つ以上の物理的な計算機を含む。一つ以上の物理的な計算機は、物理的なサーバ及び物理的なストレージの少なくともいずれかを含んでよい。物理的な計算機は、VM(Virtual Machine)等の仮想的な計算機を実行してもよいし、SDx(Software−Defined anything)を実行してもよい。SDxとしては、例えば、仮想的なストレージ装置の一例であるSDS(Software Defined Storage)又はSDDC(Software−defined Datacenter)を採用することができる。
【実施例1】
【0020】
図1は、実施例1の計算機システムの構成例を示す図である。
【0021】
計算機システムは、基盤システム100及び複数のデータセンタ101−1、101−2から構成される。基盤システム100及びデータセンタ101−1、101−2は、ネットワーク102を介して互いに接続される。ネットワーク102は、例えば、WAN(Wide Area Network)、LAN(Local Area Network)、SAN(Storage Area Network)、インターネット、公衆回線、及び専用回線等である。ネットワーク102の接続方式は有線及び無線のいずれでもよい。
【0022】
本明細書では、データセンタ101−1、101−2を区別しない場合、データセンタ101と記載する。また、基盤システム100及びデータセンタ101を区別しない場合、処理システムと記載する。
【0023】
計算機システムは、複数のマイクロサービスの組合せによって実現されるサービスを提供する。マイクロサービスは、少なくとも一つの機能を実現する処理から構成される。本明細書では、特定の機能を実現する処理要素をノードと記載する。
【0024】
ここで、マイクロサービスアーキテクチャにおけるマイクロサービスのデプロイ方式について説明する。マイクロサービスのデプロイ方式としては、複数のマイクロサービスを一つの処理システムにデプロイする方式と、複数のマイクロサービスの各々を分散するように複数の処理システムをデプロイする方式とがある。本明細書の「デプロイ」は、サービスが実行可能な状態で実行環境に配置することを表す。
【0025】
前者の方式は人工知能等を利用したサービスが考えられる。人工知能は、例えば、生のデータを用いた学習によってモデルを構築し、当該モデルに基づいてデータの判別及び行動の決定等を行う。学習に使用するデータが格納される計算機(サーバ)にマイクロサービスを実行させて、サービスを提供する。後者の方式は複数の処理システムにマイクロサービスを分散させることによってサービスの性能の向上等を実現する。
【0026】
基盤システム100は、マイクロサービスの開発基盤120を実現する計算機リソース及びソフトウェアを提供するシステムである。基盤システム100では、マイクロサービスの実行基盤121も提供される。データセンタ101は、マイクロサービスの実行基盤121を提供するシステムである。
【0027】
基盤システム100は、基盤を提供するシステムであり、複数の基盤サーバ110から構成される。基盤サーバ110の構成については図2を用いて説明する。
【0028】
データセンタ101は、データを管理し、また、データを用いた処理を実行するシステムであり、複数のサービス処理サーバ111から構成される。データセンタ101−1にはデータA170が格納され、データセンタ101−2にはデータB171が格納される。サービス処理サーバ111の構成は図3を用いて説明する。
【0029】
本明細書では、「基盤」とは、計算機リソース及び特定の機能を提供するプログラム及びAPIを含むものとする。
【0030】
本明細書では、サービス処理サーバ111−1、111−2を区別しない場合、サービス処理サーバ111と記載する。また、基盤サーバ110及びサービス処理サーバ111を区別しない場合、サーバと記載する。
【0031】
基盤サーバ110は、開発基盤120及び実行基盤121を提供する機能を有する。サービス処理サーバ111は、実行基盤121を提供する機能を有する。開発基盤120はマイクロサービスを開発するための基盤である。実行基盤121はマイクロサービスを実行するための基盤である。
【0032】
実施例1では、マイクロサービスを表す処理A、処理B、処理C、処理D、処理E、処理F、及び処理Zから構成されるサービスが提供されるものとする。説明の簡単のために、一つの処理が一つのノードに対応するものとする。
【0033】
なお、処理A、処理B、処理C、処理D、処理E、処理F、及び処理Zの順で処理が実行されるものとする。開発基盤120上の処理A150、処理B151、処理C152、処理D153、処理E154、処理F155、及び処理Z156は、ソースコード等の形式のデータとして扱われる。また、実行基盤121上の処理A160、処理B161、処理C162、処理D163、処理E164、処理F165、及び処理Z166は、実行形式のファイル等のデータとして扱われる。
【0034】
実施例1の計算機システムでは、開発基盤120を用いて開発されたサービスを構成するマイクロサービスが実行形式のデータに変換され、基盤システム100上の実行基盤121にデプロイされる。
【0035】
本明細書では、開発基盤120を用いたサービスの開発において、各マイクロサービスのデプロイ先は以下のように設定されているものとする。処理A160、処理C162、及び処理F165は、基盤サーバ110の実行基盤121にデプロイされる。処理B161及び処理D163は、データセンタ101−1の実行基盤121にデプロイされる。処理E164及び処理Z166は、データセンタ101−2の実行基盤121にデプロイされる。
【0036】
また、本明細書では、処理A160は、基盤システム100の基盤サーバ110のみが実行できるものとし、処理B161及び処理D163は、データセンタ101−1のサービス処理サーバ111−1のみが実行できるものとし、処理E及び処理Z166は、データセンタ101−2のサービス処理サーバ111−2のみが実行できるものとする。処理C162及び処理F165については、実行するサーバは限定されない。
【0037】
従来の方式では、デフォルトの設定にしたがってマイクロサービスが処理システムにデプロイされる。この場合、サービスの実行にあたって、各処理システムの基盤サーバ110、サービス処理サーバ111−1、及びサービス処理サーバ111−2は、ネットワーク102を介した通信によってデータの送受信を行う。したがって、サービスの実行速度の遅延及び通信リソースの消費量の増大が問題となる。
【0038】
実施例1のシステムでは、基盤システム100上の実行基盤121では、マイクロサービスの実行順番が解析され、解析結果に基づいて、上記のような問題を解決できるようにマイクロサービスをデプロイする処理システムが決定される。
【0039】
図1に示す例では、処理A160は基盤サーバ110の実行基盤121にデプロイされ、処理B161、処理C162、及び処理D163はサービス処理サーバ111−1の実行基盤121にデプロイされ、処理E164、処理F165、及び処理Z166はサービス処理サーバ111−2の実行基盤121にデプロイされる。
【0040】
図2は、実施例1の基盤サーバ110の構成例を示すブロック図である。
【0041】
基盤サーバ110は、CPU200、メモリ201、記憶装置202、及びネットワークインタフェース203を有する。各ハードウェアは内部バス204を介して互いに接続される。
【0042】
CPU200は、メモリ201に格納されるプログラムを実行する。CPU200がプログラムにしたがって処理を実行することによって、基盤サーバ110の特定の機能を実現する機能部(モジュール)として動作する。
【0043】
メモリ201は、DRAM(Dynamic Random Access Memory)等の揮発性の記憶素子又はStorage Class Memory等の不揮発性の記憶素子から構成される記憶装置である。メモリ201は、CPU200が実行するプログラム及びプログラムが使用する情報を格納する。メモリ201は、ユーザデータを一時的に格納するキャッシュエリア、プログラムが使用するワークエリアとしても用いられる。
【0044】
実施例1のメモリ201は、開発基盤処理部210、サービス順序制御部211、及びサービス実行部212を実現するプログラムを格納する。また、メモリ201は、処理管理情報T100及びサービス制御システム情報T110を格納する。
【0045】
開発基盤処理部210は、開発基盤120を実現する各種機能を提供する。サービス順序制御部211は、マイクロサービスの最適なデプロイ先となる処理システムを決定し、実行順番を含む処理要求を処理システムに送信する。また、サービス順序制御部211は、デプロイされたマイクロサービスの処理システム内のデプロイ先となるサーバを決定する。サービス実行部212は、実行基盤121を実現する各種機能を提供する。また、サービス実行部212は、デプロイされたマイクロサービスを実行する。
【0046】
処理管理情報T100は、マイクロサービスを管理するための情報であり、マイクロサービスのデプロイ時に生成される。処理管理情報T100のデータ構造については図4を用いて説明する。サービス制御システム情報T110は、マイクロサービスを実行するサーバを制御するための情報であり、予め、基盤サーバ110に設定される。サービス制御システム情報T110のデータ構造については図5を用いて説明する。
【0047】
記憶装置202は、HDD(Hard Disk Drive)及びSSD(Solid State Drive)等の記憶装置である。記憶装置202は、データを永続的に格納する。
【0048】
プログラム及び情報は、メモリ201に格納されているものとして説明しているが、記憶装置202に格納されてもよい。この場合、CPU200が記憶装置202からプログラム及び情報を読み出して、メモリ201上にロードする。
【0049】
ネットワークインタフェース203は、ネットワークを介して他の装置と接続するためのインタフェースである。
【0050】
なお、基盤サーバ110は、キーボード、マウス、及びタッチパネル等の入力装置、並びに、ディスプレイ及びプリンタ等の出力装置を有してもよい。
【0051】
図3は、実施例1のサービス処理サーバ111の構成例を示すブロック図である。
【0052】
サービス処理サーバ111は、CPU300、メモリ301、記憶装置302、及びネットワークインタフェース303を有する。各ハードウェアは内部バス304を介して互いに接続される。
【0053】
CPU300、メモリ301、記憶装置302、及びネットワークインタフェース303は、CPU200、メモリ201、記憶装置202、及びネットワークインタフェース203と同様のハードウェアである。
【0054】
メモリ301は、サービス順序制御部211及びサービス実行部212を実現するプログラムを格納し、また、処理管理情報T100及びサービス制御システム情報T110を格納する。なお、処理管理情報T100には、サービス処理サーバ111にデプロイされたマイクロサービスに関連する情報が格納される。
【0055】
図4は、実施例1の処理管理情報T100のデータ構造の一例を示す図である。
【0056】
処理管理情報T100は、処理順番C101、処理名C102、配置変更フラグC103、処理システム情報C104、及び変更処理システム情報C105から構成されるエントリを含む。一つのエントリが一つのマイクロサービスに対応する。
【0057】
処理順番C101は、マイクロサービスの実行順番を格納するフィールドである。処理名C102は、マイクロサービスの名称を格納するフィールドである。処理名C102は、マイクロサービスの名称の代わりに、マイクロサービスに付与されたID等を格納してもよい。
【0058】
配置変更フラグC103は、マイクロサービスのデプロイ先となる処理システムを変更できるか否かを示すフラグを格納するフィールドである。配置変更フラグC103には、マイクロサービスのデプロイ先となる処理システムを変更できることを示す「可」又はマイクロサービスのデプロイ先となる処理システムを変更できないことを示す「否」のいずれかが格納される。
【0059】
処理システム情報C104は、マイクロサービスのデフォルトのデプロイ先となる処理システムへアクセスするための情報を格納するフィールドである。例えば、各サーバがhttpプロトコルに基づいてリクエスト及び応答を送受信する場合、処理システム情報C104にはURLが格納される。
【0060】
変更処理システム情報C105は、サービス順序制御部211によって変更されたマイクロサービスのデプロイ先となる処理システムへアクセスするための情報を格納するフィールドである。なお、処理システムが変更されていないマイクロサービスに対応するエントリの変更処理システム情報C105は空欄となる。
【0061】
処理名C102、配置変更フラグC103、処理システム情報C104に格納される値は、マイクロサービスを定義するソースコード又はマイクロサービスの実行ファイルのメタデータに含まれる。処理順番C101は、開発基盤120から実行基盤121へマイクロサービスがデプロイ(コンパイル)されるときに決定される。なお、変更処理システム情報C105は、サービス順序制御部211の処理結果に基づいて更新される。
【0062】
なお、開発基盤120において独自のマイクロサービス(ノード)が開発された場合、当該マイクロサービスは、配置変更フラグC103が「否」に設定される。このとき、変更処理システム情報C105には、デプロイ先となるサーバがマイクロサービスを開発した基盤サーバ110であることを示す「Local Node」が格納されてもよい。
【0063】
図5は、実施例1のサービス制御システム情報T110のデータ構造の一例を示す図である。
【0064】
サービス制御システム情報T110は、サービス順序制御部情報C111及びオフロードフラグC112から構成されるエントリを含む。一つのエントリが一つのサーバに含まれるサービス順序制御部211に対応する。
【0065】
サービス順序制御部情報C111は、マイクロサービスの実行順番を制御するサービス順序制御部211を示す情報を格納するフィールドである。サービス順序制御部情報C111には、例えば、サーバを示すURLのドメイン名の後に「Control」等の制御名を付与した値が格納される。
【0066】
オフロードフラグC112は、サービス順序制御部情報C111に対応する処理システムにデプロイされた全てのマイクロサービスが完了した後に、最後に実行したマイクロサービスの次のマイクロサービスがデプロイされた処理システムに処理要求を送信するか否かを示すフラグを格納するフィールドである。本明細書では、前述した処理をオフロード処理と記載する。オフロードフラグC112には、オフロード処理を許可することを示す「可」又はオフロード処理を許可しないことを示す「否」のいずれかが格納される。
【0067】
なお、サービス制御システム情報T110を用いた処理の詳細は実施例4で説明する。
【0068】
図6は、実施例1の開発基盤処理部210が提供するGUIの一例を示す図である。
【0069】
開発基盤処理部210は、サービスを開発する場合に、図6に示すようなGUI600をユーザに対して表示する。GUI600は、パレット610、ワークスペース620、コンソール630、及びデプロイボタン640から構成される。
【0070】
パレット610は、マイクロサービスを表示する欄である。パレット610には、マイクロサービスを表すアイコンが表示される。ワークスペース620は、サービスを実現するマイクロサービスのフローを構成するための欄である。コンソール630は、マイクロサービスの処理結果の出力及びデフォルトのサーバの情報等の属性を設定し、また表示する欄である。デプロイボタン640は、ワークスペース620を用いて設定されたマイクロサービスのフローをデプロイするための操作ボタンである。
【0071】
ユーザは、パレット610からワークスペース620にマイクロサービス処理をドラッグアンドドロップする。また、ユーザは、ワークスペース620に配置されたマイクロサービスを接続し、サービスを提供するためのフローを生成する。また、ユーザは、必要に応じてコンソール630を用いて、マイクロサービスの属性の確認及び設定を行う。ユーザは、必要な設定を行った後、デプロイボタン640を操作する。
【0072】
例えば、ユーザがデプロイボタン640を操作した場合、ワークスペース620に設定されたフローの情報及びコンソール630を用いて設定された情報がメタデータとして付与された実行ファイルが生成される。また、コンソール630の設定に基づいてサービス制御システム情報T110が生成される。
【0073】
図7は、実施例1の基盤サーバ110が実行する処理を説明するフローチャートである。ユーザによってデプロイボタン640が操作された場合、以下で説明する処理が実行される。
【0074】
まず、基盤サーバ110は、マイクロサービス配置最適化処理を実行する(ステップS101)。マイクロサービス配置最適化処理の詳細は図8を用いて説明する。
【0075】
次に、基盤サーバ110は、マイクロサービスのデプロイ先となる処理システムにマイクロサービス配置最適化処理の結果を通知する(ステップS103)。例えば、基盤サーバ110のサービス順序制御部211が、処理管理情報T100からデプロイするマイクロサービスに対応するエントリを、処理システムに含まれる基盤サーバ110又はサービス処理サーバ111に通知する。この場合、サービス処理サーバ111は、メモリ301に当該エントリを含む処理管理情報T100を生成する。
【0076】
次に、基盤サーバ110は、処理システムにマイクロサービスをデプロイする(ステップS105)。
【0077】
図8は、実施例1の基盤サーバ110が実行するマイクロサービス配置最適化処理を説明するフローチャートである。この最適化処理では、各処理について処理を行う処理システムが変更可能か調査し、処理順番が隣接する処理について同じ処理システムで処理するように最適化する処理である。
【0078】
サービス順序制御部211は、開発基盤処理部210によってノードがコンパイルされ、ノードの実行ファイルを生成された場合、処理管理情報T100を生成する(ステップS201)。具体的には、以下のような処理が実行される。
【0079】
サービス順序制御部211は、処理管理情報T100にワークスペース620に配置されたマイクロサービスの数だけエントリを生成する。また、開発基盤処理部210は、マイクロサービスの実行ファイルのメタデータから値を取得し、エントリの処理名C102、配置変更フラグC103、及び処理システム情報C104に取得した値を設定する。これらのメタデータは、ノードのプロパティなどの設定情報に記述されている。さらに、開発基盤処理部210は、メタデータに基づいて、各エントリの処理順番C101に実行順番を設定する。このとき、サービス順序制御部211は、実行順番に基づいて、処理管理情報T100のエントリをソートする。
【0080】
また、サービス順序制御部211は、変数N及び変数Mを初期化する。具体的には、サービス順序制御部211は、変数Nに「1」を設定し、変数Mに「0」を設定する。変数Nは処理中のマイクロサービスを特定するために用いられ、変数Mは比較するマイクロサービスを特定するために用いられる。
【0081】
次に、サービス順序制御部211は、ターゲットマイクロサービスを選択する(ステップS203)。
【0082】
具体的には、サービス順序制御部211は、処理管理情報T100から処理順番C101が変数Nに一致するエントリを選択する。
【0083】
次に、サービス順序制御部211は、ターゲットマイクロサービスに対応するエントリの配置変更フラグC103が「可」であるか否かを判定する(ステップS205)。
【0084】
ターゲットマイクロサービスに対応するエントリの配置変更フラグC103が「可」と判定された場合、サービス順序制御部211は、ステップS213に進む。
【0085】
ステップS205において、ターゲットマイクロサービスに対応するエントリの配置変更フラグC103が「可」でないと判定された場合、サービス順序制御部211は、変数Mが0であるか否かを判定する(ステップS207)。
【0086】
変数Mが0であると判定された場合、サービス順序制御部211は、ステップS211に進む。
【0087】
変数Mが0でないと判定された場合、サービス順序制御部211は、処理管理情報T100の変数Mに一致するエントリから変数N−1に一致するエントリの間のマイクロサービスの処理システムを同一システムへ変更する(ステップS209)。その後、サービス順序制御部211は、ステップS211に進む。
【0088】
具体的には、サービス順序制御部211は、処理順番C101がMであるエントリと処理順番C101がNであるエントリとの間に存在する全てのエントリの変更処理システム情報C105に、M番目のエントリの処理システム情報C104の値を設定する。
【0089】
また、エントリがMであるエントリの処理システムC104に変更してもよいし、エントリがN−1であるエントリの処理システムC104に変更してもよいし、その間にあったエントリの処理システムC104に変更してもよい。
【0090】
前述の処理手順に基づいて、マイクロサービスを実行する処理システムを変更することによって、マイクロサービスの実行に伴う処理システム間の通信を削減できる。例えば、Nが7かつMが5の場合、処理順番C101が6であるエントリに対応するマイクロサービスを実行する処理システムが変更される。以上が、ステップS209の処理の説明である。
【0091】
サービス順序制御部211は、変数Mを変数Nで更新する(ステップS211)。その後、サービス順序制御部211は、ステップS213に進む。
【0092】
ステップS213では、サービス順序制御部211は、全てのマイクロサービスが選択されたか否かを判定する(ステップS213)。
【0093】
全てのマイクロサービスが選択されていないと判定された場合、サービス順序制御部211は、変数Nに1を加算した値を変数Nに設定し(ステップS219)、その後、ステップS203に戻る。
【0094】
全てのマイクロサービスが選択されたと判定された場合、サービス順序制御部211は、ステップS215へ進む。
【0095】
サービス順序制御部211は、MがNより小さいかを判定する(ステップS215)。MがNより小さくなかった場合、サービス順序制御部211は、マイクロサービス配置最適化処理を終了する。
【0096】
MがNより小さかった場合、サービス順序制御部211は、S209と同様の処理をMからNまでの間で実施する(ステップ217)。その後、マイクロサービス配置最適化処理を終了する。
【0097】
以上の処理によって、デプロイ先の処理システム及びデプロイするマイクロサービスの組合せが決定され、同じ処理システムで実行される二つ以上のマイクロサービスを同じ処理システムで実行されるようにして、通信処理を軽減させることができる。
【0098】
図9は、実施例1のサービス処理サーバ111が、受信したマイクロサービス最適配置情報を受信した場合に、マイクロサービス(実行ファイル)をサービス処理サーバにデプロイする処理を説明するフローチャートである。特に、本処理は、マイクロサービスが、同一のデータセンタ内の異なる複数のサーバで実行される場合に、同一のデータセンタ内でのマイクロサービス最適配置処理を実行する。
【0099】
サービス処理サーバ111のサービス順序制御部211は、開発基盤サーバ110のサービス順序制御部211が作成したマイクロサービス最適配置処理を受信する(ステップS301)。
【0100】
サービス処理サーバ111のサービス順序制御部211は、デプロイされたマイクロサービスが、同一データセンタ内の複数のサーバで実行されるか否かを判定する(ステップS303)。
【0101】
例えば、サービス順序制御部211は、処理管理情報T100に複数のエントリが存在するか否かを判定する。また、サービス順序制御部211は、デプロイされたマイクロサービスの数をカウントし、マイクロサービスの数が二以上であるか否かを判定する。
【0102】
デプロイされたマイクロサービスが一つであると判定された場合、サービス順序制御部211は、マイクロサービスをデプロイするサービス処理サーバ111を決定し、決定されたサービス処理サーバ111にマイクロサービスをデプロイする(ステップS307)。なお、本発明は、マイクロサービスをデプロイするサービス処理サーバ111の決定方法に限定されない。その後、サービス順序制御部211は、処理を終了する。
【0103】
ステップS303において、同一データセンタ内で実行されるマイクロサービスが複数であると判定された場合、サービス順序制御部211は、マイクロサービス配置最適化処理を実行する(ステップS305)。マイクロサービス配置最適化処理は、ステップS203からステップS223までの処理と同様の処理である。ただし、デプロイ先がサーバである点が異なる。
【0104】
次に、サービス順序制御部211は、マイクロサービス配置最適化処理の処理結果に基づいて、決定されたサービス処理サーバ111にマイクロサービスをデプロイする(ステップS307)。その後、サービス順序制御部211は、処理を終了する。
【0105】
図10は、実施例1の基盤サーバ110がサービスの提供時に実行する処理を説明するフローチャートである。
【0106】
基盤サーバ110のサービス順序制御部211は、サービスの実行契機を検出した場合、以下で説明する処理を開始する。サービスの実行契機としては、ユーザ等からサービスの実行要求の受け付け、及び一定時間の経過等が考えられる。
【0107】
基盤サーバ110のサービス順序制御部211は、処理管理情報T100の処理システム情報C104及び変更処理システム情報C105を参照して、処理要求を送信する処理システムの順番を決定する(ステップS401)。このとき、処理要求を送信する処理システムの順番を表す変数iに初期値「1」を設定する。
【0108】
次に、基盤サーバ110のサービス順序制御部211は、i番目の処理システムに第一処理要求を送信する(ステップS403)。
【0109】
具体的には、基盤サーバ110のサービス順序制御部211は、入力パラメータ及びマイクロサービスの実行順番を含む第一処理要求をi番目の処理システムに送信する。第一処理要求を受信した処理システムのサービス実行部212は、処理要求にしたがって、デプロイされたマイクロサービスを実行する。
【0110】
なお、i番目の処理システムにデプロイされているマイクロサービスが一つである場合、基盤サーバ110のサービス順序制御部211は、当該処理システムに第二処理要求を送信する。第二処理要求には入力パラメータが含まれるが、マイクロサービスの実行順番は含まれない。
【0111】
処理要求は、例えば、XML形式又はJSON形式のデータとして送信されてもよいし、また、HTTP通信のパラメータとして送信されてもよい。
【0112】
なお、分散処理を実行する場合には以下のような処理が実行される。XML形式又はJSON形式のデータとして処理要求を受信した場合、サービス実行部212は、当該データをマイクロサービスの設定ファイルとして登録し、指定された順番でマイクロサービスを実行する。HTTP通信のパラメータとして処理要求を受信した場合、サービス実行部212は、パラメータをXML形式又はJSON形式のデータに変換し、当該データをマイクロサービスの設定ファイルとして登録し、指定された順番でマイクロサービスを実行する。
【0113】
次に、基盤サーバ110のサービス順序制御部211は、第一処理要求を送信した処理システムのサービス実行部212から処理結果を受信する(ステップS405)。
【0114】
次に、基盤サーバ110のサービス順序制御部211は、全てのマイクロサービスが実行されたか否かを判定する(ステップS407)。
【0115】
全てのマイクロサービスが実行されていないと判定された場合、基盤サーバ110のサービス順序制御部211は、変数iに1を加算し(ステップS409)、ステップS403に戻り、同様の処理を実行する。
【0116】
全てのマイクロサービスが実行されたと判定された場合、基盤サーバ110のサービス順序制御部211は、一連のマイクロサービスの処理結果から得られる応答を出力し(ステップS411)、処理を終了する。
【0117】
ここで、図1に示すようにマイクロサービスがデプロイされた場合における図10の処理の具体例について説明する。
【0118】
(1)まず、基盤サーバ110は、ユーザから入力Aを含むサービスの実行要求を受信する。基盤サーバ110のサービス順序制御部211は、基盤システム100、データセンタ101−1、データセンタ101−2の順に処理要求を送信することを決定する。基盤サーバ110のサービス順序制御部211は、基盤システム100に第一処理要求を送信する。基盤サーバ110のサービス実行部212は、処理A160を実行し、処理結果として出力Aを出力する。基盤サーバ110のサービス実行部212は、基盤サーバ110のサービス順序制御部211に出力Aを送信する。
【0119】
(2)基盤サーバ110のサービス順序制御部211は、出力A及びマイクロサービス(処理B161、処理C162、処理D163)の実行順番を含む第一処理要求をデータセンタ101−1に送信する。
【0120】
(3)サービス処理サーバ111−1のサービス実行部212は、出力Aに基づいて処理B161を実行して出力Bを出力し、出力Bに基づいて処理C162を実行して出力Cを出力し、出力Cに基づいて処理D163を実行して出力Dを出力する。サービス処理サーバ111−1は、基盤サーバ110のサービス順序制御部211に出力Dを送信する。
【0121】
(4)基盤サーバ110のサービス順序制御部211は、出力D及びマイクロサービス(処理E164、処理F165、処理Z166)の順番を含む第一処理要求をデータセンタ101−2に送信する。
【0122】
(5)サービス処理サーバ111−2のサービス実行部212は、出力Dに基づいて処理E164を実行して出力Eを出力し、出力Eに基づいて処理F165を実行して出力Fを出力し、出力Fに基づいて処理Z166を実行して出力Zを出力する。サービス処理サーバ111−2のサービス実行部212は、基盤サーバ110のサービス順序制御部211に出力Zを送信する。
【0123】
(6)基盤サーバ110のサービス順序制御部211は、ユーザに応答として出力Zを出力する。
【0124】
実施例1によれば、サービスを統括するサーバ(基盤サーバ110)は、マイクロサービスが配置された処理システム間(サーバ間)のデータの送受信が頻繁に行われないようにマイクロサービスのデプロイ先となる処理システムを決定する。また、サービスを統括するサーバ(基盤サーバ110)は、サービスの実行時に、実行順番を含む処理要求を処理システムに送信する。これによって、サービスの実行に伴う処理システム間のデータの送受信が削減されるため、実行速度の低下及び通信リソースの消費量の増大の問題を改善することができる。
【実施例2】
【0125】
実施例1では、サービスを構成する全てのマイクロサービスに対してマイクロサービス配置最適化処理が実行される。実施例2では、サービスを構成するマイクロサービスのうち、一部のマイクロサービスに対してマイクロサービス配置最適化処理が実行される。それを実現するために、マイクロサービス配置最適化処理を適用するマイクロサービスを限定する。以下、実施例1との差異を中心に実施例2について説明する。
【0126】
実施例2の計算機システムの構成は、実施例1と同一である。実施例2の基盤サーバ110及びサービス処理サーバ111の構成は、実施例1と同一である。また、実施例2の基盤サーバ110及びサービス処理サーバ111が保持する情報のデータ構造は、実施例1と同一である。
【0127】
実施例2では、開発基盤120において提供されるマイクロサービスが一部異なる。図11は、実施例2の開発基盤処理部210が提供するGUIの一例を示す図である。
【0128】
実施例2のGUI600のパレット610には、マイクロサービス配置最適化処理を適用する範囲を示すために、一括処理開始ノード157及び一括処理終了ノード158が表示される。一括処理開始ノード157はマイクロサービス配置最適化処理の始点を示すノード(マイクロサービス)であり、一括処理終了ノード158はマイクロサービス配置最適化処理の終点を示すノード(マイクロサービス)である。一括処理開始ノード157及び一括処理終了ノード158は、基盤サーバ110に配置されるものとする。
【0129】
図11に示す例では、処理B151から処理F155がマイクロサービス配置最適化処理の対象となる。
【0130】
図12A及び図12Bは、実施例2の基盤サーバ110が実行するマイクロサービス配置最適化処理を説明するフローチャートである。
【0131】
基盤サーバ110のサービス順序制御部211は、ステップS203の処理の後に、ターゲットマイクロサービスに対応するノードが一括処理開始ノード157であるか否かを判定する(ステップS251)。
【0132】
ターゲットマイクロサービスに対応するノードが一括処理開始ノード157であると判定された場合、基盤サーバ110のサービス順序制御部211は、一括処理フラグを「ON」に設定する(ステップS253)。その後、基盤サーバ110のサービス順序制御部211は、ステップS259に進む。
【0133】
ターゲットマイクロサービスに対応するノードが一括処理開始ノード157でないと判定された場合、基盤サーバ110のサービス順序制御部211は、当該ノードが一括処理終了ノード158であるか否かを判定する(ステップS255)。
【0134】
ターゲットマイクロサービスに対応するノードが一括処理終了ノード158であると判定された場合、基盤サーバ110のサービス順序制御部211は、一括処理フラグを「OFF」に設定する(ステップS257)。その後、基盤サーバ110のサービス順序制御部211は、ステップS259に進む。
【0135】
ターゲットマイクロサービスに対応するノードが一括処理終了ノード158でないと判定された場合、基盤サーバ110のサービス順序制御部211は、ステップS259に進む。
【0136】
ステップS259では、基盤サーバ110のサービス順序制御部211は、一括処理フラグが「ON」であるか否かを判定する(ステップS259)。
【0137】
一括処理フラグが「ON」であると判定された場合、基盤サーバ110のサービス順序制御部211は、ステップS205に進む。
【0138】
一括処理フラグが「OFF」であると判定された場合、基盤サーバ110のサービス順序制御部211は、ステップS213に進む。
【0139】
図13は、実施例2の基盤サーバ110がサービスの提供時に実行する処理を説明するフローチャートである。
【0140】
基盤サーバ110のサービス順序制御部211は、ステップS401の処理の後に、i番目の処理システムが実行するマイクロサービスが一括処理開始ノード157であるか否かを判定する(ステップS421)。
【0141】
i番目の処理システムが実行するマイクロサービスに一括処理開始ノード157であると判定された場合、基盤サーバ110のサービス順序制御部211は、一括処理フラグを「ON」に設定する(ステップS423)。その後、基盤サーバ110のサービス順序制御部211は、ステップS409に進む。
【0142】
i番目の処理システムが実行するマイクロサービスが一括処理開始ノード157でないと判定された場合、基盤サーバ110のサービス順序制御部211は、当該マイクロサービスが一括処理終了ノード158であるか否かを判定する(ステップS425)。
【0143】
i番目の処理システムが実行するマイクロサービスが一括処理終了ノード158であると判定された場合、基盤サーバ110のサービス順序制御部211は、一括処理フラグを「OFF」に設定する(ステップS427)。その後、基盤サーバ110のサービス順序制御部211は、ステップS409に進む。
【0144】
i番目の処理システムが実行するマイクロサービスが一括処理終了ノード158でないと判定された場合、基盤サーバ110のサービス順序制御部211は、一括フラグが「ON」であるか否かを判定する(ステップS429)。
【0145】
一括フラグが「ON」であると判定された場合、基盤サーバ110のサービス順序制御部211は、ステップS403に進む。
【0146】
一括フラグが「OFF」であると判定された場合、基盤サーバ110のサービス順序制御部211は、i番目の処理システムに第二処理要求を送信する(ステップS431)。第二処理要求にはマイクロサービスの実行順番は含まれない。その後、基盤サーバ110のサービス順序制御部211は、ステップS405に進む。サービス実行部212は、第二処理要求を受信した場合、ノードに対応するプロセスを実行した後、処理結果を応答する。
【0147】
サービス処理サーバ111がデプロイされたマイクロサービス(実行ファイル)を受け付けた場合に実行する処理は、実施例1と同一である。
【0148】
実施例2によれば、実施例1と同様の効果を奏するとともに、また、サービスを統括するサーバ(基盤サーバ110)の負荷を低減できる。また、一括処理開始ノード157及び一括処理終了ノード158が異なる計算機システムで配置されていても、計算機システムを移動可能なマイクロサービスであれば、一括処理するマイクロサービスをすべて同じ計算機システムに配置して一括処理可能にしてもよい。
【実施例3】
【0149】
実施例3では、処理要求の送信時の処理が異なる。以下、実施例1との差異を中心に実施例3について説明する。
【0150】
実施例3の計算機システムの構成は、実施例1と同一である。実施例3の基盤サーバ110及びサービス処理サーバ111の構成は、実施例1と同一である。また、実施例3の基盤サーバ110及びサービス処理サーバ111が保持する情報のデータ構造は、実施例1と同一である。
【0151】
マイクロサービス配置最適化処理及びサービス処理サーバ111がデプロイされたノード(実行ファイル)を受け付けた場合に実行する処理は、実施例1と同一である。
【0152】
基盤サーバ110がサービスの提供時に実行する処理の流れは、実施例1と同一である。ただし、ステップS403の処理が異なる。
【0153】
図14は、実施例3の基盤サーバ110が処理要求を送信する場合に実行する処理を説明するフローチャートである。以下で説明する処理は、ステップS403において実行される処理である。
【0154】
基盤サーバ110のサービス順序制御部211は、マイクロサービスを解析し(ステップS501)、解析結果に基づいて、マイクロサービスに含まれる繰り返し処理の中に、他のマイクロサービスが含まれるか否かを判定する(ステップS503)。
【0155】
例えば、サービス順序制御部211は、for文に他のマイクロサービスの実行を指示するコードが含まれるか否かを判定する。
【0156】
なお、マイクロサービスの解析は、マイクロサービス配置最適化処理において実行されてもよい。この場合、処理管理情報T100に繰り返し処理に関する情報を格納するフィールドを追加する。ステップS201において、基盤サーバ110のサービス順序制御部211は、当該フィールドにソースコードの解析結果を格納する。
【0157】
マイクロサービスに含まれる繰り返し処理の中に他のマイクロサービスが含まれないと判定された場合、基盤サーバ110のサービス順序制御部211は、第一処理要求をi番目の処理システムに送信する(ステップS505)。その後、基盤サーバ110のサービス順序制御部211はステップS405に進む。ステップS505の処理は、ステップS403の処理と同一である。
【0158】
マイクロサービスに含まれる繰り返し処理の中に他のマイクロサービスが含まれると判定された場合、基盤サーバ110のサービス順序制御部211は、繰り返し処理を非同期通信処理に変更するための情報を含む第三処理要求をi番目の処理システムに送信する(ステップS507)。その後、基盤サーバ110のサービス順序制御部211はステップS405に進む。
【0159】
具体的には、基盤サーバ110のサービス順序制御部211は、入力パラメータ及びマイクロサービスの実行順番と、繰り返し処理に含まれる他のマイクロサービスの名称及び繰り返し数とを含む第三処理要求を送信する。
【0160】
サービス処理サーバ111のサービス実行部212は、当該処理要求を受信した場合、ジョブIDを発行し、基盤サーバ110のサービス順序制御部211に発行したジョブIDを応答する。その後、サービス処理サーバ111のサービス実行部212は、繰り返し処理を実行する。
【0161】
基盤サーバ110のサービス順序制御部211は、ジョブIDを用いて繰り返し処理の進捗状態を把握するための問合せを行う。サービス処理サーバ111のサービス実行部212は、ジョブIDに対する進捗の問合せを受信した場合、現在の進捗を示す値を応答する。
【0162】
実施例3によれば、繰り返し処理によって頻繁に実行されるマイクロサービスが配置された処理システム間のデータの送受信を削減できる。
【実施例4】
【0163】
実施例4では、基盤サーバ110がサービスの提供時に実行する処理が実施例1と異なる。以下、実施例1との差異を中心に実施例4について説明する。
【0164】
実施例4の計算機システムの構成は、実施例1と同一である。実施例4の基盤サーバ110及びサービス処理サーバ111の構成は、実施例1と同一である。また、実施例4の基盤サーバ110及びサービス処理サーバ111が保持する情報のデータ構造は、実施例1と同一である。
【0165】
マイクロサービス配置最適化処理及びサービス処理サーバ111がデプロイされたマイクロサービス(実行ファイル)を受け付けた場合に実行する処理は、実施例1と同一である。
【0166】
図15は、実施例4の基盤サーバ110がサービスの提供時に実行する処理を説明するフローチャートである。
【0167】
基盤サーバ110のサービス順序制御部211は、ステップS401の処理の後、サービス制御システム情報T110を参照して、i番目の処理システムに対応するエントリのオフロードフラグC112が「可」であるか否かを判定する(ステップS441)。
【0168】
i番目の処理システムに対応するエントリのオフロードフラグC112が「可」でないと判定された場合、基盤サーバ110のサービス順序制御部211は、ステップS403に進む。
【0169】
i番目の処理システムに対応するエントリのオフロードフラグC112が「可」であると判定された場合、基盤サーバ110のサービス順序制御部211は、i番目の処理システムに第四処理要求を送信する(ステップS443)。
【0170】
具体的には、基盤サーバ110のサービス順序制御部211は、i番目以降の全ての処理システムにデプロイされたマイクロサービスの実行順番を決定する。基盤サーバ110のサービス順序制御部211は、処理システム及びマイクロサービスの実行順番を対応づけた情報と、i番目の処理システムに入力する入力パラメータとを含む第四処理要求を送信する。
【0171】
i番目以降の処理システムのサービス順序制御部211は、第四処理要求を受信した場合、自サーバにデプロイされたマイクロサービスの実行をサービス実行部212に指示する。また、i番目以降の処理システムのサービス順序制御部211は、図15で示した処理と同様の処理を実行する。ただし、ステップS401では、サーバの順番を決定する代わりに、変数iに(i+1)を設定する。また、基盤サーバ110から直接第四処理要求を受信した処理システムのサービス順序制御部211は、i番目以降の処理システムから得られたマイクロサービスの処理結果を基盤サーバ110に送信する。
【0172】
次に、基盤サーバ110のサービス順序制御部211は、第四処理要求を送信したサーバから処理結果を受信する(ステップS445)。その後、基盤サーバ110のサービス順序制御部211は、ステップS411に進む。
【0173】
図1に示すようにマイクロサービスがデプロイされた場合における図15の処理の具体例について説明する。
【0174】
(1)まず、基盤サーバ110は、ユーザから入力Aを含むサービスの実行要求を受信する。基盤サーバ110のサービス順序制御部211は、基盤システム100、データセンタ101−1、データセンタ101−2の順に処理要求を送信することを決定する。基盤サーバ110のサービス順序制御部211は、基盤サーバ110に第一処理要求を送信する。基盤サーバ110のサービス実行部212は、処理A160を実行し、処理結果として出力Aを出力する。基盤サーバ110のサービス実行部212は、基盤サーバ110のサービス順序制御部211に出力Aを送信する。
【0175】
(2)基盤サーバ110のサービス順序制御部211は、サービス処理サーバ111−1及びマイクロサービス(処理B161、処理C162、処理D163)の実行順番を対応づけた情報、サービス処理サーバ111−2及びマイクロサービス(処理E164、処理F165、処理Z166)の実行順番を対応づけた情報、並びに出力Aを含む第四処理要求をサービス処理サーバ111−1に送信する。
【0176】
(3)サービス処理サーバ111−1のサービス実行部212は、出力Aに基づいて処理B161を実行して出力Bを出力し、出力Bに基づいて処理C162を実行して出力Cを出力し、出力Cに基づいて処理D163を実行して出力Dを出力する。サービス処理サーバ111−1のサービス順序制御部211は、サービス処理サーバ111−2及びマイクロサービス(処理E164、処理F165、処理Z166)の実行順番を対応づけた情報、並びに出力Dを含む第一処理要求を送信する。
【0177】
(4)サービス処理サーバ111−2のサービス実行部212は、出力Dに基づいて処理E164を実行して出力Eを出力し、出力Eに基づいて処理F165を実行して出力Fを出力し、出力Fに基づいて処理Z166を実行して出力Zを出力する。サービス処理サーバ111−2のサービス実行部212は、サービス処理サーバ111−1に出力Zを送信する。
【0178】
(5)サービス処理サーバ111−1のサービス順序制御部211は、基盤サーバ110に出力Zを送信する。なお、サービス処理サーバ111−1のサービス順序制御部211は、サービス処理サーバ111−1及びサービス処理サーバ111−2にデプロイされたマイクロサービスの処理結果から一つの出力を生成してもよい。
【0179】
(6)基盤サーバ110のサービス順序制御部211は、ユーザに応答として出力Zを出力する。
【0180】
実施例4によれば、処理システムがマイクロサービスを実行するたびに基盤サーバ110と通信を行う必要がないため、よりサービスの実行速度を向上でき、また、通信リソースの消費量をより削減できる。
【実施例5】
【0181】
ユースケース及び要件又は開発者のスキル等に応じて、提供するノード(マイクロサービス)の単位が異なってくる。これは、提供すべきAPIの単位が異なることを意味し、一つのマイクロサービスにどれだけの処理を実行させるかという問題に帰着する。
【0182】
そこで、サービスを小さい単位のマイクロサービス(小規模の処理)に分解し、小さい単位のマイクロサービスを組み合わせて適切なマイクロサービス(中規模又は大規模の処理)を提供することが考えられる。しかし、小さい単位のマイクロサービスから構成されるサービスでは、マイクロサービス間の通信が頻繁に発生するため、サービスの実行速度の低下とネットワークリソースの消費量の増大という問題がある。
【0183】
そこで、実施例1から実施例4で示した発明を用いることによって前述の課題を解決できる。
【0184】
実施例5では、サービス順序制御部211は、マイクロサービス配置最適化処理が完了した後、当該処理の結果に基づいて、複数のマイクロサービスを組み合わせたマイクロサービスを生成する。例えば、サービス順序制御部211は、処理システム間の通信が発生しないマイクロサービスの組合せを新たなマイクロサービスとして生成する。また、開発基盤処理部210は、サービスを生成する場合に、新たに生成されたマイクロサービスをGUI600に表示する。
【0185】
複数のマイクロサービスを組み合わせたマイクロサービスから構成されるサービスでは、最小のマイクロサービスを考慮してマイクロサービス配置最適化処理及びマイクロサービスが実行される。具体的には、一つのマイクロサービス(ノード)を構成する小さい単位のマイクロサービス(ノード)を対象とした処理となる。
【0186】
図16は、実施例5の開発基盤処理部210によって提示されるポータル1600の一例を示す図である。
【0187】
ポータル1600は、ユーザ(開発者)が所望するAPIを検索するためのGUIである。ポータル1600は、キーワード入力欄1610及び検索結果表示欄1620を含む。
【0188】
キーワード入力欄1610は、APIの検索に用いられるキーワードを入力する欄である。検索結果表示欄1620は、検索結果を表示する欄である。検索結果表示欄1620には、例えば、APIを提供する処理サーバの情報が表示される。
【0189】
ユーザは、処理サーバを開発基盤120にドラッグアンドドロップし、又は、マイクロサービスを表すJSONを開発基盤120にダウンロードする。これによって、開発基盤120上でAPIを使用することが可能となる。
【0190】
処理B−C1611及び処理D−F1612は、複数の処理をまとめたマイクロサービスである。
【0191】
なお、開発基盤処理部210は、ユーザ認証処理を実行した後に、ポータル1600を表示するようにしてもよい。また、開発基盤処理部210は、ユーザごとに検索可能なマイクロサービスが異なるようにしてもよい。
【0192】
図17A図17B、及び図17Cは、実施例5の開発基盤処理部210が提供するGUIの一例を示す図である。
【0193】
GUI600のワークスペース620には、ポータル1600を用いて検索されたマイクロサービスに対応する処理B−C1611及び処理D−F1612が表示される。
【0194】
図17Aに示すGUI600において、ワークスペース620に表示された処理B−C1611をダブルクリックした場合、ワークスペース620は図17Bに示すような表示に切り替わる。
【0195】
また、図17Cに示すようなGUI600も考えられる。図17CのGUI600には、ワークスペース620にタブが含まれる。図17Cでは全体タブ及び詳細タブが含まれる。
【0196】
ユーザが全体タブを操作した場合、ワークスペース620には、図17AのGUI600のワークスペース620に示すようなサービスを構成するマイクロサービスのフローが表示される。ユーザが詳細タブを操作した場合、図17CのGUI600のワークスペース620には、複数のマイクロサービスから構成されるマイクロサービスである処理B−C1611及び処理D−F1612のそれぞれの詳細なノードの構成が表示される。なお、マイクロサービスごとにタブを設けてもよい。
【0197】
実施例5によれば、最小単位のマイクロサービスのデプロイ結果に基づいて、ユーザごとに最適なマイクロサービスを生成することができる。
【0198】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。また、例えば、上記した実施例は本発明を分かりやすく説明するために構成を詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、各実施例の構成の一部について、他の構成に追加、削除、置換することが可能である。
【0199】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、本発明は、実施例の機能を実現するソフトウェアのプログラムコードによっても実現できる。この場合、プログラムコードを記録した記憶媒体をコンピュータに提供し、そのコンピュータが備えるプロセッサが記憶媒体に格納されたプログラムコードを読み出す。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施例の機能を実現することになり、そのプログラムコード自体、及びそれを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、CD−ROM、DVD−ROM、ハードディスク、SSD(Solid State Drive)、光ディスク、光磁気ディスク、CD−R、磁気テープ、不揮発性のメモリカード、ROMなどが用いられる。
【0200】
また、本実施例に記載の機能を実現するプログラムコードは、例えば、アセンブラ、C/C++、perl、Shell、PHP、Java(登録商標)等の広範囲のプログラム又はスクリプト言語で実装できる。
【0201】
さらに、実施例の機能を実現するソフトウェアのプログラムコードを、ネットワークを介して配信することによって、それをコンピュータのハードディスクやメモリ等の記憶手段又はCD−RW、CD−R等の記憶媒体に格納し、コンピュータが備えるプロセッサが当該記憶手段や当該記憶媒体に格納されたプログラムコードを読み出して実行するようにしてもよい。
【0202】
上述の実施例において、制御線や情報線は、説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。全ての構成が相互に接続されていてもよい。
【符号の説明】
【0203】
100 基盤システム
101 データセンタ
102 ネットワーク
110 基盤サーバ
111 サービス処理サーバ
120 開発基盤
120 基盤サーバ
120 開発環境
121 実行基盤
T100 処理管理情報
T110 サービス制御システム情報
200、300 CPU
201、301 メモリ
202、302 記憶装置
203、303 ネットワークインタフェース
204、304 内部バス
600 GUI
610 パレット
620 ワークスペース
630 コンソール
640 デプロイボタン
1600 ポータル
1610 キーワード入力欄
1620 検索結果表示欄
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12A
図12B
図13
図14
図15
図16
図17A
図17B
図17C