选择合适的应用托管服务(Azure 计算服务)
分类: Azure指南 ◆ 标签: #Azure #基础 #Azure入门 #Azure Cloud Architecting ◆ 发布于: 2023-05-28 9:40:22

我们第一篇给大家概括地介绍了Azure开发者开始使用Azure的第一步就是要为自己的应用挑选一个合适的服务来托管。Azure提供了很多种类的计算服务,开发者们需要根据自己的需要选择合适的计算服务,另外开发者也需要了解自己的应用架构,也需要从架构出发选择合适的计算服务,如果需要了解架构方面的知识,可以参考我们之前的文章《Azure架构入门》。可以使用下图来选择自己所需要的服务:
图示说明:
- “Lift-and-shift" 中文译为直接迁移,所谓直接迁移时指应用无需重新设计架构和代码改动,就可以迁移到云计算平台上, 关于如何将应用迁移到云平台上,我们后期也会写一些文章帮助大家进行迁移。
- "Cloud Optimized" - 云平台优化是指重新架构应用,以使得应用可以最大限度的利用云平台工具和能力。
这张图是所有Azure开发者的一个很好的起点,可以帮助大家选择合适的服务,以这个为起点,后面我们给出指导方便你详细的评估你所选择的服务是否适合你的应用。
理解计算服务的基本特性
如果不是很了解从前一个步骤选择的服务,可以通过下述的文档对所选择的服务有一个大致的了解:
- App Service: https://docs.microsoft.com/en-us/azure/app-service, Azure提供的PaaS服务,属于托管服务,只要面向客户的Web应用,移动客户端的后端服务,RESTFul APIs等服务。
- Azure Spring Cloud: https://docs.microsoft.com/en-us/azure/spring-cloud, Azure提供的托管的基于Spring Cloud的微服务框架,自动发现和注册服务被托管给Azure, 适合基于Spring家族开发的应用部署
- Azure Kubernets Service(AKS): 托管在Azure上的K8s, k8s大家都知道。基于Docker的微服务平台。
- Batch Service: https://docs.microsoft.com/en-us/azure/batch/batch-technical-overview, 主要为需要大型的并行计算以及高性能计算准备的服务(HPC)。
- Container Instance: https://docs.microsoft.com/en-us/azure/container-instances/container-instances-overview, Azure上最快速运行容器的服务了,Docker fans可以考虑。
- Azure Functions: https://docs.microsoft.com/en-us/azure/azure-functions/functions-overview Azure的serverless模式的实现,也称为托管的FaaS服务。
- Service Fabirc: https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-overview, 微软提供的大型分布式计算平台,支持多种环境,不仅支持云环境,还是支持本地环境。
- Azure 虚拟机: https://docs.microsoft.com/en-us/azure/virtual-machines, Azure提供的虚拟机,包括Windows和Linux。
理解服务托管模式
Azure提供三种分类的托管模式:IaaS, PaaS, FaaS(还有SaaS, 但这个模式不在我们这个范围之内,更多的是指office 365, Power Automate等等平台)
- IaaS: Infrastructure-as-a-Service , 基础设施服务,包括虚拟机,虚拟机网络,负载均衡,防火墙等等基础的IT设施。
- PaaS: Platform-as-a-Service, 平台服务,其实就是将之前需要管理IT基础设置的这部分工作全部交由Azure来管理,用户只需管理自己的应用。
- FaaS: Functions-as-a-Service , 相比PaaS更进一步,甚至连托管环境都无需过多干涉,只需要部署代码,运行就好了。
从IaaS到FaaS, 用户需要关注的点呈下降趋势的,IaaS, 用户需要管理所有自己创建的资源,包括虚拟机,网络组件,软件更新等等,但是到了FaaS, 用户唯一需要关心的是如何发布自己的代码。
为了更好的理解服务托管模式,我们使用下表来做进一步的说明:
虚拟机 | App Service | Azure Spring Cloud | Service Fabric | Azure Functions | AKS | Container Instances | Azure Batch | |
---|---|---|---|---|---|---|---|---|
托管应用类型 | 多种类型 | 基于Web的应用,容器(Docker) | 基于Java/Spring应用,微服务 | 基于SDK开发的应用,可执行应用,容器等 | Functions | 容器打包的微服务 | Docker Image | Schedule Jobs |
可部署数量 | 多种,根据需要 | 通过应用计划一个实例可以部署多个应用 | 一个实例可以部署多个应用 | 一个节点可以部署多个应用 | Serverless | 一个节点可以部署多个docker | N/A | 一个节点可以部署多个jobs |
最小节点数量 | 1 | 1 | 2 | 5 | Serverless | 3 | N/A | 1 |
支持有状态应用/无状态应用 | Stateless or Stateful | Stateless | stateless | stateless or stateful | stateless | Stateless or statefull | Stateless | stateless |
能否托管Web应用 | 根据需要 | 内置 | 内置 | 根据需要 | 不支持 | 根据需要 | 根据需要 | 不支持 |
是否支持虚拟网络(VNet) | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
其他还需要考虑的点有:
- DevOps: 每个服务是否支持本地调试,支持什么样的编程模型,应用需要如何更新和发布。
- 可扩展性: 需要考虑每个服务的可扩展性,包括:是否支持自动缩放,是否有负载均衡,是否有规模扩展的限制
- 高可用性:考虑每个服务是否可以跨区域failover, 是否支持跨区域故障转移等等。
- 安全性:需要考虑每个服务的安全性如何保障。
- 成本:要考虑成本核算,价格等等。