IBM Mono2Micro

IBM® Mono2Micro™ est un utilitaire semi-automatique permettant de refondre les applications monolithiques Java® en microservices que vous exécutez sur WebSphere® Application Server Liberty ou sur Open Liberty. Vous pouvez utiliser IBM Mono2Micro et les recommandations qu'il fournit pour générer automatiquement une partie importante du code dont vous avez besoin pour générer et déployer vos microservices.

Grâce à l'analyse statique et dynamique, IBM Mono2Micro utilise son moteur d'apprentissage automatique et une analyse du code d'application monolithique Java pour générer des recommandations de partition. Les recommandations de partition sont des regroupements de classes dans le monolithe qui peuvent servir de points de départ pour les microservices. Les partitions recommandées ainsi que d'autres informations pertinentes sont affichées dans une interface utilisateur intuitive du plan de travail. Sur la base de ses connaissances intégrées du langage de programmation Java , IBM Mono2Micro fournit également une analyse sémantique approfondie des appels de classe à classe. En utilisant l'interface utilisateur du plan de travail et l'analyse détaillée, vous obtenez une image claire des recommandations de partitionnement, que vous pouvez affiner de manière itérative pour répondre à vos besoins métier. Après avoir décidé d'une recommandation de partitionnement spécifique, vous pouvez exécuter IBM Mono2Micro pour générer automatiquement une partie importante du code dont vous avez besoin pour générer et déployer les partitions recommandées avec votre code monolithique existant. Une fois que vous avez examiné le code généré, vous pouvez continuer à affiner itérativement des recommandations et générer du code jusqu'à obtenir les microservices souhaités. Vous pouvez ensuite exécuter les microservices sur WebSphere Application Server Liberty ou Open Liberty.

IBM Mono2Micro est disponible dans le cadre de IBM WebSphere Hybrid Edition et IBM Cloud Pak® for Applications.

Le parcours IBM Mono2Micro

Les commandes IBM Mono2Micro offrent les fonctionnalités suivantes.

Collecte de données

Pour que IBM Mono2Micro analyse votre application, exécutez d'abord la commande mono2micro analyze sur son code, puis exécutez votre application avec l'instrumentation pour collecter toutes les données à analyser.

  1. Exécutez la commande mono2micro analyze sur votre archive d'application pour générer des fichiers JSON de table contenant des informations sur le code, telles que les noms de classe complets, les signatures de méthode, les variables d'état et les relations d'héritage.
  2. (Facultatif) Déployez votre application avec l'instrumenter binaire activé.
  3. (Facultatif) Exécutez la commande mono2micro usecase avec vos cas d'utilisation métier pour générer un ou plusieurs fichiers JSON de contexte et des fichiers journaux à des fins d'analyse.
Analyse de l'IA pour les recommandations de partition

Pour obtenir les deux options de restructuration d' IBM Mono2Micro, exécutez la commande mono2micro recommend sur vos fichiers précédemment collectés pour obtenir des rapports et des graphiques JSON avec les recommandations de partition.

  1. Placez les fichiers dans des emplacements du répertoire d'entrée pour obtenir les recommandations de l'analyse de code statique et, éventuellement, de la génération de code.
    • Pour l'analyse du code statique uniquement, placez les fichiers JSON de table (provenant de mono2micro analyze) à l'emplacement approprié dans le répertoire d'entrée.
    • Pour l'analyse de code statique et la génération de code, placez les fichiers JSON de table (à partir de mono2micro analyze), les fichiers journaux (à partir du serveur d'applications lors de l'exécution de cas d'utilisation métier) et le fichier JSON de contexte (à partir de mono2micro usecase lors de l'exécution de cas d'utilisation métier) dans les emplacements appropriés du répertoire d'entrée.
  2. Exécutez la commande mono2micro recommend pour générer des rapports et un JSON de graphique avec les approches de restructuration.
Restructuration de partition

Exécutez la commande mono2micro workbench pour lancer l'interface utilisateur du plan de travail dans laquelle vous pouvez mieux comprendre votre application et ses classes en examinant les deux approches de restructuration créées pour votre application. Les deux approches de restructuration par IBM Mono2Micro sont la logique métier et les coutures naturelles. Ces recommandations ont été créées à partir de l'analyse des appels d'exécution de votre application et des dépendances de données détectées. Si aucune approche n'est tout à fait ce que vous voulez, créez et sauvegardez un plan pour votre propre solution de partitionnement personnalisée.

  1. Lancez l'image de conteneur de l'interface utilisateur du plan de travail à l'aide de la commande mono2micro workbench .
  2. Accédez à l'interface utilisateur dans votre navigateur et chargez le fichier JSON qui est généré à partir de la commande mono2micro recommend .
  3. Explorez les approches de restructuration.
  4. (Facultatif) Créez et enregistrez le fichier JSON de l'option de restructuration personnalisée.
Génération de code

Exécutez la commande mono2micro transform pour générer automatiquement le code de démarrage permettant de créer vos microservices.

  1. (Facultatif) Si vous choisissez d'utiliser les couches naturelles ou l'approche de restructuration personnalisée, exécutez la commande mono2micro refine .
  2. Exécutez la commande mono2micro transform pour générer du code.
  3. Editer et déployer le code dans les environnements de test.

Fonctionnement

La figure suivante illustre le flux de travaux via IBM Mono2Micro. Les cases bleues, qui commencent par le terme (Action), représentent les actions utilisateur. Les zones non remplies, qui commencent par le terme (File), représentent des fichiers. Les traits pleins indiquent les prochaines étapes. Les lignes pointillées indiquent les utilisations des fichiers et les actions ou les fichiers utilisateur suivants dans le flux de travaux. Le flux de travaux commence par le code d'application et, après analyse et génération de code, se termine par le code de démarrage généré pour les partitions.


Composants, conteneurs et flux de travaux IBM Mono2Micro

Composants IBM Mono2Micro

IBM Mono2Micro comprend les six composants suivants, qui sont affichés dans la figure précédente.

Analyseur de code (conteneurmono2micro-bluejay ou binary analyzer .jar)
La commande mono2micro analyze qui analyse et, en option, instrumde le code Java des applications monolithiques.
Instrumenter binaire (minerva-agent-1.0.jar)
Agent Java qui instrumet une application en cours d'exécution déployée sur le serveur d'applications.
Utiliser l'enregistreur de cas (Flicker)
Exécutez avec la commande mono2micro usecase un programme Java qui enregistre les noms de cas d'utilisation et les heures. Utilisez-le lorsque vous exécutez des suites de tests ou des scénarios de test correspondant à différents cas d'utilisation métier d'une application monolithique Java .
Moteur d'IA pour les recommandations de partition (conteneurmono2micro-aipl )
La commande mono2micro recommend exécute le moteur d'intelligence artificielle d' IBM Mono2Micro. Il utilise des techniques d'apprentissage automatique sur les traces et métadonnées d'exécution fournies par l'utilisateur et obtenues à partir de l'analyseur de code source. Il utilise les informations obtenues pour générer des recommandations de partition qui peuvent éventuellement devenir des microservices. Cette commande génère également un rapport détaillé pour les partitions recommandées.
IBM Mono2Micro
Le conteneur mono2micro-ui qui affiche les recommandations du moteur d'IA lorsqu'il est lancé avec la commande mono2micro workbench . Les recommandations obtenues à partir du moteur d'intelligence artificielle IBM Mono2Micro sont conservées dans votre stockage local. Vous pouvez charger les recommandations dans l'interface utilisateur du plan de travail pour les afficher dans un visualiseur graphique. Avec l'interface utilisateur, vous pouvez modifier les recommandations de partition générées par l'IA.
Générateur de code (conteneurmono2micro-cardinal )

La commande mono2micro transform appelle le générateur de code, qui possède une connaissance approfondie de la sémantique du langage de programmation Java . Le générateur de code utilise les recommandations du moteur d'IA pour effectuer les opérations suivantes:

  • Fournir des analyses d'appel détaillées des partitions recommandées qui peuvent éventuellement être implémentées en tant que microservices.
  • Générez des analyses d'héritage détaillées des partitions recommandées.
  • Générez une partie importante du code nécessaire pour réaliser les partitions recommandées dans les conteneurs.

Vous pouvez télécharger les outils Mono2Micro et les exécuter sur votre ordinateur local.

Procédure de restructuration d'une application Java monolithique

Les étapes suivantes expliquent comment restructurer une application monolithique Java à l'aide d' IBM Mono2Micro. Il s'agit d'une version plus détaillée de la figure précédente.

  1. Analysez le code Java d'une application monolithique à l'aide de l'analyseur de code.

  2. Choisissez d'obtenir des recommandations basées uniquement sur l'analyse du code statique de l'application ou d'obtenir également la génération de code. Pour l'analyse du code statique uniquement, passez à l' étape 3. Pour l'analyse de code statique et la génération de code, procédez comme suit pour ajouter la génération de code:

    1. Déployez l'application monolithique Java dans des environnements hors production mais représentatifs avec l'agent Java de l'instrumenter binaire. Utilisez les fichiers JSON générés par l'analyseur de code comme entrée.

      Les fichiers JSON sont symTable.json, refTable.json et instrumenter-config.json.

    2. Exécutez des scénarios de test correspondant à différents cas d'utilisation métier sur l'application Java monolithique déployée.

      Exécutez l'enregistreur de cas d'utilisation pour nommer et enregistrer les heures de début et de fin des scénarios de test individuels qui correspondent aux différents cas d'utilisation métier.

    3. Organisez les fichiers journaux qui contiennent les traces ainsi que les fichiers JSON (symTable.json et refTable.json) générés par l'analyseur de code et l'enregistreur de cas d'utilisation (un ou plusieurs fichiers .json de contexte) dans les sous-répertoires appropriés.

    4. Exécutez le moteur d'IA dans le répertoire où les fichiers journaux et les fichiers JSON sont conservés.

      Le moteur d'IA analyse le contenu du répertoire et génère les recommandations de partition dans le fichier final_graph.json avec des rapports au format HTML.

      Le moteur d'IA crée un répertoire qui contient tous les artefacts nécessaires à la génération de code. Il génère également les partitions et les rapports d'héritage au format HTML dans le répertoire. Le rapport sur les partitions contient l'analyse d'appel détaillée pour les recommandations de partition, qui peut être le début des microservices. Le rapport d'héritage détaille les chaînes d'héritage existantes dans l'application étudiée.

  3. Affichez les recommandations de partition en chargeant le fichier final_graph.json .

    Dans l'interface utilisateur du plan de travail, vous pouvez ajuster et affiner les recommandations et enregistrer les modifications dans un fichier JSON. Vous pouvez afficher les partitions et les rapports d'héritage dans n'importe quel navigateur.

  4. Si vous avez ajouté la génération de code à l'étape 2, exécutez d'autres commandes pour générer des artefacts et du code de démarrage.

    1. Si vous avez ajusté les recommandations de partitionnement lors d'une étape précédente, exécutez la commande mono2micro refine pour générer les nouveaux artefacts pour la génération de code avec les nouveaux rapports.
    2. Exécutez la commande mono2micro transform pour générer automatiquement le code de démarrage permettant de réaliser les recommandations de microservice.
  5. Vous pouvez répéter les étapes, en commençant par l'étape qui exécute la commande mono2micro recommend , pour obtenir les microservices de votre choix.

Certaines des étapes précédentes sont expliquées en détail dans d'autres rubriques IBM Mono2Micro .