飞码网-免费源码博客分享网站

点击这里给我发消息

使用IBM Mono2Micro将单体应用转变为微服务|-Java教程

飞码网-免费源码博客分享网站 爱上飞码网—https://www.codefrees.com— 飞码网-matlab-python-C++ 爱上飞码网—https://www.codefrees.com— 飞码网-免费源码博客分享网站

在你开始之前

本教程是《IBM Mono2Micro简介》系列的一部分。

等级 话题 类型
101 介绍IBM Mono2Micro 文章
101 直观地了解IBM Mono2Micro 视频
102 了解使用IBM Mono2Micro自动化应用程序重构的优势 文章
201 使用IBM Mono2Micro通过AI的功能将单片Java应用程序转换为微服务 教程

在本系列中,了解IBM Mono2Micro的关键功能以及如何使用它们将单片Java应用程序转换为微服务。

介绍Mono2Micro

应用程序重构是指将旧有应用程序划分为微服务,并保留应用程序原始语义的过程。重构并不容易。架构师检查代码,部署工件,测试用例和可用文档,以推荐微服务。此过程是手动的,临时的,主观的,耗时的并且容易出错。在花费大量时间和资源后,许多重构项目都被放弃了。革命性的应用程序转换器IBM Mono2Micro使用AI使应用程序重构过程自动化。

Mono2Micro的早期实验引起了极大的热情,并展示了巨大的价值。对于包含数百到几千个类的大型遗留单片应用程序,Mono2Micro可以在非常短的时间内以完全非侵入性的方式生成声音验证的微服务建议,并由SME进行验证。对于其中的某些整体应用程序,手动重构需要相当长的时间。将手动重构结果(如果有)与从Mono2Micro获得的结果进行比较。

在IBM Research,我们使用机器学习和深度学习开发了新颖的AI技术,以分析应用程序工件,例如调用图,数据依赖项(静态)和运行时跟踪(动态)。Mono2Micro的重构能力取决于这些技术,这些技术基于对应用程序的静态和动态分析。

Mono2Micro的第一个beta版本于2020年5月6日发布,专注于自动生成两类微服务建议(建议的类分组):基于业务逻辑接缝和基于自然接缝。从2020年7月7日起,将提供“增强的beta”,提供定制微服务建议和自动代码生成的高级功能。借助这些功能,与手动或其他方法相比,Mono2Micro应该能够在几周内成功地重构大型而复杂的Java Enterprise整体应用程序,而手动或其他方法通常要花费数月甚至数年。

使用Mono2Micro

要使用Mono2Micro重构Java应用程序,您需要执行以下步骤:

  • 通过使用Mono2Micro实用程序插入简单的打印语句来跟踪函数的入口和出口,来检测源代码。
  • 使用您使用的构建和部署工具在预生产但具有代表性的环境中构建和部署应用程序的检测版本。
  • 在单片应用程序的已检测版本上执行与各种业务用例相对应的测试。
  • 将生成的跟踪文件以及在检测和业务案例执行阶段生成的一些JSON元数据文件提供给Mono2Micro的AI组件。

直观表示使用Mono2Micro重构Java应用程序所需的步骤,以及基于结果的建议和分组

图1. Mono2Micro概述

Mono2Micro的AI组件将通过应用其新颖的机器学习算法自动为您提供微服务建议。Mono2Micro还生成有关推荐的微服务的详细信息的报告,以及对其交互的深入调用分析。推荐的微服务的调用分析报告是应用程序开发人员特别感兴趣的,可用于指导评估和实施微服务建议。您可以在易于使用且直观的Mono2Micro GUI中查看微服务建议和生成的报告。

基于业务逻辑接缝的分组

Mono2Micro分析与各种业务用例的执行相对应的运行时跟踪。跟踪通过实现特定业务用例的类传达控制流的详细信息,包括调用顺序和交互频率。在运行时跟踪上使用机器学习和深度学习技术来捕获因果关系,功能相似性以及类及其方法之间的其他时间关系。这些从运行时跟踪获得的时间关系用于根据业务逻辑接缝进行类的分组,如图1所示。图2显示了示例应用程序的这种分组,其中圆圈代表类,而类的分组是颜色编码。类之间的有向边表示运行时调用。

用于示例应用程序的Mono2Micro中基于业务逻辑接缝的分组的屏幕快照

图2.一个示例应用程序的基于业务逻辑接缝的分组

基于自然接缝的分组

Mono2Micro通过类间数据依赖性分析进一步增强了基于业务逻辑接缝的分组。Mono2Micro的算法迭代地合并具有数据依赖性的类的相关分组,并生成基于自然接缝的分组,如图1所示。基于自然接缝的分组非常接近无状态和无共享的微服务体系结构,从而最大程度地减少了对重构。对于同一应用程序的基于接缝的业务逻辑分组,如图2所示,基于自然接缝的分组如图3所示。

用于示例应用程序的Mono2Micro中基于自然接缝的分组的屏幕截图

图3.示例应用程序的基于自然接缝的分组

在中间分组见面

尽管基于自然接缝的类分组对于微服务体系结构而言似乎是理想的选择,但对于大多数现有的单片应用程序而言,由于大多数传统应用程序的设计并未考虑微服务,因此这种策略可能无法从重构中提供预期的收益。同样,它们的大多数构成类之间通常也具有依赖关系,这将导致一个或两个微服务实际上包含整体应用程序的所有重要类。

我们希望架构师和开发人员通过从基于自然接缝的分组开始,逐步过渡到基于业务接缝的分组,反之亦然,从而利用他们对应用程序的了解,来实现理想的类分组。基于“中间会议”的类分组将以迭代方式提供,请咨询详细的微服务建议和调用分析报告。

增强的Mono2Micro GUI将提供必要的机制,以便SME可以调整和微调类的分组,以获得所需的微服务建议。

自动代码生成

在单片应用程序中,非原始对象可以通过引用自由传递,并且所有必需的类定义都可以在源代码中的任何地方自由使用。在重构的单片应用程序中,微服务间参数不能通过引用传递。大多数微服务甚至可能无法自行编译,因为它们可能包含其他微服务中实际定义的方法参数,非原始类型的返回值及其相关性。为了以手动或其他重构方式解决这些问题,中小企业必须开发大量的管道代码(例如,用于外部化数据的代码)。开发人员通常会在所有微服务中复制所有类定义,即使其中一个类定义发生了变化,也将需要构建和重新部署所有微服务。

Mono2Micro通过自动生成将类组实现为微服务所需的大量代码,以独特的方式解决了所有这些问题。Mono2Micro将以非常有效的方式自动完全处理跨微服务对象引用。Mono2Micro的代码生成机制也不会在已实现的微服务中复制类方法或构造函数定义。

下一步

了解有关Mono2Micro和现代化应用程序的更多信息:

  • 签出IBM Mono2Micro页面。
  • 探索IBM Cloud Pack for Applications及其现代化工具。
飞码网-免费源码博客分享网站 爱上飞码网—https://www.codefrees.com— 飞码网-matlab-python-C++ 爱上飞码网—https://www.codefrees.com— 飞码网-免费源码博客分享网站
赞 ()
内容页底部广告位3
留言与评论(共有 0 条评论)
   
验证码: