Windows Azure Cloud Service (38) 微软IaaS与PaaS比较

  《Windows Azure Platform 系列文章目录

  最近一直想总结Azure IaaS和PaaS的区别与比较,写个博文详细说明一下。建议读者在阅读之前,先熟悉微软PaaS和IaaS平台的基本概念,再参考本文。

  1.Azure IaaS和PaaS的服务类型层次,请参考下面的图片:

  

  对于IaaS来说,用户需要管理的对象是:

  -O/S,操作系统

  -Middleware,中间件

  -Runtime,运行时

  -还有Data和Application

  对于IaaS来说,客户就像是使用云端的虚拟机一样,在Azure平台选择自己需要的操作系统(Windows or Linux),在这个操作系统里安装所需要的软件,然后对操作系统及以上内容进行管理。

  2.IaaS的优势?

  IaaS的优势首先来说与传统IDC运维相类似(注意是类似而不是相同,因为公有云都是基于虚拟化技术,比如云端网络虚拟化是与传统IT运维不同的),传统IT运维人员比较容易接受与快速上手。一般我在做项目实施的时候,将云端的虚拟网络、存储账号和虚拟机都创建好以后,直接将Windows Remote Desktop或者Linux SSH连接字符串给到客户IT方,就可以迅速安装所需要的软件了。

  3.IaaS的劣势?

  IaaS的劣势从我个人理解是分为一下几种:

  (1)IT还是需要花精力对服务器进行更新和维护

  公有云服务强调的是Self Service(自服务),对于IaaS层面来说,虽然企业用户不需要话费巨额投资来搭建和维护自己的数据中心,但是还是需要花精力对于操作系统进行更新和维护,比如IT还是需要对操作系统的升级和打补丁,进行维护。采用IaaS节省了硬件采购成本,但是没有解决软件的维护成本。

  (2)用户需要自己来配置高可用组

  Azure提供更新域和故障域来实现服务器的高可用。在IaaS平台,用户需要手动配置高可用组,将多台相同功能的虚拟机配置在同一个高可用组里。否则,虚拟机不能实现高可用。

  (3)为了实现高冗余,需要改架构

  公有云服务在推出之初,是用多台虚拟机并行计算,提供高冗余的方式来解决服务器单点故障的问题。我们知道,凡是硬件服务器就会产生硬件故障。在Azure平台,我们建议用户一般采用2台或者2台以上的服务放在同一个高可用组里,来实现99.95%的SLA。但这样问题来了,我发现很多的客户采用:

  a.单台Web服务器作为前端,并且把session保存在web服务器上。一旦这台Web服务器宕机了,所有的session就会丢失,系统无法正常运行。如果我们考虑99.95%的SLA,需要使用2台Web服务器,并且把session也进行分离,使用云服务商提供的cache服务或者自己在虚拟机里实现cache的主从逻辑。

  b.单位文件服务器存放文件。这台文件服务器也会产生单点故障。如果需要将文件同时提交到多个节点上,在Windows平台需要使用比如DFS(分布式文件系统)或者在Linux平台使用RSync。实现文件在多个节点上进行提交和同步。

  c.单台SQL Server数据库服务器。数据库服务器存在单点故障。我们可以使用SQL Server 2012 Always On来实现数据库的高可用。

  (4)有限的横向扩展能力

  如果大家在使用Azure Auto Scaling的时候,会发现在IaaS层面,如果需要实现100台虚拟机的auto scaling,需要手动预先创建100台虚拟机并在每一台虚拟机里配置同样的application。对于IaaS来说,Azure Auto Scaling不能自动扩展到任意的大小,而需要IT管理人员进行预设。这主要的原因是IaaS虚拟机的之间的数据同步问题,Azure没有办法将应用横向扩展部署到100台虚拟机上,因为每一台虚拟机的底层操作系统文件、应用文件都需要用户自己来管理。虽然我们可以通过虚拟机镜像来快速部署多台虚拟机,但是牵涉到IP规则,数据文件同步等等各方面,这些都需要用户自己来管理。所以对于IaaS来说,横向扩展是有限的。

  上面我们谈了一下IaaS,接下来我们谈谈PaaS平台。如最上面的图所示:

  对于PaaS平台来说,用户需要管理的对象是:

  -Application,应用程序

  -Data,数据文件

  所有底层的OS,Middleware和Runtime,都由Windows Azure来维护。但是要注意,Azure PaaS提供的操作系统其实是Windows。无法在PaaS层使用Linux的操作系统。如果你的应用必须跑在Linux平台,请使用Azure IaaS。

  4.Azure PaaS平台的优势?

  (1)不需要维护操作系统

  Azure PaaS平台对于企业的优势是享用服务所带来的价值,而不是实施和维护软件系统的成本。

  Azure PaaS Cloud Service定义了OSFamily和OSVersion,来自动配置操作系统版本及更新内容,用户无需手动对操作系统进行升级。如果客户需要Azure自动升级最新的操作系统,将OSVersion="*";如果客户需要固定某个操作系统的版本,可以设置OSVersion="WA-GUEST-OS-X.XX_20XXXX-XX",设置某个固定的版本。具体请参考:http://msdn.microsoft.com/library/azure/ee924680.aspx

  (2)自动配置高可用组

  如果用户的应用程序需要实现负载均衡,Azure PaaS平台自动会将应用程序部署到多个计算节点上,并且自动设置故障域和更新域。用户无需手动进行配置。

  (3)自动横向扩展

  Azure PaaS 平台将用户的代码打包为CSCFG和CSPKG。CSCFG是配置文件,用来描述PaaS的节点数量和配置信息。CSPKG是项目打包文件(package)。Azure PaaS通过CSCFG定义计算节点,然后将CSPKG发布到若干个节点上,可以自动实现scale-out。而不像IaaS那样,需要IT Admin预先把虚拟机创建好。

  (4)高冗余可扩展的架构

  Azure PaaS平台架构,可以实现应用的高冗余和可扩展。

  通过将Session保存到外部的存储上(如SQL Server数据库中),可以实现Web Server的高冗余。

  通过将文件保存到Azure Storage上,可以实现文件的99.9%的高可用。另外文件不是上传到计算节点,可以解决文件同步和一致性的问题。

  5.Azure PaaS平台的劣势

  (1)需要借助于开发人员

  对于很多传统IT部署,应用的发布都需要借助于IT来实施。如果采用了Azure PaaS,应用的部署都需要借助于开发人员。这对于IT来说这一个挑战。

  (2)非持久化VM

  Azure PaaS是非持久化VM,任何在PaaS平台安装的软件都是非持久化的。一旦PaaS VM重置了,之前安装的软件都会丢失。

  对于大型的应用程序来说,一般都会安装其他第三方的软件(例如导出Excel,导出PDF,其他第三方插件等等)。

  对于PaaS平台,需要将安装软件的步骤放到ServiceDefinition.csdef的Startup Task中,进行静默安装(-s)

Windows Azure Cloud Service (22) 使用Startup注册COM组件(上)

Windows Azure Cloud Service (23) 使用Startup注册COM组件(下)

  (3)需要修改代码  

  Azure PaaS平台需要修改一些代码,比如Session放在外部存储上,本地文件的读写放到Azure Storage里。我会在后面几章介绍IaaS迁移到PaaS平台的步骤。

  总结:

  

  Azure IaaS比较适合:

  -  老应用的迁移

  -  迁移难度比较简单,但是管理比较复杂

  -  借助IT就可以进行应用的迁移

  -  先甜后苦

  Azure PaaS比较适合:

  -  新应用的开发

  -  迁移难度比较复杂,但是管理比较简单

  -  需要借助开发人员,基于PaaS进行代码修改和开发

  -  先苦后甜

时间: 2024-10-02 22:34:25

Windows Azure Cloud Service (38) 微软IaaS与PaaS比较的相关文章

Windows Azure Cloud Service (47) 修改Cloud Service时区

<Windows Azure Platform 系列文章目录> 本文介绍内容适合于Azure Global和Azure China 我们在使用Cloud Service的时候,会发现默认的Cloud Service是UTC时区. 在很多时候,我们的应用程序使用的时区是UTC+8时区,也就是北京时间. 遇到这样的问题,我们传统的做法是修改aspx.cs代码,把UTC时区修改为UTC+8时区. 但是这样做费时费力,有没有更好的解决方法呢? 其实,我们可以在Azure Startup Task中,执

Windows Azure Cloud Service (39) 如何将现有Web应用迁移到Azure PaaS平台

<Windows Azure Platform 系列文章目录> 本文将简单介绍,如何将企业内现有的ASP.NET应用程序迁移到Azure PaaS平台. 因为在迁移过程中,可能需要对现有的应用重新做架构设计,本文只是进行简单的介绍,开拓思路,具体的应用需要具体研究分析. 1.首先需要下载Azure SDK.使用Visual Studio创建新的Cloud Service,将现有的ASP.NET应用程序页面包含在Cloud Project中. 2.对于用户会话(Session)进行修改. Clo

Windows Azure Cloud Service (36) 在Azure Cloud Service配置SSL证书

<Windows Azure Platform 系列文章目录> 在某些时候,我们需要在Azure PaaS Cloud Service配置HTTPS连接.本章将介绍如何在本地创建证书,然后使用HTTPS连接Azure Cloud Service. 1.创建证书 以管理员身份运行CMD,使用Makecert命令,安装Azure证书.具体的命令如下: makecert -sky exchange -r -n "CN=<CertificateName>" -pe -a

Visual Studio2015发布web站点到windows azure Cloud Service(PAAS)

我们上一篇文章介绍了,通过visual studio2015发布站点到windows azure的VM(Microsoft Vsitual Machines)下,那是所谓的IAAS方式,今天呢.我们使用visural studio2015发布站点到windows azure 的Cloud Services,这就是PAAS服务模式.PaaS是Platform-as-a-Service的缩写,意思是平台即服务.把服务器平台作为一种服务提供的商业模式.而计算机时代相应的服务器平台或者开发环境作为服务进

Windows Azure Cloud Service (44) 将Cloud Service加入Virtual Network Subnet,并固定Virtual IP Address(VIP)

<Windows Azure Platform 系列文章目录> 在之前的文章中,笔者已经详细介绍了如何将Virtual Machine加入Virtual Network,并且绑定固定的Private IP和Virtual IP Address (公网IP地址) Windows Azure Virtual Network (5) 设置Azure Virtual Machine固定Private IP       Windows Azure Virtual Network (6) 设置Azure

Windows Azure Cloud Service (12) PaaS之Web Role, Worker Role, Azure Storage Queue(下)

<Windows Azure Platform 系列文章目录> 本章DEMO部分源代码,请在这里下载. 在上一章中,笔者介绍了我们可以使用Azure PaaS的Web Role和Worker Role来处理复杂的业务逻辑 -Web Role可以快速响应前端的业务请求,并将输入保存到Azure Storage Queue中 -Worker Role将数据从Queue中读取,可以在后端处理复杂的业务逻辑 -可以看到,Azure Storage Queue是前端业务逻辑和后端业务处理的桥梁 该架构图

Windows Azure Cloud Service (37) 浅谈Cloud Service

<Windows Azure Platform 系列文章目录> 最近在和一些客户聊天,常常被遇到这样的问题: 1.问题一:我在创建一个新的Windows Azure Virtual Machine的虚拟机时候,会同时创建同样名称的Cloud Service(云服务). 我看微软的报价里说虚拟机会收费,云服务也会收费.这样的话,我使用虚拟机,是不是收取我虚拟机+云服务=2倍的费用? 2.问题二:我在使用VS2013,将asp.net的应用程序部署到微软的PaaS平台的时候,只会有Cloud Se

Windows Azure Cloud Service (41) 修改云服务IIS托管管道模式为4.0经典模式

<Windows Azure Platform 系列文章目录> 这是笔者在之前的项目中遇到的问题,做一下总结,给网友做参考. 在一般情况下,Visual Studio开发的Cloud Service在部署到Azure PaaS平台后,是IIS托管管道模式.有的时候,客户的Web应用程序需要4.0经典模式.就需要在启动Web Role时自定义IIS配置.我这里简单介绍一下. 1.在项目中添加引用:C:\Windows\System32\inetsrv\Microsoft.Web.Administ

Windows Azure Cloud Service (40) 使用VS2013的publishSettings文件,发布Cloud Service

<Windows Azure Platform 系列文章目录> 在之前的文档中,笔者已经介绍了如何使用本地证书上传至云端的方式,将本地的Cloud Service发布至云端. 在本章中,笔者将介绍如何使用publishSettings文件,发布Cloud Service. 注意:本文适用于国外的Azure Global和国内世纪互联运维的Azure China. 一.下载publishSetting文件: 国外的Azure Global,请在浏览器中输入地址:http://go.microso