評估是否要翻新 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 的重構路徑。

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 訊息代理程式,或需要重構為雲端原生微服務或 Spring Boot 應用程式的單體式 WAR 和 EAR 部署作業。

事前準備

在控制台中啟動 Java 評估作業前,請先啟用必要 API、確認專案的 Identity and Access Management (IAM) 權限、註冊工作區設定 bucket,以及將原始碼封存檔上傳至 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 權限:

  • 已通過驗證的控制台使用者 (啟動作業並存取 bucket):
    • 儲存空間管理員 (roles/storage.admin)
    • 服務帳戶使用者 (roles/iam.serviceAccountUser)
    • Cloud Build 編輯者 (roles/cloudbuild.builds.editor)
  • 專屬服務帳戶 (執行評估容器):
    • Agent Platform 使用者 (roles/aiplatform.user)
    • Storage 物件使用者 (roles/storage.objectUser) 或 Storage 管理員 (roles/storage.admin)

如要取得啟動評估及執行分析容器所需的權限,請要求管理員在專案中授予您下列 IAM 角色:

  • 使用者 - 管理來源封存檔和 bucket 設定: 儲存空間管理員 (roles/storage.admin)
  • 使用者 - 將專屬服務帳戶附加至工作: 服務帳戶使用者 (roles/iam.serviceAccountUser)
  • 使用者 - 提交評估作業 (cloudbuild.builds.create) 並查看記錄: Cloud Build 編輯者 (roles/cloudbuild.builds.editor)
  • 服務帳戶 - 執行 codmod 容器: Agent Platform User (roles/aiplatform.user)
  • 服務帳戶:讀取來源封存檔及寫入評估報表: Storage 物件使用者 (roles/storage.objectUser) 或 Storage 管理員 (roles/storage.admin)

如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

這些預先定義的角色具備啟動評估及執行分析容器所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:

所需權限

您必須具備下列權限,才能啟動評估作業及執行分析容器:

  • 使用者 (Cloud Storage、Cloud Build 和 IAM):
    • storage.objects.get (下載或讀取檔案)
    • storage.objects.list (列出 bucket 中的檔案)
    • storage.objects.create (上傳或建立新檔案)
    • storage.objects.update (修改現有檔案的中繼資料)
    • storage.objects.delete (刪除或覆寫檔案)
    • storage.buckets.get (查看 bucket 層級的設定)
    • 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 (刪除暫存檔案)

您或許還可透過自訂角色或其他預先定義的角色取得這些權限。

設定工作區設定 bucket

在「Modernization Hub」>「設定」頁面 (例如 gs://PROJECT_ID-modernization-hub) 註冊指定的 Cloud Storage bucket,以儲存工作區二進位狀態檔案 (dotnet_jobs.pb、java_jobs.pb 和 mainframe_jobs.pb)。

查看程式碼集大小限制

為維持最佳效能,codmod評估引擎會強制執行下列規模和封存準則:

  • 程式碼庫大小上限:每個評估工作約 600 萬行程式碼 (LOC)。如果存放區超過 600 萬行程式碼,請先將程式碼集分割成較小的獨立模組或服務,再上傳。
  • 乾淨的封存結構:從 ZIP 檔案中排除已編譯的二進位檔、套件快取和版本管控中繼資料 (例如 target/、build/、bin/、node_modules/ 和 .git/),只分析來源檔案和建構設定。

準備並上傳 Java 來源封存檔

將 Java 程式碼集封裝為 ZIP 檔案 (不含建構輸出內容),然後將檔案上傳至專案中的 Cloud Storage bucket。

  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 bucket:

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

    將 INPUT_BUCKET 替換為目標 Cloud Storage bucket 名稱。

執行評估

如要在 Modernization Hub 中啟動評估工作,請按照下列步驟操作:

  1. 前往控制台的「Modernization Hub」頁面。

    前往 Modernization Hub

  2. 在到達網頁中找到「Java Workloads」(Java 工作負載) 資訊卡,然後按一下「Start assessment」(開始評估)。

  3. 在「Job name」(工作名稱) 欄位中,輸入評估工作的專屬名稱。

  4. 在「Source code location」(原始碼位置) 欄位中,選取包含原始碼的 Cloud Storage 值區 (以 zip 檔案形式)。

  5. 在「報告位置」欄位中,選取要儲存所產生評估報告的 Cloud Storage bucket。

  6. 從「Modernization recipe」(現代化配方) 清單中選取現代化配方。

  7. 從「Location」(位置) 清單中,選取評估工作所在的區域。

  8. 在「服務帳戶」欄位中,選取具有「必要角色」一節所列必要 IAM 角色的專屬服務帳戶。 Cloud Build 會以這個服務帳戶執行評估作業,因此需要 Agent Platform 使用者和 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 執行階段版本,或是否需要升級。
  • 建議動作:建議的程式碼轉換、AI 輔助重構配方,以及 codmod 產生的遷移路徑,可協助您準備應用程式,以便在 Google Cloud上進行容器化。

後續步驟