使用 Cloud 适用性分析器评估 Spring 应用程序

本指南介绍如何使用 Cloud 适用性分析器 (CSA) 评估 Spring 应用程序,以评估其迁移到云的准备情况。

何时应使用云适用性分析器?

Cloud 适用性分析器是 VMware 开发的开源工具。 可以使用它来评估 Spring、Spring Boot 和 Spring Cloud 应用程序,以确定它们对云的准备程度。

可以将 Cloud 适用性分析器下载到开发环境,然后扫描源代码进行评估。 所有结果都保存在本地环境中。 评估报告提供将 Spring 应用程序迁移到云所需的工作量的估计值。 该报告还列出了按重要性分级的代码行级别问题。

注意

如果其他浏览器无法正确打开 Cloud 适用性分析器 Web 门户,请使用 Chrome 作为推荐的浏览器。

可以从 Cloud 适用性分析器获得哪些结果?

以下部分介绍 Cloud 适用性分析器生成的结果。

一组应用程序的摘要

Cloud 适用性分析器通过根据源代码匹配模式来估计 Spring 应用程序在云平台上的就绪情况。 该工具根据一组预定义或自定义的规则为每个问题分配原始分数。 然后,该工具根据原始分数之和为每个应用程序计算 0 到 10 的技术分数。 应用程序在云中就绪程度越高,其技术分数就越高。

可以在评估报告的 “摘要 ”页上找到应用程序列表及其各自的技术分数。 摘要页还列出了其他信息,例如代码行和扫描的文件数。

每次运行评估时,该工具都会记录一个新报表。 可以使用“摘要”页上的“选择运行”控件查看和比较不同的报表版本,并查看迁移工作的进度。

Cloud 适用性分析器摘要页的屏幕截图。

更深入地查看一个应用程序

有关特定代码行级别问题的列表,可以在 “应用程序 ”页上找到详细报告。 此页列出了每个应用程序的问题,并将这些问题的重要性排名为“高”、“中”或“低”。 “高”问题是需要手动解决的必需问题,建议修复“中等”问题,而“低”问题只是信息性的。 还可以在报告中查找每个问题所需的文件名、行号和估计工作量。

若要查看应用程序的评估结果,请将 “选择运行” 设置为要查看的版本,然后将 “应用程序 ”设置为应用程序名称。 在“ 结果 ”选项卡的顶部,可以选择一组标记来筛选结果,并仅查看想要关注的标记。

Cloud 适用性分析器应用程序页的屏幕截图。

特定问题的详细信息

“应用程序 ”页上,可以选择问题的 ID 以查看详细信息和建议的操作。 此信息包括找到问题的源代码文件的路径、与问题匹配的模式,以及描述模式和工作量分数的规则。 在 “建议 ”部分中,可以找到所发现问题的具体说明,以及建议的相应操作。

Cloud 适用性分析器问题详细信息页的屏幕截图。

应如何使用云适用性分析器?

可以通过三个步骤运行 Cloud 适用性分析器:设置、扫描和查看。

  1. 设置:下载 云适用性分析器二进制文件和 Azure 自定义规则。 可以将二进制文件替换为 VMware cloud-suitability-analyzer 存储库中的最新版本。 提取包,应在同一目录中找到以下项:

    • csa-l:适用于 Linux 的 CSA 二进制文件
    • csa:适用于 macOS 的 CSA 二进制文件
    • csa.exe:适用于 Windows 的 CSA 二进制文件
    • rules:包含 Azure 自定义规则的目录
    • bins.yaml:自定义规则的必需文件
    • run-csa-xxx:特定于 OS 的一站式脚本,用于运行常见方案所需的所有 CSA 命令

    注意

    本文中的所有示例都使用 Linux 版本的脚本和二进制文件。 命令中的参数也适用于 Windows 和 macOS。

  2. 扫描:启动终端并运行包含参数 -p <src_dir>的脚本或二进制文件,如以下示例所示:

    ./run-csa-linux.sh -p <src_dir>
    

    ./csa-l -p <src_dir>
    

    该目录 <src_dir> 包含多个包含 Spring 应用源代码的子目录。 此操作在一次运行中扫描所有这些项目,并将结果存储在名为 csa.db 的文件中。 后续扫描将结果存储在同一 csa.db 文件中。

    显示 Bash 窗口中运行的 Cloud 适用性分析器脚本的屏幕截图。

  3. 查看:运行脚本时,它会自动启动 Web 门户。 或者,可以使用以下命令。 默认情况下,Web 门户显示 “摘要 ”页。

    ./csa-l ui
    

应如何自定义规则?

以下部分介绍规则以及如何自定义这些规则。

列出生效的规则

在 Web 门户上,“ 规则 ”页显示用于匹配 “应用程序 ”页上列出的问题的所有规则。 还可以查找每个规则的详细信息。

Cloud 适用性分析器规则页的屏幕截图。

以下列表显示了一些 Azure 自定义规则:

  • 一般情况下迁移到云
    • Linux 路径的 Windows 路径
    • 将目标记录到 STDOUT
    • 使用 SMB/NFS 协议将本地存储存储到 Azure 文件共享
  • JDK 升级规则
    • 检查 JDK 版本
  • Spring Boot/Cloud 升级
    • 检查 Spring Boot 版本
    • 检查 Spring Cloud 版本
    • 替代 Eureka 客户端终结点
    • 替代配置客户端终结点
    • 删除 Zipkin 并使用 Azure Monitor

导出规则

若要编辑规则或编写自己的规则,请先导出当前规则以用作可修改的基本版本。 若要导出规则,请使用以下命令:

./csa-l rules export --output-dir=<output_dir>

命令成功返回后,描述规则的配置文件位于指定的输出目录中。

编辑规则

可以使用文本编辑器单独编辑每个规则。 可以在 cloud-适用性-analyzer 存储库中提供的用户手册中找到每个字段的详细说明。

Visual Studio Code的屏幕截图,其中打开了规则文件。

导入规则

若要添加自己的规则或删除不需要的规则,请将所需的规则放在同一目录中,然后导入该目录。 使用以下步骤添加或删除规则:

  1. 在导入规则之前,请使用以下命令清除有效规则,并从干净的文件开始:

    ./csa-l rules delete-all
    
  2. 清除规则后,使用以下命令导入你自己的规则集:

    ./csa-l rules import --rules-dir=<input_dir>
    
  3. 现在,使用以下命令再次扫描源代码:

    ./csa-l -p <src_dir>
    
  4. 然后,使用以下命令查看结果:

    ./csa-l ui
    

现在可以看到使用指定的规则集更新的“ 规则 ”页。

若要简单完成此过程,建议直接在 azure-spring-适用性-rules 项目的 rules 目录中更新规则,然后使用以下命令运行脚本:

./run-csa-linux.sh -p <src_dir>

此命令会自动重新加载规则、重新扫描源代码,然后启动 Web 门户。

迁移的目标平台

Azure 上有多个托管平台可以托管 Spring 应用程序。 有关详细信息,请参阅 比较 Azure 上的 Java 应用程序托管选项

Azure Spring Apps 是面向 Spring 开发人员的完全托管服务。 借助 Azure Spring Apps,可以专注于代码,并通过现成的监视、服务发现、配置管理、CI/CD 集成、蓝绿部署等功能来管理应用。 有关详细信息,请参阅 将 Spring Cloud 应用程序迁移到 Azure Spring Apps。 云 适用性分析器的 Azure 自定义规则中已经介绍了预迁移和迁移阶段的许多步骤。

后续步骤

有关详细信息,请参阅 cloud-适用性-analyzer 存储库中的用户手册。