(57)【要約】      （修正有）【課題】マイクロサービスアーキテクチャを用いて開発されたサービスの実行速度が向上し、また、通信リソースの消費量が削減できるシステム及びサービス制御方法を提供する。【解決手段】複数のマイクロサービスから構成されるサービスを提供するシステムであって、システムは、ネットワークを介して接続される複数の計算機システムに接続される。複数のマイクロサービスを実行可能な計算機システムは、複数のマイクロサービスの実行順番を制御するサービス順序制御部を有する。サービス順序制御部は、データに対して実行する複数のマイクロサービスと、その実行順番と、マイクロサービスを実行させる計算機システムと、を含む処理管理情報を作成し、処理管理情報に基づいて、マイクロサービスを実行させる計算機システムに、一つ又は実行順番が連続する複数のマイクロサービスの実行要求を送信する。【選択図】図１
2019211955.tif 000002
【特許請求の範囲】
【請求項１】
複数のマイクロサービスから構成されるサービスを提供するシステムであって、
前記システムは、ネットワークを介して接続される複数の計算機システムに接続され、
前記複数の計算機システムの各々は、前記複数のマイクロサービスを実行可能な計算機システムを有し、
前記システムは、前記複数のマイクロサービスの実行順番を制御するサービス順序制御部を有し、
前記サービス順序制御部は、
データに対して実行する複数のマイクロサービスと、その実行順番と、前記マイクロサービスを実行させる計算機システムと、を含む処理管理情報を作成し、
前記処理管理情報に基づいて、前記マイクロサービスを実行させる前記計算機システムに、一つ又は実行順番が連続する複数の前記マイクロサービスの実行要求を送信して前記サービスを実行させ、
前記実行順番が連続する複数のマイクロサービスの実行要求を受信した前記計算機システムは、前記複数のマイクロサービスを実行完了した場合に処理データを送信することを特徴とするシステム。
【請求項２】
請求項１に記載のシステムであって、
前記複数の計算機システムの各々は、前記マイクロサービスを実行可能な計算機システム一つ又は複数含み、
前記サービス順序制御部は、
マイクロサービスの実行における通信が少なくなるように、前記マイクロサービスを実行させる計算機システムを決定して前記処理管理情報を作成し、
前記処理管理情報に基づいて、前記マイクロサービスを前記計算機システムに配置することを特徴とするシステム。
【請求項３】
請求項１に記載のシステムであって、
前記複数の計算機システムの各々は、前記マイクロサービスを実行可能な計算機システム一つ又は複数含み、
前記サービス順序制御部は、
複数のマイクロサービスを一括で処理する一括処理を行えるように、前記マイクロサービスを実行させる計算機システムを決定して前記処理管理情報を作成し、
前記処理管理情報に基づいて、前記マイクロサービスを前記計算機システムに配置することを特徴とするシステム。
【請求項４】
請求項１に記載のシステムであって、
前記実行順番が連続する複数のマイクロサービスに、前記マイクロサービスを繰り返し処理する繰り返し処理が含まれている場合、前記サービス順序制御部は、当該処理の通信を非同期通信に変更し、
前記繰り返し処理を行う計算機システムは、前記処理を繰り返し行い、前記サービス順序制御部から問い合わせを受信した場合に、前記繰り返し処理にかかる応答を行うことを特徴とするシステム。
【請求項５】
請求項１に記載のシステムであって、
前記サービス順序制御部は、前記マイクロサービスを行う前記計算機システムに、前記一つ又は実行順番が連続する複数のマイクロサービスの実行要求と、入力データとを送信し、その処理結果のデータを受信することを繰り返すことで、全サービスを実行することを特徴とするシステム。
【請求項６】
請求項１に記載のシステムであって、
前記サービス順序制御部は、前記マイクロサービスを行う処理システムとしての前記計算機システムに、前記一つ又は実行順番が連続する複数のマイクロサービスの実行要求と、入力データとを送信し、その処理結果のデータを次の処理を行う計算機システムに送信させることを繰り返すことで、全サービスを実行することを特徴とするシステム。
【請求項７】
複数のマイクロサービスから構成されるサービスを提供するシステムが実行するサービス制御方法であって、
前記システムは、ネットワークを介して接続される複数の計算機システムに接続され、
前記複数の計算機システムの各々は、前記複数のマイクロサービスを実行可能な計算機システムを有し、
前記システムは、前記複数のマイクロサービスの実行順番を制御するサービス順序制御部を有し、
前記サービス制御方法は、
前記サービス順序制御部が、データに対して実行する複数のマイクロサービスと、その実行順番と、前記マイクロサービスを実行させる計算機システムと、を含む処理管理情報を作成する第１のステップと、
前記サービス順序制御部が、前記処理管理情報に基づいて、前記マイクロサービスを実行させる前記計算機システムに、一つ又は実行順番が連続する複数の前記マイクロサービスの実行要求を送信して前記サービスを実行させる第２のステップと、
前記実行順番が連続する複数のマイクロサービスの実行要求を受信した前記計算機システムが、前記複数のマイクロサービスを実行完了した場合に処理データを送信する第３のステップと、を含むことを特徴とするサービス制御方法。
【請求項８】
請求項７に記載のサービス制御方法であって、
前記複数の計算機システムの各々は、前記マイクロサービスを実行可能な計算機システム一つ又は複数含み、
前記第１のステップは、前記サービス順序制御部が、マイクロサービスの実行における通信が少なくなるように、前記マイクロサービスを実行させる計算機システムを決定して前記処理管理情報を作成するステップを含み、
前記第２のステップは、前記サービス順序制御部が、前記処理管理情報に基づいて、前記マイクロサービスを前記計算機システムに配置するステップを含むことを特徴とするサービス制御方法。
【請求項９】
請求項７に記載のサービス制御方法であって、
前記複数の計算機システムの各々は、前記マイクロサービスを実行可能な計算機システム一つ又は複数含み、
前記第１のステップは、前記サービス順序制御部が、複数のマイクロサービスを一括で処理する一括処理を行えるように、前記マイクロサービスを実行させる計算機システムを決定して前記処理管理情報を作成するステップを含み、
前記第２のステップは、前記サービス順序制御部が、前記処理管理情報に基づいて、前記マイクロサービスを前記計算機システムに配置するステップを含むことを特徴とするサービス制御方法。
【請求項１０】
請求項７に記載のサービス制御方法であって、
前記第１のステップは、前記サービス順序制御部は、前記実行順番が連続する複数のマイクロサービスに、前記マイクロサービスを繰り返し処理する繰り返し処理が含まれている場合、当該処理の通信を非同期通信に変更するステップを含み、
前記第３のステップは、前記繰り返し処理を行う計算機システムが、前記処理を繰り返し行い、前記サービス順序制御部から問い合わせを受信した場合に、前記繰り返し処理にかかる応答を行うステップを含むことを特徴とするサービス制御方法。
【請求項１１】
請求項７に記載のサービス制御方法であって、
前記サービス順序制御部が、前記マイクロサービスを行う前記計算機システムに、前記一つ又は実行順番が連続する複数のマイクロサービスの実行要求と、入力データとを送信し、その処理結果のデータを受信することを繰り返すことで、全サービスを実行することを特徴とするサービス制御方法。
【請求項１２】
請求項７に記載のサービス制御方法であって、
前記サービス順序制御部が、前記マイクロサービスを行う処理システムとしての前記計算機システムに、前記一つ又は実行順番が連続する複数のマイクロサービスの実行要求と、入力データとを送信し、その処理結果のデータを次の処理を行う計算機システムに送信させることを繰り返すことで、全サービスを実行することを特徴とするサービス制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロサービスを組み合わせたサービスの開発及び実行を行うシステムに関する。
【背景技術】
【０００２】
近年、個別に開発された小さなサービスを組み合わせて、一つのサービスを提供する開発手法が注目を浴びている。これらは、マイクロサービス、ＳａａＳ（Ｓｏｆｔｗａｒｅ  ＡＳ  ａ  ｓｅｒｖｉｃｅ）、ＳＯＡ（Ｓｅｒｖｉｃｅ  Ｏｒｉｅｎｔｅｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）等として知られている。以下の説明では、開発手法を表すとき、マイクロサービスアーキテクチャと記載し、マイクロサービスアーキテクチャを用いて開発されたサービス群をマイクロサービスと記載する。
【０００３】
マイクロサービスアーキテクチャでは、複数のマイクロサービスを組み合わせてサービスが開発される。開発されたサービスは他のサービスを構成するマイクロサービスとして組み込むことができる。
【０００４】
マイクロサービスアーキテクチャを用いて開発されたサービスは、顧客サイトで構築されたプライベートクラウド及び顧客サイト外のパブリッククラウド等で、ネットワークを介して処理される。マイクロサービスアーキテクチャを用いたサービス開発の容易にするために、マイクロサービスアーキテクチャが提供するＡＰＩ同士を容易につなげる開発プラットフォームＰａａＳ（Ｐｌａｔｆｏｒｍ  ＡＳ  ａ  Ｓｅｒｖｉｃｅ）を提供することが主流となっている。
【０００５】
例えば、特許文献１では、各種のクラウド上のマイクロサービスを、インターコネクションプラットフォームでＡＰＩ同士をつなげて、サービスを提供する技術が開示されている。また、マイクロサービス化した処理を、ＧＵＩベースで処理サーバを配置し、処理サーバ同士をつなげることで、アプリを容易に開発する基盤を提供する方法が広まっている。例えば、ＯＳＳとして提供されるＮｏｄｅ−ＲＥＤなどである。Ｎｏｄｅ−ＲＥＤでは、ノードと呼ばれる、特定の機能を実現する処理要素を接続して、一つのフロー（マイクロサービス）を生成する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】米国特許出願公開第２０１６／０１２４７４２号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００７】
マイクロサービスアーキテクチャを用いて開発されたサービスは、サービスを構成するマイクロサービス毎に処理が実行される。そのため、ネットワークを介して接続されるシステムに複数のマイクロサービスを配置した場合、マイクロサービス間の通信によってサービスの実行速度が低下し、また、通信リソースの消費量が増大する。
【課題を解決するための手段】
【０００８】
本願において開示される発明の代表的な一例を示せば以下の通りである。すなわち、複数のマイクロサービスから構成されるサービスを提供するシステムであって、前記システムは、ネットワークを介して接続される複数の計算機システムに接続され、前記複数の計算機システムの各々は、前記複数のマイクロサービスを実行可能な計算機システムを有し、前記システムは、前記複数のマイクロサービスの実行順番を制御するサービス順序制御部を有し、前記サービス順序制御部は、データに対して実行する複数のマイクロサービスと、その実行順番と、前記マイクロサービスを実行させる計算機システムと、を含む処理管理情報を作成し、前記処理管理情報に基づいて、前記マイクロサービスを実行させる前記計算機システムに、一つ又は実行順番が連続する複数の前記マイクロサービスの実行要求を送信して前記サービスを実行させ、前記実行順番が連続する複数のマイクロサービスの実行要求を受信した前記計算機システムは、前記複数のマイクロサービスを実行完了した場合に処理データを送信することを特徴とする。
【発明の効果】
【０００９】
本発明の一形態によれば、マイクロサービスアーキテクチャを用いて開発されたサービスの実行速度が向上し、また、通信リソースの消費量が削減できる。上記した以外の課題、構成及び効果は、以下の実施例の説明により明らかにされる。
【図面の簡単な説明】
【００１０】
【図１】実施例１の計算機システムの構成例を示す図である。
【図２】実施例１の基盤サーバの構成例を示すブロック図である。
【図３】実施例１のサービス処理サーの構成例を示すブロック図である。
【図４】実施例１の処理管理情報のデータ構造の一例を示す図である。
【図５】実施例１のサービス制御システム情報のデータ構造の一例を示す図である。
【図６】実施例１の開発基盤処理部が提供するＧＵＩの一例を示す図である。
【図７】実施例１の基盤サーバが実行する処理を説明するフローチャートである。
【図８】実施例１の基盤サーバが実行するマイクロサービス配置最適化処理を説明するフローチャートである。
【図９】実施例１のサービス処理サーバがデプロイされたマイクロサービス（実行ファイル）を受け付けた場合に実行する処理を説明するフローチャートである。
【図１０】実施例１の基盤サーバがサービスの提供時に実行する処理を説明するフローチャートである。
【図１１】実施例２の開発基盤処理部が提供するＧＵＩの一例を示す図である。
【図１２Ａ】実施例２の基盤サーバが実行するマイクロサービス配置最適化処理を説明するフローチャートである。
【図１２Ｂ】実施例２の基盤サーバが実行するマイクロサービス配置最適化処理を説明するフローチャートである。
【図１３】実施例２の基盤サーバがサービスの提供時に実行する処理を説明するフローチャートである。
【図１４】実施例３の基盤サーバが処理要求を送信する場合に実行する処理を説明するフローチャートである。
【図１５】実施例４の基盤サーバがサービスの提供時に実行する処理を説明するフローチャートである。
【図１６】実施例５の開発基盤処理部によって提示されるポータルの一例を示す図である。
【図１７Ａ】実施例５の開発基盤処理部が提供するＧＵＩの一例を示す図である。
【図１７Ｂ】実施例５の開発基盤処理部が提供するＧＵＩの一例を示す図である。
【図１７Ｃ】実施例５の開発基盤処理部が提供するＧＵＩの一例を示す図である。
【発明を実施するための形態】
【００１１】
本明細書では、「ａａａテーブル」の表現にて各種情報を説明することがあるが、各種情報は、テーブル以外のデータ構造で表現されていてもよい。データ構造に依存しないことを示すために「ａａａテーブル」を「ａａａ情報」と呼ぶこともできる。
【００１２】
本明細書では、各テーブルの構成は一例であり、一つのテーブルは、二以上のテーブルに分割されてもよいし、二つ以上のテーブルの全部又は一部が一つのテーブルであってもよい。
【００１３】
本明細書では、「インタフェース」は、一つ以上の通信インタフェースデバイスを含んでよい。一つ以上の通信インタフェースデバイスは、ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）及びＨＢＡ（Ｈｏｓｔ  Ｂｕｓ  Ａｄａｐｔｅｒ）等の一つ以上の同種の通信インタフェースデバイスであってもよいし、二つ以上の異種の通信インタフェースデバイスであってもよい。
【００１４】
本明細書では、プログラムを主語として処理を説明する場合、プロセッサ及びＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）等の演算装置及び演算装置を有する計算機が処理を実行していることを示す。
【００１５】
本明細書では、ストレージシステム等が有するコントローラは、演算装置、又は、コントローラが行う処理の一部若しくは全部を行うハードウェア回路を含んでもよい。
【００１６】
本明細書では、プログラムは、予め計算機に格納されていてもよいし、プログラムソースから計算機にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ又はコンピュータ読取可能な（例えば非一時的な）記憶メディアであってもよい。また、以下の説明において、二つ以上のプログラムが一つのプログラムとして実現されてもよいし、一つのプログラムが二つ以上のプログラムとして実現されてもよい。
【００１７】
本明細書では、要素の識別情報の一例としてＩＤを記載しているが、ＩＤの代わりに他の識別情報を使用してもよいし、ＩＤとともに他の識別情報を使用してもよい。
【００１８】
本明細書では、同種の要素を区別しない場合、同じ参照符号を用い、同種の要素を区別する場合、同種の識別可能な参照符号を用いる。
【００１９】
本明細書では、分散システムは、一つ以上の物理的な計算機を含む。一つ以上の物理的な計算機は、物理的なサーバ及び物理的なストレージの少なくともいずれかを含んでよい。物理的な計算機は、ＶＭ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）等の仮想的な計算機を実行してもよいし、ＳＤｘ（Ｓｏｆｔｗａｒｅ−Ｄｅｆｉｎｅｄ  ａｎｙｔｈｉｎｇ）を実行してもよい。ＳＤｘとしては、例えば、仮想的なストレージ装置の一例であるＳＤＳ（Ｓｏｆｔｗａｒｅ  Ｄｅｆｉｎｅｄ  Ｓｔｏｒａｇｅ）又はＳＤＤＣ（Ｓｏｆｔｗａｒｅ−ｄｅｆｉｎｅｄ  Ｄａｔａｃｅｎｔｅｒ）を採用することができる。
【実施例１】
【００２０】
図１は、実施例１の計算機システムの構成例を示す図である。
【００２１】
計算機システムは、基盤システム１００及び複数のデータセンタ１０１−１、１０１−２から構成される。基盤システム１００及びデータセンタ１０１−１、１０１−２は、ネットワーク１０２を介して互いに接続される。ネットワーク１０２は、例えば、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＳＡＮ（Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネット、公衆回線、及び専用回線等である。ネットワーク１０２の接続方式は有線及び無線のいずれでもよい。
【００２２】
本明細書では、データセンタ１０１−１、１０１−２を区別しない場合、データセンタ１０１と記載する。また、基盤システム１００及びデータセンタ１０１を区別しない場合、処理システムと記載する。
【００２３】
計算機システムは、複数のマイクロサービスの組合せによって実現されるサービスを提供する。マイクロサービスは、少なくとも一つの機能を実現する処理から構成される。本明細書では、特定の機能を実現する処理要素をノードと記載する。
【００２４】
ここで、マイクロサービスアーキテクチャにおけるマイクロサービスのデプロイ方式について説明する。マイクロサービスのデプロイ方式としては、複数のマイクロサービスを一つの処理システムにデプロイする方式と、複数のマイクロサービスの各々を分散するように複数の処理システムをデプロイする方式とがある。本明細書の「デプロイ」は、サービスが実行可能な状態で実行環境に配置することを表す。
【００２５】
前者の方式は人工知能等を利用したサービスが考えられる。人工知能は、例えば、生のデータを用いた学習によってモデルを構築し、当該モデルに基づいてデータの判別及び行動の決定等を行う。学習に使用するデータが格納される計算機（サーバ）にマイクロサービスを実行させて、サービスを提供する。後者の方式は複数の処理システムにマイクロサービスを分散させることによってサービスの性能の向上等を実現する。
【００２６】
基盤システム１００は、マイクロサービスの開発基盤１２０を実現する計算機リソース及びソフトウェアを提供するシステムである。基盤システム１００では、マイクロサービスの実行基盤１２１も提供される。データセンタ１０１は、マイクロサービスの実行基盤１２１を提供するシステムである。
【００２７】
基盤システム１００は、基盤を提供するシステムであり、複数の基盤サーバ１１０から構成される。基盤サーバ１１０の構成については図２を用いて説明する。
【００２８】
データセンタ１０１は、データを管理し、また、データを用いた処理を実行するシステムであり、複数のサービス処理サーバ１１１から構成される。データセンタ１０１−１にはデータＡ１７０が格納され、データセンタ１０１−２にはデータＢ１７１が格納される。サービス処理サーバ１１１の構成は図３を用いて説明する。
【００２９】
本明細書では、「基盤」とは、計算機リソース及び特定の機能を提供するプログラム及びＡＰＩを含むものとする。
【００３０】
本明細書では、サービス処理サーバ１１１−１、１１１−２を区別しない場合、サービス処理サーバ１１１と記載する。また、基盤サーバ１１０及びサービス処理サーバ１１１を区別しない場合、サーバと記載する。
【００３１】
基盤サーバ１１０は、開発基盤１２０及び実行基盤１２１を提供する機能を有する。サービス処理サーバ１１１は、実行基盤１２１を提供する機能を有する。開発基盤１２０はマイクロサービスを開発するための基盤である。実行基盤１２１はマイクロサービスを実行するための基盤である。
【００３２】
実施例１では、マイクロサービスを表す処理Ａ、処理Ｂ、処理Ｃ、処理Ｄ、処理Ｅ、処理Ｆ、及び処理Ｚから構成されるサービスが提供されるものとする。説明の簡単のために、一つの処理が一つのノードに対応するものとする。
【００３３】
なお、処理Ａ、処理Ｂ、処理Ｃ、処理Ｄ、処理Ｅ、処理Ｆ、及び処理Ｚの順で処理が実行されるものとする。開発基盤１２０上の処理Ａ１５０、処理Ｂ１５１、処理Ｃ１５２、処理Ｄ１５３、処理Ｅ１５４、処理Ｆ１５５、及び処理Ｚ１５６は、ソースコード等の形式のデータとして扱われる。また、実行基盤１２１上の処理Ａ１６０、処理Ｂ１６１、処理Ｃ１６２、処理Ｄ１６３、処理Ｅ１６４、処理Ｆ１６５、及び処理Ｚ１６６は、実行形式のファイル等のデータとして扱われる。
【００３４】
実施例１の計算機システムでは、開発基盤１２０を用いて開発されたサービスを構成するマイクロサービスが実行形式のデータに変換され、基盤システム１００上の実行基盤１２１にデプロイされる。
【００３５】
本明細書では、開発基盤１２０を用いたサービスの開発において、各マイクロサービスのデプロイ先は以下のように設定されているものとする。処理Ａ１６０、処理Ｃ１６２、及び処理Ｆ１６５は、基盤サーバ１１０の実行基盤１２１にデプロイされる。処理Ｂ１６１及び処理Ｄ１６３は、データセンタ１０１−１の実行基盤１２１にデプロイされる。処理Ｅ１６４及び処理Ｚ１６６は、データセンタ１０１−２の実行基盤１２１にデプロイされる。
【００３６】
また、本明細書では、処理Ａ１６０は、基盤システム１００の基盤サーバ１１０のみが実行できるものとし、処理Ｂ１６１及び処理Ｄ１６３は、データセンタ１０１−１のサービス処理サーバ１１１−１のみが実行できるものとし、処理Ｅ及び処理Ｚ１６６は、データセンタ１０１−２のサービス処理サーバ１１１−２のみが実行できるものとする。処理Ｃ１６２及び処理Ｆ１６５については、実行するサーバは限定されない。
【００３７】
従来の方式では、デフォルトの設定にしたがってマイクロサービスが処理システムにデプロイされる。この場合、サービスの実行にあたって、各処理システムの基盤サーバ１１０、サービス処理サーバ１１１−１、及びサービス処理サーバ１１１−２は、ネットワーク１０２を介した通信によってデータの送受信を行う。したがって、サービスの実行速度の遅延及び通信リソースの消費量の増大が問題となる。
【００３８】
実施例１のシステムでは、基盤システム１００上の実行基盤１２１では、マイクロサービスの実行順番が解析され、解析結果に基づいて、上記のような問題を解決できるようにマイクロサービスをデプロイする処理システムが決定される。
【００３９】
図１に示す例では、処理Ａ１６０は基盤サーバ１１０の実行基盤１２１にデプロイされ、処理Ｂ１６１、処理Ｃ１６２、及び処理Ｄ１６３はサービス処理サーバ１１１−１の実行基盤１２１にデプロイされ、処理Ｅ１６４、処理Ｆ１６５、及び処理Ｚ１６６はサービス処理サーバ１１１−２の実行基盤１２１にデプロイされる。
【００４０】
図２は、実施例１の基盤サーバ１１０の構成例を示すブロック図である。
【００４１】
基盤サーバ１１０は、ＣＰＵ２００、メモリ２０１、記憶装置２０２、及びネットワークインタフェース２０３を有する。各ハードウェアは内部バス２０４を介して互いに接続される。
【００４２】
ＣＰＵ２００は、メモリ２０１に格納されるプログラムを実行する。ＣＰＵ２００がプログラムにしたがって処理を実行することによって、基盤サーバ１１０の特定の機能を実現する機能部（モジュール）として動作する。
【００４３】
メモリ２０１は、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等の揮発性の記憶素子又はＳｔｏｒａｇｅ  Ｃｌａｓｓ  Ｍｅｍｏｒｙ等の不揮発性の記憶素子から構成される記憶装置である。メモリ２０１は、ＣＰＵ２００が実行するプログラム及びプログラムが使用する情報を格納する。メモリ２０１は、ユーザデータを一時的に格納するキャッシュエリア、プログラムが使用するワークエリアとしても用いられる。
【００４４】
実施例１のメモリ２０１は、開発基盤処理部２１０、サービス順序制御部２１１、及びサービス実行部２１２を実現するプログラムを格納する。また、メモリ２０１は、処理管理情報Ｔ１００及びサービス制御システム情報Ｔ１１０を格納する。
【００４５】
開発基盤処理部２１０は、開発基盤１２０を実現する各種機能を提供する。サービス順序制御部２１１は、マイクロサービスの最適なデプロイ先となる処理システムを決定し、実行順番を含む処理要求を処理システムに送信する。また、サービス順序制御部２１１は、デプロイされたマイクロサービスの処理システム内のデプロイ先となるサーバを決定する。サービス実行部２１２は、実行基盤１２１を実現する各種機能を提供する。また、サービス実行部２１２は、デプロイされたマイクロサービスを実行する。
【００４６】
処理管理情報Ｔ１００は、マイクロサービスを管理するための情報であり、マイクロサービスのデプロイ時に生成される。処理管理情報Ｔ１００のデータ構造については図４を用いて説明する。サービス制御システム情報Ｔ１１０は、マイクロサービスを実行するサーバを制御するための情報であり、予め、基盤サーバ１１０に設定される。サービス制御システム情報Ｔ１１０のデータ構造については図５を用いて説明する。
【００４７】
記憶装置２０２は、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）及びＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記憶装置である。記憶装置２０２は、データを永続的に格納する。
【００４８】
プログラム及び情報は、メモリ２０１に格納されているものとして説明しているが、記憶装置２０２に格納されてもよい。この場合、ＣＰＵ２００が記憶装置２０２からプログラム及び情報を読み出して、メモリ２０１上にロードする。
【００４９】
ネットワークインタフェース２０３は、ネットワークを介して他の装置と接続するためのインタフェースである。
【００５０】
なお、基盤サーバ１１０は、キーボード、マウス、及びタッチパネル等の入力装置、並びに、ディスプレイ及びプリンタ等の出力装置を有してもよい。
【００５１】
図３は、実施例１のサービス処理サーバ１１１の構成例を示すブロック図である。
【００５２】
サービス処理サーバ１１１は、ＣＰＵ３００、メモリ３０１、記憶装置３０２、及びネットワークインタフェース３０３を有する。各ハードウェアは内部バス３０４を介して互いに接続される。
【００５３】
ＣＰＵ３００、メモリ３０１、記憶装置３０２、及びネットワークインタフェース３０３は、ＣＰＵ２００、メモリ２０１、記憶装置２０２、及びネットワークインタフェース２０３と同様のハードウェアである。
【００５４】
メモリ３０１は、サービス順序制御部２１１及びサービス実行部２１２を実現するプログラムを格納し、また、処理管理情報Ｔ１００及びサービス制御システム情報Ｔ１１０を格納する。なお、処理管理情報Ｔ１００には、サービス処理サーバ１１１にデプロイされたマイクロサービスに関連する情報が格納される。
【００５５】
図４は、実施例１の処理管理情報Ｔ１００のデータ構造の一例を示す図である。
【００５６】
処理管理情報Ｔ１００は、処理順番Ｃ１０１、処理名Ｃ１０２、配置変更フラグＣ１０３、処理システム情報Ｃ１０４、及び変更処理システム情報Ｃ１０５から構成されるエントリを含む。一つのエントリが一つのマイクロサービスに対応する。
【００５７】
処理順番Ｃ１０１は、マイクロサービスの実行順番を格納するフィールドである。処理名Ｃ１０２は、マイクロサービスの名称を格納するフィールドである。処理名Ｃ１０２は、マイクロサービスの名称の代わりに、マイクロサービスに付与されたＩＤ等を格納してもよい。
【００５８】
配置変更フラグＣ１０３は、マイクロサービスのデプロイ先となる処理システムを変更できるか否かを示すフラグを格納するフィールドである。配置変更フラグＣ１０３には、マイクロサービスのデプロイ先となる処理システムを変更できることを示す「可」又はマイクロサービスのデプロイ先となる処理システムを変更できないことを示す「否」のいずれかが格納される。
【００５９】
処理システム情報Ｃ１０４は、マイクロサービスのデフォルトのデプロイ先となる処理システムへアクセスするための情報を格納するフィールドである。例えば、各サーバがｈｔｔｐプロトコルに基づいてリクエスト及び応答を送受信する場合、処理システム情報Ｃ１０４にはＵＲＬが格納される。
【００６０】
変更処理システム情報Ｃ１０５は、サービス順序制御部２１１によって変更されたマイクロサービスのデプロイ先となる処理システムへアクセスするための情報を格納するフィールドである。なお、処理システムが変更されていないマイクロサービスに対応するエントリの変更処理システム情報Ｃ１０５は空欄となる。
【００６１】
処理名Ｃ１０２、配置変更フラグＣ１０３、処理システム情報Ｃ１０４に格納される値は、マイクロサービスを定義するソースコード又はマイクロサービスの実行ファイルのメタデータに含まれる。処理順番Ｃ１０１は、開発基盤１２０から実行基盤１２１へマイクロサービスがデプロイ（コンパイル）されるときに決定される。なお、変更処理システム情報Ｃ１０５は、サービス順序制御部２１１の処理結果に基づいて更新される。
【００６２】
なお、開発基盤１２０において独自のマイクロサービス（ノード）が開発された場合、当該マイクロサービスは、配置変更フラグＣ１０３が「否」に設定される。このとき、変更処理システム情報Ｃ１０５には、デプロイ先となるサーバがマイクロサービスを開発した基盤サーバ１１０であることを示す「Ｌｏｃａｌ  Ｎｏｄｅ」が格納されてもよい。
【００６３】
図５は、実施例１のサービス制御システム情報Ｔ１１０のデータ構造の一例を示す図である。
【００６４】
サービス制御システム情報Ｔ１１０は、サービス順序制御部情報Ｃ１１１及びオフロードフラグＣ１１２から構成されるエントリを含む。一つのエントリが一つのサーバに含まれるサービス順序制御部２１１に対応する。
【００６５】
サービス順序制御部情報Ｃ１１１は、マイクロサービスの実行順番を制御するサービス順序制御部２１１を示す情報を格納するフィールドである。サービス順序制御部情報Ｃ１１１には、例えば、サーバを示すＵＲＬのドメイン名の後に「Ｃｏｎｔｒｏｌ」等の制御名を付与した値が格納される。
【００６６】
オフロードフラグＣ１１２は、サービス順序制御部情報Ｃ１１１に対応する処理システムにデプロイされた全てのマイクロサービスが完了した後に、最後に実行したマイクロサービスの次のマイクロサービスがデプロイされた処理システムに処理要求を送信するか否かを示すフラグを格納するフィールドである。本明細書では、前述した処理をオフロード処理と記載する。オフロードフラグＣ１１２には、オフロード処理を許可することを示す「可」又はオフロード処理を許可しないことを示す「否」のいずれかが格納される。
【００６７】
なお、サービス制御システム情報Ｔ１１０を用いた処理の詳細は実施例４で説明する。
【００６８】
図６は、実施例１の開発基盤処理部２１０が提供するＧＵＩの一例を示す図である。
【００６９】
開発基盤処理部２１０は、サービスを開発する場合に、図６に示すようなＧＵＩ６００をユーザに対して表示する。ＧＵＩ６００は、パレット６１０、ワークスペース６２０、コンソール６３０、及びデプロイボタン６４０から構成される。
【００７０】
パレット６１０は、マイクロサービスを表示する欄である。パレット６１０には、マイクロサービスを表すアイコンが表示される。ワークスペース６２０は、サービスを実現するマイクロサービスのフローを構成するための欄である。コンソール６３０は、マイクロサービスの処理結果の出力及びデフォルトのサーバの情報等の属性を設定し、また表示する欄である。デプロイボタン６４０は、ワークスペース６２０を用いて設定されたマイクロサービスのフローをデプロイするための操作ボタンである。
【００７１】
ユーザは、パレット６１０からワークスペース６２０にマイクロサービス処理をドラッグアンドドロップする。また、ユーザは、ワークスペース６２０に配置されたマイクロサービスを接続し、サービスを提供するためのフローを生成する。また、ユーザは、必要に応じてコンソール６３０を用いて、マイクロサービスの属性の確認及び設定を行う。ユーザは、必要な設定を行った後、デプロイボタン６４０を操作する。
【００７２】
例えば、ユーザがデプロイボタン６４０を操作した場合、ワークスペース６２０に設定されたフローの情報及びコンソール６３０を用いて設定された情報がメタデータとして付与された実行ファイルが生成される。また、コンソール６３０の設定に基づいてサービス制御システム情報Ｔ１１０が生成される。
【００７３】
図７は、実施例１の基盤サーバ１１０が実行する処理を説明するフローチャートである。ユーザによってデプロイボタン６４０が操作された場合、以下で説明する処理が実行される。
【００７４】
まず、基盤サーバ１１０は、マイクロサービス配置最適化処理を実行する（ステップＳ１０１）。マイクロサービス配置最適化処理の詳細は図８を用いて説明する。
【００７５】
次に、基盤サーバ１１０は、マイクロサービスのデプロイ先となる処理システムにマイクロサービス配置最適化処理の結果を通知する（ステップＳ１０３）。例えば、基盤サーバ１１０のサービス順序制御部２１１が、処理管理情報Ｔ１００からデプロイするマイクロサービスに対応するエントリを、処理システムに含まれる基盤サーバ１１０又はサービス処理サーバ１１１に通知する。この場合、サービス処理サーバ１１１は、メモリ３０１に当該エントリを含む処理管理情報Ｔ１００を生成する。
【００７６】
次に、基盤サーバ１１０は、処理システムにマイクロサービスをデプロイする（ステップＳ１０５）。
【００７７】
図８は、実施例１の基盤サーバ１１０が実行するマイクロサービス配置最適化処理を説明するフローチャートである。この最適化処理では、各処理について処理を行う処理システムが変更可能か調査し、処理順番が隣接する処理について同じ処理システムで処理するように最適化する処理である。
【００７８】
サービス順序制御部２１１は、開発基盤処理部２１０によってノードがコンパイルされ、ノードの実行ファイルを生成された場合、処理管理情報Ｔ１００を生成する（ステップＳ２０１）。具体的には、以下のような処理が実行される。
【００７９】
サービス順序制御部２１１は、処理管理情報Ｔ１００にワークスペース６２０に配置されたマイクロサービスの数だけエントリを生成する。また、開発基盤処理部２１０は、マイクロサービスの実行ファイルのメタデータから値を取得し、エントリの処理名Ｃ１０２、配置変更フラグＣ１０３、及び処理システム情報Ｃ１０４に取得した値を設定する。これらのメタデータは、ノードのプロパティなどの設定情報に記述されている。さらに、開発基盤処理部２１０は、メタデータに基づいて、各エントリの処理順番Ｃ１０１に実行順番を設定する。このとき、サービス順序制御部２１１は、実行順番に基づいて、処理管理情報Ｔ１００のエントリをソートする。
【００８０】
また、サービス順序制御部２１１は、変数Ｎ及び変数Ｍを初期化する。具体的には、サービス順序制御部２１１は、変数Ｎに「１」を設定し、変数Ｍに「０」を設定する。変数Ｎは処理中のマイクロサービスを特定するために用いられ、変数Ｍは比較するマイクロサービスを特定するために用いられる。
【００８１】
次に、サービス順序制御部２１１は、ターゲットマイクロサービスを選択する（ステップＳ２０３）。
【００８２】
具体的には、サービス順序制御部２１１は、処理管理情報Ｔ１００から処理順番Ｃ１０１が変数Ｎに一致するエントリを選択する。
【００８３】
次に、サービス順序制御部２１１は、ターゲットマイクロサービスに対応するエントリの配置変更フラグＣ１０３が「可」であるか否かを判定する（ステップＳ２０５）。
【００８４】
ターゲットマイクロサービスに対応するエントリの配置変更フラグＣ１０３が「可」と判定された場合、サービス順序制御部２１１は、ステップＳ２１３に進む。
【００８５】
ステップＳ２０５において、ターゲットマイクロサービスに対応するエントリの配置変更フラグＣ１０３が「可」でないと判定された場合、サービス順序制御部２１１は、変数Ｍが０であるか否かを判定する（ステップＳ２０７）。
【００８６】
変数Ｍが０であると判定された場合、サービス順序制御部２１１は、ステップＳ２１１に進む。
【００８７】
変数Ｍが０でないと判定された場合、サービス順序制御部２１１は、処理管理情報Ｔ１００の変数Ｍに一致するエントリから変数Ｎ−１に一致するエントリの間のマイクロサービスの処理システムを同一システムへ変更する（ステップＳ２０９）。その後、サービス順序制御部２１１は、ステップＳ２１１に進む。
【００８８】
具体的には、サービス順序制御部２１１は、処理順番Ｃ１０１がＭであるエントリと処理順番Ｃ１０１がＮであるエントリとの間に存在する全てのエントリの変更処理システム情報Ｃ１０５に、Ｍ番目のエントリの処理システム情報Ｃ１０４の値を設定する。
【００８９】
また、エントリがＭであるエントリの処理システムＣ１０４に変更してもよいし、エントリがＮ−１であるエントリの処理システムＣ１０４に変更してもよいし、その間にあったエントリの処理システムＣ１０４に変更してもよい。
【００９０】
前述の処理手順に基づいて、マイクロサービスを実行する処理システムを変更することによって、マイクロサービスの実行に伴う処理システム間の通信を削減できる。例えば、Ｎが７かつＭが５の場合、処理順番Ｃ１０１が６であるエントリに対応するマイクロサービスを実行する処理システムが変更される。以上が、ステップＳ２０９の処理の説明である。
【００９１】
サービス順序制御部２１１は、変数Ｍを変数Ｎで更新する（ステップＳ２１１）。その後、サービス順序制御部２１１は、ステップＳ２１３に進む。
【００９２】
ステップＳ２１３では、サービス順序制御部２１１は、全てのマイクロサービスが選択されたか否かを判定する（ステップＳ２１３）。
【００９３】
全てのマイクロサービスが選択されていないと判定された場合、サービス順序制御部２１１は、変数Ｎに１を加算した値を変数Ｎに設定し（ステップＳ２１９）、その後、ステップＳ２０３に戻る。
【００９４】
全てのマイクロサービスが選択されたと判定された場合、サービス順序制御部２１１は、ステップＳ２１５へ進む。
【００９５】
サービス順序制御部２１１は、ＭがＮより小さいかを判定する（ステップＳ２１５）。ＭがＮより小さくなかった場合、サービス順序制御部２１１は、マイクロサービス配置最適化処理を終了する。
【００９６】
ＭがＮより小さかった場合、サービス順序制御部２１１は、Ｓ２０９と同様の処理をＭからＮまでの間で実施する（ステップ２１７）。その後、マイクロサービス配置最適化処理を終了する。
【００９７】
以上の処理によって、デプロイ先の処理システム及びデプロイするマイクロサービスの組合せが決定され、同じ処理システムで実行される二つ以上のマイクロサービスを同じ処理システムで実行されるようにして、通信処理を軽減させることができる。
【００９８】
図９は、実施例１のサービス処理サーバ１１１が、受信したマイクロサービス最適配置情報を受信した場合に、マイクロサービス（実行ファイル）をサービス処理サーバにデプロイする処理を説明するフローチャートである。特に、本処理は、マイクロサービスが、同一のデータセンタ内の異なる複数のサーバで実行される場合に、同一のデータセンタ内でのマイクロサービス最適配置処理を実行する。
【００９９】
サービス処理サーバ１１１のサービス順序制御部２１１は、開発基盤サーバ１１０のサービス順序制御部２１１が作成したマイクロサービス最適配置処理を受信する（ステップＳ３０１）。
【０１００】
サービス処理サーバ１１１のサービス順序制御部２１１は、デプロイされたマイクロサービスが、同一データセンタ内の複数のサーバで実行されるか否かを判定する（ステップＳ３０３）。
【０１０１】
例えば、サービス順序制御部２１１は、処理管理情報Ｔ１００に複数のエントリが存在するか否かを判定する。また、サービス順序制御部２１１は、デプロイされたマイクロサービスの数をカウントし、マイクロサービスの数が二以上であるか否かを判定する。
【０１０２】
デプロイされたマイクロサービスが一つであると判定された場合、サービス順序制御部２１１は、マイクロサービスをデプロイするサービス処理サーバ１１１を決定し、決定されたサービス処理サーバ１１１にマイクロサービスをデプロイする（ステップＳ３０７）。なお、本発明は、マイクロサービスをデプロイするサービス処理サーバ１１１の決定方法に限定されない。その後、サービス順序制御部２１１は、処理を終了する。
【０１０３】
ステップＳ３０３において、同一データセンタ内で実行されるマイクロサービスが複数であると判定された場合、サービス順序制御部２１１は、マイクロサービス配置最適化処理を実行する（ステップＳ３０５）。マイクロサービス配置最適化処理は、ステップＳ２０３からステップＳ２２３までの処理と同様の処理である。ただし、デプロイ先がサーバである点が異なる。
【０１０４】
次に、サービス順序制御部２１１は、マイクロサービス配置最適化処理の処理結果に基づいて、決定されたサービス処理サーバ１１１にマイクロサービスをデプロイする（ステップＳ３０７）。その後、サービス順序制御部２１１は、処理を終了する。
【０１０５】
図１０は、実施例１の基盤サーバ１１０がサービスの提供時に実行する処理を説明するフローチャートである。
【０１０６】
基盤サーバ１１０のサービス順序制御部２１１は、サービスの実行契機を検出した場合、以下で説明する処理を開始する。サービスの実行契機としては、ユーザ等からサービスの実行要求の受け付け、及び一定時間の経過等が考えられる。
【０１０７】
基盤サーバ１１０のサービス順序制御部２１１は、処理管理情報Ｔ１００の処理システム情報Ｃ１０４及び変更処理システム情報Ｃ１０５を参照して、処理要求を送信する処理システムの順番を決定する（ステップＳ４０１）。このとき、処理要求を送信する処理システムの順番を表す変数ｉに初期値「１」を設定する。
【０１０８】
次に、基盤サーバ１１０のサービス順序制御部２１１は、ｉ番目の処理システムに第一処理要求を送信する（ステップＳ４０３）。
【０１０９】
具体的には、基盤サーバ１１０のサービス順序制御部２１１は、入力パラメータ及びマイクロサービスの実行順番を含む第一処理要求をｉ番目の処理システムに送信する。第一処理要求を受信した処理システムのサービス実行部２１２は、処理要求にしたがって、デプロイされたマイクロサービスを実行する。
【０１１０】
なお、ｉ番目の処理システムにデプロイされているマイクロサービスが一つである場合、基盤サーバ１１０のサービス順序制御部２１１は、当該処理システムに第二処理要求を送信する。第二処理要求には入力パラメータが含まれるが、マイクロサービスの実行順番は含まれない。
【０１１１】
処理要求は、例えば、ＸＭＬ形式又はＪＳＯＮ形式のデータとして送信されてもよいし、また、ＨＴＴＰ通信のパラメータとして送信されてもよい。
【０１１２】
なお、分散処理を実行する場合には以下のような処理が実行される。ＸＭＬ形式又はＪＳＯＮ形式のデータとして処理要求を受信した場合、サービス実行部２１２は、当該データをマイクロサービスの設定ファイルとして登録し、指定された順番でマイクロサービスを実行する。ＨＴＴＰ通信のパラメータとして処理要求を受信した場合、サービス実行部２１２は、パラメータをＸＭＬ形式又はＪＳＯＮ形式のデータに変換し、当該データをマイクロサービスの設定ファイルとして登録し、指定された順番でマイクロサービスを実行する。
【０１１３】
次に、基盤サーバ１１０のサービス順序制御部２１１は、第一処理要求を送信した処理システムのサービス実行部２１２から処理結果を受信する（ステップＳ４０５）。
【０１１４】
次に、基盤サーバ１１０のサービス順序制御部２１１は、全てのマイクロサービスが実行されたか否かを判定する（ステップＳ４０７）。
【０１１５】
全てのマイクロサービスが実行されていないと判定された場合、基盤サーバ１１０のサービス順序制御部２１１は、変数ｉに１を加算し（ステップＳ４０９）、ステップＳ４０３に戻り、同様の処理を実行する。
【０１１６】
全てのマイクロサービスが実行されたと判定された場合、基盤サーバ１１０のサービス順序制御部２１１は、一連のマイクロサービスの処理結果から得られる応答を出力し（ステップＳ４１１）、処理を終了する。
【０１１７】
ここで、図１に示すようにマイクロサービスがデプロイされた場合における図１０の処理の具体例について説明する。
【０１１８】
（１）まず、基盤サーバ１１０は、ユーザから入力Ａを含むサービスの実行要求を受信する。基盤サーバ１１０のサービス順序制御部２１１は、基盤システム１００、データセンタ１０１−１、データセンタ１０１−２の順に処理要求を送信することを決定する。基盤サーバ１１０のサービス順序制御部２１１は、基盤システム１００に第一処理要求を送信する。基盤サーバ１１０のサービス実行部２１２は、処理Ａ１６０を実行し、処理結果として出力Ａを出力する。基盤サーバ１１０のサービス実行部２１２は、基盤サーバ１１０のサービス順序制御部２１１に出力Ａを送信する。
【０１１９】
（２）基盤サーバ１１０のサービス順序制御部２１１は、出力Ａ及びマイクロサービス（処理Ｂ１６１、処理Ｃ１６２、処理Ｄ１６３）の実行順番を含む第一処理要求をデータセンタ１０１−１に送信する。
【０１２０】
（３）サービス処理サーバ１１１−１のサービス実行部２１２は、出力Ａに基づいて処理Ｂ１６１を実行して出力Ｂを出力し、出力Ｂに基づいて処理Ｃ１６２を実行して出力Ｃを出力し、出力Ｃに基づいて処理Ｄ１６３を実行して出力Ｄを出力する。サービス処理サーバ１１１−１は、基盤サーバ１１０のサービス順序制御部２１１に出力Ｄを送信する。
【０１２１】
（４）基盤サーバ１１０のサービス順序制御部２１１は、出力Ｄ及びマイクロサービス（処理Ｅ１６４、処理Ｆ１６５、処理Ｚ１６６）の順番を含む第一処理要求をデータセンタ１０１−２に送信する。
【０１２２】
（５）サービス処理サーバ１１１−２のサービス実行部２１２は、出力Ｄに基づいて処理Ｅ１６４を実行して出力Ｅを出力し、出力Ｅに基づいて処理Ｆ１６５を実行して出力Ｆを出力し、出力Ｆに基づいて処理Ｚ１６６を実行して出力Ｚを出力する。サービス処理サーバ１１１−２のサービス実行部２１２は、基盤サーバ１１０のサービス順序制御部２１１に出力Ｚを送信する。
【０１２３】
（６）基盤サーバ１１０のサービス順序制御部２１１は、ユーザに応答として出力Ｚを出力する。
【０１２４】
実施例１によれば、サービスを統括するサーバ（基盤サーバ１１０）は、マイクロサービスが配置された処理システム間（サーバ間）のデータの送受信が頻繁に行われないようにマイクロサービスのデプロイ先となる処理システムを決定する。また、サービスを統括するサーバ（基盤サーバ１１０）は、サービスの実行時に、実行順番を含む処理要求を処理システムに送信する。これによって、サービスの実行に伴う処理システム間のデータの送受信が削減されるため、実行速度の低下及び通信リソースの消費量の増大の問題を改善することができる。
【実施例２】
【０１２５】
実施例１では、サービスを構成する全てのマイクロサービスに対してマイクロサービス配置最適化処理が実行される。実施例２では、サービスを構成するマイクロサービスのうち、一部のマイクロサービスに対してマイクロサービス配置最適化処理が実行される。それを実現するために、マイクロサービス配置最適化処理を適用するマイクロサービスを限定する。以下、実施例１との差異を中心に実施例２について説明する。
【０１２６】
実施例２の計算機システムの構成は、実施例１と同一である。実施例２の基盤サーバ１１０及びサービス処理サーバ１１１の構成は、実施例１と同一である。また、実施例２の基盤サーバ１１０及びサービス処理サーバ１１１が保持する情報のデータ構造は、実施例１と同一である。
【０１２７】
実施例２では、開発基盤１２０において提供されるマイクロサービスが一部異なる。図１１は、実施例２の開発基盤処理部２１０が提供するＧＵＩの一例を示す図である。
【０１２８】
実施例２のＧＵＩ６００のパレット６１０には、マイクロサービス配置最適化処理を適用する範囲を示すために、一括処理開始ノード１５７及び一括処理終了ノード１５８が表示される。一括処理開始ノード１５７はマイクロサービス配置最適化処理の始点を示すノード（マイクロサービス）であり、一括処理終了ノード１５８はマイクロサービス配置最適化処理の終点を示すノード（マイクロサービス）である。一括処理開始ノード１５７及び一括処理終了ノード１５８は、基盤サーバ１１０に配置されるものとする。
【０１２９】
図１１に示す例では、処理Ｂ１５１から処理Ｆ１５５がマイクロサービス配置最適化処理の対象となる。
【０１３０】
図１２Ａ及び図１２Ｂは、実施例２の基盤サーバ１１０が実行するマイクロサービス配置最適化処理を説明するフローチャートである。
【０１３１】
基盤サーバ１１０のサービス順序制御部２１１は、ステップＳ２０３の処理の後に、ターゲットマイクロサービスに対応するノードが一括処理開始ノード１５７であるか否かを判定する（ステップＳ２５１）。
【０１３２】
ターゲットマイクロサービスに対応するノードが一括処理開始ノード１５７であると判定された場合、基盤サーバ１１０のサービス順序制御部２１１は、一括処理フラグを「ＯＮ」に設定する（ステップＳ２５３）。その後、基盤サーバ１１０のサービス順序制御部２１１は、ステップＳ２５９に進む。
【０１３３】
ターゲットマイクロサービスに対応するノードが一括処理開始ノード１５７でないと判定された場合、基盤サーバ１１０のサービス順序制御部２１１は、当該ノードが一括処理終了ノード１５８であるか否かを判定する（ステップＳ２５５）。
【０１３４】
ターゲットマイクロサービスに対応するノードが一括処理終了ノード１５８であると判定された場合、基盤サーバ１１０のサービス順序制御部２１１は、一括処理フラグを「ＯＦＦ」に設定する（ステップＳ２５７）。その後、基盤サーバ１１０のサービス順序制御部２１１は、ステップＳ２５９に進む。
【０１３５】
ターゲットマイクロサービスに対応するノードが一括処理終了ノード１５８でないと判定された場合、基盤サーバ１１０のサービス順序制御部２１１は、ステップＳ２５９に進む。
【０１３６】
ステップＳ２５９では、基盤サーバ１１０のサービス順序制御部２１１は、一括処理フラグが「ＯＮ」であるか否かを判定する（ステップＳ２５９）。
【０１３７】
一括処理フラグが「ＯＮ」であると判定された場合、基盤サーバ１１０のサービス順序制御部２１１は、ステップＳ２０５に進む。
【０１３８】
一括処理フラグが「ＯＦＦ」であると判定された場合、基盤サーバ１１０のサービス順序制御部２１１は、ステップＳ２１３に進む。
【０１３９】
図１３は、実施例２の基盤サーバ１１０がサービスの提供時に実行する処理を説明するフローチャートである。
【０１４０】
基盤サーバ１１０のサービス順序制御部２１１は、ステップＳ４０１の処理の後に、ｉ番目の処理システムが実行するマイクロサービスが一括処理開始ノード１５７であるか否かを判定する（ステップＳ４２１）。
【０１４１】
ｉ番目の処理システムが実行するマイクロサービスに一括処理開始ノード１５７であると判定された場合、基盤サーバ１１０のサービス順序制御部２１１は、一括処理フラグを「ＯＮ」に設定する（ステップＳ４２３）。その後、基盤サーバ１１０のサービス順序制御部２１１は、ステップＳ４０９に進む。
【０１４２】
ｉ番目の処理システムが実行するマイクロサービスが一括処理開始ノード１５７でないと判定された場合、基盤サーバ１１０のサービス順序制御部２１１は、当該マイクロサービスが一括処理終了ノード１５８であるか否かを判定する（ステップＳ４２５）。
【０１４３】
ｉ番目の処理システムが実行するマイクロサービスが一括処理終了ノード１５８であると判定された場合、基盤サーバ１１０のサービス順序制御部２１１は、一括処理フラグを「ＯＦＦ」に設定する（ステップＳ４２７）。その後、基盤サーバ１１０のサービス順序制御部２１１は、ステップＳ４０９に進む。
【０１４４】
ｉ番目の処理システムが実行するマイクロサービスが一括処理終了ノード１５８でないと判定された場合、基盤サーバ１１０のサービス順序制御部２１１は、一括フラグが「ＯＮ」であるか否かを判定する（ステップＳ４２９）。
【０１４５】
一括フラグが「ＯＮ」であると判定された場合、基盤サーバ１１０のサービス順序制御部２１１は、ステップＳ４０３に進む。
【０１４６】
一括フラグが「ＯＦＦ」であると判定された場合、基盤サーバ１１０のサービス順序制御部２１１は、ｉ番目の処理システムに第二処理要求を送信する（ステップＳ４３１）。第二処理要求にはマイクロサービスの実行順番は含まれない。その後、基盤サーバ１１０のサービス順序制御部２１１は、ステップＳ４０５に進む。サービス実行部２１２は、第二処理要求を受信した場合、ノードに対応するプロセスを実行した後、処理結果を応答する。
【０１４７】
サービス処理サーバ１１１がデプロイされたマイクロサービス（実行ファイル）を受け付けた場合に実行する処理は、実施例１と同一である。
【０１４８】
実施例２によれば、実施例１と同様の効果を奏するとともに、また、サービスを統括するサーバ（基盤サーバ１１０）の負荷を低減できる。また、一括処理開始ノード１５７及び一括処理終了ノード１５８が異なる計算機システムで配置されていても、計算機システムを移動可能なマイクロサービスであれば、一括処理するマイクロサービスをすべて同じ計算機システムに配置して一括処理可能にしてもよい。
【実施例３】
【０１４９】
実施例３では、処理要求の送信時の処理が異なる。以下、実施例１との差異を中心に実施例３について説明する。
【０１５０】
実施例３の計算機システムの構成は、実施例１と同一である。実施例３の基盤サーバ１１０及びサービス処理サーバ１１１の構成は、実施例１と同一である。また、実施例３の基盤サーバ１１０及びサービス処理サーバ１１１が保持する情報のデータ構造は、実施例１と同一である。
【０１５１】
マイクロサービス配置最適化処理及びサービス処理サーバ１１１がデプロイされたノード（実行ファイル）を受け付けた場合に実行する処理は、実施例１と同一である。
【０１５２】
基盤サーバ１１０がサービスの提供時に実行する処理の流れは、実施例１と同一である。ただし、ステップＳ４０３の処理が異なる。
【０１５３】
図１４は、実施例３の基盤サーバ１１０が処理要求を送信する場合に実行する処理を説明するフローチャートである。以下で説明する処理は、ステップＳ４０３において実行される処理である。
【０１５４】
基盤サーバ１１０のサービス順序制御部２１１は、マイクロサービスを解析し（ステップＳ５０１）、解析結果に基づいて、マイクロサービスに含まれる繰り返し処理の中に、他のマイクロサービスが含まれるか否かを判定する（ステップＳ５０３）。
【０１５５】
例えば、サービス順序制御部２１１は、ｆｏｒ文に他のマイクロサービスの実行を指示するコードが含まれるか否かを判定する。
【０１５６】
なお、マイクロサービスの解析は、マイクロサービス配置最適化処理において実行されてもよい。この場合、処理管理情報Ｔ１００に繰り返し処理に関する情報を格納するフィールドを追加する。ステップＳ２０１において、基盤サーバ１１０のサービス順序制御部２１１は、当該フィールドにソースコードの解析結果を格納する。
【０１５７】
マイクロサービスに含まれる繰り返し処理の中に他のマイクロサービスが含まれないと判定された場合、基盤サーバ１１０のサービス順序制御部２１１は、第一処理要求をｉ番目の処理システムに送信する（ステップＳ５０５）。その後、基盤サーバ１１０のサービス順序制御部２１１はステップＳ４０５に進む。ステップＳ５０５の処理は、ステップＳ４０３の処理と同一である。
【０１５８】
マイクロサービスに含まれる繰り返し処理の中に他のマイクロサービスが含まれると判定された場合、基盤サーバ１１０のサービス順序制御部２１１は、繰り返し処理を非同期通信処理に変更するための情報を含む第三処理要求をｉ番目の処理システムに送信する（ステップＳ５０７）。その後、基盤サーバ１１０のサービス順序制御部２１１はステップＳ４０５に進む。
【０１５９】
具体的には、基盤サーバ１１０のサービス順序制御部２１１は、入力パラメータ及びマイクロサービスの実行順番と、繰り返し処理に含まれる他のマイクロサービスの名称及び繰り返し数とを含む第三処理要求を送信する。
【０１６０】
サービス処理サーバ１１１のサービス実行部２１２は、当該処理要求を受信した場合、ジョブＩＤを発行し、基盤サーバ１１０のサービス順序制御部２１１に発行したジョブＩＤを応答する。その後、サービス処理サーバ１１１のサービス実行部２１２は、繰り返し処理を実行する。
【０１６１】
基盤サーバ１１０のサービス順序制御部２１１は、ジョブＩＤを用いて繰り返し処理の進捗状態を把握するための問合せを行う。サービス処理サーバ１１１のサービス実行部２１２は、ジョブＩＤに対する進捗の問合せを受信した場合、現在の進捗を示す値を応答する。
【０１６２】
実施例３によれば、繰り返し処理によって頻繁に実行されるマイクロサービスが配置された処理システム間のデータの送受信を削減できる。
【実施例４】
【０１６３】
実施例４では、基盤サーバ１１０がサービスの提供時に実行する処理が実施例１と異なる。以下、実施例１との差異を中心に実施例４について説明する。
【０１６４】
実施例４の計算機システムの構成は、実施例１と同一である。実施例４の基盤サーバ１１０及びサービス処理サーバ１１１の構成は、実施例１と同一である。また、実施例４の基盤サーバ１１０及びサービス処理サーバ１１１が保持する情報のデータ構造は、実施例１と同一である。
【０１６５】
マイクロサービス配置最適化処理及びサービス処理サーバ１１１がデプロイされたマイクロサービス（実行ファイル）を受け付けた場合に実行する処理は、実施例１と同一である。
【０１６６】
図１５は、実施例４の基盤サーバ１１０がサービスの提供時に実行する処理を説明するフローチャートである。
【０１６７】
基盤サーバ１１０のサービス順序制御部２１１は、ステップＳ４０１の処理の後、サービス制御システム情報Ｔ１１０を参照して、ｉ番目の処理システムに対応するエントリのオフロードフラグＣ１１２が「可」であるか否かを判定する（ステップＳ４４１）。
【０１６８】
ｉ番目の処理システムに対応するエントリのオフロードフラグＣ１１２が「可」でないと判定された場合、基盤サーバ１１０のサービス順序制御部２１１は、ステップＳ４０３に進む。
【０１６９】
ｉ番目の処理システムに対応するエントリのオフロードフラグＣ１１２が「可」であると判定された場合、基盤サーバ１１０のサービス順序制御部２１１は、ｉ番目の処理システムに第四処理要求を送信する（ステップＳ４４３）。
【０１７０】
具体的には、基盤サーバ１１０のサービス順序制御部２１１は、ｉ番目以降の全ての処理システムにデプロイされたマイクロサービスの実行順番を決定する。基盤サーバ１１０のサービス順序制御部２１１は、処理システム及びマイクロサービスの実行順番を対応づけた情報と、ｉ番目の処理システムに入力する入力パラメータとを含む第四処理要求を送信する。
【０１７１】
ｉ番目以降の処理システムのサービス順序制御部２１１は、第四処理要求を受信した場合、自サーバにデプロイされたマイクロサービスの実行をサービス実行部２１２に指示する。また、ｉ番目以降の処理システムのサービス順序制御部２１１は、図１５で示した処理と同様の処理を実行する。ただし、ステップＳ４０１では、サーバの順番を決定する代わりに、変数ｉに（ｉ＋１）を設定する。また、基盤サーバ１１０から直接第四処理要求を受信した処理システムのサービス順序制御部２１１は、ｉ番目以降の処理システムから得られたマイクロサービスの処理結果を基盤サーバ１１０に送信する。
【０１７２】
次に、基盤サーバ１１０のサービス順序制御部２１１は、第四処理要求を送信したサーバから処理結果を受信する（ステップＳ４４５）。その後、基盤サーバ１１０のサービス順序制御部２１１は、ステップＳ４１１に進む。
【０１７３】
図１に示すようにマイクロサービスがデプロイされた場合における図１５の処理の具体例について説明する。
【０１７４】
（１）まず、基盤サーバ１１０は、ユーザから入力Ａを含むサービスの実行要求を受信する。基盤サーバ１１０のサービス順序制御部２１１は、基盤システム１００、データセンタ１０１−１、データセンタ１０１−２の順に処理要求を送信することを決定する。基盤サーバ１１０のサービス順序制御部２１１は、基盤サーバ１１０に第一処理要求を送信する。基盤サーバ１１０のサービス実行部２１２は、処理Ａ１６０を実行し、処理結果として出力Ａを出力する。基盤サーバ１１０のサービス実行部２１２は、基盤サーバ１１０のサービス順序制御部２１１に出力Ａを送信する。
【０１７５】
（２）基盤サーバ１１０のサービス順序制御部２１１は、サービス処理サーバ１１１−１及びマイクロサービス（処理Ｂ１６１、処理Ｃ１６２、処理Ｄ１６３）の実行順番を対応づけた情報、サービス処理サーバ１１１−２及びマイクロサービス（処理Ｅ１６４、処理Ｆ１６５、処理Ｚ１６６）の実行順番を対応づけた情報、並びに出力Ａを含む第四処理要求をサービス処理サーバ１１１−１に送信する。
【０１７６】
（３）サービス処理サーバ１１１−１のサービス実行部２１２は、出力Ａに基づいて処理Ｂ１６１を実行して出力Ｂを出力し、出力Ｂに基づいて処理Ｃ１６２を実行して出力Ｃを出力し、出力Ｃに基づいて処理Ｄ１６３を実行して出力Ｄを出力する。サービス処理サーバ１１１−１のサービス順序制御部２１１は、サービス処理サーバ１１１−２及びマイクロサービス（処理Ｅ１６４、処理Ｆ１６５、処理Ｚ１６６）の実行順番を対応づけた情報、並びに出力Ｄを含む第一処理要求を送信する。
【０１７７】
（４）サービス処理サーバ１１１−２のサービス実行部２１２は、出力Ｄに基づいて処理Ｅ１６４を実行して出力Ｅを出力し、出力Ｅに基づいて処理Ｆ１６５を実行して出力Ｆを出力し、出力Ｆに基づいて処理Ｚ１６６を実行して出力Ｚを出力する。サービス処理サーバ１１１−２のサービス実行部２１２は、サービス処理サーバ１１１−１に出力Ｚを送信する。
【０１７８】
（５）サービス処理サーバ１１１−１のサービス順序制御部２１１は、基盤サーバ１１０に出力Ｚを送信する。なお、サービス処理サーバ１１１−１のサービス順序制御部２１１は、サービス処理サーバ１１１−１及びサービス処理サーバ１１１−２にデプロイされたマイクロサービスの処理結果から一つの出力を生成してもよい。
【０１７９】
（６）基盤サーバ１１０のサービス順序制御部２１１は、ユーザに応答として出力Ｚを出力する。
【０１８０】
実施例４によれば、処理システムがマイクロサービスを実行するたびに基盤サーバ１１０と通信を行う必要がないため、よりサービスの実行速度を向上でき、また、通信リソースの消費量をより削減できる。
【実施例５】
【０１８１】
ユースケース及び要件又は開発者のスキル等に応じて、提供するノード（マイクロサービス）の単位が異なってくる。これは、提供すべきＡＰＩの単位が異なることを意味し、一つのマイクロサービスにどれだけの処理を実行させるかという問題に帰着する。
【０１８２】
そこで、サービスを小さい単位のマイクロサービス（小規模の処理）に分解し、小さい単位のマイクロサービスを組み合わせて適切なマイクロサービス（中規模又は大規模の処理）を提供することが考えられる。しかし、小さい単位のマイクロサービスから構成されるサービスでは、マイクロサービス間の通信が頻繁に発生するため、サービスの実行速度の低下とネットワークリソースの消費量の増大という問題がある。
【０１８３】
そこで、実施例１から実施例４で示した発明を用いることによって前述の課題を解決できる。
【０１８４】
実施例５では、サービス順序制御部２１１は、マイクロサービス配置最適化処理が完了した後、当該処理の結果に基づいて、複数のマイクロサービスを組み合わせたマイクロサービスを生成する。例えば、サービス順序制御部２１１は、処理システム間の通信が発生しないマイクロサービスの組合せを新たなマイクロサービスとして生成する。また、開発基盤処理部２１０は、サービスを生成する場合に、新たに生成されたマイクロサービスをＧＵＩ６００に表示する。
【０１８５】
複数のマイクロサービスを組み合わせたマイクロサービスから構成されるサービスでは、最小のマイクロサービスを考慮してマイクロサービス配置最適化処理及びマイクロサービスが実行される。具体的には、一つのマイクロサービス（ノード）を構成する小さい単位のマイクロサービス（ノード）を対象とした処理となる。
【０１８６】
図１６は、実施例５の開発基盤処理部２１０によって提示されるポータル１６００の一例を示す図である。
【０１８７】
ポータル１６００は、ユーザ（開発者）が所望するＡＰＩを検索するためのＧＵＩである。ポータル１６００は、キーワード入力欄１６１０及び検索結果表示欄１６２０を含む。
【０１８８】
キーワード入力欄１６１０は、ＡＰＩの検索に用いられるキーワードを入力する欄である。検索結果表示欄１６２０は、検索結果を表示する欄である。検索結果表示欄１６２０には、例えば、ＡＰＩを提供する処理サーバの情報が表示される。
【０１８９】
ユーザは、処理サーバを開発基盤１２０にドラッグアンドドロップし、又は、マイクロサービスを表すＪＳＯＮを開発基盤１２０にダウンロードする。これによって、開発基盤１２０上でＡＰＩを使用することが可能となる。
【０１９０】
処理Ｂ−Ｃ１６１１及び処理Ｄ−Ｆ１６１２は、複数の処理をまとめたマイクロサービスである。
【０１９１】
なお、開発基盤処理部２１０は、ユーザ認証処理を実行した後に、ポータル１６００を表示するようにしてもよい。また、開発基盤処理部２１０は、ユーザごとに検索可能なマイクロサービスが異なるようにしてもよい。
【０１９２】
図１７Ａ、図１７Ｂ、及び図１７Ｃは、実施例５の開発基盤処理部２１０が提供するＧＵＩの一例を示す図である。
【０１９３】
ＧＵＩ６００のワークスペース６２０には、ポータル１６００を用いて検索されたマイクロサービスに対応する処理Ｂ−Ｃ１６１１及び処理Ｄ−Ｆ１６１２が表示される。
【０１９４】
図１７Ａに示すＧＵＩ６００において、ワークスペース６２０に表示された処理Ｂ−Ｃ１６１１をダブルクリックした場合、ワークスペース６２０は図１７Ｂに示すような表示に切り替わる。
【０１９５】
また、図１７Ｃに示すようなＧＵＩ６００も考えられる。図１７ＣのＧＵＩ６００には、ワークスペース６２０にタブが含まれる。図１７Ｃでは全体タブ及び詳細タブが含まれる。
【０１９６】
ユーザが全体タブを操作した場合、ワークスペース６２０には、図１７ＡのＧＵＩ６００のワークスペース６２０に示すようなサービスを構成するマイクロサービスのフローが表示される。ユーザが詳細タブを操作した場合、図１７ＣのＧＵＩ６００のワークスペース６２０には、複数のマイクロサービスから構成されるマイクロサービスである処理Ｂ−Ｃ１６１１及び処理Ｄ−Ｆ１６１２のそれぞれの詳細なノードの構成が表示される。なお、マイクロサービスごとにタブを設けてもよい。
【０１９７】
実施例５によれば、最小単位のマイクロサービスのデプロイ結果に基づいて、ユーザごとに最適なマイクロサービスを生成することができる。
【０１９８】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。また、例えば、上記した実施例は本発明を分かりやすく説明するために構成を詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、各実施例の構成の一部について、他の構成に追加、削除、置換することが可能である。
【０１９９】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、本発明は、実施例の機能を実現するソフトウェアのプログラムコードによっても実現できる。この場合、プログラムコードを記録した記憶媒体をコンピュータに提供し、そのコンピュータが備えるプロセッサが記憶媒体に格納されたプログラムコードを読み出す。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施例の機能を実現することになり、そのプログラムコード自体、及びそれを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、光ディスク、光磁気ディスク、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭなどが用いられる。
【０２００】
また、本実施例に記載の機能を実現するプログラムコードは、例えば、アセンブラ、Ｃ／Ｃ＋＋、ｐｅｒｌ、Ｓｈｅｌｌ、ＰＨＰ、Ｊａｖａ（登録商標）等の広範囲のプログラム又はスクリプト言語で実装できる。
【０２０１】
さらに、実施例の機能を実現するソフトウェアのプログラムコードを、ネットワークを介して配信することによって、それをコンピュータのハードディスクやメモリ等の記憶手段又はＣＤ−ＲＷ、ＣＤ−Ｒ等の記憶媒体に格納し、コンピュータが備えるプロセッサが当該記憶手段や当該記憶媒体に格納されたプログラムコードを読み出して実行するようにしてもよい。
【０２０２】
上述の実施例において、制御線や情報線は、説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。全ての構成が相互に接続されていてもよい。
【符号の説明】
【０２０３】
１００  基盤システム
１０１  データセンタ
１０２  ネットワーク
１１０  基盤サーバ
１１１  サービス処理サーバ
１２０  開発基盤
１２０  基盤サーバ
１２０  開発環境
１２１  実行基盤
Ｔ１００  処理管理情報
Ｔ１１０  サービス制御システム情報
２００、３００  ＣＰＵ
２０１、３０１  メモリ
２０２、３０２  記憶装置
２０３、３０３  ネットワークインタフェース
２０４、３０４  内部バス
６００  ＧＵＩ
６１０  パレット
６２０  ワークスペース
６３０  コンソール
６４０  デプロイボタン
１６００  ポータル
１６１０  キーワード入力欄
１６２０  検索結果表示欄
【図１】
2019211955.tif 000003
【図２】
2019211955.tif 000004
【図３】
2019211955.tif 000005
【図４】
2019211955.tif 000006
【図５】
2019211955.tif 000007
【図６】
2019211955.tif 000008
【図７】
2019211955.tif 000009
【図８】
2019211955.tif 000010
【図９】
2019211955.tif 000011
【図１０】
2019211955.tif 000012
【図１１】
2019211955.tif 000013
【図１２Ａ】
2019211955.tif 000014
【図１２Ｂ】
2019211955.tif 000015
【図１３】
2019211955.tif 000016
【図１４】
2019211955.tif 000017
【図１５】
2019211955.tif 000018
【図１６】
2019211955.tif 000019
【図１７Ａ】
2019211955.tif 000020
【図１７Ｂ】
2019211955.tif 000021
【図１７Ｃ】
2019211955.tif 000022