本文内容什么是 Azure?
Azure 是一个完整的云平台,可以托管用户现有的应用程序并简化新应用程序的开发。 Azure 甚至可以增强本地应用程序的功能。 Azure 集成了开发、测试、部署和管理应用程序所需的各种云服务,同时充分利用云计算的效率。
通过在 Azure 中托管应用程序,你可以随着客户需求的增长,从小规模开始轻松扩展应用程序。 另外,Azure 还可以针对高可用性应用程序提供所需的可靠性,甚至包括在两个不同区域之间的故障转移。 通过 Azure 门户,可让你轻松管理所有的 Azure 服务。 同时,你还可以通过使用特定于服务的 API 和模板以编程方式管理你的服务。
本指南介绍面向应用程序开发人员的 Azure 平台。 针对在 Azure 中开始生成新的应用程序或将现有应用程序迁移到 Azure 所需的操作,提供相关指导和说明。
从哪里开始?
面对 Azure 提供的众多服务,想要从中找出需要哪些服务来支持你的解决方案体系结构,可能会是一项很棘手的任务。 本部分将重点介绍开发人员通常使用的 Azure 服务。 有关所有 Azure 服务列表,请参阅 Azure 文档。
首先,你必须确定在 Azure 中托管应用程序的方式。 是否需要将整个基础结构作为一台虚拟机 (VM) 来管理? 是否可以使用 Azure 提供的平台管理功能? 或许你只需要一个无服务器框架来托管代码执行?
应用程序需要云存储,Azure 为此提供了若干选项。 你可以利用 Azure 的企业身份验证。 此外,还有用于基于云开发和监视的各种工具,并且大多数托管服务都提供 DevOps 集成。
现在,让我们先看一下我们建议的用于应用程序调查的特定服务。
应用程序托管
Azure 提供了多个基于云的计算服务来运行你的应用程序,因此,你无需担心基础结构详细信息。 随着应用程序使用率的增长,可轻松纵向扩展或横向扩展你的资源。
Azure 提供了支持应用程序开发和托管需求的服务。 Azure 还提供了基础结构即服务 (IaaS),以便让你完全控制应用程序托管。 Azure 的平台即服务 (PaaS) 产品提供了支持应用所需的完全托管的服务。 在 Azure 中甚至还有真正的无服务器托管,在其中需要做的就是编写代码。
Azure 应用服务
如果你希望以最快路径发布基于 Web 的项目,则可以考虑使用 Azure 应用服务。 通过应用服务,可以轻松扩展 Web 应用以支持移动客户端,并发布易于使用的 REST API。 此平台通过使用社交提供程序、基于流量的自动缩放、在生产中测试和基于容器的持续部署来提供身份验证。
可以创建 Web 应用、移动应用后端和 API 应用。 使用你偏好的语言进行开发,包括 .NET、.NET Core、Java、Node.js、PHP、Python。 在基于 Windows 和 Linux 的环境中,应用程序都可以轻松地运行和缩放。
由于所有上述三个应用类型均共享应用服务运行时,因此,你可以托管网站,支持移动客户端,并在 Azure 中公开你的 API,所有这些均可在同一个项目或解决方案中完成。 若要了解有关应用服务的详细信息,请参阅什么是 Azure Web 应用。
应用服务在设计之初就考虑到了 DevOps。 它支持用于发布和持续集成部署的各种工具。 这些工具包括 GitHub webhook、Jenkins、Azure DevOps、TeamCity 等。
你可以通过使用联机迁移工具将现有应用程序迁移到应用服务。
何时使用:在将现有 Web 应用迁移到 Azure 时,以及在 Web 应用需要完全托管的托管平台时,使用应用服务。 另外,当需要支持移动客户端或者使用你的应用公开 REST API时,也可以使用应用服务。
开始使用:通过应用服务,可以轻松创建和部署你的第一个 Web 应用、移动应用,或 API 应用。
Azure 虚拟机
作为一个基础结构即服务 (IaaS) 提供程序,Azure 可让你部署到或将应用程序迁移到 Windows 或 Linux VM。 Azure 虚拟机连同 Azure 虚拟网络一起,可支持将 Windows 或 Linux VM 部署到 Azure。 通过 VM,你可以全面控制计算机的配置。 在使用 VM 时,用户负责所有服务器软件的安装、配置、维护和操作系统修补。
由于用户对 VM 所具有的控制级别,用户可以在 Azure 上运行大量不适合 PaaS 模型的服务器工作负荷。 这些工作负载可包括数据库服务器、Windows Server Active Directory 和 Microsoft SharePoint。 有关详细信息,请参阅 Linux 或 Windows 的虚拟机文档。
何时使用:在你需要完全控制应用程序基础结构,或将本地应用程序工作负载迁移到 Azure 而无需进行更改的情况下,可以使用虚拟机。
开始使用:从 Azure 门户创建 Linux VM 或 Windows VM。
Azure Functions(无服务器)
如果用户只需编写代码,然后让代码在响应事件时运行或按计划运行,无需担忧为了运行代码要如何构建和管理整个应用程序或基础结构,结果会怎样? Azure Functions 是一个“无服务器”样式的产品,可让你仅编写所需的代码。 借助 Functions,可以通过 HTTP 请求、webhook、云服务事件,或按计划触发代码执行。 你可以任选开发语言进行编程,如 C#、F#、Node.js、Java、Python 或 PHP。 使用基于消耗的计费方式,只需要支付代码执行的时间,并且 Azure 可根据需要进行扩展。
何时使用:在你具有由其他 Azure 服务、基于 Web 的事件,或按计划触发的代码的情况下,可以使用 Azure Functions。 此外,当你不需要完整托管项目的开销或者只想支付代码运行时间时,也可以使用 Functions。 有关详细信息,请参阅 Azure Functions 概览。
开始使用:按照 Functions 快速入门教程,从门户创建你的第一个函数。
立即试用:Azure Functions 可让你运行代码而无需注册 Azure 帐户。 立即试用并创建你的第一个 Azure Function。
Azure Service Fabric
Azure Service Fabric 是分布式系统平台。 利用此平台,可以轻松生成、打包、部署和管理可缩放并且可靠的微服务。 它还提供了全面的应用程序管理功能,例如:
在共享计算机池上运行的应用可以从小规模开始,再根据需要扩展为成百上千个计算机。
Service Fabric 支持具有 Open Web Interface for .NET (OWIN) 和 ASP.NET Core 的 WebAPI。 它提供了用于在 Linux 上使用 .NET Core 和 Java 构建服务的 SDK。 若要了解有关 Service Fabric 的详细信息,请参阅 Service Fabric 文档。
何时使用:在创建应用程序或重新编写现有的应用程序以便使用微服务体系结构时,Service Fabric 是一个不错的选择。 当你需要更好地控制或直接访问底层基础结构时,也可以使用 Service Fabric。
开始使用:创建第一个 Azure Service Fabric 应用程序。
Azure Spring Apps
Azure Spring Apps 是无服务器的应用平台,它使你能够在云中构建、部署、缩放和监视 Java Spring 中间件应用程序。 使用 Spring Cloud 将新式微服务模式引入 Spring Boot 应用,消除样板代码,快速构建可靠的 Java Spring 中间件应用。
何时使用:作为一项完全托管服务,当你要最大限度降低在 Azure 上运行 Spring Boot 和 Spring Cloud 应用的运营成本时,Azure Spring Apps 是一个不错选择。
入门:在 Azure Spring Apps 中部署首个 Spring Boot 应用。
使用 Azure 服务增强应用程序
除了应用程序托管,Azure 还提供可增强功能的服务产品。 另外,Azure 在云中和本地都可以改进应用程序的开发和维护。
托管存储和数据访问
大多数应用程序都必须存储数据,因此,无论决定如何在 Azure 中托管应用程序,都请考虑以下一个或多个存储和数据服务。
你可以使用 Azure 数据工厂将现有本地数据移到 Azure。 如果还没有准备好将数据移到云中,可以利用 Azure 应用服务中的混合连接将应用服务托管的应用连接到本地资源。 此外,你还可以从本地应用程序连接到 Azure 数据和存储服务。
Docker 支持
Docker 容器是操作系统虚拟化的一种形式,可让你以更高效且可预见的方式部署应用程序。 容器化应用程序在生产环境中的工作方式与在开发和测试系统上的工作方式相同。 你可以通过使用标准的 Docker 工具来管理容器。 可以使用现有技能和常用的开源工具在 Azure 上部署和管理基于容器的应用程序。
Azure 提供了多种方式以便在应用程序中使用容器。
身份验证
重要的是:不仅要知道谁在使用你的应用程序,而且还要防止对资源的未授权访问。 Azure 提供了多种方式来对你的应用客户端进行身份验证。
若要了解有关 Azure 中安全最佳实践的详细信息,请参阅 Azure 安全最佳实践和模式。
监视
当应用程序在 Azure 中正常运行时,需要监视性能、关注问题,并了解客户使用应用的方式。 为此,Azure 提供了几个监视选项。
DevOps 集成
无论是预配虚拟机还是发布持续集成的 Web 应用,Azure 都将与大部分常用的 DevOps 工具集成。 用户可以使用已有的工具,并利用对以下工具的支持来最大限度地提升现有体验:
开始使用:如需查看应用服务应用的 DevOps 选项,请参阅对 Azure 应用服务的持续部署。
立即试用:尝试几个 DevOps 集成。
Azure 区域
Azure 是一个全球性云平台,在世界各地的许多区域都可以使用。 在 Azure 中预配服务、应用程序或 VM 时,系统会提示选择区域。 此区域表示运行应用程序或存储数据的特定数据中心。 这些区域对应于在 Azure 区域页上发布的特定位置。
选择应用程序和数据的最佳区域
使用 Azure 的好处之一是,你可以将应用程序部署到全球范围内的各种数据中心。 你选择的区域可能会影响应用程序的性能。 例如,最好选择更接近于大部分客户的区域,以减少网络请求中的延迟。 也可以选择你的地区,以符合在某些国家/地区分发应用的法律要求。 最佳的做法是,始终将应用程序数据存储在相同的数据中心,或尽可能靠近托管应用程序的数据中心的数据中心。
多区域应用
尽管整个数据中心可能会因自然灾害或 Internet 故障等事件而脱机,不过这种情况极少发生。 最佳做法是,将至关重要的商业应用程序托管在多个数据中心,以提供最大的可用性。 另外,使用多区域也可以减少全球用户的延迟,并在更新应用程序时提供更多的弹性。
某些服务,如虚拟机和应用服务,使用 Azure 流量管理器启用在两个区域之间进行故障转移的多区域支持,以支持高可用性的企业应用程序。 有关示例,请参阅 Azure 参考体系结构:在多个区域中运行 Web 应用程序。
何时使用:当拥有企业和高可用性应用程序受益于故障转移和复制时使用。
如何管理我的应用程序和项目?
Azure 提供了一套丰富的体验,可让你同时以编程方式和在 Azure 门户中创建并管理你的 Azure 资源、应用程序和项目。
命令行接口和 PowerShell
Azure 提供了两种方法来通过命令行管理应用程序和服务。 可以使用 Bash、终端、命令提示符等工具,也可以使用所选的命令行工具。 通常情况下,可以从命令行执行与在 Azure 门户中一样任务,例如,创建和配置虚拟机、虚拟网络、Web 应用以及其他服务。
Azure 门户
Azure 门户是一种基于 Web 的应用程序。 Azure 门户可用于创建、管理和删除 Azure 资源和服务。 其中包括:
有关详细信息,请参阅 Azure 门户概述。
REST API
Azure 是基于一组支持 Azure 门户 UI 的 REST API 构建的。 其中大多数 REST API 还支持通过编程方式设置和管理来自任何启用 Internet 设备的 Azure 资源和应用程序。 有关完整的 REST API 文档集,请参阅 Azure REST SDK 参考。
API
除了 REST API 之外,还有许多 Azure 服务也允许通过使用特定于平台的 Azure SDK 以编程方式管理应用程序中的资源,包括用于以下开发平台的 SDK:
移动应用和 Azure 媒体服务等服务均提供客户端 SDK,可让你从 Web 和移动客户端应用访问服务。
Azure 资源管理器
在 Azure 上运行应用有可能会涉及使用多个 Azure 服务。 这些服务遵循相同的生命周期,并且可以被视为一个逻辑单元。 例如,Web 应用可以使用 Web 应用、SQL 数据库、存储、Azure Redis 缓存,以及 Azure 内容分发网络服务。 Azure 资源管理器能够使你以组的方式处理应用程序中的资源。 你可以通过单个协调的操作来部署、更新或删除所有资源。
除了逻辑分组和管理相关资源之外,Azure 资源管理器还包括可用于自定义相关资源部署和配置的部署功能。 例如,可以使用资源管理器来部署和配置应用程序。 此应用程序可以包含多个虚拟机、负载均衡器和 Azure SQL 数据库中的数据库作为一个单元。
可以使用一门易用的基础结构即代码语言(称为 Bicep)来开发这些部署。 如果你更喜欢语义较少的方法,则可以使用 Azure 资源管理器模板,它是 JSON 格式的文档。 Bicep 文件或模板允许你以声明方式定义部署和管理应用程序,而不是使用脚本。 模板可用于测试、暂存和生产等不同的环境。 例如,可以使用模板来将按钮添加到 GitHub 存储库,然后只需单击该按钮即可将存储库中的代码部署到一组 Azure 服务中。
何时使用:在希望对通过使用 REST API、Azure CLI 和 Azure PowerShell 以编程方式进行管理的应用执行基于模板的部署时,可以使用 Bicep 或资源管理器模板。
入门:要开始使用 Bicep,请参阅什么是 Bicep?。 若要开始使用模板,请参阅创作 Azure 资源管理器模板。