比较解决方案

已完成

我们介绍了 Java 应用程序最典型的部署类型。 现在,让我们看看哪种 Azure 服务效果最好,具体取决于你所需的部署类型。

Azure Container Apps

Azure 容器应用是运行 Docker 容器的托管服务。

Azure 容器应用可以运行任何打包为 Docker 映像的 Java 应用程序(包括 Tomcat、Spring Boot 和 Quarkus 应用程序)。 你需要使用相关功能(例如 GitHub Actions)来生成和管理这些映像:这非常灵活,但也需要一些维护。

这是一种经济高效且可缩放的解决方案,非常适合中小型工作负荷。

因此对于运行基于容器的 Java 整体应用程序,Azure 容器应用是最佳选择。

Azure 应用服务

Azure 应用服务是由 Azure 提供的平台即服务 (PaaS) 解决方案。 它为运行 Java Web 应用程序提供了一种易于使用的服务,包含自动 OS 和 Java 虚拟机 (JVM) 更新和修补程序,以及自动缩放和监视。

应用服务可以运行任何可执行的 JAR 文件,因此可以替代 Azure 容器应用运行简单的 Java 整体式应用程序。

它还可以在常用应用程序服务器(如 Apache Tomcat 和 Red Hat JBoss)上部署任何 WAR 应用程序。 这使得它成为在 Azure 上运行 Jakarta EE 应用程序的最佳解决方案。

Azure Functions

Azure Functions 是由 Azure 提供的无服务器平台,它支持运行 Java 工作负载。

在 Azure Functions 上运行 Java 应用程序通常需要一些较小配置和设置。 从本质上说,无服务器函数将具有较短的生命周期(通常只有几分钟),因此,一些传统上会使用的服务可能不如 Azure 应用服务高效或实用。

因此,Azure Functions 专为需要大量可伸缩性的应用程序量身定制。 你可以定期停止它们以降低成本,也可以纵向扩展以应对高负载。

Azure Spring Apps

Azure Spring Apps 是一项独一无二的 Azure 服务,它提供了平台即服务解决方案,用于运行 Spring Boot 微服务。 Spring Cloud 提供了许多工具,如服务注册表或配置服务器。 它还提供了特定的自动缩放和安全机制,可极大地简化基于 Spring Boot 的微服务体系结构的使用。

Spring Cloud 产品/服务由 Microsoft 和 Broadcom(构建 Spring Framework 的公司)共同创建和管理。 Spring Cloud 为 OS 和 JVM 更新和修补程序(如 Azure 应用服务)以及高级 Spring 服务提供支持。

你还可以使用 Azure Spring Apps 服务运行其他工作负载,如 Spring Boot 单片应用程序,或甚至是使用 Steeltoe 的 .NET 微服务,但该服务主要用于运行 Spring Boot 微服务。

Azure Kubernetes 服务

Azure Kubernetes 服务 (AKS) 是由 Azure 提供的托管和安全的 Kubernetes 解决方案。 它可以运行任何 Docker 映像,并受益于属于整个 Kubernetes 生态系统。 如果你想以任何语言(包括 Java)交付云原生应用程序,AKS 也可以带来满意的效果。

如果你有异构工作负载,或者要对环境进行精确的控制,则 Azure Kubernetes 服务是一种很好的解决方案。 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,这项维护工作由你负责。