比較解決方案
我們已說明過最常見的 Java 應用程式部署類型。 讓我們根據您所需的部署類型,查看哪個 Azure 服務可以發揮最佳效果。
Azure 容器應用程式
Azure Container Apps 是執行 Docker 容器的受控服務。
當封裝為 Docker 映射時,Azure Container Apps 可以執行任何 Java 應用程式(包括 Tomcat、Spring Boot 和 Quarkus 應用程式)。 建置和管理這些映像是您的責任(例如,使用 GitHub Actions):這可提供您許多彈性,但也需要一些維護。
它是符合成本效益且可調整的解決方案,非常適合小型和中型工作負載。
若要執行容器型 Java 整合型應用程式,Azure Container Apps 因此是最佳選項。
Azure App Service
Azure App Service 是 Azure 所提供的平台即服務 (PaaS) 解決方案。 它提供易於使用的服務,以自動OS和Java虛擬機 (JVM) 更新和修補程式,以及自動調整或監視來執行 Java Web 應用程式。
App Service 可以執行任何可執行的 JAR 檔案,使其成為執行簡單 Java 整合型應用程式的 Azure Container Apps 替代方案。
它也可以將任何 WAR 應用程式部署在熱門應用程式伺服器上,例如 Apache Tomcat 或 Red Hat JBoss。 這使其成為在 Azure 上執行 Jakarta EE 應用程式的最佳解決方案。
Azure Functions
Azure Functions 是 Azure 所提供的無伺服器平台,而且支援執行 Java 工作負載。
在 Azure Functions 上執行 Java 應用程式,通常需要一些微幅設定和安裝。 本質上,無伺服器函式的存留期非常短暫 (通常只有數分鐘),所以傳統上使用的某些服務可能不如 Azure App Service 來得有效率或實用。
因此,Azure Functions 是針對需要大量可擴縮性的應用程式而量身訂做。 您可以定期將其停止以降低成本,也可以將其擴大以回應高負載。
Azure Spring Apps
Azure Spring 應用程式是唯一可為執行 Spring Boot 微服務而提供平台即服務解決方案的 Azure 服務。 Spring Cloud 提供許多工具,例如服務登錄或設定伺服器。 其也提供特定的自動調整與安全性機制,可大幅簡化以 Spring Boot 為基礎的微服務架構使用情況。
Spring Cloud 供應專案是由 Microsoft 和 Broadcom 共同建立和管理,這是建置 Spring Framework 的公司。 Spring Cloud 提供 OS 與 JVM 更新與修補檔 (例如 Azure App Service) 與進階 Spring 服務的支援。
您也可以使用 Azure Spring 應用程式服務來執行其他工作負載 (例如,Spring Boot 整合型應用程式,或甚至是使用 Steeltoe 的 .NET 微服務),但此服務主要是用來執行 Spring Boot 微服務。
Azure Kubernetes Service
Azure Kubernetes Service (AKS) 是 Azure 所提供的受控且安全的 Kubernetes 解決方案。 其可以執行任何 Docker 映像,並從屬於整個 Kubernetes 生態系統中獲益。 若您想要以任何語言 (包括 Java) 傳遞雲端原生應用程式,也可以使用 AKS。
若您有異質性工作負載,或是想要精確控制您的環境,Azure Kubernetes Service 是絕佳的解決方案。 AKS 會妥善地執行 Java 工作負載,但您必須建置及維護您的 Docker 映像。
Azure VM
在 Azure 上執行 VM 可提供您最大的彈性與各種選項。 您可以在多個作業系統 (通常是 Windows) 與主要的 Linux 發行版本之間進行選擇。 您可以攜帶自己的軟體,或是使用某些提供的映像。
特別是針對 Java,您主要會使用 VM 來執行下列動作:
- 在 Windows 或 Linux 上手動安裝並執行 Java Web 應用程式。
- 安裝並執行 Docker (或甚至是 AKS),以執行包含 Java Web 應用程式的映像。
- 使用其中一個支援的供應項目 (例如 Oracle WebLogic),以在您的 VM 上執行 Java Web 應用程式。
當您使用 Azure VM 時,因為您對其有完整控制權,所以對於您可以安裝並執行的項目沒有任何限制。 不過,VM 的主要缺點是您必須進行維護及保護。 針對 VM,此維護工作是您的責任。