JP2023057543A - アプリケーションマイクロサービスのための異種グラフ作成のための方法、装置、コンピュータプログラム製品(アプリケーションマイクロサービスのための異種グラフ作成) - Google Patents
アプリケーションマイクロサービスのための異種グラフ作成のための方法、装置、コンピュータプログラム製品(アプリケーションマイクロサービスのための異種グラフ作成) Download PDFInfo
- Publication number
- JP2023057543A JP2023057543A JP2022162229A JP2022162229A JP2023057543A JP 2023057543 A JP2023057543 A JP 2023057543A JP 2022162229 A JP2022162229 A JP 2022162229A JP 2022162229 A JP2022162229 A JP 2022162229A JP 2023057543 A JP2023057543 A JP 2023057543A
- Authority
- JP
- Japan
- Prior art keywords
- application
- microservices
- nodes
- elements
- heterogeneous graph
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/541—Interprogram communication via adapters, e.g. between incompatible applications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
- G06F16/285—Clustering or classification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5017—Task decomposition
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Life Sciences & Earth Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Biomedical Technology (AREA)
- Health & Medical Sciences (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
【課題】アプリケーションマイクロサービスのための異種グラフ作成のための方法、装置及びコンピュータプログラム製品を提供する。【解決手段】方法は、マイクロサービスに分割されるアプリケーションを記述する情報を受信し、マイクロサービスアドバイザアプリケーションを利用して、アプリケーション要素を特定し、アプリケーション要素から異種グラフを生成する。異種グラフ内の各ノードがアプリケーション要素を表し、各エッジが接続された2つのノード間の関係を表す。さらに、ノード間の関係のプリファレンスを特定するユーザ入力に基づいて、共通の属性を共有する異種グラフ内のノードのグループを特定し、アプリケーションをマイクロサービスに分割するために特定されたノードのグループに基づいて推奨事項を提供する。推奨事項は、アプリケーションのためのマイクロサービスの数及びマイクロサービスの各々に含まれるべきアプリケーション要素を含む。【選択図】図1
Description
本開示は、アプリケーションのリモートサービス環境への移行に関する。
リモートコンピューティングまたはサービス環境、例えば、リモートネットワーク環境、クラウドコンピューティング環境などの増加に伴い、より多くのユーザおよびエンティティが、アプリケーションおよび他のサービスのホスティングをリモートサービス環境に移行している。アプリケーション及び他のサービスのホスティングをリモートサービス環境に移行することにより、ユーザ及び他のエンティティは、内部リソース(例えば、インフラストラクチャ、コンピューティングリソース、人的リソース等)の使用を削減し、アプリケーション及び他のサービスに関連する他のコストを削減することが可能となる。さらに、リモートサービス環境は、通常、ユーザまたはエンティティがローカルに有するよりも大幅に多くのリソース、特に、コンピューティングリソースを有するので、ユーザまたはエンティティは、リモートサービス環境上でホストされているアプリケーションをより容易に拡張することが可能である。
アプリケーションマイクロサービスのための異種グラフ作成のための方法、装置、コンピュータプログラム製品を提供する。
要約すると、本発明の一態様は、複数のマイクロサービスに分割されるアプリケーションを記述する情報を受信することと、マイクロサービスアドバイザアプリケーションを利用して、アプリケーションのアプリケーション要素を特定することと、マイクロサービスアドバイザアプリケーションを利用して、アプリケーション要素から、異種グラフを生成することであって、異種グラフ内の各ノードはアプリケーション要素を表し、異種グラフ内の各エッジが、エッジによって接続された2つのノード間の関係を表す、生成することと、マイクロサービスアドバイザアプリケーションを利用し、グラフクラスタリング技術を利用して、異種グラフ内のエッジに基づき、共通の属性を共有する異種グラフ内のノードのグループを特定することと、これはノード間の関係の重要性に関するユーザによる特定であってよく、マイクロサービスアドバイザアプリケーションから、アプリケーションをマイクロサービスに分割するために、特定されたノードのグループに基づいて推奨事項を提供することであって、推奨事項が、アプリケーションのためのマイクロサービスの数およびマイクロサービスの各々に含まれるべきアプリケーション要素を含む、提供することと、を含む、方法を提供する。
本発明の別の態様は、少なくとも1つのプロセッサと、少なくとも1つのプロセッサによって実行可能なコンピュータ可読プログラムコードを実装したコンピュータ可読記憶媒体であって、コンピュータ可読プログラムコードは、複数のマイクロサービスに分割されるアプリケーションを記述する情報を受信するように構成され、コンピュータ可読プログラムコードは、マイクロサービスアドバイザアプリケーションを利用して、アプリケーションのアプリケーション要素を特定するように構成され、コンピュータ可読プログラムコードは、マイクロサービスアドバイザアプリケーションを利用して、アプリケーション要素から、異種グラフを生成するように構成され、異種グラフ内の各ノードがアプリケーション要素を表し、異種グラフ内の各エッジが、エッジによって接続された2つのノード間の関係を表し、コンピュータ可読プログラムコードは、マイクロサービスアドバイザアプリケーションを利用し、グラフクラスタリング技術を利用して、異種グラフ内のエッジに基づき、共通の属性を共有する異種グラフ内のノードのグループを特定するように構成され、これはノード間の関係の重要性に関するユーザによる特定であってよく、コンピュータ可読プログラムコードは、マイクロサービスアドバイザアプリケーションから、アプリケーションをマイクロサービスに分割するために、特定されたノードのグループに基づいて推奨事項を提供するように構成され、推奨事項は、アプリケーションのためのマイクロサービスの数およびマイクロサービスの各々に含まれるべきアプリケーション要素を含むことを、含む、装置を提供する。
本発明の追加の態様は、コンピュータ可読プログラムコードを実装するコンピュータ可読記憶媒体であって、コンピュータ可読プログラムコードは、プロセッサによって実行可能であり、コンピュータ可読プログラムコードは、複数のマイクロサービスに分割されるアプリケーションを記述する情報を受信するように構成され、コンピュータ可読プログラムコードは、マイクロサービスアドバイザアプリケーションを利用して、アプリケーションのアプリケーション要素を特定するように構成され、コンピュータ可読プログラムコードは、マイクロサービスアドバイザアプリケーションを利用して、アプリケーション要素から、異種グラフを生成するように構成され、異種グラフ内の各ノードがアプリケーション要素を表し、異種グラフ内の各エッジが、エッジによって接続された2つのノード間の関係を表し、コンピュータ可読プログラムコードは、マイクロサービスアドバイザアプリケーションを利用し、グラフクラスタリング技術を利用して、異種グラフ内のエッジに基づき、共通の属性を共有する異種グラフ内のノードのグループを特定するように構成され、ノード間の関係の重要性に関するユーザによる特定であってよく、コンピュータ可読プログラムコードは、マイクロサービスアドバイザアプリケーションから、アプリケーションをマイクロサービスに分割するために、特定されたノードのグループに基づいて推奨事項を提供するように構成され、推奨事項は、アプリケーションのためのマイクロサービスの数およびマイクロサービスの各々に含まれるべきアプリケーション要素を含むことを、含むコンピュータプログラム製品を提供する。
本発明の例示的な実施形態のより良い理解のために、その他のさらなる特徴および利点とともに、添付の図面とともに取られる以下の説明を参照し、本発明の請求される実施形態の範囲は、添付の請求項において指摘されるであろう。
本明細書の図に一般的に説明され図示されたような本発明の実施形態の構成要素は、説明された例示的な実施形態に加えて、多種多様な異なる構成で配置および設計され得ることは、容易に理解されるであろう。したがって、図に表されるような本発明の実施形態のより詳細な以下の説明は、請求されるような本発明の実施形態の範囲を制限することを意図するものではなく、単に本発明の例示的な実施形態を代表するものである。
本明細書を通じて「一実施形態」または「実施形態」(または同様のもの)への言及は、実施形態に関連して説明される特定の特徴、構造、または特性が、本発明の少なくとも1つの実施形態に含まれることを意味する。したがって、本明細書中の様々な場所における「一実施形態において」または「実施形態において」等の語句の出現は、必ずしも全てが同じ実施形態を指しているわけではない。
さらに、記載された特徴、構造、または特性は、少なくとも1つの実施形態において任意の適切な方法で組み合わされてもよい。以下の説明では、本発明の実施形態の完全な理解を与えるために、多数の具体的な詳細が提供される。しかしながら、関連する技術分野の当業者は、本発明の実施形態は、その特定の詳細の少なくとも1つがなくても実施することができ、または他の方法、構成要素、材料等とともに実施することができることを十分に認識することができる。他の例では、周知の構造、材料、または操作は、本発明の態様を不明瞭にするのを避けるために、詳細に示されないか、または説明されない。
本発明の例示された実施形態は、図を参照することによって最もよく理解されるであろう。以下の説明は、例示としてのみ意図され、本明細書で請求される本発明の特定の選択された例示的な実施形態を単に例示するものである。図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、装置、方法、およびコンピュータプログラム製品の可能な実装のアーキテクチャ、機能性、および動作を示すことに留意されたい。この点に関して、フローチャートまたはブロック図の各ブロックは、特定の論理機能を実施するための少なくとも1つの実行可能な命令を構成する、コードのモジュール、セグメント、または部分を表すことができる。
また、いくつかの代替的な実施態様において、ブロック内に示した機能は、各図に示す順序とは異なる順序で実行してもよい。例えば、連続して示される2つのブロックは、実際には、略同時に実行してもよいし、場合により逆順で実行してもよい。また、ブロック図もしくはフローチャートまたはその両方における各ブロック、および、ブロック図もしくはフローチャートまたはその両方における複数のブロックの組み合わせは、特定の機能または動作を行う専用ハードウェアベースのシステム、または専用ハードウェアとコンピュータ命令との組み合わせによって実行可能である。
以下では、図1~図4について具体的に言及する。そこに広く例示されている処理、配置、および製品は、本質的に任意の適切なコンピュータシステムまたはコンピュータシステムのセット上で、またはそれらに従って実施されることができ、それは、例示的かつ非制限的な例として、図4において12’で示されるようなシステムまたはサーバを含み得ることを理解されたい。例示的な実施形態に従って、図1~図3に関して議論された処理ステップ、構成要素、および出力のすべてではないにしても、サーバコンピュータ、クライアントコンピュータ、分散ネットワーク内のノードコンピュータ、またはそれらの任意の組み合わせのいずれであっても、図4において16’および28’でそれぞれ示されているような処理ユニットまたはユニットおよびシステムメモリの方法で実行または利用することができる。
アプリケーションをリモートサービス環境に移動してホストする場合の1つの問題は、アプリケーション全体をリモートサービス環境に移動することが不可能ではないにしても、困難であることである。具体的には、マイクロサービスと呼ばれるアプリケーションの小さな部分をリモートサービス環境に移動する方が簡単であり、それによって、異なる部分をリモートサービス環境の異なる部分でホストすることができる。これは、リモートサービス環境のリソースを最適に使用するために有益であり得る。さらに、リモートサービス環境は、アプリケーションのより小さな部分を実行するために、より良く装備されている。したがって、単一のアプリケーションは、リモートサービス環境に移動してリモートサービス環境によって効果的にホストされるために、より小さなモジュール、部分、またはマイクロサービスに分解または分割される必要がある。
アプリケーションを複数のマイクロサービスに分割する別の利点は、たとえホストされなくても、また、リモートサービス環境に移行しない場合でも、大きな単一のアプリケーションは、複数の小さなマイクロサービスよりも管理が難しく、拡張も困難であることである。さらに、単一のアプリケーションを使用する典型的な機能で問題が発生する可能性がある。例えば、アプリケーションの一部のみを更新する必要がある場合、アプリケーションがマイクロサービスに分割されている場合は単一または少数のマイクロサービスを更新するだけであるのに対し、アプリケーションが単一の大きなアプリケーションである時は、アプリケーション全体を更新する必要がある。
アプリケーションをマイクロサービスに分割する際に難しいのは、アプリケーションを分割するための様々な技術があることである。例えば、あるユーザは、最も使用されているサービスに基づいてアプリケーションを分割することを選択するかもしれないし、別のユーザは、サービスによるリソースの使用に基づいて同じアプリケーションを分割することを選択するかもしれない。アプリケーションを分割する別の技術は、アプリケーションの一部の機能に基づく。アプリケーションを分割する技術が異なると、技術間で対照的なパーティションができたり、重複するパーティションができたりする。このように、アプリケーションを分割する方法の選択は、ユーザに大きく依存し、選択した技術が、結果的に、アプリケーションをリモートサービスアプリケーションに移行するための最適な技術とならない場合がある。
したがって、実施形態は、アプリケーション要素の異種グラフを生成し、次に異種グラフでアプリケーション要素のグループまたはコミュニティを特定するマイクロサービスアドバイザアプリケーションを利用して、アプリケーションをマイクロサービスに分割するための推奨事項を提供するシステムおよび方法を提供する。記載されたシステム及び方法は、モノリスアプリケーションと呼ばれる、より大きなアプリケーションからチャンク又はマイクロサービスを特定し、いくつのマイクロサービスを作成すべきか、及びどの機能又はアプリケーション要素が各マイクロサービス分割に含まれるべきかを特定することが可能である。さらに、記載されたシステムおよび方法は、特定のマイクロサービス分割の推奨事項に対する正当化を提供する。
本システムでは、マイクロサービスに分割されるアプリケーションが記述されている情報を利用して、アプリケーションの分割の推奨事項を作成することができるマイクロサービスアドバイザアプリケーションを利用している。マイクロサービスアドバイザアプリケーションは、ターゲットアプリケーションのアプリケーション要素を特定する。アプリケーション要素には、ファイル、オブジェクト、テーブル、保持オブジェクト、クラス、アプリケーション、及びアプリケーションを構成する又はアプリケーション内で使用される他の要素又はアーティファクトが含まれ得る。アプリケーション要素から、マイクロサービスアドバイザアプリケーションは、ノードがアプリケーション要素を表し、エッジがエッジによって接続されたノード間の関係を表す、異種グラフを生成する。グラフの生成には、アプリケーション要素間の直接的および間接的な関連を特定することが含まれる。グラフは、プログラムからだけでなくても、アプリケーション要素やアプリケーション要素間の関係を特定することができるため、異種グラフとなる。例えばシステムは、プログラムに加え、オブジェクト、テーブル、トランザクションから要素や関係を特定することができる。
グラフで特定されたエッジを使用して、マイクロサービスアドバイザアプリケーションは、共通の属性を共有するノードのグループを特定することができる。共通の属性は、共通のプリファレンス、共通のドメイン、共通の技術などであってもよい。グループを識別する際に、アドバイザアプリケーションは、グラフクラスタリング技術を使用してもよい。さらに、グループを特定する際に、システムは、グループ化されるべきアプリケーション要素に関するユーザの制約またはプリファレンスを考慮してもよい。例えば、ユーザは、特定のアプリケーション要素が一緒にグループ化されるべきであると特定することができる。したがって、アドバイザアプリケーションは、クラスタリング時にこれらの要素を一緒にグループ化することを確実にする。コミュニティと呼ばれるノードのグループが特定されると、システムは、アプリケーションをマイクロサービスに分割するために、推奨事項をユーザに提供する。推奨事項は、マイクロサービスを特定するだけでなく、マイクロサービスの数と、各マイクロサービスに含まれるべきアプリケーション要素も特定する。
このようなシステムは、アプリケーションをマイクロサービスに分割するための現在のシステムに対する技術的な改良を提供する。アプリケーションをどのように分割すべきかを決定するためにユーザに依存する代わりに、記載されたシステム及び方法は、アプリケーションがマイクロサービスにどのように分割されるべきかを自動的に特定し、ユーザに対して同じ推奨事項を作成することができる。このような自動的な特定と推奨事項の生成は、現在の技術では見られない。分割を決定する際に、システムは、アプリケーション要素間の直接的および間接的な関連、アプリケーション要素間の親和性、プログラムを超えた異種機能、プログラム間の依存関係を特定できる異種グラフを生成して利用し、さらに、アプリケーション要素間の関係に関連する重要度や他の情報に関するユーザ提供の情報を考慮することが可能である。このような技術は、現在のアプリケーション分割技術では利用されていない。したがって、記載されたシステムは、アプリケーションがどのように分割されるべきかを手動で決定するユーザに依存する従来のシステムおよび方法に見られるものよりも、アプリケーション分割のためのより効率的かつ一貫した技術を提供する。
図1は、アプリケーション要素の異種グラフを生成し、次に異種グラフでアプリケーション要素のグループ又はコミュニティを特定するマイクロサービスアドバイザアプリケーションを利用して、アプリケーションをマイクロサービスに分割するための推奨事項を提供する方法を示す。101において、システムは、複数のマイクロサービスに分割されるアプリケーションを記述する情報を受信する。アプリケーションは、モノリスアプリケーションであってもよく、これは、ユーザインタフェース及びデータアクセスコードが単一のプラットフォームからの単一のプログラムに結合された、単一階層のソフトウェアアプリケーションであることを意味する。言い換えれば、アプリケーションは独立して実行することができ、意図された機能を実行するために他のサービス又はマイクロサービスにアクセスする必要がない。アプリケーションは、ユーザが、異なるマイクロサービスに分割したいアプリケーションである。例えば、ユーザは、リモートサービス環境上でアプリケーションをホストした方が良い場合があり、それによって、アプリケーションをより小さなチャンク又はマイクロサービスに分割する必要がある。別の例として、ユーザは、スケール、管理などを容易にするために、アプリケーションを単に分割した方が良い場合がある。言い換えれば、ユーザは、アプリケーションをモノリスアプリケーションからマイクロサービスアプリケーションに変換したいのである。
102において、マイクロサービスアドバイザアプリケーションは、アプリケーションのアプリケーション要素を特定する。マイクロサービスアドバイザアプリケーションは、アプリケーション情報を取り込み、アプリケーション分割推奨事項を生成するように特別にプログラムされたアプリケーションである。マイクロサービスアドバイザアプリケーションは、ユーザがアプリケーションに入力を提供することを可能にするグラフィカルユーザインタフェースを含んでもよい。マイクロサービスアプリケーションは、情報を取り込み、解析を行い、異種グラフを生成し、ユーザに出力を提供するために、アプリケーションが他のプログラム、データベース、データ記憶場所、アプリケーション等とインタフェースすることを可能にするインタフェース又は特別なプログラミングを含んでもよい。
アプリケーション要素は、クラス、オブジェクト、リソース、ファイル、保持オブジェクト、テーブル、プログラム、トランザクション、及びアプリケーションの一部である、アプリケーションによってアクセスされる、又は他の方法でアプリケーションに接続される他の任意の要素を含んでもよい。アプリケーション要素を特定するために、アドバイザアプリケーションは、アプリケーションを特定し、アプリケーションがどのように機能するか、例えば、アプリケーションの異なる部分が他の部分とどのように相互作用するか、アプリケーションがどのように実行されるかなどを示す、アプリケーションに関連する情報を受信してもよい。例えば、情報は、アプリケーションのソースファイル、アプリケーションに対応するコード、バイナリソースファイルなどを含む入力アーティファクトであってもよい。受信した情報から、システムは、受信した情報を解析し、アプリケーションのいくつかの追加情報を推論するために解析を実行してもよい。また、解析は、受信した情報を最初に解析することなく実行されてもよい。1つまたは複数の解析が実行されてもよく、ランタイム解析、データ解析、静的コード解析、依存関係解析、ログ解析、プログラム解析などを含んでもよい。
実行されるいかなる解析も、受信した情報およびアプリケーション、したがって、アプリケーションの要素を理解しようとするシステムを支援する。例えば、システムは、ソースコードを解析し、アクセスポイント、特定の機能を実行するコード部分、コード内のクラスの数、実行される操作、アプリケーションが使用するリソース(例えば、テーブル、ファイルなど)、コード依存性などを特定することができる。別の例として、システムは、ランタイムログを解析して、呼び出されるアプリケーションサービスの頻度、アプリケーションサービスのコールグラフなどを特定することができる。システムは、アプリケーションに関する他の情報、例えば、アプリケーションをプログラムするために使用されたプログラミング言語、ランタイム、リソースの使用及び割り当て等を特定又は推論することもできる。受信した情報及び追加情報は、アプリケーションが異なるマイクロサービスに分割され得る方法を特定するために、アプリケーションに関する情報を特定するために使用されることができる。
単一のアプリケーションは、それぞれが異なる機能を実行する多くの異なるモジュールまたは部分を含むことができる。例として、電子商取引アプリケーションは、顧客サービス部分、製品在庫部分、取引部分などを含むことができる。これらの部分は、それぞれ独自のアプリケーション要素を含むことができる。さらに、ある部分のアプリケーション要素は、別の部分のアプリケーション要素にアクセスし、通信し、または呼び出すことができる。例えば、ある部分は、別の部分に含まれるテーブルまたは保持オブジェクトにアクセスすることができる。保持オブジェクトは、実世界のオブジェクトを表すコードである。電子商取引の例では、実世界のオブジェクトは特定の顧客であり、保持オブジェクトはその特定の顧客を表すプログラムコードである。
103で、マイクロサービスアドバイザアプリケーションは、ノードとエッジを含む異種グラフを生成する。グラフを有するノードは、アプリケーション要素を表すか、またはアプリケーション要素に対応する。グラフ内のエッジは、エッジによって接続されたアプリケーション要素間の関係を表す。異種グラフには、アプリケーション自体のすべてのアプリケーション要素が含まれ、アプリケーションの外部にありながらアプリケーションからアクセスされ、情報を提供し、またはアプリケーションと通信し、またはアプリケーション間を呼び出す要素も含まれる。これらはすべて、異種グラフ内のノードで表される。
異種グラフの生成は、アプリケーション要素間の関係を特定することができるニューラルネットワークを利用することを含んでもよい。ニューラルネットワークが異種グラフの生成に利用されるにつれて、ニューラルネットワークは、異なるアプリケーション要素およびアプリケーション要素間の関係を構成するものについてより多く学習する。したがって、ニューラルネットワークによって、マイクロサービスアドバイザアプリケーションは、何がアプリケーション要素とみなされるか、および何がアプリケーション要素間の関係および関係のタイプを構成するかに関して、時間の経過とともにより改良され、より正確になることができる。
アプリケーションの解析から、もしくはニューラルネットワークまたはその両方を使用して、マイクロサービスアドバイザアプリケーションは、アプリケーション要素間の関係又は関連を特定することができる。関係または関連は、アプリケーション要素のいずれかが互いに通信するか、または呼び出すときに特定される。これらの通信は、アプリケーション部分を越えて、アプリケーションからアプリケーション外の要素へ、または特定のアプリケーション部分内であってもよい。マイクロサービスアドバイザアプリケーションが、プログラム間だけでなく、多くの異なるアプリケーション要素間の関係または関連を特定する能力によって、アドバイザアプリケーションは異種グラフを生成することができる。
さらに、関係または関連は、直接的な関係/関連であっても、間接的な関係/関連であってもよい。直接的な関係/関連を有するアプリケーション要素は、例えば、プログラムアプリケーション要素がテーブルアプリケーション要素を呼び出す場合、互いに直接通信するアプリケーション要素として特定される。このように、直接的な関連を特定することは、互いに通信を行うアプリケーション要素を特定することを含む。間接的な関係/関連を有するアプリケーション要素は、共通のアプリケーション要素と通信するが、必ずしも相互に通信しないアプリケーションとして特定される。例えば、2つのアプリケーション要素が両方とも同じ保持オブジェクトアプリケーション要素と通信している場合、間接的な関係を持つことになる。言い換えれば、単一のアプリケーション要素に複数の他のアプリケーション要素がアクセスしている場合、間接的な関連性が特定される場合がある。単一のアプリケーション要素にアクセスしているそれらのアプリケーション要素は、間接的な関連を有することになる。なお、同一のアプリケーション要素は、互いに直接的な関係と間接的な関係の両方を有していてもよい。例えば、アプリケーション要素は、互いに直接的に通信してもよく、また、両者は共通の他のアプリケーション要素と通信してもよい。
図2Aは、グラフ形式200Aにおけるアプリケーション要素間の直接的な関係を示す図である。アプリケーション要素201は、アプリケーション要素202と直接的に通信する。これらのアプリケーション要素201及び202は、いずれもグラフ200A内のノードによって表される。これらのアプリケーション要素201及び202は互いに通信するので、エッジ203が2つのアプリケーション要素201及び202を接続し、アプリケーション要素201及び202の間の直接的な関連を示している。
図2Bは、グラフ形式200Bにおけるアプリケーション要素間の間接的な関係を示す図である。アプリケーション要素204は、ノードによって表される。さらに、アプリケーション要素207は、ノードによって表される。これらのアプリケーション要素204、207は、いずれもノードによって表されるアプリケーション要素205と通信を行う。これらのアプリケーション要素204および207のアプリケーション要素205への通信は、エッジ206によって表される。アプリケーション要素204および207の両方が共通のアプリケーション要素205と通信するため、アプリケーション要素204および207は、互いに間接的な関係を有するものとして特定される。
104において、マイクロサービスアドバイザアプリケーションは、異種グラフ内でノードのグループが特定されることができるか否かを決定する。ノードのグループは、ノードのコミュニティまたはクラスタと呼ばれることがある。グループ化を実行するために、アドバイザアプリケーションは、例えば、教師なしクラスタリングアルゴリズムなどのグラフクラスタリング技術を使用してもよい。一般に、教師なしクラスタリングアルゴリズムは、類似のノードを単一のクラスタに一緒にグループ化するように動作する。したがって、異種グラフ内のノードのグループを特定するために、マイクロサービスアドバイザアプリケーションは、例えば、共通のプリファレンス、共通のドメイン、共通の技術などの共通の属性を共有するノードを特定する。共通の属性は、異なるアプリケーションアーティファクトから特定されてもよい。例えば、共通の属性は、グラフを生成する際に特定された直接的もしくは間接的な関連またはその両方に基づいて特定されてもよい。したがって、ノードのグループの特定は、グラフ内のエッジに基づいて特定されるアプリケーション要素の直接的もしくは間接的な関連またはその両方を考慮して実行されてもよい。
属性は、他の要素を用いて決定されてもよい。例えば、アドバイザアプリケーションは、アプリケーション要素間のクラス親和性(CA)を特定してもよい。親和性は、アプリケーション機能内のクラスが、他のアプリケーション機能内の他のクラスと何らかの接続または関係を有するかどうかを、たとえそれらが互いに直接通信しないかもしれないとしても、特定する。クラスの親和性は、属性を特定する際に使用することができる。他の要素としては、クラス間使用(ICU)、パスクラス共起(PCC)、トランザクション(TR)などが含まれる。これらの要素は、アプリケーション要素間の何らかのつながりを示し、また、アプリケーション要素間の関係の強さを特定し、属性の特定に使用することができる。
クラスタリングを行う際、アドバイザアプリケーションは、ユーザ提供の制約または要件を考慮することができる。例えば、ユーザは、特定のリソース使用要件、ランタイム要件、最大クラスまたはオブジェクト要件、最大モジュールサイズなどを示すことができる。別の例として、ユーザは、グループ化されるべきアプリケーション要素または決してグループ化されるべきではないアプリケーション要素を指示することができる。最後の例として、ユーザは、特定のインタフェースを実装するアプリケーション要素の特定のセットは分割することができるが、テーブルの更新を行うプログラムは決して分割すべきではないと特定することができる。
また、ユーザは、コミュニティを特定する際に、アプリケーション要素間の特定の関係の重要性を特定することができる。例えば、ユーザは、特定のノードまたはノード間の関係を単一のクラスタにまとめておくことが重要であるか、あるいは、別のクラスタにまとめておくことが重要であることを特定することができる。また、ユーザは、重み付けされた重要度を特定することもできる。例えば、ユーザは、グラフ内の1つの関係がグラフ内の別の関係よりも重要であること、又は重要でないことを特定してもよい。したがって、マイクロサービスアドバイザアプリケーションは、注目メカニズムを利用して、グラフニューラルネットワーク内の関係の重要度を捉え、特定された重要度に少なくとも部分的に基づいて、グラフ内のノードをクラスタ化することができる。提供された要件または制約を使用して、システムは、所望の要件または制約を満たすクラスタにノードをクラスタ化することが可能である。このように、アドバイザアプリケーションは、クラスタリングを実行する際に、要素、ユーザ提供の入力などを利用することができる。また、クラスタリングは、以前のクラスタリングから継続的に学習する機械学習モデルまたはニューラルネットワークを使用して実行されてもよい。
104において、クラスタが特定できない場合、アドバイザアプリケーションは105において、何も動作を起こさない場合がある。また、アドバイザアプリケーションは、クラスタが特定できないことをユーザに通知してもよい。一方、104でクラスタが特定できる場合、アドバイザアプリケーションは、106において、アプリケーションをマイクロサービスに分割するための推奨事項を提供してもよい。推奨事項を提供する際に、システムは、ユーザがクラスタに対して任意の修正を行うことを可能にする第1パス推奨事項をユーザに提供してもよい。このように、ユーザは、コミュニティまたはクラスタを検証し、あらゆる外れ値を特定する機会を与えられる。この入力は、クラスタに組み込まれ、クラスタは、アドバイザアプリケーションによって改良されることができる。最終的なマイクロサービスクラスタは、生成され、ユーザに提供される推奨事項の中で使用または提供することができる。
推奨事項は、アプリケーションがいくつのマイクロサービスに分割されるべきかを特定することができる。言い換えれば、推奨事項は、アプリケーションのためのマイクロサービスの数を特定する。さらに、推奨事項は、推奨事項内のマイクロサービスの各々に含まれるべきアプリケーション要素を特定する。推奨事項は、クラスタリングおよびクラスタリング内で使用される要素に基づく。したがって、推奨事項は、ユーザが提供した情報、制約、もしくは要件またはこれらの組み合わせに基づく。アドバイザアプリケーションは、推奨事項の正当化を提供することもある。正当化には、どの要素がマイクロサービスクラスタリング推奨に使用されたか、またはより高い影響力を有していたかを特定することが含まれる場合がある。正当化により、ユーザは、クラスタリングアルゴリズムまたはクラスタリングに使用される要素になされるべき変更を容易に特定することができる。
図3は、マイクロサービスアドバイザアプリケーションの全体システムを示す図である。アドバイザアプリケーションは、マイクロサービスに分割されるアプリケーションを記述する情報を取得する。情報は、データリポジトリ301A、アプリケーションに対応するソースコード301B等から取得してもよい。アドバイザアプリケーションは、例えば、静的コード解析、ランタイムデータ解析、データ解析、依存関係解析、ログ解析、プログラム解析などの解析302を行う。解析から、アドバイザアプリケーションは、アプリケーション要素を表すノードと、アプリケーション要素間の関係を表すエッジを有する異種グラフを生成する。グラフが生成されると、アドバイザアプリケーションは、例えば、ユーザケース、クラス間使用、パスクラス共起、トランザクション、クラス親和性などの異なる要素303に基づいて、ノードのグループをコミュニティにクラスタリングする。その結果は、異種グラフネットワーク304に基づく、コミュニティと呼ばれるノードのグループである。これらのコミュニティは、検証のために、また、ユーザが外れ値を特定するために、ユーザ306に送信されることがある。任意のユーザ入力が組み込まれ、最終化されたマイクロサービス305は、アプリケーションをマイクロサービスに分割するための推奨事項として、ユーザ306に出力される。
図4に示すように、コンピューティングノード10’のコンピュータシステム/サーバ12’は、汎用的なコンピューティング装置の形態で示されている。コンピュータシステム/サーバ12’の構成要素は、少なくとも1つのプロセッサまたは処理ユニット16’、システムメモリ28’、およびシステムメモリ28’を含む様々なシステム構成要素をプロセッサ16’に結合するバス18’を含むことができるが、これらに限定はされない。バス18’は、メモリバスまたはメモリコントローラ、周辺バス、加速グラフィックスポート、および様々なバスアーキテクチャのいずれかを使用するプロセッサまたはローカルバスを含む、いくつかのタイプのバス構造のいずれかの少なくとも1つを表す。例として、限定するものではないが、そのようなアーキテクチャには、業界標準アーキテクチャ(ISA)バス、マイクロチャネルアーキテクチャ(MCA)バス、拡張ISA(EISA)バス、ビデオ電子標準協会(VESA)ローカルバス、および周辺コンポーネント相互接続(PCI)バスが含まれる。
コンピュータシステム/サーバ12’は、典型的には、様々なコンピュータシステム可読媒体を含む。そのような媒体は、コンピュータシステム/サーバ12’によってアクセス可能な任意の利用可能な媒体であってよく、揮発性媒体と不揮発性媒体、取り外し可能と取り外し不可能な媒体の双方を含む。
システムメモリ28’は、ランダムアクセスメモリ(RAM)30’もしくはキャッシュメモリ32’またはその両方などの揮発性メモリの形態のコンピュータシステム可読媒体を含むことができる。コンピュータシステム/サーバ12’は、他の取り外し可能/取り外し不可能、揮発性/不揮発性のコンピュータシステム記憶媒体をさらに含むことができる。例としてのみ、ストレージシステム34’は、取り外し不可能、不揮発性の磁気媒体(図示せず、典型的には「ハードドライブ」と呼ばれる)からの読み取りおよび不揮発性の磁気媒体への書き込みのために提供されることができる。図示しないが、取り外し可能、不揮発性の磁気ディスク(例えば、「フロッピーディスク」)からの読み取りおよび書き込みのための磁気ディスクドライブ、およびCD-ROM、DVD-ROMまたは他の光学媒体などの取り外し可能、不揮発性の光ディスクからの読み取りや書き込みのための光ディスクドライブが提供されてもよい。そのような場合、それぞれは、少なくとも1つのデータ媒体インタフェースによってバス18’に接続することができる。以下でさらに描写および説明するように、メモリ28’は、本発明の実施形態の機能を実行するように構成されたプログラムモジュールのセット(例えば、少なくとも1つ)を有する少なくとも1つのプログラム製品を含むことができる。
プログラムモジュール42’のセット(少なくとも1つ)を有するプログラム/ユーティリティ40’は、メモリ28’(例であって限定ではない)に、オペレーティングシステム、少なくとも1つのアプリケーションプログラム、他のプログラムモジュール、及びプログラムデータと同様に格納されてもよい。オペレーティングシステム、少なくとも1つのアプリケーションプログラム、他のプログラムモジュール、およびプログラムデータの各々、またはそれらの何らかの組み合わせは、ネットワーキング環境の実装を含んでもよい。プログラムモジュール42’は、一般に、本明細書に記載される本発明の実施形態の機能もしくは方法論またはその両方を実施する。
コンピュータシステム/サーバ12’は、キーボード、ポインティングデバイス、ディスプレイ24’などの少なくとも1つの外部装置14’、ユーザがコンピュータシステム/サーバ12’と対話できるようにする少なくとも1つの装置、もしくはコンピュータシステム/サーバ12’が少なくとも1つの他のコンピュータ装置と通信できるようにする任意の装置(例えば、ネットワークカード、モデムなど)またはこれらの組み合わせと通信できるようにもする。そのような通信は、I/Oインタフェース22’を介して発生することができる。また、コンピュータシステム/サーバ12’は、ネットワークアダプタ20’を介して、ローカルエリアネットワーク(LAN)、一般的なワイドエリアネットワーク(WAN)、もしくは公衆ネットワーク(例えば、インターネット)またはこれらの組み合わせなどの少なくとも1つのネットワークと通信することが可能である。描かれているように、ネットワークアダプタ20’は、バス18’を介してコンピュータシステム/サーバ12’の他の構成要素と通信する。図示されていないが、他のハードウェアもしくはソフトウェアコンポーネントまたはその組み合わせがコンピュータシステム/サーバ12’と共に使用され得ることを理解されたい。例としては、マイクロコード、デバイスドライバ、冗長処理装置、外部ディスクドライブアレイ、RAIDシステム、テープドライブ、及びデータアーカイブストレージシステム等が挙げられるが、これらに限定されるものではない。
本開示は、例示および説明のために提示されたが、網羅的または限定的であることを意図していない。多くの修正および変形が、当業者には明らかであろう。実施形態は、原理および実際の適用を説明し、当業者が本開示を理解できるようにするために選択され、説明されたものである。
本発明の例示的な実施形態が添付図面を参照して本明細書に記載されたが、本発明の実施形態はそれらの正確な実施形態に限定されず、本開示の範囲または精神から逸脱せずに当業者によって様々な他の変更および修正がそこに影響し得ることが理解されるであろう。
本発明は、システム、方法もしくはコンピュータプログラム製品またはそれらの組み合せとすることができる。コンピュータプログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を記憶したコンピュータ可読記憶媒体を含んでよい。
コンピュータ可読記憶媒体は、命令実行装置によって使用される命令を保持し、記憶することができる有形の装置とすることができる。コンピュータ可読記憶媒体は、一例として、電子記憶装置、磁気記憶装置、光学記憶装置、電磁記憶装置、半導体記憶装置またはこれらの適切な組み合わせであってよい。コンピュータ可読記憶媒体のより具体的な一例としては、ポータブルコンピュータディスケット、ハードディスク、RAM、ROM、EPROM(またはフラッシュメモリ)、SRAM、CD-ROM、DVD、メモリスティック、フロッピーディスク、パンチカードまたは溝内の隆起構造などに命令を記録した機械的に符号化された装置、およびこれらの適切な組み合せが挙げられる。本明細書で使用されるコンピュータ可読記憶装置は、電波もしくは他の自由に伝播する電磁波、導波管もしくは他の伝送媒体を介して伝播する電磁波(例えば、光ファイバケーブルを通過する光パルス)、またはワイヤを介して送信される電気信号のような、一過性の信号それ自体として解釈されるべきではない。
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピュータ装置/処理装置へダウンロード可能である。あるいは、ネットワーク(例えばインターネット、LAN、WANもしくはワイヤレスネットワークまたはこれらの組み合わせ)を介して、外部コンピュータまたは外部記憶装置へダウンロード可能である。ネットワークは、銅製伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータもしくはエッジサーバまたはこれらの組み合わせを備えることができる。各コンピュータ装置/処理装置内のネットワークアダプタカードまたはネットワークインタフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、当該コンピュータ可読プログラム命令を、各々のコンピュータ装置/処理装置におけるコンピュータ可読記憶媒体に記憶するために転送する。
本発明の動作を実施するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、または、スモールトークやC++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語や類似のプログラミング言語などの手続き型プログラミング言語を含む、1つ以上のプログラミング言語の任意の組み合わせで記述されたソースコードもしくはオブジェクトコードのいずれかとすることができる。コンピュータ可読プログラム命令は、スタンドアロン型ソフトウェアパッケージとして完全にユーザのコンピュータ上で、または部分的にユーザのコンピュータ上で実行可能である。あるいは、部分的にユーザのコンピュータ上でかつ部分的にリモートコンピュータ上で、または、完全にリモートコンピュータもしくはサーバ上で実行可能である。後者の場合、リモートコンピュータは、LANやWANを含む任意の種類のネットワークを介してユーザのコンピュータに接続してもよいし、外部コンピュータに(例えば、インターネットサービスプロバイダを使用してインターネットを介して)接続してもよい。いくつかの実施形態において、例えばプログラマブル論理回路、フィールドプログラマブルゲートアレイ(FPGA)、プログラマブル論理アレイ(PLA)を含む電子回路は、本発明の態様を実行する目的で当該電子回路をカスタマイズするために、コンピュータ可読プログラム命令の状態情報を利用することによって、コンピュータ可読プログラム命令を実行することができる。
本発明の態様は、本明細書において、本発明の実施形態に係る方法、装置(システム)、およびコンピュータプログラム製品のフローチャートもしくはブロック図またはその両方を参照して説明されている。フローチャートもしくはブロック図またはその両方における各ブロック、および、フローチャートもしくはブロック図またはその両方における複数のブロックの組み合わせは、コンピュータ可読プログラム命令によって実行可能である。上記のコンピュータ可読プログラム命令は、機械を生産するために、汎用コンピュータ、専用コンピュータ、または他のプログラマブルデータ処理装置のプロセッサに提供してよい。これにより、かかるコンピュータまたは他のプログラマブルデータ処理装置のプロセッサを介して実行されるこれらの命令が、フローチャートもしくはブロック図またはその両方における1つ以上のブロックにて特定される機能/動作を実行するための手段を創出する。上記のコンピュータ可読プログラム命令はさらに、コンピュータ、プログラマブルデータ処理装置もしくは他の装置またはこれらの組み合わせに対して特定の態様で機能するよう命令可能なコンピュータ可読記憶媒体に記憶してよい。これにより、命令が記憶された当該コンピュータ可読記憶媒体は、フローチャートもしくはブロック図またはその両方における1つ以上のブロックにて特定される機能/動作の態様を実行するための命令を含む製品を構成する。
コンピュータ可読プログラム命令を、コンピュータ、他のプログラマブル装置、または他の装置にロードし、一連の動作ステップを当該コンピュータ、他のプログラマブル装置、または他の装置上で実行させることにより、コンピュータ実行プロセスを生成してもよい。これにより、当該コンピュータ、他のプログラマブル装置、または他の装置上で実行される命令が、フローチャートもしくはブロック図またはその両方における1つ以上のブロックにて特定される機能/動作を実行する。
本開示の図面におけるフローチャートおよびブロック図は、本発明の種々の実施形態に係るシステム、方法およびコンピュータプログラム製品の可能な実装形態のアーキテクチャ、機能性、および動作を示している。この点に関して、フローチャートまたはブロック図における各ブロックは、特定の論理機能を実行するための1つ以上の実行可能な命令を含む、命令のモジュール、セグメント、または部分を表すことができる。他の一部の実装形態において、ブロック内に示した機能は、各図に示す順序とは異なる順序で実行してもよい。例えば、連続して示される2つのブロックは、実際には、関係する機能に応じて、略同時に実行してもよいし、場合により逆順で実行してもよい。なお、ブロック図もしくはフローチャートまたはその両方における各ブロック、および、ブロック図もしくはフローチャートまたはその両方における複数のブロックの組み合わせは、特定の機能または動作を行う、または専用ハードウェアとコンピュータ命令との組み合わせを実行する専用ハードウェアベースのシステムによって、実行可能である。
Claims (20)
- 複数のマイクロサービスに分割されるアプリケーションを記述する情報を受信することと、
マイクロサービスアドバイザアプリケーションを利用して、前記アプリケーションのアプリケーション要素を特定することと、
前記マイクロサービスアドバイザアプリケーションを利用して前記アプリケーション要素から、異種グラフを生成することであって、前記異種グラフ内の各ノードがアプリケーション要素を表し、前記異種グラフ内の各エッジが、前記エッジによって接続された2つのノード間の関係を表す、生成することと、
前記マイクロサービスアドバイザアプリケーションを利用し、グラフクラスタリング技術を利用して、前記異種グラフ内のエッジに基づき、共通の属性を共有する前記異種グラフ内のノードのグループを特定することと、
前記マイクロサービスアドバイザアプリケーションから、前記アプリケーションをマイクロサービスに分割するために、前記特定されたノードのグループに基づいて推奨事項を提供することであって、前記推奨事項は、前記アプリケーションのためのマイクロサービスの数および前記マイクロサービスの各々に含まれるべきアプリケーション要素を含む、提供することと、を含む方法。 - 前記ノードのグループを特定することは、ユーザ提供の制約を考慮して実行される、請求項1に記載の方法。
- 前記生成することは、アプリケーション要素間の間接的な関連を特定することを含み、前記ノードのグループを特定することは、前記間接的な関連を考慮して実行される、請求項1に記載の方法。
- 前記間接的な関連を特定することは、複数の他のアプリケーション要素によってアクセスされるアプリケーション要素を特定することを含む、請求項3に記載の方法。
- 前記生成することは、アプリケーション要素間の直接的な関連を特定することを含み、前記ノードのグループを特定することは、前記直接的な関連を考慮して実行される、請求項1に記載の方法。
- 前記直接的な関連を特定することは、互いに通信するアプリケーション要素を特定することを含む、請求項5に記載の方法。
- 前記ノードのグループを特定することは、アプリケーション要素間の親和性を考慮して行われる、請求項1に記載の方法。
- 前記生成することは、前記異種グラフを生成するためにニューラルネットワークを利用することを含む、請求項1に記載の方法。
- 前記提供することは、前記推奨事項の正当化を提供することを含む、請求項1に記載の方法。
- 前記アプリケーション要素は、クラス、オブジェクト、リソース、およびファイルを含む前記グループから選択される要素からなる、請求項1に記載の方法。
- 少なくとも1つのプロセッサと、
前記少なくとも1つのプロセッサによって実行可能なコンピュータ可読プログラムコードを実装したコンピュータ可読記憶媒体と、を含み、
前記コンピュータ可読プログラムコードは、複数のマイクロサービスに分割されるアプリケーションを記述する情報を受信するように構成され、
前記コンピュータ可読プログラムコードは、マイクロサービスアドバイザアプリケーションを利用して、前記アプリケーションのアプリケーション要素を特定するように構成され、
前記コンピュータ可読プログラムコードは、前記マイクロサービスアドバイザアプリケーションを利用して前記アプリケーション要素から、異種グラフを生成するように構成され、前記異種グラフ内の各ノードがアプリケーション要素を表し、前記異種グラフ内の各エッジが、前記エッジによって接続された2つのノード間の関係性を表し、
前記コンピュータ可読プログラムコードは、前記マイクロサービスアドバイザアプリケーションを利用し、グラフクラスタリング技術を利用して、前記異種グラフ内のエッジに基づき、共通の属性を共有する前記異種グラフ内のノードのグループを特定するように構成され、
前記コンピュータ可読プログラムコードは、前記マイクロサービスアドバイザアプリケーションから、前記アプリケーションをマイクロサービスに分割するために、前記特定されたノードのグループに基づいて推奨事項を提供するように構成され、前記推奨事項は、前記アプリケーションのためのマイクロサービスの数および前記マイクロサービスの各々に含まれるべきアプリケーション要素を含む、装置。 - コンピュータ可読プログラムコードを実装するコンピュータ可読記憶媒体を含み、前記コンピュータ可読プログラムコードは、プロセッサによって実行可能であり、
前記コンピュータ可読プログラムコードは、複数のマイクロサービスに分割されるアプリケーションを記述する情報を受信するように構成され、
前記コンピュータ可読プログラムコードは、マイクロサービスアドバイザアプリケーションを利用して、前記アプリケーションのアプリケーション要素を特定するように構成され、
前記コンピュータ可読プログラムコードは、前記マイクロサービスアドバイザアプリケーションを利用して前記アプリケーション要素から、異種グラフを生成するように構成され、前記異種グラフ内の各ノードがアプリケーション要素を表し、前記異種グラフ内の各エッジが、前記エッジによって接続された2つのノード間の関係を表し、
前記コンピュータ可読プログラムコードは、前記マイクロサービスアドバイザアプリケーションを利用し、グラフクラスタリング技術を利用して、前記異種グラフ内のエッジに基づき、共通の属性を共有する前記異種グラフ内のノードのグループを特定するように構成され、
前記コンピュータ可読プログラムコードは、前記マイクロサービスアドバイザアプリケーションから、前記アプリケーションをマイクロサービスに分割するために、前記特定されたノードのグループに基づいて推奨事項を提供するように構成され、前記推奨事項は、前記アプリケーションのためのマイクロサービスの数および前記マイクロサービスの各々に含まれるべきアプリケーション要素を含む、コンピュータプログラム製品。 - 前記ノードのグループを特定することは、ユーザ提供の制約を考慮して実行される、請求項12に記載のコンピュータプログラム製品。
- 前記生成することは、アプリケーション要素間の間接的な関連を特定することを含み、前記ノードのグループを特定することは、前記間接的な関連を考慮して実行される、請求項12に記載のコンピュータプログラム製品。
- 前記間接的な関連を特定することは、複数の他のアプリケーション要素によってアクセスされるアプリケーション要素を特定することを含む、請求項14に記載のコンピュータプログラム製品。
- 前記生成することは、アプリケーション要素間の直接的な関連を特定することを含み、前記ノードのグループを特定することは、前記直接的な関連を考慮して実行される、請求項12に記載のコンピュータプログラム製品。
- 前記直接的な関連を特定することは、互いに通信するアプリケーション要素を特定することを含む、請求項16に記載のコンピュータプログラム製品。
- 前記ノードのグループを特定することは、アプリケーション要素間の親和性を考慮して行われる、請求項12に記載のコンピュータプログラム製品。
- 前記生成することは、前記異種グラフを生成するためにニューラルネットワークを利用することを含む、請求項12に記載のコンピュータプログラム製品。
- 前記提供することは、前記推奨事項の正当化を提供することを含む、請求項12に記載のコンピュータプログラム製品。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/498,406 US11836538B2 (en) | 2021-10-11 | 2021-10-11 | Heterogeneous graph generation for application microservices |
US17/498,406 | 2021-10-11 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023057543A true JP2023057543A (ja) | 2023-04-21 |
Family
ID=85798763
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022162229A Pending JP2023057543A (ja) | 2021-10-11 | 2022-10-07 | アプリケーションマイクロサービスのための異種グラフ作成のための方法、装置、コンピュータプログラム製品(アプリケーションマイクロサービスのための異種グラフ作成) |
Country Status (3)
Country | Link |
---|---|
US (1) | US11836538B2 (ja) |
JP (1) | JP2023057543A (ja) |
CN (1) | CN115964646A (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116166366B (zh) * | 2023-04-24 | 2023-07-21 | 国网江西省电力有限公司信息通信分公司 | 一站式电网多样式专题图自动成图系统及方法 |
CN116501383B (zh) * | 2023-06-26 | 2023-08-22 | 亚信科技(中国)有限公司 | 微服务的分配方法、装置、电子设备及可读存储介质 |
CN117311801B (zh) * | 2023-11-27 | 2024-04-09 | 湖南科技大学 | 一种基于网络化结构特征的微服务拆分方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
SG11201909903VA (en) | 2017-04-28 | 2019-11-28 | Lzlabs Gmbh | Containerized deployment of microservices based on monolithic legacy applications |
US11704541B2 (en) * | 2017-10-27 | 2023-07-18 | Deepmind Technologies Limited | Graph neural network systems for generating structured representations of objects |
US10827020B1 (en) * | 2019-10-03 | 2020-11-03 | Hewlett Packard Enterprise Development Lp | Assignment of microservices |
US11416243B2 (en) * | 2020-01-23 | 2022-08-16 | International Business Machines Corporation | Microservice decomposition strategy of monolithic applications |
US20210390405A1 (en) * | 2020-06-11 | 2021-12-16 | Ulsan National Institute Of Science And Technology | Microservice-based training systems in heterogeneous graphic processor unit (gpu) cluster and operating method thereof |
US20220309334A1 (en) * | 2021-03-23 | 2022-09-29 | Adobe Inc. | Graph neural networks for datasets with heterophily |
-
2021
- 2021-10-11 US US17/498,406 patent/US11836538B2/en active Active
-
2022
- 2022-10-07 JP JP2022162229A patent/JP2023057543A/ja active Pending
- 2022-10-11 CN CN202211238469.XA patent/CN115964646A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US11836538B2 (en) | 2023-12-05 |
US20230111379A1 (en) | 2023-04-13 |
CN115964646A (zh) | 2023-04-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20190347121A1 (en) | Distributed container image repository service | |
JP2023057543A (ja) | アプリケーションマイクロサービスのための異種グラフ作成のための方法、装置、コンピュータプログラム製品(アプリケーションマイクロサービスのための異種グラフ作成) | |
US20190378016A1 (en) | Distributed computing architecture for large model deep learning | |
US10983816B2 (en) | Self-adaptive building container images | |
US10929414B2 (en) | Flexible interactive data visualization enabled by dynamic attributes | |
US11586677B2 (en) | Resolving user expression having dependent intents | |
US11334333B1 (en) | Generation of adaptive configuration files to satisfy compliance | |
US11049024B2 (en) | Enhancement of massive data ingestion by similarity linkage of documents | |
US10565202B2 (en) | Data write/import performance in a database through distributed memory | |
US11144313B2 (en) | Merging changes from upstream code to a branch | |
CN114424197A (zh) | 使用分层聚类的罕见主题检测 | |
JP2024513293A (ja) | トランスフォーマベースのモデルナレッジグラフリンク予測 | |
US10949470B2 (en) | Topic clustering to generate formulations | |
US10902046B2 (en) | Breaking down a high-level business problem statement in a natural language and generating a solution from a catalog of assets | |
US20210133232A1 (en) | Visual representation coherence preservation | |
CN112148461A (zh) | 应用的调度方法、装置 | |
WO2023185570A1 (en) | Storage driver for managing multiple layer file system on cloud | |
US20210157832A1 (en) | Differential processing mechanism for spark-based graph computing background | |
US11093438B2 (en) | Pipelining multi-directional reduction | |
US11373037B2 (en) | Inferring relation types between temporal elements and entity elements | |
US20240086464A1 (en) | Semi-structured data decomposition | |
US11334268B2 (en) | Data lineage and data provenance enhancement | |
US20210240715A1 (en) | Signaling and resolution model for multi-level session-based description descriptors | |
WO2023103793A1 (en) | Debugging communication among units on processor simulator | |
WO2023078003A1 (en) | Optimizing cloud query execution |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD16 | Notification of change of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7436 Effective date: 20221222 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20221222 |