在 Azure 上托管应用程序
这是帮助开发人员开始使用 Azure 的 7 篇文章中的第三篇。
- 第 1 部分:面向开发人员的 Azure 的概述
- 第 2 篇:面向开发人员的主要 Azure 服务
- 第 3 部分:在 Azure 上托管应用程序
- 第 4 部分:将应用连接到 Azure 服务
- 第 5 部分:如何在 Azure 中创建和管理资源?
- 第 6 部分:生成 Azure 应用的关键概念
- 第 7 部分:如何计费?
Azure 根据你的需求提供了多种不同的方法来托管你的应用程序。 本文建议提供符合要求的服务。 它不是禁止性的。 你可以混合搭配服务以满足需求。 大多数生产环境使用服务的组合来满足其业务和组织需求。
你选择的服务通常归结为两个考虑因素:
- 你更喜欢简单性还是控制性?
- 你更喜欢云原生(即容器)还是 Azure 原生(定制工具和集成)
以下视频介绍了第一个考虑因素:简单性和控制性:
简单性和控制性
Azure 托管服务提供有两个考虑因素:
- 简单性和控制性
- 简单的托管平台需要更少的配置和管理,但对底层基础结构的控制较少。
- 更复杂的托管平台需要更多的配置和管理,但对底层基础结构提供了更多的控制。
- 云原生与 Azure 原生
- 可以将云原生视为使用开源工作负载(如容器和开源技术,如 Dapr)的云可移植。 生成的应用程序可以部署到任何云提供程序。
- Azure 原生特定于 Azure,投资于 Azure 特定的工具和技术来管理该基础架构。 虽然这些服务包括容器工作负载,但它们还包括特定于 Azure 的代码优先、低代码和基础结构工具,重点是在 Azure 服务之间连接和集成。
简化托管
简化托管解决方案由 Azure 完全管理。 你负责代码和环境配置等功能。 Azure 管理基础运行时和基础结构,包括更新和修补程序。 简化托管是 Azure 原生方法。
- 逻辑应用:创建并运行自动化工作流,几乎不需要代码。
- Power Automate:当你需要自动化业务流程和工作流时使用。
- Azure Static Web Apps:部署生成的静态 Web 应用,例如 Blazor 和 React。
- Azure Functions 应用:无服务器代码或容器托管。
均衡托管
均衡托管解决方案在简单性和控制性之间取得了平衡。 你负责代码和环境配置等功能。 Azure 管理基础运行时和基础结构,包括更新和修补程序。 你还可以将自己的容器引入服务。 均衡托管既是 Azure 原生托管,也是云原生托管。
- Azure 应用程序服务:全服务 Web 托管,包括语言运行时、容器和自动化工作负载。
- Azure 容器应用:无服务器容器托管。
- Azure Spring Apps:将 Spring Boot 应用程序迁移到 Azure 云。
受控托管
受控托管解决方案可让你完全控制底层基础结构。 你负责更新和修补程序以及代码、资产和环境配置。 受控托管是云原生方法。
- Azure 虚拟机:完全控制 VM。
- Azure Kubernetes 服务:完全控制 Kubernetes 群集。
源代码托管
对于想要开始新开发的 Azure 的开发人员,请使用以下图表查找建议的托管解决方案。
无代码或低代码
Azure 支持无代码解决方案,这是 Azure 云方法的一部分。
- 逻辑应用:使用具有预构建操作的可视化设计器为你的企业和企业对企业方案开发工作流。
- Power Automate(如 Power Apps):当你需要在 Microsoft 365 组织内自动化业务流程和工作流时使用。
代码与容器
低代码托管解决方案旨在允许你在不管理应用程序基础架构的情况下实现代码功能。
- Azure Static Web Apps:部署生成的静态 Web 应用。
- Azure Functions:以支持的语言部署代码函数,而无需管理应用程序基础结构。
代码优先托管解决方案旨在托管代码。 可以直接将代码部署到托管解决方案。
- Azure 应用程序服务:全服务 Web 托管。
- Azure Spring Apps:Spring Boot 应用程序。
容器优先托管解决方案旨在托管容器。 该服务提供特定于容器的配置选项和功能。 你负责容器内使用的计算。 托管容器的服务从托管控制转变为全权负责,因此你只需承担所需的容器管理量。
以 Kubernetes 为中心的业务流程托管包括:
服务 | 侧重点 | 使用 |
---|---|---|
Azure Kubernetes 服务 | 云原生 | 使用配置文件和外部项目通过声明性方法用于 Kubernetes 群集。 |
Azure Service Fabric | Azure 原生 | 使用命令性方法跨计算机群集部署微服务。 它提供了一个编程模型,使开发人员能够编写描述系统所需状态的代码,Service Fabric 运行时负责使系统与该状态相匹配。 |
预配置的容器托管意味着已为你预配置业务流程选项。 你在容器或容器群集之间进行通信的能力可能需要额外的服务,例如 Dapr。
服务 | 使用 |
---|---|
Azure 应用程序服务 | 全服务 Web 托管 |
Azure Spring Apps | Spring Boot 应用程序 |
Azure Container Apps | 无服务器容器托管 |
Azure 容器实例 | 简单的单容器托管 |
Azure 提供容器注册表来存储和管理容器映像,你也可以使用第三方容器注册表。
服务 | 使用 |
---|---|
Azure 容器注册表 | 生成并托管自己的容器映像时,这可以通过源代码提交和基础映像更新来触发。 |
无服务器
无服务器托管解决方案旨在运行无状态代码,其中包括一个基于消耗的定价层,在不使用时可缩放到零。
服务 | 使用 |
---|---|
Azure Container Apps | 容器托管。 |
Azure Functions | 代码或容器托管。 |
微服务
微服务托管解决方案旨在运行小型独立服务,这些服务协同工作以构成更大的应用程序。 微服务通常部署为容器。
服务 | 使用 |
---|---|
Azure Container Apps | 用于无服务器容器化微服务。 |
Azure Functions | 用于无服务器代码或容器化微服务。 |
云边缘
云边缘是一个术语,用于指示云服务是适用于用户(客户端)还是应用程序(服务器)。
客户端计算机
客户端计算是在远离 Azure 云的客户端上运行的计算。 客户端计算通常用于客户端呈现和客户端处理,例如基于浏览器或移动应用程序。
服务 | 使用 |
---|---|
Azure Static Web Apps | 用于使用客户端呈现的静态 Web 应用,例如 React、Angular、Svelte、Vue 和 Blazor。 |
客户端空闲情况
服务 | 使用 |
---|---|
Azure Front Door | 用于所有面向 Internet 的应用程序,为静态和动态资产提供全局缓存和安全网络,包括 DDoS 保护、端到端 TLS 加密、应用程序防火墙和地区筛选。 |
服务器计算
服务器计算资产是服务器在提供给客户端之前由服务器处理的文件。 动态资产是使用后端服务器计算开发的,可以选择与其他 Azure 服务集成。
服务 | 使用 |
---|---|
Azure 应用程序服务 | 将此服务用于典型的 Web 托管。 这支持一组广泛的功能 API 终结点、全堆栈应用程序和后台任务。 此服务附带了许多编程语言运行时,以及从容器提供自己的堆栈、语言或工作负载的功能。 |
Azure Functions | 使用此服务以支持的语言为来自 Azure 服务的 HTTP 终结点或基于事件的触发器提供自己的代码。 |
Azure Spring Apps | 用于部署 Spring Boot 应用程序,而无需更改代码。 |
Azure Container Apps | 用于在无服务器平台上托管托管的微服务和容器化应用程序。 |
Azure 容器实例 | 对于不需要容器业务流程的简单容器方案,请使用此选项。 |
Azure Kubernetes 服务 | 需要 Kubernetes 群集时使用此服务。 管理群集的控制平面已创建并免费提供给你。 |
服务器终结点管理
服务器终结点管理是通过网关管理服务器终结点及其计算的能力。 此网关提供版本控制、缓存、转换、API 策略和监视等功能。
服务 | 使用 |
---|---|
Azure API 管理 | 当你使用 API 网关(包括配额和速率限制、身份验证和授权、转换和缓存响应)将 REST、OpenAPI 和 GraphQL API 产品化时,请使用此服务。 |
Azure 应用程序网关 | 用于区域负载均衡(OSI 第 7 层)。 它可用于基于 URL 路径或主机标头路由流量,并支持 SSL 卸载、基于 Cookie 的会话亲和性和 Web 应用程序防火墙 (WAF) 功能。 |
Azure Front Door | 用于全局负载均衡(OSI 第 7 层),为静态和动态资产提供全局缓存和安全网络,包括 DDoS 保护、端到端 TLS 加密、应用程序防火墙和地区筛选。 |
Azure 流量管理器 | 用于通过 DNS(OSI 第 7 层)将流量分发到全球 Azure 区域中面向公众的应用程序。 流量管理器使用 DNS 根据流量路由方法将客户端请求定向到适当的服务终结点。 它支持各种流量路由方法,例如优先级、性能和地理路由。 它非常适合跨多个区域或数据中心管理流量。 |
自动化计算
自动化计算由定时计划或其他 Azure 服务等事件自动化,通常用于后台处理、批处理或长时间运行的流程。
服务 | 使用 |
---|---|
Power Automate | 当需要自动化业务流程和工作流时使用。 |
Azure Functions | 当你需要根据定时计划运行代码或响应其他 Azure 服务中的事件时使用。 |
容器服务(Azure 容器实例、Azure Kubernetes 服务、Azure 容器应用) | 用于标准自动化工作负载 |
Azure Batch | 当需要高性能自动化时使用。 |
混合云
混合云是一种计算环境,它将公司的本地私有云服务和第三方公共云连接到一个单一、灵活的基础结构中,以运行组织的应用程序和工作负载。
服务 | 使用 |
---|---|
Azure Arc | 在需要管理整个环境时使用,包括云和本地资源,包括安全、治理、库存和管理。 |
如果不需要维护自己的基础结构,可以使用 Azure Stack HCI 在本地运行虚拟机。
高性能计算
高性能计算 (HPC) 是指利用并行处理技术高效、可靠、快速地运行高级应用程序。 该术语尤其适用于在 teraflop 或每秒 10^12 个浮点运算之上运行的系统。
服务 | 使用 |
---|---|
Azure Batch | Azure Batch 可创建和管理计算节点(虚拟机)池、安装要运行的应用程序,以及计划要在节点上运行的作业。 开发人员可以使用 Batch 作为平台服务,在需要大规模执行的情况下生成 SaaS 应用程序或客户端应用。 |
Azure BareMetal 实例 | 当你需要在具有操作系统、存储和网络根级访问权限的非虚拟环境中运行时使用。 |
Azure Quantum 工作区 | 当你需要开发和实验量子算法时使用。 |
Microsoft 基因组学 | 用于通过 ISO 认证并符合 HIPAA 法规的基因组处理。 |
深入了解 Azure 上的高性能计算。
基于事件的计算
基于事件的计算是由定时计划或其他 Azure 服务等事件触发的计算。 基于事件的计算通常用于后台处理、批处理或长时间运行的进程。
服务 | 使用 |
---|---|
Power Virtual Agent | 当你需要创建具有无代码界面的聊天机器人时使用。 |
Azure Functions | 当你需要根据定时计划运行代码或响应其他 Azure 服务中的事件时使用。 |
Azure 服务总线消息传递 | 当你需要分离应用程序和服务时使用。 |
CI/CD 计算
CI/CD 计算是用于生成和部署应用程序的计算。
服务 | 说明 |
---|---|
Azure DevOps | 使用 Azure DevOps 与 Azure 云紧密集成,包括对生成和部署应用程序的托管代理的身份验证和授权。 |
GitHub Actions | 使用 GitHub Actions 生成和部署 GitHub 存储库应用程序。 使用 Azure CLI 在操作中安全地访问 Azure。 |
Azure 虚拟机 | 如果使用另一个 CI/CD 系统,则可以使用 Azure 虚拟机来托管 CI/CD 系统。 |