本页面介绍了如何使用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)
- Storage Admin (
- 服务账号(执行评估容器):
- Agent Platform User
(
roles/aiplatform.user) - Storage Object User (
roles/storage.objectUser) 或 Storage Admin (roles/storage.admin)
- Agent Platform User
(
如需获得启动评估和执行分析容器所需的权限,请让您的管理员向您授予项目的以下 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 存储桶。
在本地机器上,使用以下任一方法创建代码库的 ZIP 文件:
使用 Git(推荐):
git archive --format=zip -o repository.zip HEAD
使用
zipCLI:zip -r repository.zip . \ -x "*.git*" "*/target/*" "*/build/*" "*/bin/*" "*/node_modules/*"
使用 Google Cloud CLI 将 ZIP 文件上传到目标 Cloud Storage 存储桶:
gcloud storage cp repository.zip \ gs://INPUT_BUCKET/codebase/repository.zip将 INPUT_BUCKET 替换为目标 Cloud Storage 存储桶的名称。
运行评估
如需在 Modernization Hub 中启动评估作业,请按以下步骤操作:
在控制台中,前往现代化中心页面。
在着陆页上,找到 Java 工作负载卡片,然后点击开始评估。
在作业名称字段中,为评估作业输入一个唯一的名称。
在源代码位置字段中,选择包含源代码(以 ZIP 文件形式)的 Cloud Storage 存储桶。
在报告位置字段中,选择一个 Cloud Storage 存储桶来保存生成的评估报告。
从现代化方案列表中,选择一个现代化方案。
从位置列表中,为评估作业选择一个区域。
在服务账号字段中,选择一个具有所需角色部分中列出的所需 IAM 角色的专用服务账号。 Cloud Build 会在此服务账号下运行评估作业,该服务账号需要 Agent Platform User 和 Cloud Storage 权限。
点击生成报告。
控制台会启动一个在后台运行的评估容器,该容器运行
codmod引擎来分析您的项目。作业状态会显示在评估历史记录表格中。
查看评估报告
评估作业通常会在几分钟内完成,具体取决于代码库的大小。后台容器在完成处理后会自动终止。
如需查看评估结果,请执行以下操作:
- 在 Modernization Hub 页面的评估历史记录表格中,找到您的评估作业。
- 当状态列变为已完成时,点击下载报告。
- 选择所需的输出格式:
- HTML 报告:一种交互式摘要,可让您过滤不兼容的 API、检查各个文件的屏蔽列表,以及查看补救建议。
- Markdown 报告:一种格式化的执行摘要,适合与利益相关者和架构审核委员会分享。
查看评估报告
生成的评估报告会将应用的迁移准备情况分为几个关键领域:
- 总体兼容性得分:可迁移到目标 Java 运行时且无需修改的源代码行和依赖项所占的百分比。
- 阻碍因素细分:需要重构的特定旧版 Java 依赖项或环境限制,例如:
- Java EE (
javax.*) 到 Jakarta EE (jakarta.*) 命名空间变更。 - 移除了或废弃了 JDK 内部 API(例如
sun.misc.*软件包或 CORBA 模块)。 - 专有应用服务器配置或 API(例如 WebLogic、WebSphere 或 JBoss 部署描述符)。
- Java EE (
- 依赖项分析:详细列出所有现有的 Maven 或 Gradle 依赖项,并指明每个库是否支持目标 Java 运行时版本或是否需要升级。
- 建议的操作:
codmod生成的建议代码转换、AI 辅助重构方案和迁移路径,用于准备将应用容器化到 Google Cloud上。
后续步骤
- 了解如何评估 .NET 应用。
- 了解如何设置 Mainframe Assessment Tool (MAT)。
- 使用 Gemini Cloud Assist 探索 AI 辅助的代码转换功能。