Azure 提供多种方式来托管应用程序代码。 术语“计算”是指运行应用程序的资源的承载模型。 本文将帮助你为应用程序选择计算服务。
选择候选服务
使用以下流程图选择候选计算服务。
此图提到了两种迁移策略:
- 直接迁移:这是一种将工作负载迁移到云的策略,不重新设计应用程序,也不进行代码更改。 它也称为“重新托管”。 有关详细信息,请参阅 Azure 迁移和现代化中心。
- 云优化:这是一种云迁移策略,需重构应用程序,以便充分利用云原生特性和功能。
此流程图的输出就是你的起点。 接下来,请评估服务,看看它是否符合你的需求。
本文中的多个表格可帮助你选择服务。 流程图中的初始候选项可能不适合你的应用程序或工作负载。 在这种情况下,扩展分析以包含其他计算服务。
如果应用程序包括多个工作负荷,请单独评估每个工作负荷。 完整的解决方案可能会合并两个或更多个计算服务。
了解基本功能
如果你不熟悉上一部分中选择的 Azure 服务,请参阅此概述文档:
- Azure 虚拟机:一个用于在 Azure 虚拟网络中部署和管理虚拟机 (VM) 的服务。
- Azure 应用服务:一个托管服务,用于承载 Web 应用、移动应用后端、RESTful API 或自动化业务流程。
- Azure Functions:托管函数即服务。
- Azure Kubernetes 服务 (AKS): 一种托管 Kubernetes 服务,用于运行容器化应用程序。
- Azure 容器应用:一个在 Kubernetes 上构建的托管服务,可以简化在无服务器环境中部署容器化应用程序的流程。
- Azure 容器实例:此服务是在 Azure 中运行容器的快速简单方法。 无需预配任何 VM 或采用更高级别的服务。
- Azure Red Hat OpenShift:一种完全托管的 OpenShift 群集,用于使用 Kubernetes 在生产环境中运行容器。
- Azure Spring Apps:一个为托管 Spring Boot 应用而设计和优化的托管服务。
- Azure Service Fabric:一个可在多个环境(包括 Azure 或本地环境)中运行的分布式系统平台。
- Azure Batch:一个托管服务,适用于运行大规模并行和高性能计算 (HPC) 应用程序。
了解承载模型
对于承载模型,云服务分为三种类别:
基础结构即服务 (IaaS):它使你能够预配 VM 及其关联的网络和存储组件。 然后你可以将需要的任何软件和应用程序部署到这些 VM 上。 此模型最接近传统的本地环境。 Microsoft 管理基础结构。 你仍然管理虚拟机。
平台即服务 (PaaS):提供托管的承载环境,可在其中部署应用程序而无需管理 VM 或网络资源。 Azure 应用服务和 Azure 容器应用是 PaaS 服务。
函数即服务 (FaaS):使你能够将代码部署到服务,后者会自动运行代码。 Azure Functions 是 FaaS 服务。
注意
Azure Functions 是一种 Azure 无服务器计算产品/服务。 若要了解此服务与其他 Azure 无服务器产品/服务(例如提供无服务器工作流的逻辑应用)的差别,请参阅在 Azure 中选择适当的集成和自动化服务。
从 IaaS 到纯 PaaS 存在一个范围。 例如,Azure VM 可以使用虚拟机规模集进行自动缩放。 此功能在严格意义上并非 PaaS,而是 PaaS 中的一种管理功能。
需要在控制度和易管理性之间做出权衡。 IaaS 提供了最大的控制、灵活性和可移植性,但必须预配、配置和管理所创建的 VM 和网络组件。 FaaS 服务自动管理运行应用程序的几乎方方面面。 PaaS 的优缺点介于上述两者之间。
服务 | 应用程序的构成 | 密度 | 最小节点数 | 状态管理 | Web 托管 |
---|---|---|---|---|---|
Azure 虚拟机 | 不可知 | 不可知 | 1 2 | 无状态或有状态 | 不可知 |
Azure 应用服务 | 应用程序、容器 | 通过应用服务计划让每个实例运行多个应用 | 1 | 无状态 | 内置 |
Azure Functions | 函数、容器 | 无服务器 1 | 无服务器 1 | 无状态或有状态 6 | 不适用 |
Azure Kubernetes 服务 | 容器 | 一个节点多个容器 | 3 3 | 无状态或有状态 | 不可知 |
Azure Container Apps | 容器 | 无服务器 | 无服务器 | 无状态或有状态 | 不可知 |
Azure 容器实例 | 容器 | 无专用实例 | 无专用节点 | 无状态 | 不可知 |
Azure Red Hat OpenShift | 容器 | 一个节点多个容器 | 6 5 | 无状态或有状态 | 不可知 |
Azure Spring Apps | 应用程序, 微服务 | 每个服务实例拥有多个应用 | 2 | 无状态 | 内置 |
Azure Service Fabric | 服务、来宾可执行文件、容器 | 每个 VM 多个服务 | 5 3 | 无状态或有状态 | 不可知 |
Azure Batch | 计划的作业 | 每个 VM 多个应用 | 1 4 | 无状态 | 否 |
注释
- 如果使用消耗计划。 对于应用服务计划,函数将在为应用服务计划分配的 VM 上运行。 请参阅为 Azure Functions 选择正确的服务计划。
- 具有两个或更多个实例的更高的服务级别协议 (SLA)。
- 建议用于生产环境。
- 作业完成后可以缩小至零。
- 三个用于主节点,三个用于工作器节点。
- 使用 Durable Functions 时。
网络
服务 | 虚拟网络集成 | 混合连接 |
---|---|---|
Azure 虚拟机 | 支持 | 支持 |
Azure 应用服务 | 支持 1 | 支持 2 |
Azure Functions | 支持 1 | 支持 3 |
Azure Kubernetes 服务 | 支持 | 支持 |
Azure Container Apps | 支持 | 支持 |
Azure 容器实例 | 支持 | 支持 |
Azure Red Hat OpenShift | 支持 | 支持 |
Azure Spring Apps | 支持 | 支持 |
Azure Service Fabric | 支持 | 支持 |
Azure Batch | 支持 | 支持 |
说明
- 需要应用服务环境。
- 使用 Azure 应用服务混合连接。
- 需要应用服务计划或 Azure Functions 高级计划。
DevOps
服务 | 本地调试 | 编程模型 | 应用程序更新 |
---|---|---|---|
Azure 虚拟机 | 不可知 | 不可知 | 没有内置支持 |
Azure 应用服务 | IIS Express、其他 1 | Web 和 API 应用程序、后台任务的 WebJobs | 部署槽 |
Azure Functions | Visual Studio 或 Azure Functions CLI | 无服务器,事件驱动 | 部署槽 |
Azure Kubernetes 服务 | Minikube、Docker 等 | 不可知 | 滚动更新 |
Azure Container Apps | 本地容器运行时 | 不可知 | 修订管理 |
Azure 容器实例 | 本地容器运行时 | 不可知 | 不适用 |
Azure Red Hat OpenShift | Minikube、Docker 等 | 不可知 | 滚动更新 |
Azure Spring Apps | Visual Studio Code、Intellij、Eclipse | Spring Boot、Steeltoe | 滚动升级、蓝绿部署 |
Azure Service Fabric | 本地节点群集 | 来宾可执行文件、服务模型、参与者模型、容器 | 滚动升级(每个服务) |
Azure Batch | 不支持 | 命令行应用程序 | 不适用 |
注释
- 选项包括:IIS Express for ASP.NET 或 node.js (iisnode)、PHP Web 服务器、Azure Toolkit for IntelliJ 和 Azure Toolkit for Eclipse。 应用服务还支持对已部署的 web 应用进行远程调试。
可伸缩性
服务 | 自动缩放 | 负载均衡器 | 缩放限制3 |
---|---|---|---|
Azure 虚拟机 | 虚拟机规模集 | Azure 负载均衡器 | 平台映像:每个规模集 1,000 个节点,自定义映像:每个规模集 600 个节点 |
Azure 应用服务 | 内置服务 | 集成 | 30 个实例,应用服务环境为 100 个 |
Azure Functions | 内置服务 | 集成 | 每个函数应用 200 个实例 |
Azure Kubernetes 服务 | Pod 自动缩放1、群集自动缩放2 | Azure 负载均衡器或 Azure 应用程序网关 | 使用运行时间 SLA 时为 5,000 个节点 |
Azure Container Apps | 缩放规则4 | 集成 | 每个区域有 5 个环境,每个环境有 20 个容器应用,每个容器应用有 30 个副本 |
Azure 容器实例 | 不支持 | 没有内置支持 | 每个订阅有 20 个容器组(默认限制) |
Azure Red Hat OpenShift | Pod 自动缩放、群集自动缩放 | Azure 负载均衡器或 Azure 应用程序网关 | 每个群集 60 个节点(默认限制) |
Azure Spring Apps | 内置服务 | 集成 | 标准 500 个应用实例 |
Azure Service Fabric | 虚拟机规模集 | Azure 负载均衡器 | 每个虚拟机规模集有 100 个节点 |
Azure Batch | 不适用 | Azure 负载均衡器 | 20 个核心的限制(默认限制) |
说明
- 请参阅自动缩放 Pod。
- 请参阅自动缩放群集以满足 Azure Kubernetes 服务中的应用程序需求。
- 请参阅 Azure 订阅和服务限制、配额和约束。
- 请参阅在 Azure 容器应用中设置缩放规则。
可用性
服务 | SLA | 多区域故障转移 |
---|---|---|
Azure 虚拟机 | 虚拟机的 SLA | Azure 流量管理器、Azure Front Door 和跨区域 Azure 负载均衡器 |
Azure 应用服务 | 应用服务的 SLA | Azure 流量管理器和 Azure Front Door |
Azure Functions | Functions 的 SLA | Azure 流量管理器和 Azure Front Door |
Azure Kubernetes 服务 (AKS) | AKS 的 SLA | Azure 流量管理器、Azure Front Door 和多区域群集 |
Azure Container Apps | 容器应用的 SLA | Azure 流量管理器和 Azure Front Door |
Azure 容器实例 | 容器实例的 SLA | Azure 流量管理器和 Azure Front Door |
Azure Red Hat OpenShift | Azure Red Hat OpenShift 的 SLA | Azure 流量管理器和 Azure Front Door |
Azure Spring Apps | 适用于 Azure Spring Apps 的 SLA | Azure 流量管理器、Azure Front Door 和多区域群集 |
Azure Service Fabric | Service Fabric 的 SLA | Azure 流量管理器、Azure Front Door 和跨区域 Azure 负载均衡器 |
Azure Batch | Batch 的 SLA | 不适用 |
有关服务保证的引导式学习,请查看核心云服务 - Azure 体系结构和服务保证。
安全性
查看并了解每项服务的可用安全控制和可见性:
- Azure Windows 虚拟机
- Azure Linux 虚拟机
- Azure 应用服务
- Azure Functions
- Azure Kubernetes 服务
- Azure 容器实例
- Azure Spring Apps
- Azure Service Fabric
- Azure Batch
其他条件
服务 | TLS | 成本 | 合适的体系结构样式 |
---|---|---|---|
Azure 虚拟机 | 已在 VM 中配置 | Windows、Linux | N 层、大计算 (HPC) |
Azure 应用服务 | 支持 | 应用服务定价 | Web-队列-辅助角色 |
Azure Functions | 支持 | Functions 定价 | 微服务、事件驱动型体系结构 |
Azure Kubernetes 服务 (AKS) | 入口控制器 | AKS 定价 | 微服务、事件驱动型体系结构 |
Azure Container Apps | 入口控制器 | 容器应用定价 | 微服务、事件驱动型体系结构 |
Azure 容器实例 | 使用挎斗容器 | 容器实例定价 | 微服务、任务自动化、批处理作业 |
Azure Red Hat OpenShift | 支持 | Azure Red Hat OpenShift 定价 | 微服务、事件驱动型体系结构 |
Azure Spring Apps | 支持 | Azure Spring Apps 定价 | Spring Boot、微服务 |
Azure Service Fabric | 支持 | Service Fabric 定价 | 微服务、事件驱动型体系结构 |
Azure Batch | 支持 | Batch 定价 | 大计算 (HPC) |
考虑限制和成本
除了上面的比较表以外,请对候选服务的以下方面进行更详细的评估:
作者
本文由 Microsoft 维护, 最初由以下贡献者撰写:
- Ayobami Ayodeji | 高级项目经理
- Jelle Druyts | 首席服务工程师
- Martin Gjoshevski | 高级服务工程师
- Phil Huang | 高级云解决方案架构师
- Julie Ng | 高级服务工程师
- Paolo Salvatori | 首席服务工程师
若要查看非公开的领英个人资料,请登录到领英。
后续步骤
核心云服务 - Azure 计算选项。 此 Learn 模块探讨计算服务如何解决常见的业务需求。