IBM Mono2Micro 概述

IBM® Mono2Micro™ 是一种半自动实用工具,用于将 Java® 单体应用程序重构为微服务,并在以下平台上运行 WebSphere® Application Server LibertyOpen Liberty. 您可以使用 IBM Mono2Micro 及其提供的建议来自动生成构建和部署微服务所需的大量代码。

通过静态和动态分析, IBM Mono2Micro 使用其机器学习引擎以及对 Java 单片应用程序代码的分析来生成分区建议。 分区建议 是整体式应用程序中可用作微服务起点的类分组。 建议的分区以及其他相关信息将显示在直观的工作台 UI 中。 基于其有关 Java 编程语言的内置知识, IBM Mono2Micro 还提供了类到类调用的深度语义分析。 通过使用工作台 UI 和详细分析,您可以清晰地了解分区建议,您可以通过迭代微调来满足业务需求。 在确定特定分区建议后,可以运行 IBM Mono2Micro 以自动生成大量代码,您需要将这些代码与现有整体式代码一起构建和部署建议的分区。 复审生成的代码后,您可以继续迭代优化建议并生成代码,直到您拥有所需的微服务为止。 然后,可以在 WebSphere Application Server LibertyOpen Liberty上运行微服务。

IBM Mono2Micro 作为 IBM WebSphere Hybrid EditionIBM Cloud Pak® for Applications.

IBM Mono2Micro 之旅

IBM Mono2Micro 命令提供以下功能。

数据收集

要让 IBM Mono2Micro 分析应用程序,请先对其代码运行 mono2micro analyze 命令,然后通过检测来运行应用程序,以收集要分析的所有数据。

  1. 在应用程序归档上运行 mono2micro analyze 命令以生成表 JSON 文件,其中包含有关代码的信息,例如完整类名,方法特征符,状态变量和继承关系。
  2. (可选) 在启用二进制检测程序的情况下部署应用程序。
  3. (可选) 使用业务用例运行 mono2micro usecase 命令,以生成一个或多个上下文 JSON 文件和日志文件进行分析。
针对分区建议的 AI 分析

要从 IBM Mono2Micro获取两个重构选项,请对先前收集的文件运行 mono2micro recommend 命令,以获取具有分区建议的报告和图形 JSON。

  1. 将文件放在输入目录中的位置,以从静态代码分析和 (可选) 代码生成中获取建议。
    • 仅对于静态代码分析,请将表 JSON 文件 (来自 mono2micro analyze) 放在输入目录中的正确位置。
    • 对于静态代码分析和代码生成,请将表 JSON 文件 (来自 mono2micro analyze) ,日志文件 (来自业务用例运行期间的应用程序服务器) 和上下文 JSON 文件 (来自业务用例运行期间的 mono2micro usecase ) 放在输入目录中的正确位置。
  2. 运行 mono2micro recommend 命令以使用重构方法生成报告和图形 JSON。
分区重构

运行 mono2micro workbench 命令以启动工作台 UI ,您可以通过检查为应用程序创建的两种重构方法来更深入地了解应用程序及其类。 IBM Mono2Micro 的两种重构方法是业务逻辑和自然接缝。 通过分析应用程序的运行时调用和所检测的数据依赖关系来创建这些建议。 如果这两种方法都不符合您的要求,请为您自己的定制分区解决方案创建并保存计划。

  1. 使用 mono2micro workbench 命令启动工作台 UI 容器映像。
  2. 在浏览器中访问 UI 并装入通过 mono2micro recommend 命令生成的 JSON 文件。
  3. 探索重构方法。
  4. (可选)创建并保存定制重构选项 JSON 文件。
代码生成

运行 mono2micro transform 命令以自动生成用于创建微服务的入门模板代码。

  1. (可选) 如果选择使用自然接缝或定制重构方法,请运行 mono2micro refine 命令。
  2. 运行 mono2micro transform 命令以生成代码。
  3. 在测试环境中编辑和部署代码。

它的工作方式

下图显示通过 IBM Mono2Micro的工作流程。 以术语 (Action)开头的蓝色框表示用户操作。 未填充的框 (以术语 (File)开头) 表示文件。 实线指向后续步骤。 虚线显示文件的使用并指向工作流程中的后续用户操作或文件。 工作流程以应用程序代码开头,在分析和代码生成之后,以针对分区生成的入门模板代码结尾。


IBM Mono2Micro 组件,容器和工作流程

IBM Mono2Micro 组件

IBM Mono2Micro 由上图中显示的以下六个组件组成。

代码分析器 (mono2micro-bluejay 容器或 binary analyzer .jar)
mono2micro analyze 命令,用于分析和 (可选) 检测单片应用程序的 Java 代码。
二进制检测程序 (minerva-agent-1.0.jar)
用于对部署在应用程序服务器上的正在运行的应用程序进行监视的 Java 代理程序。
用例记录器 (Flicker)
使用 mono2micro usecase 命令 (用于记录用例名称和时间的 Java 程序) 运行。 当您运行对应于 Java 整体式应用程序的各种业务用例的测试套件或测试用例时,请使用它。
用于分区建议的 AI 引擎 (mono2micro-aipl 容器)
mono2micro recommend 命令运行 IBM Mono2Micro的 AI 引擎。 它在用户提供的运行时跟踪和从源代码分析器获取的元数据上使用机器学习技术。 它使用生成的信息来生成最终可成为微服务的分区建议。 此命令还会生成建议分区的详细报告。
IBM Mono2Micro 工作台 UI
使用 mono2micro workbench 命令启动时显示来自 AI 引擎的建议的 mono2micro-ui 容器。 从 IBM Mono2Micro AI 引擎获取的建议保留在本地存储器中。 您可以在工作台 UI 中装入建议,以在图形可视化器中显示这些建议。 通过 UI ,您可以修改 AI 生成的分区建议。
代码生成器 (mono2micro-cardinal 容器)

mono2micro transform 命令调用代码生成器,该代码生成器深入了解 Java 编程语言的语义。 代码生成器使用 AI 引擎的建议来执行以下操作:

  • 提供最终可实现为微服务的建议分区的详细调用分析。
  • 生成建议分区的详细继承分析。
  • 生成在容器中实现建议分区所需的代码的重要部分。

您可以下载 Mono2Micro 工具 ,并在本地计算机上运行。

重构 Java 单片应用程序的步骤

以下步骤描述了如何使用 IBM Mono2Micro重构 Java 单片应用程序。 这些是上图的更详细版本。

  1. 使用代码分析器分析单片应用程序的 Java 代码。

  2. 选择是仅根据应用程序静态代码分析获取建议,还是也获取代码生成。 仅适用于静态代码分析,请跳至 步骤 3。 对于静态代码分析和代码生成,请完成以下步骤以添加代码生成:

    1. 在非生产但具有代表性的环境中部署 Java 单片应用程序以及二进制检测程序 Java 代理程序。 使用代码分析器生成的 JSON 文件作为输入。

      这些 JSON 文件为 symTable.jsonrefTable.jsoninstrumenter-config.json

    2. 在已部署的 Java 整体式应用程序上运行对应于各种业务用例的测试用例。

      运行用例记录器以命名并记录对应于各种业务用例的各个测试用例的开始和停止时间。

    3. 将包含跟踪的日志文件与由代码分析器和用例记录器 (一个或多个上下文 .json 文件) 生成的 JSON 文件 (symTable.jsonrefTable.json) 一起排列在相应的子目录中。

    4. 在保存日志文件和 JSON 文件的目录上运行 AI 引擎。

      AI 引擎会分析目录的内容,并在 final_graph.json 文件中生成分区建议以及 HTML 格式的报告。

      AI 引擎将创建一个目录,其中包含代码生成所需的所有必需工件。 它还会在目录中生成 HTML 格式的分区和继承报告。 分区报告包含分区建议的详细调用分析,这些建议可以是微服务的开端。 “继承”报告详细描述了所考虑应用程序中的任何现有继承链。

  3. 通过装入 final_graph.json 文件来查看分区建议。

    在工作台 UI 中,您可以调整和微调建议,并将更改保存到 JSON 文件。 您可以在任何浏览器中查看分区和继承报告。

  4. 如果 在步骤 2中添加了代码生成,请运行其他命令以生成工件和入门模板代码。

    1. 如果在上一步中调整了分区建议,请运行 mono2micro refine 命令以生成用于代码生成的新工件以及新报告。
    2. 运行 mono2micro transform 命令以自动生成用于实现微服务建议的入门模板代码。
  5. 您可以从运行 mono2micro recommend 命令的步骤开始再次迭代这些步骤,以到达您选择的微服务。

在其他 IBM Mono2Micro 主题中详细说明了先前的一些步骤。