編輯

共用方式為


比較 Azure 上的 Java 應用程式裝載選項

Azure Spring Apps
Azure App Service
Azure Kubernetes Service (AKS)
Azure 虛擬機器

Azure 提供許多選項,可供您的團隊建置及部署 Java 應用程式。 本文涵蓋 Azure 上的 Java 主要案例,並概略說明規劃建議及相關考量事項。

Apache®、Apache KafkaApache StrutsApache Tomcat 和火焰標誌是 Apache Software Foundation 在美國和/或其他國家/地區的註冊商標或商標。 使用這些標記不會隱含 Apache Software Foundation 的背書。

平台

選取 Java 應用程式的雲端案例之前,請先確認其平台。 大多數 Java 應用程式使用下列其中一個平台:

Spring Boot JAR 應用程式

Spring Boot JAR 應用程式通常會直接透過命令行叫用。 這種應用程式會處理 Web 要求。 這些應用程式不依賴應用程式伺服器來處理 HTTP 要求,而是將 HTTP 通訊和其他相依項直接整合至應用程式封裝中。 這類應用程式通常會使用 Spring BootDropwizardMicronautMicroProfileVert.x 等架構建立。

這些應用程式會封裝至副檔名為 .jar 的封存檔中,稱為 JAR 檔案。

Spring Cloud 應用程式

微服務架構樣式方法旨在開發由一組小型服務所組成的單一應用程式。 每個服務皆依照其本身的流程執行,並使用輕量型機制 (通常是 HTTP 資源 API) 進行通訊。 這些服務是根據商務功能建置而成。

自動化部署機制會個別部署這些微服務。 微服務可盡量減少集中管理需求,可使用不同的程式設計語言編寫,並使用不同的資料儲存技術。 這類服務通常會使用 Spring Cloud 等架構建立。

這些服務會以 JAR 檔案形式封裝為多個應用程式。

Web 應用程式

Web 應用程式會在 servlet 容器中執行。 有些會直接使用 servlet API,有些則會使用封裝了 servlet API 的其他架構,例如 Apache StrutsSpring MVCJavaServer Faces

Web 應用程式會封裝至副檔名為 .war 的封存檔中,稱為 WAR 檔案。

Jakarta EE 應用程式

Jakarta Enterprise Edition (Jakarta EE) 應用程式可以包含 Web 應用程式的部分或全部元素,也可以完全不包含 Web 應用程式的任何元素。 它們也可以包含並取用更多元件,如 Jakarta EE 規格所定義。 Jakarta EE 應用程式先前稱為 Java EE 應用程式J2EE 應用程式

Jakarta EE 應用程式可以封裝為 WAR 檔案,或是副檔名為 .ear 的封存檔 (稱為 EAR 檔案)。

Jakarta EE 應用程式必須部署於符合 Jakarta EE 標準的應用程式伺服器上。 範例包括 WebLogicWebSphereWildFlyGlassFishPayara

只依賴 Jakarta EE 規格所提供之功能的應用程式,可以在兩部相容的應用程式伺服器之間移轉。 如果您的應用程式依賴特定的應用程式伺服器,則可能需要選擇允許裝載該應用程式伺服器的 Azure 服務目的地。

平台選項

請根據您的應用程式類型,在下表中找出可能適用的平台。

Azure Spring Apps App Service Java SE App Service Tomcat App Service JBoss EAP Azure 容器應用程式 AKS 虛擬機器
Spring Boot / JAR 應用程式
Spring Cloud 應用程式
Web 應用程式
Jakarta EE 應用程式
Azure 區域可用性 詳細資料 詳細資料 詳細資料 詳細資料 詳細資料 詳細資料 詳細資料

Azure Kubernetes Service (AKS) 和虛擬機器支援所有應用程式類型,但需要您的團隊承擔更多責任,相關說明請參閱下一節。

支援能力

除了平台選擇之外,新式 Java 應用程式可能還有其他可支援性需求,例如:

批次或排程工作

某些應用程式不會等待要求或使用者輸入,而是短暫執行特定工作負載之後便結束。 有時,這類工作需要執行一次,或以定期排程間隔執行。 在內部部署環境中,這類工作通常會透過伺服器的 cron 資料表叫用。

這些應用程式會封裝為 JAR 檔案。

注意

如果您的應用程式使用 Spring Batch 或 Quartz 等排程器來執行排程工作,強烈建議您在應用程式外部執行這些工作。 如果您的應用程式在雲端擴展為多個執行個體,則相同的工作可能會執行許多次。 如果您的排程機制使用主機的本地時區,當您跨區域擴展應用程式時,可能會發生非預期的行為。

虛擬網路整合

在虛擬網路中部署 Java 應用程式時,它會對虛擬網路外部的服務產生輸出相依性。 基於管理和作業需求,您的專案必須有權存取特定的連接埠和完整網域名稱。 透過使用 Azure 虛擬網路,您可以將許多 Azure 資源放在非網際網路可路由的網路中。 虛擬網路整合功能可讓您的應用程式存取虛擬網路中的資源,或透過虛擬網路存取資源。 虛擬網路整合無法讓您的應用程式提供私人存取權。

無伺服器開發模型

無伺服器是一種雲端原生開發模型,可讓開發人員在無需管理伺服器的情況下,建置並執行應用程式。 有了無伺服器應用程式,雲端服務提供者可自動佈建、調整及管理執行程式碼所需的基礎結構。 伺服器仍以無伺服器模型的形式存在。 只是已在應用程式開發期間進行了抽象化處理。

容器化

容器化是一種將軟體程式碼及其所有必要元件 (例如程式庫、架構和其他相依項) 封裝在一起的方法。 應用程式會隔離於自己的容器中。

持續整合與持續傳遞

持續整合與持續交付 (CI/CD) 是一種在應用程式開發階段導入自動化功能,以便向客戶頻繁交付應用程式的方法。 CI/CD 的主要概念包括持續整合持續交付持續部署。 所有 Azure 選項都支援大部分的 CI/CD 工具。 例如,您可能會使用 Azure PipelinesJenkins 等解決方案。

開放原始碼搜尋引擎

搜尋是任何應用程式不可或缺的一部分。 如果速度、效能和高可用性是關鍵因素,則對 TB 和 PB 級資料進行搜尋可能會構成重大挑戰。 在 Azure 上裝載 Java 應用程式時,請計劃裝載相關的 Solr 和 Elasticsearch 執行個體。 或者也可以考慮移轉至 Azure 認知搜尋

巨量資料工具

巨量資料工具可以實現軟體系統之間的資料流量自動化。 這些工具支援可調整、健全且簡化的資料路由圖表,以及系統流量分配邏輯。 它們可用來建置即時資料流量管線,以及串流應用程式。 瞭解 Azure 上的 NifiApache Kafka 如何滿足您的需求。

可支援性選項

請根據您的應用程式類型,在下表中找出可能適用的選項。 AKS 和虛擬機器支援所有應用程式類型,但需要您的團隊承擔更多責任。

Azure Spring Apps App Service Java SE App Service Tomcat App Service JBoss EAP Azure 容器應用程式 AKS 虛擬機器
批次或排程工作
虛擬網路整合
無伺服器
容器化
Azure 區域可用性 詳細資料 詳細資料 詳細資料 詳細資料 詳細資料 詳細資料 詳細資料

另請參閱此決策樹。

Azure 服務上的 Java 決策樹圖表。

下載此圖表的 Visio 檔案

建置或移轉 Java 應用程式

如要建置或移轉 Java 應用程式,請先確認應用程式的 Java 平台。 一些熱門平台包括 Java SEJakarta EEMicroProfile

Java SE

Java Platform, Standard Edition (Java SE) 是一種計算平台,可用於為桌面和伺服器環境開發和部署可移植程式碼。 基於 Java SE 建置的熱門專案包括 Spring Boot、Spring Cloud、Spring FrameworkApache Tomcat

Jakarta EE

Jakarta EE 是雲端原生企業 Java 為了未來打造的開放原始碼解決方案。 它是一組規格,可將分散式計算和 Web 服務等企業功能擴展至 Java SE。 Jakarta EE 應用程式會執行參考執行階段。 這些執行階段可能是微服務或應用程式伺服器。 它們會處理應用程式部署元件的交易、安全性、可擴展性、並行性及管理作業。

MicroProfile

MicroProfile 專案提供一組規格,旨在協助開發人員建置 Enterprise Java 雲端原生微服務。 QuarkusOpen Liberty 是 MicroProfile 的熱門實作。

建置或移轉摘要

下表按應用程式類型和 Azure 服務提供建置或移轉資訊。

類型 Java SE MicroProfile JarkartaSE
虛擬機器 IaaS
VMware Tanzu IaaS
Azure Kubernetes Service 容器
Red Hat OpenShift 容器
Azure 容器應用程式 PaaS
JBoss EAP PaaS 應用程式服務
Apache Tomcat PaaS 應用程式服務
Java SE PaaS 應用程式服務
Azure Spring Apps PaaS

參與者

本文由 Microsoft 維護。 原始投稿人如下。

主要作者:

若要查看非公開的 LinkedIn 設定檔,請登入 LinkedIn。

下一步