DE112021000189T5 - Mikrodienst-Aufspaltungsstrategie von monolithischen Anwendungen - Google Patents

Mikrodienst-Aufspaltungsstrategie von monolithischen Anwendungen Download PDF

Info

Publication number
DE112021000189T5
DE112021000189T5 DE112021000189.2T DE112021000189T DE112021000189T5 DE 112021000189 T5 DE112021000189 T5 DE 112021000189T5 DE 112021000189 T DE112021000189 T DE 112021000189T DE 112021000189 T5 DE112021000189 T5 DE 112021000189T5
Authority
DE
Germany
Prior art keywords
code
computer
monolithic application
disjointed
monolithic
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
Application number
DE112021000189.2T
Other languages
English (en)
Inventor
Jinho Hwang
Anup Kalia
Jin Xiao
Malik Jackson
Maja Vukovic
John Rofrano
Senthil Kumar Kumarasamy Mani
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112021000189T5 publication Critical patent/DE112021000189T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/72Code refactoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/22Microcontrol or microprogram arrangements
    • G06F9/226Microinstruction function, e.g. input/output microinstruction; diagnostic microinstruction; microinstruction format
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/16Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks using machine learning or artificial intelligence
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/40Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks using virtualisation of network functions or resources, e.g. SDN or NFV entities

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Evolutionary Computation (AREA)
  • Medical Informatics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Artificial Intelligence (AREA)
  • Stored Programmes (AREA)
  • Machine Translation (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Bereitgestellt werden Systeme und Techniken, die eine automatisierte Empfehlung von Mikrodienst-Aufspaltungsstrategien für monolithische Anwendungen ermöglichen. In verschiedenen Ausführungsformen kann eine Community-Erfassungskomponente ein unzusammenhängendes Code-Cluster in einer monolithischen Anwendung auf Grundlage eines Code-Eigenschaftsgraphen erfassen, der die monolithische Anwendung kennzeichnet. In verschiedenen Aspekten kann der Code-Eigenschaftsgraph auf einer zeitlichen Code-Weiterentwicklung der monolithischen Anwendung beruhen. In verschiedenen Ausführungsformen kann eine Thema-Modellierungskomponente einen funktionalen Zweck des unzusammenhängenden Code-Clusters auf Grundlage eines Geschäftsdokumentenkorpus identifizieren, das der monolithischen Anwendung entspricht. In verschiedenen Ausführungsformen kann eine Mikrodienste-Komponente einen Mikrodienst empfehlen, um das unzusammenhängende Code-Cluster auf Grundlage des funktionalen Zwecks zu ersetzen.

Description

  • HINTERGRUND
  • Die Offenbarung des Erfindungsgegenstands betrifft Mikrodienst-Aufspaltung und insbesondere automatisches Empfehlen von Mikrodienst-Aufspaltungsstrategien für monolithische Anwendungen.
  • KURZDARSTELLUNG DER ERFINDUNG
  • Das Folgende ist eine Kurzdarstellung zum Bereitstellen eines grundlegenden Verständnisses von einer oder mehreren Ausführungsformen der Erfindung. Diese Kurzdarstellung ist nicht dazu bestimmt, Schlüssel- oder kritische Elemente zu identifizieren oder irgendeinen Schutzumfang der speziellen Ausführungsformen oder irgendeinen Schutzumfang der Ansprüche abzugrenzen. Ihr einziger Zweck besteht in der Darstellung von Konzepten in einer vereinfachten Form als eine Einleitung für die ausführlichere, später vorgelegte Beschreibung. In einer oder mehreren hierin beschriebenen Ausführungsformen werden Einheiten, Systeme, durch einen Computer umgesetzte Verfahren, Vorrichtungen und/oder Computerprogrammprodukte beschrieben, die eine automatisierte Empfehlung von Mikrodienst-Aufspaltungsstrategien für monolithische Anwendungen ermöglichen.
  • Gemäß einer oder mehreren Ausführungsformen wird ein System bereitgestellt. Das System kann einen Arbeitsspeicher aufweisen, der durch einen Computer ausführbare Komponenten speichern kann. Das System kann ferner einen Prozessor aufweisen, der betriebsfähig mit dem Arbeitsspeicher verbunden sein kann, und der die in dem Arbeitsspeicher gespeicherten, durch den Computer ausführbaren Komponenten ausführen kann. In verschiedenen Ausführungsformen können durch den Computer ausführbare Komponenten eine Community-Erfassungskomponente aufweisen, die ein unzusammenhängendes Code-Cluster in einer monolithischen Anwendung auf Grundlage eines Code-Eigenschaftsgraphen erfassen kann, der die monolithische Anwendung kennzeichnet. In verschiedenen Aspekten kann der Code-Eigenschaftsgraph auf einer zeitlichen Code-Weiterentwicklung der monolithischen Anwendung beruhen. In verschiedenen Ausführungsformen können die durch den Computer ausführbaren Komponenten eine Thema-Modellierungskomponente aufweisen, die einen funktionalen Zweck des unzusammenhängenden Code-Clusters auf Grundlage eines Geschäftsdokumentenkorpus identifizieren kann, das der monolithischen Anwendung entspricht. In verschiedenen Ausführungsformen kann eine Mikrodienste-Komponente einen Mikrodienst empfehlen, um das unzusammenhängende Code-Cluster auf Grundlage des funktionalen Zwecks zu ersetzen.
  • Gemäß einer oder mehreren Ausführungsformen kann das oben beschriebene System als ein durch einen Computer umgesetztes Verfahren umgesetzt werden.
  • Gemäß einer oder mehreren Ausführungsformen kann das oben beschriebene System als ein Computerprogrammprodukt zum Ermöglichen einer automatisierten Empfehlung von Mikrodienst-Aufspaltungsstrategien für monolithische Anwendungen umgesetzt werden. Das Computerprogrammprodukt kann ein durch einen Computer lesbares Speichermedium mit darauf verkörperten Programmanweisungen aufweisen. Die Programmanweisungen können durch eine verarbeitende Komponente ausführbar sein, wobei sie die verarbeitende Komponente veranlassen können, verschiedene Handlungen durchzuführen.
  • Gemäß einer oder mehreren Ausführungsformen wird eine Vorrichtung bereitgestellt. Die Vorrichtung kann einen Arbeitsspeicher aufweisen, der durch einen Computer ausführbare Komponenten speichern kann. Die Vorrichtung kann ferner einen Prozessor aufweisen, der betriebsfähig mit dem Arbeitsspeicher verbunden sein kann, und der die in dem Arbeitsspeicher gespeicherten, durch den Computer ausführbaren Komponenten ausführen kann. In verschiedenen Ausführungsformen können durch den Computer ausführbare Komponenten eine Community-Erfassungskomponente aufweisen, die Kandidaten für eine Mikrodienst-Aufspaltung in einer monolithischen Anwendung auf Grundlage eines Code-Eigenschaftsgraphen identifizieren kann, der der monolithischen Anwendung entspricht. In verschiedenen Ausführungsformen können die durch den Computer ausführbaren Komponenten eine Thema-Modellierungskomponente aufweisen, die Funktionen identifizieren kann, die jeweils durch die identifizierten Kandidaten auf Grundlage von Geschäftsdokumenten durchgeführt werden, die der monolithischen Anwendung entsprechen.
  • Gemäß einer oder mehreren Ausführungsformen kann die oben beschriebene Vorrichtung als ein durch einen Computer umgesetztes Verfahren umgesetzt werden.
  • Gemäß einem Aspekt wird ein System bereitgestellt, das aufweist: einen Arbeitsspeicher, der durch einen Computer ausführbare Komponenten speichert; und einen Prozessor, der betriebsfähig mit dem Arbeitsspeicher verbunden ist, der die durch einen Computer ausführbaren Komponenten ausführt, die in dem Arbeitsspeicher gespeichert sind, wobei die durch einen Computer ausführbaren Komponenten aufweisen: eine Community-Erfassungskomponente, die ein unzusammenhängendes Code-Cluster in einer monolithischen Anwendung auf Grundlage eines Code-Eigenschaftsgraphen erfasst, der die monolithische Anwendung kennzeichnet; eine Thema-Modellierungskomponente, die einen funktionalen Zweck des unzusammenhängenden Code-Clusters auf Grundlage eines Geschäftsdokumentenkorpus identifiziert, das der monolithischen Anwendung entspricht; und eine Mikrodienste-Komponente, die einen Mikrodienst empfiehlt, um das unzusammenhängende Code-Cluster auf Grundlage des funktionalen Zwecks zu ersetzen.
  • Gemäß einem weiteren Aspekt wird ein durch einen Computer umgesetztes Verfahren bereitgestellt, das aufweist: Erfassen, durch eine Einheit, die betriebsfähig mit einem Prozessor verbunden ist, eines unzusammenhängenden Code-Clusters in einer monolithischen Anwendung auf Grundlage eines Code-Eigenschaftsgraphen, der die monolithische Anwendung kennzeichnet; Identifizieren, durch die Einheit, eines funktionalem Zwecks des unzusammenhängenden Code-Clusters auf Grundlage eines Geschäftsdokumentenkorpus, das der monolithischen Anwendung entspricht; und Empfehlen, durch die Einheit, eines Mikrodienstes, um das unzusammenhängende Code-Cluster auf Grundlage des funktionalen Zwecks zu ersetzen.
  • Gemäß einem weiteren Aspekt wird ein Computerprogrammprodukt zum Ermöglichen einer automatisierten Empfehlung von Mikrodienst-Aufspaltungsstrategien für monolithische Anwendungen bereitgestellt, wobei das Computerprogrammprodukt einen durch einen Computer lesbaren Arbeitsspeicher mit darauf verkörperten Programmanweisungen aufweist, wobei die Programmanweisungen durch eine verarbeitende Komponente ausführbar sind, um die verarbeitende Komponente zu veranlassen zum: Erfassen eines unzusammenhängenden Code-Clusters in einer monolithischen Anwendung auf Grundlage eines Code-Eigenschaftsgraphen, der die monolithische Anwendung kennzeichnet; Identifizieren eines funktionalen Zwecks des unzusammenhängenden Code-Clusters auf Grundlage eines Geschäftsdokumentenkorpus, das der monolithischen Anwendung entspricht; und Empfehlen eines Mikrodienstes, um das unzusammenhängende Code-Cluster auf Grundlage des funktionalen Zwecks zu ersetzen.
  • Gemäß einem weiteren Aspekt wird eine Vorrichtung bereitgestellt, die aufweist: einen Prozessor, der betriebsfähig mit einem Arbeitsspeicher verbunden ist, der durch einen Computer ausführbare Komponenten ausführt, die in dem Arbeitsspeicher gespeichert sind, wobei die durch den Computer ausführbaren Komponenten aufweisen: eine Community-Erfassungskomponente, die Kandidaten für eine Mikrodienst-Aufspaltung in einer monolithischen Anwendung auf Grundlage eines Code-Eigenschaftsgraphen erfasst, der der monolithischen Anwendung entspricht; und eine Thema-Modellierungskomponente, die Funktionen identifiziert, die jeweils durch die identifizierten Kandidaten auf Grundlage von Geschäftsdokumenten durchgeführt werden, die der monolithischen Anwendung entsprechen.
  • Gemäß einem weiteren Aspekt wird ein durch einen Computer umgesetztes Verfahren bereitgestellt, das aufweist: Identifizieren, durch eine in Datenaustausch mit einem Prozessor verbundene Einheit, von Kandidaten für eine Mikrodienst-Aufspaltung in einer monolithischen Anwendung auf Grundlage eines Code-Eigenschaftsgraphen, der der monolithischen Anwendung entspricht; und Identifizieren, durch die Einheit, von Funktionen, die jeweils durch die identifizierten Kandidaten auf Grundlage von Geschäftsdokumenten durchgeführt werden, die der monolithischen Anwendung entsprechen.
  • Figurenliste
  • Im Folgenden werden Ausführungsformen der Erfindung allein zu Beispielzwecken unter Bezugnahme auf die begleitenden Zeichnungen beschrieben, in denen:
    • 1 ein Blockschaubild eines beispielhaften, nicht einschränkenden Systems veranschaulicht, das eine automatisierte Empfehlung von Mikrodienst-Aufspaltungsstrategien für monolithische Anwendungen gemäß einer oder mehreren hierin beschriebenen Ausführungsformen ermöglicht.
    • 2 einen Ablaufübersichtsplan eines beispielhaften, nicht einschränkenden, durch einen Computer umgesetzten Verfahrens veranschaulicht, das eine automatisierte Empfehlung von Mikrodienst-Aufspaltungsstrategien für monolithische Anwendungen gemäß einer oder mehreren hierin beschriebenen Ausführungsformen ermöglicht.
    • 3 ein Blockschaubild eines beispielhaften, nicht einschränkenden Systems mit einem Code-Eigenschaftsgraphen veranschaulicht, das eine automatisierte Empfehlung von Mikrodienst-Aufspaltungsstrategien für monolithische Anwendungen gemäß einer oder mehreren hierin beschriebenen Ausführungsformen ermöglicht.
    • 4 ein Blockschaubild eines beispielhaften, nicht einschränkenden Systems mit einem Community-Erfassungsalgorithmus veranschaulicht, das eine automatisierte Empfehlung von Mikrodienst-Aufspaltungsstrategien für monolithische Anwendungen gemäß einer oder mehreren hierin beschriebenen Ausführungsformen ermöglicht.
    • 5 ein Blockschaubild eines beispielhaften, nicht einschränkenden unzusammenhängenden Code-Clusters in einem beispielhaften, nicht einschränkenden Code-Eigenschaftsgraphen veranschaulicht, das eine automatisierte Empfehlung von Mikrodienst-Aufspaltungsstrategien für monolithische Anwendungen gemäß einer oder mehreren hierin beschriebenen Ausführungsformen ermöglicht.
    • 6 ein Blockschaubild eines beispielhaften, nicht einschränkenden Systems mit einem Thema-Modellierungsalgorithmus veranschaulicht, das eine automatisierte Empfehlung von Mikrodienst-Aufspaltungsstrategien für monolithische Anwendungen gemäß einer oder mehreren hierin beschriebenen Ausführungsformen ermöglicht.
    • 7 ein Blockschaubild eines beispielhaften, nicht einschränkenden Systems mit einem empfohlenen Mikrodienst veranschaulicht, das eine automatisierte Empfehlung von Mikrodienst-Aufspaltungsstrategien für monolithische Anwendungen gemäß einer oder mehreren hierin beschriebenen Ausführungsformen ermöglicht.
    • 8 ein Übersichtsblockschaubild veranschaulicht, das einen beispielhaften Workflow-Prozess zum Ermöglichen einer automatisierten Empfehlung von Mikrodienst-Aufspaltungsstrategien für monolithische Anwendungen gemäß einer oder mehreren hierin beschriebenen Ausführungsformen darstellt.
    • 9 ein Blockschaubild eines beispielhaften, nicht einschränkenden Systems mit einer Rückmeldungskomponente veranschaulicht, das eine automatisierte Empfehlung von Mikrodienst-Aufspaltungsstrategien für monolithische Anwendungen gemäß einer oder mehreren hierin beschriebenen Ausführungsformen ermöglicht.
    • 10 ein Blockschaubild eines beispielhaften, nicht einschränkenden Systems mit einer Komponente zum Speichern von Abhängigkeitsmustern veranschaulicht, das eine automatisierte Empfehlung von Mikrodienst-Aufspaltungsstrategien für monolithische Anwendungen gemäß einer oder mehreren hierin beschriebenen Ausführungsformen ermöglicht.
    • 11 einen Ablaufplan eines beispielhaften, nicht einschränkenden, durch einen Computer umgesetzten Verfahrens veranschaulicht, das eine automatisierte Empfehlung von Mikrodienst-Aufspaltungsstrategien für monolithische Anwendungen gemäß einer oder mehreren hierin beschriebenen Ausführungsformen ermöglicht.
    • 12 einen Ablaufplan eines beispielhaften, nicht einschränkenden, durch einen Computer umgesetzten Verfahrens mit einem Verstärken eines Code-Eigenschaftsgraphen veranschaulicht, das eine automatisierte Empfehlung von Mikrodienst-Aufspaltungsstrategien für monolithische Anwendungen gemäß einer oder mehreren hierin beschriebenen Ausführungsformen ermöglicht.
    • 13 einen Ablaufplan eines beispielhaften, nicht einschränkenden, durch einen Computer umgesetzten Verfahrens mit einem Empfangen einer Benutzerrückmeldung veranschaulicht, das eine automatisierte Empfehlung von Mikrodienst-Aufspaltungsstrategien für monolithische Anwendungen gemäß einer oder mehreren hierin beschriebenen Ausführungsformen ermöglicht.
    • 14 einen Ablaufplan eines beispielhaften, nicht einschränkenden, durch einen Computer umgesetzten Verfahrens mit einem Speichern von Abhängigkeitsmustern veranschaulicht, das eine automatisierte Empfehlung von Mikrodienst-Aufspaltungsstrategien für monolithische Anwendungen gemäß einer oder mehreren hierin beschriebenen Ausführungsformen ermöglicht.
    • 15 einen Ablaufplan eines beispielhaften, nicht einschränkenden, durch einen Computer umgesetzten Verfahrens mit einem Ersetzen von unzusammenhängenden Code-Clustern veranschaulicht, das eine automatisierte Empfehlung von Mikrodienst-Aufspaltungsstrategien für monolithische Anwendungen gemäß einer oder mehreren hierin beschriebenen Ausführungsformen ermöglicht.
    • 16 einen Ablaufplan eines beispielhaften, nicht einschränkenden, durch einen Computer umgesetzten Verfahrens veranschaulicht, das eine automatisierte Empfehlung von Mikrodienst-Aufspaltungsstrategien für monolithische Anwendungen gemäß einer oder mehreren hierin beschriebenen Ausführungsformen ermöglicht.
    • 17 einen Ablaufplan eines beispielhaften, nicht einschränkenden, durch einen Computer umgesetzten Verfahrens mit einem Modifizieren eines Code-Eigenschaftsgraphen veranschaulicht, das eine automatisierte Empfehlung von Mikrodienst-Aufspaltungsstrategien für monolithische Anwendungen gemäß einer oder mehreren hierin beschriebenen Ausführungsformen ermöglicht.
    • 18 ein Blockschaubild einer beispielhaften, nicht-einschränkenden Betriebsumgebung veranschaulicht, in der eine oder mehrere hierin beschriebene Ausführungsformen ermöglicht werden können.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Die folgende ausführliche Beschreibung dient nur zur Veranschaulichung und soll Ausführungsformen und/oder eine Anwendung oder Verwendungen von Ausführungsformen keinesfalls einschränken. Ferner ist keine Einschränkung durch irgendwelche ausdrücklichen oder implizierten Informationen beabsichtigt, die in den vorhergehenden Abschnitten „Hintergrund“ oder „Kurzdarstellung“ und/oder im Abschnitt „Ausführliche Beschreibung“ dargelegt werden.
  • Im Folgenden wird eine bzw. werden mehrere Ausführungsformen unter Bezugnahme auf die Zeichnungen beschrieben, wobei durchgehend gleiche Bezugszeichen verwendet werden, um auf gleiche Elemente zu verweisen. In der folgenden Beschreibung werden zu Erläuterungszwecken zahlreiche spezifische Details dargelegt, um ein gründlicheres Verständnis der einen oder der mehreren Ausführungsformen bereitzustellen. Es ist in verschiedenen Fällen jedoch offensichtlich, dass die eine oder die mehreren Ausführungsformen ohne diese spezifischen Details ausgeübt werden können.
  • Eine Legacy-Anwendung kann Software (z.B. ein durch einen Computer ausführbares Programm und/oder eine durch einen Computer ausführbare Anwendung) sein, die als alt, veraltet und/oder aktualisierungsbedürftig eingestuft wird, aber aus einer Reihe von Gründen immer noch verwendet wird (z.B. weil die Legacy-Anwendung zufriedenstellende Ergebnisse bereitstellt, weil die zum Ersetzen der Legacy-Anwendung und/oder zur Umschulung von Benutzern/Anwendern der Legacy-Anwendung aufzuwendenden Kosten extrem hoch sind usw.). Legacy-Anwendungen sind oft als monolithische Architekturen aufgebaut. Eine monolithische Anwendung kann eine eigenständige Anwendung sein, die von anderen Datenverarbeitungsanwendungen unabhängig ist, und die alle und/oder im Wesentlichen alle durch einen Computer ausführbaren Komponenten und/oder durch einen Computer ausführbaren Anweisungen kombiniert, die benötigt werden, um eine spezielle Funktion in einem einzelnen Computerprogramm und/oder einer Computerplattform zu ermöglichen. Diese monolithischen Anwendungen sind im Allgemeinen zu groß und/oder zu schwerfällig, um in eine Cloud-native Umgebung zu passen, und sie weisen oft nicht die Vorteile auf, die Cloud-native Anwendungen bieten (z.B. Skalierbarkeit, kontinuierliche Bereitstellung, zustandslose Bereitstellung, Flexibilität usw.). In verschiedenen Situationen kann es von Vorteil sein, eine monolithische Anwendung (z.B. gleichgültig, ob als Legacy- oder Nicht-Legacy-Anwendung) vollständig und/oder teilweise in einen oder mehrere Mikrodienste aufzuspalten. Ein Mikrodienst kann eine unabhängig entwickelbare und/oder einsetzbare Unteranwendung sein, die eine spezielle Funktion und/oder Geschäftsaufgabe durchführt. Wenn eine monolithische Anwendung zum Beispiel ein Computerprogramm ist, das Aktionen A, B und C durchführt, kann die monolithische Anwendung vollständig in drei Mikrodienste aufgespalten werden: einen ersten Mikrodienst, der die Aktion A durchführt, einen zweiten Mikrodienst, der die Aktion B durchführt, und einen dritten Mikrodienst, der die Aktion C durchführt. In einigen Fällen kann eine monolithische Anwendung teilweise aufgespalten werden, sodass nur ein Abschnitt der monolithischen Anwendung durch Mikrodienste ersetzt wird, und der Rest der monolithischen Anwendung wird beibehalten und/oder weiterhin verwendet (z.B. Aufspalten der oben genannten beispielhaften monolithischen Anwendung in nur einen oder zwei Mikrodienste anstatt drei). In verschiedenen Fällen kann ein Mikrodienst auf einer Cloud beruhen. In verschiedenen Situationen kann eine Mikrodienst-Aufspaltung einer monolithischen Anwendung zu einer verbesserten Leistung der monolithischen Anwendung führen (z.B. entkoppelte Komponenten, erhöhte Komplexität, unveränderliche Architektur, schnellere Berechnung, kürzere Entwicklungszeiten, minimierte Abhängigkeiten und/oder gemeinsame Probleme, kleinere und/oder zielgerichtetere Anwendungen, Datenverträge und/oder deren Fehlen zwischen zugehörigen Einheiten usw.).
  • Das Aufspalten einer monolithischen Anwendung in einen oder mehrere Mikrodienste kann jedoch eine schwierige Aufgabe sein. Im Allgemeinen ist eine derartige Aufspaltung zu komplex und/oder zu zeitaufwendig, um manuell effektiv durchgeführt zu werden. Daher sind automatisierte Systeme/Techniken zum Ermöglichen einer Mikrodienst-Aufspaltung von Vorteil.
  • Obwohl einige automatisierte Systeme/Techniken zur Mikrodienst-Aufspaltung vorhanden sind, verwenden sie für gewöhnlich einfache Heuristiken zum Gruppieren und Zusammenführen von Code-Klassen und Verfahren auf Grundlage nur eines Aufrufgraphen der monolithischen Anwendung. Andere vorhandene Systeme/Techniken setzen nur Process Mining und Prozess-Logdateien ein, um alternative Slicing-Lösungen zu empfehlen. Noch weitere vorhandene Systeme/Techniken verwenden nur natürliche Sprachverarbeitung von Quellcode, um Kandidaten für eine Aufspaltung zu identifizieren, was suboptimal sein kann, da natürliche Sprachverarbeitung auf gutem Programmierstil und bewährten Vorgehensweisen beruht, die sich in dem Quellcode von monolithischen Anwendungen nicht oft zeigen.
  • Bei derartigen vorhandenen Systemen/Techniken treten viele Nachteile auf. Zum Beispiel verwenden derartige vorhandene Systeme/Techniken keine statistischen Verfahren zum Bestimmen der semantischen Struktur der monolithischen Anwendung (z.B. die Struktur des Quellcodes der Anwendung), sie berücksichtigen keine Datenabhängigkeiten und/oder Steuerabhängigkeiten der monolithischen Anwendung, und sie verwenden keine zeitliche Code-Weiterentwicklung (z.B. die Änderungen an dem Code der Anwendung im Laufe der Zeit) der monolithischen Anwendung, um Kandidaten für eine Mikrodienst-Aufspaltung zu identifizieren. Außerdem konzentrieren sich derartige Systeme/Techniken nur auf den Quellcode von monolithischen Anwendungen; sie nutzen keine der monolithischen Anwendung zugehörige Geschäftsdokumentation, um funktionale Themen und/oder funktionale Zwecke zu bestimmen und/oder abzuleiten, die identifizierten Code-Clustern zugehörig sind, wenn geeignete Mikrodienste zum Ersetzen der identifizierten Code-Cluster empfohlen werden. Verschiedene Ausführungsformen der Erfindung können ein oder mehrere dieser Probleme beheben.
  • Zu beachten ist, obwohl eine oder mehrere Ausführungsformen der Erfindung besonders nützlich beim Modernisieren einer monolithischen Legacy-Anwendung sein kann bzw. können, dass verschiedene Ausführungsformen der Erfindung verwendet werden können, um Mikrodienst-Aufspaltungsstrategien für monolithische Nicht-Legacy-Anwendungen (z.B. monolithische Anwendungen, die nicht als alt, veraltet und/oder aktualisierungsbedürftig betrachtet werden) zu empfehlen und/oder umzusetzen.
  • Hierin beschriebene Ausführungsformen umfassen Systeme, durch einen Computer umgesetzte Verfahren, Vorrichtungen und/oder Computerprogrammprodukte, die eine automatisierte Empfehlung und/oder Umsetzung von Mikrodienst-Aufspaltungsstrategien für monolithische Anwendungen ermöglichen. In verschiedenen Ausführungsformen kann eine monolithische Anwendung einem technischen Dokumentkorpus (z.B. Quellcode, Binärcode, Anwendungsskripte, Statistiken zu ausgeführten Instanzen, verschiedene Varianten/Konfigurationen, Code-Repositories usw.) und einem Geschäftsdokumentenkorpus zugehörig sein (z.B. Entwurfsdokumentation, Benutzerdokumentationen/Handbücher, Schulungsanleitungen/Handbücher, Anleitungen zur Fehlerbehebung/Handbücher, README-Seiten, Wiki-Seiten, GitHub-Seiten usw.).
  • In verschiedenen Ausführungsformen kann eine Graph-Komponente einen Code-Eigenschaftsgraphen generieren, der die monolithische Anwendung auf Grundlage des technischen Dokumentenkorpus kennzeichnet (z.B. kann die Graph-Komponente den Quellcode und/oder Skripte analysieren, die der monolithischen Anwendung entsprechen, um den Code-Eigenschaftsgraphen zu erstellen). Der Code-Eigenschaftsgraph kann eine zusammenhängende Datenstruktur sein, die sich aus der Kombination eines abstrakten Syntaxbaumes, der der monolithischen Anwendung entspricht, eines Steuerflussgraphen, der der monolithischen Anwendung entspricht, und eines Programmabhängigkeitsgraphen ergibt, der der monolithischen Anwendung entspricht. Das heißt, der Code-Eigenschaftsgraph kann ein Multigraph sein, der gleichzeitig eine umfassende Ansicht der Struktur, des Steuerflusses und der Datenabhängigkeiten der monolithischen Anwendung bereitstellt. Eine derartige zusammenhängende Datenstruktur kann beim Analysieren der monolithischen Anwendung nützlich sein.
  • In verschiedenen Ausführungsformen kann die Graph-Komponente den Code-Eigenschaftsgraphen auf Grundlage einer zeitlichen Code-Weiterentwicklung der monolithischen Anwendung verstärken und/oder modifizieren (z.B. Kantengewichtungen und/oder Kanteneigenschaften in dem Code-Eigenschaftsgraphen verstärken und/oder modifizieren, Knotengewichtungen und/oder Knoteneigenschaften in dem Code-Eigenschaftsgraphen verstärken und/oder modifizieren, und/oder Kanten und/oder Knoten in dem Code-Eigenschaftsgraphen hinzufügen und/oder abziehen usw.). In verschiedenen Ausführungsformen kann die zeitliche Code-Weiterentwicklung eine Zeitleiste und/oder Chronologie von Änderungen an dem Quellcode der monolithischen Anwendung sein, wie sie in einem Code-Repository aufgezeichnet und/oder gespeichert sind, das der monolithischen Anwendung entspricht. In verschiedenen Fällen können Abschnitte/Cluster von Code, die zur selben Zeit und/oder im Wesentlichen ähnlichen Zeiten geändert werden, als einander enger zugehörig und/oder miteinander enger verbunden abgeleitet werden als Abschnitte/Cluster von Code, die zu im Wesentlichen verschiedenen Zeiten geändert werden.
  • Zum Beispiel angenommen, dass der Quellcode einer monolithischen Anwendung eine Code-Gruppierung A, eine Code-Gruppierung B und eine Code-Gruppierung C enthält. Der Code-Eigenschaftsgraph der monolithischen Anwendung kann dann Knoten enthalten, die der Code-Gruppierung A entsprechen, andere Knoten, die der Code-Gruppierung B entsprechen und noch andere Knoten, die der Code-Gruppierung C entsprechen. Angenommen, ein Code-Repository zeigt, dass die Code-Gruppierung A und die Code-Gruppierung C durch einen Benutzer/Anwender zur selben Zeit und/oder im Wesentlichen zur selben Zeit in einem bestimmten Zeitraum geändert/aktualisiert wurden (z.B. wurden für einen bestimmten zweiwöchigen Zeitraum sowohl die Code-Gruppierung A als auch die Code-Gruppierung C zu fünf verschiedenen Zeitpunkten, jeweils im Wesentlichen zur selben Zeit und/oder am selben Tag geändert). Ferner angenommen, dass das Code-Repository zeigt, dass die Code-Gruppierung B überhaupt nicht geändert wurde und/oder zu im Wesentlichen anderen Zeitpunkten (z.B. an verschiedenen Tagen) als die Code-Gruppierung A und die Code-Gruppierung C geändert wurde. Derartige zeitliche Änderungen an dem Quellcode der monolithischen Anwendung können angeben, dass die Code-Gruppierung A und die Code-Gruppierung C einander enger als zu der Code-Gruppierung B zugehörig sind. Somit kann die Graph-Komponente den Code-Eigenschaftsgraphen verstärken/modifizieren, um diese Zugehörigkeit zu demonstrieren (z.B. durch Verstärken von Kantengewichtungen zwischen Knoten, die die Code-Gruppierung A darstellen, und Knoten, die die Code-Gruppierung C darstellen, indem mehr Kanten zwischen Knoten, die die Code-Gruppierung A darstellen, und Knoten, die die Code-Gruppierung C darstellen, hinzugefügt werden, indem Kantengewichtungen zwischen Knoten, die die Code-Gruppierung B darstellen, und Knoten, die die Code-Gruppierungen A und C darstellen, verringert werden, indem Kanten zwischen Knoten, die die Code-Gruppierung B darstellen, und Knoten, die die Code-Gruppierungen A und C darstellen, abgezogen werden usw.). Eine derartige Verstärkung kann die Tatsache wiedergeben, dass die Code-Gruppierung A und die Code-Gruppierung C ausreichend zusammenhängend sind, sodass sie zusammen als ein einziges Code-Cluster behandelt werden sollten, und dass die Code-Gruppierung B ausreichend unabhängig von den anderen Code-Gruppierungen ist, sodass sie alleine als eigenes unabhängiges Code-Cluster behandelt werden sollte.
  • In verschiedenen Ausführungsformen kann eine Community-Erfassungskomponente mittels jeder geeigneten Graphentheorie-Technik ein unzusammenhängendes Code-Cluster in dem Code-Eigenschaftsgraphen erfassen (z.B. nachdem der Code-Eigenschaftsgraph auf Grundlage der zeitlichen Code-Weiterentwicklung verstärkt wurde). In verschiedenen Fällen kann das unzusammenhängende Code-Cluster als ein Kandidat für eine Mikrodienst-Aufspaltung betrachtet werden (z.B. ein Abschnitt von Quellcode, der potenziell durch einen Mikrodienst ersetzt werden kann). In verschiedenen Ausführungsformen kann das unzusammenhängende Code-Cluster jeder Abschnitt des Quellcodes der monolithischen Anwendung sein, der ein vorbestimmtes Niveau von Zusammengehörigkeit (z.B. derart, dass die Knoten, die das unzusammenhängende Code-Cluster in dem Code-Eigenschaftsgraphen darstellen, einander ausreichend zugehörig und/oder miteinander verbunden sind, um somit zu rechtfertigen, zusammen als ein einzelnes Cluster behandelt zu werden) und ein vorbestimmtes Niveau einer Verbindung aufweist (z.B. derart, dass die Knoten, die das unzusammenhängende Code-Cluster in dem Code-Eigenschaftsgraphen darstellen, von anderen Knoten, die andere Code-Cluster in der monolithischen Anwendung darstellen, ausreichend getrennt, isoliert und/oder unabhängig sind, um zu rechtfertigen, dass sie getrennt von den anderen Clustern behandelt werden. In verschiedenen Ausführungsformen können derartige vorbestimmte Schwellenwerte/Niveaus von Zusammengehörigkeit und/oder Verbindung wie vom Benutzer/Anwender gewünscht ausgewählt werden.
  • Wie oben erwähnt, kann die zeitliche Code-Weiterentwicklung der monolithischen Anwendung wertvolle Informationen hinsichtlich der Wechselbeziehung von verschiedenen Abschnitten des Quellcodes der monolithischen Anwendung bereitstellen. Durch Verstärken des Code-Eigenschaftsgraphen auf Grundlage derartiger Informationen kann eine Community-Erfassung des Code-Eigenschaftsgraphen genauer sein und/oder effizienter durchgeführt werden (wenn z.B. der Code-Eigenschaftsgraph auf der zeitlichen Code-Weiterentwicklung beruht, kann der Code-Eigenschaftsgraph genauer angeben, welche Abschnitte des Quellcodes einander enger und/oder stärker zugehörig sind, was zu einer genaueren Community-Erfassung und/oder Community-Clusterbildung führen kann).
  • In verschiedenen Ausführungsformen kann eine Thema-Modellierungskomponente mittels allen geeigneten Thema-Modellierungstechniken einen funktionalen Zweck des unzusammenhängenden Code-Clusters (z.B. eine Geschäftsaufgabe, Geschäftsfunktion, eine geschäftliche Funktionalität und/oder eine Geschäftsaktion, die auf Grundlage des Geschäftsdokumentenkorpus des unzusammenhängende Code-Cluster ausgeführt und/oder ermöglicht werden) auf Grundlage des Geschäftsdokumentenkorpus der monolithischen Anwendung identifizieren. Zum Beispiel kann die Thema-Modellierungskomponente Entwurfsdokumente, Benutzerdokumentationen/Handbücher, README-Dateien, Wiki-Dateien, GitHub-Dateien usw., die sich auf die monolithische Anwendung beziehen, analysieren, um zu bestimmen, welche Aufgabe, Funktion, Funktionalität und/oder Aktion das unzusammenhängende Code-Cluster durchführt. Zum Beispiel kann das Geschäftsdokumentenkorpus Text in natürlicher Sprache umfassen, der erklärt und/oder vorschlägt, was verschiedene Abschnitte des Quellcodes der monolithischen Anwendung tun (z.B. könnte ein Code-Cluster einen Benutzer authentifizieren, ein anderes Code-Cluster könnte eine Empfehlungsfunktion durchführen, noch ein anderes Code-Cluster könnte eine Sammlung von Fakturierungsdaten ermöglichen usw.). In verschiedenen Fällen kann die Thema-Modellierungskomponente derartige Informationen analysieren, um die von dem erfassten unzusammenhängenden Code-Cluster durchgeführte Funktion zu bestimmen (z.B. den funktionalen Zweck des unzusammenhängenden Code-Clusters).
  • In verschiedenen Ausführungsformen kann eine Mikrodienste-Komponente einen Mikrodienst empfehlen, um das unzusammenhängende Code-Cluster auf Grundlage des funktionalen Zwecks zu ersetzen (z.B. kann das unzusammenhängende Code-Cluster durch einen Mikrodienst ersetzt werden, der dieselbe und/oder eine ähnliche Aufgabe, Funktion, Funktionalität und/oder Aktion wie das unzusammenhängende Code-Cluster ermöglicht/durchführt). In verschiedenen Fällen kann die Empfehlung der Mikrodienste-Komponente als eine Mikrodienst-Aufspaltungsstrategie betrachtet werden (z.B. kann die Mikrodienste-Komponente für einen Benutzer/Anwender diejenigen Abschnitte des Quellcodes der monolithischen Anwendung optisch hervorheben, die ersetzt werden können, und kann ferner vorschlagen, welche Mikrodienste abgerufen werden sollten, um diese Abschnitte des Quellcodes zu ersetzen). In verschiedenen Ausführungsformen kann die Mikrodienste-Komponente tatsächlich derartige Aufspaltungsstrategien durchführen und/oder umsetzen (die Mikrodienste-Komponente kann z.B. das unzusammenhängende Code-Cluster funktionslos machen, wie zum Beispiel durch automatisierte Löschung und/oder Kommentieren im Quellcode, und kann den empfohlenen Mikrodienst planen, anordnen und/oder anderweitig erlangen).
  • Wie oben erwähnt, berücksichtigen vorhandene Systeme/Techniken, die eine Mikrodienst-Aufspaltung ermöglichen und/oder die Mikrodienst-Aufspaltungsstrategien empfehlen, einfach keine Datenabhängigkeiten der monolithischen Anwendung (sie verwenden z.B. nur den Aufrufgraphen der Anwendung, nicht den Code-Eigenschaftsgraphen), sie berücksichtigen nicht, wie Quellcode der monolithischen Anwendung sich im Lauf der Zeit geändert hat (sie verstärken z.B. den Code-Eigenschaftsgraphen keinesfalls auf Grundlage der zeitlichen Code-Weiterentwicklung), und sie identifizieren und/oder leiten funktionale Zwecke/Themen von erfassten Code-Cluster nicht durch Analysieren von Geschäftsdokumenten ab, die der monolithischen Anwendung zugehörig sind (d.h. sie versuchen nicht, die Funktionen abzuleiten, die durch identifizierte Code-Cluster durch Nutzen von Benutzerdokumentationen, GitHub-Dateien, Code-Anmerkungen durchgeführt wurden usw.).
  • Verschiedene Ausführungsformen der Erfindung können verwendet werden, um ein Modernisieren einer großen Anzahl von Legacy-Anwendungen zu unterstützen, die nicht aktiv verwaltet werden, für Benutzer/Anwender aber dennoch kommerziell wichtig sind. Verschiedene Fälle der Erfindung können verwendet werden, um ein Beschleunigen der Migration in die Cloud-native Umgebung zu unterstützen und Benutzern/Anwendern zu Kosteneinsparungen und/oder Leistungsverbesserungen zu verhelfen. Verschiedene Ausführungsformen der Erfindung können als Teil eines Anwendungs-Verwaltungswerkzeugs verwendet werden, das hilft, eine kontinuierliche Code-Optimierung und/oder bedarfsorientierte Aufspaltung zu ermöglichen. In verschiedenen Fällen können Ausführungsformen der Erfindung als eine Engine zur Modernisierungsanalyse betrachtet werden, die potenzielle Abschnitte von Legacy-Quellcode identifizieren kann, der durch Cloud-native Mikrodienste ersetzt werden kann und/oder sollte, und die empfehlen und/oder identifizieren kann, welche Mikrodienste als Ersetzungen gewählt werden sollten.
  • Verschiedene Ausführungsformen der Erfindung können verwendet werden, um Hardware und/oder Software zum Lösen von Problemen zu verwenden, die ausgesprochen technischer Natur sind (z.B. um eine automatisierte Empfehlung von Mikrodienst-Aufspaltungsstrategien für monolithische Anwendungen zu ermöglichen), die nicht abstrakt sind, und die nicht als eine Gruppe von geistigen Handlungen durch eine Person ausgeführt werden können. Ferner können einige der durchgeführten Prozesse von einem spezialisierten Computer durchgeführt werden (z.B. Code-Eigenschaftsgraphgenerator, Community-Melder, Themen-Modellierer usw.), um definierte Aufgaben im Zusammenhang mit einer automatisierten Empfehlung von Mikrodienst-Aufspaltungsstrategien für monolithische Anwendungen auszuführen (z.B. Generieren eines Code-Eigenschaftsgraphen, der eine monolithische Anwendung auf Grundlage von Quellcode der monolithischen Anwendung kennzeichnet, Verstärken des Code-Eigenschaftsgraphen auf Grundlage einer zeitlichen Code-Weiterentwicklung der monolithischen Anwendung, Erfassen eines unzusammenhängenden Code-Clusters in dem Quellcode der monolithischen Anwendung auf Grundlage des Code-Eigenschaftsgraphen, Identifizieren eines funktionalen Zwecks des unzusammenhängenden Code-Clusters auf Grundlage eines Geschäftsdokumentenkorpus, das der monolithischen Anwendung entspricht usw.). In verschiedenen Fällen können Ausführungsformen der Erfindung verwendet werden, um Graphgenerierungs-, Community-Erfassungs- und Thema-Modellierungstechniken in einer praktischen Anwendung umzusetzen, die technische Verbesserungen bereitstellen und Probleme lösen kann, die auf dem Gebiet von automatisierter Empfehlung von Mikrodienst-Aufspaltungsstrategien für monolithische Anwendungen auftreten. Durch Nutzen von technischen sowie Geschäftsdokument-Quellen und durch Berücksichtigen von Datenabhängigkeiten und Code-Änderungen im Laufe der Zeit können Ausführungsformen der Erfindung verbesserte Aufspaltungsempfehlungen/Strategien für Benutzer/Anwender einer monolithischen Anwendung bereitstellen, die vorhandene Mikrodienst-Aufspaltungssysteme unterstützen können. Derartige Ausführungsformen bilden somit eine konkrete und fassbare technische Verbesserung des Stands der Technik.
  • 1 veranschaulicht ein Blockschaubild eines beispielhaften, nicht einschränkenden Systems 100, das eine automatisierte Empfehlung von Mikrodienst-Aufspaltungsstrategien für monolithische Anwendungen gemäß einer oder mehreren hierin beschriebenen Ausführungsformen ermöglichen kann. Wie gezeigt, kann ein Mikrodienst-Aufspaltungsstrategiesystem 102 eine monolithische Anwendung 104 analysieren und kann als Ergebnis eine Empfehlung in Bezug darauf ausgeben, wie die monolithische Anwendung 104 in Mikrodienste aufgespalten werden sollte. Insbesondere kann das Mikrodienst-Aufspaltungsstrategiesystem 102 in verschiedenen Ausführungsformen ein oder mehrere unzusammenhängende Code-Cluster im Quellcode der monolithischen Anwendung 104 erfassen (z.B. durch Analysieren eines Code-Eigenschaftsgraphen, der die monolithische Anwendung 104 kennzeichnet), kann einen oder mehrere funktionale Zwecke identifizieren, die jeweils diesem einen oder diesen mehreren unzusammenhängenden Code-Clustern entsprechen (z.B. eine oder mehrere Aufgaben, Funktionen, Funktionalitäten und/oder Aktionen, die durch dieses eine oder diese mehreren unzusammenhängenden Code-Cluster ermöglicht werden), und kann einen oder mehrere Mikrodienste empfehlen, um jeweils dieses eine oder diese mehreren unzusammenhängenden Code-Cluster auf Grundlage des einen oder der mehreren funktionalen Zwecke zu ersetzen (z.B. kann ein unzusammenhängendes Code-Cluster, das eine spezielle Aufgabe, Funktion, Funktionalität und/oder Aktion ermöglicht, durch einen Mikrodienst ersetzt werden, der im Wesentlichen dieselbe Aufgabe, Funktion, Funktionalität und/oder Aktion ermöglicht).
  • In verschiedenen Ausführungsformen kann die monolithische Anwendung 104 jedes geeignete Computer-Softwareprogramm sein, das eine monolithische Architektur aufweist, gleichgültig, ob sie sich als Legacy-Anwendung qualifiziert.
  • In verschiedenen Ausführungsformen kann die monolithische Anwendung 104 einem technischen Dokumentenkorpus 106 und einem Geschäftsdokumentenkorpus 108 entsprechen und/oder zugehörig sein. Obwohl die Figuren das technische Dokumentenkorpus 106 und das Geschäftsdokumentenkorpus 108 so darstellen, dass sie in der monolithischen Anwendung gespeichert sind, sollte klar sein, dass dies nur als Beispiel, nicht einschränkend und zur einfacheren Veranschaulichung zu verstehen ist. In verschiedenen Ausführungsformen können das technische Dokumentenkorpus 106 und/oder das Geschäftsdokumentenkorpus 108 je nach Wunsch getrennt und/oder zusammen in jeder geeigneten zentralen und/oder verteilten Weise extern und/oder intern in der monolithischen Anwendung 104 gespeichert werden.
  • In verschiedenen Ausführungsformen kann das technische Dokumentenkorpus 106 eine Sammlung von Dokumenten sein, die technische und/oder Codierungs-Informationen in Bezug auf die monolithische Anwendung 104 darstellen und/oder enthalten. Zum Beispiel kann das technische Dokumentenkorpus 106 in einer oder mehreren Ausführungsformen Quelldateien und/oder Quellcode-Dateien, die der monolithischen Anwendung 104 entsprechen, Binärdateien und/oder Binärcode-Dateien, die der monolithischen Anwendung 104 entsprechen, Statistiken von ausgeführten Instanzen der monolithischen Anwendung 104, Anwendungsskripte, die der monolithischen Anwendung 104 entsprechen, Informationen, die in Code-Repositories gespeichert sind, die der monolithischen Anwendung 104 entsprechen, eine zeitliche Code-Weiterentwicklung (z.B. Änderungen des Quellcodes im Laufe der Zeit) der monolithischen Anwendung 104 umfassen, usw.
  • In verschiedenen Ausführungsformen kann das Geschäftsdokumentenkorpus 108 eine Sammlung von Dokumenten sein (z.B. Dokumente in natürlicher Sprache usw.), die Geschäftsinformationen, Schulungsinformationen, Fehlerbehebungsinformationen, erläuternde/argumentative Informationen und/oder nichttechnische Informationen usw. darstellen und/oder enthalten, die die monolithische Anwendung 104 betreffen. Zum Beispiel kann in einer oder mehreren Ausführungsformen das Geschäftsdokumentenkorpus 108 Entwurfsdokumente, die der monolithischen Anwendung 104 entsprechen, Benutzerdokumentationen und/oder Benutzerhandbücher, die der monolithischen Anwendung 104 entsprechen, Schulungs-/Fehlerbehebungsdokumentationen und/oder Schulungs-/Fehlerbehebungshandbücher, die der monolithischen Anwendung 104 entsprechen, README-Dateien und/oder -Seiten, die der monolithischen Anwendung entsprechen, GitHub-Dateien und/oder -Seiten, die der monolithischen Anwendung 104 entsprechen, Wiki-Dateien und/oder -Seiten, die der monolithischen Anwendung 104 entsprechen, umfassen usw.
  • In verschiedenen Ausführungsformen kann das Mikrodienst-Aufspaltungsstrategiesystem 102 einen Prozessor 110 (z.B. Computer-Verarbeitungseinheit, Mikroprozessor usw.) und einen durch einen Computer lesbaren Arbeitsspeicher 112 aufweisen, der betriebsfähig mit dem Prozessor 110 verbunden ist. Der Arbeitsspeicher 112 kann durch einen Computer ausführbare Anweisungen speichern, die bei Ausführung durch den Prozessor 110 den Prozessor 110 und/oder andere Komponenten des Mikrodienst-Aufspaltungssystems 102 (z.B. Graph-Komponente 114, Community-Erfassungskomponente 116, Thema-Modellierungskomponente 118, Mikrodienste-Komponente 120 usw.) veranlassen können, eine oder mehrere Handlungen durchzuführen. In verschiedenen Ausführungsformen kann der Arbeitsspeicher 112 durch einen Computer ausführbare Komponenten (z.B. Graph-Komponente 114, Community-Erfassungskomponente 116, Thema-Modellierungskomponente 118, Mikrodienste-Komponente 120 usw.) speichern, und der Prozessor 110 kann die durch einen Computer ausführbaren Komponenten ausführen.
  • In verschiedenen Ausführungsformen kann das Mikrodienst-Aufspaltungssystem 102 eine Graph-Komponente 114 aufweisen. In verschiedenen Ausführungsformen kann die Graph-Komponente 114 das technische Dokumentenkorpus 106 analysieren (z.B. den Quellcode und/oder Skripte der monolithischen Anwendung 104 usw. analysieren) und kann dementsprechend einen Code-Eigenschaftsgraphen generieren, der die monolithische Anwendung 104 auf Grundlage des technischen Dokumentenkorpus 106 kennzeichnet (z.B. auf Grundlage des Quellcodes und/oder der Skripte der monolithischen Anwendung 104). In verschiedenen Fällen kann die Graph-Komponente 114 aus dem Quellcode der monolithischen Anwendung 104 einen abstrakten Syntaxbaum, einen Steuerflussgraphen und einen Programmabhängigkeitsgraphen generieren, die jeweils einen anderen Aspekt der Struktur und/oder des Informationsflusses der monolithischen Anwendung 140 einschließen. In verschiedenen Fällen kann die Graph-Komponente 114 den abstrakten Syntaxbaum, den Steuerflussgraphen und den Programmabhängigkeitsgraphen zu einer einzelnen zusammenhängenden Datenstruktur kombinieren (z.B. den Code-Eigenschaftsgraphen). In verschiedenen Ausführungsformen kann der Code-Eigenschaftsgraph ein Multigraph sein, der gleichzeitig die Struktur, die Steuerflüsse und die Datenabhängigkeiten der monolithischen Anwendung 104 darstellt. In verschiedenen Fällen kann die Graph-Komponente 114 den Code-Eigenschaftsgraphen auf Grundlage einer zeitlichen Code-Weiterentwicklung der monolithischen Anwendung 104 ferner verstärken und/oder modifizieren (z.B. auf Grundlage von chronologischen Datensätzen aus einem Code-Repository, das Details enthält, welche Abschnitte des Quellcodes der monolithischen Anwendung104 zeitlich übereinstimmende Änderungen im Laufe der Zeit verzeichnet haben). In verschiedenen Fällen kann der verstärkte/modifizierte Code-Eigenschaftsgraph (z.B. die Knoten und Kanten in dem verstärkten/modifizierten Code-Eigenschaftsgraphen) analysiert werden, um zu bestimmen, welche Abschnitte des Quellcodes der monolithischen Anwendung 104 durch Mikrodienste ersetzt werden können und/oder sollten.
  • In verschiedenen Ausführungsformen kann das Mikrodienst-Aufspaltungsstrategiesystem 102 eine Community-Erfassungskomponente 116 aufweisen. In verschiedenen Ausführungsformen kann die Community-Erfassungskomponente 116 den verstärkten/modifizierten Code-Eigenschaftsgraphen analysieren und kann ein oder mehrere unzusammenhängende Code-Cluster in dem Quellcode der monolithischen Anwendung 104 erfassen und/oder identifizieren. Insbesondere kann die Community-Erfassungskomponente 116 Graphentheorie-Techniken einsetzen, um einen oder mehrere unzusammenhängende Knoten-Cluster in dem verstärkten/modifizierten Code-Eigenschaftsgraphen zu erfassen (z.B. ein Cluster von Knoten in dem Graphen, das mittels Kantendichte eine ausreichende hohe Zusammengehörigkeit zueinander und/oder eine ausreichend schwache Verbindung mit anderen Knoten-Clustern aufweist). Da die Knoten und Kanten des Code-Eigenschaftsgraphen tatsächlichen Abschnitten und/oder Zeilen von Code in dem Quellcode der monolithischen Anwendung 104 entsprechen und/oder diese darstellen können, kann die Erfassung von unzusammenhängenden Knoten-Clustern in dem Code-Eigenschaftsgraphen der Erfassung von unzusammenhängenden Code-Clustern in dem Quellcode selbst entsprechen. In verschiedenen Fällen kann die Community-Erfassungskomponente 116 eine derartige Erfassung von unzusammenhängenden Code-Clustern mittels einer geeigneten mathematischen und/oder statistischen Technik ermöglichen (z.B. Louvain-Algorithmus, Beschriftungspropagierungs-Algorithmus, Algorithmus für verbundene Komponenten, Algorithmus für stark verbundene Komponenten, Dreieckzählungs-Algorithmus, Clusterbildungskoeffizienz-Algorithmus, Algorithmus für ausgewogene Dreiergruppen usw.).
  • In verschiedenen Ausführungsformen kann das Mikrodienst-Aufspaltungsstrategiesystem 102 eine Thema-Modellierungskomponente 118 aufweisen. In verschiedenen Ausführungsformen kann die Thema-Modellierungskomponente 118 das Geschäftsdokumentenkorpus 108 analysieren (z.B. die Entwurfsdokumente, Benutzerdokumentationen/Handbücher und/oder GitHub-Dateien usw. analysieren), und kann dementsprechend einen oder mehrere funktionale Zwecke identifizieren, die dem einen oder den mehreren erfassten unzusammenhängenden Code-Clustern in dem Quellcode der monolithischen Anwendung 104 entsprechen. Insbesondere kann die Thema-Modellierungskomponente 118 den Text in natürlicher Sprache analysieren, der in dem Geschäftsdokumentenkorpus 108 enthalten ist, um eine bestimmte Aufgabe, Funktion, Funktionalität und/oder Aktion zu bestimmen, die durch jedes der unzusammenhängenden Code-Cluster durchgeführt und/oder ermöglicht werden, die durch die Community-Erfassungskomponente 116 erfasst wurden. Wenn die Community-Erfassungskomponente 116 zum Beispiel drei unzusammenhängende Code-Cluster A, B und C in dem Quellcode der monolithischen Anwendung 104 erfasst, kann die Thema-Modellierungskomponente 118 das Geschäftsdokumentenkorpus 108 analysieren, um zu bestimmen, was jedes der drei unzusammenhängenden Code-Cluster A, B und C tut. In einem nicht einschränkenden Beispiel kann die Thema-Modellierungskomponente 118 auf Grundlage eines Analysierens eines Benutzerhandbuchs, einer README-Datei und/oder so weiter, die der monolithischen Anwendung 104 entsprechen, bestimmen und/oder ableiten, dass das unzusammenhängende Code-Cluster A eine Benutzerauthentifizierungs-Funktionalität ermöglicht, dass das unzusammenhängende Code-Cluster B eine Funktionalität für Fehlertoleranz, Validierung und/oder Verwechslungssicherheit ermöglicht, und dass das unzusammenhängende Code-Cluster C eine Sicherheitsprüfungs-Funktionalität ermöglicht. In verschiedenen Fällen kann die Thema-Modellierungskomponente 118 eine derartige Identifizierung, Bestimmung und/oder Ableitung der funktionalen Zwecke der erfassten unzusammenhängenden Code-Cluster mittels jeder geeigneten mathematischen und/oder statistischen Technik ermöglichen (z.B. latenter Dirichlet-Zuweisungsalgorithmus usw.).
  • In verschiedenen Ausführungsformen kann das Mikrodienst-Aufspaltungsstrategiesystem 102 eine Mikrodienste-Komponente 120 aufweisen. In verschiedenen Ausführungsformen kann die Mikrodienste-Komponente 120 einen oder mehrere Mikrodienste empfehlen, um das eine oder die mehreren unzusammenhängenden Code-Cluster zu ersetzen, die durch die Community-Erfassungskomponente 116 auf Grundlage des einen oder der mehreren funktionalen Zwecke erfasst wurden, die durch die Thema-Modellierungskomponente 118 identifiziert wurden. In verschiedenen Fällen kann ein unzusammenhängendes Code-Cluster, das eine bestimmte Aufgabe, Funktion, Funktionalität und/oder Aktion durchführt und/oder ermöglicht, durch einen Mikrodienst ersetzt (z.B. aufgespalten) werden, der im Wesentlichen dieselbe bestimmte Aufgabe, Funktion, Funktionalität und/oder Aktion durchführt und/oder ermöglicht. In der Fortsetzung des oben genannten Beispiels, in dem die Thema-Modellierungskomponente 118 bestimmt, dass das unzusammenhängende Code-Cluster A eine Benutzerauthentifizierungs-Funktionalität ermöglicht, kann die Mikrodienste-Komponente 120 empfehlen, dass das unzusammenhängende Code-Cluster A durch einen Mikrodienst ersetzt wird, der die Benutzerauthentifizierung ermöglicht. Da die Thema-Modellierungskomponente 118 des Weiteren bestimmt, dass das unzusammenhängende Code-Cluster B eine Funktionalität für Fehlertoleranz, Validierung und/oder Verwechslungssicherheit ermöglicht, kann die Mikrodienste-Komponente 120 empfehlen, dass das unzusammenhängende Code-Cluster B durch einen Mikrodienst ersetzt wird, der eine Verwechslungssicherheit ermöglicht. Da die Thema-Modellierungskomponente 118 ferner bestimmt, dass das unzusammenhängende Code-Cluster C eine Sicherheitsüberprüfungs-Funktionalität ermöglicht, kann die Mikrodienste-Komponente 120 empfehlen, dass das unzusammenhängende Code-Cluster C durch einen Mikrodienst ersetzt wird, der eine Sicherheitsüberprüfung ermöglicht. In verschiedenen Ausführungsformen kann die Mikrodienste-Komponente 120 dem Benutzer/Anwender der monolithischen Anwendung 102 nicht nur eine Aufspaltungsstrategie empfehlen, sondern auch eine derartige Aufspaltungsstrategie umsetzen. In der Fortsetzung des oben genannten Beispiels kann die Mikrodienste-Komponente 120 in verschiedenen Fällen das unzusammenhängende Code-Cluster A in dem Quellcode der monolithischen Anwendung 104 funktionslos machen (z.B. durch automatisches Löschen und/oder Auskommentieren der Zeilen von Quellcode, die das unzusammenhängende Code-Cluster A aufweisen), und kann automatisch mit einem Anbieter/Händler von Mikrodiensten kommunizieren, um einen Mikrodienst zu bestellen, zu kaufen, zu mieten und/oder anderweitig zu beschaffen, der die Benutzerauthentifizierung ermöglicht. In verschiedenen Ausführungsformen kann die Mikrodienste-Komponente 120 ähnliche Aktionen in Bezug auf die anderen unzusammenhängenden Code-Cluster durchführen (z.B. kann sie die unzusammenhängenden Code-Cluster B und C funktionslos machen und kann dementsprechend automatisch mit einem Anbieter/Händler von Mikrodiensten kommunizieren, um Mikrodienste zu bestellen, zu kaufen, zu mieten und/oder anderweitig zu beschaffen, die Verwechslungssicherheit und/oder Sicherheitsprüfung ermöglichen.
  • Als nicht einschränkende und beispielhafte Übersichtszusammenfassung von 1 kann die monolithische Anwendung 104 ein Computer-Softwareprogramm sein, das einem technischen Dokumentenkorpus 106 (z.B. Quellcode-Dateien usw.) und einem Geschäftsdokumentenkorpus 108 (z.B. Benutzerdokumentationen/Handbücher, README-Dateien usw.) zugehörig ist. In verschiedenen Fällen kann das Mikrodienst-Aufspaltungsstrategiesystem 102 als Eingabe das technische Dokumentenkorpus 106 und das Geschäftsdokumentenkorpus 108 empfangen, und kann als Ausgabe eine Empfehlung erzeugen, die einen oder mehrere Mikrodienste identifiziert und die die speziellen Zeilen und/oder Abschnitte von Quellcode der monolithischen Anwendung 104 identifiziert, die durch diese identifizierten Mikrodienste ersetzt werden können und/oder sollten. Das Mikrodienst-Aufspaltungsstrategiesystem 102 kann eine derartige Empfehlung ermöglichen durch: (i) Generieren eines Code-Eigenschaftsgraphen, der die monolithische Anwendung 104 beschreibt/charakterisiert; (ii) Erfassen von Kandidaten (z.B. unzusammenhängende Code-Cluster) für eine Mikrodienst-Aufspaltung in dem Quellcode durch Durchführen einer Community-Erfassung an dem Code-Eigenschaftsgraphen; (iii) Identifizieren von Aufgaben/Aktionen (z.B. funktionale Zwecke), die durch diese erfassten Kandidaten durchgeführt werden, und (iv) Identifizieren und/oder Beschaffen von Mikrodiensten, die diese identifizierten Aufgaben/Aktionen durchführen/ermöglichen. Insbesondere kann das Mikrodienst-Aufspaltungsstrategiesystem 102 mittels der Graph-Komponente 114 einen Code-Eigenschaftsgraphen generieren, der die Struktur, Steuerflüsse und Datenabhängigkeiten der monolithischen Anwendung 104 beschreibt. Wie oben beschrieben, kann der Code-Eigenschaftsgraph auf Grundlage einer automatisierten Analyse des technischen Dokumentenkorpus 106 generiert werden (z.B. auf Grundlage des Quellcodes). Auf Grundlage dieses Code-Eigenschaftsgraphen kann das Mikrodienst-Aufspaltungsstrategiesystem 102 mittels der Community-Erfassungskomponente 116 ein oder mehrere unzusammenhängende Code-Cluster in dem Quellcode der monolithischen Anwendung 104 erfassen. Wie oben erwähnt, können die Knoten und Kanten des Code-Eigenschaftsgraphen Zeilen von Code und/oder Abschnitten von Code in dem Quellcode der monolithischen Anwendung 104 entsprechen und/oder diese darstellen. Somit kann ein Erfassen von unzusammenhängenden Clustern von Knoten in dem Code-Eigenschaftsgraphen mittels der Community-Erfassungskomponente 116 einem Erfassen von unzusammenhängenden Clustern von Code in dem Quellcode selbst entsprechen. Das Mikrodienst-Aufspaltungsstrategiesystem 102 kann mittels der Thema-Modellierungskomponente 118 einen oder mehrere funktionale Zwecke identifizieren, die durch das eine oder die mehreren Code-Cluster der monolithischen Anwendung 104 durchgeführt werden. Wie oben erläutert, kann dies auf Grundlage einer automatisierten Analyse des Geschäftsdokumentenkorpus 108 erfolgen. Schließlich kann das Mikrodienst-Aufspaltungsstrategiesystem 102 durch die Mikrodienste-Komponente 120 einen oder mehrere Mikrodienste vorschlagen, um das eine oder die mehreren unzusammenhängenden Code-Cluster auf Grundlage des einen oder der mehreren funktionalen Zwecke zu ersetzen (z.B. kann ein unzusammenhängendes Code-Cluster, das eine Aktion X durchführt, durch einen Mikrodienst ersetzt werden, der die Aktion X durchführt).
  • 2 veranschaulicht einen Ablaufübersichtsplan eines beispielhaften, nicht einschränkenden, durch einen Computer umgesetzten Verfahrens 200, das eine automatisierte Empfehlung von Mikrodienst-Aufspaltungsstrategien für monolithische Anwendungen gemäß einer oder mehreren hierin beschriebenen Ausführungsformen ermöglichen kann. In verschiedenen Ausführungsformen kann das durch den Computer umgesetzte Verfahren 200 durch das System 100 durchgeführt werden.
  • In verschiedenen Ausführungsformen kann eine Handlung 202 ein Sammeln, durch eine mit einem Prozessor betriebsfähig verbundene Einheit (z.B. durch die Graph-Komponente 114), von technischen Daten (z.B. das technische Dokumentenkorpus 106) einer monolithischen Anwendung umfassen (z.B. die monolithische Anwendung 104). In verschiedenen Fällen können die technischen Daten zum Beispiel Quellcode, Binärcode, Anwendungsskripte, Statistiken zu ausgeführten Instanzen, verschiedene Varianten/Konfigurationen der Anwendung usw. umfassen.
  • In verschiedenen Fällen kann eine Handlung 204 ein Generieren eines Code-Eigenschaftsgraphen auf Grundlage der technischen Daten durch die Einheit (z.B. durch die Graph-Komponente 114) umfassen.
  • In verschiedenen Ausführungsformen kann eine Handlung 206 ein Verstärken durch die Einheit (z.B. die Graph-Komponente 114) des Code-Eigenschaftsgraphen auf Grundlage einer zeitlichen Code-Weiterentwicklung der monolithischen Anwendung umfassen (z.B. auf Grundlage von übereinstimmenden Änderungen an dem Quellcode im Laufe der Zeit).
  • In verschiedenen Ausführungsformen kann eine Handlung 208 ein Durchführen durch die Einheit (z.B. durch die Community-Erfassungskomponente 116) einer Community-Erfassung auf dem Code-Eigenschaftsgraphen umfassen, um unzusammenhängende Code-Cluster in dem Quellcode der monolithischen Anwendung zu erfassen. In verschiedenen Fällen können die unzusammenhängenden Code-Cluster als Kandidaten für eine Mikrodienst-Aufspaltung betrachtet werden (z.B. Abschnitte von Quellcode, die potenziell durch Mikrodienste ersetzt werden können).
  • In verschiedenen Fällen kann eine Handlung 210 ein Sammeln, durch die Einheit (z.B. durch die Thema-Modellierungskomponente 118), von Geschäftsdaten (z.B. das Geschäftsdokumentenkorpus 108) der monolithischen Anwendung umfassen. In verschiedenen Fällen können die Geschäftsdaten zum Beispiel Entwurfsdokumente, Benutzerdokumentationen, Code-Anmerkungen, README-Dateien, Wiki-Dateien, GitHub-Dateien usw. umfassen.
  • In verschiedenen Ausführungsformen kann eine Handlung 212 ein Durchführen einer Thema-Modellierung auf Grundlage der Geschäftsdaten durch die Einheit (z.B. durch die Thema-Modellierungskomponente 118) umfassen, um funktionale Zwecke der unzusammenhängenden Code-Cluster zu identifizieren (z.B. Aufgaben, Funktionen, Funktionalitäten und/oder Aktionen, die durch die unzusammenhängenden Code-Cluster durchgeführt werden).
  • In verschiedenen Ausführungsformen kann eine Handlung 214 ein Empfehlen von Mikrodiensten durch die Einheit (z.B. durch die Mikrodienste-Komponente 120) umfassen, die unzusammenhängende Code-Cluster auf Grundlage der funktionalen Zwecke ersetzen kann (z.B. kann ein unzusammenhängendes Code-Cluster, das die Aufgabe Y ermöglicht, durch einen Mikrodienst ersetzt werden, der die Aufgabe Y ermöglicht).
  • 3 veranschaulicht ein Blockschaubild eines beispielhaften, nicht einschränkenden Systems 300 mit einem Code-Eigenschaftsgraphen, das eine automatisierte Empfehlung von Mikrodienst-Aufspaltungsstrategien für monolithische Anwendungen gemäß einer oder mehreren hierin beschriebenen Ausführungsformen ermöglichen kann. Wie gezeigt, kann das System 300 in verschiedenen Ausführungsformen dieselben Komponenten wie das System 100 umfassen und kann ferner einen Code-Eigenschaftsgraphen 306 aufweisen.
  • Wie in verschiedenen Ausführungsformen gezeigt, kann das technische Dokumentkorpus 106 einen Quellcode 302 und/oder eine zeitliche Code-Weiterentwicklung 304 aufweisen. In verschiedenen Fällen kann der Quellcode 302 jede geeignete Sammlung von Computercode, mit und/oder ohne Kommentare, in jeder geeigneten, von einem Menschen lesbaren Programmiersprache geschrieben sein (z.B. C, C++, Python usw.), der die computerisierten Aktionen/Funktionen spezifiziert, die durch die monolithische Anwendung 104 durchzuführen sind. In verschiedenen Ausführungsformen kann der Quellcode 302 die Programmierskripte sein (z.B. die For-Schleifen, If-Schleifen, While-Schleifen, Funktionsdefinitionen, variable Definitionen und/oder Initialisierungen, Berechnungen usw. enthalten), die die monolithische Anwendung 104 definieren.
  • In verschiedenen Ausführungsformen kann die Graph-Komponente 114 mittels aller im Stand der Technik bekannten geeigneten Techniken den Quellcode 302 empfangen und/oder analysieren, und kann dementsprechend mittels aller im Stand der Technik bekannten geeigneten Techniken den Code-Eigenschaftsgraphen 302 auf Grundlage des Quellcodes 302 generieren. Der Code-Eigenschaftsgraph 306 kann in verschiedenen Ausführungsformen eine Kombination aus einem abstrakten Syntaxbaum 308, einem Steuerflussgraphen 310 und einem Programmabhängigkeitsgraphen 312 sein, die jeweils dem Quellcode 302 der monolithischen Anwendung 104 entsprechen oder diesen kennzeichnen. In verschiedenen Fällen kann der abstrakte Syntaxbaum 308 ein geordneter Baum mit inneren Knoten, die Operatoren darstellen (z.B. Additionen, Zuweisungen usw.) und Blattknoten sein, die Operanden darstellen (z.B. Konstanten, Kennungen usw.). Der abstrakte Syntaxbaum 308 kann encodieren und/oder anzeigen, wie die Anweisungen und/oder Ausdrücke in dem Quellcode 302 verschachtelt sind. In verschiedenen Fällen kann der Steuerflussgraph 310 explizit die Reihenfolge beschreiben und/oder anzeigen, in der Code-Anweisungen ausgeführt werden und in denen Berechnungsbedingungen in dem Quellcode 302 erfüllt werden müssen. In verschiedenen Ausführungsformen kann der Steuerflussgraph 310 Knoten haben, die Anweisungen und/oder Prädikate darstellen, die durch Kanten verbunden werden können, um eine Übertragung der Steuerung zu verdeutlichen. In verschiedenen Fällen kann der Programmabhängigkeitsgraph 312 explizit Abhängigkeiten zwischen Anweisungen und Prädikaten darstellen, und kann alle Anweisungen und/oder Prädikate in dem Quellcode 302 darstellen und/oder zeigen, die sich auf den Wert jeder bestimmten Variablen an einer spezifizierten Anweisung auswirken. In verschiedenen Ausführungsformen kann der Programmabhängigkeitsgraph 312 Kanten aufweisen, die Datenabhängigkeiten darstellen, sowie Kanten, die Steuerabhängigkeiten darstellen. In verschiedenen Ausführungsformen kann die Graph-Komponente 114 durch Verwenden aller im Stand der Technik bekannten geeigneten Techniken den abstrakten Syntaxbaum 308 auf Grundlage des Quellcodes 302 generieren, kann den Steuerflussgraphen 310 auf Grundlage des abstrakten Syntaxbaums 308 generieren, und kann den Programmabhängigkeitsgraphen 312 auf Grundlage des Steuerflussgraphen 310 generieren. In verschiedenen Ausführungsformen kann die Graph-Komponente 114 den abstrakten Syntaxbaum 308, den Steuerflussgraphen 310 und den Programmabhängigkeitsgraphen 312 mittels aller im Stand der Technik bekannten geeigneten Techniken zu einer einzelnen zusammenhängenden Datenstruktur kombinieren (z.B. den Code-Eigenschaftsgraphen 306).
  • Das heißt, dass in verschiedenen Ausführungsformen die Graph-Komponente 114 den Quellcode 302 als Eingabe empfangen kann und den Code-Eigenschaftsgraphen 306 als Ausgabe erzeugen kann, der gleichzeitig die Struktur, die Steuerflüsse und die Datenabhängigkeiten des Quellcodes 302 darstellen kann. In verschiedenen Ausführungsformen kann der Code-Eigenschaftsgraph 306 Knoten und/oder Kanten enthalten, die verschiedene Zeilen, Abschnitte und/oder Segmente von Code in dem Quellcode 302 darstellen. In verschiedenen Fällen kann der Code-Eigenschaftsgraph 306 analysiert werden (z.B. mittels Graphentheorie-Techniken), um Zeilen, Abschnitte und/oder Segmente von Code in dem Quellcode 302 zu identifizieren, die von Interesse sind (um z.B. Kandidaten für eine Mikrodienst-Aufspaltung zu erfassen).
  • Wie oben erläutert, kann die Graph-Komponente 114 in verschiedenen Ausführungsformen Kantengewichtungen und/oder Eigenschaften des Code-Eigenschaftsgraphen 306 auf Grundlage der zeitlichen Code-Weiterentwicklung 304 modifizieren und/oder verstärken. In verschiedenen Fällen kann die zeitliche Code-Weiterentwicklung 304 jedes geeignete Dokument, jede Zeitleiste und/oder Chronologie sein, die vergangene Änderungen im Laufe der Zeit an dem Quellcode 302 aufzeichnet, speichert und/oder anderweitig angibt. Zum Beispiel soll angenommen werden, dass der Quellcode 302 einen Code-Abschnitt X (z.B. eine erste Gruppierung von Code-Zeilen in dem Quellcode 302), einen Code-Abschnitt Y (z.B. eine zweite Gruppierung von Code-Zeilen in dem Quellcode 302) und einen Code-Abschnitt Z (z.B. eine dritte Gruppierung von Code-Zeilen in dem Quellcode 302) enthält. Schließlich kann die zeitliche Code-Weiterentwicklung 304 ein Dokument sein, das angibt, wann der Quellcode 302 in der Vergangenheit abgeändert/aktualisiert wurde, wobei der Code-Abschnitt X und der Code-Abschnitt Y aus historischer Sicht zur selben Zeit, im Wesentlichen zur selben Zeit und/oder zu ähnlichen Zeitpunkten geändert worden sind (z.B. am selben Tag geändert worden sind). Aus diesen Informationen kann abgeleitet werden, dass der Code-Abschnitt Y und der Code-Abschnitt Y stark zusammenhängend sind und/oder eng miteinander verbunden sind, oder dass sie zumindest einander enger zugehörig sind als dies der Fall wäre, wenn sie aus historischer Sicht zu im Allgemeinen verschiedenen Zeitpunkten geändert worden wären. Somit kann es während einer anschließenden Community-Erfassung in verschiedenen Fällen Sinn machen, den Code-Abschnitt X und den Code-Abschnitt Y als ein einzelnes unzusammenhängendes Code-Cluster statt als zwei getrennte unzusammenhängende Code-Cluster zu behandeln. In ähnlicher Weise kann die zeitliche Code-Weiterentwicklung 304 angeben, wann der Quellcode 302 in der Vergangenheit abgeändert/aktualisiert wurde, wobei der Code-Abschnitt Y und der Code-Abschnitt Z aus historischer Sicht zu im Wesentlichen verschiedenen Zeitpunkten geändert worden sind (z.B. an verschiedenen Tagen geändert worden sind). Aus diesen Informationen kann abgeleitet werden, dass der Code-Abschnitt Y und der Code-Abschnitt Z nicht stark zusammenhängend und/oder nicht eng miteinander verbunden sind, oder dass sie zumindest einander weniger eng zugehörig sind als dies der Fall wäre, wenn sie aus historischer Sicht zur im Allgemeinen selben Zeit geändert worden wären. Somit kann es während einer anschließenden Community-Erfassung in verschiedenen Fällen Sinn machen, den Code-Abschnitt Y und den Code-Abschnitt Z in getrennte unzusammenhängende Code-Cluster zu gruppieren statt in dasselbe unzusammenhängende Code-Cluster zu gruppieren. In verschiedenen Ausführungsformen kann die Graph-Komponente 114 Kantengewichtungen des Code-Eigenschaftsgraphen 306 verstärken, um eine derartige Zusammengehörigkeit wiederzugeben (z.B. Verstärken von Kantengewichtungen zwischen Knoten, die den Code-Abschnitt X darstellen, und Knoten, die den Code-Abschnitt Y darstellen, um deren höhere Zusammengehörigkeit wiederzugeben, und Kantengewichtungen zwischen Knoten zu verringern, die den Code-Abschnitt Y darstellen, und Knoten, die den Code-Abschnitt Z darstellen, um ihre geringere Zusammengehörigkeit wiederzugeben. In einigen Fällen kann die Graph-Komponente 114 ganze Kanten aus dem Code-Eigenschaftsgraphen 306 insgesamt hinzufügen und/oder abziehen. In verschiedenen Fällen kann die anschließende Community-Erfassung durch eine derartige Verstärkung und/oder Modifizierung des Code-Eigenschaftsgraphen 306 verbessert und/oder erweitert werden (z.B. können die Informationen aus der zeitlichen Code-Weiterentwicklung 304 ein Sicherstellen unterstützen, dass der Quellcode 302 genau und/oder sinnvoll durch die Community-Erfassungskomponente 116 gruppiert wird). In verschiedenen Fällen kann die zeitliche Code-Weiterentwicklung 304 in einem oder mehreren Code-Repositories gespeichert und/oder aus einem oder mehreren Code-Repositories erhalten werden, die der monolithischen Anwendung 104 entsprechen.
  • 4 veranschaulicht ein Blockschaubild eines beispielhaften, nicht einschränkenden Systems 400 mit einem Community-Erfassungsalgorithmus, das eine automatisierte Empfehlung von Mikrodienst-Aufspaltungsstrategien für monolithische Anwendungen gemäß einer oder mehreren hierin beschriebenen Ausführungsformen ermöglichen kann. Wie gezeigt, kann das System 400 in verschiedenen Ausführungsformen dieselben Komponenten wie das System 300 aufweisen und kann ferner einen Community-Erfassungsalgorithmus 402 aufweisen.
  • In verschiedenen Ausführungsformen kann der Community-Erfassungsalgorithmus 402 jeder geeignete Algorithmus für Maschinenlernen, Deep Learning und/oder Mustererkennung sein, der den Code-Eigenschaftsgraphen 306 analysieren kann und dementsprechend die Nichtzusammengehörigkeit und/oder Verbundenheit der Knoten in dem Code-Eigenschaftsgraphen 306 auf Grundlage der Kanten bestimmen kann, die die Knoten in dem Code-Eigenschaftsgraphen 306 verbinden. Da die verschiedenen Knoten in dem Code-Eigenschaftsgraphen 306 verschiedenen Abschnitten von Code in dem Quellcode 302 entsprechen können, kann ein Bestimmen der Nichtzusammengehörigkeit und/oder Verbundenheit der Knoten in dem Code-Eigenschaftsgraphen 306 einem Bestimmen der Nichtzusammengehörigkeit und/oder Verbundenheit von verschiedenen Abschnitten von Code in dem Quellcode 302 entsprechen. Mit anderen Worten, die Community-Erfassungskomponente 116 kann den Code-Eigenschaftsgraphen 306 mittels des Community-Erfassungsalgorithmus 402 analysieren, was zur Erfassung und/oder Identifizierung von verschiedenen unzusammenhängenden Knoten-Communities in dem Code-Eigenschaftsgraphen 306 führen kann, wobei unzusammenhängende Knoten-Communities entsprechende unzusammenhängende Code-Communities in dem Quellcode 302 darstellen. In verschiedenen Fällen kann das unzusammenhängende Code-Cluster 404 als eine der erfassten/identifizierten Code-Communities in dem Quellcode 302 betrachtet werden. In verschiedenen Fällen kann das unzusammenhängende Code-Cluster 404 (und/oder alle anderen der unzusammenhängenden Communities/Cluster des Codes, die erfasst/identifiziert werden) als Kandidat für eine Mikrodienst-Aufspaltung betrachtet werden (z.B. als ein Abschnitt des Quellcodes 302, der potenziell durch einen Mikrodienst ersetzt werden kann).
  • In verschiedenen Ausführungsformen kann der Community-Erfassungsalgorithmus 402 Parameter wie Untergrenzenstufe, Community-Größe usw. übernehmen. In verschiedenen Ausführungsformen können erfasste/identifizierte Communities potenziell in feinkörnigere Communities mit benutzerdefinierten Parametern aufgegliedert werden. In verschiedenen Fällen kann der Community-Erfassungsalgorithmus 402 auswerten, wie eine Gruppe (z.B. eine Gruppe von Knoten in dem Code-Eigenschaftsgraphen 306, die eine entsprechende Gruppe von Code in dem Quellcode 302 darstellt) geclustert und/oder partitioniert wird, sowie ihre Tendenz zu einer Verstärkung und/oder einem Auseinanderfallen. In verschiedenen Fällen kann der Community-Erfassungsalgorithmus 402 jede geeignete mathematische und/oder statistische Technik umfassen, um eine Community-Erfassung zu ermöglichen (z.B. Louvain-Algorithmus, Beschriftungspropagierungs-Algorithmus, Algorithmus für verbundene Komponenten, Algorithmus für stark verbundene Komponenten, Dreieckzählungs-Algorithmus, Clusterbildungskoeffizienz-Algorithmus, Algorithmus für ausgewogene Dreiergruppen usw.).
  • In verschiedenen Ausführungsformen können andere Techniken für Maschinenlernen und/oder künstliche Intelligenz umgesetzt werden. Verschiedene Ausführungsformen der vorliegenden Erfindung hierin können künstliche Intelligenz (Kl) nutzen, um ein Automatisieren von einem oder mehreren Merkmalen der vorliegenden Erfindung zu ermöglichen. Die Komponenten können verschiedene Schemas auf Grundlage künstlicher Intelligenz zum Ausführen verschiedener hierin offenbarter Ausführungsformen/Beispiele verwenden. Zum Bereitstellen oder Unterstützen der zahlreichen hierin beschriebenen Bestimmungen (z.B. bestimmen, ermitteln, ableiten, berechnen, vorhersagen, prognostizieren, schätzen, herleiten, voraussagen, erfassen, berechnen usw.) der vorliegenden Bestimmung können Komponenten der vorliegenden Erfindung die Gesamtheit oder eine Teilmenge der Daten untersuchen, auf die ihnen Zugriff gewährt wird, und können eine Begründung für oder Bestimmung der Zustände des Systems, der Umgebung usw. aus einer Gruppe von Beobachtungen bereitstellen, die mittels Ereignissen und/oder Daten erfasst wurden. Bestimmungen können zum Beispiel verwendet werden, um einen spezifischen Kontext oder eine Aktion zu identifizieren oder können eine Wahrscheinlichkeitsverteilung über Zustände generieren Die Bestimmungen können probabilistisch sein; d.h. die Berechnung einer Wahrscheinlichkeitsverteilung über Zustände, die von Interesse sind, beruht auf einer Berücksichtigung von Daten und Ereignissen. Bestimmungen können sich auch auf Techniken beziehen, die zum Zusammenstellen von Ereignissen einer höheren Ebene aus einer Gruppe von Ereignissen und/oder Daten verwendet werden.
  • Derartige Bestimmungen können zur Erstellung von neuen Ereignissen oder Aktionen aus einer Gruppe von beobachteten Ereignissen und/oder gespeicherten Ereignisdaten führen, gleichgültig, ob die Ereignisse in großer zeitlicher Nähe korreliert sind, und ob die Ereignisse und Daten von einer oder mehreren Ereignis- und Datenquellen stammen. Die hierin offenbarten Komponenten können verschiedene Klassifizierungsschemas (explizit geschult (z.B. über Schulungsdaten) sowie implizit geschult (z.B. über Beobachtung von Verhalten, Präferenzen, historischen Informationen, Empfang von extrinsischen Informationen usw.)) und/oder -systeme (z.B. Support-Vektor-Maschinen, neuronale Netzwerke, Expertensysteme, Bayes'sche Belief Networks, Fuzzy-Logik, Datenfusions-Engines usw.) in Verbindung mit einem Durchführen von automatischer und/oder bestimmter Aktion in Verbindung mit dem beanspruchten Erfindungsgegenstand verwenden. Somit können Klassifizierungsschemas und/oder -systeme verwendet werden, um automatisch eine Reihe von Funktionen, Aktionen und/oder Bestimmungen zu erlernen und durchzuführen.
  • Ein Klassifizierer kann einen eingegebenen Attributvektor, z = (z1, z2, z3, z4, zn), einer Konfidenz, zu der die Eingabe gehört, einer Klasse zuordnen wie beispielsweise durch f(z) = confidence(class). Eine derartige Klassifizierung kann eine probabilistische und/oder auf einer Statistik beruhende Analyse verwenden (z.B. durch Berücksichtigen der Analysedienstprogramme und Kosten), um eine Aktion zu bestimmen, die automatisch durchgeführt werden soll. Eine Support-Vektor-Maschine (SVM) kann ein Beispiel für einen Klassifizierer sein, der verwendet werden kann. Die SVM arbeitet, indem eine Hyperfläche in dem Raum von möglichen Eingaben gesucht wird, wobei die Hyperfläche versucht, die auslösenden Kriterien von den nicht auslösenden Ereignissen abzutrennen Dadurch wird die Klassifizierung intuitiv für Testdaten korrekt, die Schulungsdaten nahekommen, aber nicht damit identisch sind. Andere gerichtete und ungerichtete Modell-Klassifizierungsansätze enthalten z.B. Naive Bayes, Netzwerke nach Bayes, Entscheidungsbäume, neuronale Netzwerke, Fuzzy-Logikmodelle, und/oder probabilistische Klassifizierungsmodelle, die verschiedene Unabhängigkeitsmuster bereitstellen, von denen jedes verwendet werden kann. Klassifizierung, wie hierin verwendet, umfasst auch statistische Regression, die zum Entwickeln von Prioritätsmodellen verwendet wird,
  • 5 veranschaulicht ein Blockschaubild eines beispielhaften, nicht einschränkenden unzusammenhängenden Code-Clusters in einem beispielhaften nicht einschränkenden Code-Eigenschaftsgraphen, der eine automatisierte Empfehlung von Mikrodienst-Aufspaltungsstrategien für monolithische Anwendungen gemäß einer oder mehreren hierin beschriebenen Ausführungsformen ermöglichen kann.
  • 5 stellt eine beispielhafte visuelle Darstellung des Code-Eigenschaftsgraphen 306 dar. Wie gezeigt, kann der Code-Eigenschaftsgraph 306 zahlreiche Knoten (z.B. die kleinen Kreise in 5) und zahlreiche Kanten aufweisen, die die Knoten verbinden (z.B. die geraden und/oder gekrümmten Linien, die die kleinen Kreise in 5 verbinden). Wie oben erläutert, kann der Community-Erfassungsalgorithmus 402 unzusammenhängende Cluster von Knoten in dem Code-Eigenschaftsgraphen 306 erfassen und/oder identifizieren, die jeweils unzusammenhängenden Code-Clustern in dem Quellcode 302 entsprechen können. Die unzusammenhängenden Cluster von Knoten können diejenigen Communities von Knoten sein, die eine ausreichend starke interne Zusammengehörigkeit und eine ausreichend geringe externe Verbindung aufweisen (wie z.B. durch Kantendichte gemessen). Wie gezeigt, stellt 5 mindestens zwei unzusammenhängende Cluster von Knoten dar: eine Knotengruppierung 502 und eine Knotengruppierung 504. Die Gruppierung 502 ist eine Community von Knoten, die eine starke interne Zusammengehörigkeit (z.B. sind alle Knoten in der Gruppierung 502 direkt und/oder indirekt miteinander verbunden) und eine geringe externe Verbindung aufweisen (z.B. sind die Knoten in der Gruppierung 502 nicht signifikant direkt und/oder indirekt mit Knoten außerhalb der Gruppierung 502 verbunden). Aus ähnlichen Gründen können die Knoten in der Gruppierung 504 auch als unzusammenhängendes Cluster von Knoten betrachtet werden. Wie oben erwähnt, können diese unzusammenhängenden Cluster von Knoten unzusammenhängenden Code-Clustern in dem Quellcode 302 entsprechen und/oder solche darstellen (z.B. kann die Gruppierung 502 in dem Code-Eigenschaftsgraphen 306 das unzusammenhängende Code-Cluster 404 in dem Quellcode 302 darstellen). Im Gegensatz dazu kann die Gruppierung der Knoten 506 in einigen Fällen nicht als unzusammenhängendes Cluster von Knoten betrachtet werden (und somit würde die Code-Gruppierung in dem Quellcode 302, die der Gruppierung 506 entspricht, wahrscheinlich nicht als ein unzusammenhängendes Code-Cluster und/oder als ein Kandidat für eine Mikrodienst-Aufspaltung betrachtet werden. Der Grund hierfür ist, obwohl die Knoten in der Gruppierung 506 eine starke interne Zusammengehörigkeit aufweisen (sie sind z.B. signifikant direkt und/oder indirekt miteinander verbunden), dass sie ebenso eine starke externe Verbindung aufweisen (sie sind z.B. signifikant mit Knoten außerhalb der Gruppierung 506 verbunden).
  • Es sollte klar sein, dass Schwellenwerte für Zusammengehörigkeit und/oder Verbindung wie durch den Benutzer/Anwender gewünscht eingerichtet werden können. Somit kann in verschiedenen Ausführungsformen eine Gruppierung von Knoten bestimmt werden, die eine ausreichend geringe Verbindung trotz der Tatsache aufweisen, dass einige Knoten in der Gruppierung Verbindungen zu Knoten außerhalb der Gruppierung haben (z.B. kann die Gruppierung 506 in einigen Fällen als ein unzusammenhängendes Cluster von Knoten betrachtet werden und kann somit ein entsprechendes unzusammenhängendes Code-Cluster darstellen, wenn der Schwellenwert, der die maximale Verbindungsrate definiert, hoch genug ist).
  • 6 veranschaulicht ein Blockschaubild eines beispielhaften, nicht einschränkenden Systems 600 mit einem Thema-Modellierungsalgorithmus, das eine automatisierte Empfehlung von Mikrodienst-Aufspaltungsstrategien für monolithische Anwendungen gemäß einer oder mehreren hierin beschriebenen Ausführungsformen ermöglichen kann. Wie gezeigt, kann das System 600 in verschiedenen Ausführungsformen dieselben Komponenten wie das System 400 umfassen und kann ferner einen Thema-Modellierungsalgorithmus 610 aufweisen.
  • Wie gezeigt, kann das Geschäftsdokumentenkorpus 108 in verschiedenen Fällen Entwurfsdokumente 602, Benutzerdokumentationen 604, Code-Anmerkungen 606, README-Dateien 608 und/oder alle anderen geeigneten Dokumente und/oder Dateien aufweisen, die Informationen hinsichtlich der monolithischen Anwendung 104 enthalten (z.B. Wiki-Dateien, GitHub-Dateien, Schulungs-/Fehlerbehebungshandbücher usw.). In verschiedenen Ausführungsformen kann der Thema-Modellierungsalgorithmus 610 jeder geeignete Algorithmus für Maschinenlernen, Deep Learning und/oder Mustererkennung sein, der das Geschäftsdokumentenkorpus 108 analysieren und dementsprechend den funktionalen Zweck 612 identifizieren kann, der dem unzusammenhängenden Code-Cluster 404 entspricht. In verschiedenen Fällen kann der funktionale Zweck 612 als die primäre Aufgabe, Funktion, Funktionalität und/oder Aktion betrachtet werden, die durch das unzusammenhängende Code-Cluster 404 in dem Quellcode 302 durchgeführt und/oder ermöglicht wird. Zum Beispiel kann der funktionale Zweck 612 eine Benutzerauthentifizierung sein, was bedeutet, dass das unzusammenhängende Code-Cluster 404 der Abschnitt des Quellcodes 302 ist, der einen Benutzer der monolithischen Anwendung 104 authentifiziert. Als weiteres Beispiel kann der funktionale Zweck 612 eine Objekterfassung sein, was bedeutet, dass das unzusammenhängende Code-Cluster 404 der Abschnitt des Quellcodes 302 ist, der eine Objekterfassung für die monolithische Anwendung 104 durchführt. In verschiedenen Ausführungsformen kann der Thema-Modellierungsalgorithmus 610 jede im Stand der Technik bekannte geeignete mathematische und/oder statistische Technik zum Bestimmen von funktionalen Themen/Zwecken aufweisen (z.B. Latenter Dirichlet-Zuweisungsalgorithmus (LDA) usw.).
  • LDA ist ein generatives Wahrscheinlichkeitsmodell eines Dokumentenkorpus, in dem Dokumente als willkürliche Mischungen über latenten Themen dargestellt werden (z.B. Geschäftsfunktionen), wobei jedes Thema durch eine datenübergreifende Verteilung gekennzeichnet ist. In Fällen, in denen ein LDA umgesetzt ist, kann eine Merkmalsextraktion durch Folgendes durchgeführt werden: jede Dateneinheit kann als ein Dokument durch Verketten jedes Attributs nach Entfernen und Tokenisierung von Stoppwörtern dargestellt werden; eine historische Struktur kann zum Schulen des LDA-Modells verwendet werden; und Inferenz-Merkmalsvektoren von dem Code-Eigenschaftsgraphen 306 und dem Geschäftsdokumentenkorpus 108 können verwendet werden, um die Geschäftsfunktionen des unzusammenhängenden Code-Clusters 404 zu ermitteln. Als nicht einschränkende Übersichtszusammenfassung ist ein LDA ein Algorithmus zum Extrahieren von Merkmalen aus dem Code-Eigenschaftsgraphen 306 und dem Geschäftsdokumentenkorpus 108, um die Geschäftsfunktionen zu bestimmen und/oder abzuleiten, die durch die Communities/Cluster durchgeführt werden, die in dem Code-Eigenschaftsgraphen 306 identifiziert wurden. In verschiedenen Fällen kann ein Ähnlichkeitsmaß zwischen den entdeckten funktionalen Zwecken (z.B. Themen) und der Geschäftsbeschreibung (z.B. eine gefundene Ähnlichkeit zwischen Thema und Klasse) erstellt werden.
  • 7 veranschaulicht ein Blockschaubild eines beispielhaften, nicht einschränkenden Systems 700 mit einem empfohlenen Mikrodienst, das eine automatisierte Empfehlung von Mikrodienst-Aufspaltungsstrategien für monolithische Anwendungen gemäß einer oder mehreren hierin beschriebenen Ausführungsformen ermöglichen kann. Wie gezeigt, kann das System 700 in verschiedenen Ausführungsformen dieselben Komponenten wie das System 600 aufweisen und kann ferner einen empfohlenen Mikrodienst 702 aufweisen.
  • Wie in 7 gezeigt und oben erläutert, kann die Mikrodienst-Komponente 120, nachdem die Thema-Modellierungskomponente 118 den funktionalen Zweck 612 des unzusammenhängenden Code-Clusters 404 identifiziert hat, das durch die Community-Erfassungskomponente 116 erfasst worden ist, einen speziellen Mikrodienst identifizieren (z.B. aus einer Datenbank, einem Verzeichnis und/oder einer Liste von verfügbaren Mikrodiensten), die den funktionalen Zweck 612 durchführen und/oder ermöglichen können. In verschiedenen Fällen kann die Mikrodienste-Komponente 120 den identifizierten Mikrodienst (z.B. den empfohlenen Mikrodienst 702) empfehlen (z.B. mittels elektronischer Datenübertragung mit einem Benutzer/Anwender), um das unzusammenhängende Code-Cluster 404 zu ersetzen. Mit anderen Worten, da der empfohlene Mikrodienst 702 dieselbe Aufgabe, Funktion, Funktionalität und/oder Aktion durchführen kann wie das unzusammenhängende Code-Cluster 404, kann das unzusammenhängende Code-Cluster 404 erfolgreich durch den empfohlenen Mikrodienst 702 ersetzt werden. In verschiedenen Fällen kann die Mikrodienste-Komponente 120 so betrachtet werden, dass sie dem Benutzer/Anwender eine empfohlene Strategie zum Aufspalten der monolithischen Anwendung 104 bereitstellt (z.B. indem die Ersetzung/Auswechslung des unzusammenhängenden Code-Clusters 404 durch den empfohlenen Mikrodienst 702 vorgeschlagen wird). In verschiedenen Ausführungsformen kann die Mikrodienste-Komponente 120 tatsächlich die empfohlene Aufspaltungsstrategie umsetzen, indem zum Beispiel das unzusammenhängende Code-Cluster 404 funktionslos gemacht wird (z.B. mittels Löschung und/oder Auskommentieren in dem Quellcode 302) und durch Planen, Bestellen, Erwerben, Mieten und/oder anderweitiges Beschaffen des empfohlenen Mikrodienstes 702 (z.B. von einem Mikrodienste-Händler). In verschiedenen Fällen kann die Mikrodienste-Komponente 120 das unzusammenhängende Code-Cluster 404 durch den empfohlenen Mikrodienst 702 ersetzen.
  • 8 veranschaulicht ein Übersichtsblockschaubild, das einen beispielhaften Workflow-Prozess zum Ermöglichen einer automatisierten Empfehlung von Mikrodienst-Aufspaltungsstrategien für monolithische Anwendungen gemäß einer oder mehreren hierin beschriebenen Ausführungsformen darstellt.
  • Wie gezeigt, stellt 8 eine Übersichtszusammenfassung von verschiedenen Ausführungsformen der Erfindung dar. Das Hauptziel kann darin bestehen, mindesten einen Abschnitt der monolithischen Anwendung 104 in Mikrodienste aufzuspalten. Zu diesem Zweck können das technische Dokumentenkorpus 106 (z.B. der Quellcode 302, die zeitliche Code-Weiterentwicklung 304 usw.) benutzt werden, um den Code-Eigenschaftsgraphen 306 zu erstellen, der die Struktur, Steuerflüsse und Datenabhängigkeiten veranschaulichen/aufzeigen kann, die der monolithischen Anwendung 104 zugehörig sind. Der Code-Eigenschaftsgraph 306 kann zum Identifizieren/Erfassen des unzusammenhängenden Code-Clusters 404 genutzt werden, das als ein Kandidat für eine Mikrodienst-Aufspaltung betrachtet werden kann (z.B. ein Abschnitt des Quellcodes 302, der potenziell durch einen Mikrodienst ersetzt werden kann). Das Geschäftsdokumentenkorpus 108 kann genutzt werden, um den funktionalen Zweck 612 zu identifizieren, der dem unzusammenhängenden Code-Cluster 404 entspricht (z.B. die Aktion/Funktion, die durch das unzusammenhängende Code-Cluster 404 durchgeführt wird). In verschiedenen Fällen kann empfohlen werden, dass ein Mikrodienst, der den funktionalen Zweck 612 durchführen/ermöglichen kann, das unzusammenhängende Code-Cluster 404 ersetzt (z.B. erledigt der empfohlene Mikrodienst 702 dieselbe Aufgabe wie das unzusammenhängende Code-Cluster 404 und kann somit das unzusammenhängende Code-Cluster 404 ersetzen).
  • Auf diese Weise kann eine Empfehlung/Strategie für ein Aufspalten eines großen, schwerfälligen, monolithischen Computerprogramms (z.B. die monolithische Anwendung 104) schnell und effizient generiert werden. Wie oben erwähnt, verwenden vorhandene Systeme/Techniken zum Ermöglichen einer Mikrodienst-Aufspaltung einfach keine Code-Eigenschaftsgraphen (sie verwenden stattdessen z.B. nur Aufrufgraphen), sie verwenden keine zeitlichen Code-Weiterentwicklungen zum Informieren über die Zusammengehörigkeit von verschiedenen Code-Clustern, und sie verwenden keine Thema-Modellierung von Geschäftsdokumenten, um funktionale Zwecke/Themen von identifizierten Code-Clustern zu identifizieren und/oder abzuleiten.
  • 9 veranschaulicht ein Blockschaubild eines beispielhaften, nicht einschränkenden Systems 900 mit einer Rückmeldungskomponente, das eine automatisierte Empfehlung von Mikrodienst-Aufspaltungsstrategien für monolithische Anwendungen gemäß einer oder mehreren hierin beschriebenen Ausführungsformen ermöglichen kann. Wie gezeigt, kann das System 900 in verschiedenen Ausführungsformen dieselben Komponenten wie das System 700 aufweisen und kann ferner die Rückmeldungskomponente 902 aufweisen.
  • In verschiedenen Ausführungsformen kann die Rückmeldungskomponente 902 jede geeignete Mensch-Computer-Schnittstelle sein, die einem Benutzer/Anwender (z.B. einem Spezialisten, einem Code-Entwickler usw.) ermöglicht, eine Bewertung, Einstufung, Einteilung und/oder anderweitig eine Rückmeldung hinsichtlich der Effizienz der Empfehlungen bereitzustellen, die durch das Mikrodienst-Aufspaltungsstrategiesystem 102 ausgegeben wurden. In verschiedenen Fällen kann die Rückmeldung verwendet werden, um zu quantifizieren, wie gut oder wie schlecht das Mikrodienst-Aufspaltungsstrategiesystem 102 den Quellcode 302 zu Clustern gruppiert hat und/oder den funktionalen Zweck 612 identifiziert/abgeleitet hat. In verschiedenen Fällen kann die Rückmeldungskomponente 902 Parameter (z.B. Gewichtungen, Tendenzen, Aktivierungsfunktionen usw.) des Community-Erfassungsalgorithmus 402 und/oder Parameter des Thema-Modellierungsalgorithmus 610 modifizieren. Auf diese Weise kann die Community-Erfassungskomponente 116 und/oder die Thema-Modellierungskomponente 118 aus Echtzeit- und/oder Nahe-Echtzeit-Rückmeldung von Benutzern/Anwendern lernen. Dies kann als eine aktive Lernmethodik betrachtet werden, die das Erfassen von menschlichem Wissen ermöglicht (z.B. Erfassen von Echtzeit-Clusterbildung, Thema-Modellierung und/oder anderen Aufspaltungserkenntnissen von Spezialisten, welche Rückmeldung erlernt werden kann, um die Genauigkeit und/oder Nützlichkeit der Empfehlungen zu verbessern, die durch das Mikrodienst-Aufspaltungsstrategiesystem 102 erzeugt werden). Mit anderen Worten, die Rückmeldungskomponente 902 kann eine Form von überwachtem Lernen/Schulen des Mikrodienst-Aufspaltungsstrategiesystems 102 ermöglichen.
  • 10 veranschaulicht ein Blockschaubild eines beispielhaften, nicht einschränkenden Systems 1000 mit einer Komponente zum Speichern von Abhängigkeitsmustern, das eine automatisierte Empfehlung von Mikrodienst-Aufspaltungsstrategien für monolithische Anwendungen gemäß einer oder mehreren hierin beschriebenen Ausführungsformen ermöglichen kann. Wie gezeigt, kann das System 1000 in verschiedenen Ausführungsformen dieselben Komponenten wie das System 900 umfassen und kann ferner die Komponente zum Speichern von Abhängigkeitsmustern 1002 aufweisen.
  • In verschiedenen Ausführungsformen kann die Komponente zum Speichern von Abhängigkeitsmustern 1002 Abhängigkeitsmuster speichern, die aus Code-Eigenschaftsgraphen von anderen monolithischen Anwendungen erlernt worden sind, sodass die Community-Erfassungskomponente 116 und die Thema-Modellierungskomponente 118 aus den Abhängigkeitsmustern lernen können (z.B. die Abhängigkeitsmuster nutzen können, um das unzusammenhängende Code-Cluster 404 und/oder den funktionalen Zweck 612 schneller und/oder genauer zu identifizieren). In verschiedenen Fällen können die Abhängigkeitsmuster in der Komponente zum Speichern von Abhängigkeitsmustern 1002 erfasst werden und können anschließend verwendet werden, um die wiederholbaren Muster zu sammeln, um die korrekten Communities und/oder die korrekten funktionalen Zwecke/Themen zu identifizieren. Das heißt, wenn das Mikrodienst-Aufspaltungsstrategiesystem 102 eine Rückmeldung empfängt und dementsprechend das richtige Community-Erfassungs- und Thema-Modellierungsergebnis für einen bestimmten Eingabe-Code-Eigenschaftsgraphen (und/oder einen Abschnitt eines Eingabe-Code-Eigenschaftsgraphen) erlernt, kann ein Abhängigkeitsmuster aus diesem Eingabe-Ergebnis-Paar extrahiert und in der Komponente zum Speichern von Abhängigkeitsmustern 1002 gespeichert werden. Anschließend kann das Mikrodienst-Aufspaltungsstrategiesystem 102 derartige gespeicherte Abhängigkeitsmuster nutzen, wenn versucht wird, Cluster und/oder Thema-Modelle für zukünftige Anwendungen zu bilden. Dies kann in einigen Fällen die Leistung des Systems steigern und/oder verbessern. Wenn ein Grad an Übereinstimmung zwischen einem aktuellen Code-Eigenschaftsgraphen (oder z.B. zwischen einer aktuellen Community in einem aktuellen Code-Eigenschaftsgraphen und einem Abhängigkeitsmuster) ausreichend hoch ist (z.B. Schwellenwert wie von dem Benutzer/Anwender gewünscht definiert), kann das Mikrodienst-Aufspaltungsstrategiesystem 102 die in der Komponente zum Speichern von Abhängigkeitsmustern 1002 gespeicherten Ergebnisse einfach ausgeben, statt die Zeit und Ressourcen aufzuwenden, um die Community-Erfassung und/oder Thema-Modellierung von Anfang an durchzuführen. In verschiedenen Ausführungsformen kann der Grad an Übereinstimmung als ein Wahrscheinlichkeitswert und/oder Ähnlichkeitswert auf Grundlage einer aktuellen Kantendichte eines aktuellen Code-Eigenschaftsgraphen oder einer Community in einem Code-Eigenschaftsgraphen im Vergleich mit einer Kantendichte ausgedrückt werden, die von einem gespeicherten Abhängigkeitsmuster gezeigt wird. In verschiedenen Ausführungsformen kann jede geeignete mathematische und/oder statistische Technik zum Vergleichen der aktuellen und gespeicherten Abhängigkeitsmuster verwendet werden.
  • In verschiedenen Ausführungsformen können alle geeigneten Breitensuch- und/oder Tiefensuch-Algorithmen verwendet werden, um alle Knoten in einem Graphen zu untersuchen (z.B. ein Code-Eigenschaftsgraph), ausgehend von irgendeinem Stammknoten (wobei z.B. ein REST API in dem Code beginnt), um ein Erlernen/Erfassen von Abhängigkeitsknoten durchzuführen. In verschiedenen Ausführungsformen kann jeder im Stand der Technik bekannte geeignete Algorithmus zum Suchen nach Gruppen auf Kategoriegrundlage (z.B. Abhängigkeitsmuster) in einem Code-Eigenschaftsgraphen umgesetzt werden. In verschiedenen Ausführungsformen kann ein Erlernen von Abhängigkeitsmustern durch jeden geeigneten Algorithmus durchgeführt werden, der eine Mehrfachbeschriftungs-Support-Vektor-Maschine (und/oder alle anderen geeigneten Klassifikatoren) mittels eines Vorhersageverfahrens auf Verlustreduzierungs-Grundlage schult, um Kategoriegruppen in einem Graphen zu identifizieren.
  • 11 veranschaulicht einen Ablaufplan eines beispielhaften, nicht einschränkenden, durch einen Computer umgesetzten Verfahrens 1100, das eine automatisierte Empfehlung von Mikrodienst-Aufspaltungsstrategien für monolithische Anwendungen gemäß einer oder mehreren hierin beschriebenen Ausführungsformen ermöglichen kann.
  • In verschiedenen Ausführungsformen kann eine Handlung 1102 ein Erfassen, durch eine betriebsfähig mit einem Prozessor (z.B. 116) verbundene Einheit, eines unzusammenhängenden Code-Clusters (z.B. 404) in einer monolithischen Anwendung (z.B. 104) auf Grundlage eines Code-Eigenschaftsgraphen (z.B. 306) umfassen, der die monolithische Anwendung kennzeichnet, wobei der Code-Eigenschaftsgraph auf einer zeitlichen Code-Weiterentwicklung (z.B. 304) der monolithischen Anwendung beruht.
  • In verschiedenen Ausführungsformen kann eine Handlung 1104 ein Identifizieren eines funktionalen Zwecks (z.B. 612) des unzusammenhängenden Code-Clusters auf Grundlage eines Geschäftsdokumentenkorpus (z.B. 108), das der der monolithischen Anwendung entspricht, durch die Einheit (z.B. 118) umfassen.
  • In verschiedenen Fällen kann eine Handlung 1106 ein Empfehlen eines Mikrodienstes (z.B. 702) zum Ersetzen des unzusammenhängenden Code-Clusters auf Grundlage des funktionalen Zwecks durch die Einheit (z.B. 120) umfassen.
  • 12 veranschaulicht einen Ablaufplan eines beispielhaften, nicht einschränkenden, durch einen Computer umgesetzten Verfahrens 1200, das ein Verstärken eines Code-Eigenschaftsgraphen umfasst, das eine automatisierte Empfehlung von Mikrodienst-Aufspaltungsstrategien für monolithische Anwendungen gemäß einer oder mehreren hierin beschriebenen Ausführungsformen ermöglichen kann. Wie gezeigt, kann das durch den Computer umgesetzte Verfahren 1200 in verschiedenen Ausführungsformen dieselben Handlungen wie das durch den Computer umgesetzte Verfahren 1100 umfassen und kann ferner Handlungen 1202 und 1204 aufweisen.
  • In verschiedenen Ausführungsformen kann die Handlung 1202 ein Generieren, durch die Einheit (z.B. 114), des Code-Eigenschaftsgraphen auf Grundlage eines Quellcodes (z.B. 302) der monolithischen Anwendung umfassen, wobei der Code-Eigenschaftsgraph eine Kombination aus einem abstrakten Syntaxbaum (z.B. 308), einem Steuerflussgraphen (z.B. 310) und einem Programmabhängigkeitsgraphen (z.B. 312) aufweist, die die monolithische Anwendung kennzeichnen.
  • In verschiedenen Fällen kann die Handlung 1204 ein Erhöhen, durch die Einheit (z.B. 114), von Kantengewichtungen des Code-Eigenschaftsgraphen auf Grundlage der zeitlichen Code-Weiterentwicklung umfassen, wobei die zeitliche Code-Weiterentwicklung im Laufe der Zeit Änderungen an dem Quellcode der monolithischen Anwendung aufweist.
  • 13 veranschaulicht einen Ablaufplan eines beispielhaften, nicht einschränkenden, durch einen Computer umgesetzten Verfahrens 1300, das ein Empfangen einer Benutzerrückmeldung umfasst, das eine automatisierte Empfehlung von Mikrodienst-Aufspaltungsstrategien für monolithische Anwendungen gemäß einer oder mehreren hierin beschriebenen Ausführungsformen ermöglichen kann. Wie gezeigt, kann das durch den Computer umgesetzte Verfahren 1300 in verschiedenen Ausführungsformen dieselben Handlungen wie das durch den Computer umgesetzte Verfahren 1100 aufweisen und kann ferner Handlungen 1302 und 1304 aufweisen.
  • In verschiedenen Ausführungsformen kann die Handlung 1302 ein Sammeln, durch die Einheit (z.B. 902), von Benutzerrückmeldungen umfassen, die dem empfohlenen Mikrodienst und dem unzusammenhängenden Code-Cluster zugehörig sind.
  • In verschiedenen Ausführungsformen kann die Handlung 1304 ein Modifizieren, durch die Einheit (z.B. 902), von Parametern eines Algorithmus (z.B. 402), der das Erfassen des unzusammenhängenden Code-Clusters ermöglicht, oder von Parametern eines Algorithmus (z.B. 610) umfassen, der das Identifizieren des funktionalen Zwecks auf Grundlage der gesammelten Benutzerrückmeldung ermöglicht.
  • 14 veranschaulicht einen Ablaufplan eines beispielhaften, nicht einschränkenden, durch einen Computer umgesetzten Verfahrens 1400, das ein Speichern von Abhängigkeitsmustern umfasst, das eine automatisierte Empfehlung von Mikrodienst-Aufspaltungsstrategien für monolithische Anwendungen gemäß einer oder mehreren hierin beschriebenen Ausführungsformen ermöglichen kann. Wie gezeigt, kann das durch den Computer umgesetzte Verfahren 1400 in verschiedenen Fällen dieselben Handlungen wie das durch den Computer umgesetzte Verfahren 1100 aufweisen und kann ferner eine Handlung 1402 aufweisen.
  • In verschiedenen Ausführungsformen kann die Handlung 1402 ein Speichern, durch die Einheit (z.B. 1002), von Abhängigkeitsmustern umfassen, die aus Code-Eigenschaftsgraphen von anderen monolithischen Anwendungen erlernt wurden, wobei die Abhängigkeitsmuster das Erfassen des unzusammenhängenden Code-Clusters und das Identifizieren des funktionalen Zwecks ermöglichen.
  • 15 veranschaulicht einen Ablaufplan eines beispielhaften, nicht einschränkenden, durch einen Computer umgesetzten Verfahrens 1500, das ein Ersetzen von unzusammenhängenden Code-Clustern umfasst, das eine automatisierte Empfehlung von Mikrodienst-Aufspaltungsstrategien für monolithische Anwendungen gemäß einer oder mehreren hierin beschriebenen Ausführungsformen ermöglichen kann. Wie gezeigt, kann das durch den Computer umgesetzte Verfahren 1500 in verschiedenen Fällen dieselben Handlungen wie das durch den Computer umgesetzte Verfahren 1100 aufweisen und kann ferner Handlungen 1502 aufweisen.
  • In verschiedenen Ausführungsformen kann die Handlung 1502 ein Ersetzen, durch die Einheit (z.B. 120), des unzusammenhängenden Code-Clusters durch den empfohlenen Mikrodienst umfassen.
  • 16 veranschaulicht einen Ablaufplan eines beispielhaften, nicht einschränkenden, durch einen Computer umgesetzten Verfahrens 1600, das eine automatisierte Empfehlung von Mikrodienst-Aufspaltungsstrategien für monolithische Anwendungen gemäß einer oder mehreren hierin beschriebenen Ausführungsformen ermöglichen kann.
  • In verschiedenen Ausführungsformen kann eine Handlung 1602 ein Identifizieren, durch eine in Datenaustausch mit einem Prozessor (z.B. 116) verbundene Einheit, von Kandidaten für eine Mikrodienst-Aufspaltung (z.B. 404) in einer monolithischen Anwendung (z.B. 104) auf Grundlage eines Code-Eigenschaftsgraphen (z.B. 306) umfassen, der der monolithischen Anwendung entspricht.
  • In verschiedenen Ausführungsformen kann eine Handlung 1604 ein Identifizieren, durch die Einheit (z.B. 118), von Funktionen (z.B. 612) umfassen, die jeweils durch die identifizierten Kandidaten auf Grundlage von Geschäftsdokumenten (z.B. 108) durchgeführt werden, die der monolithischen Anwendung entsprechen.
  • 17 veranschaulicht einen Ablaufplan eines beispielhaften, nicht einschränkenden, durch einen Computer umgesetzten Verfahrens 1700, das ein Modifizieren eines Code-Eigenschaftsgraphen umfasst, das eine automatisierte Empfehlung von Mikrodienst-Aufspaltungsstrategien für monolithische Anwendungen gemäß einer oder mehreren hierin beschriebenen Ausführungsformen ermöglichen kann. Wie gezeigt, kann das durch den Computer umgesetzte Verfahren 1700 in verschiedenen Ausführungsformen dieselben Handlungen wie das durch den Computer umgesetzte Verfahren 1600 aufweisen und kann ferner Handlungen 1702 und 1704 aufweisen.
  • In verschiedenen Ausführungsformen kann die Handlung 1702 ein Generieren des Code-Eigenschaftsgraphen durch die Einheit (z.B. 114) auf Grundlage des Quellcodes (z.B. 302) der monolithischen Anwendung umfassen.
  • In verschiedenen Ausführungsformen kann die Handlung 1704 ein Modifizieren des Code-Eigenschaftsgraphen durch die Einheit (z.B. 114) auf Grundlage einer zeitlichen Code-Weiterentwicklung (z.B. 302) der monolithischen Anwendung umfassen.
  • Um einen zusätzlichen Kontext für verschiedene hierin beschriebene Ausführungsformen bereitzustellen, sollen 18 und die nachfolgende Erörterung eine kurze, allgemeine Beschreibung einer geeigneten Datenverarbeitungsumgebung 1800 bereitstellen, in der die verschiedenen Ausführungsformen der hierin beschriebenen Ausführungsform umgesetzt werden können. Zwar wurden die Ausführungsformen oben im allgemeinen Kontext von durch einen Computer ausführbaren Anweisungen beschrieben, die auf einem oder mehreren Computern ausgeführt werden können, doch wird einem Fachmann klar sein, dass die Ausführungsformen auch in Kombination mit anderen Programmmodulen und/oder als eine Kombination von Hardware und Software umgesetzt werden können.
  • Im Allgemeinen können Programmmodule Routinen, Programme, Komponenten, Datenstrukturen usw. enthalten, die spezielle Aufgaben durchführen oder spezielle abstrakte Datentypen umsetzen. Des Weiteren wird einem Fachmann klar sein, dass die erfinderischen Verfahren mit anderen Computersystem-Konfigurationen ausgeübt werden können, einschließlich Einzelprozessor- oder Mehrprozessor-Computersystemen, Minicomputern, Mainframe-Computern, Einheiten des Internet of Things (loT), verteilten Datenverarbeitungssystemen sowie Personal Computern, Handheld-Datenverarbeitungseinheiten, Unterhaltungselektronik auf Mikroprozessor-Grundlage oder programmierbar und dergleichen, die betriebsfähig mit einer oder mehreren zugehörigen Einheiten verbunden sein können.
  • Die veranschaulichten Ausführungsformen der Ausführungsformen hierin können auch in verteilten Datenverarbeitungsumgebungen ausgeübt werden, wobei bestimmte Aufgaben von entfernt angeordneten Verarbeitungseinheiten durchgeführt werden, die über ein Datenübertragungsnetzwerk verbunden sind. In einer verteilten Datenverarbeitungsumgebung können sich Programmmodule sowohl in lokalen als auch entfernt angeordneten Arbeitsspeicher-Speichereinheiten befinden.
  • Datenverarbeitungseinheiten umfassen in der Regel eine Vielfalt von Medien, die durch einen Computer lesbare Speichermedien, maschinenlesbare Speichermedien und/oder Datenübertragungsmedien umfassen können, wobei die beiden Begriffe hierin wie folgt voneinander verschieden verwendet werden. Durch einen Computer lesbare Speichermedien oder maschinenlesbare Speichermedien können alle verfügbaren Speichermedien sein, auf die durch den Computer zugegriffen werden kann und umfassen sowohl flüchtige als auch nicht flüchtige Medien, austauschbare als auch nicht austauschbare Medien. Zum Beispiel und keinesfalls einschränkend können durch einen Computer lesbare Speichermedien oder maschinenlesbare Speichermedien in Verbindung mit jedem Verfahren oder jeder Technologie zum Speichern von Informationen umgesetzt werden, wie zum Beispiel durch einen Computer lesbare oder maschinenlesbare Anweisungen, Programmmodule, strukturierte Daten oder unstrukturierte Daten.
  • Durch einen Computer lesbare Speichermedien können einen Direktzugriffsspeicher (RAM), einen Nur-Lese-Speicher (ROM), einen elektrisch löschbaren programmierbaren Nur-Lese-Speicher (EEPROM), einen Flash-Speicher oder andere Arbeitsspeicher-Technologie, einen CD-Nur-Lese-Speicher (CD-ROM), eine Digital Versatile Disk (DVD), Blue-ray-Disk (BD) oder einen anderen optischen Plattenspeicher, Magnetbandkassetten, Magnetband, Magnetplattenspeicher oder andere magnetische Speichereinheiten, Solid-State-Drives oder andere Solid-State-Speichereinheiten oder andere konkrete und/oder nicht flüchtige Medien umfassen, die zum Speichern von gewünschten Informationen verwendet werden können. In diesem Zusammenhang sind die Begriffe „konkret“ oder „nicht flüchtig“ in Bezug auf Speicher, Arbeitsspeicher oder durch einen Computer lesbare Medien so zu verstehen, dass sie nur ein Verbreiten von flüchtigen Signalen per se als Modifikatoren ausschließen und keine Rechte an standardmäßigem Speicher, Arbeitsspeicher oder durch einen Computer lesbaren Medien aufgeben, die nicht nur flüchtige Signale per se verbreiten.
  • Auf durch einen Computer lesbare Speichermedien kann durch eine oder mehrere lokale oder entfernt angeordnete Datenverarbeitungseinheiten, z.B. über Zugriffsanforderungen, Abfragen oder andere Datenabrufprotokolle, für eine Vielfalt von Operationen in Bezug auf die Informationen zugegriffen werden, die durch das Medium gespeichert werden.
  • Datenübertragungsmedien verkörpern in der Regel durch einen Computer lesbare Anweisungen, Datenstrukturen, Programmmodule oder andere strukturierte oder unstrukturierte Daten in einem Datensignal wie zum Beispiel ein moduliertes Datensignal, z.B. eine Trägerwelle oder ein anderer Transportmechanismus, und umfasst alle Zustellungs- oder Transportmedien von Informationen. Der Begriff „moduliertes Datensignal“ oder Signale bezieht sich auf ein Signal, bei dem ein oder mehrere seiner Kennzeichen so eingerichtet oder geändert worden ist bzw. sind, dass Informationen in einem oder mehreren Signalen encodiert werden. Zum Beispiel und keinesfalls darauf beschränkt umfassen Datenübertragungsmedien drahtgebundene Medien, wie beispielweise ein drahtgebundenes Netzwerk oder eine direktverdrahtete Verbindung und drahtlose Medien wie zum Beispiel akustische, HF-, Infrarot- oder andere drahtlose Medien.
  • Unter erneuter Bezugnahme auf 18 umfasst die beispielhafte Umgebung 1800 zum Umsetzen verschiedener Ausführungsformen der hierin beschriebenen Ausführungsformen einen Computer 1802, wobei der Computer 1802 eine verarbeitende Einheit 1804, einen Systemarbeitsspeicher 1806 und einen Systembus 1808 umfasst. Der Systembus 1808 verbindet Systemkomponenten, unter anderem den Systemarbeitsspeicher 1806, mit der verarbeitenden Einheit 1804, er ist aber nicht darauf beschränkt. Die verarbeitende Einheit 1804 kann jeder von verschiedenen im Handel erhältlichen Prozessoren sein. Duale Mikroprozessoren und andere Mehrfachprozessor-Architekturen können ebenfalls als die verarbeitende Einheit 1804 verwendet werden.
  • Der Systembus 1808 kann jede von mehreren Typen von Busstrukturen sein, die ferner mit einem Arbeitsspeicherbus (mit oder ohne Arbeitsspeicher-Controller), einem Peripheriebus und einem lokalen Bus verbunden sein können, die jede einer Vielfalt von im Handel erhältlichen Busarchitekturen verwenden können. Der Systemarbeitsspeicher 1806 umfasst einen ROM 1810 und einen RAM 1812. Ein grundlegendes Eingabe/Ausgabe-System (BIOS) kann in einem nicht flüchtigen Arbeitsspeicher wie beispielweise in einem ROM, einem löschbaren programmierbaren Nur-Lese-Arbeitsspeicher (EPROM), EEPROM gespeichert sein, wobei das BIOS die grundlegenden Routinen enthält, die ein Transferieren von Informationen zwischen Elementen in dem Computer 1802 beispielweise während des Hochfahrens unterstützen. Der RAM 1812 kann auch einen Hochgeschwindigkeits-RAM wie beispielsweise einen statischen RAM zum Zwischenspeichern von Daten umfassen.
  • Der Computer 1802 umfasst ferner ein internes Festplatten-Laufwerk (HDD) 1814 (z.B. EIDE, SATA), eine oder mehrere externe Speichereinheiten 1816 (z.B. ein Magnetdiskettenlaufwerk (FDD) 1816, einen Speicher-Stick oder ein Flash-Laufwerk-Lesegerät, ein Speicherkarten-Lesegerät usw.) und ein Laufwerk 1820, z.B. wie beispielweise ein Solid-State-Drive, eine optisches Plattenlaufwerk, das aus einer Platte oder in eine Platte 1822 lesen oder schreiben kann, wie beispielweise eine CD-ROM-Platte, eine DVD, eine BD usw. Alternativ wäre im Fall einer Beteiligung eines Solid-State-Drives keine Platte 1822 vorhanden, es sei denn separat. Zwar wird die interne HDD 1814 als in dem Computer 1802 befindlich veranschaulicht, doch kann die interne HDD 1814 auch für einen externen Einsatz in einem geeigneten Gehäuse (nicht gezeigt) konfiguriert werden. Obwohl in der Umgebung 1800 nicht gezeigt, könnte ein Solid-State-Drive (SSD) außerdem zusätzlich zu oder anstelle von einem HDD 1814 verwendet werden. Das HDD 1814, die externe Speichereinheit bzw. externen Speichereinheiten 1816 und das Laufwerk 1820 können mit dem Systembus 1808 jeweils durch eine HDD-Schnittstelle 1824, eine externe Speicherschnittstelle 1826 und eine Laufwerkschnittstelle 1828 verbunden werden. Die Schnittstelle 1824 für externe Laufwerksumsetzungen kann mindestens eines oder beides von Schnittstellen-Technologien eines Universal Serial Bus (USB) und Institute of Electrical and Electronics Engineers (IEEE) 1394 umfassen. Andere externe Laufwerk-Verbindungstechnologien liegen innerhalb der Betrachtung der hierin beschriebenen Ausführungsformen.
  • Die Laufwerke und ihre zugehörigen, durch einen Computer lesbaren Speichermedien stellen einen nicht flüchtigen Speicher von Daten, Datenstrukturen, durch einen Computer lesbaren Anweisungen usw. bereit. Für den Computer 1802 nehmen die Laufwerke und Speichermedien die Speicherung aller Daten in einem geeigneten digitalen Format auf. Obwohl die Beschreibung von durch einen Computer lesbaren vorgenannten Speichermedien auf jeweilige Typen von Speichereinheiten verweisen, sollte dem Fachmann klar sein, dass andere Typen von Speichermedien, die durch einen Computer lesbar sind, gleichgültig, ob derzeit vorhanden oder zukünftig entwickelt, in der beispielhaften Betriebsumgebung ebenfalls verwendet werden könnten, und ferner, dass alle derartigen Speichermedien durch einen Computer ausführbare Anweisungen zum Durchführen der hierin beschriebenen Verfahren enthalten können.
  • In den Laufwerken und im RAM 1812 kann eine Anzahl von Programmmodulen gespeichert werden, einschließlich eines Betriebssystems 1830, eines oder mehrerer Anwendungsprogramme 1832, anderer Programmmodule 1834 und Programmdaten 1836. Die Gesamtheit oder Abschnitte des Betriebssystems, der Anwendungen, Module und/oder Daten kann auch in dem RAM 1812 zwischengespeichert werden. Die hierin beschriebenen Systeme und Verfahren können durch Verwenden verschiedener im Handel erhältlicher Betriebssysteme oder Kombinationen von Betriebssystemen umgesetzt werden.
  • Der Computer 1802 kann optional Emulationstechnologien aufweisen. Zum Beispiel kann ein Hypervisor (nicht gezeigt) oder andere Zwischenstationen eine Hardware-Umgebung für das Betriebssystem 1830 emulieren, und die emulierte Hardware kann sich optional von der Hardware unterscheiden, die in 18 veranschaulicht wird. In einer derartigen Umgebung kann das Betriebssystem 1830 eine virtuelle Maschine (VM) von mehreren VMs aufweisen, die am Computer 1802 gehostet werden. Ferner kann das Betriebssystem 1830 Laufzeitumgebungen für Anwendungen 1832 bereitstellen, wie beispielweise die Java-Laufzeitumgebung oder das .NET-Framework. Laufzeitumgebungen sind konsistente Ausführungsumgebungen, die den Anwendungen 1832 ermöglichen, auf jedem Betriebssystem ausgeführt zu werden, das die Laufzeitumgebung umfasst. In ähnlicher Weise kann das Betriebssystem 1830 Container unterstützen, und die Anwendungen 1832 können in der Form von Containern vorliegen, die kompakte, eigenständige, ausführbare Software-Pakete sind, die z.B. Code, Laufzeit, Systemwerkzeuge, Systembibliotheken und Einstellungen für eine Anwendung umfassen.
  • Ferner kann der Computer 1802 mit einem Sicherheitsmodul aktiviert werden, wie beispielsweise ein vertrauenswürdiges Verarbeitungsmodul (TPM). Zum Beispiel führen Boot-Komponenten mit einem TPM ein Hashing der zeitlich nächsten Boot-Komponenten aus und warten auf eine Übereinstimmung mit gesicherten Werten, bevor eine nächste Boot-Komponente geladen wird. Dieser Prozess kann in jeder Schicht in dem Code-Ausführungsstapel des Computers 1802 erfolgen, z.B. angewendet auf Anwendungs-Ausführungsebene oder auf Kernel-Ebene des Betriebssystems (OS), wodurch die Sicherheit auf jeder Ebene der Code-Ausführung ermöglicht wird.
  • Ein Benutzer kann Befehle und Informationen in den Computer 1802 über eine oder mehrere drahtgebundene/drahtlose Eingabeeinheiten eingeben, z.B. eine Tastatur 1838, einen Berührungsbildschirm 1840 und eine Zeigeeinheit, wie zum Beispiel eine Maus 1842. Andere Eingabeeinheiten (nicht gezeigt) können ein Mikrofon, eine Infrarot- (IR) Fernbedienung, eine Funkfrequenz- (HF) Fernbedienung oder eine andere Fernbedienung, einen Joystick, einen Virtual-Reality-Controller und/oder ein Virtual-Reality-Headset, eine Spielekonsole, einen Eingabestift, eine Bildeingabeeinheit, z.B. Kamera(s), eine Gestensensor-Eingabeeinheit, eine Bewegungssensor-Eingabeeinheit, eine Emotions- oder Gesichtserkennungseinheit, eine biometrische Eingabeeinheit, z.B. Fingerabdruck oder Iris-Scanner oder dergleichen umfassen. Diese und andere Eingabeeinheiten sind oft mit der Verarbeitungseinheit 1804 über eine Eingabeeinheiten-Schnittstelle 1844 verbunden, die mit dem Systembus 1808 verbunden sein kann, aber auch mit anderen Schnittstellen verbunden werden kann, wie zum Beispiel einem Parallelanschluss, einem seriellen Anschluss IEEE 1394, einem Spieleanschluss, einem USB-Anschluss, einer IR-Schnittstelle, einer BLUETOOTH®-Schnittstelle usw.
  • Ein Monitor 1846 oder ein anderer Typ einer Anzeigeeinheit kann ebenfalls mit dem Systembus 1808 über eine Schnittstelle wie beispielsweise mit einem Video-Adapter 1848 verbunden werden. Zusätzlich zu dem Monitor 1846 umfasst ein Computer in der Regel andere Peripherie-Ausgabeeinheiten (nicht gezeigt), wie zum Beispiel Lautsprecher, Drucker usw.
  • Der Computer 1802 kann in einer vernetzten Umgebung durch Verwenden von logischen Verbindungen über drahtgebundene und/oder drahtlose Datenübertragungen mit einem oder mehreren entfernt angeordneten Computern arbeiten, wie beispielsweise einem bzw. mehreren entfernt angeordnete Computern 1850. Der bzw. die entfernt angeordneten Computer 1850 können eine Workstation, ein Server-Computer, ein Router, ein Personal Computer, ein tragbarer Computer, Unterhaltungselektronik auf Mikroprozessor-Grundlage, ein gleichrangiges Gerät oder ein anderer allgemeiner Netzwerkknoten sein und in der Regel viele oder alle der in Bezug auf den Computer 1802 beschriebenen Elemente umfassen, obwohl der Kürze halber nur ein Arbeitsspeicher/eine Speichereinheit 1852 veranschaulicht ist. Die dargestellten logischen Verbindungen umfassen eine drahtgebundene/drahtlose Konnektivität zu einem lokalen Netzwerk (LAN) 1854 und/oder größeren Netzwerken, z.B. einem Weitverkehrsnetzwerk (WAN) 1856. Derartige LAN- und WAN-vernetzte Umgebungen sind in Büros und Firmen selbstverständlich und ermöglichen unternehmensübergreifende Computer-Netzwerke, wie zum Beispiel Intranets, die alle mit einem globalen Datenübertragungsnetzwerk verbunden werden können, z.B. dem Internet.
  • Wenn der Computer 1802 in einer LAN-vernetzten Umgebung verwendet wird, kann er mit dem lokalen Netzwerk 1854 über eine drahtgebundene und/oder drahtlose Datenübertragungs-Netzwerkschnittstelle oder einen Adapter 1858 verbunden werden. Der Adapter 1858 kann eine drahtgebundene oder drahtlose Datenübertragung zu dem LAN 1854 ermöglichen, das auch einen darauf angeordneten drahtlosen Zugangspunkt (AP) umfassen kann, um mit dem Adapter 1858 drahtlos kommunizieren zu können.
  • Wenn der Computer 1802 in einer WAN-vernetzten Umgebung verwendet wird, kann er einen Modem 1860 umfassen oder kann mit einem Datenübertragungsserver auf dem WAN 1856 über andere Mittel zum Herstellen von Datenübertragungen über das WAN 1856 verbunden werden, wie zum Beispiel über das Internet. Der Modem 1860, bei dem es sich um eine interne oder externe und eine drahtgebundene oder drahtlose Einheit handeln kann, kann mit dem Systembus 1808 über die Eingabeeinheiten-Schnittstelle 1844 verbunden werden. In einer vernetzten Umgebung können in Bezug auf den Computer 1802 dargestellte Programmmodule oder Abschnitte davon in dem entfernt angeordneten Arbeitsspeicher/der Speichereinheit 1852 gespeichert werden. Es sollte klar sein, dass die gezeigten Netzwerkverbindungen Beispiele sind und andere Mittel zum Herstellen einer Datenübertragungsverbindung zwischen den Computern verwendet werden können.
  • Wenn der Computer 1802 entweder in einer LAN- oder WAN-vernetzten Umgebung verwendet wird, kann er zusätzlich zu oder anstelle der externen Speichereinheiten 1816, wie oben beschrieben, jedoch nicht darauf beschränkt, auf Cloud-Speichersysteme oder andere Speichersysteme auf Netzwerk-Grundlage zugreifen, wie zum Beispiel auf eine virtuelle Maschine eines Netzwerks, die eine oder mehrere Ausführungsformen von Speicher oder Verarbeitung von Informationen bereitstellt. Im Allgemeinen kann eine Verbindung zwischen dem Computer 1802 und einem Cloud-Speichersystem über ein LAN 1854 oder WAN 1856 hergestellt werden, z.B. jeweils durch den Adapter 1858 oder dem Modem 1860. Nach einem Verbinden des Computers 1802 mit einem zugehörigen Cloud-Speichersystem kann die externe Speicherschnittstelle 1826 mithilfe des Adapters 1858 und/oder des Modems 1860 Speicher, der durch das Cloud-Speichersystem bereitgestellt wird, so verwalten wie andere Typen von externem Speicher. Zum Beispiel kann die externe Speicherschnittstelle 1826 so konfiguriert werden, dass sie Zugriff auf Cloud-Speicherquellen so bereitstellt, als wären diese Quellen physisch mit dem Computer 1802 verbunden.
  • Der Computer 1802 kann betreibbar sein, um mit allen drahtlosen Einheiten oder Entitäten Daten auszutauschen, die betriebsfähig in drahtloser Datenübertragung angeordnet sind, z.B. ein Drucker, Scanner, Desktop- und/oder tragbarer Computer, tragbarer Datenassistent, Datenübertragungssatellit, jedes Element von Ausrüstung oder Standort, das einem drahtlos erfassbaren Tag zugehörig ist (z.B. ein Kiosk, Zeitungsstand, Ladenregal usw.) und Telefon. Dies kann drahtlose Technologien wie Wireless Fidelity (Wi-Fi) und BLUETOOTH® umfassen. Somit kann die Datenübertragung eine vordefinierte Struktur wie bei einem herkömmlichen Netzwerk oder einfach eine Ad-hoc-Datenübertragung zwischen mindestens zwei Einheiten sein.
  • Bei der vorliegenden Erfindung kann es sich um ein System, ein Verfahren, eine Vorrichtung und/oder ein Computerprogrammprodukt auf jeder möglichen technischen Detailintegrationsebene handeln. Das Computerprogrammprodukt kann ein durch einen Computer lesbares Speichermedium (oder -medien) enthalten, auf dem durch einen Computer lesbare Programmanweisungen vorhanden sind, um einen Prozessor dazu zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen. Bei dem durch einen Computer lesbaren Speichermedium kann es sich um eine konkrete Einheit handeln, die Anweisungen zur Verwendung durch eine Einheit zum Ausführen von Anweisungen beibehalten und speichern kann. Das durch einen Computer lesbare Speichermedium kann zum Beispiel eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiter-Speichereinheit oder jede geeignete Kombination aus dem Vorgenannten sein, es ist aber nicht darauf beschränkt. Zu einer nicht erschöpfenden Liste spezifischerer Beispiele des durch einen Computer lesbaren Speichermediums können auch die Folgenden gehören: eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM bzw. Flashspeicher), ein statischer Direktzugriffsspeicher (SRAM), ein tragbarer CD-ROM, eine DVD, ein Speicher-Stick, eine Diskette, eine mechanisch codierte Einheit wie zum Beispiel Lochkarten oder erhabene Strukturen in einer Rille, auf denen Anweisungen gespeichert sind, und jede geeignete Kombination des Vorgenannten. Ein durch einen Computer lesbares Speichermedium soll, wie hierin verwendet, nicht als flüchtige Signale an sich aufgefasst werden, wie zum Beispiel Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder andere Übertragungsmedien ausbreiten (z.B. durch ein Lichtwellenleiterkabel geleitete Lichtimpulse) oder durch einen Draht übertragene elektrische Signale.
  • Hierin beschriebene durch einen Computer lesbare Programmanweisungen können von einem durch einen Computer lesbaren Speichermedium auf jeweilige Datenverarbeitungs-/Verarbeitungseinheiten oder über ein Netzwerk wie zum Beispiel das Internet, ein lokales Netzwerk, ein Weitverkehrsnetzwerk und/oder ein drahtloses Netzwerk auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenübertragungsleiter, drahtlose Übertragung, Leitwegrechner, Firewalls, Vermittlungseinheiten, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jeder Datenverarbeitungs-/Verarbeitungseinheit empfängt durch einen Computer lesbare Programmanweisungen aus dem Netzwerk und leitet die durch einen Computer lesbaren Programmanweisungen zur Speicherung in einem durch einen Computer lesbaren Speichermedium innerhalb der entsprechenden Datenverarbeitungs-/Verarbeitungseinheit weiter. Bei durch einen Computer lesbaren Programmanweisungen zum Ausführen von Arbeitsschritten der vorliegenden Erfindung kann es sich um Assembler-Anweisungen, ISA-Anweisungen (Instruction-Set-Architecture), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, zustandssetzende Daten, Konfigurationsdaten für integrierte Schaltungen oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben sind, darunter objektorientierte Programmiersprachen wie Smalltalk, C++ o.ä. sowie prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Die durch einen Computer lesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In dem letzteren Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers über jeden Typ von Netzwerk verbunden werden, einschließlich einem lokalen Netzwerk (LAN) oder einem Weitverkehrsnetzwerk (WAN), oder die Verbindung kann zu einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Nutzung eines Internet-Dienstanbieters). In einigen Ausführungsformen können elektronische Schaltungen, darunter zum Beispiel programmierbare Logikschaltungen, feldprogrammierbare Gatter-Anordnungen (FPGA, field programmable gate arrays) oder programmierbare Logikanordnungen (PLA, programmable logic arrays) die computerlesbaren Programmanweisungen ausführen, indem sie Zustandsinformationen der computerlesbaren Programmanweisungen nutzen, um die elektronischen Schaltungen zu personalisieren, um Aspekte der vorliegenden Erfindung durchzuführen.
  • Aspekte der vorliegenden Erfindung werden hierin unter Bezugnahme auf Veranschaulichungen von Ablaufplänen und/oder Blockschaubildern von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es sollte klar sein, dass jeder Block der Ablaufplanveranschaulichungen und/oder der Blockschaubilder und Kombinationen von Blöcken in den Ablaufplanveranschaulichungen und/oder den Blockschaubildern mittels durch einen Computer lesbare Programmanweisungen umgesetzt werden können. Diese durch einen Computer lesbaren Programmanweisungen können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, sodass die über den Prozessor des Computers bzw. eine andere programmierbare Datenverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegebenen Funktionen/Schritte erzeugen. Diese durch einen Computer lesbaren Programmanweisungen können auch auf einem durch einen Computer lesbaren Speichermedium gespeichert sein, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Art funktionieren, sodass das durch einen Computer lesbare Speichermedium, auf dem Anweisungen gespeichert sind, ein Herstellungsprodukt aufweist, darunter Anweisungen, die Aspekte der/des in dem Block bzw. den Blöcken des Ablaufplans und/oder der Blockschaubilder angegebenen Funktion/Schritts umsetzen. Die durch einen Computer lesbaren Programmanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder eine andere Einheit geladen werden, um das Ausführen einer Reihe von betrieblichen Maßnahmen auf dem Computer bzw. der anderen programmierbaren Vorrichtung oder anderen Einheit zu verursachen, um einen durch einen Computer umgesetzten Prozess zu erzeugen, sodass die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit ausgeführten Anweisungen die in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegebenen Funktionen/Schritte umsetzen.
  • Die Ablaufpläne und Blockschaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Ausführungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder den Blockschaubildern ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, die eine oder mehrere ausführbare Anweisungen zum Umsetzen der bestimmten logischen Funktion(en) aufweisen. In einigen alternativen Umsetzungen können die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt auftreten. Zum Beispiel können zwei nacheinander gezeigte Blöcke tatsächlich im Wesentlichen parallel ausgeführt werden, oder die Blöcke können manchmal in der umgekehrten Reihenfolge ausgeführt werden, was von der beteiligten Funktionalität abhängt. Es ist ferner anzumerken, dass jeder Block der Blockschaubilder und/oder der Ablaufplandarstellungen sowie Kombinationen von Blöcken in den Blockschaubildern und/oder der Ablaufplandarstellung durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die angegebenen Funktionen oder Handlungen durchführen oder Kombinationen aus Spezial-Hardware und Computeranweisungen ausführen.
  • Obwohl der Erfindungsgegenstand oben im allgemeinen Kontext von durch einen Computer ausführbaren Anweisungen eines Computerprogrammprodukts beschrieben wurde, das auf einem Computer und/oder Computern ausgeführt wird, wird der Fachmann erkennen, dass diese Offenbarung auch mit anderen oder in Kombination mit anderen Programmmodulen umgesetzt werden kann. Im Allgemeinen können Programmmodule Routinen, Programme, Komponenten, Datenstrukturen usw. enthalten, die spezielle Aufgaben ausführen und/oder spezielle abstrakte Datentypen umsetzen. Des Weiteren wird dem Fachmann klar sein, dass die erfinderischen, durch einen Computer umgesetzten Verfahren mit anderen Computersystem-Konfigurationen ausgeübt werden können, einschließlich Einzelprozessor- oder Multiprozessor-Computersystemen, Mini-Datenverarbeitungseinheiten, Mainframe-Computern sowie Computern, Handheld-Datenverarbeitungseinheiten (z.B. PDA, Telefon), Unterhaltungs- oder Industrieelektronik auf Mikroprozessor-Grundlage oder programmierbar und dergleichen. Die veranschaulichten Aspekte können auch in verteilten Datenverarbeitungsumgebungen ausgeübt werden, in denen Aufgaben von entfernt angeordneten Verarbeitungseinheiten durchgeführt werden, die über ein Datenübertragungsnetzwerk verbunden sind. Einige, wenn nicht sogar alle Aspekte dieser Offenbarung können jedoch auf eigenständigen Computern ausgeübt werden. In einer verteilten Datenverarbeitungsumgebung können sich Programmmodule sowohl in lokalen als auch entfernt angeordneten Arbeitsspeicher-Speichereinheiten befinden.
  • Wie in dieser Anmeldung verwendet, können die Begriffe „Komponente“, „System“, „Plattform“, „Schnittstelle“ und dergleichen eine computerbezogene Entität enthalten oder sich auf eine solche beziehen, oder auf eine Entität, die in Bezug zu einer operationellen Maschine mit einer oder mehreren spezifischen Funktionalitäten steht. Die hierin offenbarten Entitäten können entweder Hardware, eine Kombination von Hardware und Software, Software oder Software in Ausführung sein. Zum Beispiel kann eine Komponente ein Prozess, der auf einem Prozessor ausgeführt wird, ein Prozessor, ein Objekt, eine ausführbare Funktion/Datei, ein Ausführungs-Thread, ein Programm und/oder ein Computer sein. Zur Veranschaulichung können sowohl eine Anwendung, die auf einem Server ausgeführt wird, als auch der Server eine Komponente sein. Eine oder mehrere Komponenten können sich in einem Prozess und/oder einem Ausführungs-Thread befinden, und eine Komponente kann sich auf einem Computer und/oder verteilt auf zwei oder mehr Computern befinden. In einem weiteren Beispiel können jeweilige Komponenten von verschiedenen durch einen Computer lesbaren Medien ausgeführt werden, auf denen verschiedene Datenstrukturen gespeichert sind. Die Komponenten können über lokale und/oder entfernt angeordnete Prozesse Daten austauschen wie beispielsweise in Übereinstimmung mit einem Signal mit einem oder mehreren Datenpaketen (z.B. Daten von einer Komponente, die mit einer anderen Komponente in einem lokalen System, einem verteilten System und/oder über ein Netzwerk über das Signal interagieren, wie beispielsweise das Internet mit anderen Systemen). In einem anderen Beispiel kann eine Komponente eine Vorrichtung mit spezifischer Funktionalität sein, die durch mechanische Teile bereitgestellt wird, die über elektrische oder elektronische Schaltungen betrieben werden, welche durch eine Software- oder Firmware-Anwendung betrieben werden, die von einem Prozessor ausgeführt wird. In einem derartigen Fall kann sich der Prozessor innerhalb oder außerhalb der Vorrichtung befinden und mindestens einen Teil der Software- oder Firmware-Anwendung ausführen. Als noch weiteres Beispiel kann eine Komponente eine Vorrichtung sein, die eine spezifische Funktionalität durch elektronische Komponenten ohne mechanische Teile bereitstellt, wobei die elektronischen Komponenten einen Prozessor oder ein anderes Mittel zum Ausführen von Software oder Firmware enthalten können, der bzw. das zumindest teilweise die Funktionalität der elektronischen Komponenten übertragen kann. In einem Aspekt kann eine Komponente eine elektronische Komponente über eine virtuelle Maschine emulieren, z.B. in einem Cloud-Computing-System.
  • Außerdem soll der Begriff „oder“ ein einschließendes „oder“ statt eines ausschließenden „oder“ bedeuten. Dabei gilt, sofern nichts anderes angegeben wird oder aus dem Kontext klar ist, dass „X verwendet A oder B“ jede der natürlichen einschließenden Permutationen bedeutet. Das heißt, wenn X A verwendet; X B verwendet; oder X A und B verwendet, dass „X verwendet A oder B“ unter jedem der vorgenannten Beispiele erfüllt wird. Des Weiteren sollen die Artikel „ein/eine“, wie in der Spezifikation des Erfindungsgegenstands und den Zeichnungen im Anhang verwendet, allgemein so konstruiert sein, dass sie „ein oder mehrere“ bedeuten, sofern nichts anderes angegeben ist oder aus dem Kontext klar ist, dass sie sich auf eine Singularform beziehen. Wie hierin verwendet, werden die Begriffe „Beispiel“ und/oder „beispielhaft“ verwendet mit der Bedeutung, dass sie als Beispiel, Fall oder Veranschaulichung dienen. Um jeden Zweifel auszuschließen, wird der hierin offenbarte Gegenstand nicht durch solche Beispiele eingeschränkt. Außerdem ist jeder Aspekt oder jede Auslegung, die hierin als „Beispiel“ und/oder „beispielhaft“ beschrieben wird, nicht notwendigerweise als gegenüber anderen Aspekten oder Auslegungen bevorzugt oder vorteilhaft auszulegen, noch ist damit beabsichtigt, gleichwertige beispielhafte Strukturen und Techniken, die dem Fachmann bekannt sind, auszuschließen.
  • Wie in der Patentschrift des Erfindungsgegenstands verwendet, kann sich der Begriff „Prozessor“ im Wesentlichen auf jede Datenverarbeitungseinheit oder Einheit beziehen, die Einzelkernprozessoren; Einzelprozessoren mit Software-Multithread-Ausführungsfunktion; Mehrkernprozessoren; Mehrkernprozessoren mit Software-Multithread-Ausführungsfunktion; Mehrkernprozessoren mit Hardware-Multithread-Technologie; parallele Plattformen; und parallele Plattformen mit verteiltem gemeinsam genutzten Arbeitsspeicher aufweisen, sie ist aber nicht darauf beschränkt. Außerdem kann sich ein Prozessor auf eine integrierte Schaltung, eine anwendungsspezifische integrierte Schaltung (ASIC), einen digitalen Signalprozessor (DSP), ein feldprogrammierbares Gate-Array (FPGA), eine speicherprogrammierbare Steuerung (SPS), einen komplexen programmierbaren Logikbaustein (CPLD), ein diskretes Gate oder Transistorlogik, diskrete Hardware-Komponenten oder jede Kombination davon beziehen, die dafür ausgelegt ist, um die hierin beschriebenen Funktionen auszuführen. Ferner können Prozessoren Architekturen im Nanomaßstab nutzen, wie zum Beispiel Transistoren, Schalter und Gates auf molekularer oder Quantenpunkt-Grundlage, um die Raumnutzung zu optimieren oder die Leistung von Benutzerausrüstung zu erhöhen. Ein Prozessor kann auch als Kombination von Datenverarbeitungseinheiten umgesetzt werden. In dieser Offenbarung werden Begriffe wie „Speicher“, „Speicherung“, „Datenspeicher“, „Datenspeicherung“ und „Datenbank“ und im Wesentlichen jede andere Informationspeicherkomponente, die für Betrieb und Funktionalität einer Komponente relevant ist, dazu verwendet, um auf „Arbeitsspeicherkomponenten“, in einem „Arbeitsspeicher“ verkörperte Entitäten oder Komponenten zu verweisen, die einen Arbeitsspeicher aufweisen. Es sollte klar sein, dass hierin beschriebener Arbeitsspeicher und/oder Arbeitsspeicherkomponenten entweder flüchtiger Arbeitsspeicher oder nicht flüchtiger Arbeitsspeicher sein können oder sowohl flüchtigen als auch nicht flüchtigen Arbeitsspeicher enthalten können. Zur Veranschaulichung und nicht einschränkend kann nicht flüchtiger Arbeitsspeicher Nur-Lese-Speicher (ROM), programmierbaren ROM (PROM), elektrisch programmierbaren ROM (EPROM), elektrisch löschbaren ROM (EEPROM), Flash-Speicher oder nicht flüchtigen Direktzugriffspeicher (RAM) (z.B. ferroelektrischen RAM (FeRAM)) enthalten. Flüchtiger Speicher kann RAM enthalten, der zum Beispiel als externer Cachespeicher wirken kann. Zur Veranschaulichung und nicht einschränkend steht RAM in vielen Formen zur Verfügung, wie beispielsweise als synchroner RAM (SRAM), dynamischer RAM (DRAM), synchroner DRAM (SDRAM), Doppeldatenrate-SDRAM (DDR SDRAM), erweiterter SDRAM (ESDRAM), Synchlink DRAM (SLDRAM), Direct Rambus RAM (DRRAM), direkter RAMBUS dynamischer RAM (DRDRAM) und Rambus dynamischer RAM (RDRAM). Außerdem sollen die hierin offenbarten Arbeitsspeicherkomponenten von Systemen oder durch einen Computer umgesetzten Verfahren diese und andere geeignete Typen von Arbeitsspeicher enthalten, wobei sie nicht darauf beschränkt sein sollen.
  • Die obige Beschreibung enthält nur Beispiele für Systeme und durch einen Computer umgesetzte Verfahren. Es ist selbstverständlich nicht möglich, jede vorstellbare Kombination von Komponenten oder von einem Computer umgesetzten Verfahren zum Zweck der Beschreibung dieser Offenbarung zu beschreiben, aber der Fachmann kann erkennen, dass viele weitere Kombinationen und Umsetzungen dieser Offenbarung möglich sind. Ferner sollen solche Begriffe in dem Ausmaß, in dem die Begriffe „enthält“, „hat“, „besitzt“ und dergleichen in der ausführlichen Beschreibung, den Ansprüchen, Anhängen und Zeichnungen verwendet werden, auf eine ähnliche Weise einschließend sein wie der Begriff „aufweisend“, wie „aufweisend“ interpretiert wird, wenn es als Übergangswort in einem Anspruch verwendet wird.
  • Die Beschreibungen der verschiedenen Ausführungsformen wurden zum Zweck einer Veranschaulichung erstellt, sie sollen aber keineswegs erschöpfend oder auf die offenbarten Ausführungsformen eingeschränkt sein. Für Fachleute sind viele Modifizierungen und Variationen offenkundig, die nicht von dem Schutzumfang und Erfindungsgedanken der beschriebenen Ausführungsformen abweichen. Die hierin verwendete Terminologie wurde gewählt, um die Grundgedanken der Ausführungsformen, die praktische Anwendung oder technische Verbesserung gegenüber auf dem Markt gefundenen Technologien bestmöglich zu erklären oder anderen Fachleuten zu ermöglichen, die hierin offenbarten Ausführungsformen zu verstehen.

Claims (26)

  1. System, das aufweist: einen Arbeitsspeicher, der durch einen Computer ausführbare Komponenten speichert; und einen Prozessor, der betriebsfähig mit dem Arbeitsspeicher verbunden ist, der die durch einen Computer ausführbaren Komponenten ausführt, die in dem Arbeitsspeicher gespeichert sind, wobei die durch einen Computer ausführbaren Komponenten aufweisen: eine Community-Erfassungskomponente, die ein unzusammenhängendes Code-Cluster in einer monolithischen Anwendung auf Grundlage eines Code-Eigenschaftsgraphen erfasst, der die monolithische Anwendung kennzeichnet; eine Thema-Modellierungskomponente, die einen funktionalen Zweck des unzusammenhängenden Code-Clusters auf Grundlage eines Geschäftsdokumentenkorpus identifiziert, das der monolithischen Anwendung entspricht; und eine Mikrodienste-Komponente, die einen Mikrodienst empfiehlt, um das unzusammenhängende Code-Cluster auf Grundlage des funktionalen Zwecks zu ersetzen.
  2. System nach Anspruch 1, wobei das Geschäftsdokumentenkorpus mindestens eines von einer Gruppe umfasst, die aus einem Entwurfsdokument, einer Benutzerdokumentation, einer Code-Anmerkung, einem Wiki-Dokument, einem GitHub-Dokument und einem Readme-Dokument besteht, die der monolithischen Anwendung entsprechen.
  3. System nach Anspruch 1, wobei der Code-Eigenschaftsgraph auf einer zeitlichen Code-Weiterentwicklung der monolithischen Anwendung beruht.
  4. System nach Anspruch 3, das ferner aufweist: eine Graph-Komponente, die: den Code-Eigenschaftsgraphen auf Grundlage eines Quellcodes der monolithischen Anwendung generiert, wobei der Code-Eigenschaftsgraph eine Kombination aus einem abstrakten Syntaxbaum, einem Steuerflussgraphen und einem Programmabhängigkeitsgraphen aufweist, die die monolithische Anwendung kennzeichnen; und Kantengewichtungen des Code-Eigenschaftsgraphen auf Grundlage der zeitlichen Code-Weiterentwicklung verstärken, wobei die zeitliche Code-Weiterentwicklung im Laufe der Zeit Änderungen an dem Quellcode der monolithischen Anwendung aufweist.
  5. System nach Anspruch 1, wobei die Thema-Modellierungskomponente den funktionalen Zweck des unzusammenhängenden Code-Clusters durch Verwenden eines latenten Dirichlet-Zuweisungsalgorithmus identifiziert.
  6. System nach Anspruch 1, das ferner aufweist: eine Rückmeldungskomponente, die eine Benutzerrückmeldung sammelt, die dem empfohlenen Mikrodienst und dem unzusammenhängenden Code-Cluster zugehörig ist, wobei die Rückmeldungskomponente Parameter der Community-Erfassungskomponente oder Parameter der Thema-Modellierungskomponente auf Grundlage der gesammelten Benutzerrückmeldung modifiziert.
  7. System nach Anspruch 1, das ferner aufweist: eine Komponente zum Speichern von Abhängigkeitsmustern, die Abhängigkeitsmuster speichert, die aus den Code-Eigenschaftsgraphen von anderen monolithischen Anwendungen erlernt wurden, wobei die Community-Erfassungskomponente und die Thema-Modellierungskomponente die Abhängigkeitsmuster nutzen, um das unzusammenhängende Code-Cluster und den funktionalen Zweck zu identifizieren.
  8. System nach Anspruch 1, wobei die Mikrodienste-Komponente das unzusammenhängende Code-Cluster durch den empfohlenen Mikrodienst ersetzt.
  9. Durch einen Computer umgesetztes Verfahren, das aufweist: Erfassen, durch eine Einheit, die betriebsfähig mit einem Prozessor verbunden ist, eines unzusammenhängenden Code-Clusters in einer monolithischen Anwendung auf Grundlage eines Code-Eigenschaftsgraphen, der die monolithische Anwendung kennzeichnet; Identifizieren, durch die Einheit, eines funktionalen Zwecks des unzusammenhängenden Code-Clusters auf Grundlage eines Geschäftsdokumentenkorpus, das der monolithischen Anwendung entspricht; und Empfehlen, durch die Einheit, einer Mikrodienst-Komponente, die das unzusammenhängende Code-Cluster auf Grundlage des funktionalen Zwecks ersetzen soll.
  10. Durch den Computer umgesetztes Verfahren nach Anspruch 9, wobei das Geschäftsdokumentenkorpus mindestens eines von einer Gruppe umfasst, die aus einem Entwurfsdokument, einer Benutzerdokumentation, einer Code-Anmerkung, einem Wiki-Dokument, einem GitHub-Dokument und einem Readme-Dokument besteht, die der monolithischen Anwendung entsprechen.
  11. Durch den Computer umgesetztes Verfahren nach Anspruch 9, wobei der Code-Eigenschaftsgraph auf einer zeitlichen Code-Weiterentwicklung der monolithischen Anwendung beruht.
  12. Durch den Computer umgesetztes Verfahren nach Anspruch 11, das ferner aufweist: Generieren, durch die Einheit, des Code-Eigenschaftsgraphen auf Grundlage eines Quellcodes der monolithischen Anwendung generiert, wobei der Code-Eigenschaftsgraph eine Kombination aus einem abstrakten Syntaxbaum, einem Steuerflussgraphen und einem Programmabhängigkeitsgraphen aufweist, die die monolithische Anwendung kennzeichnen; und Verstärken, durch die Einheit, von Kantengewichtungen des Code-Eigenschaftsgraphen auf Grundlage der zeitlichen Code-Weiterentwicklung, wobei die zeitliche Code-Weiterentwicklung im Laufe der Zeit Änderungen an dem Quellcode der monolithischen Anwendung aufweist.
  13. Durch den Computer umgesetztes Verfahren nach Anspruch 9, wobei das Identifizieren des funktionalen Zwecks des unzusammenhängenden Code-Clusters einen latenten Dirichlet-Zuweisungsalgorithmus verwendet.
  14. Durch den Computer umgesetztes Verfahren nach Anspruch 9, das ferner aufweist: Sammeln, durch die Einheit, einer Benutzerrückmeldung, die dem empfohlenen Mikrodienst und dem unzusammenhängenden Code-Cluster zugehörig ist; und Modifizieren, durch die Einheit, von Parametern eines Algorithmus, der das Erfassen des unzusammenhängenden Code-Clusters ermöglicht, oder von Parametern eines Algorithmus, der das Identifizieren des funktionalen Zwecks auf Grundlage der gesammelten Benutzerrückmeldung ermöglicht.
  15. Durch einen Computer umgesetztes Verfahren nach Anspruch 9, das ferner aufweist: Speichern, durch die Einheit, von Abhängigkeitsmustern, die aus Code-Eigenschaftsgraphen von anderen monolithischen Anwendungen erlernt wurden, wobei die Abhängigkeitsmuster das Erfassen des unzusammenhängenden Code-Clusters und das Identifizieren des funktionalen Zwecks ermöglichen.
  16. Durch einen Computer umgesetztes Verfahren nach Anspruch 9, das ferner aufweist: Ersetzen, durch die Einheit, des unzusammenhängenden Code-Clusters durch den empfohlenen Mikrodienst.
  17. Computerprogrammprodukt zum Ermöglichen einer automatisierten Empfehlung von Mikrodienst-Aufspaltungsstrategien für monolithische Anwendungen, wobei das Computerprogrammprodukt einen durch einen Computer lesbaren Arbeitsspeicher mit darauf verkörperten Programmanweisungen aufweist, wobei die Programmanweisungen durch eine verarbeitende Komponente ausführbar sind, um die verarbeitende Komponente zu veranlassen zum: Erfassen eines unzusammenhängenden Code-Clusters in einer monolithischen Anwendung auf Grundlage eines Code-Eigenschaftsgraphen, der die monolithische Anwendung kennzeichnet; Identifizieren eines funktionalen Zwecks des unzusammenhängenden Code-Clusters auf Grundlage eines Geschäftsdokumentenkorpus, das der monolithischen Anwendung entspricht; und Empfehlen eines Mikrodienstes, der das unzusammenhängende Code-Cluster auf Grundlage des funktionalen Zwecks ersetzen soll.
  18. Computerprogrammprodukt nach Anspruch 17, wobei das Geschäftsdokumentenkorpus mindestens eines von einer Gruppe umfasst, die aus einem Entwurfsdokument, einer Benutzerdokumentation, einer Code-Anmerkung, einem Wiki-Dokument, einem GitHub-Dokument und einem Readme-Dokument besteht, die der monolithischen Anwendung entsprechen.
  19. Computerprogrammprodukt nach Anspruch 17, wobei der Code-Eigenschaftsgraph auf einer zeitlichen Code-Weiterentwicklung der monolithischen Anwendung beruht.
  20. Computerprogrammprodukt nach Anspruch 19, wobei die Programmanweisungen ferner ausführbar sind, um die verarbeitende Komponente zu veranlassen zum: Generieren des Code-Eigenschaftsgraphen auf Grundlage eines Quellcodes der monolithischen Anwendung, wobei der Code-Eigenschaftsgraph eine Kombination aus einem abstrakten Syntaxbaum, einem Steuerflussgraphen und einem Programmabhängigkeitsgraphen aufweist, die die monolithische Anwendung kennzeichnen; und Verstärken von Kantengewichtungen des Code-Eigenschaftsgraphen auf Grundlage der zeitlichen Code-Weiterentwicklung, wobei die zeitliche Code-Weiterentwicklung im Laufe der Zeit Änderungen an dem Quellcode der monolithischen Anwendung aufweist.
  21. Vorrichtung, aufweisend: einen Prozessor, der betriebsfähig mit einem Arbeitsspeicher verbunden ist, der durch einen Computer ausführbare Komponenten ausführt, die in dem Arbeitsspeicher gespeichert sind, wobei die durch den Computer ausführbaren Komponenten aufweisen: eine Community-Erfassungskomponente, die Kandidaten für eine Mikrodienst-Aufspaltung in einer monolithischen Anwendung auf Grundlage eines Code-Eigenschaftsgraphen erfasst, der der monolithischen Anwendung entspricht; und eine Thema-Modellierungskomponente, die Funktionen identifiziert, die jeweils durch die identifizierten Kandidaten auf Grundlage von Geschäftsdokumenten durchgeführt werden, die der monolithischen Anwendung entsprechen.
  22. Vorrichtung nach Anspruch 21, wobei die Geschäftsdokumente mindestens eines von einer Gruppe umfassen, die aus einem Entwurfsdokument, einer Benutzerdokumentation, einer Code-Anmerkung, einem Wiki-Dokument, einem GitHub-Dokument und einem Readme-Dokument bestehen, die der monolithischen Anwendung entsprechen.
  23. Vorrichtung nach Anspruch 21, die ferner aufweist: eine Graph-Komponente, die den Code-Eigenschaftsgraphen auf Grundlage von Quellcode der monolithischen Anwendung generiert und den Code-Eigenschaftsgraphen auf Grundlage einer zeitlichen Code-Weiterentwicklung der monolithischen Anwendung modifiziert.
  24. Durch einen Computer umgesetztes Verfahren, das aufweist: Identifizieren, durch eine in Datenaustausch mit einem Prozessor stehende Einheit, von Kandidaten für eine Mikrodienst-Aufspaltung in einer monolithischen Anwendung auf Grundlage eines Code-Eigenschaftsgraphen, der der monolithischen Anwendung entspricht; und Identifizieren, durch die Einheit, von Funktionen, die jeweils durch die identifizierten Kandidaten auf Grundlage von Geschäftsdokumenten durchgeführt werden, die der monolithischen Anwendung entsprechen.
  25. Durch einen Computer umgesetztes Verfahren nach Anspruch 24, das ferner aufweist: Generieren, durch die Einheit, des Code-Eigenschaftsgraphen auf Grundlage eines Quellcodes der monolithischen Anwendung; und Modifizieren, durch die Einheit, des Code-Eigenschaftsgraphen auf Grundlage einer zeitlichen Code-Weiterentwicklung der monolithischen Anwendung.
  26. Computerprogramm, das Programmcodemittel aufweist, die angepasst sind, um das Verfahren nach einem der Ansprüche 9 bis 16 oder des Anspruchs 24 oder 25 durchzuführen, wenn das Programm auf einem Computer ausgeführt wird.
DE112021000189.2T 2020-01-23 2021-01-18 Mikrodienst-Aufspaltungsstrategie von monolithischen Anwendungen Pending DE112021000189T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/750,532 2020-01-23
US16/750,532 US11416243B2 (en) 2020-01-23 2020-01-23 Microservice decomposition strategy of monolithic applications
PCT/IB2021/050351 WO2021148927A1 (en) 2020-01-23 2021-01-18 Microservice decomposition strategy of monolithic applications

Publications (1)

Publication Number Publication Date
DE112021000189T5 true DE112021000189T5 (de) 2022-09-29

Family

ID=76970068

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112021000189.2T Pending DE112021000189T5 (de) 2020-01-23 2021-01-18 Mikrodienst-Aufspaltungsstrategie von monolithischen Anwendungen

Country Status (6)

Country Link
US (1) US11416243B2 (de)
JP (1) JP2023510951A (de)
CN (1) CN114830091A (de)
DE (1) DE112021000189T5 (de)
GB (1) GB2607528A (de)
WO (1) WO2021148927A1 (de)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11288053B2 (en) * 2019-08-15 2022-03-29 Microstrategy Incorporated Conversion and restoration of computer environments to container-based implementations
US11397576B2 (en) * 2020-03-18 2022-07-26 Hcl Technologies Limited Decomposing a monolithic application into one or more micro services
US11496610B2 (en) * 2020-06-26 2022-11-08 Verizon Patent And Licensing Inc. Network management data translation, querying, and discrepancy detection
US11442725B1 (en) * 2020-12-03 2022-09-13 Amazon Technologies, Inc. Software modernization refactoring of local calls to network calls
US11500628B1 (en) * 2020-12-03 2022-11-15 Amazon Technologies, Inc. Isolated code detection from application code analysis
EP4113939B1 (de) * 2021-07-02 2024-04-03 Tata Consultancy Services Limited Verwaltung und orchestrierung einer heterogenen netzwerkumgebung unter verwendung dynamischer, robuster und netzwerkbewusster mikrodienste
US11853753B1 (en) * 2021-08-23 2023-12-26 Amazon Technologies, Inc. Detection, presentation, and resolution of bottlenecks in monolith decomposition
US11847443B2 (en) 2021-09-07 2023-12-19 International Business Machines Corporation Constraints-based refactoring of monolith applications through attributed graph embeddings
US11726778B2 (en) 2021-09-29 2023-08-15 International Business Machines Corporation Translating clusters of a monolith application to microservices
US11836538B2 (en) * 2021-10-11 2023-12-05 International Business Machines Corporation Heterogeneous graph generation for application microservices
US11768679B2 (en) * 2021-11-30 2023-09-26 International Business Machines Corporation Identifying microservices for a monolith application through static code analysis
US11853725B2 (en) 2021-12-06 2023-12-26 International Business Machines Corporation Microservices recommendation framework
US11860980B2 (en) * 2022-01-05 2024-01-02 International Business Machines Corporation Cognitive method to split monolithic architecture into microservice architecture
US11893369B2 (en) 2022-01-21 2024-02-06 Red Hat, Inc. Determining a distributed system topology from a single application deployment
US11900087B1 (en) * 2022-03-23 2024-02-13 Amazon Technologies, Inc. Application binary replatforming as a service
US11758010B1 (en) 2022-09-14 2023-09-12 International Business Machines Corporation Transforming an application into a microservice architecture
CN117311801B (zh) * 2023-11-27 2024-04-09 湖南科技大学 一种基于网络化结构特征的微服务拆分方法

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8973008B2 (en) 2005-05-10 2015-03-03 Oracle America, Inc. Combining different resource types
CA2641941C (en) 2006-02-10 2014-09-09 Make Technologies, Inc. Legacy software modernization system
US7509298B2 (en) 2006-03-31 2009-03-24 International Business Machines Corporation System and method for a logical-model based application understanding and transformation
US10230571B2 (en) * 2014-10-30 2019-03-12 Equinix, Inc. Microservice-based application development framework
CN107667517B (zh) 2015-06-03 2021-03-19 瑞典爱立信有限公司 用于能够实现第二容器上的反向代理的在第一服务容器内的被植入代理器
US9842045B2 (en) * 2016-02-19 2017-12-12 International Business Machines Corporation Failure recovery testing framework for microservice-based applications
US20180136931A1 (en) * 2016-11-14 2018-05-17 Ca, Inc. Affinity of microservice containers
US10356214B2 (en) * 2017-03-29 2019-07-16 Ca, Inc. Composing monolithic applications based on multi-container applications
US10412154B2 (en) 2017-04-17 2019-09-10 Red Hat, Inc. Configuration recommendation for a microservice architecture
US10430250B2 (en) 2017-10-11 2019-10-01 International Business Machines Corporation Decomposing monolithic application into microservices
WO2019113308A1 (en) 2017-12-05 2019-06-13 Franchitti Jean Claude Active adaptation of networked compute devices using vetted reusable software components
US10620947B2 (en) * 2018-02-15 2020-04-14 Wipro Limited Method and system for migrating monolithic enterprise applications to microservice architecture
US10956680B1 (en) * 2018-10-01 2021-03-23 Knexus Research Corporation System and method for temporal expressions processing
US10637952B1 (en) * 2018-12-19 2020-04-28 Sap Se Transition architecture from monolithic systems to microservice-based systems
US20200285451A1 (en) * 2019-03-05 2020-09-10 Sap Se Decoupling microservices from a monolithic application
US11088914B2 (en) * 2019-07-31 2021-08-10 T-Mobile Usa, Inc. Migrating a monolithic software application to a microservices architecture

Also Published As

Publication number Publication date
GB202212227D0 (en) 2022-10-05
CN114830091A (zh) 2022-07-29
GB2607528A (en) 2022-12-07
US11416243B2 (en) 2022-08-16
JP2023510951A (ja) 2023-03-15
US20210232390A1 (en) 2021-07-29
WO2021148927A1 (en) 2021-07-29

Similar Documents

Publication Publication Date Title
DE112021000189T5 (de) Mikrodienst-Aufspaltungsstrategie von monolithischen Anwendungen
DE102018111905A1 (de) Domänenspezifische Sprache zur Erzeugung rekurrenter neuronaler Netzarchitekturen
DE112018002984T5 (de) Konformitätsbewusste Laufzeiterzeugung auf Grundlage von Anwendungsmustern und Risikobeurteilung
DE112021000467T5 (de) Generierung von mikrodiensten aus einer monolithischen anwendung auf grundlage von laufzeit-traces
CN110929752B (zh) 基于知识驱动和数据驱动的分群方法及相关设备
DE112018005011T5 (de) Ausführen eines kognitiven lern-workflows
DE112020000584T5 (de) Verfahren für unüberwachte bild-zu-bild-übersetzung mit wenigen aufnahmen
DE112021001566T5 (de) Ermitteln von abhängigkeiten multivariater zeitreihendaten
DE112021002820T5 (de) Dynamische automatisierung einer auswahl von pipeline-artefakten
DE112021005422T5 (de) Auf lernen beruhende arbeitslast-ressourcenoptimierung für datenbank-managementsysteme
DE112018004660T5 (de) Verwenden von kommentaren zum bereitstellen von optimierungen
DE112017008151T5 (de) Schaltungen geringer tiefe als quantenklassifikatoren
DE112021004559T5 (de) System zur robusten vorhersage bei unregelmässigen zeitreihen in dialysepatientenakten
DE112020002684T5 (de) Ein Mehrfachverfahrenssystem für optimale Vorhersagemodellauswahl
DE112018001290T5 (de) Verfahren zum Schätzen der Löschbarkeit von Datenobjekten
DE112020005257T5 (de) Fehler-ursachen-analyse unter verwendung einer granger-kausalität
DE112020003744T5 (de) Durch dienstqualitätskriterien vorgegebenes automatisiertes betriebsdatenmanagement
DE112021000689T5 (de) Attestierung von neuronalen abläufen
DE112021001492T5 (de) Verfahren und systeme zur graphdatenverarbeitung mit hybridem schlussfolgern
DE112020004229T5 (de) Neues framework für zeitliche lokalisierung von aktionen mit wenigen aufnahmen
Gaykar et al. Faulty Node Detection in HDFS Using Machine Learning Techniques.
US11842175B2 (en) Dynamic recommendations for resolving static code issues
DE102021127398A1 (de) Beziehungserkennung und -quantifizierung
Zhang et al. Feature selection with symmetrical complementary coefficient for quantifying feature interactions
CN114610590A (zh) 作业运行时长确定方法、装置、设备及存储介质

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R084 Declaration of willingness to licence