在 Azure 上有许多选项可供团队构建和部署云原生应用程序和容器化应用程序。不存在适合每个用例和每个团队的完美解决方案。
Azure Container Apps
Azure Container Apps 使你能够基于容器构建无服务器微服务。 Container Apps 的独特功能包括:
- 针对运行常规用途容器进行了优化,特别是对于跨部署在容器中的多个微服务的应用程序。
- 由 Kubernetes 以及 Dapr、KEDA 和 envoy 等开放源技术提供支持。
- 支持 Kubernetes 风格的应用,以及具有服务发现和流量拆分等功能的微服务。
- 通过支持基于流量的缩放(包括缩放到零),以及从队列等事件源拉取,实现事件驱动型应用程序体系结构。
- 支持长时间运行的进程,并且可以运行后台任务。
Azure Container Apps 不提供对基础 Kubernetes API 的直接访问。 如果需要访问 Kubernetes API 和控制平面,应使用 Azure Kubernetes 服务。 但是,如果要构建 Kubernetes 风格的应用程序,并且不需要直接访问所有原生 Kubernetes API 和群集管理,则 Container Apps 可提供基于最佳做法的完全托管体验。 由于这些原因,许多团队可能更愿意使用 Azure Container Apps 来开始构建容器微服务。
Azure 应用服务
Azure 应用服务为 Web 应用程序(包括网站和 Web API)提供完全托管的托管平台。 可以使用代码或容器来部署这些 Web 应用程序。 Azure 应用服务针对 Web 应用程序进行了优化。 Azure 应用服务已与其他 Azure 服务(包括 Azure Container Apps 和 Azure Functions)集成。 构建 Web 应用时,Azure 应用服务是理想的选择。
Azure 容器实例
Azure 容器实例 (ACI) 按需提供 Hyper-v 隔离容器的单个 Pod。 与 Container Apps 相比,可以将其视为较低级别的“构建基块”选项。 缩放、负载均衡和证书等概念不随 ACI 容器一起提供。 例如,要扩展到五个容器实例,可以创建五个不同的容器实例。 Azure Container Apps 提供许多基于容器的、特定于应用程序的概念,包括证书、修订版、扩展和环境。 用户经常通过其他服务与 Azure 容器实例交互。 例如,Azure Kubernetes 服务可以通过虚拟节点,将业务流程分层,并基于 ACI 进行扩展。 如果你需要较不“固定的”构建基块,并且该构建基块不符合 Azure Container Apps 针对其进行了优化的方案,则 Azure 容器实例是理想的选择。
Azure Kubernetes 服务
Azure Kubernetes 服务在 Azure 中提供完全托管的 Kubernetes 选项。 它支持直接访问 Kubernetes API,并且能够运行任何 Kubernetes 工作负载。 整个群集位于你的订阅中,群集配置和操作都由你控制和负责。 如果团队正在 Azure 中寻找 Kubernetes 的完全托管版本,则 Azure Kubernetes 服务是理想的选择。
Azure Functions
Azure Functions 是一种无服务器函数即服务 (FaaS) 解决方案。 它针对使用函数编程模型运行事件驱动型应用程序进行了优化。 在扩展以及与事件的集成方面,它与 Azure Container Apps 具有许多相同特性,但针对部署为代码或容器的临时函数进行了优化。 Azure Functions 编程模型为希望基于事件触发函数执行并绑定到其他数据源的团队提供了生产力优势。 生成 FaaS 样式的函数时,Azure Functions 是理想的选择。 Azure Functions 编程模型可用作基础容器映像,使其可移植到其他基于容器的计算平台,从而使团队可以在环境要求改变时重用代码。
Azure Spring Cloud
借助 Azure Spring Cloud,可以轻松地将 Spring Boot 微服务应用程序部署到 Azure,不需更改任何代码。 该服务管理 Spring Cloud 应用程序的基础结构,因此开发人员可以专注于其代码。 Azure Spring Cloud 可以通过以下方法提供生命周期管理:综合性监视和诊断、配置管理、服务发现、CI/CD 集成、蓝绿部署等。 如果你的团队或组织主要使用 Spring,则 Azure Spring Cloud 是理想的选择。