评估 Java 应用以进行现代化改造

本页面介绍了如何在Google Cloud 控制台中使用 Google Cloud Modernization Hub,评估企业 Java 应用是否适合进行 Linux 容器化,以及是否适合现代化改造为跨平台 Java 长期支持 (LTS) 版本(例如 Java 17 或 Java 21) Google Cloud。

许多企业 Java 应用都依赖于旧版 Java EE API、专有应用服务器配置(例如 WebLogic、WebSphere 或 JBoss)或过时的第三方库,这些库会阻止直接部署到 Linux 容器。Modernization Hub 中的自动化评估会分析您的源代码、识别迁移阻碍因素、评估 Maven 或 Gradle 依赖项兼容性,并推荐 Cloud Run 或 Google Kubernetes Engine 的重构路径。

如需通过本地计算机运行评估或使用独立的 codmod CLI 自定义报告部分,请参阅创建应用现代化改造评估。

何时使用 Java 应用评估

如果您计划执行以下任一操作,请运行 Java 应用评估:

  • 更换平台到 Linux 容器:在为 Cloud Run 或 GKE 容器化应用之前,先确定特定于环境的依赖项(例如本地文件系统访问、JNI 库或专有应用服务器 API)。
  • 升级 Java 运行时版本:评估从 Java 8 或 Java 11 迁移到现代 Java LTS 版本(Java 17 或 Java 21)或从 Java EE (javax.*) 过渡到 Jakarta EE (jakarta.*) 时的工作量和兼容性差距。
  • 解耦单体式架构:发现紧密耦合的 EJB 组件、JMS 消息代理或单体式 WAR 和 EAR 部署,这些部署需要重构为云原生微服务或 Spring Boot 应用。

准备工作

在控制台中启动 Java 评估作业之前,请启用所需的 API,验证您的项目 Identity and Access Management (IAM) 权限,注册工作区设置存储桶,并将源代码归档上传到 Cloud Storage。

启用必需的 API

如需使用 Modernization Hub,请在项目中启用所需的 Google Cloud服务 API:

gcloud services enable \
    aiplatform.googleapis.com \
    artifactregistry.googleapis.com \
    cloudbuild.googleapis.com \
    cloudresourcemanager.googleapis.com \
    compute.googleapis.com \
    logging.googleapis.com \
    storage.googleapis.com \
    --project=PROJECT_ID

请将 PROJECT_ID 替换为您的 Google Cloud 项目 ID。

所需的角色

运行评估需要为使用 Cloud Build 和 Gemini Enterprise Agent Platform 的两个身份授予不同的 IAM 权限:

  • 经过身份验证的控制台用户(启动作业并访问存储桶):
    • Storage Admin (roles/storage.admin)
    • Service Account User (roles/iam.serviceAccountUser)
    • Cloud Build Editor (roles/cloudbuild.builds.editor)
  • 服务账号(执行评估容器):
    • Agent Platform User (roles/aiplatform.user)
    • Storage Object User (roles/storage.objectUser) 或 Storage Admin (roles/storage.admin)

如需获得启动评估和执行分析容器所需的权限,请让管理员向您授予项目的以下 IAM 角色:

  • 用户 - 管理源代码归档和存储桶配置:Storage Admin (roles/storage.admin)
  • 用户 - 将专用服务账号附加到作业:Service Account User (roles/iam.serviceAccountUser)
  • 用户 - 提交评估作业 (cloudbuild.builds.create) 并查看日志:Cloud Build Editor (roles/cloudbuild.builds.editor)
  • 服务账号 - 执行 codmod 容器:Agent Platform User (roles/aiplatform.user)
  • 服务账号 - 读取源归档和写入评估报告:Storage Object User (roles/storage.objectUser) 或 Storage Admin (roles/storage.admin)

如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。

这些预定义角色包含启动评估和执行分析容器所需的权限。如需查看所需的确切权限,请展开所需权限部分:

所需权限

您需要具备以下权限才能启动评估并执行分析容器:

  • 用户(Cloud Storage、Cloud Build 和 IAM):
    • storage.objects.get(用于下载或读取文件)
    • storage.objects.list(用于列出存储桶中的文件)
    • storage.objects.create(用于上传或创建新文件)
    • storage.objects.update(用于修改现有文件的元数据)
    • storage.objects.delete(用于删除或覆盖文件)
    • storage.buckets.get(查看存储桶级配置)
    • cloudbuild.builds.create(用于提交评估作业)
    • iam.serviceAccounts.actAs(用于将服务账号附加到作业)
  • 服务账号(Agent Platform 和 Cloud Storage):
    • aiplatform.endpoints.predict(运行 AI 辅助的代码分析)
    • storage.objects.get(用于读取或下载源代码归档)
    • storage.objects.list(用于列出输入文件夹中的文件)
    • storage.objects.create(用于撰写评估报告)
    • storage.objects.delete(删除临时文件)

您也可以使用自定义角色或其他预定义角色来获取这些权限。

配置工作区设置存储桶

在 Modernization Hub > 设置页面上注册一个指定的 Cloud Storage 存储桶(例如 gs://PROJECT_ID-modernization-hub),用于存储工作区二进制状态文件(dotnet_jobs.pb、java_jobs.pb 和 mainframe_jobs.pb)。

查看代码库大小限制

为了保持最佳性能,codmod 评估引擎会强制执行以下规模和归档准则:

  • 代码库大小上限:每个评估作业大约 600 万行代码 (LOC)。如果您的代码库超过 600 万行代码,请在上传之前将代码库拆分为较小的独立模块或服务。
  • 干净的归档结构:从 ZIP 文件中排除已编译的二进制文件、软件包缓存和版本控制元数据(例如 target/、build/、bin/、node_modules/ 和 .git/),以便仅分析源文件和 build 配置。

准备并上传 Java 源代码归档

将 Java 代码库打包为不包含构建输出的 ZIP 文件,然后将该文件上传到项目中的 Cloud Storage 存储桶。

  1. 在本地机器上,使用以下方法之一创建代码库的 ZIP 文件:

    • 使用 Git(推荐):

      git archive --format=zip -o repository.zip HEAD
      
    • 使用 zip CLI:

      zip -r repository.zip . \
          -x "*.git*" "*/target/*" "*/build/*" "*/bin/*" "*/node_modules/*"
      
  2. 使用 Google Cloud CLI 将 ZIP 文件上传到目标 Cloud Storage 存储桶:

    gcloud storage cp repository.zip \
        gs://INPUT_BUCKET/codebase/repository.zip
    

    将 INPUT_BUCKET 替换为目标 Cloud Storage 存储桶的名称。

运行评估

如需在 Modernization Hub 中启动评估作业,请按照以下步骤操作:

  1. 在控制台中,前往 Modernization Hub 页面。

    前往 Modernization Hub

  2. 在着陆页上,找到 Java 工作负载卡片,然后点击开始评估。

  3. 在作业名称字段中,为评估作业输入一个唯一的名称。

  4. 在源代码位置字段中,选择一个包含源代码(ZIP 文件)的 Cloud Storage 存储桶。

  5. 在报告位置字段中,选择一个 Cloud Storage 存储桶来保存生成的评估报告。

  6. 从现代化改造方案列表中,选择一个现代化改造方案。

  7. 从位置列表中,为评估作业选择一个区域。

  8. 在服务账号字段中,选择一个具有所需角色部分中列出的所需 IAM 角色的专用服务账号。Cloud Build 会在此服务账号下运行评估作业,该服务账号需要 Agent Platform User 和 Cloud Storage 权限。

  9. 点击生成报告。

    控制台会启动一个后台评估容器,该容器运行 codmod 引擎来分析您的项目。作业状态会显示在评估历史记录表中。

查看评估报告

评估作业通常会在几分钟内完成,具体取决于代码库的大小。后台容器在完成处理后会自动终止。

如需查看评估结果,请执行以下操作:

  1. 在 Modernization Hub 页面上的评估历史记录表中,找到您的评估作业。
  2. 当状态列更改为已完成时,点击下载报告。
  3. 选择首选输出格式:
    • HTML 报告:一个交互式摘要,可让您过滤不兼容的 API、检查逐个文件的阻碍因素列表,以及查看修复建议。
    • Markdown 报告:格式化的摘要,适合与利益相关方和架构审核委员会分享。

查看评估报告

生成的评估报告会将应用的迁移就绪情况分为几个关键领域:

  • 总体兼容性得分:无需修改即可迁移到目标 Java 运行时的源代码行和依赖项的百分比。
  • 阻碍因素细分:需要重构的特定旧版 Java 依赖项或环境限制,例如:
    • Java EE (javax.*) 到 Jakarta EE (jakarta.*) 命名空间更改。
    • 已移除或已废弃的 JDK 内部 API(例如 sun.misc.* 软件包或 CORBA 模块)。
    • 专有应用服务器配置或 API(例如 WebLogic、WebSphere 或 JBoss 部署描述符)。
  • 依赖项分析:现有 Maven 或 Gradle 依赖项的详细清单,指明每个库是否支持目标 Java 运行时版本或需要升级。
  • 推荐措施:由 codmod 生成的建议代码转换、AI 辅助重构方案和迁移路径,可帮助您为应用在 Google Cloud上实现容器化做好准备。

后续步骤