(57)【要約】      （修正有）【課題】マイクロサービスベースのシステムの効率性と好適性を改善する。【解決手段】処理装置１０は、タイプのリストを格納するタイプレジスタと、複数のマイクロサービスと、マイクロサービスにメッセージを介してデータを入力するメッセージング機構を含む。各マイクロサービスはさらに、メッセージングフォーマットに従って構成されたメッセージをメッセージング機構から受信し、受信されるメッセージの第２フィールドにより指定されるタイプが、マイクロサービスのアノテーションの入力タイプとマッチすることを条件として、マイクロサービスの処理ロジックを実行することにより応答するように構成された、コントローラを有する。【選択図】図１
2018073400.tif 000002
【特許請求の範囲】
【請求項１】
マイクロサービスベースのデータ処理装置であって、
タイプのリストを格納するタイプレジスタであって、タイプは前記装置におけるデータによりインスタンス化される概念のセマンティック表現である、タイプレジスタと、
複数のマイクロサービスであって、各マイクロサービスは、
格納された前記タイプのリストからの入力タイプと、格納された前記タイプのリストからの一以上の出力タイプとのアノテーションと、
実行されると、前記入力タイプによりセマンティック表現された概念をインスタンス化する入力データを、前記一以上の出力タイプのうちの１つによりセマンティック表現された概念をインスタンス化する出力データに変換する処理ロジックとを含む、複数のマイクロサービスと、
前記複数のマイクロサービスのうちのマイクロサービスにメッセージを介してデータを入力するメッセージング機構であって、前記メッセージング機構は前記メッセージが構成されるメッセージングフォーマットメッセージングフォーマットを定義し、前記メッセージングフォーマットは、
入力される前記データを指定する第１フィールドと、
前記第１フィールドのデータによりインスタンス化される概念をセマンティック表現する、格納された前記タイプのリストからのタイプを指定する第２フィールドとを含む、メッセージング機構とを有し、
各マイクロサービスはさらに、
コントローラであって、前記メッセージングフォーマットに従って構成されたメッセージを前記メッセージング機構から受信し、受信される前記メッセージの前記第２フィールドにより指定されるタイプが、前記マイクロサービスのアノテーションの入力タイプとマッチすることを条件として、前記マイクロサービスの処理ロジックを実行することにより応答するように構成された、コントローラを有する、
装置。
【請求項２】
前記メッセージングフォーマットはさらに、
格納された前記タイプのリストから、要求された出力データの一以上のタイプを指定する第３フィールドを含み、
前記メッセージング機構は、前記メッセージング機構に出力され、前記メッセージングフォーマットに従って構成されたメッセージを、アノテーションの一以上のタイプのうちの１つが前記メッセージの第３フィールドにより指定された一以上のタイプの１つとマッチする各マイクロサービスに、配信するように構成され、
各マイクロサービスのコントローラは、受信されたメッセージの第２フィールドにより指定されたタイプが前記アノテーションの入力タイプとマッチしないことを条件として、前記マイクロサービスのアノテーションの入力タイプを前記メッセージの第３フィールドに付加することにより、前記メッセージを修正し、前記メッセージング機構を介して送信するために、修正された前記メッセージを出力するように構成される、
請求項１に記載の装置。
【請求項３】
各マイクロサービスのコントローラは、前記マイクロサービスの処理ロジックを実行するとき、前記出力データを出力するように構成される、
請求項１に記載の装置。
【請求項４】
前記メッセージングフォーマットに従って構成されたメッセージは、入力されるデータがアクセス可能であるＵＲＬとして前記第１フィールドを表す、
請求項１に記載の装置。
【請求項５】
要求インターフェースであって、データ処理要求を受信し、前記データ処理要求から、
入力データを指定する第１要求パラメータと、
指定された前記第１要求パラメータの入力データによりインスタンス化される概念をセマンティック表現する第２要求パラメータと、
受信されたデータ処理要求に応じて、出力データによりインスタンス化される一以上の概念をセマンティック表現する第３要求パラメータとを抽出し、
前記要求インターフェースは、前記メッセージングフォーマットに従って構成されたメッセージを生成し、生成されたメッセージを前記メッセージング機構に出力するように構成され、生成されたメッセージは、
前記第１フィールドとして前記第１要求パラメータと、
前記第２フィールドとして前記第２要求パラメータと、
前記第３フィールドとして前記第３要求パラメータとを含む、
請求項１に記載の装置。
【請求項６】
前記複数のマイクロサービスへの新しいマイクロサービスの追加を管理するように構成されたマイクロサービスマネージャであって、
前記複数のマイクロサービスに含める新しいマイクロサービスを受信するように構成され、前記新しいマイクロサービスは、
実行時、前記新しいマイクロサービスにより処理されるデータによりインスタンス化される概念をセマンティック表現する入力タイプと、
前記新しいマイクロサービスによるデータ処理の結果によりインスタンス化される概念をセマンティック表現する出力タイプとを含み、
前記新しいマイクロサービスは、
実行されると、前記入力タイプによりセマンティック表現された概念をインスタンス化する入力データを、前記出力タイプによりセマンティック表現された概念をインスタンス化する出力データに変換する処理ロジックとを含む、複数のマイクロサービスを有し、
前記マイクロサービスマネージャはさらに、
前記タイプレジスタに、前記新しいマイクロサービスがアノテーションされる前記入力タイプと前記出力タイプとを追加し、
前記複数のマイクロサービス１４に前記マイクロサービスを追加するように構成される、
請求項１に記載の装置。
【請求項７】
マイクロサービスベースのデータ処理方法であって、
タイプのリストを格納することであって、タイプは装置におけるデータによりインスタンス化される概念のセマンティック表現である、ことと、
複数のマイクロサービスの各々について、
格納された前記タイプのリストからの入力タイプと、格納された前記タイプのリストからの一以上の出力タイプとのアノテーションと、
実行されると、前記入力タイプによりセマンティック表現された概念をインスタンス化する入力データを、前記一以上の出力タイプのうちの１つによりセマンティック表現された概念をインスタンス化する出力データに変換する処理ロジックとを格納することとを含み、
前記方法はさらに、
メッセージを介して、前記複数のマイクロサービスのうちのマイクロサービスにデータを入力することであって、前記メッセージはメッセージングフォーマットに従って構成され、前記データは前記メッセージングフォーマットとして入力され、前記メッセージングフォーマットは、
入力される前記データを指定する第１フィールドと、
前記第１フィールドのデータによりインスタンス化される概念をセマンティック表現する、格納された前記タイプのリストからのタイプを指定する第２フィールドとを含む、ことを含み、
前記方法はさらに、前記複数のマイクロサービスのうちの前記マイクロサービスにおいて、
前記メッセージングフォーマットに従って構成されたメッセージをメッセージング機構から受信し、受信される前記メッセージの前記第２フィールドにより指定されるタイプが、前記マイクロサービスのアノテーションの入力タイプとマッチすることを条件として、前記マイクロサービスの処理ロジックを実行することにより応答することを含む、
方法。
【請求項８】
計算装置により実行されると、前記計算装置に請求項７に記載の方法を実行させるコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ処理の分野にあり、具体的に、マイクロサービスデータ処理アーキテクチャに関する。
【背景技術】
【０００２】
マイクロサービスは、大規模なデータ処理工程をゆるやかに結合された複数のモジュールに分解する方法である。個々のモジュールは、高度に定義された離散的なタスクを担当し、単純かつ広くアクセス可能なアプリケーションプログラムインターフェース（ＡＰＩ）を通して他のモジュールと通信する。
【０００３】
よりモノリシック（ｍｏｎｏｌｉｔｈｉｃ）な設計構造とは逆に、マイクロサービスは、（１）障害分離を改善し、（２）１つのテクノロジースタックに対する長期的なコミットメントを無くし、（３）新しい開発者がサービスの機能を理解し易くする。
【０００４】
しかし、マイクロサービスアーキテクチャには幾つかの欠点がある：
−分散システムの開発が複雑であり得る；
−複数のデータベース及びトランザクションの管理が困難である；
−マイクロサービスベースアプリケーションのテストが面倒になり得る；
−マイクロサービスの開発が複雑であり得る；
−構成管理に時間がかかる；
−１つのサービスを更新する際、独立なサービスの互換性を保つのが困難である；
−分散通信が安全でない。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
結果として、これらの欠点の一部を解消するソリューションを生成すれば、マイクロサービスベースのシステムの効率性と好適性を改善することができる。
【課題を解決するための手段】
【０００６】
本発明の一態様による実施形態は、マイクロサービスベースのデータ処理装置を含む。該装置は、  タイプのリストを格納するタイプレジスタであって、タイプは前記装置におけるデータによりインスタンス化される概念のセマンティック表現である、タイプレジスタと、複数のマイクロサービスとを有する。各マイクロサービスは、格納された前記タイプのリストからの入力タイプと、格納された前記タイプのリストからの一以上の出力タイプとのアノテーションと、プロセッサにより実行されると、前記入力タイプによりセマンティック表現された概念をインスタンス化する入力データを、前記一以上の出力タイプのうちの１つによりセマンティック表現された概念をインスタンス化する出力データに変換する処理ロジックとを含む。本装置はさらに、前記複数のマイクロサービスのうちのマイクロサービスにメッセージを介してデータを入力するメッセージング機構であって、前記メッセージング機構は前記メッセージが構成されるメッセージングフォーマットを定義する、メッセージング機構を有する。メッセージングフォーマットは、入力される前記データを指定する第１フィールドと、前記第１フィールドのデータによりインスタンス化される概念をセマンティック表現する、格納された前記タイプのリストからのタイプを指定する第２フィールドとを含む。  各マイクロサービスはさらに、コントローラであって、前記メッセージングフォーマットに従って構成されたメッセージを前記メッセージング機構から受信し、受信される前記メッセージの前記第２フィールドにより指定されるタイプが、前記マイクロサービスのアノテーションの入力タイプとマッチすることを条件として、前記マイクロサービスの処理ロジックを実行することにより応答するように構成された、コントローラを有する。
【０００７】
依存するタイプごとのマイクロサービスのアノテーションは、依存するタイプをレバレッジ（ｌｅｖｅｒａｇｅｓ）してメッセージにより転送されるデータを表すメッセージングフォーマットと結合され、複数のマイクロサービスを高速かつ容易に、自動的に調整するシステムを提供し、複数のマイクロサービスは正確に相互接続されたシステムとなる。
実施形態では、マイクロサービスのアノテーションとして機能する、依存するタイプに基づいて複数のマイクロサービスが調整される。これらのアノテーションは、マイクロサービスの設計者に過度な負担をかけることなく、複数のマイクロサービスの自動的な調整を可能とするに十分なセマンティック情報を提供する。
【０００８】
格納されたタイプのリストは、マイクロサービスのアノテーションに対して単純実装の確認機構（ｖａｌｉｄａｔｉｏｎ  ｍｅｃｈａｎｉｓｍ）を提供する。
【０００９】
マイクロサービスはデータ処理装置における原子的サービスである。原子的とは、ここでは役割が単一であること、又は機能が単一であることを意味する。マイクロサービスは、サービスの次元により、一般のウェブサービスとは区別される。例えば、一般のウェブサービスは、幅広い機能の一部として、何らかの認証を含むかも知れない。マイクロサービスベースの装置では、認証は専門のマイクロサービスである。
【００１０】
装置は、例えば、ウェブサーバ、または相互接続された複数のウェブサーバのネットワークである。かかるウェブサーバまたは複数のウェブサーバのネットワークは、インターネットを介してクライアント／ユーザに、データ処理サービスを提供する。
【００１１】
タイプは、装置中のデータによりインスタンス化される概念のセマンティック表現である。タイプはデータタイプとも言うときがある。マイクロサービスのアノテーションで指定されるタイプ、及びメッセージングフォーマットに従って構成されるメッセージで指定されるタイプは、依存するタイプ（ｄｅｐｅｎｄｅｎｔ  ｔｙｐｅｓ）である。依存するタイプは、それが表す値において何らかの制約を確立するデータタイプである。依存性は、タイプが、格納されたタイプのリストから制約される制約である。
【００１２】
格納されたタイプのリストは、装置中のデータのセマンティックモデル（ｓｅｍａｎｔｉｃ  ｍｏｄｅｌ）である。（データ処理要求として）装置に入力されるデータと、（データ処理要求に応じて）装置により出力されるデータと、中間データ（すなわち、入力データと出力データの中間のデータ）とは、セマンティックモデルで表現される概念をインスタンス化（ｉｎｓｔａｎｔｉａｔｅｓ）する。セマンティック表現は一以上の単語であり、そのセマンティックが概念を表すものである。データは、概念が表現可能な複数の値からの値または値の範囲を表すことにより、概念をインスタンス化する。
【００１３】
マイクロサービスは、処理ロジックを実行するプロセッサ（ＣＰＵ）、処理ロジックを格納するメモリ、及び処理データを格納するメモリであり得る。コントローラは、メモリに格納され、プロセッサにより実行される処理ロジックにより実現されてもよい。
【００１４】
任意的に、メッセージングフォーマットは、格納された前記タイプのリストから、要求された出力データの一以上のタイプを指定する第３フィールドを含み、前記メッセージング機構は、前記メッセージング機構に出力され、前記メッセージングフォーマットに従って構成されたメッセージを、アノテーションの一以上のタイプのうちの１つが前記メッセージの第３フィールドにより指定された一以上のタイプの１つとマッチする各マイクロサービスに、配信するように構成され、各マイクロサービスのコントローラは、受信されたメッセージの第２フィールドにより指定されたタイプが前記アノテーションの入力タイプとマッチしないことを条件として、前記マイクロサービスのアノテーションの入力タイプを前記メッセージの第３フィールドに付加することにより、前記メッセージを修正し、前記メッセージング機構を介して送信するために、修正された前記メッセージを出力するように構成される。
【００１５】
メッセージング機構は、例えば、メッセージが送信される複数のマイクロサービスの間のバス接続であり、マイクロサービス間のメッセージング機構に送信されるメッセージの格納された配信規則を実装するものである。すなわち、（マイクロサービスコントローラによりレバレッジされた）アノテーションのシステムとメッセージングフォーマットとのおかげで、複数のマイクロサービスによる連鎖的処理（ｃｈａｉｎ  ｐｒｏｃｅｓｓｉｎｇ）を実現するために、メッセージを、特定のマイクロサービス宛てにする必要はない。
【００１６】
有利にも、メッセージングフォーマット、メッセージング機構、及びアノテーションのシステムにより、自動的な方法で、複数のマイクロサービスの調整（すなわち、データ処理の要求を満たすために、ある順序での複数のマイクロサービスの起動（ｔｒｉｇｇｅｒｉｎｇ））が可能になる。（データ処理の要求の明示と見なし得る）メッセージは、最初に、要求される出力を提供できるマイクロサービスに配信される。次いで、それらのマイクロサービスが、そのメッセージに指定された入力以外の入力を要する場合、その要される入力を要求する新しいメッセージ（すなわち、データ処理の要求）が生成される。プロシージャ（ｐｒｏｃｅｄｕｒｅ）は、マイクロサービスが、メッセージにより指定された入力で、そのメッセージにより指定された出力を（そのアノテーションにより示されるように）提供できるまで、後ろ向きに繰り替えされる。概念的には、データ処理サービスを提供する必要があるマイクロサービスチェーン（ａ  ｃｈａｉｎ  ｏｆ  ｍｉｃｒｏｓｅｒｖｉｃｅｓ）において、メッセージは終わりから初め向きに伝搬され、処理は初めから終わり向きに行われる。
【００１７】
例えば、第３フィールドはスタックである。換言すると、タイプが第３フィールドに追加される順序は、メッセージの第３フィールド中に保存される。  かかる実施形態では、前記メッセージング機構は、前記メッセージング機構に出力され、前記メッセージングフォーマットに従って構成されたメッセージを、アノテーションの一以上のタイプのうちの１つが前記メッセージの第３フィールドにより指定された一以上のタイプの１つとマッチする各マイクロサービスに、配信するように構成される（すなわち、「トップ」スタック位置またはいずれかのスタック位置の出力タイプが、最も新しく追加されたことを示す）。
【００１８】
具体的に、第３フィールドは、スタック中の順序としてタイプを指定してもよく、メッセージング機構は、メッセージング機構に出力され、前記メッセージングフォーマットに従って構成されたメッセージを、アノテーションの一以上の出力タイプのうちの１つが前記メッセージの第３フィールドにより指定された一以上のタイプの１つとマッチする各マイクロサービスに、配信するように構成される。
【００１９】
有利にも、第３フィールドのスタックは、（出力タイプを参照して）処理ステップが実行される順序を定める。スタックは順序付けられたリストであり、その中のリストアイテムはそのリストに挿入の時間的順序に従って順序付けられる。
【００２０】
任意的に、各マイクロサービスのコントローラは、前記マイクロサービスの処理ロジックを実行するとき、前記出力データを出力するように構成される。
【００２１】
出力データは、処理ロジックを実行するマイクロサービスにより生成される。出力データのデータタイプは固定されてもよく、すなわち、マイクロサービスにより出力される単一タイプのデータがあってもよい。または、出力データのデータタイプは可変であってもよく、すなわち、マイクロサービスにより出力される２以上のデータタイプのデータがあってもよい。マイクロサービスのアノテーションは、固定出力データタイプの場合、単一タイプの出力を指定し、可変出力データタイプの場合、２以上のタイプの出力データを指定する。
【００２２】
さらに、出力データは、マイクロサービスのコントローラにより生成され、メッセージングフォーマットに従って構成された新しいメッセージとして、メッセージング機構に出力されてもよい。新しいメッセージは、    前記第１フィールドとして、前記出力データの仕様と、前記第２フィールドとして、前記処理ロジックの実行により生成される出力データのタイプと、前記第３フィールドとして、前記処理ロジックが実行され、前記出力データが生成され、前記出力データから、処理ロジックの実行により生成された出力データのタイプが除去されたことに応じて、受信されたメッセージの第３フィールドとを含む。
【００２３】
有利にも、マイクロサービスによりデータの処理が開始されると、上記の具体的な出力メッセージングプロトコルの、マイクロサービスの自動化された調整（ａｕｔｏｍａｔｅｄ  ｏｒｃｈｅｓｔｒａｔｉｏｎ）への寄与は、要求された出力タイプを生成できるマイクロサービスに配信され得るフォーマットで、かつ次のマイクロサービスに入力（すなわち、処理ロジックがちょうど実行されたマイクロサービスの出力）されるデータの多婦を決定できるフォーマットで、出力データを表すことにより行われる。
【００２４】
新しいメッセージは、例えば、共通識別子により元のメッセージ（メッセージの受信が処理ロジックの実行を起動（ｔｒｉｇｇｅｒ）した、そのメッセージ）にリンクされてもよい。
【００２５】
メッセージは、データ値またはデータ値のタプル（ｔｕｐｌｅ）を明示的に確定することによりデータを指定してもよい。あるいは、データは、格納位置への参照またはリンク、またはデータにアクセス可能な他の形式のアドレスにより指定されてもよい。具体的に、メッセージングフォーマットに従って構成されたメッセージは、第１フィールドを、入力されるデータがアクセスできるＵＲＩ（ｕｎｉｆｏｒｍ  ｒｅｓｏｕｒｃｅ  ｉｎｄｉｃａｔｏｒ）またはＵＲＬ（ｕｎｉｆｏｒｍ  ｒｅｓｏｕｒｃｅ  ｌｏｃａｔｏｒ）として表す。
【００２６】
有利にも、データ自体ではなくデータのロケータ（ｌｏｃａｔｏｒｓ）を交換することにより、（転送されるデータ量の点で）メッセージング機構におけるトラフィックが減少する。それゆえ、マイクロサービスを自動的に調整する手段としてメッセージを用いるメッセージング機構及び実施形態の構成が、容易になる。
【００２７】
本装置は、必要なデータ処理サービスを提供するように、複数のマイクロサービスの自動化された調整を可能にするようにアノテーションされた接続可能なマイクロサービスのシステムを提供する。実施形態では、データ処理要求を受信し、結果を出力する手段（インターフェース）も提供される。
【００２８】
本装置はさらに、要求インターフェースであって、データ処理要求を受信し、前記データ処理要求から、  入力データを指定する第１要求パラメータと、指定された前記第１要求パラメータの入力データによりインスタンス化される概念をセマンティック表現する第２要求パラメータと、受信されたデータ処理要求に応じて、出力データによりインスタンス化される一以上の概念をセマンティック表現する第３要求パラメータとを抽出し、前記要求インターフェースは、前記メッセージングフォーマットに従って構成されたメッセージを生成し、生成されたメッセージを前記メッセージング機構に出力するように構成され、生成されたメッセージは、前記第１フィールドとして前記第１要求パラメータと、前記第２フィールドとして前記第２要求パラメータと、前記第３フィールドとして前記第３要求パラメータとを含む。
【００２９】
要求は、第２と第３の要求パラメータとして、格納されたタイプのリストからタイプを含めるように制約されるように構成されてもよい。要求インターフェースは、例えば、アプリケーションプログラミングインターフェース（ＡＰＩ）またはグラフィカルユーザインターフェースであってもよい。要求インターフェースは、メッセージングフォーマットに従って構成され、受信された要求から抽出されたデータを含むメッセージを生成する。もちろん、要求インターフェースは、受信された要求のフォーマットがメッセージングフォーマットと同じか又は近いように、メッセージング機構を介して配信されるそのメッセージの生成に最小限の処理で済むように構成されてもよい。換言すると、要求インターフェースは、すでにメッセージングフォーマットを引き継いだ外部要求をメッセージング機構に、任意的に第４フィールドとして要求ＩＤを追加して、ルーティングしてもよい。
【００３０】
装置においてジョブ／タスクをトラッキングするプロシージャとして、要求インターフェースは受信されたデータ処理要求に参照ＩＤを割り当てるように構成されてもよい。前記メッセージングフォーマットは、前記メッセージが生成されるデータ処理要求を特定する第４フィールドを含む。要求受信者は、割り当てられた参照ＩＤを第４フィールドとして、生成されるメッセージに含めるように構成される。各マイクロサービスのコントローラは、前記マイクロサービスの処理ロジックの実行のときに生成される新しいメッセージに、第４フィールドとして、前記処理ロジックが実行されるのに応じて、受信されたメッセージの第４フィールドのコピーを含める。
【００３１】
留意点として、各マイクロサービスのコントローラは、前記メッセージを修正する際、前記第４フィールドを変更しないように構成される。
【００３２】
参照ＩＤの割り当ては、互いから受信した要求を識別するもの（すなわち、一意的な要求識別子）であるが、同じデータ処理要求に関して生成されたメッセージをリンクする手段を提供する。例えば、システム中の、データ処理要求を満たすデータがあることを検出でき、それらが生成されたデータ処理要求を識別するメッセージ（ｖｉｒｔｕｅ  ｍｅｓｓａｇｅｓ）により出力し得る。
【００３３】
本発明の他の一態様による実施形態は、マイクロサービスベースのデータ処理方法を含む。該方法は、タイプのリストを格納することであって、タイプは前記装置におけるデータによりインスタンス化される概念のセマンティック表現である、ことと、複数のマイクロサービスの各々について、      格納された前記タイプのリストからの入力タイプと、格納された前記タイプのリストからの一以上の出力タイプとのアノテーションと、実行されると、前記入力タイプによりセマンティック表現された概念をインスタンス化する入力データを、前記一以上の出力タイプのうちの１つによりセマンティック表現された概念をインスタンス化する出力データに変換する処理ロジックとを格納することとを含む。該方法はさらに、複数のマイクロサービスのうちのマイクロサービスにメッセージを介してデータを入力することであって、前記メッセージはメッセージングフォーマットに従って構成される、ことを含む。該メッセージングフォーマットは、入力される前記データを指定する第１フィールドと、前記第１フィールドのデータによりインスタンス化される概念をセマンティック表現する、格納された前記タイプのリストからのタイプを指定する第２フィールドとを含む。該方法はさらに、前記複数のマイクロサービスのうちの前記マイクロサービスにおいて、  前記メッセージングフォーマットに従って構成されたメッセージを前記メッセージング機構から受信し、受信される前記メッセージの前記第２フィールドにより指定されるタイプが、前記マイクロサービスのアノテーションの入力タイプとマッチすることを条件として、前記マイクロサービスの処理ロジックを実行することにより応答することを含む。
【００３４】
他の一態様の実施形態は、計算装置により実行されると、その計算装置に、一実施形態として上記した装置として機能させるコンピュータプログラムを含む。
【００３５】
他の一態様の実施形態は、計算装置により実行されると、その計算装置に、本明細書で一実施形態として上で又はその他で説明した方法を実行させるコンピュータプログラムを含む。
【００３６】
さらに、本発明の実施形態は、相互接続された複数の計算デバイスにより実行されると、その相互接続された複数の計算デバイスに、本発明を化体した方法を実行させるコンピュータプログラムまたはコンピュータプログラムスイートを含む。
【００３７】
また、本発明の実施形態は、相互接続された複数の計算デバイスにより実行されると、その相互接続された複数の計算デバイスに、一実施形態として本明細書に上に又はその他のところに記載した計算装置として機能させるコンピュータプログラム又はコンピュータプログラムのスイートを含む。
【図面の簡単な説明】
【００３８】
添付した図面を参照して、単なる例示により、本発明の好ましい特徴をここに説明する。
【図１】装置の実施形態を示す模式図である。
【図２】一実施形態によるマイクロサービスを示す模式図である。
【図３】一実施形態によるマイクロサービスにおける制御フローを示す図である。
【図４】一実施形態によるハードウェア構成を示す図である。
【発明を実施するための形態】
【００３９】
図１は、マイクロサービスベースのデータ処理装置１０を示す模式図である。装置１０は、タイプレジスタ１２、メッセージング機構１６、及び複数のマイクロサービス１４を含む。各マイクロサービス１４は、コントローラ１４１、アノテーション（ａｎｎｏｔａｔｉｏｎ）１４２、及び処理ロジック１４３を含む。マイクロサービス１４は、マイクロサービス１４とメッセージング機構１６との間の相互接続により示すように、メッセージング機構１６を解してメッセージを送信することにより、データを交換できる。マイクロサービス１４のアノテーション１４２は、マイクロサービス１４とタイプレジスタ１２との間の相互接続により示すように、タイプレジスタ１２の内容により制約される。
【００４０】
タイプレジスタ１２はタイプのリストを格納する。タイプは、装置中のデータによりインスタンス化される概念のセマンティック表現である。装置中のデータとは、複数のマイクロサービス中のマイクロサービス１４への入力、又はそれからの出力を構成するデータを意味する。言い換えると、複数のマイクロサービスにより処理されるデータである。セマンティック表現は概念を表す語または句である。データは、概念のインスタンスであること、またはそれを表現することにより、その概念をインスタンス化（ｉｎｓｔａｎｔｉａｔｅ）する。例えば、データは、プロパティ（概念）を定義する値または範囲または複数の値であり得る。複数のマイクロサービスに新しいマイクロサービスが追加されるたびに、その新しいマイクロサービス１４が、格納されたタイプのリスト１２から既存のタイプを入力データまたは出力データのアノテーションとして指定するか、または新しいマイクロサービスのアノテーション中の入力データまたは出力データをセマンティックに表現するタイプが、格納されたタイプのリストに追加される。
【００４１】
タイプレジスタ１２は、データストレージユニットにより提供されてもよく、データストレージ機能に加えて、格納されたタイプのリストの内容を問い合わせできる管理機能を含んでいてもよい。
【００４２】
装置１０は複数のマイクロサービス１４を有する。マイクロサービス１４は固有のタイプのモジュラーデータ処理アーキテクチャである。各マイクロサービス１４は、単一機能／役割のサービスである。マイクロサービス１４は、単一の機能／役割の合成を実現するため、ある順序で実行されるように調整されて、あるマイクロサービスの出力が他のマイクロサービスの入力になる。
【００４３】
処理ロジック１４３はマイクロサービス１４のデータ処理要素である。処理ロジックコンポーネント１４３は、その上でロジックが実行されるプロセッサを含んでもよい。
【００４４】
アノテーション１４２は、（メッセージング機構１６を介して）他のマイクロサービス１４に、マイクロサービス１４により提供される（処理ロジック１４３への入力データのタイプと、前記入力データの受信に応じて処理ロジック１４３により生成された出力データの一以上のタイプとを表現するセマンティックタームで表現された）単一機能を発行（ｐｕｂｌｉｓｈ）する。アノテーション１４２に含まれるセマンティック表現は、タイプレジスタ１２により格納されたリストのメンバーシップにより制約される。
【００４５】
コントローラ１４１は、アノテーション１４２を用いて、入ってくるデータにどう応答するか決定する。データは、メッセージング機構１６を介してマイクロサービス１４で受け取られる。メッセージング機構１６を介して受け取られるメッセージは、実際上、データ処理サービスに対する、そのメッセージにより指定されたタイプのデータを生成する要求である。
【００４６】
コントローラ１４１は、マイクロサービス１４のアノテーション１４２により指定された出力データのタイプにマッチする出力データのタイプを（格納されたタイプのリストから）指定するメッセージを受け取ると、処理できる指定されたデータ（すなわち、そのメッセージが処理を要求しているデータ）のタイプが、アノテーション１４２により指定された入力データのタイプにマッチするかチェックする。マッチすれば、コントローラ１４１は、マイクロサービス１４をトリガーして、（例えば、ＣＰＵ上で）処理ロジック１４３を実行する。マッチしなければ、コントローラ１４１は、メッセージング機構１６に出力する、修正メッセージを生成し、マイクロサービスに、受け取られたメッセージにより指定された処理できるデータを（入力として）用いて、アノテーション１４２により指定された入力タイプのデータを（出力として）生成するように要求する。
【００４７】
メッセージング機構１６は、例えば、サービスバスである。メッセージング機構１６は、それにしたがってメッセージが構成されるメッセージングフォーマットを指定（ｓｐｅｃｉｆｙ）する。マイクロサービス１４は、メッセージを互いにアドレス（ａｄｄｒｅｓｓ）しない。すなわち、マイクロサービスの設計において、他のマイクロサービスを知っている必要はない。マイクロサービス１４は、（コントローラ１４１を介して）メッセージング機構１６に、メッセージングフォーマットにしたがって構成したメッセージを出力する。メッセージング機構１６はメッセージを配信する。配信機構は、サブスクリプションベースシステムとして概念化されてもよい。各メッセージは、出力（生成）されることを要求されたデータの一以上のタイプを（格納されたタイプのリストから）指定する。各マイクロサービス１４は、各マイクロサービスが生成する出力データの一以上のタイプでアノテーションされる（ａｎｎｏｔａｔｅｄ）。出力されるアノテーション１４２のタイプは、実際上、サブスクリプションとして機能する。各マイクロサービス１４は、指定され出力された一以上のタイプの１つがマイクロサービス１４のアノテーション１４２の出力された一以上のタイプの１つとマッチするメッセージを受信する。
【００４８】
図２は、一実施形態における相互接続された複数のマイクロサービス１４を示す。各マイクロサービス１４は、下記要素を含む：
−  制御ロジック１４１、これは本文書で別途説明するコントローラの例であり、
−  アノテーション１４２、これは本文書で別途説明するアノテーションの例であり、
−  マイクロサービス１４３、これは本文書で別途説明する処理ロジックの例である。
サービスバス１６は、本文書で別途説明するメッセージング機構の例である。
【００４９】
マイクロサービス１４３は、データプロセッサであり、すなわち、命令や処理ロジックを実行して、ある機能を実現する、プログラムされたハードウェアである。マイクロサービス１４３は、付加要素、すなわちアノテーション１４２及び制御ロジック１４１で拡張される。
【００５０】
サービスバス１６は、マイクロサービス１４により、配信のために、メッセージが出力されるメッセージング機構である。マイクロサービス１４は、他のマイクロサービス１４ではなく、単にサービスバス１６と通信するように構成される必要がある。このように、各マイクロサービス１４は、マイクロサービス１４の、装置への追加または削除にしたがって再構成される必要はない。
【００５１】
制御ロジック１４１は、本装置中のすべてのマイクロサービス１４にわたる共通のオペレーションを含む。サービスバス１６からのメッセージは、制御ロジック１４１により受信され、処理される。
【００５２】
図３は、制御ロジック１４１により実行される処理のフロー例を示す。
【００５３】
制御ロジック１４１はすべてのマイクロサービス１４にわたる共通のオペレーション（ｏｐｅｒａｔｉｏｎ）である。制御ロジック１４１は、マイクロサービス１４がサービスバス１６から受信したメッセージがどのように処理されるかを決定する。ある実行におけるロジックの結果は、処理されるメッセージの内容と、マイクロサービス１４のアノテーション１４２とに依存する。
【００５４】
アノテーション１４２は、各マイクロサービスの入出力のセマンティック（ｓｅｍａｎｔｉｃｓ）をカプセル化する複数のタイプ（ｔｙｐｅｓ）を定義する。例えば、多くのエンティティは、本装置において、ストリングオブジェクトにより表されるだろう。しかし、アノテーション１４２により定義されるタイプは、データの形式（例えば、ストリング／数／タプル（ｔｕｐｌｅ））に関するタイプを指すのではなく、実際には、本装置においてデータによりインスタンス化される概念のセマンティック表現（ｓｅｍａｎｔｉｃ  ｅｘｐｒｅｓｓｉｏｎ）である。例えば、タイプは「タイトル名」、「人名」、「アドレス」、「名前」、「場所」、「時」を含み得る。マイクロサービス１４のアノテーション１４２は、少なくとも１つの入力タイプと、一以上の出力タイプを含む。入力タイプは、マイクロサービス１４３が操作可能（ｏｐｅｒａｂｌｅ）なデータのタイプを定義し、出力タイプは、マイクロサービス１４３の実行により生成されるデータのタイプ（格納されたタイプのリストのもの）を定義する。
【００５５】
サービスバス１６は、マイクロサービス１４の出力データを定義しているタイプに従ってメッセージを配信する。各メッセージは、メッセージ（実際には処理要求であるメッセージ）により求められる出力データのタイプを定義するフィールド（第３フィールド）を含む。任意的に、サービスバス１６は、各マイクロサービス１４に各メッセージを配信し、各マイクロサービス１４の制御ロジックは、ステップＳ３０１においてメッセージを受信すると、各マイクロサービス１４がそのメッセージにより求められるタイプの出力データを生成できるかどうか、アノテーション１４２において定義された出力データのタイプに基づいて、ステップＳ３０２において判定する。例えば、第３フィールドは、出力タイプのスタック（スタックとは、タイプが付加される順序を保存するバッグまたはリストまたはコンテナである）であり得る。各マイクロサービス１４の制御ロジックは、ステップＳ３０１においてメッセージを受信すると、各マイクロサービス１４が、スタック中の最も新しく付加されたことを示す位置にあるタイプにより定義されるタイプの出力データを生成できるかどうか、アノテーション１４２に定義された出力データのタイプに基づいて、ステップＳ３０２において判定する。代替的な実装として、サービスバス１６によりオペレーションされる加入サービス（ｓｕｂｓｃｒｉｐｔｉｏｎ  ｓｅｒｖｉｃｅ）は、マイクロサービス１４にメッセージ（各マイクロサービス１４により生成される出力タイプが、そのメッセージにより求められる出力データのタイプとマッチすること、メッセージにより求められる出力データのタイプが、スタック内の位置により示されるように、そのスタックに最も新しく付加されたタイプにより示されることを、アノテーション１４２が示す）を配信するだけであってもよい。例えば、格納されたタイプのリスト（図示せず）中に格納された各タイプは、対応するトピックを有する。トピックに対応するタイプの出力データを生成するマイクロサービス１４は、そのトピックに「加入（ｓｕｂｓｃｒｉｂｅ）」し、そのため加入したトピックに対応する出力タイプを指定するメッセージを受信する。
【００５６】
メッセージは、処理すべきデータを、（第１フィールド中において）例えば、データのＵＲＬやその他の参照により指定する。メッセージは、（第２フィールドにおいて）第１フィールドにより指定されるデータのタイプを指定する。指定されるタイプは格納されたタイプのリストのものである。メッセージは、（第３フィールドにおいて）スタックにより指定された順序で、出力として求めるデータの一以上のタイプを（格納されたタイプのリストから）指定する。メッセージは、装置１０またはマイクロサービス１４を含むシステムとの相互作用を特定する、すなわち装置１０またはシステムよりなる具体的な処理要求を特定する第４フィールドも含み得る。
【００５７】
マイクロサービス１４のアノテーション１４２により指定される一以上の出力タイプのうちの１つが、最も新しく付加されたことを示すスタック位置の出力タイプとマッチしないとき、ステップＳ３０２における制御ロジック１４１の結果はＮＯであり、受信されたメッセージに関してマイクロサービス１４においてさらに別の処理は行われない。マイクロサービス１４のアノテーション１４２により指定される一以上の出力タイプのうちの１つが、最も新しく付加されたことを示すメッセージの第３フィールドのスタック位置により指定される出力タイプにマッチする場合、ステップＳ３０２における制御ロジック１４１の結果はＹＥＳであり、処理はステップＳ３０３に進む。
【００５８】
実際、Ｓ３０３は、マイクロサービス１４がメッセージ（の第１フィールド）により指定されるデータを処理できるか、または付加的処理を要求すべきか、判定する。付加的処理は、問題となるマイクロサービス１４により処理され得るタイプのデータを生成するよう、他のマイクロサービスの実行を調整する。ステップＳ３０３において、メッセージにより指定される入力タイプを、マイクロサービス１４のアノテーション１４２により指定される一以上の入力タイプと比較する。マッチする場合、マイクロサービス１４は、メッセージにより指定されるタイプの出力データを生成するために、（最も新しく付加されたことを示す第３フィールドのスタックの位置にある）メッセージにより指定されるデータを処理でき、フローはステップＳ３０４に進み、メッセージが処理される。マッチしない場合、マイクロサービス１４はメッセージにより指定されたデータを処理できず、ステップＳ３０５において修正メッセージが生成される。
【００５９】
ステップＳ３０４において、マイクロサービス１４は、メッセージにより指定されるデータにアクセスし、その処理関数を実行し、出力を含む新しいメッセージを生成する。その新しいメッセージは、受信されたメッセージの相互作用ＩＤ（第４フィールド）と出力タイプ（第３フィールド）を受け継いでいる。受け継がれた出力タイプは、実行される処理関数により生成される出力タイプの、スタックからの除去により修正される。新しいメッセージの第１フィールドは、ステップＳ３０４の処理により生成されるデータを指定し、第２フィールドは、前記データのタイプを指定する。ステップＳ３０６において、新しいメッセージがサービスバス１６に出力される。
【００６０】
ステップＳ３０５において、受信されるメッセージは修正され、サービスバスを介して再循環（ｒｅｃｉｒｃｕｌａｔｅ）される。言うまでもなく、手順は反復的であり、ひとつながりのマイクロサービスはこのように調整され得る。修正メッセージは受信されるメッセージと、そのメッセージにより求められる出力のタイプを指定する第３フィールドを除き、同じである。マイクロサービス１４のアノテーション１４２により指定される入力タイプは、第３フィールドのスタックに付加され、最も新しく付加されたことを示すスタック位置を占め、そのため新しいメッセージは、入力として機能し得るタイプの出力を生成するマイクロサービスを探す（また、スタックにより定義される順序で以前に探した一以上の出力タイプを指定する）。ステップＳ３０７において、修正メッセージがサービスバス１６に出力される。
【００６１】
ここで、作業例について詳細に説明する。マイクロサービス１４は次の情報を含むアノテーション１４２を有する：ＩｎｃｏｍｉｎｇＭｅｅｔｉｎｇＡｇｒｅｅｍｅｎｔ→ＭｅｅｔｉｎｇＣｏｎｆｉｒｍａｔｉｏｎ。ここで、“ＩｎｃｏｍｉｎｇＭｅｅｔｉｎｇＡｇｒｅｅｍｅｎｔ”は指定された入力タイプであり、“ＭｅｅｔｉｎｇＣｏｎｆｉｒｍａｔｉｏｎ”は指定された出力タイプである。換言すると、マイクロサービス１４は、“ＩｎｃｏｍｉｎｇＭｅｅｔｉｎｇＡｇｒｅｅｍｅｎｔ”とセマンティックに表現される概念をインスタンス化するデータを“ＭｅｅｔｉｎｇＣｏｎｆｉｒｍａｔｉｏｎ”とセマンティックに表現される概念をインスタンス化するデータに変換する処理ロジックを格納する。
【００６２】
マイクロサービス１４は次のメッセージを受信する：（Ｍｓｇ  ４７６  ｖａｌ：“Ｂｏｗｍａｎ”  Ｎａｍｅ  （ＭｅｅｔｉｎｇＣｏｎｆｉｒｍａｔｉｏｎ／Ｎｏｔｉｆｉｃａｔｉｏｎ））。第１フィールドは“Ｂｏｗｍａｎ”であり、これは処理される値である。第２フィールドは“Ｎａｍｅ”であり、これは“Ｂｏｗｍａｎ”によりインスタンス化される概念のセマンティック表現（すなわち、処理される値のタイプ）である。第３フィールドは、“ＭｅｅｔｉｎｇＣｏｎｆｉｒｍａｔｉｏｎ／Ｎｏｔｉｆｉｃａｔｉｏｎ”であり、これは要求されるマイクロサービス出力のタイプである。また、この具体例では、“Ｍｓｇ”は値がメッセージに対応することを示す。第４フィールド“４７６”は、メッセージを生じさせる装置になされる処理要求のＩＤである。
【００６３】
マイクロサービス１４は、“ＭｅｅｔｉｎｇＣｏｎｆｉｒｍａｔｉｏｎ”を生成でき、それゆえメッセージを受信し、及び／又は制御ロジック１４１のステップＳ３０２において「ＹＥＳ」と応える。しかし、マイクロサービス１４は、“ＩｎｃｏｍｉｎｇＭｅｅｔｉｎｇＡｇｒｅｅｍｅｎｔ”を処理する。これは“Ｎａｍｅ”とマッチしない。それゆえ、ステップＳ３０３における答えは「ＮＯ」であり、ステップＳ３０５において修正メッセージが生成される。
【００６４】
新しいメッセージは、“ＩｎｃｏｍｉｎｇＭｅｅｔｉｎｇＡｇｒｅｅｍｅｎｔ”によりセマンティックに表現される概念をインスタンス化するデータを出力する他のマイクロサービス１４を探す。修正メッセージは次の通りである：（Ｍｓｇ  ４７６  ｖａｌ：“Ｂｏｗｍａｎ”  Ｎａｍｅ（ＩｎｃｏｍｉｎｇＭｅｅｔｉｎｇＡｇｒｅｅｍｅｎｔ／ＭｅｅｔｉｎｇＣｏｎｆｉｒｍａｔｉｏｎ／Ｎｏｔｉｆｉｃａｔｉｏｎ））
元のメッセージと比較して、マイクロサービス１４により要求される入力が第３フィールドに付加されていることが分かる。このように、タイプのスタックが第３フィールドに形成される。処理が実行されと、第３フィールドからタイプが除去され、処理が必要になると、第３フィールドに追加される。
【００６５】
他のマイクロサービスがメッセージを受信する。他のマイクロサービスは、出力タイプとして“ＩｎｃｏｍｉｎｇＭｅｅｔｉｎｇＡｇｒｅｅｍｅｎｔ”、及び入力タイプとして“Ｎａｍｅ”とアノテーションされ、それゆえそのマイクロサービスの処理ロジックは、タイプ“Ｎａｍｅ”の値“Ｂｏｗｍａｎ”により指定されるデータに対して実行される。出力データは、“ＩｎｃｏｍｉｎｇＭｅｅｔｉｎｇＡｇｒｅｅｍｅｎｔ”によりセマンティックに表現される概念をインスタンス化する。
【００６６】
他のマイクロサービスは次のような新しいメッセージを生成する：（Ｍｓｇ  ４７６  ｒｅｆ：“４００４”  ＩｎｃｏｍｉｎｇＭｅｅｔｉｎｇＡｇｒｅｅｍｅｎｔ  （ＭｅｅｔｉｎｇＣｏｎｆｉｒｍａｔｉｏｎ／Ｎｏｔｉｆｉｃａｔｉｏｎ））
ここで、Ｍｓｇは、値がメッセージに対応することを示す；４７６はシステムとの相互作用のＩＤである（第４フィールド）；Ｒｅｆ：“４００４”は、メッセージにより記述される値の位置に対する参照である（第１フィールド）；“ＩｎｃｏｍｉｎｇＭｅｅｔｉｎｇＡｇｒｅｅｍｅｎｔ”は、値のタイプである（第２フィールド）；及び“ＭｅｅｔｉｎｇＣｏｎｆｉｒｍａｔｉｏｎ／Ｎｏｔｉｆｉｃａｔｉｏｎ”は、要求された出力タイプのスタックであり、成功裡に出力された“ＩｎｃｏｍｉｎｇＭｅｅｔｉｎｇＡｇｒｅｅｍｅｎｔ”が、第３フィールドから除去されたことを示す。
【００６７】
実施例においてメッセージを最初に受信したマイクロサービス１４は、そのメッセージを受信し、そのアノテーション１４２にしたがって、“ＭｅｅｔｉｎｇＣｏｎｆｉｒｍａｔｉｏｎ”を生成できる。これは新しく受信したメッセージの第３フィールドとマッチする。さらに、アノテーションの入力タイプにより示されるように、マイクロサービス１４は、メッセージの第２フィールドにより指定される“ＩｎｃｏｍｉｎｇＭｅｅｔｉｎｇＡｇｒｅｅｍｅｎｔ”を処理できる。それゆえ、処理ロジック１４３は、第１フィールドにより指定される“ＩｎｃｏｍｉｎｇＭｅｅｔｉｎｇＡｇｒｅｅｍｅｎｔ”に対して実行される。
【００６８】
“ＭｅｅｔｉｎｇＣｏｎｆｉｒｍａｔｉｏｎ”（または、“ＭｅｅｔｉｎｇＣｏｎｆｉｒｍａｔｉｏｎ”によりセマンティックに表現される概念をインスタンス化するデータ）が出力され、新しいメッセージが生成される。新しいメッセージは次の通りである：（Ｍｓｇ  ４７６  ｒｅｆ：“１９８９”  ＭｅｅｔｉｎｇＣｏｎｆｉｒｍａｔｉｏｎ  （Ｎｏｔｉｆｉｃａｔｉｏｎ））。
【００６９】
新しいメッセージにおいて、４７６はシステムとの相互作用のＩＤである（第４フィールド）；Ｒｅｆ：“１９８９”は、メッセージにより記述される値の位置に対する参照である（第１フィールド）；“ＭｅｅｔｉｎｇＣｏｎｆｉｒｍａｔｉｏｎ”は、値のタイプである（第２フィールド）；及び“Ｎｏｔｉｆｉｃａｔｉｏｎ”は、要求された出力タイプのスタックであり、成功裡に出力された“ＭｅｅｔｉｎｇＣｏｎｆｉｒｍａｔｉｏｎ”が、第３フィールドから除去されたことを示す。
【００７０】
出力タイプとして“Ｎｏｔｉｆｉｃａｔｉｏｎ”、及び入力タイプとして“ＭｅｅｔｉｎｇＣｏｎｆｉｒｍａｔｉｏｎ”とアノテーションされたさらに別のマイクロサービスが、通知を生成して出力する。こうして要求の処理が完了する（これは、第３フィールドから残っていたタイプを除去することにより、さらに別のマイクロサービスにより検出可能である）。実装に応じて、例えば、題意３フィールドを空欄として（ｎｕｌｌ  ｔｈｉｒｄ  ｆｉｅｌｄ）、メッセージがさらに別のマイクロサービスにより出力されてもよい。第３フィールドが空欄であると、メッセージはどのマイクロサービスにも配信されないが、例えばサービスログその他のエンティティに、要求の処理が完了したことを示すことができる。任意的に、処理を完了するマイクロサービスはメッセージを出力しない。要求は満たされ、別の処理は無いからである。
【００７１】
図４は、一実施形態によるハードウェア構成を示す図である。  図４は、ウェブサーバなどの計算デバイスを示すブロック図である。この計算デバイスは本発明を具現化し、一実施形態による方法を実装するのに使われても良い。計算デバイスはプロセッサ９９３とメモリ９９４を有する。任意的に、計算デバイスは、他の計算デバイスと、例えば本発明の実施形態の計算デバイスと通信するネットワークインターフェース９９７も含む。
【００７２】
例えば、一実施形態は、かかる計算デバイスのネットワークより構成されていてもよい。任意的に、計算デバイスは、キーボードとマウス９９６などの一以上の入力メカニズムと、一以上のモニタ９９５などのディスプレイユニットとも含む。コンポーネントはバス９９２を介して互いに接続可能である。
【００７３】
メモリ９９４はコンピュータ読み取り可能媒体を含む。この用語は、例えば、コンピュータ実行可能命令を担い、又はその中にデータ構造を格納するように構成された１つの媒体又は複数の媒体（例えば、集中型または分散型データベース及び／又は関連するキャッシュ及びサーバ）を指す。コンピュータ実行可能命令は、例えば、命令とデータであって、汎用コンピュータ、特殊用途コンピュータ、又は特殊用途プロセッサデバイス（例えば、一以上のプロセッサ）によりアクセス可能であり、これらに一以上の機能又は動作を実行させるものを含んでもよい。このように、「コンピュータ読み取り可能記憶媒体」との用語は、そのマシンにより実行される一組の命令を記憶、エンコード、または担うことができ、そのマシンに、本開示の方法のいずれかを実行させる任意の媒体を含む。したがって、「コンピュータ可読記憶媒体」との用語は、固体メモリ、光媒体及び磁気媒体を含むが、これらに限定されない。限定ではなく例として、かかるコンピュータ読み取り可能媒体は、非一時的コンピュータ読み取り可能記憶媒体を含む、ランダムアクセスメモリ（ＲＡＭ）、リードオンリーメモリ（ＲＯＭ）、電気的消去可能プログラマブルリードオンリーメモリ（ＥＥＰＲＯＭ）、コンパクトディスクリードオンリーメモリ（ＣＤ−ＲＯＭ）又はその他の光ディスク記憶媒体、磁気ディスク記憶媒体又はその他の磁気記憶デバイス、フラッシュメモリデバイス（例えば、固体メモリデバイス）を含む。
【００７４】
プロセッサ９９３は、計算デバイスを制御し、処理動作を実行し、例えば、本明細書及び特許請求の範囲に記載したマイクロサービスの様々な機能を実装する、メモリに格納されたコードを実行するように構成されている。メモリ９９４はプロセッサ９９３により読み書きされるデータを格納する。本明細書に説明するように、プロセッサは、マイクロプロセッサ、中央処理装置などの一以上の汎用処理デバイスを含んでも良い。プロセッサは、例えば、ＣＩＳＣ（ｃｏｍｐｌｅｘ  ｉｎｓｔｒｕｃｔｉｏｎ  ｓｅｔ  ｃｏｍｐｕｔｉｎｇ）マイクロプロセッサ、ＲＩＳＣ（ｒｅｄｕｃｅｄ  ｉｎｓｔｒｕｃｔｉｏｎ  ｓｅｔ  ｃｏｍｐｕｔｉｎｇ）マイクロプロセッサ、ＶＬＩＷ（ｖｅｒｙ  ｌｏｎｇ  ｉｎｓｔｒｕｃｔｉｏｎ  ｗｏｒｄ）マイクロプロセッサ、他の命令セットを実装したプロセッサ、又は複数の命令セットの組み合わせを実装したプロセッサを含む。プロセッサは、例えば、一以上の特殊用途処理デバイス、例えば特定用途集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、デジタル信号プロセッサ（ＤＳＰ）、ネットワークプロセッサなどを含む。一以上の実施形態では、プロセッサは、本明細書で説明される動作及びステップを実行する命令を実行するように構成されている。
【００７５】
ディスプレイユニット９９７は、計算デバイスにより格納されたデータを表示してもよく、ユーザと、計算デバイスに格納されたプログラム及びデータとの間のインターラクションを可能にするカーソル、ダイアローグボックス及びスクリーンを表示してもよい。入力メカニズム９９６は、例えば、ユーザが計算デバイスにデータ及び命令を入力できるようにする。
【００７６】
ネットワークインターフェース（ネットワークＩ／Ｆ）９９７は、インターネットなどのネットワークに接続されてもよく、そのネットワークを介して他の計算デバイスに接続可能である。ネットワークＩ／Ｆ９９７は、例えば、ネットワークを介して他の装置との間でのデータ入出力を制御する。マイクロホン、スピーカ、プリンタ、パワーサプライ、ファン、ケース、スキャナー、トラッカーボールなどの他の周辺デバイスが計算デバイスに含まれても良い。
【００７７】
図１ないし３のマイクロサービスベースのデータ処理装置１０は、メモリ９９４に格納された処理命令（プログラム）を実行し、ネットワークＩ／Ｆ９９７を介してデータを交換するプロセッサ９９３（または複数のプロセッサ）であってもよい。具体的に、プロセッサ９９３は、処理命令を実行して、外部デバイスからのデータ処理要求をネットワークＩ／Ｆを介して受信し、マイクロサービスを介して、その要求に従った処理を実行してもよい。さらに、プロセッサ９９３は、処理命令を実行して、接続されたストレージユニットにマイクロサービス１４を格納し、メッセージング機構を介して、マイクロサービスとの間で、ネットワークＩ／Ｆ９９７を介して、処理のためメッセージを送信してもよい。
【００７８】
図１ないし３のマイクロサービス１４は、メモリ９９４に格納された処理命令（プログラム）を実行し、ネットワークＩ／Ｆ９９７を介してデータを交換するプロセッサ９９３（または複数のプロセッサ）であってもよい。ここで、ネットワークＩ／Ｆはメッセージング機構１６の機能を実装するものである。具体的に、プロセッサ９９３は処理命令を実行して、要求インターフェースまたはその他のマイクロサービスからメッセージングフォーマットにしたがって構成されたメッセージをネットワークＩ／Ｆを介して受信し、受信されたメッセージをコントローラ１４１及び処理ロジック１４３を介して処理してもよい。さらに、プロセッサ９９３は、処理命令を実行して、処理ロジック１４３により生成された出力データを、接続されたストレージユニットに格納し、ネットワークＩ／Ｆを介して、他のマイクロサービスに配信するため、出力データ及び／又は新しい又は修正されたメッセージをメッセージング機構に送信してもよい。
【００７９】
本発明を具体化する方法は、図４に示したような計算デバイスで実行されてもよい。かかる計算デバイスは、図４に示したすべてのコンポーネントを有する必要はなく、それらのコンポーネントの一部により構成されてもよい。本発明を実施する方法は、ネットワークを介して一以上のデータ記憶サーバと通信する１つの計算デバイスにより実行されてもよい。計算デバイスは、マイクロサービス１４とその出力データを格納するデータストレージ自体であってもよい。
【００８０】
本発明を具現化する方法は、互いに協働する複数の計算デバイスにより実行されてもよい。複数の計算デバイスのうちの一以上は、マイクロサービス１４及びそれぞれの出力データの少なくとも一部を記憶するデータストレージサーバであってもよい。
【００８１】
以下、付記する。
（付記１）
マイクロサービスベースのデータ処理装置であって、
タイプのリストを格納するタイプレジスタであって、タイプは前記装置におけるデータによりインスタンス化される概念のセマンティック表現である、タイプレジスタと、
複数のマイクロサービスであって、各マイクロサービスは、
格納された前記タイプのリストからの入力タイプと、格納された前記タイプのリストからの一以上の出力タイプとのアノテーションと、
実行されると、前記入力タイプによりセマンティック表現された概念をインスタンス化する入力データを、前記一以上の出力タイプのうちの１つによりセマンティック表現された概念をインスタンス化する出力データに変換する処理ロジックとを含む、複数のマイクロサービスと、
前記複数のマイクロサービスのうちのマイクロサービスにメッセージを介してデータを入力するメッセージング機構であって、前記メッセージング機構は前記メッセージが構成されるメッセージングフォーマットメッセージングフォーマットを定義し、前記メッセージングフォーマットは、
入力される前記データを指定する第１フィールドと、
前記第１フィールドのデータによりインスタンス化される概念をセマンティック表現する、格納された前記タイプのリストからのタイプを指定する第２フィールドとを含む、メッセージング機構とを有し、
各マイクロサービスはさらに、
コントローラであって、前記メッセージングフォーマットに従って構成されたメッセージを前記メッセージング機構から受信し、受信される前記メッセージの前記第２フィールドにより指定されるタイプが、前記マイクロサービスのアノテーションの入力タイプとマッチすることを条件として、前記マイクロサービスの処理ロジックを実行することにより応答するように構成された、コントローラを有する、
装置。
（付記２）
前記メッセージングフォーマットはさらに、
格納された前記タイプのリストから、要求された出力データの一以上のタイプを指定する第３フィールドを含み、
前記メッセージング機構は、前記メッセージング機構に出力され、前記メッセージングフォーマットに従って構成されたメッセージを、アノテーションの一以上のタイプのうちの１つが前記メッセージの第３フィールドにより指定された一以上のタイプの１つとマッチする各マイクロサービスに、配信するように構成され、
各マイクロサービスのコントローラは、受信されたメッセージの第２フィールドにより指定されたタイプが前記アノテーションの入力タイプとマッチしないことを条件として、前記マイクロサービスのアノテーションの入力タイプを前記メッセージの第３フィールドに付加することにより、前記メッセージを修正し、前記メッセージング機構を介して送信するために、修正された前記メッセージを出力するように構成される、
付記１に記載の装置。
（付記３）
前記第３フィールドは、タイプをスタック中の順序として指定し、
前記メッセージング機構は、前記メッセージング機構に出力され、前記メッセージングフォーマットに従って構成されたメッセージを、アノテーションの一以上のタイプのうちの１つが前記メッセージの第３フィールドにより指定された一以上のタイプの１つとマッチする各マイクロサービスに、配信するように構成される、
付記２に記載の装置。
（付記４）
各マイクロサービスのコントローラは、前記マイクロサービスの処理ロジックを実行するとき、前記出力データを出力するように構成される、
付記１に記載の装置。
（付記５）
前記出力データは、前記マイクロサービスのコントローラにより生成され、前記メッセージングフォーマットに従って構成された新しいメッセージとして、前記メッセージング機構に出力され、前記新しいメッセージは、
前記第１フィールドとして、前記出力データの仕様と、
前記第２フィールドとして、前記処理ロジックの実行により生成される出力データのタイプと、
前記第３フィールドとして、前記処理ロジックが実行され、前記出力データが生成され、前記出力データから、処理ロジックの実行により生成された出力データのタイプが除去されたことに応じて、受信されたメッセージの第３フィールドとを含む、
付記４に記載の装置。
（付記６）
前記メッセージングフォーマットに従って構成されたメッセージは、入力されるデータがアクセス可能であるＵＲＬとして前記第１フィールドを表す、
付記１に記載の装置。
（付記７）
要求インターフェースであって、データ処理要求を受信し、前記データ処理要求から、
入力データを指定する第１要求パラメータと、
指定された前記第１要求パラメータの入力データによりインスタンス化される概念をセマンティック表現する第２要求パラメータと、
受信されたデータ処理要求に応じて、出力データによりインスタンス化される一以上の概念をセマンティック表現する第３要求パラメータとを抽出し、
前記要求インターフェースは、前記メッセージングフォーマットに従って構成されたメッセージを生成し、生成されたメッセージを前記メッセージング機構に出力するように構成され、生成されたメッセージは、
前記第１フィールドとして前記第１要求パラメータと、
前記第２フィールドとして前記第２要求パラメータと、
前記第３フィールドとして前記第３要求パラメータとを含む、
付記１に記載の装置。
（付記８）
前記要求インターフェースは、受信したデータ処理要求に、参照ＩＤを割り当てるように構成され、
前記メッセージングフォーマットは、前記メッセージが生成されるデータ処理要求を特定する第４フィールドを含み、
要求受信者は、割り当てられた参照ＩＤを第４フィールドとして、生成されるメッセージに含めるように構成され、
各マイクロサービスのコントローラは、前記マイクロサービスの処理ロジックの実行のときに生成される新しいメッセージに、第４フィールドとして、前記処理ロジックが実行されるのに応じて、受信されたメッセージの第４フィールドのコピーを含める、
付記５に記載の装置。
（付記９）
各マイクロサービスのコントローラは、前記メッセージを修正する際、前記第４フィールドを変更しないように構成される、
付記２に記載の装置。
（付記１０）
前記複数のマイクロサービスへの新しいマイクロサービスの追加を管理するように構成されたマイクロサービスマネージャであって、
前記複数のマイクロサービスに含める新しいマイクロサービスを受信するように構成され、前記新しいマイクロサービスは、
実行時、前記新しいマイクロサービスにより処理されるデータによりインスタンス化される概念をセマンティック表現する入力タイプと、
前記新しいマイクロサービスによるデータ処理の結果によりインスタンス化される概念をセマンティック表現する出力タイプとを含み、
前記新しいマイクロサービスは、
実行されると、前記入力タイプによりセマンティック表現された概念をインスタンス化する入力データを、前記出力タイプによりセマンティック表現された概念をインスタンス化する出力データに変換する処理ロジックとを含む、複数のマイクロサービスを有し、
前記マイクロサービスマネージャはさらに、
前記タイプレジスタに、前記新しいマイクロサービスがアノテーションされる前記入力タイプと前記出力タイプとを追加し、
前記複数のマイクロサービス１４に前記マイクロサービスを追加するように構成される、
付記１に記載の装置。
（付記１１）
前記複数のマイクロサービスはメモリに格納される、
付記１０に記載の装置。
（付記１２）
前記マイクロサービスマネージャはさらに、前記複数のマイクロサービスからのマイクロサービスの除去を管理するように構成され、前記マイクロサービスの除去を管理することは、
前記マイクロサービスがアノテーションされる入力タイプが前記複数のマイクロサービスの残りのアノテーションに無ければ、格納された前記タイプのリストから前記入力タイプを削除することと、
前記マイクロサービスがアノテーションされる出力タイプが前記複数のマイクロサービスの残りのアノテーションに無ければ、格納された前記タイプのリストから前記出力タイプを削除することと、
前記メモリの前記複数のマイクロサービスから前記マイクロサービスを削除することとを含む、
付記１１に記載の装置。
（付記１３）
マイクロサービスベースのデータ処理方法であって、
タイプのリストを格納することであって、タイプは装置におけるデータによりインスタンス化される概念のセマンティック表現である、ことと、
複数のマイクロサービスの各々について、
格納された前記タイプのリストからの入力タイプと、格納された前記タイプのリストからの一以上の出力タイプとのアノテーションと、
実行されると、前記入力タイプによりセマンティック表現された概念をインスタンス化する入力データを、前記一以上の出力タイプのうちの１つによりセマンティック表現された概念をインスタンス化する出力データに変換する処理ロジックとを格納することとを含み、
前記方法はさらに、
メッセージを介して、前記複数のマイクロサービスのうちのマイクロサービスにデータを入力することであって、前記メッセージはメッセージングフォーマットに従って構成され、前記データは前記メッセージングフォーマットとして入力され、前記メッセージングフォーマットは、
入力される前記データを指定する第１フィールドと、
前記第１フィールドのデータによりインスタンス化される概念をセマンティック表現する、格納された前記タイプのリストからのタイプを指定する第２フィールドとを含む、ことを含み、
前記方法はさらに、前記複数のマイクロサービスのうちの前記マイクロサービスにおいて、
前記メッセージングフォーマットに従って構成されたメッセージをメッセージング機構から受信し、受信される前記メッセージの前記第２フィールドにより指定されるタイプが、前記マイクロサービスのアノテーションの入力タイプとマッチすることを条件として、前記マイクロサービスの処理ロジックを実行することにより応答することを含む、
方法。
（付記１４）
計算装置により実行されると、前記計算装置に付記１３に記載の方法を実行させるコンピュータプログラム。
（付記１５）
計算装置により実行されると、前記計算装置に、付記１に記載の装置として機能させるソフトウェア。
【符号の説明】
【００８２】
１２  タイプレジスタ
１４  マイクロサービス
１４１  コントローラ
１４２  アノテーション
１４３  処理ロジック
１６  メッセージング機構
【図１】
2018073400.tif 000003
【図２】
2018073400.tif 000004
【図３】
2018073400.tif 000005
【図４】
2018073400.tif 000006
【外国語明細書】
2018073400000001.pdf