IBM Mono2Micro -Übersicht

IBM® Mono2Micro™ ist ein halbautomatisches Dienstprogramm zur Umstrukturierung von monolithischen Java®-Anwendungen in Microservices, die Sie auf WebSphere® Application Server Liberty oder Open Liberty. Sie können IBM Mono2Micro und die darin enthaltenen Empfehlungen verwenden, um automatisch einen wichtigen Teil des Codes zu generieren, den Sie zum Erstellen und Implementieren Ihrer Mikroservices benötigen.

Bei der statischen und dynamischen Analyse verwendet IBM Mono2Micro seine Machine Learning-Engine und eine Analyse des monolithischen Java -Anwendungscodes zum Generieren von Partitionsempfehlungen. Partitionsempfehlungen sind Gruppierungen von Klassen im Monolithen, die als Ausgangspunkt für Mikroservices dienen können. Die empfohlenen Partitionen sowie weitere relevante Informationen werden in einer intuitiven Workbench-Benutzerschnittstelle angezeigt. Basierend auf den integrierten Kenntnissen über die Programmiersprache Java bietet IBM Mono2Micro auch eine umfassende semantische Analyse von Klassen-zu-Klassen-Aufrufen. Durch die Verwendung der Workbench-Benutzerschnittstelle und der detaillierten Analyse erhalten Sie ein klares Bild der Partitionierungsempfehlungen, die Sie entsprechend Ihren Geschäftsanforderungen iterativ optimieren können. Nachdem Sie sich für eine bestimmte Partitionierungsempfehlung entschieden haben, können Sie IBM Mono2Micro ausführen, um automatisch einen wichtigen Teil des Codes zu generieren, den Sie zum Erstellen und Implementieren der empfohlenen Partitionen zusammen mit Ihrem vorhandenen Monolith-Code benötigen. Nachdem Sie den generierten Code überprüft haben, können Sie die Empfehlungen weiterhin schrittweise anpassen und Code generieren, bis Sie die gewünschten Mikroservices haben. Anschließend können Sie die Mikroservices in WebSphere Application Server Liberty oder Open Libertyausführen.

IBM Mono2Micro ist verfügbar als Teil von IBM WebSphere Hybrid Edition und IBM Cloud Pak® for Applications.

Die Reise IBM Mono2Micro

IBM Mono2Micro -Befehle bieten die folgenden Funktionen.

Datenerfassung

Damit IBM Mono2Micro Ihre Anwendung analysieren kann, müssen Sie zuerst den Befehl mono2micro analyze für den zugehörigen Code ausführen und anschließend Ihre Anwendung mit Instrumentierung ausführen, um alle zu analysierenden Daten zu erfassen.

  1. Führen Sie den Befehl mono2micro analyze für Ihr Anwendungsarchiv aus, um JSON-Tabellendateien zu erstellen, die Informationen zum Code enthalten, wie z. B. vollständige Klassennamen, Methodensignaturen, Statusvariablen und Vererbungsbeziehungen.
  2. (Optional) Implementieren Sie Ihre Anwendung mit aktiviertem Binärinstrumenter.
  3. (Optional) Führen Sie den Befehl mono2micro usecase mit Ihren Geschäftsanwendungsfällen aus, um eine oder mehrere JSON-Kontextdateien und Protokolldateien für die Analyse zu erstellen.
KI-Analyse für Partitionsempfehlungen

Um die beiden Refactoring-Optionen von IBM Mono2Microabzurufen, führen Sie den Befehl mono2micro recommend für Ihre zuvor erfassten Dateien aus, um Berichte und JSON-Diagramme mit den Partitionsempfehlungen abzurufen.

  1. Platzieren Sie Dateien an Positionen im Eingabeverzeichnis, um Empfehlungen aus der statischen Codeanalyse und optional der Codegenerierung abzurufen.
    • Nur für die statische Codeanalyse: Stellen Sie JSON-Tabellendateien (aus mono2micro analyze) an die richtige Position im Eingabeverzeichnis.
    • Für die statische Codeanalyse und Codegenerierung platzieren Sie JSON-Tabellendateien (aus mono2micro analyze), Protokolldateien (aus dem Anwendungsserver während der Ausführung von Geschäftsanwendungsfällen) und die JSON-Kontextdatei (aus mono2micro usecase während der Ausführung von Geschäftsanwendungsfällen) an den entsprechenden Positionen im Eingabeverzeichnis.
  2. Führen Sie den Befehl mono2micro recommend aus, um Berichte und ein Diagramm-JSON mit den Refactoring-Ansätzen zu erstellen.
Partitionsrefactoring

Führen Sie den Befehl mono2micro workbench aus, um die Workbench-Benutzerschnittstelle zu starten, in der Sie sich ein besseres Verständnis Ihrer Anwendung und ihrer Klassen verschaffen können, indem Sie die beiden Refactoring-Ansätze untersuchen, die für Ihre Anwendung erstellt werden. Die beiden Refactoring-Ansätze von IBM Mono2Micro sind Geschäftslogik und natürliche Nähte. Diese Empfehlungen wurden anhand der Analyse der Laufzeitaufrufe Ihrer Anwendung und der erkannten Datenabhängigkeiten erstellt. Wenn keiner dieser Ansätze Ihren Vorstellungen entspricht, erstellen und speichern Sie einen Plan für Ihre eigene angepasste Partitionierungslösung.

  1. Starten Sie das Container-Image der Workbench-Benutzerschnittstelle mit dem Befehl mono2micro workbench .
  2. Greifen Sie auf die Benutzerschnittstelle in Ihrem Browser zu und laden Sie die JSON-Datei, die mit dem Befehl mono2micro recommend erzeugt wird.
  3. Untersuchen Sie Refactoring-Ansätze.
  4. (Optional) Erstellen und speichern Sie die JSON-Datei mit den Optionen für das angepasste Refactoring.
Codegenerierung

Führen Sie den Befehl mono2micro transform aus, um automatisch Startcode für die Erstellung Ihrer Mikroservices zu erstellen.

  1. (Optional) Wenn Sie die natürliche Nähte oder das angepasste Refactoring verwenden möchten, führen Sie den Befehl mono2micro refine aus.
  2. Führen Sie den Befehl mono2micro transform aus, um Code zu erzeugen.
  3. Bearbeiten und implementieren Sie Code in den Testumgebungen.

Funktionsweise

Die folgende Abbildung zeigt den Workflow über IBM Mono2Micro. Die blauen Kästchen, die mit dem Begriff (Action)beginnen, stellen Benutzeraktionen dar. Die nicht ausgefüllten Felder, die mit dem Begriff (File)beginnen, stellen Dateien dar. Die durchgezogenen Linien zeigen auf die nächsten Schritte. Die gestrichelten Linien zeigen die Verwendung von Dateien und zeigen auf die nächsten Benutzeraktionen bzw. Dateien im Workflow. Der Workflow beginnt mit Anwendungscode und endet nach der Analyse und Codegenerierung mit generiertem Startercode für Partitionen.


Komponenten, Container und Workflow von IBM Mono2Micro

IBM Mono2Micro -Komponenten

IBM Mono2Micro besteht aus den folgenden sechs Komponenten, die in der vorherigen Abbildung dargestellt sind:

Code Analyzer (mono2micro-bluejay Container oder binary analyzer .jar)
Der Befehl mono2micro analyze , der den Java -Code monolithischer Anwendungen analysiert und optional instrumentiert.
Binärer Instrumenenter (minerva-agent-1.0.jar)
Ein Java -Agent, der eine aktive Anwendung instrumentiert, die auf dem Anwendungsserver implementiert ist
Anwendungsfallrecorder (Flicker)
Führen Sie mit dem Befehl mono2micro usecase ein Java -Programm aus, das Anwendungsfallnamen und -zeiten aufzeichnet. Verwenden Sie sie, wenn Sie Testsuites oder Testfälle ausführen, die verschiedenen Geschäftsanwendungsfällen einer monolithischen Java -Anwendung entsprechen.
Die AI-Engine für Partitionsempfehlungen (mono2micro-aipl -Container)
Der Befehl mono2micro recommend führt die AI-Engine von IBM Mono2Microaus. Es verwendet Verfahren für maschinelles Lernen für die vom Benutzer bereitgestellten Laufzeittraces und Metadaten, die aus der Quellcodeanalysefunktion abgerufen werden. Sie verwendet die resultierenden Informationen, um Partitionsempfehlungen zu generieren, die letztendlich zu Mikroservices werden können. Dieser Befehl erstellt auch einen detaillierten Bericht für die empfohlenen Partitionen.
IBM Mono2Micro Workbench-Benutzerschnittstelle
Der mono2micro-ui -Container, der die Empfehlungen der KI-Engine anzeigt, wenn er mit dem Befehl mono2micro workbench gestartet wird. Die Empfehlungen, die Sie von der IBM Mono2Micro AI-Engine erhalten haben, werden in Ihrem lokalen Speicher gespeichert. Sie können die Empfehlungen in der Benutzerschnittstelle der Workbench laden, um sie in einem grafischen Visualizer anzuzeigen. Über die Benutzerschnittstelle können Sie die KI-generierten Partitionsempfehlungen ändern.
Codegenerator (mono2micro-cardinal -Container)

Der Befehl mono2micro transform ruft den Codegenerator auf, der über umfassende Kenntnisse der Semantik der Programmiersprache Java verfügt. Der Codegenerator verwendet die Empfehlungen der KI-Engine, um Folgendes zu tun:

  • Bereitstellung detaillierter Aufrufanalysen der empfohlenen Partitionen, die schließlich als Mikroservices implementiert werden können.
  • Generieren Sie detaillierte Vererbungsanalysen der empfohlenen Partitionen.
  • Generieren Sie einen wichtigen Teil des Codes, der zur Realisierung der empfohlenen Partitionen in Containern erforderlich ist.

Sie können die Tools von Mono2Micro herunterladen und auf Ihrem lokalen Computer ausführen.

Schritte für das Refactoring einer monolithischen Java -Anwendung

Die folgenden Schritte beschreiben, wie ein Refactoring einer monolithischen Java -Anwendung mithilfe von IBM Mono2Microausgeführt wird. Sie stellen eine detailliertere Version der vorherigen Abbildung dar.

  1. Analysieren Sie den Java -Code einer monolithischen Anwendung mithilfe der Codeanalysefunktion.

  2. Wählen Sie aus, ob Empfehlungen nur auf der Basis der Analyse des statischen Anwendungscodes oder auch auf der Basis der Codegenerierung abgerufen werden sollen. Fahren Sie nur für die Analyse des statischen Codes mit Schritt 3fort. Führen Sie für die statische Codeanalyse und Codegenerierung die folgenden Schritte aus, um Codegenerierung hinzuzufügen:

    1. Implementieren Sie die monolithische Java -Anwendung in nicht produktionsbasierten, aber repräsentativen Umgebungen zusammen mit dem Java -Agenten des binären Instrumenters. Verwenden Sie die JSON-Dateien, die vom Code Analyzer generiert werden, als Eingabe.

      Die JSON-Dateien sind symTable.json, refTable.json und instrumenter-config.json.

    2. Führen Sie Testfälle für verschiedene Geschäftsanwendungsfälle in der implementierten monolithischen Java -Anwendung aus.

      Führen Sie den Recorder für Anwendungsfälle aus, um die Start-und Stoppzeiten einzelner Testfälle, die den verschiedenen Geschäftsanwendungsfällen entsprechen, zu benennen und aufzuzeichnen.

    3. Ordnen Sie die Protokolldateien, die die Traces enthalten, zusammen mit den JSON-Dateien (symTable.json und refTable.json) an, die von der Codeanalysefunktion und dem Anwendungsfallrecorder (mindestens eine .json -Kontextdatei) in den entsprechenden Unterverzeichnissen erstellt werden.

    4. Führen Sie die AI-Engine für das Verzeichnis aus, in dem sich die Protokolldateien und JSON-Dateien befinden.

      Die KI-Engine analysiert den Inhalt des Verzeichnisses und generiert die Partitionsempfehlungen in der Datei final_graph.json zusammen mit Berichten im HTML-Format.

      Die AI-Engine erstellt ein Verzeichnis, das alle erforderlichen Artefakte enthält, die für die Codegenerierung erforderlich sind. Außerdem werden die Partitionen und Übernahmeberichte im HTML-Format im Verzeichnis erstellt. Der Partitionsbericht enthält die Analyse der detaillierten Aufrufe für die Partitionsempfehlungen, bei denen es sich um die Anfänge von Mikroservices handeln kann. Im Inheritance-Bericht werden alle vorhandenen Vererbungsketten in der zu prüfenden Anwendung detailliert beschrieben.

  3. Zeigen Sie die Partitionsempfehlungen an, indem Sie die Datei final_graph.json laden.

    In der Workbench-Benutzerschnittstelle können Sie die Empfehlungen anpassen, optimieren und die Änderungen in einer JSON-Datei speichern. Sie können die Partitionen und Übernahmeberichte in jedem Browser anzeigen.

  4. Wenn Sie in Schritt 2 Codegenerierung hinzugefügt haben, führen Sie weitere Befehle aus, um Artefakte und Startercode herzustellen.

    1. Wenn Sie Partitionsempfehlungen in einem vorherigen Schritt angepasst haben, führen Sie den Befehl mono2micro refine aus, um die neuen Artefakte für die Codegenerierung zusammen mit neuen Berichten zu erstellen.
    2. Führen Sie den Befehl mono2micro transform aus, um automatisch den Startcode für die Realisierung der Mikroserviceempfehlungen zu generieren.
  5. Sie können die Schritte erneut durchlaufen, beginnend mit dem Schritt, der den mono2micro recommend -Befehl ausführt, um zu den Mikroservices Ihrer Wahl zu gelangen.

Einige der vorherigen Schritte werden ausführlich in anderen IBM Mono2Micro -Themen erläutert.