Visión general de IBM Mono2Micro

IBM® Mono2Micro™ es una utilidad semiautomatizada para refactorizar aplicaciones monolíticas Java® en microservicios que se ejecutan en WebSphere® Application Server Liberty o Open Liberty. Puede utilizar IBM Mono2Micro y las recomendaciones que proporciona para generar automáticamente una parte significativa del código que necesita para crear y desplegar los microservicios.

Mediante el análisis estático y dinámico, IBM Mono2Micro utiliza su motor de aprendizaje automático y un análisis del código de aplicación monolítico de Java para generar recomendaciones de partición. Las recomendaciones de partición son agrupaciones de clases en el monolito que pueden servir como puntos de partida para los microservicios. Las particiones recomendadas junto con otra información pertinente se muestran en una interfaz de usuario de entorno de trabajo intuitiva. Basándose en su conocimiento incorporado sobre el lenguaje de programación Java , IBM Mono2Micro también proporciona un análisis semántico profundo de las invocaciones de clase a clase. Al utilizar la interfaz de usuario del entorno de trabajo y el análisis detallado, obtiene una imagen clara de las recomendaciones de particionamiento, que puede ajustar de forma iterativa para que se adapten a sus necesidades empresariales. Después de decidir una recomendación de particionamiento específica, puede ejecutar IBM Mono2Micro para generar automáticamente una parte significativa del código que necesita para crear y desplegar las particiones recomendadas junto con el código de monolito existente. Después de revisar el código generado, puede continuar ajustando las recomendaciones de forma iterativa y generar código hasta que tenga los microservicios que desee. A continuación, puede ejecutar los microservicios en WebSphere Application Server Liberty o Open Liberty.

IBM Mono2Micro está disponible como parte de IBM WebSphere Hybrid Edition y IBM Cloud Pak® for Applications.

El viaje de IBM Mono2Micro

Los mandatos IBM Mono2Micro proporcionan las prestaciones siguientes.

Recopilación de datos

Para que IBM Mono2Micro analice la aplicación, ejecute primero el mandato mono2micro analyze en su código y, a continuación, ejecute la aplicación con instrumentación para recopilar todos los datos que se van a analizar.

  1. Ejecute el mandato mono2micro analyze en el archivador de aplicación para generar archivos JSON de tabla que contengan información sobre el código como, por ejemplo, nombres de clase completos, firmas de método, variables de estado y relaciones de herencia.
  2. (Opcional) Despliegue la aplicación con el instrumentario binario habilitado.
  3. (Opcional) Ejecute el mandato mono2micro usecase con los casos de uso empresariales para generar uno o más archivos JSON de contexto y archivos de registro para el análisis.
Análisis de IA para recomendaciones de partición

Para obtener las dos opciones de refactorización de IBM Mono2Micro, ejecute el mandato mono2micro recommend en los archivos recopilados anteriormente para obtener informes y crear un gráfico JSON con las recomendaciones de partición.

  1. Coloque los archivos en ubicaciones dentro del directorio de entrada para obtener recomendaciones del análisis de código estático y, opcionalmente, la generación de código.
    • Sólo para el análisis de código estático, coloque los archivos JSON de tabla (de mono2micro analyze) en la ubicación adecuada dentro del directorio de entrada.
    • Para el análisis de código estático y la generación de código, coloque los archivos JSON de tabla (de mono2micro analyze), los archivos de registro (del servidor de aplicaciones durante la ejecución de casos de uso empresarial) y el archivo JSON de contexto (de mono2micro usecase durante la ejecución de casos de uso empresarial) en las ubicaciones adecuadas dentro del directorio de entrada.
  2. Ejecute el mandato mono2micro recommend para generar informes y un JSON de gráfico con los enfoques de refactorización.
Refactorización de particiones

Ejecute el mandato mono2micro workbench para iniciar la interfaz de usuario del entorno de trabajo donde puede obtener un conocimiento más profundo de la aplicación y sus clases examinando los dos enfoques de refactorización que se crean para la aplicación. Los dos enfoques de refactorización de IBM Mono2Micro son la lógica empresarial y las costuras naturales. Estas recomendaciones se han creado a partir del análisis de las llamadas en tiempo de ejecución de la aplicación y de las dependencias de datos detectadas. Si ninguno de los dos enfoques es exactamente lo que desea, cree y guarde un plan para su propia solución de particionamiento personalizada.

  1. Inicie la imagen del contenedor de la interfaz de usuario del entorno de trabajo con el mandato mono2micro workbench .
  2. Acceda a la interfaz de usuario en el navegador y cargue el archivo JSON que se genera a partir del mandato mono2micro recommend .
  3. Explore los enfoques de refactorización.
  4. (Opcional) Cree y guarde el archivo JSON de la opción de refactorización personalizada.
Generación de código

Ejecute el mandato mono2micro transform para generar automáticamente código de inicio para crear los microservicios.

  1. (Opcional) Si opta por utilizar las costuras naturales o el enfoque de refactorización personalizado, ejecute el mandato mono2micro refine .
  2. Ejecute el mandato mono2micro transform para generar código.
  3. Edite y despliegue el código en los entornos de prueba.

Cómo funciona

La figura siguiente muestra el flujo de trabajo a través de IBM Mono2Micro. Los recuadros azules, que empiezan con el término (Action), representan acciones de usuario. Los recuadros sin rellenar, que empiezan con el término (File), representan archivos. Las líneas continuas apuntan a los siguientes pasos. Las líneas de guiones muestran los usos de los archivos y apuntan a las siguientes acciones o archivos de usuario en el flujo de trabajo. El flujo de trabajo se inicia con el código de aplicación y, después del análisis y la generación de código, finaliza con el código de inicio generado para las particiones.


IBM Mono2Micro

Componentes de IBM Mono2Micro

IBM Mono2Micro consta de los seis componentes siguientes, que se muestran en la figura anterior.

Analizador de código (contenedormono2micro-bluejay o binary analyzer .jar)
El mandato mono2micro analyze que analiza y opcionalmente instrumentaliza el código Java de aplicaciones monolíticas.
Instrumenter binario (minerva-agent-1.0.jar)
Un agente Java que instrumente una aplicación en ejecución desplegada en el servidor de aplicaciones.
Grabador de casos de uso (Flicker)
Ejecute con el mandato mono2micro usecase , un programa Java que registra nombres y horas de casos de uso. Utilícelo cuando ejecute suites de pruebas o casos de prueba correspondientes a varios casos de uso empresarial de una aplicación monolítica Java .
El motor de IA para las recomendaciones de partición (contenedormono2micro-aipl )
El mandato mono2micro recommend ejecuta el motor de IA de IBM Mono2Micro. Utiliza técnicas de aprendizaje automático en los rastreos y metadatos de tiempo de ejecución proporcionados por el usuario que se obtienen del analizador de código fuente. Utiliza la información resultante para generar recomendaciones de partición que finalmente pueden convertirse en microservicios. Este mandato también genera un informe detallado para las particiones recomendadas.
Interfaz de usuario del entorno de trabajo de IBM Mono2Micro
El contenedor de mono2micro-ui que muestra las recomendaciones del motor de IA cuando se inicia con el mandato mono2micro workbench . Las recomendaciones que se obtienen del motor de IA de IBM Mono2Micro se mantienen en el almacenamiento local. Puede cargar las recomendaciones en la interfaz de usuario del entorno de trabajo para visualizarlas en un visualizador gráfico. Con la interfaz de usuario, puede modificar las recomendaciones de partición generadas por IA.
Generador de código (contenedormono2micro-cardinal )

El mandato mono2micro transform invoca el generador de código, que tiene un profundo conocimiento de la semántica del lenguaje de programación Java . El generador de código utiliza las recomendaciones del motor de IA para hacer lo siguiente:

  • Proporcione análisis de invocación detallados de las particiones recomendadas que se pueden implementar finalmente como microservicios.
  • Genere análisis de herencia detallados de las particiones recomendadas.
  • Genere una parte significativa del código necesario para realizar las particiones recomendadas en contenedores.

Puede descargar las herramientas de Mono2Micro y ejecutarlas en su ordenador local.

Pasos para refactorizar una aplicación monolítica Java

Los pasos siguientes describen cómo refactorizar una aplicación monolítica Java utilizando IBM Mono2Micro. Son una versión más detallada de la figura anterior.

  1. Analice el código Java de una aplicación monolítica utilizando el analizador de código.

  2. Elija si desea obtener recomendaciones basadas sólo en el análisis de código estático de la aplicación o si desea obtener también la generación de código. Sólo para el análisis de código estático, vaya al paso 3. Para el análisis de código estático y la generación de código, realice los pasos siguientes para añadir la generación de código:

    1. Despliegue la aplicación monolítica Java en entornos no de producción pero representativos junto con el agente Java de instrumenter binario. Utilice los archivos JSON generados por el analizador de código como entrada.

      Los archivos JSON son symTable.json, refTable.json y instrumenter-config.json.

    2. Ejecute los casos de prueba correspondientes a diversos casos de uso empresarial en la aplicación monolítica Java desplegada.

      Ejecute el grabador de casos de uso para nombrar y registrar las horas de inicio y detención de casos de prueba individuales que corresponden a los distintos casos de uso empresarial.

    3. Organice los archivos de registro que contienen los rastreos junto con los archivos JSON (symTable.json y refTable.json) producidos por el analizador de código y el grabador de casos de uso (uno o más archivos .json de contexto) en los subdirectorios adecuados.

    4. Ejecute el motor de IA en el directorio donde se conservan los archivos de registro y los archivos JSON.

      El motor de IA analiza el contenido del directorio y genera las recomendaciones de partición en el archivo final_graph.json junto con los informes en formato HTML.

      El motor de IA crea un directorio que contiene todos los artefactos necesarios para la generación de código. También genera las particiones y los informes de herencia en formato HTML en el directorio. El informe de particiones contiene el análisis de invocación detallado para las recomendaciones de partición que pueden ser los inicios de los microservicios. El informe de herencia detalla las cadenas de herencia existentes en la aplicación bajo estudio.

  3. Vea las recomendaciones de partición cargando el archivo final_graph.json .

    En la interfaz de usuario del entorno de trabajo, puede ajustar y ajustar las recomendaciones y guardar los cambios en un archivo JSON. Puede ver las particiones y los informes de herencia en cualquier navegador.

  4. Si ha añadido generación de código en el paso 2, ejecute otros mandatos para generar artefactos y código de inicio.

    1. Si ha ajustado las recomendaciones de particionamiento en un paso anterior, ejecute el mandato mono2micro refine para generar los nuevos artefactos para la generación de código junto con los nuevos informes.
    2. Ejecute el mandato mono2micro transform para generar automáticamente el código de inicio para realizar las recomendaciones de microservicio.
  5. Puede iterar por los pasos de nuevo, empezando por el paso que ejecuta el mandato mono2micro recommend , para llegar a los microservicios que elija.

Algunos de los pasos anteriores se explican detalladamente en otros temas de IBM Mono2Micro .