(58)【調査した分野】(Int.Cl.,DB名)
ソフトウェアサービス実行装置であって、プロセッサハードウェアと、前記プロセッサハードウェアに結合されるメモリハードウェアと、を有し、前記メモリハードウェアは複数のソフトウェアサービスの各々を識別するレジストリを格納するよう構成され、各々の識別されたソフトウェアサービスは、前記レジストリの中で指定される個々のデータ処理機能を実行するよう構成され、
前記プロセッサハードウェアは、前記メモリハードウェアに格納された処理命令を実行して、
ソフトウェア実行制御プロセスであって、複数のデータ処理要求の各々について、
前記データ処理要求を受信するステップであって、前記受信したデータ処理要求は、1又は複数の要求データ処理機能を定める、ステップと、
前記レジストリの中で識別される前記複数のソフトウェアサービスの中から1又は複数のソフトウェアサービスの実行スケジュールを構成するステップであって、前記1又は複数の要求データ処理機能の各々について、前記レジストリの中で指定される前記データ処理機能が前記要求データ処理機能と一致するソフトウェアサービスを識別すること、及び前記識別したソフトウェアサービスを前記実行スケジュールに含めることにより、前記受信したデータ処理要求を満たす、ステップと、
前記実行スケジュールの実行を制御するステップと、
を含むソフトウェア実行制御プロセスと、
機械学習メカニズムプロセスであって、前記受信したデータ処理要求の各々について、前記実行スケジュールの前記構成及び前記実行スケジュールの前記実行の記録を維持し、前記実行の前記記録は、前記個々のデータ処理要求の前記実行スケジュールの前記の制御される実行の中で前記ソフトウェア実行制御プロセスにより呼び出される前記ソフトウェアサービスの各々について、前記ソフトウェアサービスの実行された処理の結果の指示を、タイムアウト又は処理結果の出力として有する、機械学習メカニズムプロセスと、
を実行するよう構成され、
前記構成するステップは、自動構成モードで、前記レジストリの中で指定される単一の処理機能が前記要求データ処理機能のうちの1つに一致する1より多くのソフトウェアサービスが識別される場合、前記機械学習メカニズムプロセスによる自動選択候補として、前記1より多くのソフトウェアサービスの中から1つのソフトウェアサービスの選択を要求するステップを有し、
前記機械学習メカニズムプロセスは、前記選択の要求に対して、前記自動選択候補の中からの1つのソフトウェアサービスの選択により応答するステップであって、前記自動選択候補のうちのいずれかが識別され又は実行される実行スケジュールの前記構成及び実行の記録の分析に前記選択の基礎を置く、ステップを有する、
ソフトウェアサービス実行装置。
前記実行スケジュールの実行を制御するステップは、前記レジストリの中で指定される前記個々のデータ処理機能を前記受信したデータ処理要求により決定される入力データに対して実行するために前記実行スケジュールに含まれる前記の又は各ソフトウェアサービス、及び/又は前記実行スケジュールに含まれる先行するソフトウェアサービス、を呼び出すステップを有する、
請求項1に記載のソフトウェアサービス実行装置。
前記構成するステップは、手動構成モードで、前記レジストリの中で指定される前記処理機能が前記要求データ処理機能のうちの1つと一致する1より多くのソフトウェアサービスが識別される場合、前記ソフトウェアサービス実行装置のユーザによる手動選択候補として、前記1より多くのソフトウェアサービスの中からの1つのソフトウェアサービスの選択を要求するステップと、前記ユーザから要求選択を受信するステップと、を含み、
前記機械学習メカニズムプロセスは、前記個々のデータ処理要求の前記実行スケジュールの前記構成の前記記録の中に、前記手動選択候補のアイデンティティ及び前記受信したユーザ選択の指示を含め、
前記機械学習メカニズムプロセスは、少なくとも部分的に、前記自動選択候補に一致する手動選択候補の中からの前記受信したユーザ選択の前記記録された指示に、前記自動選択候補の中からの1つのソフトウェアサービスの前記選択の基礎を置く、
請求項2に記載のソフトウェアサービス実行装置。
前記機械学習メカニズムプロセスは、前記自動選択候補のうちのいずれかが識別され又は実行される実行スケジュールの前記構成及び実行の記録の前記分析の結果として、前記自動選択候補の中からの1つのソフトウェアサービスの前記選択における信頼度を生成するステップを有し、
前記構成するステップは、前記生成された信頼度が閾最小値より高い場合、1つのソフトウェアサービスの前記選択を前記実行スケジュールに追加するステップと、前記生成された信頼度が閾最小値以下である場合、前記要求データ処理機能を実行するために、1つのソフトウェアサービスの選択のために前記手動構成モードに戻るステップと、を有する、
請求項5に記載のソフトウェアサービス実行装置。
前記機械学習メカニズムプロセスにより維持される前記実行スケジュールの前記構成の前記記録は、前記受信したデータ処理要求により定められる前記1又は複数の要求データ処理機能の各々について、前記ソフトウェア実行制御プロセスからの呼び出しの中で識別される前記入力データの1又は複数の特性の値を有し、
前記機械学習メカニズムプロセスは、少なくとも部分的に、前記要求データ処理機能の前記入力データの特性の値と前記手動選択候補のうちの1又は複数が前記自動選択候補の中にある構成の記録の中の前記入力データの前記1又は複数の特性の値との間の類似性の定量化に、前記自動選択候補の中からの1つのソフトウェアサービスの前記選択の基礎を置く、
請求項5に記載のソフトウェアサービス実行装置。
前記受信したデータ処理要求により定められる前記1又は複数の要求データ処理機能は、要求データ処理機能シリーズとして定められ、前記実行スケジュールの前記構成は、各々の要求データ処理機能について、前記データ処理要求により定められる先行する要求データ処理機能についての前記実行スケジュールの前記構成及び実行に続いて実行される、
請求項1に記載のソフトウェアサービス実行装置。
【発明の概要】
【0005】
本発明の実施形態は、ソフトウェアサービス実行装置であって、複数のソフトウェアサービスの各々を識別するレジストリであって、各識別されたソフトウェアサービスは前記レジストリ内で指定される個々のデータ処理機能を実行するよう構成される、レジストリと、ソフトウェア実行制御部であって、複数のデータ処理要求の各々について、前記データ処理要求を受信し、受信したデータ処理要求は1又は複数の要求データ処理機能を定め、前記レジストリ内の前記複数のソフトウェアサービスの中からの1又は複数のソフトウェアサービスの実行スケジュールを構成して、前記1又は複数の要求データ処理機能の各々について、前記レジストリ内で指定された前記処理機能が前記要求データ処理機能に一致するソフトウェアサービスを識別すること、及び前記識別したソフトウェアサービスを前記実行スケジュールに含めること、により前記受信したデータ処理要求を満たし、前記実行スケジュールの実行を制御する、よう構成されるソフトウェア実行制御部と、を有する、ソフトウェアサービス実行装置を含む。装置は、機械学習メカニズムであって、受信したデータ処理要求の各々について、前記実行スケジュールの前記構成及び前記実行スケジュールの前記実行の記録を維持するよう構成される機械学習メカニズムを更に有し、前記構成は、自動構成モードで、前記レジストリ内で指定された単一の処理機能が要求データ処理機能のうちの1つに一致する1より多くのソフトウェアサービスが識別される場合、前記機械学習メカニズムによる自動選択候補として、前記1より多くのソフトウェアサービスの中からの1つのソフトウェアサービスの選択を要求し、前記機械学習メカニズムは、前記選択の要求に対して、前記自動選択候補の中からの1つのソフトウェアサービスの選択により応答するよう構成され、前記自動選択候補のうちのいずれかが識別され又は実行される実行スケジュールの前記構成及び実効の記録の分析に前記選択の基礎を置く。
【0006】
有利なことに、実施形態は、機械学習メカニズムを活用して、実行スケジュールの前の構成及びソフトウェアサービスの実行に関する知識を利用し、現在の実行スケジュールの構成について決定する。実行スケジュールの構成及びその実行に関する情報を記録することにより、機械学習メカニズムは、複数のソフトウェアサービスが要求データ処理機能を満たすために処理を実行するのに適する場合に「タイブレイク(break ties)」(つまりそれらの中で選択する)を求めることができる知識ベースを構築する。
【0007】
有利なことに、このような機械学習メカニズムは、手動入力が無い場合に受信データ処理要求を満たすために、ソフトウェアサービスの知的スケジューリングを可能にする。前のデータ処理要求を満たす際の手動入力は、機械学習メカニズムにより利用できることに留意する。
【0008】
任意的に、前記レジストリの中で識別される前記複数のソフトウェアサービスの中の各々のソフトウェアサービスは、前記ソフトウェア実行制御部からの呼び出しに応じて、前記呼び出しの中で識別される入力データに対して前記個々のデータ処理機能を実行する処理を実行するよう構成され、前記実行される処理の結果は、処理結果の出力又はタイムアウトであり、前記実行スケジュールの実行を制御するステップは、前記レジストリの中で指定される前記個々のデータ処理機能を前記受信データ処理要求により決定される入力データに対して実行するために前記実行スケジュールに含まれる前記の又は各ソフトウェアサービス、及び/又は前記実行スケジュールに含まれる先行するソフトウェアサービス、を呼び出すステップを有する。
【0009】
有利なことに、このようなソフトウェアサービス及び実行制御部の構成により、ソフトウェアサービスは、実行スケジュールの中の先行するソフトウェアサービスの処理結果が実行スケジュールの中の後続のソフトウェアサービスの入力データである処理シリーズ又はチェーンで実行可能である。具体的には、実行スケジュールの中の後続のソフトウェアサービスは、実行スケジュールの中の直接の後続のソフトウェアサービスであって良い。
【0010】
呼び出しは、実行のための命令である。レジストリは、ソフトウェアサービスの各々について、実行すべきソフトウェアサービスをどのように呼び出すかの定義を格納して良い。定義は、ソフトウェアサービス個々のデータ処理機能を実行するためにソフトウェアサービスへの呼び出しを生成し発行するためにソフトウェア実行制御部にとって必要なシンタックス的及び意味論的情報を含む。
【0011】
さらに、前記機械学習メカニズムプロセスにより維持される前記実行スケジュールの前記実行の前記記録は、前記個々のデータ処理要求の前記実行スケジュールの前記の制御される実行の中で前記ソフトウェア実行制御部により呼び出される前記ソフトウェアサービスの各々について、前記ソフトウェアサービスの前記実行された処理の前記結果の指示を、タイムアウト又は処理結果の出力として有し、前記機械学習メカニズムは、少なくとも部分的に、前記自動選択候補の実行した処理結果の前記記録された指示に、前記自動選択候補の中からの1つのソフトウェアサービスの前記選択の基礎を置いて良い。
【0012】
ソフトウェア実行制御部により実行するために呼び出されると、ソフトウェアサービスは実行され、処理結果の生成に成功し、又は処理結果を生成するために必要な処理を完了することなくタイムアウトに達する。タイムアウトは、ソフトウェアサービスにより定義される結果を出すまでの最大時間(maximum time−to−result)(実行開始から始まる)であって、それに達すると、実行を終了しソフトウェア実行制御部にタイムアウトメッセージを発行する、結果を出すまでの最大時間、又は、ソフトウェア実行制御部により設定される結果を出すまでの最大時間(maximum time−to−result)(実行のための呼び出しから始まる)であって、それに達すると、いかなる処理結果も出力されず、したがって代替ソフトウェアサービスが識別され実行されることがソフトウェア実行制御部により想定されることに対応する、結果を出すまでの最大時間、である。
【0013】
機械学習メカニズムは、ソフトウェアサービスの実行を監視し、呼び出されたソフトウェアサービスがタイムアウトしたとき及び呼び出されたソフトウェアサービスが処理結果の出力に成功したときを記録する。
【0014】
更なる選択肢として、前記機械学習メカニズムプロセスにより維持される前記実行スケジュールの前記実行の前記記録は、前記呼び出されたソフトウェアサービスの各々について、前記呼び出しの中で識別される前記入力データの1又は複数の特性の値を更に有し、前記機械学習メカニズムプロセスは、少なくとも部分的に、前記要求データ処理機能の前記入力データの特性値と前記実行した処理の結果が処理結果の出力である呼び出しの中で識別された前記入力データの前記1又は複数の特性の前記記録された値との間の類似性の定量化に、前記自動選択候補の中からの1つのソフトウェアサービスの前記選択の基礎を置いて良い。
【0015】
有利なことに、機械学習メカニズムは、実行スケジュールの構成及び実行に、入力データの特性がどのように影響するかを学習できる。このような学習は、要求データ処理機能を満たすために、ソフトウェアサービスの選択の基礎を置く因子として使用される。
【0016】
少なくとも部分的に該情報片に選択の基礎を置くことは、情報片が、どのソフトウェアサービスを選択するかの決定に貢献する因子であることを意味する。例えば、前記因子の各々は、選択の決定として自動選択候補の適正を定量化するための、(機械学習メカニズムによる)分析工程の中の重みに帰属されて良い(つまり、前記定量化による最高ランクのものが選択される)。実装の観点で、機械学習メカニズムは、知識ベース(記録)に加えて、ニューラルネットワークを有して良い。選択が部分的に基づく上記の情報片は、入力ノードであり、複数の自動選択候補からのソフトウェアサービスの選択は出力ノードである。
【0017】
さらに、入力データの1又は複数の特性は、入力データの量の測定値を含んで良い。
【0018】
例えば、このような測定値は、入力データにアクセス可能である、管理サービス、制御機能、又はデータ記憶機能を参照することにより得られて良い。測定は、ソフトウェア実行制御部自体により実行されて良く、又は別個のエンティティにより実行されて良い。
【0019】
有利なことに、ソフトウェアサービスの幾らかは、特定範囲の入力データサイズを有し、処理結果の生成を成功させる又はタイムアウトさせる傾向のある実行特性を有して良い。機械学習メカニズムは、観察によりこれらの傾向を学習でき、実行スケジュールに含めるためにソフトウェアサービスを選択する際にこのような学習を利用できる。
【0020】
構成手順の特定の実装では、前記構成は、手動構成モードで、前記レジストリの中で指定される前記処理機能が前記要求データ処理機能のうちの1つと一致する1より多くのソフトウェアサービスが識別される場合、前記装置のユーザによる手動選択候補として、前記1より多くのソフトウェアサービスの中からの1つのソフトウェアサービスの選択を要求するステップと、前記ユーザから要求選択を受信するステップと、を含み、前記機械学習メカニズムは、前記個々のデータ処理要求の前記実行スケジュールの前記構成の前記記録の中に、前記手動選択候補のアイデンティティ及び前記受信したユーザ選択の指示を含めるよう構成され、前記機械学習メカニズムプロセスは、少なくとも部分的に、前記自動選択候補のうちの1又は複数を含む手動選択候補の中からの前記受信したユーザ選択の前記記録された指示に、前記自動選択候補の中からの1つのソフトウェアサービスの前記選択の基礎を置くよう構成される。
【0021】
機械学習メカニズムは、自動選択候補の中から選択を行うために用いられる(自動は、機械学習メカニズムの責任を意味する)。記録は、手動選択候補の中からのユーザにより行われる選択の維持である。
【0022】
有利なことに、機械学習メカニズムは、要求データ処理機能を満たすために複数の適切なものが存在するときどのソフトウェアサービスが好まれるかを、ユーザ選好から学習する。このような学習は、機械学習メカニズムの分析において、複数の自動選択候補から選択されたソフトウェアサービスを決定するために、有力な要因である。
【0023】
関連すると考えられるユーザ選択の記録された指示のみが、自動選択候補(これから、機械学習メカニズムが選択を行う)のメンバ及び記録されたユーザ選択が行われた手動選択候補のメンバの中で正確な一致が存在するものであって良い。代替で、ユーザ選択の記録された指示は、自動選択候補(これから機械学習メカニズムが選択を行う)のうちの1つが手動選択候補の中にある限り、関連すると考えられて良い。例えば、(個々の自動選択候補が手動選択候補の中にあった手動選択からの)選択の非選択に対する比に基づき、自動選択候補の各々について商(quotient)が計算され得る。
【0024】
任意的に、全ての記録は、等しい重みを与えられる。代替として、より最近の記録は、あまり最近でない記録より高く重み付けされて良い。更なる代替として、記録の中の入力データの、ソフトウェアサービスが選択されている要求データ処理機能の中の入力データに対する類似性が考慮されて良い。
【0025】
ソフトウェア実行制御部は、全体の実行スケジュールについて特定の構成モードに肯定される必要はない。実際に、自動化は、規定モードであって良く、ソフトウェア実行制御部は、構成の特定要素について、手動構成モードに適応的に戻るよう構成される。
【0026】
任意的に、前記機械学習メカニズムは、前記自動選択候補のうちのいずれかが識別され又は実行される実行スケジュールの前記構成及び実行の記録の前記分析の結果として、前記自動選択候補の中からの1つのソフトウェアサービスの前記選択における信頼度を生成するよう構成され、前記構成は、前記生成された信頼度が閾最小値より高い場合、1つのソフトウェアサービスの前記選択を前記実行スケジュールに追加するステップと、前記生成された信頼度が閾最小値以下である場合、前記要求データ処理機能を実行するために、1つのソフトウェアサービスの選択の前記手動構成モードに戻るステップと、を有する。
【0027】
例えば、信頼度は、(個々の自動選択候補が手動選択候補の中にあった手動選択からの)選択の非選択に対する比に基づき、自動選択候補の各々について商(quotient)が計算される上述の商であって良い。信頼度は、統計的有意性の2項検定により計算されて良く、2つの結果は、構成記録の中の選択又は構成記録の中の非選択である。
【0028】
前記機械学習メカニズムプロセスにより維持される前記実行スケジュールの前記構成の前記記録により維持される構成の記録の特定の実装として、前記受信データ処理要求により定められる前記1又は複数の要求データ処理機能の各々について、前記呼び出しの中で識別される前記入力データの1又は複数の特性の値を有し、前記機械学習メカニズムは、少なくとも部分的に、前記要求データ処理機能の前記入力データの特性の値と前記手動選択候補が前記自動選択候補のうちの1又は複数を含む構成の記録の中の前記入力データの前記1又は複数の特性の値との間の類似性の定量化に、前記自動選択候補の中からの1つのソフトウェアサービスの前記選択の基礎を置くよう構成される。
【0029】
任意的に、入力データの1又は複数の特性は、入力データの量の測定値を含む。
【0030】
任意的に、商は、自動選択候補(これから、機械学習メカニズムにより選択が行われる)の各々について構築されて良い。このような商は、例えば、個々の自動選択候補が手動選択候補の中にあり及び選択された各記録について合計をインクリメントすることにより、及び個々の自動選択候補が手動選択候補の中にあり及び選択されなかった各記録について合計をデクリメントすることにより、構築されて良い。各々の場合のインクリメント又はデクリメントの値は、記録の場合の入力データと現在の選択の場合の入力データとの間の類似性に比例して良い。
【0031】
任意的に、前記受信データ処理要求により定められる前記1又は複数の要求データ処理機能は、要求データ処理機能シリーズとして定められ、前記実行スケジュールの前記構成は、前記データ処理要求により定められる先行する要求データ処理機能についての前記実行スケジュールの実行及び前記構成するステップに続いて実行される。
【0032】
有利なことに、規定された方法ではなく実行スケジュールの適応的な構成は、実行スケジュールの中の先行するソフトウェアサービスの処理結果、及び特にその処理結果を考慮することを可能にする。
【0033】
この文脈で、シリーズは、処理順序を定めることを意味すると考えられ、シリーズの中の先行するデータ処理機能の出力は、シリーズの中の隣接する後続のデータ処理機能の入力を形成する。
【0034】
実施形態は、ソフトウェア実行プロセッサであって、前記複数のソフトウェア機能の中からソフトウェア機能を識別し及び入力データを識別する前記ソフトウェア実行制御からの呼び出しに応答して、前記実行における入力データとして、前記識別された入力データにより前記識別されたソフトウェアサービスをロードし実行するよう構成されるソフトウェア実行プロセッサを更に有して良い。
【0035】
さらに、前記装置は、複数のソフトウェアサービスをメモリに格納するソフトウェアライブラリを有して良い。
【0036】
別の態様の実施形態は、ソフトウェアサービス実行方法であって、複数のソフトウェアサービスの各々を識別するレジストリを格納するステップであって、各識別されたソフトウェアサービスは前記レジストリ内で指定される個々のデータ処理機能を実行するよう構成される、ステップと、複数のデータ処理要求の各々について、前記データ処理要求を受信するステップであって、受信したデータ処理要求は1又は複数の要求データ処理機能を定める、ステップと、前記レジストリ内で識別される前記複数のソフトウェアサービスの中からの1又は複数のソフトウェアサービスの実行スケジュールを構成するステップであって、前記1又は複数の要求データ処理機能の各々について、前記レジストリ内で指定された単一の処理機能が前記要求データ処理機能に一致するソフトウェアサービスを識別すること、及び前記識別したソフトウェアサービスを前記実行スケジュールに含めること、により前記受信データ処理要求を満たす、ステップと、前記実行スケジュールの実行を制御するステップと、を有するソフトウェアサービス実行方法を含む。前記方法は、受信データ処理要求の各々について、実行スケジュールの構成及び実行スケジュールの実行の記録を維持するステップを更に有し、前記構成は、自動構成モードで、前記レジストリ内で指定される単一の処理機能が前記要求データ処理機能のうちの1つに一致する1より多くのソフトウェアサービスが識別される場合、前記機械学習メカニズムによる自動選択候補として、前記1より多くのソフトウェアサービスの中からの1つのソフトウェアサービスの選択を要求するステップを含む。前記方法は、前記自動選択候補の中からの1つのソフトウェアサービスの選択により、前記選択の要求に応答するステップを更に有し、前記自動選択候補のうちのいずれかが識別され又は実行される実行スケジュールの前記構成及び実効の記録の分析に前記選択の基礎を置く。
【0037】
別の態様の実施形態は、コンピューティング装置により実行されると、該コンピューティング装置に本発明の実施形態として請求の範囲に定められるシステムとして機能させるコンピュータプログラムを有する。
【0038】
別の態様の実施形態は、コンピューティング装置により実行されると、該コンピューティング装置に本発明の実施形態として本願明細書に上述した又は他の箇所に定めた方法を実行させるコンピュータプログラムを有する。
【0039】
さらに、本発明の実施形態は、複数の相互接続されたコンピューティング装置により実行されると、前記複数の相互接続されたコンピューティング装置に、本発明を具現化するシステムとして動作させるコンピュータプログラム又はコンピュータプログラムスーツを有する。
【0040】
上述の態様の何れにおいても、種々の特徴は、ハードウェアで、又は1若しくは複数のプロセッサで動作するソフトウェアモジュールとして実施されて良い。ある態様の特徴は、他の態様の特徴に適用されて良い。
【0041】
本発明は、上述の任意の方法を実行するコンピュータプログラム又はコンピュータプログラムプロダクト、及び上述の任意の方法を実行するプログラムを格納しているコンピュータ可読媒体も提供する。
【0042】
本発明を実施するコンピュータプログラムは、コンピュータ可読媒体に格納されてもよい。或いは、例えば、インターネットウェブサイトから提供されるダウンロード可能なデータ信号のような信号形式又は任意の他の形式であって良い。
【発明を実施するための形態】
【0044】
図1は、ソフトウェアサービス実行装置10を示す。装置10は、レジストリ12、ソフトウェア実行制御部14、及び機械学習メカニズム14を有する。装置10の動作を説明するのに有用なデータ交換の選択は、
図1に提示される。図示のデータ交換の選択は、包括的ではない。
【0045】
ソフトウェアサービス実行装置10は、例えば、ユーザからデータ処理要求を受信するよう構成されるウェブサーバ又は他のサーバ側コンピューティング装置であって良い。このようなユーザは、装置10を直接に作動させて良く、又はソフトウェア実行装置にネットワークを介して接続可能なウェブクライアント又は他のクライアント側コンピューティング装置を介してソフトウェア実行装置にアクセスして良い(つまり、データ処理要求を該装置へ送信する)。特に、ユーザは、装置10へデータ処理要求を発行して良い。データ処理要求は、
図1の「データ処理要求」と付された矢印により示すように、ソフトウェア実行制御部14により受信される。
【0046】
レジストリ12は、ソフトウェアサービス実行装置10により永久記憶に格納される文書又は他のデータ形式であって良い。レジストリ12は、レジストリ12のデータを格納するよう構成される物理データ記憶を有するデータ記憶ユニットであって良い。レジストリ12は、各ソフトウェアサービスに関する情報を、例えばソフトウェアサービスのアイデンティティがプライマリキーであるレジストリエントリとして格納して良い。レジストリ12は、データを、ソフトウェアサービス当たり1行を有する関係型データとして、又は入力とグラフ内の頂点としてのソフトウェアサービスの処理結果とをリンクする各ソフトウェアサービスが述部により識別可能なグラフデータとして、格納して良い。
【0047】
レジストリ12により識別される複数のソフトウェアサービスの各々は、例えばソフトウェアサービスがアクセス可能なURL(uniform resource locator)又はURI(uniform resource identifier)により識別されて良い。この文脈でアクセス可能であることは、ソフトウェアサービスのメソッドへの呼び出しが発行され得る(仮想的又は物理的)場所を意味すると考えられる。ソフトウェアサービスの識別は、例えば、ソフトウェアサービスがどのように使用可能かを定めるAPIを含んで良い。
【0048】
レジストリ12の中の各ソフトウェアサービスのデータ処理機能は、意味論的に定められて良く(例えば、「トークン化(tokenize)」、「ロード(load)」、「要約(summarize)」、「比較(compare)」)、意味論的定義は、個々のソフトウェアサービスにより実行されるデータ処理の意味論的記述子である。このような意味論的定義も(全体的に又は部分的に)、ソフトウェアサービスがアクセス可能なURL又はURIであって良い。意味論的定義に加えて、又は代替として、データ処理機能は、データ処理の入力データ及び出力データの観点で指定されて良い。例えば、ファイル名、ファイル種類、又はデータ型の意味論的記述子により示すことのできるデータ型は、入力データ及び/又はデータ処理結果(出力データ)について指定されて良い。
【0049】
装置は、型レジストリを更に有して良く、データ型の意味論的記述子は、型レジストリからの1又は複数の型に制約される。型レジストリは、ドメイン固有であって良い。
【0050】
ソフトウェア実行制御部14は、機能モジュールであり、(メモリに)格納された処理命令によりプログラムされたプログラムプロセッサ(CPU又はGPU)であって良い。さらに、ソフトウェア実行制御部14は、複数のソフトウェアサービスと(個々のレジストリエントリを介して)、及び例えば機械学習メカニズム16と、及び/又は装置ユーザと、通信するよう構成される。ソフトウェア実行制御部14は、レジストリ12に格納された情報を用いて、ソフトウェアサービスとローカルに又はネットワークを介して通信するI/Oインタフェースを有して良い。ソフトウェア実行制御部14は、ユーザからの入力を受信するインタフェースを有して良い。インタフェースは、ローカルであって良く、又は例えば入力がソフトウェア実行制御部14によりアクセス可能なクライアント側装置に実装されるGUIであって良い。
【0051】
図1は、ソフトウェア実行制御部14により受信されたデータ処理要求が3つの成分データ処理機能に分けられることを示す。3は、動作原理を説明するための単なる一例である。受信データ処理要求は、1又は複数の要求データ処理機能を定める。受信データ処理要求の何らかの処理は、成分要求データ処理機能を決定するために、ソフトウェア実行制御部により実行されて良い。つまり、成分データ処理機能は、受信データ処理要求により黙示的に示され、例えば、レジストリ12内で指定されるデータ処理機能を参照することにより、ソフトウェア実行制御部14により抽出されて(つまり明示的にされて)良い。データ処理要求を満たすために成分データ処理機能が実行されるべき順序も、データ処理要求により定められて良い。
【0052】
実行スケジュールは、どのソフトウェアサービスがどの順序で(順序は、複数のソフトウェアサービスの並列実行を含み得ることに留意する)、及びどの入力データにより、実行されるべきかを識別する計画である。実行の構成及び制御は、必ずしも連続的に実行されるステップではない。構成は、規定され又は予め決定されるのではなく、適応的であって良い。実行スケジュールの要素の構成は、実行スケジュールの中の先行するソフトウェアサービスの実行結果に依存して良い。
【0053】
図1のレジストリ12とソフトウェア実行制御部14との間の「構成(composing)」と付された線は、実行スケジュールを構成するための、レジストリ内の情報の使用を示す。実行スケジュールは、ソフトウェアサービスに関するレジストリ12に格納された情報を用いることにより、受信データ処理要求を満たすために、ソフトウェア実行制御部14により構成される。例えば、受信データ処理要求は、入力データと、例えば意味論的に特定データ型を指定する引き換えに捜し出される特定データ型と、を指定して良い。実行スケジュールは、ソフトウェアサービス又はレジストリ12内にリストされるソフトウェアサービスシリーズを定めることにより、ソフトウェア実行制御部14により構成され、実行されると(シリーズの場合に、シリーズの中の先行するソフトウェアサービスにより、シリーズの中の1又は複数の先行するソフトウェアサービスの処理結果を入力として取り入れ)データ処理要求の中で指定された入力データを引き換えに捜し出された特定データ型を満たす出力データに変換する。
【0054】
ソフトウェアサービスの各々は、個々のデータ処理機能を実行するよう構成される。ソフトウェアサービスの各々により実行されるデータ処理は、特定型の入力データを特定型の出力データに変換する。この単一の入力型から出力型への関係に対する例外は、タイムアウトのような、出力型の出力データを生成しないソフトウェアサービスの障害のイベントである。型はデータ型を意味し、例えば単一のファイル名拡張子又はファイル名拡張子のグループ又はファイル種類により、及び/又は1又は複数の意味論的データ記述子により、指定されて良い。
【0055】
ソフトウェア実行制御部14による実行スケジュールの実行の制御は、実行スケジュールにより決定される順序/タイミングで、及び実行スケジュールにより指定される入力データにより、実行するために個々のソフトウェアサービスへの呼び出しを発行する処理である。
図1のソフトウェア実行制御部14とレジストリ12との間の「実行呼び出し(及び応答)(execution calls(and response))」と付されたリンクは、実行の制御、及び実行の出力及び処理結果を詳述する任意的応答を示す。例えば、実行の制御は、呼び出しの中で指定される入力データに対してレジストリ内で指定される個々のデータ処理機能を実行するために、実行スケジュールに含まれるソフトウェアサービス又はその各々の呼び出しを含む。入力データは、受信データ処理要求、及び/又は実行スケジュールに含まれる先行するソフトウェアサービスの処理結果により指定されて良い。入力データは、アクセス可能なURI又はURLへの参照により指定されて良い。
【0056】
実行結果は、実行呼び出しに応答して、個々のデータ処理要求について実行スケジュールの残りの部分を構成するのに使用するために、ソフトウェア実行制御部14に返されて良い。結果は、例えば、処理結果が生成されたか否か、又は実行タイムアウトか否か、の指示であって良い。任意的に、応答は、処理結果として実行されたソフトウェアサービスにより出力されたデータのサイズの測定値のような情報を有して良い。
【0057】
実行呼び出し及びそれに対する応答は、ソフトウェア実行制御部14とレジストリ12との間にあるように示される。これは、ソフトウェアサービス自体がレジストリ12に格納された情報を介してアクセス可能であることを示す。
【0058】
構成する処理は、手動モードで(装置の人間のユーザからの入力を要求する)又は自動/自動化モードで、ソフトウェア実行制御部14により実行されて良い。自動化モードでは、機械学習メカニズム16は、
図1の「選択要求及び応答(selection request & response)」と付されたリンクにより示すように、特定の要求データ処理機能を実行するために適する複数のソフトウェアサービスの間で選択することを要求される。手動モードでは、ユーザの入力は、特定の要求データ処理機能を実行するために適する複数のソフトウェアサービスの間で選択するために、要求される。
【0059】
レジストリ12内のソフトウェアサービスについて指定されるデータ処理機能と要求データ処理機能との間の一致は、単一の処理機能が指定されるソフトウェアサービスが要求データ処理機能を実行するのに適することの指示である。一致は、要求データ処理機能の定義、及びレジストリ12内のソフトウェアサービスについて指定されるデータ処理機能に基づく。一致は、意味論に基づいて良い。例えば、データ処理機能は、レジストリ12内で意味論的に定められ(例えば、「トークン化(tokenize)」、「ロード(load)」、「要約(summarize)」、「比較(compare)」)、要求データ処理機能は、同じ又は類似する項目を用いて意味論的に定められる。したがって、要求データ処理機能の意味論的定義とデータ処理機能の意味論的定義との間で意味論的比較ができ、「一致」であると考えられる閾よりUEの類似性スコアを生じる。代替又は追加で、要求データ処理機能の定義は、例えばそれぞれデータ型の意味論的記述子(「表データ(tabular data)」、「行列(matrix)」、「文書(document)」、「ベクトル(vector)」)により又はファイル名拡張子により定める、入力データ及び要求処理結果の観点で定められて良い。レジストリ12内で指定されるデータ処理機能は、同様に定められて良い。したがって、一致は、一致する入力及び出力拡張子、又は一致する(つまり、閾より高い意味論的類似性)入力及び出力意味論的データ型記述子である。データ型記述子は、データの構造の及びデータ項目の構成の意味論的表現である。
【0060】
機械学習メカニズムにより維持される記録は、知識ベースと呼ばれて良い。
【0061】
ソフトウェア実行制御部14が自動化モード又は手動モードで構成を実行するかは、例えばソフトウェア実行制御部14に制御を提供するインタフェースを介してユーザにより、又はデータ処理要求の中で特定引数を指定することにより、制御可能である。
【0062】
図1の「記録(record)」と付された線により示すように、機械学習メカニズムは、ソフトウェア実行制御部14の動作を監視し、記録を維持する。特に、機械学習メカニズムにより維持される記録は、データ処理要求、実行スケジュールの構成(識別された手動/自動実行候補及び選択の観点で)、実行(実行結果、及び実効及び入力/出力データの特性の観点で)を詳述して良い。
【0063】
構成の記録は、レジストリ内で指定される単一の処理機能が要求データ処理機能のうちの1つに一致する1より多くのソフトウェアサービスが識別されるとき(つまり、選択が行われる複数の自動/手動実行候補が存在するとき)、及びその中で1より多くが実行スケジュールに含まれるために選択されたことを識別する。さらに、構成が手動又は自動構成モードで実行されたかの指示が、記録されて良い。
【0064】
実行の記録は、どのソフトウェアサービスがどの順序で実行されたかを識別する。任意的に、実行の記録は、実行すべき時間、(1日のうちの時間のような)実行の時間、実行結果(タイムアウト又はデータ処理結果の出力)、のような実行特性の値も格納して良い。
【0065】
実行の記録又は構成の記録は、(実行の記録の場合には)実行されたソフトウェアサービスへの入力データ又は(構成の記録の場合には)ソフトウェアサービスが選択される入力データの特性値も格納して良い。特性は、例えば、データサイズ(記憶空間の観点で)、データ型、ファイル名又はファイル種類、ローカル又はリモートに格納されるか、ローカルキャッシュで利用可能か否かを含んで良い。特性は、データ項目の値自体の統計的特性も含んで良い。
【0066】
実行の記録は、実行されたソフトウェアサービスにより出力される処理結果(出力データ)の特性値も格納して良い。特性は、例えば、データサイズ(記憶空間の観点で)、データ型、ファイル名又はファイル種類、ローカル又はリモートに格納されるか、ローカルキャッシュで利用可能か否かを含んで良い。特性は、データ項目の値自体の統計的特性も含んで良い。
【0067】
機械学習メカニズム16により維持される記録は、複数の選択候補の間の将来の選択を知らせるための知識を提供する(つまり、選択候補は、レジストリ内で指定された単一の処理機能が要求データ処理機能のうちの1つに一致する、ソフトウェア実行制御部により識別される1より多くのソフトウェアサービスである)。ソフトウェア実行制御部14による候補の識別は、データ処理要求の所定要素と比較される(照合される)ソフトウェアサービスに関する所定の(つまり、レジストリに加えて、ソフトウェア開発者又は装置管理者により定められる)情報に基づく。機械学習メカニズム16により実行される複数の候補の間の選択は、実行スケジュールの予め実行された構成及び実効に関する情報(つまり記録)に基づく。
【0068】
図2は、ソフトウェアサービス実行システムを示す。ソフトウェアサービス実行装置10に加えて、システムは、ソフトウェアライブラリ20を有する。ソフトウェアライブラリは、複数の実行可能ソフトウェアサービスを格納する。
図2に示す例では、ソフトウェアサービスはマイクロサービス(microservices)である。
図2は、ソフトウェアライブラリ20の中のマイクロサービスの各々がレジストリ12内の個々のエントリに格納された情報を介してアクセス可能であることを示す。
【0069】
マイクロサービスは、データ処理装置の中の不可分(atomic)サービスである。この文脈における不可分は、単一任務又は単一機能を意味する。マイクロサービスは、サービス次元により一般的ウェブサービスから区別される。例えば、一般的ウェブサービスは、より広範な機能の部分として何らかの認証の形式を含み得る。マイクロサービスに基づく装置では、認証は専用マイクロサービスである。
【0070】
ソフトウェアサービスは、マイクロサービスか否かに拘わらず、各々がGET、及びPOST、及び/又はPUT要求のためのメソッドを定義するRESTfulソフトウェアサービスであって良く。
【0071】
REST(Representational State Transfer)は、機械のためにウェブに参加する適正な動作を支配するアーキテクチャ型である。RESTは、確認が「RESTful」であると記述されるシステムアーキテクチャに対する制約を設定する。このうち、第1のものは、アーキテクチャがクライアント−サーバ構成を有し、クライアントは均一インタフェースによりサーバから分離される。クライアントとサーバとの間のインタフェースの4つの指導方針があり、これらの方針に従い開発されたインタフェースは「RESTful」として記載できる。例えば、APIは、ソフトウェアサービスへのインタフェースについてのREST指導方針に従い記述でき、したがって「RESTful API」として記載され得る。ソフトウェアサービスのこのようなRESTful APIは、ソフトウェアサービスのレジストリエントリに格納され、又はレジストリ12内の(例えば参照により)アクセス可能にされた一に格納されて良い。プロトコルとしてのHTTPは、RESTfulな方法で使用でき、RESTful HTTPは機械のためのウェブに適する。RESTfulインタフェース(API)は、多くの鍵となる理由により評判が高い。確固たるアーキテクチャ原理により証明された基礎の上に構築される基本プロトコルは簡略であり、結果はウェブ開発者により親しみ易く且つ使用可能である。
【0072】
まとめると、RESTアーキテクチャ様式は、以下の通り、システムアーキテクチャに対する6個の制約を記述する(6個のうちの1つは任意である):
−アーキテクチャはクライアント−サーバであるべきである、
−クライアント及びサーバは均一インタフェースにより分離される、
−アーキテクチャは状態を有さず、クライアントからの要求の間でクライアントコンテキストがサーバに格納されないことを意味する、−各要求は要求にサービスするために必要な情報の全てを含み、状態情報はクライアント自体に保持される、
−クライアントは応答をキャッシュできる、
−(任意)機能は、サーバが、クライアントの実行可能なロジックをクライアントへ転送することにより格納できる。
【0073】
ソフトウェアサービス実行システムの文脈で、クライアントは、データ処理要求を行うエンティティであり、サーバはソフトウェアサービスを実行するウェブサーバ又は他のコンピューティング装置である。
【0074】
均一インタフェースの指導方針は、以下のように簡単に要約される:
−ドメイン内の個々のリソースは、クライアントからの要求の中で識別できる(これは、ウェブに基づくシステムにおいてURI(Universal Resource Identifier)を介してであって良い)、リソース自体は、クライアントに返される表現と別個のエントリである;
−クライアントにより保持されるリソースの表現は、サーバ上のリソースを変更する又は削除するために十分な情報をクライアントに与えるために十分である(許可を与える(permissions allowing));
−クライアントとサーバとの間の各メッセージは、メッセージを処理するための受信側にとって十分な情報を含む;
−サーバからクライアントへ提供されるリソースの表現は、関連リソースへのハイパーリンクを含むべきである。
【0075】
RESTアーキテクチャ様式の建設的側面は、情報モデルとの良好なリンク付けである。情報モデルは、ドメイン内の項目及びこれらの項目間の関係の形式化された記述である。RESTful APIの中で許可される動作は、制約され(固定され)、これは、インタフェースを情報モデルにリンクする際に通常は問題を生じ得る粗悪なプログラミング動作の望ましくない副作用を回避する。
【0076】
実際に、特定ドメインのためのRESTful APIは、純粋にドメインのための情報モデルの観点で定められて良い。次に、このモデルが異なるデータフォーマットの内部でどのように現れるかにより、データフォーマットは情報モデルの結線レベル(低レベル又は実装レベル)の表明である。残念ながら、現在使用中のAPIは、情報モデル化へのそれらのアプローチに関する格差を示す。これがデータフォーマットの内部でどのように現れるか、及びHTTPのセマンティクスがAPIの特定ドメインでどのように使用されるか、が問題である。この一貫性の欠如は、RESTfulプロトコルの潜在的利益、例えば再利用可能なツールキット(例えば標準コード)の可能性、及び一般的クライアントエージェント(ブラウザと等価である)が失われるので、問題である。
【0077】
図3は、システムに新しいソフトウェアサービスを追加し及び新しいソフトウェアサービスを含む実行スケジュールを構成する手順を示す。
【0078】
システムの特性により、マイクロサービスは多数の状態をトラバースする。
【0079】
ステップS301で、実装される何からの使用により、マイクロサービスが生成される。生成されたマイクロサービスは、必要な場合に(自明な方法で)再起動により実行し続けられるソフトウェアライブラリ20にアップロードされる。
【0080】
ステップS302で、マイクロサービスはレジストリ12に登録され、マイクロサービスのメタデータはレジストリエントリに格納される。例えば、個々のマイクロサービスがRESTfulである場合、HTTP、GET、PUT、POST、及びDELETEメソッドに対する呼び出しを生成できる情報が、レジストリエントリに格納されて良い。さらに、レジストリエントリは、例えばデータを意味論的に記述することにより、及び/又はファイル種類、データ型、及び/又はファイル名拡張子を指定することにより、データ処理機能の入力データ及び出力データ(処理結果)を定める。任意的に、レジストリエントリは、テストモードの中のマイクロサービスへの呼び出しをどのように発行するかも詳述して良い。任意的に、レジストリエントリは、マイクロサービスに関する文書、例えばソースコードを出力するために、マイクロサービスへの呼び出しをどのように発行するかも詳述して良い。
【0081】
ステップS303で、マイクロサービスは「発見可能(discoverable)」である。言い換えると、それらがレジストリ12に登録されると、マイクロサービスは、それらが要求データ処理機能のために有用であるときはいつでも、ソフトウェア実行制御部14により発見できる。ソフトウェア実行制御部14は、要求データ処理機能の中の処理のための入力データと互換性があるとレジストリエントリが示すソフトウェアサービスについて、レジストリ12に問い合わせる。
【0082】
ステップS304で、ソフトウェア実行制御部14により実行スケジュールに含まれているマイクロサービスは、入力により呼び出され(つまり、マイクロサービスは、実行するよう命じられる、又は実行するよう及びどこで入力データにアクセスするかを命じられる)、出力される処理結果を読み出し、又はタイムアウトし、ソフトウェア実行制御部14に、要求データ処理機能を実行するために異なるマイクロサービスを読み出させる。
【0083】
ステップS305で、マイクロサービスの実行は、機械学習メカニズム16により監視される。勿論、関しは、実際には、オペレーティングシステムコンポーネントのような、マイクロサービスが実行される実行プラットフォームのコンポーネントにより実行されて良く、機械学習メカニズム16による監視は関連情報へのリードアクセスである。機械学習メカニズム16は、例えばデータ処理要求に応答してマイクロサービスが実行される(及び任意的に特定要求データ処理機能も満たされる)該データ処理要求、データ特性(例えば、サイズ、フォーマット、型)、マイクロサービスの性能(解決までの時間、実行開始のタイムスタンプ)、及び実行スケジュールの構成及び実効の他の等価な特長を含む、実行を監視する。監視結果は、機械学習メカニズム16の知識ベースコンポーネントに記録される。
【0084】
ステップS306で、学習又は訓練段階で、機械学習メカニズム16を形成するアルゴリズム(セグメント化、回帰、予測、等)は、マイクロサービスの実行に関する記録された情報を提供され、結果を向上するためにマイクロサービスを選択するためのモデルが訓練される。結果は、例えば、手動及び自動構成モードにおける選択の間で照合されて良い。例えば、手動構成モードにおけるマイクロサービス間の選択のための入力データに関する情報、及び選択結果は、どれだけ多くの重みが入力データの種々の特性の間の類似性/相違に対して与えられるかを構成することにより、同じマイクロサービスの間で自動選択を行うモデルを訓練するために使用される。
【0085】
図4は、例示的なマイクロサービスセットの例示的なレジストリエントリを示す。このマイクロサービスは、以下の作業例で使用される。
図4に示すレジストリエントリ毎の情報は、必ずしも、完全なレジストリエントリではないが、各ソフトウェアサービスを識別する情報、及び入力データ及び処理結果の意味論的記述子を示す。例えば、識別情報がキーであるキー値ストアとしてソフトウェアライブラリが実装される場合、識別情報は、ソフトウェアライブラリ20内のソフトウェアサービスの位置を特定するために十分であって良い。
【0086】
レジストリ12は、個々のID番号1〜4により識別される4個のマイクロサービスの追加前には空である。
【0087】
図5は、一実施形態の概略手順を示す。概略手順は、レジストリを移植し受信データ処理要求を処理するためのものである。手順の特定要素の特定インスタンスは、
図6〜8により示す3つの作業例を参照して説明される。
【0088】
ステップS501で、サービスはレジストリに追加される。作業例の観点で、2個のマイクロサービスがレジストリに追加され、ID番号1及び2を割り当てられる。両方のマイクロサービスは、表データの生成のためのものである。ID番号1を割り当てられたマイクロサービスは、平文テキストファイル(CSV、TSV、等)から表データを生成する処理機能を有する。任意的に、レジストリエントリの「入力」要素は、例えば許容可能なファイル名拡張子をリストすることにより、許容可能ファイル種類を詳述する。
【0089】
ID番号2を割り当てられたマイクロサービスは、それらの表の自然結合を行うことにより、データベースから表データを生成する処理機能を有する。
【0090】
2個の更なるマイクロサービスがレジストリ12に追加され、両者は同じ機能を実行する、つまり表データをまとめる。この場合、ID番号3を割り当てられる一方のマイクロサービスはビッグデータに適しており、ID番号4を割り当てられる他方の実装は、入力データがローカルメモリに快適に適する場合、ミリ秒で概要を提供する。
【0091】
レジストリは、シンタックス的及び意味論的観点の両方から、サービスの入力及び出力に関する情報を(例えば、システム管理者から)得る。
【0092】
今、4個のマイクロサービスが登録されている。ステップS502で、ソフトウェア実行制御部14においてデータ処理要求を受信することに対する応答として、実行スケジュールが要求される。レジストリ12に格納された情報は、ソフトウェア実行制御部14が、マイクロサービスの間の調整の可能性を検出すること、したがって、ステップS503で、データ処理要求を満たすために実行すべきマイクロサービスを選択することを可能にする。
【0093】
作業例では、幾つかの実行スケジュールが要求される。ステップS501は、新しいマイクロサービスをシステムに追加するために実行されるべき初期化手順の部分であり、ステップS502〜S506により提示される特定の受信データ処理要求に応答するための手順の部分を形成しない。
【0094】
ステップS504で、ソフトウェア実行制御部14は、実行スケジュールに従い実行すべきマイクロサービスを制御する。ステップS505で、データ処理要求の中で要求された処理結果が出力される。全ての場合において、ステップS506で、システム(具体的には、機械学習メカニズム16)は、実行されたマイクロサービスに関する及び実行スケジュールの構成に関する性能統計を記録する。
【0095】
図6は、第1作業例における処理フローを示す。データ処理要求が受信され、CSVファイルのサマリを要求する。ソフトウェア実行制御部は、レジストリ12内の情報を参照することにより、(CSV入力データからのサマリを生成する単一の機能がないので)要求により定められた2つの要求データ処理機能を識別する。要求データ処理機能は、PF1、「GET TABULAR DATA」、及びPF2、「GET SUMMARY」である。本例では、機械学習メカニズム16は、未だ、自動構成モードにおける選択の基礎を置く知識ベースを構築していない。したがって、ソフトウェア実行制御部14は、手動構成モードで実行スケジュールを構成する。
【0096】
ステップS601で、レジストリエントリの中で提供される情報及びデータ処理要求の中で指定される入力データのデータ型の知識に基づき、構成し、ソフトウェア実行制御部14は、ID「1」を割り当てられたマイクロサービスのみが、要求データ処理機能PF1を実行するために使用できることを検出し、ステップS602で該マイクロサービスを使用して、レジストリ12を介してマイクロサービスへの呼び出しを発行することにより実行する。処理結果は表データである。
【0097】
ステップS603で、ソフトウェア実行制御部14は、PF2を実行するために、更なる構成を実行する。ソフトウェア実行制御部14は、レジストリ内の情報に基づき、表データを纏めるために複数のマイクロサービスが利用可能であることを検出する。ソフトウェア実行制御部14は手動構成モードであるので、ステップS604で、ユーザは、ID「3」及び「4」を割り当てられたマイクロサービスの中からの選択を促される。例えば、ユーザは、それらのうちの1つを選択するオプション、ランダム選択、又はそれらの全部を提示されて良い。
【0098】
ユーザが選択を行う場合、ユーザ決定に関する知識は、機械学習メカニズム16の知識ベースに記録される。例えば、このような記録は、要求データ処理機能、入力データの特性値(ファイル名、ファイルサイズ)、及びユーザ選択の指示を識別して良い。ランダム選択又はそれらの全部の場合には、ユーザからの選好は記録されない。
【0099】
本例では、ユーザは、ID「4」を割り当てられたマイクロサービスを選択し、選好が記録され、S605で、サービスは、ソフトウェア実行制御部14により呼び出され、実行される。結果は、マイクロサービスにより出力される。結果がユーザに提示される追加ステップが存在して良い。しかしながら、ユーザは、結果が出力されるURL又はURIに単にアクセスして良い。
【0100】
図7は、第2作業例における処理フローを示す。データ処理要求は、大規模データベースのサマリに対する要求である。機械学習メカニズム16は、例えば第1作業例において取得された知識ベースのお陰で、僅かな訓練しか有さない。
【0101】
ソフトウェア実行制御部は、レジストリ12内の情報を参照することにより、(CSV入力データからのサマリを生成する単一の機能がないので)要求により定められた2つの要求データ処理機能を識別する。要求データ処理機能は、PF1、「GET TABULAR DATA」、及びPF2、「GET SUMMARY」である。
【0102】
構成ステップS701で、レジストリ12に格納された情報及びデータ処理要求の中で指定された入力データのデータ型の知識を用いて、ソフトウェア実行制御部14は、ID「2」を割り当てられたマイクロサービスのみが使用できることを検出し、ステップS702で、PF1「GET TABULAR DATA」を実行するために該マイクロサービスを使用する。
【0103】
ソフトウェア実行制御部14は、要求処理機能PF2「GET SUMMARY」のための構成を実行するために進む。ソフトウェア実行制御部14は、自動構成モードで実行する。したがって、(レジストリ12内の情報に基づき)2つのマイクロサービスが表データを纏めるために識別されるとき、ユーザは選択を促されない。代わりに、選択のために機械学習メカニズム16に要求が発行される。
【0104】
ソフトウェア実行制御部は、マイクロサービスID3及びマイクロサービスID4の間の選択のために1つのみの関連構成記録を有する。これは、ID4のユーザ選択である。したがって、マイクロサービスを選択するモデルは、このような状況でマイクロサービスID3よりマイクロサービスID4を支持するよう訓練される。ステップS703で、マイクロサービスID4は、機械学習メカニズム16により選択され、ソフトウェア実行制御部14の制御の下で実行される。しかしながら、マイクロサービスID4は、ローカルメモリに格納されたデータに作用するよう意図されたマイクロサービスであり、本作業例では大規模な外部に格納された表データからの処理結果を生成できない。実行結果は、「メモリ不足」エラーである。
【0105】
ステップS704で、ソフトウェア実行制御部は、新しいマイクロサービスを実行スケジュールに追加すること、マイクロサービスID3を選択することにより、エラーから復旧し、ステップS705で実行するためにマイクロサービスID3を呼び出し、そして処理結果を返す。
【0106】
図8に示す第3の作業例では、機械学習メカニズム16が広範囲にわたり訓練されている状況で、データ処理要求は、小さいデータベースのサマリのためである。
【0107】
ソフトウェア実行制御部は、レジストリ12内の情報を参照することにより、(CSV入力データからのサマリを生成する単一の機能がないので)要求により定められた2つの要求データ処理機能を識別する。要求データ処理機能は、PF1、「GET TABULAR DATA」、及びPF2、「GET SUMMARY」である。
【0108】
情報の使用は、データ処理要求及びレジストリ12にdinを提供し、ステップS801で、ソフトウェア実行制御部は、ID「2」を割り当てられたマイクロサービスのみがPF1を実行するために使用できることを検出し、ステップS802で、該マイクロサービスを使用して、PF1「GET 例TABULAR DATA」を実行する。
【0109】
ソフトウェア実行制御部14は、自動モードで構成するよう設定されるので、マイクロサービスを選択するためにユーザへの参照は要求されない。完全性のために、手動及び自動構成モードに加えて、ソフトウェア実行制御部14は、半自動構成モードに設定されて良いことに留意する。半自動構成モードでは、機械学習メカニズムが選択において所定の信頼度を達成できない場合に、ユーザは選択を促される。
【0110】
ステップS802からの処理結果の中のデータ型、及びレジストリ12内の情報に基づき、ID「3」及び「4」を割り当てられたマイクロサービスは、PF2を実行するのに適すると考えられる。ステップS803で、入力データの特性値、特にデータ量の測定値が取得される。ソフトウェア実行制御部14は、2つの適切なマイクロサービスの間で選択するために、機械学習メカニズム16を参照する。広範囲に訓練された機械学習メカニズム16により使用されるモデルは、マイクロサービスID4が、入力データのデータサイズが閾より低いとき出力データの生成に成功し、及び入力データのデータサイズが該閾より高いときタイムアウトすることを認識している。したがって、ステップS804でマイクロサービスID4が選択され、ステップS805で実行するために呼び出される。ここでも、結果が返され、性能統計の有用な記録が実行される。
【0111】
例えばHTMLの表から表データを生成するために新しいマイクロサービスが追加されるとき、それは、システムの能力に追加され、その使用に関する記録は機械学習メカニズム16により収集される。これは、宛先に関する検討は機械学習メカニズム16により行われるので、これらの検討を行わずに、データを転送するシステムのユーザ、マイクロサービスの開発者及びマイクロサービス自体に透過な方法で生じる。
【0112】
図9は、本発明を実現しソフトウェアサービス実行方法の一実施形態の方法を実施するために使用できる、ウェブサーバのようなコンピューティング装置のブロック図である。コンピューティング装置は、プロセッサ993、及びメモリ994を有する。任意で、コンピューティング装置は、他のコンピューティング装置、例えば本発明の実施形態の他のコンピューティング装置と通信するためのネットワークインタフェース997も有する。
【0113】
例えば、一実施形態は、このようなコンピューティング装置のネットワークで構成されて良い。任意で、コンピューティング装置は、キーボード及びマウスのような1又は複数の入力メカニズム996、及び1又は複数のモニタのようなディスプレイユニット995も有する。コンポーネントは、バス992を介して互いに接続可能である。
【0114】
メモリ994は、コンピュータ実行可能命令を実行する又は格納されたデータ構造を有するよう構成される単一の媒体又は複数の媒体(例えば、集中型又は分散型データベース及び/又は関連するキャッシュ及びサーバ)を表し得るコンピュータ可読媒体を有して良い。コンピュータ実行可能命令は、例えば、汎用コンピュータ、特定目的コンピュータ又は特定目的処理装置(例えば、1又は複数のプロセッサ)によりアクセス可能であり及び1又は複数の機能又は工程を実行させる命令及びデータを有して良い。したがって、用語「コンピュータ可読記憶媒体」は、機械による実行のために命令セットを格納しエンコードし又は持ち運ぶことが可能であり、機械に本開示の方法のうち任意の1又は複数を実行させる任意の媒体も含み得る。用語「コンピュータ可読記憶媒体」は、固体メモリ、光学媒体及び磁気媒体を含むと考えられるが、これらに限定されない。例として且つ限定ではなく、このようなコンピュータ可読媒体は、RAM(Random Access Memory)、ROM(Read−Only Memory)、EEPROM(Electrically Erasable Programmable Read−Only Memory)、CD−ROM(Compact Disc Read−Only Memory)又は他の光ディスク記憶装置、磁気ディスク記憶装置又は他の磁気記憶装置を含む非一時的若しくは有形コンピュータ可読記憶媒体、又は他の媒体、フラッシュメモリ装置(例えば、固体メモリ装置)を有し得る。
【0115】
プロセッサ993は、コンピューティング装置を制御し、処理工程を実行し、例えば本願明細書及び請求の範囲に記載されるソフトウェアサービス実行装置、方法、プログラム、及びシステムの様々な異なる機能を実施するためにメモリに格納されたコードを実行するよう構成される。メモリ994は、プロセッサ993によりリード及びライトされるデータを格納する。本願明細書で参照されるとき、プロセッサは、マイクロプロセッサ、中央処理ユニット、等のような1又は複数の汎用処理装置を含み得る。プロセッサは、CISC(complex instruction set computing)マイクロプロセッサ、RISC(reduced instruction set computing)マイクロプロセッサ、VLIW(very long instruction word)マイクロプロセッサ、又は他の命令セットを実施するプロセッサ、若しくは命令セットの組合せを実施するプロセッサを含み得る。プロセッサは、ASIC(application specific integrated circuit)、FPGA(field programmable gate array)、DSP(digital signal processor)、ネットワークプロセッサ、等のような1又は複数の特定目的処理装置も含み得る。1又は複数の実施形態では、プロセッサは、本願明細書で議論する工程又はステップを実行する命令を実行するよう構成される。
【0116】
ディスプレイユニット997は、コンピューティング装置により格納されたデータの提示を表示して良く、ユーザとプログラムとコンピューティング装置に格納されたデータとの間の相互作用を可能にするカーソル及びダイアログボックス及びスクリーンも表示して良い。入力メカニズム996は、ユーザがデータ及び命令をコンピューティング装置に入力することを可能にし得る。
【0117】
ネットワークインタフェース(ネットワークI/F)997は、インターネットのようなネットワークに接続され、ネットワークを介して他のコンピューティング装置に接続可能であって良い。ネットワークI/F997は、ネットワークを介して他の装置からのデータ入力/へのデータ出力を制御して良い。マイクロフォン、スピーカ、プリンタ、電源ユニット、ファン、筐体、スキャナ、トラックボール等のような他の周辺装置は、コンピューティング装置に含まれても良い。
【0118】
図1、2、及び4のレジストリ12は、メモリ994に格納された処理命令(プログラム)を実行し及びネットワークI/F997を介してデータを交換するプロセッサ993(又はそれらの複数)であって良い。特に、プロセッサ993は、
図3のステップS302及び
図5のステップS501におけるように、ネットワークI/Fを介してソフトウェアサービス及び特にその機能に関する情報を、ソフトウェア開発者及び/又はシステム管理者から受信するために、並びにソフトウェアサービス毎のレジストリエントリを格納するために、処理命令を実行する。さらに、プロセッサ993は、実行スケジュールの構成及び実行のために、ネットワークI/F997又はその他を介して、レジストリエントリからソフトウェア実行制御部14へ情報を送信するために、処理命令を実行して良い。
【0119】
図1及び2のソフトウェア実行制御部14は、メモリ994に格納された処理命令(プログラム)を実行し及びネットワークI/F997を介してデータを交換するプロセッサ993(又はそれらの複数)であって良い。特に、プロセッサ993は、
図5のステップS502〜S505におけるように、ネットワークI/Fを介して、ユーザ(クライアントマシンを介する人間のユーザ、又は高級ソフトウェアプログラムであって良い)からデータ処理要求を受信し、要求を満たすために実行スケジュールを構成し実行することにより応答するために、処理命令を実行する。さらに、プロセッサ993は、接続された記憶ユニットに(つまり、機械学習メカニズム16の知識ベースに)構成及び実効の記録を格納し、及び/又はネットワークI/F997を介して実行スケジュールの実行結果を要求側クライアントに送信するために、処理命令を実行して良い。
【0120】
図1及び2の機械学習メカニズム16は、メモリ994に格納された処理命令(プログラム)を実行し及びネットワークI/F997を介してデータを交換するプロセッサ993(又はそれらの複数)であって良い。特に、プロセッサ993は、知識ベースに記憶するために、ネットワークI/F又はその他を介して、ソフトウェア実行制御部14から実行スケジュールの構成及び実効の記録を受信するために、処理命令を実行する。さらに、プロセッサ993は、
図5のステップS503におけるように、ネットワークI/F又はその他を介して、複数のソフトウェアサービスの中からのソフトウェアサービスの選択の要求を受信し、知識ベースの中の関連記録からの選択を生成し、及び選択により応答するために、処理命令を実行する。さらに、プロセッサ993は、接続された記憶ユニットに知識ベースの記録を格納するために、処理命令を実行して良い。
【0121】
本発明を実現する方法は、
図9に示されたようなコンピューティング装置で実行されて良い。このようなコンピューティング装置は、
図9に示した全てのコンポーネントを有する必要はなく、これらのコンポーネントのうちの部分集合で構成されて良い。本発明を具現化する方法は、ネットワークを介して1又は複数のデータ記憶サーバと通信する単一のコンピューティング装置により実行されて良い。コンピューティング装置は、構成された実行スケジュールの実行による処理結果を格納するデータ記憶自体であって良い。
【0122】
本発明を実現する方法は、互いに協働して動作する複数のコンピューティング装置により実行されて良い。複数のコンピューティング装置のうちの1又は複数は、レジストリ12、ソフトウェアライブラリ20、機械学習メカニズム16の知識ベース、及び/又は構成した実行スケジュールの実行による処理結果、の少なくとも一部を格納するデータ記憶サーバであって良い。
【0123】
以上の実施形態に加えて、更に以下の付記を開示する。
(付記1) ソフトウェアサービス実行装置であって、プロセッサハードウェアと、前記プロセッサハードウェアに結合されるメモリハードウェアと、を有し、前記メモリハードウェアは複数のソフトウェアサービスの各々を識別するレジストリを格納するよう構成され、各々の識別されたソフトウェアサービスは、前記レジストリの中で指定される個々のデータ処理機能を実行するよう構成され、
前記プロセッサハードウェアは、前記メモリに格納された処理命令を実行して、
ソフトウェア実行制御プロセスであって、複数のデータ処理要求の各々について、
前記データ処理要求を受信するステップであって、前記受信したデータ処理要求は、1又は複数の要求データ処理機能を定める、ステップと、
前記レジストリの中で識別される前記複数のソフトウェアサービスの中から1又は複数のソフトウェアサービスの実行スケジュールを構成するステップであって、前記1又は複数の要求データ処理機能の各々について、前記レジストリの中で指定される前記処理機能が前記要求データ処理機能と一致するソフトウェアサービスを識別すること、及び前記識別したソフトウェアサービスを前記実行スケジュールに含めることにより、前記受信したデータ処理要求を満たす、ステップと、
前記実行スケジュールの実行を制御するステップと、
を含むソフトウェア実行制御プロセスと、
機械学習メカニズムプロセスであって、前記受信したデータ処理要求の各々について、前記実行スケジュールの前記構成及び前記実行スケジュールの前記実行の記録を維持する、機械学習メカニズムプロセスと、
を実行するよう構成され、
前記構成するステップは、自動構成モードで、前記レジストリの中で指定される単一の処理機能が前記要求データ処理機能のうちの1つに一致する1より多くのソフトウェアサービスが識別される場合、前記機械学習メカニズムプロセスによる自動選択候補として、前記1より多くのソフトウェアサービスの中から1つのソフトウェアサービスの選択を要求するステップを有し、
前記機械学習メカニズムプロセスは、前記選択の要求に対して、前記自動選択候補の中からの1つのソフトウェアサービスの選択により応答するステップであって、前記自動選択候補のうちのいずれかが識別され又は実行される実行スケジュールの前記構成及び実行の記録の分析に前記選択の基礎を置く、ステップを有する、
ソフトウェアサービス実行装置。
(付記2) 前記レジストリの中で識別される前記複数のソフトウェアサービスの中の各々のソフトウェアサービスは、前記ソフトウェア実行制御部からの呼び出しに応じて前記プロセッサハードウェアにより実行されると、前記呼び出しの中で識別される入力データに対して前記個々のデータ処理機能を実行する処理を実行するよう構成され、前記実行された処理の結果は、処理結果又はタイムアウトの出力であり、
前記実行スケジュールの実行を制御するステップは、前記レジストリの中で指定される前記個々のデータ処理機能を前記受信したデータ処理要求により決定される入力データに対して実行するために前記実行スケジュールに含まれる前記の又は各ソフトウェアサービス、及び/又は前記実行スケジュールに含まれる先行するソフトウェアサービス、を呼び出すステップを有する、
付記1に記載のソフトウェアサービス実行装置。
(付記3) 前記機械学習メカニズムプロセスにより維持される前記実行スケジュールの前記実行の前記記録は、前記個々のデータ処理要求の前記実行スケジュールの前記の制御される実行の中で前記ソフトウェア実行制御プロセスにより呼び出される前記ソフトウェアサービスの各々について、前記ソフトウェアサービスの前記実行された処理の前記結果の指示を、タイムアウト又は処理結果の出力として有し、
前記機械学習メカニズムプロセスは、少なくとも部分的に、前記自動選択候補の実行した処理結果の前記記録された指示に、前記自動選択候補の中からの1つのソフトウェアサービスの前記選択の基礎を置く、
付記2に記載のソフトウェアサービス実行装置。
(付記4) 前記機械学習メカニズムプロセスにより維持される前記実行スケジュールの前記実行の前記記録は、前記呼び出されたソフトウェアサービスの各々について、前記呼び出しの中で識別される前記入力データの1又は複数の特性の値を更に有し、
前記機械学習メカニズムプロセスは、少なくとも部分的に、前記要求データ処理機能の前記入力データの特性の値と前記実行した処理の結果が処理結果の出力である呼び出しの中で識別された前記入力データの前記1又は複数の特性の前記記録された値との間の類似性の定量化に、前記自動選択候補の中からの1つのソフトウェアサービスの前記選択の基礎を置く、
付記3に記載のソフトウェアサービス実行装置。
(付記5) 前記入力データの前記1又は複数の特性は、入力データの量の測定値を含む、
付記4に記載のソフトウェアサービス実行装置。
(付記6) 前記構成するステップは、手動構成モードで、前記レジストリの中で指定される前記処理機能が前記要求データ処理機能のうちの1つと一致する1より多くのソフトウェアサービスが識別される場合、前記装置のユーザによる手動選択候補として、前記1より多くのソフトウェアサービスの中からの1つのソフトウェアサービスの選択を要求するステップと、前記ユーザから要求選択を受信するステップと、を含み、
前記機械学習メカニズムプロセスは、前記個々のデータ処理要求の前記実行スケジュールの前記構成の前記記録の中に、前記手動選択候補のアイデンティティ及び前記受信したユーザ選択の指示を含め、
前記機械学習メカニズムプロセスは、少なくとも部分的に、前記自動選択候補に一致する手動選択候補の中からの前記受信したユーザ選択の前記記録された指示に、前記自動選択候補の中からの1つのソフトウェアサービスの前記選択の基礎を置く、
付記1に記載のソフトウェアサービス実行装置。
(付記7) 前記機械学習メカニズムプロセスは、前記自動選択候補のうちのいずれかが識別され又は実行される実行スケジュールの前記構成及び実行の記録の前記分析の結果として、前記自動選択候補の中からの1つのソフトウェアサービスの前記選択における信頼度を生成するステップを有し、
前記構成するステップは、前記生成された信頼度が閾最小値より高い場合、1つのソフトウェアサービスの前記選択を前記実行スケジュールに追加するステップと、前記生成された信頼度が閾最小値以下である場合、前記要求データ処理機能を実行するために、1つのソフトウェアサービスの選択のために前記手動構成モードに戻るステップと、を有する、
付記6に記載のソフトウェアサービス実行装置。
(付記8) 前記機械学習メカニズムプロセスにより維持される前記実行スケジュールの前記構成の前記記録は、前記受信したデータ処理要求により定められる前記1又は複数の要求データ処理機能の各々について、前記呼び出しの中で識別される前記入力データの1又は複数の特性の値を有し、
前記機械学習メカニズムプロセスは、少なくとも部分的に、前記要求データ処理機能の前記入力データの特性の値と前記手動選択候補のうちの1又は複数が前記自動選択候補の中にある構成の記録の中の前記入力データの前記1又は複数の特性の値との間の類似性の定量化に、前記自動選択候補の中からの1つのソフトウェアサービスの前記選択の基礎を置く、
付記6に記載のソフトウェアサービス実行装置。
(付記9) 前記受信したデータ処理要求により定められる前記1又は複数の要求データ処理機能は、要求データ処理機能シリーズとして定められ、前記実行スケジュールの前記構成は、各々の要求データ処理機能について、前記データ処理要求により定められる先行する要求データ処理機能についての前記実行スケジュールの前記構成及び実行に続いて実行される、
付記1に記載のソフトウェアサービス実行装置。
(付記10) 前記プロセッサハードウェアは、
ソフトウェア実行プロセスであって、前記複数のソフトウェア機能の中からソフトウェア機能を識別し及び入力データを識別する前記ソフトウェア実行制御プロセスからの呼び出しに応答して、前記実行における入力データとして、前記識別された入力データにより前記識別されたソフトウェアサービスをロードし実行するステップを含む、
付記2に記載のソフトウェアサービス実行装置。
(付記11) 付記1乃至10のいずれか一項に記載のソフトウェアサービス実行装置を有するソフトウェア実行システムであって、前記メモリハードウェアは、
前記複数のソフトウェアサービスを格納するソフトウェアライブラリ、
を格納するよう更に構成される、ソフトウェア実行システム。
(付記12) ソフトウェアサービス実行方法であって、
複数のソフトウェアサービスの各々を識別するレジストリを格納するステップであって、各々の識別されたソフトウェアサービスは、前記レジストリの中で指定される個々のデータ処理機能を実行するよう構成される、ステップと、
複数のデータ処理要求の各々について、
前記データ処理要求を受信するステップであって、前記受信したデータ処理要求は、1又は複数の要求データ処理機能を定める、ステップと、
前記レジストリの中で識別される前記複数のソフトウェアサービスの中から1又は複数のソフトウェアサービスの実行スケジュールを構成するステップであって、前記1又は複数の要求データ処理機能の各々について、前記レジストリの中で指定される単一の処理機能が前記要求データ処理機能と一致するソフトウェアサービスを識別すること、及び前記識別したソフトウェアサービスを前記実行スケジュールに含めることにより、前記受信したデータ処理要求を満たす、ステップと、
前記実行スケジュールの実行を制御するステップと、
前記受信したデータ処理要求の各々について、前記実行スケジュールの前記構成及び前記実行スケジュールの前記実行の記録を維持するステップと、
を有し、
前記構成するステップは、自動構成モードで、前記レジストリの中で指定される単一の処理機能が前記要求されたデータ処理機能のうちの1つに一致する1より多くのソフトウェアサービスが識別される場合、機械学習メカニズムプロセスによる自動選択候補として、前記1より多くのソフトウェアサービスの中から1つのソフトウェアサービスの選択を要求するステップを有し、
前記方法は、前記選択の要求に対して、前記自動選択候補の中からの1つのソフトウェアサービスの選択により応答するステップであって、前記自動選択候補のうちのいずれかが識別され又は実行される実行スケジュールの前記構成及び実行の記録の分析に前記選択の基礎を置く、ステップを更に有する、
ソフトウェアサービス実行方法。
(付記13) 処理命令を格納する非一時的コンピュータ可読媒体であって、前記処理命令は、プロセッサハードウェアにより実行されると、前記プロセッサハードウェアに、
複数のソフトウェアサービスの各々を識別するレジストリを格納させ、各々の識別されたソフトウェアサービスは、前記レジストリの中で指定される個々のデータ処理機能を実行するよう構成され、
複数のデータ処理要求の各々について、
前記データ処理要求を受信させ、前記受信したデータ処理要求は、1又は複数の要求データ処理機能を定め、
前記レジストリの中で識別される前記複数のソフトウェアサービスの中から1又は複数のソフトウェアサービスの実行スケジュールを構成させ、前記1又は複数の要求データ処理機能の各々について、前記レジストリの中で指定される単一の処理機能が前記要求データ処理機能と一致するソフトウェアサービスを識別すること、及び前記識別したソフトウェアサービスを前記実行スケジュールに含めることにより、前記受信したデータ処理要求を満たし、
前記実行スケジュールの実行を制御させ、
前記受信したデータ処理要求の各々について、前記実行スケジュールの前記構成及び前記実行スケジュールの前記実行の記録を維持させ、
前記構成は、自動構成モードで、前記レジストリの中で指定される単一の処理機能が前記要求データ処理機能のうちの1つに一致する1より多くのソフトウェアサービスが識別される場合、機械学習メカニズムプロセスによる自動選択候補として、前記1より多くのソフトウェアサービスの中から1つのソフトウェアサービスの選択を要求することを含み、
前記処理命令は、前記プロセッサハードウェアに、さらに、前記選択の要求に対して、前記自動選択候補の中からの1つのソフトウェアサービスの選択により応答させ、前記自動選択候補のうちのいずれかが識別され又は実行される実行スケジュールの前記構成及び実行の記録の分析に前記選択の基礎を置く、
非一時的コンピュータ可読媒体。