比較 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 Boot、DropwizardMicronautMicroProfileVert.x 等架構來建置。

這些應用程式會封裝成具有 .jar 擴展名的封存,稱為 JAR 檔案。

Spring Cloud 應用程式

微服務架構樣式是將單一應用程式開發為小型服務套件的方法。 每個服務都會在自己的進程中執行,並使用輕量型機制進行通訊,通常是 HTTP 資源 API。 這些服務是以商務功能為基礎所建置。

自動化部署機制會獨立部署這些微服務。 最少的集中式管理,可能以不同的程式設計語言撰寫,並使用不同的數據儲存技術。 這類服務通常會使用 Spring Cloud架構來建置。

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

Web 應用程式

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

Web 應用程式會封裝成擴展名為 .war 的 封存,稱為 WAR 檔案。

Jakarta EE 應用程式

Jakarta Enterprise Edition (Jakarta EE) 應用程式可以包含一些、全部或沒有任何 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 或Tzing 等排程器來執行排程工作,強烈建議您在應用程式外部執行這些工作。 如果您的應用程式調整為雲端中的多個實例,則相同的作業可以多次執行。 如果您的排程機制使用主機的本地時區,當您跨區域調整應用程式時,可能會有不想要的行為。

虛擬網路整合

當您在虛擬網路中部署 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 專案提供一組規格,可協助開發人員建置企業 Java 雲端原生微服務。 QuarkusOpen Liberty 是 MicroProfile 的熱門實作。

建置或移轉摘要

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

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

參與者

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

主要作者:

若要查看非公用LinkedIn配置檔,請登入LinkedIn。

下一步