自信和轻松部署 Java 应用程序

Java 生态系统包括各种技术,如 Java 标准版、Jakarta 企业版(Java 企业版 和 J2企业版 的继任者)、Spring、许多应用程序服务器和其他框架。 无论使用 Java 如何构建应用、使用框架和运行应用程序服务器,Azure 支持具有丰富的选择工作负载。 同样,Azure 支持任何应用程序体系结构-从在 VM 上运行的单体应用程序或容器中运行到在完全托管服务上运行的基于微服务的云原生应用程序。

通常,若要运行 Java 应用程序,请将其部署到应用程序服务器-运行应用程序的 Java 虚拟机(JVM)实例。 或者,可以使用嵌入式应用程序服务器生成独立应用程序。 无论哪种方式,应用程序服务器都提供常见的应用程序基础结构和功能功能,与 Web 容器协作以返回对客户端请求的动态自定义响应。 可以使用可能包含 servlet、动态页面、企业豆类、支持类、依赖库和数据驱动程序的软件组件来处理客户端请求。

Tomcat、JBoss EAP、WildFly、WebLogic 和 WebSphere 是常用的应用程序服务器。 同样,Spring Boot、Quarkus 和 Open Liberty 也是使用嵌入式应用程序服务器构建独立应用程序的常用框架。 Azure 支持所有这些应用程序,使你能够使用任何 Java 应用程序服务器并放心地部署 Java 应用程序。

将 Spring Boot 或 Java 应用部署到任何应用程序服务器 - Tomcat 和 Jakarta 企业版

使用 Azure,可以运行任何版本和任何 Java 和任何应用程序服务器的分发,无需限制,也无需管理自己的物理基础结构。 可以使用虚拟机、容器和完全托管服务等选项来决定所需的控制量或希望 Azure 处理的日常管理量。 如果使用商业支持的 Java 应用服务器或框架(例如 VMware Spring Runtime、Red Hat JBoss EAP、Oracle WebLogic Server 或 IBM WebSphere、Liberty 或 OpenLiberty),Azure 会为所有服务器共同开发和支持产品/服务。

部署选项

Azure 为 Java 应用程序提供了丰富的部署选项,包括基础结构即服务(IaaS)、容器即服务(CaaS)和平台即服务(PaaS)托管服务。 可以将现有 Java 应用程序直接迁移到虚拟机(VM),以多种方式对其进行容器化,或将它们部署到完全托管的 PaaS 服务上,以优化管理、开发人员和运营效率以及总拥有成本。

VM 和容器

部署到 Azure 上的虚拟机或容器时,可以随意使用 Java 的任何分发和版本以及任何应用程序服务器。 选择完全由你决定。 请记住,需要手动配置基础结构及其组件。 属于此类别的部署选项包括:

  • Azure 虚拟机,无需购买和维护运行虚拟化的物理硬件即可灵活地进行虚拟化。 但是,仍需要通过安装、配置和修补其上运行的软件来维护 VM。

  • Azure 虚拟机规模集,可用于创建和管理一组负载均衡的 VM。 可以根据需求或定义的计划自动增减 VM 实例的数目。

  • Azure Kubernetes 服务(AKS),它通过处理所有操作开销(包括维护和运行状况监视等关键任务)简化了部署托管 Kubernetes 群集的过程。 AKS 支持弹性预配容量,包括事件驱动的自动缩放和 KEDA 触发器。

  • Azure Red Hat OpenShift,提供高可用性、完全托管的 OpenShift 群集按需。 OpenShift 提供增值功能来补充 Kubernetes,使其成为提供改进的开发人员和操作员体验的交钥匙容器平台。

虽然可以在所有这些 IaaS 和 CaaS 服务上部署任何 Java 运行时,但建议使用以下运行时之一:

这两个版本都可用于本地开发和测试,以及使用任何平台或 DevOps 工具生成生产就绪二进制文件,而无需支付任何许可费用。 我们建议他们作为方便事项。 使用其中一个生成时,如果有任何问题,并且有适用于 Azure 的合格支持计划,则可以开具Azure 支持票证 - 无需再花费任何费用。 话又说,值得指出的是,这些建议只是这样——我们建议在 OpenJDK 的其他各种免费版本中推荐的选项,以便于支持。 有关详细信息,请参阅Azure 和 Azure Stack 上的 Java 支持

显示 Java 技术和 Azure 服务类别之间的关系的标题为“生成或迁移 Java 应用”的图表。

所有这些 IaaS 和 CaaS 部署选项都允许轻松部署 Apache Tomcat 应用程序服务器。 如果使用的是来自 VMware 的商业产品/服务(例如来自 VMware 的 Spring Runtime、来自 Red Hat 的 JBoss EAP、来自 Oracle 的 WebLogic Server 或 IBM 的 WebSphere),Azure 也提供这些供应商共同开发和支持的托管选项。 稍后,在与 Java 生态系统合作伙伴联合构建和支持的解决方案下,将介绍这些解决方案。

完全托管(PaaS)服务

用于在 Azure 上运行 Java 应用程序的完全托管 PaaS 服务包括以下选项:

  • 使用 Azure Spring Apps,可以轻松地将 Spring Boot 应用程序部署到 Azure - 无需进行任何代码更改。 该服务管理 Spring Boot 应用程序的所有基础结构。 此基础结构包括全面的监视和诊断、配置管理、服务发现、安全性、应用程序生命周期、发布日志和指标、CI/CD 集成、蓝绿部署等。 Azure Spring Apps 与 Pivotal(现已是 VMware 的一部分)合作开发,由 Microsoft 和 VMware 共同运营和支持。
  • Azure App 服务,一种基于 HTTP 的服务,用于托管 Web 应用程序、REST API 和移动后端 - 内置安全性、负载均衡、自动缩放和自动化管理。 App 服务还支持全面的 DevOps 功能,例如持续部署、包管理、过渡环境、自定义域和 TLS/SSL 证书。
  • 使用 Azure 容器应用,可以在无服务器平台上运行微服务和容器化应用程序。 常见用途包括部署 API 终结点、托管后台处理应用程序、处理事件驱动的处理以及运行微服务。 基于 Azure 容器应用构建的应用程序可以根据 HTTP 流量、事件驱动处理、CPU 或内存负载或任何 KEDA 支持的缩放程序动态缩放。

Azure Spring Apps 和 Azure App 服务 的 Java 运行时由 Microsoft 提供和维护。 它们仅支持 OpenJDK 的 LTS 分发版,使用 Eclipse Adoptium Temurin for Java 8 和适用于 Java 11 和 17 的 OpenJDK 的 Microsoft Build。 也就是说,有一些注意事项-例如,我们共同开发和支持的合作伙伴产品/服务(稍后讨论)使用自己的运行时。

对于 Azure 容器应用,由于需要从源代码生成和管理自己的容器映像,你可以随意使用所选 Java 和应用程序服务器的分发和版本。

无服务器函数

有时不需要整个 Java 应用程序。 例如,对于实时数据处理,你可能只需要一小段代码即可大规模触发,也许由数百万和数百万个事件触发。 此类事件可以通过Azure 事件中心引入,由事件驱动的无服务器 Java 代码在 Azure Functions大规模运行,并保存到 Azure Cosmos DB数据存储中。

与 Java 生态系统合作伙伴联合构建和支持的解决方案

Microsoft 与 Java 生态系统中的领先供应商合作,提供一流的解决方案,用于在 Azure 上运行 Java-从共同开发和支持的托管服务到为常用 Java 应用程序服务器提供Azure 市场产品/服务。 我们还集成了常用应用程序监视工具,本文档稍后将介绍这些工具。

包含本文中所述合作伙伴的标题“强大的合作伙伴生态系统”和徽标的关系图。

Azure Spring Apps (Pivotal/VMware)

Azure Spring Apps 由 Microsoft 和 Pivotal 共同开发,是一项完全托管的服务,可解决开发人员、IT 操作员和 DevOps 团队在大规模运行 Spring Boot 应用程序时面临的许多常见挑战。 它抽象化了管理基础结构以运行基于 Spring 的应用程序和 Spring Cloud 中间件组件的复杂性,使 Java 开发人员能够专注于其代码,同时让 Azure 负责动态缩放、安全修补程序、合规性标准、高可用性等。

JBoss EAP (Red Hat)

Red Hat 为企业提供开源解决方案。 其中一种解决方案是 JBoss Enterprise Application Platform (EAP),它是 Java 企业版认证且 Jakarta 企业版符合 Web 配置文件和完整平台的常用应用程序服务器平台。 Red Hat 也是 Java 标准、OpenJDK、MicroProfileJakarta 企业版 和 Quarkus 的参与者

我们与 Red Hat 合作,在 Azure App 服务上交付 Red Hat JBoss 企业应用程序平台(EAP),使 Java 开发人员能够将他们的 Jakarta 企业版 应用程序部署到App 服务,而无需提供来自两家公司的集成支持的独立 Red Hat 订阅或许可证。 我们还在 Azure VM、Azure VM 规模集和 Azure RedHat OpenShift(ARO) 上为 JBoss EAP 推出了类似的联合产品-后者也由 Microsoft 和 Red Hat 联合运营。

WebLogic Server (Oracle)

我们与 Oracle 合作,在 Azure VMAzure Kubernetes 服务 上的 Oracle WebLogic Server 上交付 Oracle WebLogic Server (WLS)。 这些解决方案通过自动化样板操作(例如预配虚拟网络/存储、安装 Linux/Java 资源、设置 WebLogic Server 以及使用网络安全组配置安全性)来简化迁移到 Azure 的过程。

WebSphere/Liberty/Open Liberty (IBM)

我们与 IBM 合作,共同开发 Azure VM 上的 WebSphere 应用程序服务器(WAS)解决方案、Azure Kubernetes 服务上的 WebSphere Liberty 和 Open Liberty,以及 Azure Red Hat OpenShift 上的 WebSphere Liberty 和 Open Liberty。 有关详细信息,请参阅 在 Azure 上运行 IBM WebSphere 产品系列的解决方案是什么? 这些解决方案可以轻松将 WebSphere 工作负载迁移到 Azure,从而自动执行设置高可用性 WebSphere 群集所需的大部分资源预配任务。 此合作关系涵盖一系列用例-从现有任务关键型工作负荷到云原生应用程序。

Apache Kafka on Confluent Cloud (Confluent)

过去,想要使用 Confluent 的 Kafka 服务的 Azure 客户必须分别在 Azure 和 Confluent Cloud 中创建和管理资源和用户。 为了缓解这种痛苦,Confluent 和 Microsoft 合作提供 Apache Kafka for Confluent Cloud,这是一种提供 Apache Kafka 作为完全托管服务的Azure 市场产品,包括通过 Azure 门户、Azure CLI 或 Azure 管理 SDK 创建和管理 Confluent Cloud 资源的能力。

如今,客户体验更简单、更安全且更无缝。 客户可以在统一工作流中预配和管理 Confluent Cloud 资源及其 Azure 资源,并利用为 Azure Functions、Azure Blob 存储、Azure 事件中心、Azure Data Lake 存储 Gen2 和 Microsoft SQL Server 构建的完全托管连接器。 开发人员可以使用 Apache Kafka 客户端库继续编写代码

总结

与合作伙伴共同开发其中许多产品/服务是持续不断的努力。 随着合作伙伴继续在其产品/服务上进行创新,我们正在与他们密切合作,快速将相同的创新引入 Azure,以便客户能够放心地部署和缩放其 Java 应用程序。

总之,无论使用 Java 做什么,Azure 支持工作负荷都选择丰富。 可以生成任何 Java 应用、使用任何框架、运行任何应用程序服务器并支持任何应用程序体系结构-从 VM 上运行的单体应用程序或容器中运行到在完全托管服务上运行的基于云的基于微服务的应用程序。

本文中所述的部署选项标题为“轻松部署 Java 应用程序”和徽标的关系图。

下一步

使用端到端安全性、监视和自动化进行缩放