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

本页面介绍了如何使用Google Cloud 控制台中的 Google Cloud Modernization Hub 来评估企业 Java 应用,以便在 Google Cloud上将这些应用 Linux 容器化并改造为跨平台 Java 长期支持 (LTS) 版本(例如 Java 17 或 Java 21)。

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

何时使用 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)
  • 用户 - 将专用服务账号附加到作业:服务账号用户 (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(用于删除临时文件)

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

配置工作区设置存储桶

在现代化中心 > 设置页面上注册指定的 Cloud Storage 存储桶(例如 gs://PROJECT_ID-modernization-hub),以存储工作区二进制状态文件(dotnet_jobs.pb、java_jobs.pb 和 mainframe_jobs.pb)。

查看代码库大小限制

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

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

准备并上传 Java 源代码归档文件

将 Java 代码库打包为排除 build 输出的 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

  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上。

后续步骤