IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧

特許7609536ランタイム・トレースに基づくモノリシック・アプリケーションからのマイクロサービス生成
<>
  • 特許-ランタイム・トレースに基づくモノリシック・アプリケーションからのマイクロサービス生成 図1
  • 特許-ランタイム・トレースに基づくモノリシック・アプリケーションからのマイクロサービス生成 図2
  • 特許-ランタイム・トレースに基づくモノリシック・アプリケーションからのマイクロサービス生成 図3
  • 特許-ランタイム・トレースに基づくモノリシック・アプリケーションからのマイクロサービス生成 図4
  • 特許-ランタイム・トレースに基づくモノリシック・アプリケーションからのマイクロサービス生成 図5
  • 特許-ランタイム・トレースに基づくモノリシック・アプリケーションからのマイクロサービス生成 図6
  • 特許-ランタイム・トレースに基づくモノリシック・アプリケーションからのマイクロサービス生成 図7
  • 特許-ランタイム・トレースに基づくモノリシック・アプリケーションからのマイクロサービス生成 図8
  • 特許-ランタイム・トレースに基づくモノリシック・アプリケーションからのマイクロサービス生成 図9
  • 特許-ランタイム・トレースに基づくモノリシック・アプリケーションからのマイクロサービス生成 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-12-23
(45)【発行日】2025-01-07
(54)【発明の名称】ランタイム・トレースに基づくモノリシック・アプリケーションからのマイクロサービス生成
(51)【国際特許分類】
   G06F 8/72 20180101AFI20241224BHJP
   G06F 8/30 20180101ALI20241224BHJP
   G06F 11/36 20060101ALI20241224BHJP
【FI】
G06F8/72
G06F8/30
G06F11/36 136
【請求項の数】 17
(21)【出願番号】P 2022562371
(86)(22)【出願日】2021-03-24
(65)【公表番号】
(43)【公表日】2023-05-31
(86)【国際出願番号】 IB2021052424
(87)【国際公開番号】W WO2021214569
(87)【国際公開日】2021-10-28
【審査請求日】2023-08-10
(31)【優先権主張番号】16/855,565
(32)【優先日】2020-04-22
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【弁理士】
【氏名又は名称】片岡 忠彦
(72)【発明者】
【氏名】シャオ、ジン
(72)【発明者】
【氏名】カリア、アナップ
(72)【発明者】
【氏名】リン、シン
(72)【発明者】
【氏名】バッタ、ラガウ
(72)【発明者】
【氏名】シンハ、サウラブー
(72)【発明者】
【氏名】ロフラーノ、ジョン
(72)【発明者】
【氏名】ヴィコヴィッチ、マジャ
【審査官】円子 英紀
(56)【参考文献】
【文献】米国特許出願公開第2019/0108067(US,A1)
【文献】米国特許出願公開第2019/0334789(US,A1)
【文献】特表2016-533570(JP,A)
【文献】東野 正幸,モノリシックサービスからマイクロサービスへの構造変更を容易化するためのウエブアプリケーションフレームワークの検討,研究報告マルチメディア通信と分散処理(DPS),Vol.2018-DPS-174, No.34,情報処理学会,2018年02月26日,pp.1-4
【文献】Wuxia Jin,Functionality-Oriented Microservice Extraction Based on Execution Trace Clustering,2018 IEEE International Conference on Web Services [online],2018年07月,[検索日 2024.9.6],インターネット:<URL: https://ieeexplore.ieee.org/document/8456351 >
(58)【調査した分野】(Int.Cl.,DB名)
G06F 8/30-3/38
G06F 8/72
G06F 11/36
(57)【特許請求の範囲】
【請求項1】
システムであって、
コンピュータ実行可能なコンポーネントを格納するメモリ、及び
前記メモリに格納された前記コンピュータ実行可能なコンポーネントを実行するプロセッサを含み、前記コンピュータ実行可能なコンポーネントが、
実行されたテストケースのランタイム・トレースに基づいて、モノリシック・アプリケーションにおけるクラスのクラスタ割り当てを学習するモデル・コンポーネント、及び
前記モノリシック・アプリケーションの1つ又はそれ以上のマイクロサービスを識別するためのクラスタ割り当てに基づいて、前記モデル・コンポーネントを利用して前記クラスのクラスタを生成するクラスタ・コンポーネント
を含むシステム。
【請求項2】
前記コンピュータ実行可能なコンポーネントが、
前記モノリシック・アプリケーションのデータ依存性又は前記モノリシック・アプリケーションの静的呼び出しグラフの少なくとも1つに基づいて、前記1つ又はそれ以上のマイクロサービスをリファインするリファインメント・コンポーネント
を含む、請求項1に記載のシステム。
【請求項3】
前記コンピュータ実行可能なコンポーネントは、
前記実行されたテストケースの前記ランタイム・トレースに基づいて、1つ又はそれ以上の原因グラフを生成して、前記モノリシック・アプリケーション又は前記モノリシック・アプリケーションにおける前記クラスタ割り当ての少なくとも1つの、1次の時間的依存性又は高次の時間的依存性の少なくとも1つを捕捉する第2モデル・コンポーネント
を含む、請求項1に記載のシステム。
【請求項4】
前記モデル・コンポーネントは、前記実行されたテストケースの前記ランタイム・トレースに基づいて生成される1つ又はそれ以上の原因グラフの原因シーケンスを使用して、前記モノリシック・アプリケーションにおける前記クラスのクラスタ割り当て又はグラフ埋め込みの少なくとも1つを学習する
請求項1に記載のシステム。
【請求項5】
前記実行されたテストケースは、前記ランタイム・トレースにおける前記モノリシック・アプリケーションのビジネス機能を提供するビジネス機能テストケースを含み、それによって前記モノリシック・アプリケーションのアプリケーション現代化の実行における前記プロセッサ又は前記システムの少なくとも1つの性能改善、効率改善、又は計算のコスト削減を容易にする
請求項1に記載のシステム。
【請求項6】
前記コンピュータ実行可能なコンポーネントがさらに、前記モノリシック・アプリケーション上で実行されたテストケースのランタイム・トレースを収集するコレクション・コンポーネントを含む
請求項1に記載のシステム。
【請求項7】
コンピュータ実装方法であって、
プロセッサに動作的に結合されたシステムによりモデルをトレーニングして、実行されたテストケースのランタイム・トレースに基づいて、モノリシック・アプリケーションにおけるクラスのクラスタ割り当てを学習させること、及び
前記システムにより、モデルを利用して、前記モノリシック・アプリケーションの1つ又はそれ以上のマイクロサービスを識別するための前記クラスタ割り当てに基づいて、前記クラスのクラスタを生成すること
を含む、コンピュータ実装方法。
【請求項8】
さらに、
前記システムにより、前記モノリシック・アプリケーションのデータ依存性又は前記モノリシック・アプリケーションの静的呼び出しグラフの少なくとも1つに基づいて、前記1つ又はそれ以上のマイクロサービスをリファインすること
を含む、請求項7に記載のコンピュータ実装方法。
【請求項9】
さらに、
前記システムにより、前記実行されたテストケースの前記ランタイム・トレースに基づいて1つ又はそれ以上の原因グラフを生成して、前記モノリシック・アプリケーション又は前記モノリシック・アプリケーションにおける前記クラスタ割り当ての少なくとも1つの、1次の時間的依存性又は高次の時間的依存性の少なくとも1つを捕捉すること
を含む、請求項7に記載のコンピュータ実装方法。
【請求項10】
前記トレーニングすることは、
前記システムによりモデルをトレーニングして、前記実行されたテストケースの前記ランタイム・トレースに基づいて生成される1つ又はそれ以上の原因グラフの原因シーケンスを使用して前記モノリシック・アプリケーションにおける前記クラスのクラスタ割り当て又はグラフ埋め込みの少なくとも1つを学習すること
を含む、請求項7に記載のコンピュータ実装方法。
【請求項11】
前記実行されたテストケースは、前記ランタイム・トレースにおける前記モノリシック・アプリケーションのビジネス機能を提供するビジネス機能テストケースを含み、それによって前記モノリシック・アプリケーションのアプリケーション現代化の実行における前記プロセッサ又は前記システムの少なくとも1つの性能改善、効率改善、又は計算コストの削減を容易にする
請求項7に記載のコンピュータ実装方法。
【請求項12】
さらに、プロセッサに動作的に結合されたシステムによって、モノリシック・アプリケーション上で実行されたテストケースのランタイム・トレースを収集すること
を含む、請求項7に記載のコンピュータ実装方法。
【請求項13】
ランタイム・トレースに基づいてモノリシック・アプリケーションからマイクロサービスの生成を容易にするコンピュータ・プログラムであって、前記コンピュータ・プログラムは、コンピュータに、
モデルをトレーニングして、実行されたテストケースのランタイム・トレースに基づいて、モノリシック・アプリケーションにおけるクラスのクラスタ割り当てを学習させること、及び
モデルを利用して、前記モノリシック・アプリケーションの1つ又はそれ以上のマイクロサービスを識別するための前記クラスタ割り当てに基づいて、前記クラスのクラスタを生成すること
を実行させる、コンピュータ・プログラム。
【請求項14】
前記コンピュータに、
前記モノリシック・アプリケーションのデータ依存性又は前記モノリシック・アプリケーションの静的呼び出しグラフの少なくとも1つに基づいて前記1つ又はそれ以上のマイクロサービスをリファインすること
を実行させる、請求項13に記載のコンピュータ・プログラム。
【請求項15】
前記コンピュータに、
前記実行されたテストケースの前記ランタイム・トレースに基づいて1つ又はそれ以上の原因グラフを生成して、前記モノリシック・アプリケーション又は前記モノリシック・アプリケーションにおける前記クラスタ割り当ての少なくとも1つの、1次の時間的依存性又は高次の時間的依存性の少なくとも1つを捕捉すること
を実行させる、請求項13に記載のコンピュータ・プログラム。
【請求項16】
前記コンピュータに、
モデルをトレーニングして、前記実行されたテストケースの前記ランタイム・トレースに基づいて生成される1つ又はそれ以上の原因グラフの原因シーケンスを使用して前記モノリシック・アプリケーションにおける前記クラスのクラスタ割り当て又はグラフ埋め込みの少なくとも1つを学習すること
を実行させる、請求項13に記載のコンピュータ・プログラム。
【請求項17】
前記実行されたテストケースは、前記ランタイム・トレースにおける前記モノリシック・アプリケーションのビジネス機能を提供するビジネス機能テストケースを含む
請求項13に記載のコンピュータ・プログラム。
【発明の詳細な説明】
【背景技術】
【0001】
本発明は、モノリシック・アプリケーションからマイクロサービスを生成することに関し、より具体的にはランタイム・トレースに基づいて、モノリシック・アプリケーションからマイクロサービスを生成することに関する。
【発明の概要】
【0002】
以下のものは、本発明の1つ又はそれ以上の実施形態を理解する基礎を提供する要約を提供する。この要約は、キー要素又は重要な要素を特定すること、又は特定の実施形態の如何なる範囲又は請求の範囲の如何なる範囲を画定することを意図しない。その唯一の目的は、以下に提示される、より詳細な説明のものを除外し、簡略化した形態において概念を提示することにある。本明細書において説明される1つ又はそれ以上の実施形態においては、ランタイム・トレースに基づいて、モノリシック・アプリケーションからマイクロサービスを生成することを容易にするシステム、デバイス、コンピュータ実装方法、又はコンピュータ・プログラム製品、又はそれらの組み合わせが説明される。
【0003】
実施形態によれば、システムは、コンピュータ実行可能なコンポーネントを格納するメモリ及び前記メモリに格納された前記コンピュータ実行可能なコンポーネントを実行するプロセッサを含むことができる。前記コンピュータ実行可能なコンポーネントは、実行されたテストケースのランタイム・トレースに基づいて、モノリシック・アプリケーションにおけるクラスのクラスタ割り当てを学習するモデル・コンポーネントを含むことができる。前記コンピュータ実行可能なコンポーネントは、さらに、前記モノリシック・アプリケーションの1つ又はそれ以上のマイクロサービスを識別するためのクラスタ割り当てに基づいて、前記モデル・コンポーネントを使用して前記クラスのクラスタを生成するクラスタ・コンポーネントを含むことができる。そのようなシステムの利益は、それがクラスの改善された機能グルーピング(例えば機能的クラスタリング)を容易にして、1つ又はそれ以上のマイクロサービスのより正確な識別及びモノリシック・アプリケーションの改善されたアプリケーション現代化を可能とすることができることにある。
【0004】
いくつかの実施形態においては、前記実行されたテストケースは、前記ランタイム・トレースにおける前記モノリシック・アプリケーションのビジネス機能を提供するビジネス機能テストケースを含む。そのようなシステムの利益は、それがクラスの改善された機能グルーピング(例えば機能的クラスタリング)を容易にして、1つ又はそれ以上のマイクロサービスのより正確な識別及びモノリシック・アプリケーションの改善されたアプリケーション現代化を可能とすることができることにある。
【0005】
別の実施形態によれば、コンピュータ実装方法は、プロセッサに動作的に結合されたシステムにより、モデルをトレーニングして、実行されたテストケースのランタイム・トレースに基づいて、モノリシック・アプリケーションにおけるクラスのクラスタ割り当てを学習させることを含むことができる。コンピュータ実装方法は、さらに、前記システムにより、モデルを利用して、前記モノリシック・アプリケーションの1つ又はそれ以上のマイクロサービスを識別するための前記クラスタ割り当てに基づいて、前記クラスのクラスタを生成することを含むことができる。そのようなシステムの利益は、それがクラスの改善された機能グルーピング(例えば機能的クラスタリング)を容易にして、1つ又はそれ以上のマイクロサービスのより正確な識別及びモノリシック・アプリケーションの改善されたアプリケーション現代化を可能とすることができることにある。
【0006】
いくつかの実施形態においては、前記実行されたテストケースは、前記ランタイム・トレースにおける前記モノリシック・アプリケーションのビジネス機能を提供するビジネス機能テストケースを含むことができる。そのようなコンピュータ実装方法の利益は、それがクラスの改善された機能グルーピング(例えば機能的クラスタリング)を容易にして、1つ又はそれ以上のマイクロサービスのより正確な識別及びモノリシック・アプリケーションの改善されたアプリケーション現代化を可能とすることができることにある。
【0007】
別の実施形態によれば、ランタイム・トレースに基づいて、モノリシック・アプリケーションからマイクロサービスの生成を容易にするコンピュータ・プログラム製品が提供される。前記コンピュータ・プログラム製品は、それに実体化されたプログラム命令を有するコンピュータ可読な記録媒体を含み、前記プログラム命令はプロセッサにより実行可能であって、前記プロセッサをして、前記プロセッサによりモデルをトレーニングして、実行されたテストケースのランタイム・トレースに基づいて、モノリシック・アプリケーションにおけるクラスのクラスタ割り当てを学習させることを実行させる。前記プログラム命令はさらに、前記プロセッサによりモデルを利用して、前記モノリシック・アプリケーションの1つ又はそれ以上のマイクロサービスを識別するための前記クラスタ割り当てに基づいて、前記クラスのクラスタを生成することを実行させる。そのようなコンピュータ・プログラム製品の利益は、それがクラスの改善された機能グルーピング(例えば機能的クラスタリング)を容易にして、1つ又はそれ以上のマイクロサービスのより正確な識別及びモノリシック・アプリケーションの改善されたアプリケーション現代化を可能とすることができることにある。
【0008】
いくつかの実施形態においては、前記実行されたテストケースは、前記ランタイム・トレースにおける前記モノリシック・アプリケーションのビジネス機能を提供するビジネス機能テストケースを含む。そのようなコンピュータ・プログラム製品の利益は、それがクラスの改善された機能グルーピング(例えば機能的クラスタリング)を容易にして、1つ又はそれ以上のマイクロサービスのより正確な識別及びモノリシック・アプリケーションの改善されたアプリケーション現代化を可能とすることができることにある。
【0009】
実施形態によれば、システムは、コンピュータ実行可能なコンポーネントを格納するメモリ、及び前記メモリに格納された前記コンピュータ実行可能なコンポーネントを実行するプロセッサを含むことができる。前記コンピュータ実行可能なコンポーネントはさらに、前記モノリシック・アプリケーション上で実行されたテストケースのランタイム・トレースを収集するコレクション・コンポーネントを含む。前記コンピュータ実行可能なコンポーネントは、さらに、実行されたテストケースのランタイム・トレースに基づいて、モノリシック・アプリケーションにおけるクラスのクラスタ割り当てを学習するモデル・コンポーネントを含むことができる。コンピュータ実行可能なコンポーネントはさらに、前記モノリシック・アプリケーションの1つ又はそれ以上のマイクロサービスを識別するためのクラスタ割り当てに基づいて、前記モデル・コンポーネントを利用して前記クラスのクラスタを生成するクラスタ・コンポーネントを含むことができる。そのようなコンピュータ・プログラム製品の利益は、それがクラスの改善された機能グルーピング(例えば機能的クラスタリング)を容易にして、1つ又はそれ以上のマイクロサービスのより正確な識別及びモノリシック・アプリケーションの改善されたアプリケーション現代化を可能とすることができることにある。
【0010】
いくつかの実施形態においては、前記テストケースは、前記ランタイム・トレースにおける前記モノリシック・アプリケーションのビジネス機能を提供するビジネス機能テストケースを含む。そのようなコンピュータ・プログラム製品の利益は、それがクラスの改善された機能グルーピング(例えば機能的クラスタリング)を容易にして、1つ又はそれ以上のマイクロサービスのより正確な識別及びモノリシック・アプリケーションの改善されたアプリケーション現代化を可能とすることができることにある。
【0011】
別の実施形態によれば、コンピュータ実装方法は、プロセッサに動作的に結合されたシステムにより、モノリシック・アプリケーション上で実行されたテストケースのラインタイム・トレースを収集することを含むことができる。コンピュータ実装方法は、さらに前記システムによりモデルをトレーニングして、実行されたテストケースのランタイム・トレースに基づいて、モノリシック・アプリケーションにおけるクラスのクラスタ割り当てを学習させることを含むことができる。コンピュータ実装方法は、さらに、前記システムにより、モデルを利用して、前記モノリシック・アプリケーションの1つ又はそれ以上のマイクロサービスを識別するための前記クラスタ割り当てに基づいて、前記クラスのクラスタを生成することを含むことができる。そのようなコンピュータ・プログラム製品の利益は、それがクラスの改善された機能グルーピング(例えば機能的クラスタリング)を容易にして、1つ又はそれ以上のマイクロサービスのより正確な識別及びモノリシック・アプリケーションの改善されたアプリケーション現代化を可能とすることができることにある。
【0012】
いくつかの実施形態においては、テストケースは、前記ランタイム・トレースにおける前記モノリシック・アプリケーションのビジネス機能を提供するビジネス機能テストケースを含む。そのようなコンピュータ・プログラム製品の利益は、それがクラスの改善された機能グルーピング(例えば機能的クラスタリング)を容易にして、1つ又はそれ以上のマイクロサービスのより正確な識別及びモノリシック・アプリケーションの改善されたアプリケーション現代化を可能とすることができることにある。
【図面の簡単な説明】
【0013】
図1図1は、本明細書で説明される1つ又はそれ以上の実施形態による、ランタイム・トレースに基づいて、モノリシック・アプリケーションからマイクロサービスの生成を容易にすることができる、実施例の非限定的なシステムのブロック図を示す。
図2図2は、本明細書で説明される1つ又はそれ以上の実施形態による、ランタイム・トレースに基づいて、モノリシック・アプリケーションからマイクロサービスの生成を容易にすることができる、実施例の非限定的なシステムのブロック図を示す。
図3図3は、本明細書で説明される1つ又はそれ以上の実施形態による、ランタイム・トレースに基づいて、モノリシック・アプリケーションからマイクロサービスの生成を容易にすることができる、実施例の非限定的なコンピュータ実装方法のフロー図を示す。
図4図4は、本明細書で説明される1つ又はそれ以上の実施形態による、ランタイム・トレースに基づいて、モノリシック・アプリケーションからマイクロサービスの生成を容易にすることができる、実施例の非限定的なモデルのブロック図を示す。
図5図5は、本明細書で説明される1つ又はそれ以上の実施形態による、ランタイム・トレースに基づいてモノリシック・アプリケーションからマイクロサービスの生成を容易にすることができる、実施例の非限定的なコンピュータ実装方法のフロー図を示す。
図6図6は、本明細書で説明される1つ又はそれ以上の実施形態による、ランタイム・トレースに基づいて、モノリシック・アプリケーションからマイクロサービスの生成を容易にすることができる、実施例の非限定的なコンピュータ実装方法のフロー図を示す。
図7図7は、本明細書で説明される1つ又はそれ以上の実施形態による、ランタイム・トレースに基づいて、モノリシック・アプリケーションからマイクロサービスの生成を容易にすることができる、実施例の非限定的なコンピュータ実装方法のフロー図を示す。
図8図8は、本明細書において説明される1つ又はそれ以上の実施形態を容易にすることを可能とする、実施例の非限定的な動作環境のブロック図を示す。
図9図9は、本発明の1つ又はそれ以上の実施形態による、クラウド・コンピューティング環境の実施例の非限定的なブロック図を示す。
図10図10は、本発明の1つ又はそれ以上の実施形態による、抽象モデル・レイヤの実施例の非限定的なブロック図を示す。
【発明を実施するための形態】
【0014】
以下の詳細な説明は、単なる例示であり、かつ実施形態の限定、又は用途、又はそれら両方、又は実施形態の使用を限定することを意図しない。さらに、先行する背景技術又は発明の概要のセクション、又は発明の詳細な説明内に提示された、明示的又は暗示的な情報に結び付けるという意図はない。
【0015】
1つ又はそれ以上の実施形態が、ここで、図面を参照して説明され、全体を通じて類似の参照数字は、類似の要素を参照するために使用される。以下の説明においては、説明の目的のため、数多くの特定の詳細が1つ又はそれ以上の実施形態のより完全な理解を提供するために明らかにされる。しかしながら、種々の場合において、1つ又はそれ以上の実施形態がこれらの特定の詳細なく実施できることは明らかである。
【0016】
アプリケーション現代化は、モノリス・アプリケーション(また、モノリシック・アプリケーションとして参照される)のスタンドアローンのマイクロサービスへのリファクタリングのプロセスである。伝統的なモノリス・エンタープライズ・アプリケーションは、複雑で、かつ絡み合わされた表現、ビジネス・プロセス及びデータ・モデルをもって設計される。これらは、保守及び変更が困難である。マイクロサービスは、機能の小さなセットをカプセル化した、ゆるく結合されたスタンドアローンのアプリケーションであり、かつパブリックに記述されたインタフェースを通して他のアプリケーションと相互作用する。したがって、これらはより容易にアップデート、スケール化、保守及びクラウド・コンピューティング環境へと配置される。
【0017】
いくつかの既存のアプリケーション現代化技術は、静的コード分析に基づいたアプローチを適用して、モノリシック・アプリケーションからマイクロサービスを生成する。そのような静的コード分析に基づくアプローチは、呼び出し関係の完全な俯瞰を提供するソースを分析する。そのような静的コード分析に基づくアプローチの問題は、特定のワークロード及び入力の下での呼び出し関係及び相互作用頻度を捕捉しないことである。
【0018】
いくつかの既存のアプリケーション現代化技術は、メタデータ・ベースのアプローチを適用して、モノリシック・アプリケーションからマイクロサービスを生成する。そのようなメタデータ・ベースのアプローチは、例えば、データフロー図、ソフトウェア人工物、コード・ベースの変化履歴、又は別の設計ドキュメント又はこれらの組み合わせといった設計ドキュメントに依存する。そのようなメタデータ・ベースのアプローチの問題は、上記に定義した設計ドキュメントが常時利用可能、かつアクセス可能ではないことにある。
【0019】
いくつかの既存のアプリケーション現代化技術は、動的マイクロサービス構成ベースのアプローチを適用して、モノリシック・アプリケーションからマイクロサービスを生成する。そのような動的マイクロサービス構成ベースのアプローチは、動作データを使用し、かつラインタイムの間に動的に適応化されるマイクロサービス・モデルを生成する。そのような動的マイクロサービス構成に基づくアプローチの問題は、動作データが収集困難であることにある。
【0020】
いくつかの既存のアプリケーション現代化技術は、ワークロード・データ・ベースのアプローチを適用して、モノリシック・アプリケーションからマイクロサービスを生成する。そのようなワークロード・データ・ベースのアプローチは、動作データ(例えばログ・ファイル)を使用し、かつデータ収集の後に固定されたマイクロサービス・モデルを生成する。そのようなワークロード・データ・ベースのアプローチの問題は、動作データが収集困難であることにある。
【0021】
いくつかの既存のアプリケーション現代化技術は、以下のステップ:1)すべてのクラスを異なるクラスタに割り当てる;2)クラスタのそれぞれのペアについてジャッカード類似性係数を計算し、ここで、最大のジャッカード類似性を有するクラスタを統合する;及び3)いくつかの最適な目的(例えば、内部コネクティビティの最大化及び外部コネクティビティの最小化)にしたがって結果をリファインするために、発生論的アルゴリズムを適用する実装によってクラス・グルーピングを学習するため、ランタイム・トレースを使用するアプローチを適用する。
このようなアプローチの問題は、これが良好なビジネス機能の結合を有するグルーピング・クラスを生成することにおいて本質的なビジネス・コンテキストを考慮しないことにある。そのようなアプローチの別の問題は、それが高次の時間的依存性を考慮しないことにある。そのようなアプローチの別の問題は、それがグラフ内へとラン・トレースをアグリゲートし、したがって価値ある時間的情報を失うと共に、誤った過渡的な関係を仮定することにある。そのようなアプローチの別の問題は、それが呼び出し量を直接的に最小化せず、かつクラスタ品質を改善するためのビジネス・コンテキストを最小化しないことにある。
【0022】
既存のアプリケーション現代化技術が有する上述した所与の問題について、本開示は、システム、コンピュータ実装方法、又はコンピュータ・プログラム製品、又はこれらの組み合わせの形態において、これらの問題に対するソリューションを生成するために実装することができ、これらは、モデルをトレーニングし、モノリシック・アプリケーションを使用して実行することができるテストケースのランタイム・トレースに基づいて、モノリシック・アプリケーションにおけるクラスタ割り当て又はクラスのグラフ埋め込みを学習させることができるか;又はモデルを利用するクラスタ割り当てに基づいて、クラスのクラスタ又はモノリシック・アプリケーションの1つ又はそれ以上を識別するためのグラフ埋め込みを生成することができるか、又はこれらの組み合わせを可能とする。そのようなシステム、コンピュータ実装方法、又はコンピュータ・プログラム製品又はこれらの組み合わせの利益は、これらがクラスの機能的グルーピング(例えば、機能的クラスタリング)を容易にするように実装されて、1つ又はそれ以上のマイクロサービスの正確な識別及びモノリシック・アプリケーションの改善されたアプリケーション現代化を可能とすることにある。いくつかの実施形態においては、テストケースは、ランタイム・トレース内のモノリシック・アプリケーションのビジネス機能を提供する、ビジネス機能テストケースを含むことができる。クラスの機能的グルーピング(例えば、機能的クラスタリング)を容易にするように実装されることができる、そのようなシステム、コンピュータ実装方法、又はコンピュータ・プログラム製品又はこれらの組み合わせの利益は、これらが1つ又はそれ以上のマイクロサービスの正確な識別及びモノリシック・アプリケーションの改善されたアプリケーション現代化を可能とすることにある。
【0023】
図1は、本明細書において説明される1つ又はそれ以上の実施形態による、ランタイム・トレースに基づくモノリシック・アプリケーションからのマイクロサービスの生成を容易にすることができる実施例の非限定的なシステム100のブロック図を示す。システム100は、マイクロサービス生成システム102を含むことができ、これは、クラウド・コンピューティング環境に関連付けることができる。例えば、マイクロサービス生成システム102は、図9を参照して以下に説明されるクラウド・コンピューティング環境950又は図10(例えば、ハードウェア及びソフトウェア・レイヤ1060、可視化レイヤ1070、マネージメント・レイヤ1080又はワークロード・レイヤ1090又はそれらの組み合わせ)を参照して以下に説明される、1つ又はそれ以上の機能的抽象レイヤ又はそれらの両方に関連づけられることができる。
【0024】
マイクロサービス生成システム102又はそのコンポーネント、又はそれらの組み合わせ(例えば、モデル・コンポーネント108、クラスタ・コンポーネント110、コレクション・コンポーネント202、第2モデル・コンポーネント204、リファインメント・コンポーネント206など)は、図9を参照して以下に説明されるクラウド・コンピューティング環境950又は図10を参照して以下に説明される1つ又はそれ以上の機能的抽象レイヤ(例えば量子ソフトウェアなど)を使用して、本明細書において説明される本発明の1つ又はそれ以上の実施形態による1つ又はそれ以上の動作を実行することができる。例えば、クラウド・コンピューティング環境950又はそのような1つ又はそれ以上の機能的抽象レイヤは、マイクロサービス生成システム102又はそのコンポーネント又はこれらの両方により使用されることができる、1つ又はそれ以上の古典的なコンピューティング・デバイス(例えば、古典的コンピュータ、古典的プロセッサ、仮想マシン、サーバなど)、量子ハードウェア又は量子ソフトウェア(例えば、量子コンピューティング・デバイス、量子コンピュータ、量子プロセッサ、量子回路シミュレーション・ソフトウェア、超電導回路など)、又はこれらの組み合わせを含み、本明細書において説明される本発明の1つ又はそれ以上の実施形態による1つ又はそれ以上の動作を実行することができる。例えば、マイクロサービス生成システム102及びそのコンポーネント又はそれらの両方は、そのような1つ又はそれ以上の古典的又は量子コンピューティング又はこれらの組み合わせのリソースを利用して、1つ又はそれ以上の古典的又は量子的又はそれら両方の数学機能、計算又は方程式;コンピューティング又はスクリプト処理又はそれら両方;アルゴリズム;モデル(例えば、人工知能(AI)モデル、機械学習(ML)モデルなど);又は本明細書に記載する本発明の1つ又はそれ以上の実施形態による別の動作を実行することができる。
【0025】
本開示は、クラウド・コンピューティングについての詳細な説明を含むが、本明細書に列挙される教示の実装は、クラウド・コンピューティング環境に限定されないことは理解されるべきである。むしろ本発明の環境は、現在知られ、又は後に開発されるコンピューティング環境の如何なる他のタイプとの組み合わせにおいて実装することができる。
【0026】
クラウド・コンピューティングは、最小限の管理労力又はサービス提供者との交流をもって、迅速に提供及び開放構成可能なコンピューティング資源(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン及びサービス)の共用されるプールにアクセスするための利便性のある、オンデマンドのネットワークアクセスのためのサービス提供のモデルである。このクラウド・モデルは、少なくとも5つの特徴、少なくとも3つのサービスモデル、及び少なくとも4つの配置モデルを含むことができる。
【0027】
特徴は以下のとおりである:
【0028】
オンデマンド・セルフサービス:クラウドのコンシューマは、サーバ時間、及びネットワーク・ストレージといったコンピューティング能力を、サービスの提供者との人間的交流を必要とすることなく必要なだけ自動的に一方向的に提供される。
【0029】
広範なネットワークアクセス:能力は、ネットワーク上で利用可能であり、かつ異なったシン又はシッククライアント・プラットフォーム(例えば、モバイルホン、ラップトップ及びPDA)による利用を促す標準的な機構を通してアクセスされる。
【0030】
リソースの共用:提供者のコンピューティング資源は、マルチテナント・モデルを使用し、動的に割当てられる必要に応じて再割り当てられる異なった物理的及び仮想化資源と共に多数の消費者に提供するべく共用される。コンシューマは概ね提供される資源の正確な位置(例えば、国、州、又はデータセンタ)に関する制御又は知識を有さず、抽象化の高度の階層において位置を特定することができるというように、位置非依存の感覚が存在する。
【0031】
迅速な弾力性:機能は、迅速かつ弾力的に、場合によっては自動的に供給され素早くスケールアウトし、迅速に解放して素早くスケールインすることが可能である。コンシューマにとっては、供給のために利用可能な機能は、多くの場合、制限がないように見え、いつでも任意の量で購入することができる。
【0032】
計測されるサービス:クラウド・システムは、サービスの種類(例えば、ストレージ、処理、帯域幅、及びアクティブ・ユーザ・アカウント)に適したいくつかの抽象化レベルで計量機能を活用することによって、リソースの使用を自動的に制御し、最適化する。リソース使用量を監視し、制御し、報告することで、使用されているサービスのプロバイダ及びコンシューマの両方に対して透明性を提供することができる。
【0033】
サービスモデルは、以下のとおりである:
【0034】
ソフトウェア・アズ・ア・サービス(SaaS):コンシューマに提供される機能は、クラウド・インフラストラクチャ上で実行されるプロバイダのアプリケーションを使用することである。
アプリケーションは、ウェブ・ブラウザ(例えば、ウェブベースの電子メール)のようなシン・クライアント・インターフェースを通じて、種々のクライアント・デバイスからアクセス可能である。コンシューマは、限定されたユーザ固有のアプリケーション構成設定を除いて、ネットワーク、サーバ、オペレーティング・システム、ストレージ、又は個々のアプリケーションの機能も含む、基盤となるクラウド・インフラストラクチャを管理又は制御することはない。
【0035】
プラットフォーム・アズ・ア・サービス(PaaS):コンシューマに提供される能力は、プロバイダがサポートするプログラミング言語及びツールを用いて作成された、コンシューマが作成又は獲得したアプリケーションを、クラウド・インフラストラクチャ上に配置することである。コンシューマは、ネットワーク、サーバ、オペレーティング・システム、又はストレージを含む、基盤となるクラウド・インフラストラクチャを管理又は制御することはないが、配置されたアプリケーションを制御し、可能であればアプリケーション・ホスティング環境の構成を制御する。
【0036】
インフラストラクチャ・アズ・ア・サービス(IaaS):コンシューマに提供される機能は、処理、ストレージ、ネットワーク、及びその他の基本的なコンピューティング・リソースの提供であり、コンシューマは、オペレーティング・システム及びアプリケーションを含むことができる任意のソフトウェアを配置し、実行させることが可能である。
ンシューマは、基盤となるクラウド・インフラストラクチャを管理又は制御することはないが、オペレーティング・システム、ストレージ、配置されたアプリケーションの制御を有し、可能であれば選択ネットワーキング・コンポーネント(例えば、ホストのファイアウォール)の限定的な制御を有する。
【0037】
配置モデルは、以下の通りである。
【0038】
プライベート・クラウド:クラウド・インフラストラクチャは、1つの組織のためだけに動作する。これは、その組織又は第三者によって管理することができオン・プレミス又はオフ・プレミスで存在することができる。
【0039】
コミュニティ・クラウド:クラウド・インフラストラクチャは、いくつかの組織によって共有され、共通の利害関係(例えば、任務、セキュリティ要件、ポリシー、及びコンプライアンスの考慮事項)を有する特定のコミュニティをサポートする。これは、それらの組織又は第三者によって管理することができ、オン・プレミス又はオフ・プレミスに存在することができる。
【0040】
パブリック・クラウド:クラウド・インフラストラクチャは、公衆又は大きな産業グループが利用可能できるようにされており、クラウド・サービスを販売する組織によって所有される。
【0041】
ハイブリッド・クラウド:クラウド・インフラストラクチャは、2つ又はそれより多いクラウド(プライベート、コミュニティ、又はパブリック)を組み合わせたものであり、これらのクラウドは、固有のエンティティのままであるが、データ及びアプリケーションのポータビリティを可能にする標準化技術又は専有技術によって互いに結合される(例えば、クラウド間の負荷バランスのためのクラウド・バースティング)。
【0042】
クラウド・コンピューティング環境は、無国籍性、粗結合性、モジュール性、及び意味的相互運用性に焦点を合わせたサービス指向のものである。クラウド・コンピューティングの心臓部において、相互接続された複数のノードを含むものがインフラストラクチャである。
【0043】
マイクロサービス生成システム102は、メモリ104、プロセッサ106、モデル・コンポーネント108、クラスタ・コンポーネント110又はバス112又はこれらの組み合わせを含むことができる。
【0044】
本明細書に開示される種々の図面において図示された本発明の実施形態は、例示のみのためであり、そのためそのような実施形態のアークテクチャは、本明細書に図示されたシステム、デバイス、又はコンポーネント、又はこれらの組み合わせに限定されないことについて理解されるべきであろう。例えば、いくつかの実施形態においては、システム100又はマイクロサービス生成システム102又はこれらの両方はは、さらに、動作環境800及び図8を参照して本明細書において説明される種々のコンピュータ、又はコンピューティング・ベースの要素を含むことができる。いくつかの実施形態においては、そのようなコンピュータ、又はコンピューティング・ベースの要素は、図1又は本明細書において開示される他の図面に関連して示され、かつ説明される1つ又はそれ以上のシステム、デバイス、コンポーネント、又はコンピュータ実装動作又はこれら組み合わせの実装に関連して使用することができる。
【0045】
メモリ104は、1つ又はそれ以上のコンピュータ又は機械又はこれらの両方が読み出し、書き込み又は実行可能、又はそれらの組み合わせであって、プロセッサ106(古典的プロセッサ、量子プロセッサなど)によって実行された場合に実行可能なコンポーネント(複数でもよい)又は命令(複数でもよい)又はこれらの組み合わせにより定義される動作の実行を容易にすることが可能なコンポーネント又は命令又はこれらの組み合わせを格納することができる。例えば、メモリ104は、コンピュータ又は機械又はこれらの両方が読み出し、書き込み又は実行可能、又はこれらの組み合わせであって、プロセッサ106によって実行された場合に、種々の図面について参照の有無に拠らず、本明細書に説明されるように、マイクロサービス生成システム102、モデル・コンポーネント108、クラスタ・コンポーネント110、又はマイクロサービス生成システム102に関連する別のコンポーネント(例えばコレクション・コンポーネント202、第2モデル・コンポーネント204、リファインメント・コンポーネント206など)に関連する、本明細書において説明される種々の機能の実行を容易にする、実行可能なコンポーネント又は命令又はこれらの組み合わせを格納することができる。
【0046】
メモリ104は、1つ又はそれ以上のメモリ・アークテクチャを利用することが可能な、揮発性メモリ(例えば、ランダム・アクセス・メモリ(RAM)、スタティックRAM(SRAM)、ダイナミックRAM(DRAM)など)又は不揮発性メモリ(例えば、リード・オンリー・メモリ(ROM)、プログラマブルROM(PROM)、電気的にプログラマブルROM(EPROM)、電気的に消去可能なプログラマブルROM(EEPROM)など)を含むことができる。メモリ104のさらなる実施例は、システムメモリ816及び図8を参照して以下に説明される。メモリ104のそのような実施例は、本発明の如何なる実施形態を実装するために利用することができる。
【0047】
プロセッサ106は、メモリ104に格納することが可能な1つ又はそれ以上の、コンピュータ又は機械又はこれら両方が読み出し、書き込み、又は実行可能なコンポーネント、又は命令又はこれらの組み合わせを実装することが可能な、1つ又はそれ以上のタイプのプロセッサ又は電子回路、又はこれらの組み合わせ(例えば、古典的プロセッサ、量子プロセッサなど)を含むことができる。例えば、プロセッサ106は、そのようなコンピュータ又は機械又はそれらの両方が読み出し、書き込み、又は実行可能で、これらに限定されることはないが、ロジック、制御、入力/出力(I/O)、計算又はこれらの組み合わせを含むコンポーネント又は命令又はこれらの組み合わせによって特定されることができる。いくつかの実施形態においては、プロセッサ106は、1つ又はそれ以上の中央処理ユニット、マルチコア・プロセッサ、マイクロプロセッサ、デュアル・マイクロプロセッサ、マイクロコントローラ、システム・オン・チップ(SOC)、アレイ・プロセッサ、ベクトル・プロセッサ、量子プロセッサ、又は別のタイプのプロセッサ又はこれらの組み合わせを含むことができる。
さらに、プロセッサ106の実施例は、プロセッシング・ユニット814及び図8を参照して以下に説明される。プロセッサ106のそのような実施例は、本発明の如何なる実施形態を実装するために利用することができる。
【0048】
マイクロサービス生成システム102、メモリ104,プロセッサ106、モデル・コンポーネント108、クラスタ・コンポーネント110、又はマイクロサービス生成システム102の別のコンポーネント、又はこれらの組み合わせは、本明細書において説明するように(例えば、コレクション・コンポーネント202、第2モデル・コンポーネント204、リファインメント・コンポーネント206など)、通信可能に、電気的に、動作的に又は光学的にバス112を介して互いに結合されて、システム100、マイクロサービス生成システム102、又はそれらに結合される如何なるコンポーネント又はそれらの組み合わせの機能を実行する。バス112は、1つ又はそれ以上の、メモリバス、又はメモリ・コントローラ、ペリフェラル・バス、外部バス、ローカル・バス、量子バス、又は種々のバス・アーキテクチャを利用することが可能な別のタイプのバス又はこれらの組み合わせ含むことができる。さらにバス112の実施例は、システムバス818及び図8を参照して以下に説明される。バス112のそのような実施例は、本発明の如何なる実施形態を実装するために利用することができる。
【0049】
マイクロサービス生成システム102は、プロセッサを含むか、又は有線又は無線ネットワーク又はこれらの両方で有効であるか又は通信するように動作するか又はこれらの両方が可能な如何なるタイプのコンポーネント、機械、デバイス、機能、装置、又は器具を含むことができる。そのようなすべての実施形態が想定される。例えば、マイクロサービス生成システム102は、サーバ・デバイス、コンピューティング・デバイス、汎用目的コンピュータ、特定目的コンピュータ、量子コンピューティング・デバイス(例えば、量子コンピュータ)、タブレット・コンピューティング・デバイス、ハンドヘルド・デバイス、サーバ・クラス・コンピューティング・マシン、又はデータベース又はこれらの組み合わせ、ラップトップ・コンピュータ、ノートブック・コンピュータ、デスクトップ・コンピュータ、携帯電話、スマートホン、家電製品又は器具又はこれら両方、工業的又は市販デバイス又はこれらの両方、デジタル・アシスタント、マルチメディア・インターネット可能な電話、マルチメディア・プレイヤ、又は別のタイプのデバイス、又はこれらの組み合わせを含むことができる。
【0050】
マイクロサービス生成システム102は、データ・ケーブル(例えば、ハイデフィニッション・マルチメディア・インタフェース(HDMI(登録商標))、推奨規格(RS)232、イーサネット(登録商標)ケーブルなど)を介して、1つ又はそれ以上の外部システム、ソース、又はデバイス又はそれらの組み合わせ(例えば古典的又は量子コンピューティング・デバイス、通信デバイスなど)に結合されることができる(例えば、通信的、電気的、又は光学的に)。いくつかの実施形態においては、マイクロサービス生成システム102は、ネットワークを介して、1つ又はそれ以上の外部システム、ソース、又はデバイス又はそれらの組み合わせ(例えば古典的又は量子コンピューティング・デバイス、通信デバイスなど)に結合されることができる(例えば、通信的、電気的、又は光学的に)。
【0051】
いくつかの実施形態においては、そのようなネットワークは、これらに限定されることはなく、セルラ・ネットワーク、ワイドエリア・ネットワーク(WAN)(例えばインターネット)、又はローカルエリア・ネットワーク(LAN)を含む、有線及び無線ネットワークを含むことができる。例えば、マイクロサービス生成システム102は、これらに限定されないが、ワイヤレス・フィデリティ(Wi-Fi)、グローバル・システム・フォア・モバイルコミュニケーション(GSM)、ユニバーサル・モバイル・テレコミュニケーションズ・システム(UMTS)、ワールド・ワイド・インターオペラビリティ・フォア・マイクロウェーブ・アクセス(WiMAX)、エンハンスド・ジェネラル・パケット・ラジオ・サービス(エンハンスドGPRS)、第3世代パートナーシップ・プロジェクト(3GPP(登録商標))、ロング・ターム・エボリューション(LTE)、第3世代パートナーシップ・エボリューション2(3GPP(登録商標)2)、ウルトラ・モバイル・ブロードバンド(UMB)、ハイスピード・パケット・アクセス(HSPA)、Zigbee(商標)及び他の802.XXワイヤレス技術又はレガシー・テレコミュニケーション技術、BLUETOOTH(登録商標)、セッション・イニシエーション・プロトコル(Session Initiation Protocol:SIP)、ZIGBEE(登録商標)、RF4CEプロトコル、WirelessHARTプロトコル、6LoWPAN(IPv6オーバー・ローパワー・ワイヤレス・エリア・ネットワーク)、Z-Wave、ANT、ウルトラ・ワイドバンド(UWB)スタンダード・プロトコル、又は他の専有的又は非占有的な通信プロトコル又はこれらの組み合わせを含む、所望する如何なる有線又は無線技術を仮想的に使用して1つ又はそれ以上の外部システム、ソース、又はデバイス又はそれらの組み合わせ、例えばコンピューティング・デバイス(この逆も同様)と通信することができる。そのような実施例において、マイクロサービス生成システム102は、かくして、ハードウェア(例えば、中央処理ユニット(CPU)、トランシーバ、デコーダ、量子ハードウェア、量子プロセッサなど)、ソフトウェア(例えば、スレッドのセット、プロセスのセット、実行中のソフトウェア、量子パルス・スケジュール、量子回路、量子ゲートなど)又はマイクロサービス生成システム102と外部システム、ソース、又はデバイス又はそれらの組み合わせ(例えば、コンピューティング・デバイス、通信デバイスなど)との間で情報の通信を容易にするハードウェア及びソフトウェアの組み合わせを含むことができる。
【0052】
マイクロサービス生成システム102は、プロセッサ106(例えば古典的プロセッサ、量子プロセッサなど)によって実行された場合に、そのようなコンポーネント(複数でもよい)又は命令(複数でもよい)によって定義される動作の実行を容易にする、1つ又はそれ以上のコンピュータ又は機械又はそれら両方が書き込み、読み出し、又は実行、又はそれらの組み合わせが可能なコンポーネント又は命令又はこれらの組み合わせを含むことができる。さらに、種々の実施形態においては、種々の図面について参照の有無に拠らず、本明細書で説明されるように、マイクロサービス生成システム102に関連する如何なるコンポーネントは、プロセッサ106によって実行された場合に、そのようなコンポーネント複数でもよい)又は命令(複数でもよい)によって定義される動作の実行を容易にする、1つ又はそれ以上のコンピュータ又は機械又はそれら両方が読み出し、書き込み、又は実行、又はそれらの組み合わせが可能な実行可能なコンポーネント又は命令又はそれらの組み合わせを含むことができる。例えば、モデル・コンポーネント108、クラスタ・コンポーネント110、又はマイクロサービス生成システム102に関連する如何なる他コンポーネントは、本明細書で説明されるように(例えば、マイクロサービス生成システム102により、通信的、電子的に、動作的に、又は光学的に、結合又は利用される、又はこれらの組み合わせ)、そのようなコンピュータ又は機械又はそれら両方が読み出し、書き込み、又は実行、又はそれらの組み合わせが可能なコンポーネント(複数でもよい)又は命令(複数でもよい)又はそれらの組み合わせを含むことができる。結果として、数多くの実施形態により、マイクロサービス生成システム102又はそれに関連する如何なるコンポーネント又はそれらの両方は、本明細書で説明されるように、プロセッサ106を使用して、そのようなコンピュータ又は機械又はそれらの両方が読み出し、書き込み、又は実行又はそれらの組み合わせが可能なコンポーネント(複数でもよい)又は命令(複数でもよい)を実行させ、マイクロサービス生成システム102又はそれに関連する如何なるそのようなコンポーネント又はそれらの組み合わせを参照して本明細書で説明される、1つ又はそれ以上の動作の実行を容易にする。
【0053】
マイクロサービス生成システム102は、本明細書で説明されるように、モデル・コンポーネント108又はクラスタ・コンポーネント110、又はマイクロサービス生成システム102に関連する別のコンポーネント又はそれらの組み合わせ(例えばコレクション・コンポーネント202、第2モデル・コンポーネント204、リファインメント・コンポーネント206など)により実行されるか、又はそれに関連する動作の実行を容易にすることができる(例えば、プロセッサ106を介する)。例えば、以下に説明されるように、マイクロサービス生成システム102は、プロセッサ106(例えば、古典的プロセッサ、量子プロセッサなど)を介して:モデルをトレーニングして実行されたテストケースのランタイム・トレースに基づいて、モノリシック・アプリケーションにおけるクラスのクラスタ割り当てを学習させること;又はモデルを利用し、1つ又はそれ以上のモノリシック・アプリケーションのマイクロサービスを識別するためのクラスタ割り当てに基づいて、クラスのクラスタを生成すること、又はそれらの両方を容易にする。本明細書で参照されるように、クラスタは、本明細書に説明されるように1つ又はそれ以上の定義された目的(例えば、ビジネス・コンテキスト、呼び出し量など)に基づいて、マイクロサービス生成システム102又はその1つ又はそれ以上のコンポーネント、又はそれらの組み合わせ(例えばモデル・コンポーネント108、クラスタ・コンポーネント110、コレクション・コンポーネント202、第2モデル・コンポーネント204、リファインメント・コンポーネント206など)により、互いにクループ化されることのできるクラスのグループとして定義されることができる。より具体的には、モノリスのマイクロサービス・リファクタリングについて適用されるドメインにおいて(また、アプリケーション現代化として参照される)、本明細書で参照されるように、クラスタは、マイクロサービスへと構成されることが可能なクラスのグループとして定義されることができる。
【0054】
上記の実施例においては、以下に詳細に説明されるように、マイクロサービス生成システム102は、さらに、プロセッサ106(例えば古典的プロセッサ、量子プロセッサなど)を介して:モノリシック・アプリケーションのデータ依存性又はモノリシック・アプリケーションの静的呼び出しグラフの少なくとも1つに基づいて、1つ又はそれ以上のマイクロサービスをリファインすること;実行されたテストケースのランタイム・トレースに基づいて、1つ又はそれ以上の原因グラフを生成して、モノリシック・アプリケーション又はモノシリック・アプリケーションにおけるクラスのクラスタ割り当ての少なくとも1つの1次の時間的依存性又は高次の時間依存性の少なくとも1つを捕捉すること;又はモデルをトレーニングして、実行されたテストケースのランタイム・トレースに基づいて生成された1つ又はそれ以上の原因グラフの原因シーケンスを使用して、モノリシック・アプリケーションにおけるクラスタ割り当て又はクラスのグラフ埋め込みの少なくとも1つを学習させること、又はそれらの両方を含むことができる。上記の実施例においては、実行されるテストケースは、ランタイム・トレース内でモノリシック・アプリケーションのビジネス機能を提供するビジネス機能テストケースを含むことができる。
【0055】
別の実施例では、以下に詳細に説明されるように、マイクロサービス生成システム102は、さらに、プロセッサ106(例えば古典的プロセッサ、量子プロセッサなど)を介して:モノリシック・アプリケーション上で実行されたテストケースのランタイム・トレースを収集すること;ランタイム・トレースに基づいてモデルをトレーニングしてモノリシック・アプリケーションにおけるクラスのクラスタ割り当てを学習させること;又はモノリシック・アプリケーションの1つ又はそれ以上のマイクロサービスを識別するためのクラスタ割り当てに基づいてクラスのクラスタを生成すること、又はこれらの両方を含むことができる。この実施例においては、以下に説明されるように、マイクロサービス生成システム102は、さらに、プロセッサ106(例えば古典的プロセッサ、量子プロセッサなど)を介して:モノリシック・アプリケーションのデータ依存性又は静的呼び出しグラフの少なくとも1つに基づいて1つ又はそれ以上のマイクロサービスをリファインすること;ランタイム・トレースに基づいて、1つ又はそれ以上の原因グラフを生成して、モノリシック・アプリケーション又はモノリシック・アプリケーションにおけるクラスのクラスタ割り当ての少なくとも1つの1次の時間依存性又は高次の時間依存性の少なくとも1つを捕捉すること;又はモデルをトレーニングして、ランタイム・トレースに基づいて生成された1つ又はそれ以上の原因グラフの原因シーケンスを使用してモノリシック・アプリケーションにおけるクラスタ割り当て又はクラスのグラフ埋め込みの少なくとも1つを学習させること、又はこれらの両方を含むことができる。この実施形態においては、実行されるテストケースは、ランタイム・トレース内でモノリシック・アプリケーションのビジネス機能を提供するビジネス機能テストケースを含むことができる。
【0056】
モデル・コンポーネント108は、実行されたテストケースに基づいて、モノリシック・アプリケーションにおけるクラスのクラスタ割り当てを学習することができる。例えば、モデル・コンポーネント108は、トレーニングすることができる(例えば、マイクロサービス生成システム102を介して)人工知能(AI)又は機械学習(ML)モデル(例えば、ニューラル・ネットワーク)を含み、モノリシック・アプリケーションをそのようなテストケースの実行(例えば、プロセッサ106を介して)のために利用して生成されることができるランタイム・トレースに基づいて、モノリシック・アプリケーション(例えば、モノリス・エンタープライズ・アプリケーション)におけるクラスのクラスタ割り当てを学習させることを含むことができる。いくつかの実施形態では、モデル・コンポーネント108は、以下に説明され、かつ図4に示されるモデル400を含むことができ、ここで、モデル400は、トレーニングされる(例えば、以下に説明するマイクロサービス生成システム102を介して)ことができるニューラル・ネットワークを含み、モノリシック・アプリケーションをそのようなテストケースの実行(例えば、プロセッサ106を介して)のために利用して生成されることができるランタイム・トレースに基づいて、モノリシック・アプリケーション(例えばモノリス・エンタープライズ・アプリケーション)におけるクラスのクラスタ割り当てを学習させることを含むことができる。
【0057】
実施例においては、上述した実行されたテストケースは、モノリシック・アプリケーションを使用して実行されることができるビジネス機能テストケースを含むことができる(例えば、プロセッサ106を介してモノリシック・アプリケーション上で動作する)。この実施例においてはそのようなビジネス機能テストケースは、ランタイム・トレース内のモノリシック・アプリケーションのビジネス機能を提供することができる。例えば、そのようなビジネス機能テストケースは、順序及びモノリシック・アプリケーションのクラスと、関数呼び出しとがどれだけに頻度で相互作用するかを含むマイクロサービス生成システム102又はモデル・コンポーネント108又はこれらの両方の提供することを可能とすると共に、さらにマイクロサービス生成システム102又はモデル・コンポーネント108又はこれら両方がそれぞれのトレースにビジネス・コンテキストを関連付けて、機能グルーピングを改善することを提供する(例えば、以下に説明するように、マイクロサービス生成システム102、モデル・コンポーネント108、又はクラスタ・コンポーネント110又はそれらの組み合わせを介して)。
【0058】
モデル・コンポーネント108は、上述したようにモノリシック・アプリケーションについてのテストケースの実行により生成されることができるランタイム・トレースに基づいて生成される、1つ又はそれ以上の原因グラフの原因シーケンスを使用して、モノリシック・アプリケーション又はモノリシック・アプリケーションにおけるそのようなクラスのグラフ埋め込み、又はそれら両方においてクラスのクラスタ割り当てを学習することができる。実施例においては、モデル・コンポーネント108は、上述したランタイム・トレースに基づいて生成することができる、1つ又はそれ以上の原因グラフの原因シーケンスを使用して、上述したクラスタ割り当て及びグラフ埋め込みを同時に学習することができる(例えば、図2を参照して以下に説明するように第2モデル・コンポーネント204による)。この実施形態においては、そのような1つ又はそれ以上の上述した原因グラフの生成(例えば、第2モデル・コンポーネント204)は、マイクロサービス生成システム102又はモデル・コンポーネント108又はそれらの両方に対して:モノリシック・アプリケーションの1次の時間依存性又は高次の時間依存性、又はそれらの両方;又はモノリシック・アプリケーションにおけるクラスのクラスタ割り当て、又はこれらの組み合わせを提供する。
【0059】
上述したモデル・コンポーネント108によるそのような学習を容易にするために、マイクロサービス生成システム102は、モデル・コンポーネント108をトレーニングすることができる。例えば、モデル・コンポーネント108は、例えばニューラル・ネットワーク(例えばモデル400)といった人工知能(AI)又は機械学習(ML)モデルを含むことができ、これらは、マイクロサービス生成システム102によってトレーニングされて、上述した1つ又はそれ以上の原因グラフの原因シーケンスを使用してクラスタ割り当て又はグラフ埋め込み、又はそれらの両方を学習させることができる。例えば、マイクロサービス生成システム102は、以下の説明するトレーニング手順を実装することにより、モデル・コンポーネント108をトレーニングして、上述したクラスタ割り当て又はグラフ埋め込み又はそれらの両方を学習させることができる。
【0060】
マイクロサービス生成システム102がモデル・コンポーネント108をトレーニングするために実装して、上述したクラスタ割り当て又はグラフ埋め込み又はそれら両方を学習させる上述のトレーニング手順を説明するために、上述のモノリシック・アプリケーションは、例えば、1つ又はそれ以上の財務市場におけるセキュリティ・アセットのトレーディングのために用いることができる、例えば、Java(登録商標)2 Platform Enterprise Edition (J2EE)を含む実施例のトレーディング・アプリケーションを含むことができる。この実施形態においては、実施例のトレーディング・アプリケーションは、ユーザにログイン、それらのポートフォリオのビュー、株式時価のルックアップ、又は株式持ち分の売買、又はこれらの組み合わせを許容する、オンライン株式トレーディングのためのJ2EEアプリケーションを含むことができる。この実施形態においては、実施例のトレーディング・アプリケーション上で実行するテストケース(例えば、ビジネス機能テストケース)によって生成されるラインタイム・トレースは、プレゼンテーション・レイヤ、ビジネス・ロジック、及びパーシスタンス・レイヤの3-タイヤ・アーキテクチャを表現することができるマルチスレッドのランタイム・トレースを含む。この実施形態においては、そのようなランタイム・トレースは、実施例のトレーディング・アプリケーションのテストケース(例えば、ビジネス機能テストケース)上での実行(例えば、プロセッサ106)により生成され、これらに限定されることはなく、init、login、log-off、トレード・アカウント・アップデート・プロファイル、マーケット・サマリ・グロッサリ、トレード・クオート買い、トレード・ポートフォリオ売り、又は別のテストケース又はこれらの組み合わせを含む。この実施形態においては、クラス及び他のクラスへのその呼び出しは、多数のビジネス・コンテキストを含む可能性がある。この実施形態においては、実施例のトレーディング・アプリケーション上で上記に定義されたそのようなテストケースを実行することにより生成されることができるラインタイム・トレースは、以下のランタイム・トレースを含むことができる。
【0061】
1567027540073,init,Root は MarketSummarySingletonを呼び出す
【0062】
1567027540074,init,MarketSummarySingleton は、Logを呼び出す
【0063】
1567027540075,init,LogはTradeConfigを呼び出す
【0064】
1567027540076,init,TradeConfigはLogに返す
【0065】
1567027540077,init,LogはTradeConfigを呼び出す
【0066】
1567027540078,init,TradeConfigは、Logに返す
【0067】
1567027540079,init,LogはMarketSummarySingletonに返す
【0068】
......
【0069】
1567027743085,trade-quotes-buy,RootはOrdersAlertFilterを呼び出す
【0070】
1567027743086,trade-quotes-buy,OrdersAlertFilterは、TradeConfigを呼び出す
【0071】
1567027743087,trade-quotes-buy,TradeConfigは、OrdersAlertFilterに返す
【0072】
Root - MarketSummarySingleton - Log - TradeConfig - (TradeConfig-Log) -- log - MarketSummarySingleton init
【0073】
Root - OrdersAlertFilter - TradeConfig - (TradeConfig-OrdersAlertFilter) -- OrdersAlertFilter trade-quotes-buy
【0074】
この実施形態においては、モノリシック・アプリケーションが実施例のトレーディング・アプリケーションを含む場合、マイクロサービス生成システム102は、上記に定義したランタイム・トレースに基づく原因シーケンスを含む、1つ又はそれ以上の原因グラフを生成することができる。この実施形態においては、マイクロサービス生成システム102は、そのような1つ又はそれ以上の原因グラフを生成して、モノリシック・アプリケーション又はモノリシック・アプリケーションにおけるクラス又はそれらの両方の1次の時間依存又は高次の時間依存又はそれら両方を捕捉する。この実施形態においては、そのような1つ又はそれ以上の原因グラフの生成を容易にするために、マイクロサービス生成システム102は、例えば、上記に説明したそのような原因グラフ(複数でもよい)を生成するための高次の時間的ニューラル・ネットワークといったニューラル・ネットワークを含むことができる第2モデル・コンポーネント(例えば、図2を参照して以下に説明される第2モデル・コンポーネント204)を利用することができる。この実施形態においては、マイクロサービス生成システム102は、そのような第2モデル・コンポーネント(例えば、図2を参照して以下に説明される第2モデル・コンポーネント204)を使用してパスの時間的関係を捕捉(例えば、上記に説明した原因シーケンスを含む原因グラフの生成を介して)すると共に、高く関係した呼び出しシーケンスを外挿することができる。
【0075】
この実施形態において、モノリシック・アプリケーションが実施例のトレーディング・アプリケーションを含む場合、マイクロサービス生成システム102は、モデル・コンポーネント108を入力として、上記に説明した1つ又はそれ以上の原因グラフの原因シーケンスを使用してトレーニングし、上記に説明したクラスタ割り当て又はグラフ埋め込み又はそれらの両方を学習させることができ(また、本明細書では、ランタイム原因シーケンス又はランタイム・シーケンス、又はそれら両方として参照する)、ここで、出力は、ノード埋め込み(例えば、マッピングf:V→R)及びクラスタ割り当てを含むことができる。この実施形態においては、マイクロサービス生成システム102は、モデル・コンポーネント108をトレーニングして、ランタイム原因シーケンスから近接するノードを直接サンプルすることができる。この実施形態においては、所与のラインタイム・シーケンスSについて、ノードvを含むウィンドウのコレクションをN(v)で記述することができる。この実施形態においては、マイクロサービス生成システム102は、以下のサンプル・ルーチンを実装することにより、モデル・コンポーネント108をトレーニングして、原因シーケンスから1つ又はそれ以上のポジティブなサンプル・ペアを生成することができる:
【0076】
所与のランタイム・シーケンスについて “Root, MarketSummarySingleton, Log, TradeConfig, TradeConfigは、Logを Log及びサイズ3の観察ウィンドウを返す。
【0077】
……
【0078】
ノード“MarketSummarySingleton”は、近隣ウィンドウNs(v=MarketSummarySingleton)を有する。
【0079】
[Root, MarketSummarySingleton, Log]
【0080】
[MarketSummarySingleton, Log, TradeConfig]
【0081】
ポジティブなサンプル・ペアを抽出する:
【0082】
(MarketSummarySingleton, Root)
【0083】
(MarketSummarySingleton, Log)
【0084】
(MarketSummarySingleton, TradeConfig)
【0085】
この実施例の実施形態においては、モノリシック・アプリケーションが実施例のトレーディング・アプリケーションを含み、モデル・コンポーネント108は、例えば図4に示されたモデル400といったニューラル・ネットワークを含むことができる。この実施形態においては、マイクロサービス生成システム102は、モデル・コンポーネント108(例えばモデル400)を、以下のタスクについてモデル・コンポーネント108をトレーニングすることにより、上記に説明したクラスタ割り当て又はグラフ埋め込み又はそれら両方を学習させることができる:ラインタイム・シーケンスにおける所与の特定のクラスAについて、マイクロサービス生成システム102は、モデル・コンポーネント108をトレーニングして、ランタイム・シーケンス内のAの“近隣”クラスであるクラスごとに確率を予測する。この実施形態においては、もしも2つのJava(登録商標)クラスが極めて類似する“コンテキスト”を有するのであれば、このことは、これらの2つのクラスが同一のビジネス・コンテイストの下で同一のコンテキスト・ウィンドウ内で共起しがちであることを意味することができ、マイクロサービス生成システム102は、モデル・コンポーネント108をトレーニングしてこれらの2つのクラスについて類似する埋め込みを出力することができる。シーケンス・ベースの埋め込みを使用するこの実施形態においては、近隣ノードのシーケンスは、例えば、ランダム・ウォークといった方法を使用して原因グラフ(複数でもよい)からサンプルされることができると共に(例えば、マイクロサービス生成システム102又はモデル・コンポーネント108又はそれらの両方)、目的はノードの近隣を観察することについてのネガティブ・ログ尤度を最小化すること、とすることができる。
【0086】
この実施例の実施形態においては、モノリシック・アプリケーションが実施例のトレーディング・アプリケーションを含み、マイクロサービス生成システム102は、モデル・コンポーネント108をトレーニングして、以下に定義される式(1)により、ノード埋め込みの条件に基づいて、上記に説明したノードの近隣を観察することについてのネガティブ・ログ尤度の最小化を達成することができる。
【0087】
【数1】
【0088】
ここで、f(v)は、ノードvに対する埋め込みを意味し、Pは、確率関数を意味し、N(i)は、ノードvの周りの近隣ノードのコレクションを意味する。
【0089】
この実施例の実施形態においては、モノリシック・アプリケーションが実施例のトレーディング・アプリケーションを含み、条件的独立性の仮定及び将来空間における対称性にしたがって、上記に定義された式(1)が、マイクロサービス生成システム102又はモデル・コンポーネント108又はそれらの両方により、以下に定義される式(2)として定式化されることができる。
【0090】
【数2】
【0091】
ここで、Lは、埋め込みの最適化関数を意味し、uは、ノードuを意味し、f(u)は、ノードuの埋め込みを意味し、かつf(n)は、ノードnについての埋め込みを意味する。
【0092】
この実施例の実施形態においては、モノリシック・アプリケーションが実施例のトレーディング・アプリケーションを含み、マイクロサービス生成システム102は、モデル・コンポーネント108をトレーニングして、クラスタ割り当て又はグラフ埋め込み又はそれらの両方を同時に学習させることができる。例えば、そのような同時的な学習を容易にするために、マイクロサービス生成システム102は、モデル・コンポーネント108を、以下に定義される式(3)のk-meansコスト関数を含むように目的関数(例えば式(2))を拡張して、トレーニングすることができる。
【0093】
【数3】
【0094】
ここで、Lは、埋め込み及びクラスタリングの両方についての全体の最適化関数を意味し、γは、クラスタ・コストの重み係数を判断するためのハイパー・パラメータを意味し、uは、c番目のクラスタのクラスタ平均を意味する。これらは、トレーニング可能なパラメータであることに留意されたい。
【0095】
いくつかの実施形態においては、マイクロサービス生成システム102は、1つ又はそれ以上の人工知能(AI)モデル又は1つ又はそれ以上の機械学習(ML)モデル又はそれらの両方を含むか、又は利用するか、又はそれらの両方により、モデル・コンポーネント108をトレーニングして、上記に説明した1つ又はそれ以上の原因グラフの原因シーケンスを使用して上記に説明したようにクラスタ割り当て又はグラフ埋め込み又はそれらの両方を学習させることができる。例えば、マイクロサービス生成システム102は、モデル・コンポーネント108をトレーニングするための1つ又はそれ以上のAI又はMLモデル又はそれらの両方を含むか、又は使用するか、又はそれらの両方により、上記に説明した1つ又はそれ以上の原因グラフの原因シーケンスを使用し、かつ1つ又はそれ以上の教師無し学習モデル(例えば、例示的に上記に説明したトレーニング手順といったような教師無しクラスタリング方法)を使用してクラスタ割り当て又はグラフ埋め込み又はそれら両方を学習することができる。
【0096】
いくつかの実施形態においては、マイクロサービス生成システム102は、モデル・コンポーネント108をトレーニングして、クラス化に基づいて、上記に説明した1つ又はそれ以上の原因グラフの原因シーケンス、コリレーション推定、又は人工知能の原理に関連する表現又はそれらの組み合わせを使用して、上記に説明したクラスタ割り当て又はグラフ埋め込み又はそれらの両方を学習させることができる。例えば、マイクロサービス生成システム102は、モデル・コンポーネント108をトレーニングするための自動クラス化システム又は自動クラス化処理又はそれらの両方を利用し、上記に説明した1つ又はそれ以上の原因グラフの原因シーケンスを使用して上記に説明したクラスタ割り当て又はグラフ埋め込み又はそれらの両方を学習させることができる。1つの実施形態においては、マイクロサービス生成システム102は、モデル・コンポーネント108をトレーニングするための確率的又は統計ベースの分析(例えば、分析ユーティリティへのファクタリング及びコスト)を利用して、上記に説明した1つ又はそれ以上の原因グラフの原因シーケンスを使用して上記に説明したクラスタ割り当て又はグラフ埋め込み又はそれらの両方を学習させることができる。
【0097】
いくつかの実施形態においては、マイクロサービス生成システム102は、如何なる好適な機械学習ベース技術、統計ベース技術又は確率ベース又はこれらの組み合わせの技術を利用し、上記に説明した1つ又はそれ以上の原因グラフの原因シーケンスを使用してモデル・コンポーネント108をトレーニングし、上記に説明したクラスタ割り当て又はグラフ埋め込み又はそれらの両方を学習させることができる。例えば、マイクロサービス生成システム102は、エキスパート・システム、ファジー・ロジック、サポート・ベクトル・マシン(SVM)、隠れマルコフ・モデル(HMMs)、グリーディ検索アルゴリズム、ルール・ベース・システム、ベイジアン・モデル(例えばベイジアン・ネットワーク)、ニューラル・ネットワーク、他の非線形トレーニング技術、データ・フュージョン、ユーティリティ・ベースの分析システム、ベイジアン・モデルを使用するシステム、又は別のモデル、又はそれらの組み合わせを使用することができる。いくつかの実施形態においては、マイクロサービス生成システム102は、トレーニングするモデル・コンポーネント108に関連する機械学習計算のセットを実行して、1つ又はそれ以上の原因グラフの原因シーケンスを使用して上記に説明したクラスタ割り当て又はグラフ埋め込み又はそれらの両方を学習させることができる。例えば、マイクロサービス生成システム102は、クラスタリング機械学習計算のセット、記号論理学的な回帰機械学習計算のセット、決定木機械学習計算のセット、ランダム・フォレスト機械学習計算のセット、回帰木機械学習計算のセット、最小二乗法機械学習計算のセット、インスタンス・ベースの機械学習計算のセット、回帰機械学習計算のセット、サポート・ベクトル回帰機械計算のセット、k-means機械学習計算のセット、スペクトル・クラスタリング機械学習計算のセット、ルール学習機械学習計算のセット、ベイジアン機械学習計算のセット、ディープ・ボルツマン機械学習のセット、ディープ・ビリーフ・ネットワーク(deep belief network)計算のセット、又は異なる機械学習計算のセット、又はこれらの組み合わせを実行してモデル・コンポーネント108をトレーニングし、上記に説明した1つ又はそれ以上の原因グラフの原因シーケンスを使用して、上記に説明したクラスタ割り当て又はグラフ埋め込み又はそれらの両方を学習させることができる。
【0098】
クラスタ・コンポーネント110は、モデル・コンポーネント108を使用してモノリシック・アプリケーションの1つ又はそれ以上のマイクロサービスを識別するモノリシック・アプリケーションにおけるクラスタ割り当てに基づいて、モノリシック・アプリケーションにおけるクラスのクラスタを生成することができる。例えば、モデル・コンポーネント108をトレーニングして上記に説明した1つ又はそれ以上の原因グラフの原因シーケンスを使用してモノリシック・アプリケーションのクラスタ割り当て又はグラフ埋め込み又はそれらの両方を学習させるマイクロサービス生成システム102に基づいて、クラスタ・コンポーネント110は、モデル・コンポーネント108のトレーニングされたバージョンを利用して、モデル・コンポーネント108により学習されたそのようなクラスタ割り当て又はグラフ埋め込み又はそれらの両方に基づいて、モノリシック・アプリケーションにおけるクラスのクラスタを生成する。この実施例において、上記に説明したクラスタ・コンポーネント110によって生成されることができるクラスのクラスタ(モデル・コンポーネント108を介する)は、モノリシック・アプリケーションの1つ又はそれ以上のマイクロサービス(モノリシック・アプリケーションの1つ又はそれ以上の可能性のあるマイクロサービス候補)を識別することができ、このことによって、クラスタ・コンポーネント110によって識別されるか又は図2を参照して以下に説明されるように、リファインメント・コンポーネント206によりさらにリファインされるか、又はそれらの両方が行われる。
【0099】
図2は、本明細書において説明される1つ又はそれ以上の実施形態による、ランタイム・トレースに基づきモノリシック・アプリケーションからマイクロサービスを生成することを容易にすることができる実施例の非限定的システム200のブロック図を示す。システム200は、マイクロサービス生成システム102を含むことができ、これはさらに、コレクション・コンポーネント202、第2モデル・コンポーネント204、又はリファインメント・コンポーネント206又はこれらの組み合わせを含むことができる。
それぞれの実施形態において利用されるそれぞれの同様な要素又はプロセス又はそれらの組み合わせのそれぞれの説明は、簡略化の目的のため、省略する。
【0100】
コレクション・コンポーネント202は、モノリシック・アプリケーションについて実行されるテストケースのランタイム・トレースを収集することができる。例えば、コレクション・コンポーネント202は、モノリシック・アプリケーションを使用するテストケースの実行(例えば、プロセッサ106を介する)により生成されることができるランタイム・トレースを収集することができ、ここで、そのようなテストケースは、図1を参照して上記に説明されたビジネス機能テストケースを含むことができる。
【0101】
上記に説明したそのようなランタイム・トレースの収集を容易にするため、コレクション・コンポーネント202は、人工知能(AI)に基づく機械学習(ML)及び自然言語処理(NLP)又は固有表現抽出(NER)又はそれらの組み合わせを利用することができ、これらに限定されないが、モノリシック・アプリケーションを使用する上記に説明したそのようなテストケースを実行することによって生成されたランタイム・トレースの抽出を容易にすることができる、シャロー又はディープ・ニューラル・ネットワーク・モデル、サポート・ベクトル・マシン(SVM)、決定木分類器、又はいなかる教師あり又は教師無し機械学習モデルを含む。例えば、コレクション・コンポーネント202は、モノリシック・アプリケーションの搭載されたソースコードからランタイム・ログを生成することができるモニタリング・アプリケーションを利用することができる。別の実施例においては、コレクション・コンポーネント202は、パイソン・ベース・ツールを使用して、モノリシック・アプリケーションのソースコードから、例えば、クラス・ネーム、アトリビュート、メソッド・ネーム、メソッド引数、リターン・タイプ、又は他の情報、又はこれらの組み合わせといった情報を抽出することができ、ここで、そのようなパイソン・ベース・ツールは、さらに、モノリシック・アプリケーションへと、ランタイム・トレース生成のためさらにコードを挿入することができる。別の実施例においては、コレクション・コンポーネント202は、ビジネス・コンテキストに基づいてトレースを生成することが可能な、Java(登録商標)フロント・エンド・ツールを使用することができる。別の実施例においては、コレクション・コンポーネント202は、承継関係、データ依存性、アトリビュート、メソッド引数、リターン・タイプ、又は他の関係又はそれらの組み合わせを抽出することができる抽出アプリケーションを使用することができる。
【0102】
第2モデル・コンポーネント204は、モノリシック・アプリケーション上で実行されるテストケースのランタイム・トレースに基づいて、1つ又はそれ以上の原因グラフを生成して、モノリシック・アプリケーション又はモノリシック・アプリケーションのクラスのクラスタ割り当て、又はそれらの両方の1次の時間的依存性又は高次の時間的依存性を捕捉することができる。例えば、第2モデル・コンポーネント204は、モノリシック・アプリケーション上でのビジネス機能テストケースの実行により生成されたランタイム・トレースに基づき図1を参照して上記に説明された1つ又はそれ以上の原因グラフを生成して、モノリシック・アプリケーション又はモノリシック・アプリケーションにおけるクラスのクラスタ割り当て又はそれら両方の1次の時間的依存性又は高次の時間的依存性又はそれら両方を捕捉することができる。
【0103】
第2モデル・コンポーネント204は、ニューラル・ネットワークを含むことができる。実施例においては、第2モデル・コンポーネント204は、図1を参照して上記に説明したランタイム・トレースに基づく原因シーケンスを含む1つ又はそれ以上の原因グラフを生成することができる高次の時間的ニューラル・ネットワークを含み、上記に説明した1次の時間的依存性又は高次の時間的依存性又はそれらの両方を捕捉することができる。例えば、第2モデル・コンポーネント204は、図1を参照して上記に説明したランタイム・トレースに基づく原因シーケンスを含む1つ又はそれ以上の原因グラフを生成することができる高次の時間的ニューラル・ネットワークを含み、パスの時間的関係を捕捉できると共に、高く関係する呼び出しシーケンスを外挿することができる。実施例においては、第2モデル・コンポーネント204により生成されることができるそのような原因グラフ(複数でもよい)又は原因シーケンスは、モデル・コンポーネント108をトレーニングするマイクロサービス生成システム102によって使用され、図1を参照して上記に説明されたようなモノリシック・アプリケーションのクラスタ割り当て又はグラフ埋め込み又はそれらの両方を学習することができる。
【0104】
リファインメント・コンポーネント206は、モノリシック・アプリケーションのデータ依存性又はモノリシック・アプリケーションの静的呼び出しグラフ又はそれらの両方に基づいて(例えば使用して)、モノリシック・アプリケーションの1つ又はそれ以上のマイクロサービスをリファインすることができる。例えば、クラスタ・コンポーネント110により上記のように生成されることができるクラスのクラスタ(例えば、モデル・コンポーネント108の利用を介する)は、モノリシック・アプリケーションの1つ又はそれ以上のマイクロサービス(モノリシック・アプリケーションの1つ又はそれ以上の可能性のあるマイクロサービス候補)を識別することができ、これがモノリシック・アプリケーションのデータ依存性又はモノリシック・アプリケーションの静的呼び出しグラフ又はそれらの両方に基づいて(例えば使用して)、以下に説明されるように、リファインメント・コンポーネント206によってさらにリファインされることができる。
【0105】
図1を参照して上記に説明したトレーディング・アプリケーションの実施例においては、モノリシック・アプリケーションのデータ依存性又はモノリシック・アプリケーションの静的呼び出しグラフ又はそれらの両方に基づいて(例えば使用して)、モノリシック・アプリケーションのそのような1つ又はそれ以上のマイクロサービスのリファインメントを容易にするため、リファインメント・コンポーネント206は、コスト関数(例えば式(3))を増強して追加の制限項を追加することができる。例えば、図1を参照して上記に説明したトレーディング・アプリケーションの実施形態の実施例においては、リファインメント・コンポーネント206は、以下の定義される式(4)を得るように追加の制限項を追加して、コスト関数(例えば式(3))を増強することができる。図1を参照して上記に説明したトレーディング・アプリケーションの実施形態の実施例においては、リファインメント・コンポーネント206は、以下に定義する式(4)を利用して、モノリシック・アプリケーションのデータ依存性又はモノリシック・アプリケーションの静的呼び出しグラフ又はそれらの両方に基づいて(例えば使用して)、モノリシック・アプリケーションの1つ又はそれ以上のマイクロサービスをリファインすることができ、ここで、そのようなデータ依存性又は静的呼び出しグラフは、上記に説明されるように、コレクション・コンポーネント202により収集されることができる(例えば、モノリシック・アプリケーションを使用するビジネス機能テストケースの実行により生成されるラインタイム・トレースから収集される)。
【0106】
【数4】
【0107】
ここで、ω(u,v)は、規制重みを意味し、λは、規制係数(例えばペナルティの深刻さを判断する)を意味する。
【0108】
上記の実施例において、c2は:u、vが異なるクラスタに属するが、ランタイム呼び出し依存性を有し、かつω2(u,v)は、規格化された呼び出し頻度を計算する。上記の実施例においては、もしも2つのクラスが頻繁な関数呼び出しを有するのであれば、その後、それらの表現は近い(例えば、クラスタ間の呼び出し量)とすべきであろう。
【0109】
図3は、本明細書において説明される1つ又はそれ以上の実施形態に基づくモノリシック・アプリケーションからマイクロサービスを生成することを容易にすることができる、実施例の非限定的コンピュータ実装方法300のフロー図を示す。それぞれの実施形態において利用されるそれぞれの同様な要素又はプロセス又はそれらの組み合わせのそれぞれの説明は、簡略化の目的のため、省略する。
【0110】
302で、コンピュータ実装方法300は、入力データを収集することを含むことができる(例えば、マイクロサービス生成システム102又はコレクション・コンポーネント202又はこれらの両方を介する)。例えば、図2を参照して上記に説明したように、コレクション・コンポーネント202は、モノリシック・アプリケーションを使用してテストケース(例えば、ビジネス機能テストケース)を実行(例えば、プロセッサ106を介する)することにより生成されることができる、ランタイム・トレースを収集することができる。
【0111】
実施例においては、図3に示されるように、302で、コレクション・コンポーネント202は、モノリシック・アプリケーションが実装するソースコードからランタイム・ログを生成することができるモニタリング・アプリケーションを利用することができる。この実施例においては、図3に示されるように、302で、そのようなモニタリング・アプリケーションは、ログ・ファイル又はテキスト・ファイル又はそれら両方としてフォーマットされたランタイム・ログを生成することができる。
【0112】
別の実施例においては、図3に示されるように、302で、コレクション・コンポーネント202は、ランタイム・コンテキストを生成することができる例えばJava(登録商標)フロント・エンド・ツールといったラインタイム・コンテキスト・ジェネレータを利用することができる。この実施形態においては、図3に示されるように302で、そのようなランタイム・コンテキスト・ジェネレータは、Java(登録商標)Scriptオブジェクト・ノーテーション(JSON)ファイル又はカンマ・セパレーテッド・バリュー(CSV)ファイルとしてフォーマットされた、コンテキスト・ラベル(例えば、ビジネス・コンテキスト・ラベル)を含むラインタイム・コンテキストを生成することができる。この実施例においては、マイクロサービス生成システム102を実装するエンティティ(例えば、人間、クライアント、ユーザ、コンピューティング・デバイス、ソフトウェア・アプリケーション、エージェント、機械学習(ML)モデル及び人工知能(AI)モデルなど)は、そのようなコンテキスト・ラベル(例えばビジネス・コンテキスト・ラベル)を、マイクロサービス生成システム102のインタフェース・コンポーネント(図には示されていない)(例えば、アプリケーション・プログラミング・インタフェース(API)、表現状態移行API、グラフィカル・ユーザ・インタフェース(GUI)など)を使用して定義することができる。
【0113】
別の実施例においては、302で図3に示されるように、コレクション・コンポーネント202は、例えば、パイソン・ベース・ツールといったようなデータ依存性ジェネレータを利用して、データ依存性グラフを生成するために使用されることができるモノリシック・アプリケーションのソースコードから情報を抽出することができ、ここで、そのような情報は、クラス・ネーム、アトリビュート、メソッド・ネーム、メソッド引数、リターン・タイプ、又は他の情報、又はこれらの組み合わせを含むことができる。この実施例においては、図3に示されるように、302で、そのようなデータ依存性ジェネレータは、JSONファイルとしてフォーマットされることができる、シンボル・テーブル(図3においてsymTableとして表示される)又は参照テーブル(図3においてrefTableとして表示される)又はそれらの両方を含むデータ依存性グラフを生成することができる。
【0114】
別の実施例においては、図3に示されるように302で、コレクション・コンポーネント202は、例えば、承継関係、データ依存性、アトリビュート、メソッド引数、リターン・タイプ、又は他の関係又はそれらの組み合わせを抽出することができる抽出アプリケーションといった静的呼び出しグラフ・ジェネレータを使用して、静的呼び出しグラフを生成することができる。この実施形態においては図3に示されるように、302で、そのような静的呼び出しグラフ・ジェネレータは、JSONとしてフォーマットされた静的呼び出しグラフを生成することができる。この実施形態においては、図3に示されるように、302で、マイクロサービス生成システム102又はコレクション・コンポーネント202又はそれら両方は、静的呼び出しグラフから非アプリケーション・クラスをフィルタアウトすることができ、ここで、そのようなフィルタされた静的呼び出しグラフは、以下に説明されるように、クラスのクラスタをリファインするために使用されるか、又はユーザ・インタフェース(UI)に提供されることができるか、又はそれらの両方が行われる。
【0115】
304で、コンピュータ実装方法300は、ランタイム・トレースを生成することを含むことができる(例えば、マイクロサービス生成システム102又は第2モデル・コンポーネント204又はそれらの両方)。例えば、図3に示されるように、304で、上記に説明した302で、実装ソースからのランタイム・ログの収集又はランタイム・コンテキストの生成、又はそれらの両方(例えば、ビジネス・コンテキスト又はビジネス・コンテキスト・ラベル、又はそれら両方)に基づいて、304で、マイクロサービス生成システム102又は第2モデル・コンポーネント204又はそれら両方は、フロー(例えば、原因シーケンス、データフローなど)を生成すると共に、モノリシック・アプリケーションを使用して上述したテストケース(例えばビジネス機能テストケース)の実行により生成されたそれぞれのトレースへとテキスト・ラベルを追加することができ、それによってJSONファイル(複数でもよい)としてフォーマットされることができるランタイム・トレースを得る。
【0116】
306で、コンピュータ実装方法300は、モノリシック・アプリケーションのクラスをクラスタリングすることを含み(例えば、マイクロサービス生成システム102、モデル・コンポーネント108、クラスタ・コンポーネント110、又は第2モデル・コンポーネント204又はそれらの組み合わせ)、図3に図示されるようにクラスタリングA、B、又はC又はこれらの組み合わせを生成することができる。例えば、306でクラスのそのようなクラスタリングを容易にするために、コンピュータ実装方法300は、クラスタをモノリシック・アプリケーションのクラスに割り当てることを含み(例えば、マイクロサービス生成システム102、モデル・コンポーネント108、クラスタ・コンポーネント110、又は第2モデル・コンポーネント204又はそれらの組み合わせ)、図3に図示されるようにクラスタリングA、B、又はC又はこれらの組み合わせを生成することができる。例えば、図3に示されるように306で、コンピュータ実装方法300は:a)原因グラフを生成すること又は適用すること又はそれらの両方(例えば、マイクロサービス生成システム102又は第2モデル・コンポーネント204又はそれらの両方を介して)を行って間的依存性を取得して、クラスタリングAを得;b)原因グラフを生成すること又は適用すること又はそれらの両方を行って(例えば、マイクロサービス生成システム102、モデル・コンポーネント108、クラスタ・コンポーネント110、又は第2モデル・コンポーネント204又はそれらの組み合わせ)、モデル・コンポーネント108をトレーニングし、モノリシック・アプリケーションのクラスタ割り当て又はグラフ埋め込み又はそれらの両方を学習(図1及び図2を参照して上記に説明したように)させて、原因グラフを使用してそれぞれのクラスのパーティションを取得し、それにより、クラスタリングBを得、又はc)上記に説明したように304で生成されたランタイム・トレースを適用することを行って(例えば、マイクロサービス生成システム102、モデル・コンポーネント108又はクラスタ・コンポーネント110又はそれらの組み合わせ)、モデル・コンポーネント108をトレーニングし、モノリシック・アプリケーションのクラスタ割り当て又はグラフ埋め込み又はそれらの両方を学習(図1及び図2を参照して上記に説明したように)させて、ランタイム・トレースを使用してそれぞれのクラスのパーティションを取得し、それにより、クラスタリングCを得るか、これらのことの組み合わせを行う。
【0117】
308で、コンピュータ実装方法300は、図3に図示したように、上記に説明した302で生成されたデータ依存性グラフに基づき、かつエンティティ(例えば、人間、クライアント、ユーザ、コンピューティング・デバイス、ソフトウェア・アプリケーション、エージェント、機械学習(ML)モデル、人工知能(AI)モデルなど)からの入力を使用して、クラスタリングA、B、又はC、又はそれらの組み合わせをリファインすることを含むことができる(例えば、マイクロサービス生成システム102又はリファインメント・コンポーネント206又はそれらの組み合わせ)。例えば図3に示されるように308で、リファインメント・コンポーネント206又は上記に説明したエンティティ又はこれらの組み合わせは、ランタイム・トレース内に存在しないクラスを追加(例えば、A、B、又はC、又はこれらの組み合せに対して)することができ、ここで、そのようなクラスはデータ依存性を有する(例えば、データ依存性グラフを使用して判断されたクラスタリングA、B、又はC、又はそれらの組み合わせにおける1つ又はそれ以上のクラスのデータ依存性)。この実施例においては、図3に示されるように308で、リファインメント・コンポーネント206又は上記に説明したエンティティ又はこれらの組み合わせは、さらに、クラスタを横断するデータ依存性(例えば、クラスタリングA、B、又はC、又はこれらの組み合せのクラスの間のクラスタを横断するデータ依存性)で、さらにクラスタ(例えば、A、B、又はC、又はこれらの組み合せ)をマージすることができる。この実施例においては、図3に示されるように308で、上記に説明されたそのようなリファインメント動作は、ナチュラル・シーム(natural seam)を生成するように実装されることができる。
【0118】
310で、コンピュータ実装方法300は、図3に図示されるように、クラスタリングA、B、又はC又はこれらの組み合わせを、上記に説明された302で生成された静的呼び出しグラフ(例えばフィルタされた静的呼び出しグラフ)に基づき、かつエンティティ(例えば、人間、クライアント、ユーザ、コンピューティング・デバイス、ソフトウェア・アプリケーション、エージェント、機械学習(ML)モデル、人工知能(AI)モデルなど)からの入力を使用してリファインすること(マイクロサービス生成システム102又はリファインメント・コンポーネント206又はそれらの両方)を含むことができる。例えば、図3に示されるように310で、リファインメント・コンポーネント206又は上記に定義したエンティティ又はこれらの組み合わせは、ランタイム・トレース内に存在しないクラスを追加する(例えば、A、B、又はC、又はこれらの組み合せに対して)ことができ、ここで、そのようなクラスは、静的呼び出し依存性を有する(例えば、静的呼び出しグラフを使用して判断されたクラスタリングA、B、又はC、又はそれらの組み合わせ内の1つ又はそれ以上のクラスを有する静的呼び出し依存性)。この実施形態においては、図3に示されるように310で、リファインメント・コンポーネント206又は上記に定義したエンティティ又はこれらの組み合わせは、さらに、クラスに対して呼び出し依存性を全く有しないクラスタ(例えば、静的呼び出しグラフを使用して判断されたクラスタリングA、B、又はC、又はそれらの組み合わせ内の1つ又はそれ以上のクラス内で全く静的呼び出し依存性がない)を追加(例えば、A、B、又はC、又はこれらの組み合せに対して)することができる。この実施例においては、図3に示されるように310で、上記に説明したそのようなリファインメント動作は、ビジネス・ロジックを生成するために実装することができる。
【0119】
実施例においては、図3に示されるように、上記に説明された302で生成されたデータ依存性グラフ又は静的呼び出しグラフ(例えばフィルタされた静的呼び出しグラフ)又はこれらの組み合わせは、JSONファイルとしてユーザインタフェース(UI)に提供されることができる。実施例においては、図3に示されるように、上記に説明された304で生成されたランタイム・トレースは、JSONファイルとしてフォーマットされることができるランタイム・グラフの形態においてユーザ・インタフェース(UI)に提供されることができる。実施例においては、図3に示されるように、308及び310で生成されたナチュラル・シーム又はビジネス・ロジック又はそれらの両方は、それぞれ上記に説明されたように、JSONファイルとしてユーザ・インタフェース(UI)に提供されることができる。
【0120】
図4は、本明細書に記載される1つ又はそれ以上の実施形態による、ランタイム・トレースに基づくモノリシック・アプリケーションからのマイクロサービスの生成を容易にすることができる実施例の非限定的モデル400の図を示す。それぞれの実施形態において利用されるそれぞれの同様な要素又はプロセス又はそれらの組み合わせのそれぞれの説明は、簡略化の目的のため、省略する。
【0121】
いくつかの実施形態においては、モデル・コンポーネント108又は第2モデル・コンポーネント204又はこれらの組み合わせは、モデル400を含むことができる。例えば、図1で上記に説明したように、モデル・コンポーネント108は、モデル400を含み、これは、トレーニング(例えば、上記に説明されたマイクロサービス生成システム102を介した)することができるニューラル・ネットワークを含み、上記に説明したような1つ又はそれ以上の原因グラフの原因シーケンスを使用して上記に説明したように、クラスタ割り当て又はグラフ埋め込み又はそれらの両方を学習することができる。
【0122】
図4に示されるようにモデル400は、入力レイヤ402、埋め込みレイヤ404、又は出力レイヤ406、又はこれらの組み合わせを含むことができる。図1を参照して上記に説明した実施例のトレーディング・アプリケーションの実施形態においては、入力レイヤ402は、埋め込みレイヤ404に対して、図4に図示されるような入力ベクトルの形態におけるモノリシック・アプリケーションのJava(登録商標)クラス(図4において、“MarketSummarySingleton”として表示される)を提供することができる。埋め込みレイヤ404は、入力Javaクラスの1つ又はそれ以上の埋め込みを生成することができ、ここで、そのような1つ又はそれ以上の埋め込みは、入力Java(登録商標)クラスの1つ又はそれ以上のベクトル表現を含むことができる。入力Java(登録商標)クラスそのようなベクトル表現(複数でもよい)に基づいて、出力レイヤ406は、図4に示されるようなsoftmax分類器を含むことができ、かつモノリシック・アプリケーションの別のクラスが事前定義されたウィンドウ内に有るか否かを予測することができる(例えば、図1を参照して上記に説明された実施例のトレーディング・アプリケーションにおいて表示されたようなウィンドウ・サイズ3)。例えば、出力レイヤ406は、モノリシック・アプリケーションにおけるJava(登録商標)クラスのペアが同一のウィンドウ内に属するか否かを予測することができる(図4において“近隣”として表示される)。例えば、図1を参照して上記に説明され、かつ図4に示されるような実施例のトレーディング・アプリケーションの実施形態においては、“MarketSummarySingleton”として図4に表示された入力Java(登録商標)クラスのベクトル表現を生成する埋め込みレイヤ404に基づいて、出力レイヤ406は、:a)クラス“Log”が近隣に存在する確率(例えば、入力Java(登録商標)クラス“MarketSummarySingleton,”に関連してウィンドウ・サイズ3内にあること);b)クラス“TradeConfig”が近隣に存在する確率(例えば、入力Java(登録商標)クラス“MarketSummarySingleton”に関連してウィンドウ・サイズ3内);c)クラス“QuoteDataBeam”が近隣に存在する確率(例えば、入力Java(登録商標)クラス“MarketSummarySingleton,”に関連してウィンドウ・サイズ3内);又はd)クラス“TradeSLSBBeam”が近隣に存在する確率(例えば、入力Java(登録商標)クラス“MarketSummarySingleton”に関連してウィンドウ・サイズ3内)、又はこれらの組み合わせを予測することができる。
【0123】
マイクロサービス生成システム102は、種々の技術に関連することができる。例えば、マイクロサービス生成システム102は、アプリケーション現代化技術、モノリシック・アプリケーション技術、モノリシック・エンタープライズ・アプリケーション技術、アプリケーション・プログラミング技術、クラウド・コンピューティング技術、機械学習技術、人工知能技術、又は他の技術又はそれらの技術の組み合わせに関連する可能性がある。
【0124】
マイクロサービス生成システム102は、上記に識別された種々の技術に関連するシステム、デバイス、コンポーネント、動作ステップ又は処理ステップ又はこれらの組み合わせに対して技術的改善を提供することができる。例えば、マイクロサービス生成システム102は、モデルをトレーニングして、モノリシック・アプリケーションを使用して実行することができるビジネス機能テストケースのランタイム・トレースに基づいて、モノリシック・アプリケーションにおけるクラスタ割り当て又はクラスのグラフ埋め込み又はそれらの両方を学習することができるか、又はさらにモノリシック・アプリケーションの1つ又はそれ以上のマイクロサービスを識別するためのクラスタ割り当て又はグラフ埋め込みに基づいて、クラスのクラスタを生成するモデルを使用すること、又はこれらの組み合わせを行うことができる。モノリシック・アプリケーションを使用するそのようなビジネス機能テストケースの実行は、そのようなビジネス機能テストケースのそれぞれに対応するランタイム・トレースを得ることができる。マイクロサービス生成システム102は、それぞれのビジネス機能テストケースに対応するそのようなランタイム・トレースを使用して、そのようなそれぞれのビジネス機能テストケースにまた対応する原因シーケンスを含む原因グラフを生成することができる。それぞれのビジネス機能テストケースに対応するそのような原因グラフ又は原因シーケンス又はそれらの組み合わせは、マイクロサービス生成システム102に対してモノリシック・アプリケーション又はモノリシック・アプリケーションにおけるクラスのクラスタ又はそれらの両方の1次の時間的依存性又は高次の時間的依存性又はそれらの両方を提供し、ここで、そのような依存性は、それぞれのビジネス機能テストケースに対応する。これら1次の時間的依存性又は高次の時間的依存性又はそれらの両方は、マイクロサービス生成システム102に対して、例えば、モノリシック・アプリケーションのクラス及び機能呼び出しがどのように相互作用するかについての順序及び頻度といったモノリシック・アプリケーションの種々のビジネス機能を提供する。1次の時間的依存性又は高次の時間的依存性又はそれらの両方は、さらに、マイクロサービス生成システム102がビジネス・コンテキストとそれぞれのトレースとを関連付けて、モノリシック・アプリケーションにおけるクラスの改善した機能グルーピング(例えば機能的クラスタリング)を提供することを可能とする。モノリシック・アプリケーションのクラスのそのような改善された機能グルーピングは、マイクロサービス生成システム102が、より正確にモノリシック・アプリケーションの1つ又はそれ以上のマイクロサービスを識別することを可能とすることができ、それによって、マイクロサービス生成システム102による改善されたモノリシック・アプリケーションのアプリケーション現代化が容易となる。
【0125】
マイクロサービス生成システム102は、マイクロサービス生成システム102に関連する古典的コンピューティング・デバイス又は量子コンピューティング・デバイス又はそれらに両方に関連するプロセッシング・ユニット(例えば、プロセッサ106)に対する技術的な改善を提供することができる。例えば、モノリシック・アプリケーションにおけるクラスの機能グルーピングを改善すること(例えば機能クラスタリング)によって、上記に説明したように、マイクロサービス生成システム102が、モノリシック・アプリケーションの1つ又はそれ以上のマイクロサービスをより正確に識別すること可能とし、マイクロサービス生成システム102が、モノリシック・アプリケーションのアプリケーション現代化を実行するために使用されるプロセッサ(例えば、プロセッサ106)のワークロードを削減することが可能となる(例えば、そのようなプロセッサがアプリケーション現代化プロセスを完了するために実行するプロセッシング・サイクル数を削減することによる)。そのようなプロセッサ(例えばプロセッサ106)のそのようなワークロードの削減は、そのようなプロセッサの処理性能又は処理効率又はそれらの両方を改善することができるか、又はそのようなプロセッサの計算機コストをさらに削減することができるか又はそれらの両方が可能とされる。
【0126】
マイクロサービス生成システム102の実用的な用途は、それがモノリシック・アプリケーションについての改善されたアプリケーション現代化プロセスを実行するように実装することができることである。例えば、マイクロサービス生成システム102の実用的な用途は、それがモノリシック・アプリケーションの所有者によって実装されて(例えばモノリシック・エンタープライズ・アプリケーション)、モノリシック・アプリケーションのマイクロサービスを迅速かつ正確に識別することを可能とし、それによってモノリシック・アプリケーションについてのアプリケーション近代化プロセスを改善することが可能とされる。
【0127】
マイクロサービス生成システム102は、現在では、モノリシック・アプリケーションに関連する一定の設計、又はプログラミング・モデルについて仮定することを含むか、又は人間からの手作業による意図的な入力を行ってモノリシック・アプリケーションについてのアプリケーション現代化プロセスを実行することを含むか又はそれらの両方であるところのものに、相対的に新しいアプリケーション現代化技術により駆動される新しいアプローチを提供することについて認識されるべきである。例えば、人間からの手作業による、マイクロサービス生成システム102は:モノリシック・アプリケーションに関連する一定の設計又はプログラミング・モデルのそのような仮定を定義すること;モノリシック・アプリケーションのマイクロサービス候補を構成する可能性のあるモノリシック・アプリケーションのクラス又はクラスのクラスタ又はそれらの両方を識別すること;又はそのような可能性のあるマイクロサービス候補をリファインして、モノリシック・アプリケーションのスタンドアローン・アプリケーションとして含まれるか又は実装されるか、又はこれらの両方のモノシリック・アプリケーションのマイクロサービスを識別すること又はこれらの組み合わせについての意図的な入力無く、モノリシック・アプリケーションのアプリケーション現代化を実行するために新しく自動化されたアプローチを提供する。
【0128】
マイクロサービス生成システム102は、その性質において高度に技術的であり、抽象的なものではなく、かつ人間による精神的活動のセットとして実行することは不可能な問題を解決するためのハードウェア又はソフトウェアを使用することができる。いくつかの実施形態においては、本明細書において説明された1つ又はそれ以上のプロセスは、1つ又はそれ以上の特殊化されたコンピュータ(例えば、特殊化されたプロセッシング・ユニット、特殊化された古典的コンピュータ、特殊化された量子コンピュータなど)によって実行されて、上記に識別された種々の技術に関連する定義されたタスクを実行する。マイクロサービス生成システム102又はそのコンポーネント又はそれらの両方は、上述した技術的進歩、量子コンピューティング・システム、クラウド・コンピューティング・システム、コンピュータ・アーキテクチャ又は別の技術、又はこれらの組み合わせの利用を通じて発生する新規な問題を解決するために利用することができる。
【0129】
本明細書において説明されたマイクロサービス生成システム102により実行されることができる種々の動作、又はそのコンポーネント、又はそれらの両方は、人間精神の能力をはるかに超えた動作であるが故に、マイクロサービス生成システム102は、種々の電気的コンポーネント、機械的コンポーネント、及び人間の精神内に複製することが不可能、又は人間により実行することが不可能な回路を利用することができることについて認識されるであろう。例えば、マイクロサービス生成システム102により一定の時間的期間にわたって処理されるデータの量、そのようなデータの処理速度、又はデータのタイプは、同一の時間的間隔にわたって人間精神により処理されることが可能な量、速さ、又はデータ・タイプよりも、より多く、より速く、又は相違する。
【0130】
いくつかの実施形態によれば、マイクロサービス生成システム102は、また、本明細書で説明された種々の動作を実行しながら、また、1つ又はそれ以上の他の機能(例えば完全に電力が供給され、完全に実行されるなど)を実行することに向けて、完全に動作可能である。そのような同期的なマルチ動作的実行は、人間精神の能力を超えたものであることが認識されるべきであろう。また、マイクロサービス生成システム102は、人間のユーザといったエンティティにより手作業で取得することが不可能な情報を含むことができる。例えば、マイクロサービス生成システム102、モデル・コンポーネント108、クラスタ・コンポーネント110、コレクション・コンポーネント202、第2モデル・コンポーネント204、リファインメント・コンポーネント206、又はモデル400又はこれらの組み合わせに含まれる情報のタイプ、量、又は多様性又はこれらの組み合わせは、人間のユーザにより手作業で取得される情報よりもより複雑である。
【0131】
図5は、本明細書において説明された1つ又はそれ以上の実施形態によるランタイム・トレースに基づくモノリシック・アプリケーションからマイクロサービスを生成することを容易にすることが可能な実施例の非限定的なコンピュータ実装方法500のフロー図を示す。それぞれの実施形態において利用されるそれぞれの同様な要素又はプロセス又はそれらの組み合わせのそれぞれの説明は、簡略化の目的のため、省略する。
【0132】
502で、コンピュータ実装方法500は、プロセッサ(例えば、プロセッサ106、量子プロセッサなど)に動作的に結合されたシステム(例えば、マイクロサービス生成システム102を介する)によりモデル(例えば、モデル・コンポーネント108、モデル400など)をトレーニングして、モノリシック・アプリケーション(例えば、モノリス・エンタープライズ・アプリケーション)におけるクラスのクラスタ割り当て(例えば、Java(登録商標)クラスのクラスタ割り当て又はグラフ埋め込み又はそれらの両方)を、実行されたテストケース(例えば、モノリシック・アプリケーションを使用して実行されたビジネス機能テストケース)のランタイム・トレース(例えば、図1及び3を参照して上記に説明したランタイム・トレース)に基づいて学習させることを含むことができる。
【0133】
504で、コンピュータ実装方法500は、システム(例えば、マイクロサービス生成システム102又はクラスタ・コンポーネント110又はそれらの両方)によりモデルを利用してモノリシック・アプリケーションの1つ又はそれ以上のマイクロサービスを識別するためのクラスタ割り当てに基づいてクラスのクラスタを生成することができる。
【0134】
図6は、本明細書で説明される1つ又はそれ以上の実施形態によるランタイム・トレースに基づくモノリシック・アプリケーションからのマイクロサービスの生成を容易にすることを可能とする、実施例の非限定的なコンピュータ実装方法600のフロー図を示す。それぞれの実施形態において利用されるそれぞれの同様な要素又はプロセス又はそれらの組み合わせのそれぞれの説明は、簡略化の目的のため、省略する。
【0135】
602で、コンピュータ実装方法600は、プロセッサ(例えば、プロセッサ106、量子プロセッサなど)、に動作的に結合されたシステム(例えば、マイクロサービス生成システム102又はコレクション・コンポーネント202又はこれらの両方)により、モノリシック・アプリケーション(例えば、モノリス・エンタープライズ・アプリケーションといったモノリシック・アプリケーションを使用して実行された、例えば、ビジネス機能テストケース)について実行されたテストケースのランタイム・トレース(例えば、図1及び3を参照して上記に説明されたランタイム・トレース)を収集することを含むことができる。
【0136】
604で、コンピュータ実装方法600は、システム(例えば、マイクロサービス生成システム102を介する)により、ランタイム・トレースに基づいてモデル(モデル・コンポーネント108、モデル400など)をトレーニングして、モノリシック・アプリケーションにおけるクラスのクラスタ割り当て(例えば、Java(登録商標)クラスのクラスタ割り当て又はグラフ埋め込み又はそれらの両方)を学習させることができる。
【0137】
606で、コンピュータ実装方法600は、システム(例えば、マイクロサービス生成システム102又はクラスタ・コンポーネント110又はそれらの両方を介する)によりモデルを利用して、モモノリシック・アプリケーションの1つ又はそれ以上のマイクロサービスを識別するためのクラスタ割り当てに基づいて、クラスのクラスタを生成する。
【0138】
図7は、本明細書で説明される1つ又はそれ以上の実施形態によるランタイム・トレースに基づくモノリシック・アプリケーションからのマイクロサービスの生成を容易にすることを可能とする、実施例の非限定的なコンピュータ実装方法700のフロー図を示す。それぞれの実施形態において利用されるそれぞれの同様な要素又はプロセス又はそれらの組み合わせのそれぞれの説明は、簡略化の目的のため、省略する。
【0139】
702で、コンピュータ実装方法700は、モデル(例えばモデル・コンポーネント108、モデル400など)をトレーニング(例えばマイクロサービス生成システム102)して、モノリシック・アプリケーションを使用して実行されたビジネス機能テストケースのランタイム・トレース(例えば、図1及び図3を参照して上記に説明されたランタイム・トレース)に基づいて、モノリシック・アプリケーション(例えば、モノリス・エンタープライズ・アプリケーション)におけるJava(登録商標)クラスのクラスタ割り当て又はグラフ埋め込み又はそれらの両方を学習させることを含むことができる。
【0140】
704で、コンピュータ実装方法700は、モデルを利用して(例えば、マイクロサービス生成システム102又はクラスタ・コンポーネント110又はそれらの両方を介する)、クラスタ割り当て又はグラフ埋め込み又はそれらの両方に基づいて、Java(登録商標)クラスのクラスタを生成することを含むことができる。
【0141】
706で、コンピュータ実装方法700は、モノリシック・アプリケーションの1つ又はそれ以上のマイクロサービス候補が識別されるか否かを判断することを含むことができる(例えば、マイクロサービス生成システム102、モデル・コンポーネント108又はクラスタ・コンポーネント110、又はそれらの組み合わせを介する)。例えば、図1及び上記に説明した実施例のトレーディング・アプリケーションを参照すると、クラスタ・コンポーネント110は、モデル・コンポーネント108のトレーニングされたバージョンを利用して、原因シーケンスから1つ又はそれ以上のポジティブなサンプル・ペアを生成することができ、ここで、そのような1つ又はそれ以上のポジティブなサンプル・ペアは、モノリシック・アプリケーションの1つ又はそれ以上の可能性のあるマイクロサービス候補を構成することができる。
【0142】
もしも706で、モノリシック・アプリケーションの1つ又はそれ以上の可能性のあるマイクロサービス候補が識別されるのであれば、708で、コンピュータ実装方法700は、モノリシック・アプリケーションのマイクロサービスを識別するためのデータ依存性グラフ又は静的呼び出しグラフ又はそれら両方(例えば、図1、2、又は3又はこれらの組み合わせを参照して上記に説明されたデータ依存性グラフ又は静的呼び出しグラフ又はそれら両方)に基づいて、1つ又はそれ以上の可能性のあるマイクロサービス候補をリファイン(例えば、リファインメント・コンポーネント206を介する)することを含むことができる。
【0143】
706で、もしもモノリシック・アプリケーションの1つ又はそれ以上の可能性のあるマイクロサービス候補が識別されないのであれば、710で、コンピュータ実装方法700は、モデルにより使用されるウィンドウ・サイズ(例えば、モノリシック・アプリケーションの1つ又はそれ以上の可能性のあるマイクロサービス候補を構成することができる1つ又はそれ以上のポジティブなサンプル・ペアを生成するために使用することができる、図1を参照して上記に説明されたウィンドウ・サイズ)を修正(マイクロサービス生成システム102又はモデル・コンポーネント108又はそれらの両方を介する)するか、又はモノリシック・アプリケーションを使用して異なるビジネス機能テストケース(例えば、図1を参照して上記に説明されたもの以外のビジネス機能テストケース)を実行(例えば、マイクロサービス生成システム102又はコレクション・コンポーネント202又はこれらの両方を介する)するか、又はこれらの両方を行うことを含むことができる。例えば、710で、コンピュータ実装方法700は、モデルによって使用されるウィンドウ・サイズを、例えばウィンドウ・サイズ3から例えばウィンドウ・サイズ4へと修正することを含むことができる。
【0144】
712で、コンピュータ実装方法700は、710で実行された異なるビジネス機能テストケースのランタイム・トレース又は修正されたウィンドウ・サイズ、又はこれらの両方に基づいてモデルを再トレーニング(例えば、マイクロサービス生成システム102)して、モノリシック・アプリケーションにおけるJava(登録商標)クラスのクラスタ割り当て又はグラフ埋め込み又はこれらの両方を学習させることを含むことができる。
【0145】
説明の簡略化のため、コンピュータ実装方法論は、動作のシリーズとして図示され、かつ説明される。主題のイノベーションは、示された動作により又は動作の順序により、又はこれらの組み合わせによって限定されることはなく、例えば動作は、種々の順序において、又は同時的に、又はこれらの組み合わせにおいて及び本明細書において提示及び説明されていない他の動作と共に発生することができることについて、理解及び認識されるべきである。さらに、示された動作の全部は、開示される主題にしたがってコンピュータ実装方法論を実装するために必要とされることはない。追加的に、当業者は、コンピュータ実装方法論は、状態図又はイベントを介した相互関連状態のシリーズとして代替的に表現されることがあることについて、理解及び認識するであろう。追加的に、さらに、以下に、かつ本明細書を通して開示されたコンピュータ実装方法論は、コンピュータに対してそのようなコンピュータ実装方法論を送付すること及び転送することを容易にする製造品に格納されることができることについて認識されるべきであろう。本明細書に使用される用語、製造品は、如何なるコンピュータ可読なデバイス又は記録媒介からアクセス可能なコンピュータ・プログラムに及ぶことを意図する。
【0146】
本開示の主題の種々の側面についてのコンテキストを提供するため、以下の議論に加えて、図8は、本開示の主題の種々の側面を実装することが可能な好適な環境の一般的説明を提供することを意図する。図8は、本明細書において説明された1つ又はそれ以上の実施形態を容易とすることができる実施例の非限定的な動作環境のブロック図を示す。それぞれの実施形態において利用されるそれぞれの同様な要素又はプロセス又はそれらの組み合わせのそれぞれの説明は、簡略化の目的のため、省略する。
【0147】
図8を参照すると、本開示の種々の側面を実装するための好適な動作環境800はまた、コンピュータ812を含むことができる。コンピュータ812はまた、プロセッシング・ユニット814、システムメモリ816、及びシステムバス818を含むことができる。システムバス818は、これらに限定されないがシステムメモリ816を含むシステム・コンポーネントをプロセッシング・ユニット814に結合する。プロセシング・ユニット814は、種々の利用可能なプロセッサの如何なるものとすることができる。デュアル・マイクロプロセッサ及び他のマルチプロセッサ・アーキテクチャはまた、プロセッシング・ユニット814として利用することができる。システムバス818は、メモリバス、又はメモリ・コントローラ、周辺バス又は外部バス、又はこれらに限定されないが、インダストリアル・スタンダード・アーキテクチャ(ISA)、マイクロ・チャネル・アーキテクチャ(MCA)、エクステンデットISA(EISA)、インテリジェント・ドライブ・エレクトロニクス(IDE)、VESAローカル・バス(VLB)、ペリフェラル・コンポーネント・インタコネクト(PCI)、カード・バス、ユニバーサル・シリアル・バス(USB)、アドバンスド・グラフィックス・ポート(AGP)、ファイアワイア(IEEE1394)、及びスモール・コンピュータ・システム・インタフェース(SCSI)を含む種々の如何なる利用可能なバス・アークテクチャを含む、バス構造(複数でもよい)のいくつかのタイプの如何なるものとすることができる。
【0148】
システムメモリ816はまた、揮発性メモリ820及び不揮発性メモリ822を含むことができる。スタートアップなどの間にコンピュータ812内における要素の間で情報を転送する基本的なルーチンを含むベーシックインプット/アウトプット・システム(BIOS)は、不揮発性メモリ822内に格納される。コンピュータ812はまた、取り外し可能/取り外し不可能、揮発性/不揮発性のコンピュータ記録媒体を含むことができる。図8は、例えばディスク・ストレージ824を示す。ディスク・ストレージ824はまた、これに限定されないが、磁気ディスクドライブ、フロッピー(登録商標)ディスクドライブ、テープドライブ、Jazドライブ、Zipドライブ、LS-100ドライブ、フラッシュ・メモリ・カード、又はメモリ・スティックを含むことができる。ディスク・ストレージ824はまた、別の又は他の記録媒体と組み合わせにおける記録媒体を含むことができる。ディスク・ストレージ824のシステムバス818への結合を容易にするために、取り外し可能又は取り外し不可能なインタフェース826といったインタフェースが典型的に使用される。図8はまた、ユーザと、好適な動作環境800において説明された基本的なコンピュータ・リソースとの間の中継として動作するソフトウェアを図示する。そのようなソフトウェアはまた、例えばオペレーティング・システム828を含むことができる。オペレーティング・システム828は、ディスク・ストレージ824に格納されることができ、コンピュータ812のリソースを制御すると共に、割り当てるために動作する。
【0149】
システム・アプリケーション830は、例えば、システムメモリ816又はディスク・ストレージ824のいずれかに格納されるプログラム・モジュール832及びプログラム・データ834を通してオペレーティング・システム828によるリソースの管理の利益を受ける。本開示は、種々のオペレーティング・システム又はオペレーティング・システムの組み合わせと共に実装することができることについて認識されるべきである。ユーザは、入力デバイス(複数でもよい)836を通してコンピュータ812へとコマンド又は情報を入力する。入力デバイス836は、これらに限定されないが、マウス、トラックボール、スタイラスといったポインティング・デバイス、タッチパッド、キーボード、マイクロホン、ジョイ・スティック、ゲーム・パッド、サテライト・ディッシュ、スキャナ、TVチューナ・カード、ディジタル・カメラ、ディジタル・ビデオ・カメラ、ウェブ・カメラなどを含む。これら及びその他の入力デバイスは、インタフェース・ポート(複数でもよい)838を介してシステムバス818を通してプロセッシング・ユニット814に接続する。インタフェース・ポート(複数でもよい)838は、例えば、シリアル・ポート、パレレル・ポート、ゲーム・ポート、及びユニバーサル・シリアル・バス(USB)を含む。出力デバイス(複数でもよい)840は、入力デバイス(複数でもよい)836のような同一のタイプのポートのいくつかを使用する。したがって、例えば、USBポートは、コンピュータ812への入力を提供すると共に、コンピュータ812から出力デバイス840への出力情報を提供するために使用することができる。出力アダプタ842は、他の出力デバイス840のうちの、モニタ、スピーカ、及びプリンタのような、特殊アダプタを必要とするいくつかの出力デバイス840が存在することを示すために提供される。出力アダプタ842は、例示の目的により、かつ限定ではなく、出力デバイス840とシステムバス818との間の接続の手段を提供するビデオ及びサウンド・カードを含む。他のデバイス又はデバイスのシステム、又はそれらの組み合わせは、リモート・コンピュータ(複数でもよい)844といった入力及び出力機能の両方を提供することについて指摘されるべきであろう。
【0150】
コンピュータ812は、リモート・コンピュータ(複数でもよい)844といった1つ又はそれ以上のリモート・コンピュータへの論理接続を使用するネットワーク環境において動作することができる。リモート・コンピュータ(複数でもよい)844は、コンピュータ、サーバ、ルータ、ネットワークPC、ワークステーション、マイクロプロセッサ・ベースの機器、ピア・デバイス又は他の共通ネットワーク・ノードなどとすることができると共に、典型的にはまたコンピュータ812について説明された要素の多数又はすべてを含むことができる。簡略化の目的のため、リモート・コンピュータ(複数でもよい)844についてメモリ・ストレージ・デバイス846のみを示す。リモート・コンピュータ(複数でもよい)844は、ローカルにコンピュータ812へとネットワーク・インタフェース848を介して接続され、その後、通信接続850を介して物理的に接続される。ネットワーク・インタフェース848は、ローカルエリア・ネットワーク(LAN)、ワイドエリア・ネットワーク(WAN)、セルラ・ネットワークなどといった有線又はワイヤレス又はこれら両方の通信ネットワークに及ぶ。LAN技術は、ファイバ・ディストリビューテッド・データ・インタフェース(FDDI)、コッパー・ディスリビューテッド・データ・インタフェース(CDDI)、イーサネット(登録商標)、トークン・リングなどを含む。WAN技術は、これらに限定されることなく、ポイント・ツウ・ポイント・リンク、インテグレーテッド・サービス・デジタル・ネットワーク(ISDN)及びそれ上の変種、パケット交換ネットワーク及びデジタル・サブスクライバ・ライン(DSL)を含む。通信接続(複数でもよい)850は、ネットワーク・インタフェース848をシステムバス818に接続するために利用されるハードウェア/ソフトウェアを参照する。通信接続850は、例示的な明確さのためコンピュータ812内に示されているが、それはまた、コンピュータ812の外部とすることができる。ネットワーク・インタフェース848に接続するためのハードウェア/ソフトウェアはまた、例示的な目的のみとして、普通電話グレードのモデム、ケーブル・モデム、及びDSLモデムを含むモデム類、ISDNアダプタ及びイーサネット(登録商標)カードといった内部及び外部技術を含むことができる。
【0151】
ここで図9を参照して、例示的なクラウド・コンピューティング環境950を図示する。図示するように、クラウド・コンピューティング環境950は、1つ又はそれ以上のクラウド・コンピューティング・ノード910を含み、それらと共にクラウド・コンシューマにより使用される例えばパーソナル・デジタル・アシスタント(PDA)又はセルラ電話954A、デスクトップ・コンピュータ954B、ラップトップ・コンピュータ954C、又は自動車コンピュータ・システム954N又はこれらの組合せといったローカル・コンピューティング・デバイスが通信する。図9に示されてはいないが、クラウド・コンピューティング・ノード910は、さらにクラウド・コンシューマにより使用されるローカル・コンピューティング・デバイスと通信することができる量子プラットホーム(例えば、量子コンピュータ、量子ハードウェア、量子ソフトウェアなど)を含むことができる。ノード910は、互いに通信することができる。これらは、上述したプライベート、コミュニティ、パブリック、又はハイブリッド・クラウド、又はそれらの組合せといった、1つ又はそれ以上のネットワーク内で、物理的又は仮想的にグループ化することができる(不図示)。これは、クラウド・コンピューティング環境950が、クラウド・コンシューマがローカルなコンピューティング・デバイス上のリソースを維持する必要を無くするための、インフラストラクチャ、プラットホーム、又はソフトウェア・アズ・ア・サービスを提供することを可能とする。図9に示すコンピューティング・デバイス954A-Nのタイプは、例示を意図するためのみのものであり、コンピューティング・ノード910及びクラウド・コンピューティング環境950は、任意のタイプのネットワーク又はアドレス可能なネットワーク接続(例えばウェブ・ブラウザを使用して)、又はそれらの両方を通じて、いかなるタイプのコンピュータ化デバイスとも通信することができることが理解される。
【0152】
ここで、図10参照すると、クラウド・コンピューティング環境950(図9)により提供される機能的抽象レイヤのセットが示される。予め、図10に示したコンポーネント、レイヤ、及び機能は、例示することのみを意図したものであり、本発明の実施形態は、これらに限定されることは無いことは理解されるべきである。図示したように、後述するレイヤ及び対応する機能が提供される。
【0153】
ハードウェア及びソフトウェア・レイヤ1060は、ハードウェア及びソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例としては、メインフレーム1061;RISC(縮小命令セットコンピュータ)アーキテクチャに基づく複数のサーバ1062;複数のサーバ1063;複数のブレード・サーバ1064;複数のストレージ・デバイス1065;及びネットワーク及びネットワーキング・コンポーネント1066を含むことができる。いくつかの実施形態ではソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア1067及びデータベース・ソフトウェア1068、量子プラットホーム・ルーチング・ソフトウェア(図10には示されていない)、又は量子ソフトウェア(図10には示されていない)、又はこれらの組み合わせを含む。
【0154】
可視化レイヤ1070は、それから後述する仮想エンティティの実施例が提供される抽象レイヤ;仮想サーバ1071;仮想ストレージ1072;仮想プライベート・ネットワークを含む仮想ネットワーク1073;仮想アプリケーション及びオペレーティング・システム1074;及び仮想クライアント1075を提供する。
【0155】
1つの実施例では、マネージメント・レイヤ1080は、下記の機能を提供することができる。リソース提供部1081は、コンピューティング資源及びクラウド・コンピューティング環境内でタスクを遂行するために用いられる他の資源の動的獲得を提供する。計測及び価格設定部1082は、クラウド・コンピューティング環境内で資源が使用されるとコストの追跡を提供すると共に、これらの資源の消費に対する課金又は請求を提供する。1つの実施例では、これら資源としてはアプリケーション・ソフトウェア・ライセンスを含むことができる。セキュリティ部は、クラウド・コンシューマ及びタスクの同定及び認証と共にデータ及び他の資源の保護を提供する。ユーザ・ポータル部1083は、コンシューマに対するクラウド・コンピューティング環境及びシステム・アドミニストレータへのアクセス性を提供する。サービスレベル・マネージメント部1084は、クラウド・コンピューティング資源の割り当て及び管理を提供し、必要なサービス・レベルに適合させる。サービス・レベル・アグリーメント(SLA)プランニング・フルフィルメント部1085は、SLAにしたがって将来的な要求が要求されるクラウド・コンピューティング資源の事前準備を行うと共にその獲得を行う。
【0156】
ワークロード・レイヤ1090は、クラウド・コンピューティング環境を利用するための機能の例示を提供する。このレイヤによって提供されるワークロード及び機能の非限定的な実施例としては、マッピング及びナビゲーション1091;ソフトウェア開発及びライフタイム・マネージメント1092;仮想教室教育伝達1093;データ分析処理1094;トランザクション・プロセッシング1095;及びマイクロサービス生成ソフトウェア1096を含むことができる。
【0157】
本発明は、いかなる可能な技術的に詳細な一体化レベルであっても、システム、方法、又はコンピュータ・プログラム製品、又はこれらの組み合わせとすることができる。コンピュータ・プログラム製品は、プロセッサに対して本発明の特徴を遂行させるためのコンピュータ可読なプログラム命令をそれ上に有する記録媒体(又は複数の媒体)を含むことができる。コンピュータ可読な記録媒体は、命令実行デバイスが使用するための複数の命令を保持し格納することができる有形のデバイスとすることができる。コンピュータ可読な媒体は、例えば、これらに限定されないが、電子的記録デバイス、磁気的記録デバイス、光学的記録デバイス、電子磁気的記録デバイス、半導体記録デバイス又はこれらのいかなる好ましい組み合わせとすることができる。コンピュータ可読な記録媒体の限定的ではない実施例は、次のポータブル・コンピュータ・ディスク、ハードディスク、ランダム・アクセス・メモリ(RAM)、リード・オンリー・メモリ(ROM)、消去可能なプログラマブル・リード・オンリー・メモリ(EPROM又はフラッシュ・メモリ(登録商標))、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク・リード・イオンリー・メモリ(CD-ROM)、デジタル多目的ディスク(DVD)、メモリ・スティック、フロッピー・ディスク(登録商標)、パンチ・カード又は命令を記録した溝内に突出する構造を有する機械的にエンコードされたデバイス、及びこれらの好ましい如何なる組合せを含む。本明細書で使用するように、コンピュータ可読な記録媒体は、ラジオ波又は他の自由に伝搬する電磁波、導波路又は他の通信媒体(例えば、光ファイバ・ケーブルを通過する光パルス)といった電磁波、又はワイヤを通して通信される電気信号といったそれ自体が一時的な信号として解釈されることはない。
【0158】
本明細書において説明されるコンピュータ・プログラムは、コンピュータ可読な記録媒体からそれぞれのコンピューティング/プロセッシング・デバイスにダウンロードでき、又は例えばインターネット、ローカルエリア・ネットワーク、ワイドエリア・ネットワーク又はワイヤレス・ネットワーク及びそれからの組み合わせといったネットワークを介して外部コンピュータ又は外部記録デバイスにダウンロードすることができる。ネットワークは、銅通信ケーブル、光通信ファイバ、ワイヤレス通信、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ及びエッジ・サーバ又はこれらの組み合わせを含むことができる。それぞれのコンピューティング/プロセッシング・デバイスにおけるネットワーク・アダプタ・カード又はネットワーク・インタフェースは、ネットワークからコンピュータ可読なプログラム命令を受領し、このコンピュータ可読なプログラム命令を格納するためにそれぞれのコンピューティング/プロセッシング・デバイス内のコンピュータ可読な記録媒体内に転送する。本発明の操作を遂行するためのコンピュータ可読なプログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、機械語命令、マシン依存命令、マイクロ・コード、ファームウェア命令、状態設定データ、集積回路のための構成データ、又は1つ又はそれ以上の、Smalltalk(登録商標)、C++などのオブジェクト指向プログラミング言語、“C”プログラミング言語又は類似のプログラム言語といった手続き型プログラミング言語を含むプログラミング言語のいかなる組合せにおいて記述されたソースコード又はオブジェクト・コードのいずれかとすることができる。コンピュータ可読なプログラム命令は、全体がユーザ・コンピュータ上で、部分的にユーザ・コンピュータ上でスタンドアローン・ソフトウェア・パッケージとして、部分的にユーザ・コンピュータ上で、かつ部分的にリモート・コンピュータ上で、又は全体がリモート・コンピュータ又はサーバ上で実行することができる。後者のシナリオにおいて、リモート・コンピュータは、ローカルエリア・ネットワーク(LAN)、ワイドエリア・ネットワーク(WAN)を含むいかなるタイプのネットワークを通してユーザ・コンピュータに接続することができ、又は接続は、外部コンピュータ(例えばインターネット・サービス・プロバイダを通じて)へと行うことができる。いくつかの実施形態では、例えばプログラマブル論理回路、フィールド・プログラマブル・ゲートアレイ(FPGA)、又はプログラマブル論理アレイ(PLA)を含む電子回路がコンピュータ可読なプログラム命令を、コンピュータ可読なプログラム命令の状態情報を使用して、本発明の特徴を実行するために電子回路をパーソナライズして実行することができる。
【0159】
本明細書で説明した本発明の側面を、本発明の実施形態にしたがい、フローチャート命令及び方法のブロック図、又はそれらの両方、装置(システム)、及びコンピュータ可読な記録媒体及びコンピュータ・プログラムを参照して説明した。フローチャートの図示及びブロック図又はそれら両方及びフローチャートの図示におけるブロック及びブロック図、又はそれらの両方のいかなる組合せでもコンピュータ可読なプログラム命令により実装することができることを理解されたい。これらのコンピュータ可読なプログラム命令は、汎用目的のコンピュータ、特定目的のコンピュータ、または他のプロセッサ又は機械を生成するための他のプログラマブル・データ・プロセッシング装置に提供することができ、コンピュータのプロセッサ又は他のプログラマブル・データ・プロセッシング装置による実行がフローチャート及びブロック図のブロック又は複数のブロック又はこれらの組み合わせで特定される機能/動作を実装するための手段を生成する。コンピュータ、プログラマブル・データ・プロセッシング装置及び他の装置又はこれらの組み合わせが特定の仕方で機能するように指令するこれらのコンピュータ可読なプログラム命令は、またコンピュータ可読な記録媒体に格納することができ、その内に命令を格納したコンピュータ可読な記録媒体は、フローチャート及びブロック図のブロック又は複数のブロック又はこれらの組み合わせで特定される機能/動作の特徴を実装する命令を含む製造品を構成する。コンピュータ可読なプログラム命令は、またコンピュータ、他のプログラマブル・データ・プロセッシング装置、又は他のデバイス上にロードされ、コンピュータ、他のプログラマブル装置、又は他のデバイス上で操作ステップのシリーズに対してコンピュータ実装プロセスを生じさせることで、コンピュータ、他のプログラマブル装置又は他のデバイス上でフローチャート及びブロック図のブロック又は複数のブロック又はこれらの組み合わせで特定される機能/動作を実装させる。
【0160】
図のフローチャート及びブロック図は、本発明の種々の実施形態にしたがったシステム、方法及びコンピュータ・プログラム製品のアーキテクチャ、機能、及び可能な実装操作を示す。この観点において、フローチャート又はブロック図は、モジュール、セグメント又は命令の部分を表すことかでき、これらは、特定の論理的機能(又は複数の機能)を実装するための1つ又はそれ以上の実行可能な命令を含む。いくつかの代替的な実装においては、ブロックにおいて記述された機能は、図示した以外で実行することができる。例えば、連続して示された2つのブロックは、含まれる機能に応じて、実質的に同時的に、又は複数のブロックは、時として逆の順番で実行することができる。またブロック図及びフローチャートの図示、又はこれらの両方及びブロック図中のブロック及びフローチャートの図示又はこれらの組み合わせは、特定の機能又は動作を実行するか又は特定の目的のハードウェア及びコンピュータ命令を遂行する特定目的のハードウェアに基づいたシステムにより実装することができることを指摘する。
【0161】
本発明の主題がコンピュータ又は複数のコンピュータ又はこれらの組み合わせ上で動作するコンピュータ・プログラム製品のコンピュータ実行可能な命令の一般的なコンテキストにおいて上記に説明してきたが、当業者は、本開示がまた、他のプログラム・モジュールとの組み合わせにおいて実装することができることについて認識するであろう。一般に、プログラム・モジュールは、特定のタスクを実行するか又は特定の抽象データ・タイプを実装するか、又はそれら両方のプログラム・モジュールは、ルーチン、プログラム、コンポーネント、データ構造などを含む。さらに、当業者は、発明的なコンピュータ実装方法がシングル・プロセッサ又はマルチプロセッサ・コンピュータ・システム、ミニコンピューティング・デバイス、コンピュータに加えてメインフレーム・コンピュータ、ハンドヘルド・コンピューティング・デバイス(例えばPDA、電話)、マイクロプロセッサ・ベース又はプログラマブル・コンシューマ、又は工業的電子機器などを含む他のコンピュータ・システム構成と共に実施することができることを認識するであろう。示された側面は、タスクが通信ネットワークを通してリンクされたリモート・プロセッシング・デバイスにより実行される分散コンピューティング環境において実施されることができる。しかしながら、いくつかは、もしも本開示のすべての側面ではないとしてもスタンドアローンのコンピュータ上で実施することができる。分散コンピューティング環境においては、プログラム・モジュールは、ローカル又はリモートのメモリ・ストレージ・デバイスに配置されることができる。例えば、1つ又はそれ以上の実施形態においては、コンピュータ実行可能なコンポーネントは、1つ又はそれ以上の分散メモリ・ユニットを含むか又は構成するメモリから実行されることができる。本明細書で使用される用語“メモリ”及び“メモリ・ユニット”は、互換的である。さらに、本明細書の1つ又はそれ以上の実施形態は、例えば、組み合わせ又は協働的に1つ又はそれ以上の分散メモリ・ユニットからのコードを実行するマルチプル・プロセッサといった分散様式において、コンピュータ実行可能なコンポーネントのコードを実行することができる。本明細書において使用される用語“メモリ”は、単一のロケーションでの単一メモリ又は1つ又はそれ以上のロケーションでの多数のメモリ又はメモリ・ユニットに及ぶことができる。
【0162】
本出願において使用されるように、用語“コンポーネント”、“システム”、“プラットホーム”、“インタフェース”などは、コンピュータに関連するエンティティ又は1つ又はそれ以上の特定の機能で動作する機械に関連するエンティティを参照又は包含するか、又はそれらの両方とすることができる。本明細書で開示されるエンティティは、ハードウェア、ハードウェア及びソフトウェアの組み合わせ、ソフトウェア又は実行中のソフトウェアの何れかとすることができる。例えば、コンポーネントは、これらに限定されることは無いが、プロセッサ上で動作するプロセス、プロセッサ、オブジェクト、実行可能物、実行スレッド、プログラム又はコンピュータ、又はそれらの組み合わせとすることができる。例示の目的として、サーバ上で動作するアプリケーション及びサーバの両方は、コンポーネントとすることができる。1つ又はそれ以上のコンポーネントは、プロセス又は実行スレッド又はそれら両方内に滞在することができ、かつコンポーネントは、1つのコンピュータにローカライズされるか又は2つ又はそれ以上のコンピュータの間に分散されるか、又はそれらの両方とすることができる。別の実施形態においては、それぞれのコンポーネントは、それに格納された種々のデータ構造を有する種々のコンピュータ可読な媒体から実行する。コンポーネントは、1つ又はそれ以上のデータ・パケットを有する信号(例えば、ローカル・システム内の1つのコンポーネントと相互作用する別のコンポーネント、分散システム又はインターネットのような信号を介して他のシステムとネットワークを横断するか又はこれらの両方で)ローカル又はリモート・プロセスを介して通信することができる。別の実施例として、コンポーネントは、電気又は電子回路により動作される機械的部分により特定の機能を有する装置とすることができ、これは、プロセッサによって実行されるソフトウェア又はファームウェアにより動作される。そのような場合において、プロセッサは、装置の内部又は外部とすることができると共に、ソフトウェア又はファームウェア・アプリケーションの少なくとも一部を実行することができる。さらに別の実施例として、コンポーネントは、機械部品を有しない特定の電子コンポーネントを提供する装置とすることができ、ここで、電子コンポーネントは、プロセッサ又は電子コンポーネントの機能の少なくとも部分で与えられるソフトウェア又はファームウェアを実行するための他の手段を含むことができる。側面において、コンポーネントは、例えばクラウド・コンピューティング・システム内での仮想マシンを介して電子コンポーネントをエミュレートすることができる。
【0163】
追加的に、用語“又は”は、排他的“オア”ではなく、包含的“又は”を意味することを意図する。すなわち、他に特定されるか又はコンテキストから明確でない限り、“Xは、A又はBを利用する”ことは、自然な包含的置き換えの如何なるものを意味することを意図する。すなわち、もしもXがAを利用し;XがBを利用し;又はXがA及びBの両方を利用するのであれば、“Xは、A又はBを利用する”ことは前述の例の如何なるものの下で充足される。さらに、主題の明細書及び添付される図面において使用されるところの冠詞“a”及び“an”は、単数形であることが他に特定されるか又はコンテキストから明確でない限り、一般に、“1つ又はそれ以上”を意味すると解釈される。本明細書において使用されるように、用語“実施例”又は“例示的”又はそれらの両方は、実施例、例、又は例示として提供することを意味するために使用される。疑義を排除するために、本明細書で開示される手段は、そのような実施例により限定されない。追加的に、本明細書において“実施例”又は“例示的”又はそれらの両方として説明される如何なる側面又は設計は、他の側面又は設計を超えて好ましいとか、又は利益的であるとして解釈される必要はなく、当業者に知られた等価的な例示的構造及び技術を排除することを意味しない。
【0164】
主題の明細書において使用されるように、用語“プロセッサ”は、これらに限定されることは無く、シングルコア・プロセッサ;ソフトウェアのマルチスレッド実行能力を有するシングル・プロセッサ;ソフトウェアのマルチスレッド実行能力を有するマルチコア・プロセッサ;ハードウェア・マルチスレッド技術を有するマルチコア・プロセッサ;及び分散共有メモリを有する並列プラットホームを含む、実質的に如何なるコンピューティング・プロセッシング・ユニット又はデバイスを参照することができる。追加的にプロセッサは、集積回路、用途特定集積回路(ASIC)、デジタル・シグナル・プロセッサ(DSP)、フィールド・プログラマブル・ゲート・アレイ(FPGA)、プログラマブル・ロジック・コントローラ(PLC)、コンプレックス・プログラマブル・ロジック・デバイス(CPLD)、離散的なゲート又はトランジスタ・ロジック、離散的なハードウェア・コンポーネント又は本明細書において説明した機能を実行するように設計されたそれらの如何なる組み合わせを参照することができる。さらに、プロセッサは、これらに限定されることは無く、空間利用を最適化又はユーザ搭載の性能を向上させるため、分子及び量子ドット・ベースのトランジスタ、スイッチ、及びゲートといったナノ-スケール・アーキテクチャを実施することができる。プロセッサはまた、コンピューティング・プロセッシング・ユニットの組み合わせとして実装することができる。本開示において、“格納”、“記録”、“データ・ストア”、“データ・ストレージ”、“データベース”及びコンポーネントの動作及び機能に関連する、実質的に如何なる他の情報格納コンポーネントといった用語は、“メモリ・コンポーネント”、“メモリ”内に実体化されたエンティティ又はメモリを含むコンポーネントを参照するために使用される。本明細書において説明されるメモリ又はメモリ・コンポーネント又はそれら両方は、揮発性メモリ又は不揮発性メモリの何れかとすることができ、又は揮発性及び不揮発性メモリの両方を含むことができる。例示の目的で、限定ではなく、不揮発性メモリは、リード・オンリー・メモリ(ROM)、電気的にプログラマブルなROM(PROM)、電気的に消去可能なROM(EEPROM)、フラッシュ・メモリ、又は不揮発性のランダム・アクセス・メモリ(RAM)(例えば、強誘電体RAM(FeRAM))を含むことができる。揮発性メモリは、RAMを含むことができ、これは、例えば外部的なキャッシュ・メモリとして動作することができる。例示の目的で限定ではなく、RAMは、シンクロナスRAM(SRAM)、ダイナミックRAM(DRAM)、シンクロナスDRAM(SDRAM)、ダブル・データレートSDRAM(DDR SDRAM)、エンハンスドSDRAM(ESDRAM)、シンクリンクDRAM(SLDRAM)、ダイレクト・ランバスRAM(DRRAM)、ダイレクト・ランバスダイナミックRAM(DRDRAM)、及びランバス・ダイナミックRAM(RDRAM)といった多くの形態において利用可能である。追加的に、本明細書におけるシステムの開示されるメモリ・コンポーネント又はコンピュータ実装方法は、これに限定されることなく、これら及び好適な他の如何なるタイプのメモリを含むことを意図する。
【0165】
上記に説明されたものは、システム及びコンピュータ実装方法の単なる実施例を含む。当然ながら、本開示を記述する目的のためにすべての想定可能なコンポーネント又はコンピュータ実装方法の組み合わせを説明することは可能ではないが、当業者は、多くのさらなる組み合わせ及び本開示の置換が可能であることを認識可能である。さらに、用語“含む”、“有する”、“所有する”、などは詳細な説明、請求項、添付物及び図面において使用される程度で、そのような用語は、 “含んでいる”ことが、請求項における置き換え単語として使用される場合に解釈されるように、用語“含む”に類似する仕方において包含的であることを意図する。
【0166】
種々の実施形態の説明は、例示の目的のために提示されてきたが、開示される実施形態に尽きるとか、限定されることを意図しない。多くの修正及び変更は、説明された実施例の範囲から逸脱する事なく、当業者にとってあきらかであろう。本明細書で使用する用語は、本実施形態の原理、実用的用途、又は市場において見出される技術を超える技術的改善を最良に説明するため、又は本明細書において開示された実施形態を当業者の他の者が理解できるようにするために選択したものである。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10