前言
云计算主要有SaaS,PaaS和IaaS这三种服务模式。对普通用户而言,他们主要面对的是SaaS这种服务模式,但是对普通的开发者而言,云计算对他们而言,却有两种服务模式可供选择,PaaS和IaaS,而且这两种模式有很多的不同,而且它们之间还存在一定程度的竞争,接下来将首先对这两种模式进行比较,之后将预测一下它们的未来,也就是那种模式将会更受到开发者的青睐。
比较
大家应该知道,PaaS的主要作用是将一个开发和运行平台作为服务提供给用户,而IaaS的主要作用是提供虚拟机或者其他资源作为服务提供给用户。下面将在七个方面对PaaS和IaaS两者进行比较:
开发环境
PaaS基本都会给开发者提供一整套包括IDE在内的开发和测试环境,而在IaaS方面用户主要还是沿用之前那套开发环境,虽然比较熟悉,但是因为之前那套开发环境在与云的整合方面比较欠缺,所以有时候会很不方便,比如通过PaaS提供的工具部署一个应用到云上,可能只需几下鼠标点击和十多秒即可完成,而在IaaS平台上部署应用,相对而言比较复杂,特别是在刚开始使用的时候。
支持的应用
因为IaaS主要是提供虚拟机,而且普通的虚拟机能支持多种基于X86架构的操作系统,包括Linux、OpenBSD和Windows等,所以IaaS支持的应用的范围是非常广泛的。但如果要让一个应用能跑在某个PaaS平台不是一件轻松的事,因为不仅需要确保这个应用是基于这个平台所支持的语言,而且也要确保这个应用只能调用这个平台所支持的API,如果这个应用调用了平台所不支持的API,那么就需要在部署之前,对这个应用进行修改。
开放标准
虽然很多IaaS平台都存在一定的私有功能,但是由于OVF等协议的存在,使得IaaS在跨平台和避免被供应商锁定这两面是稳步前进的。而PaaS平台的情况则不容乐观,因为不论是Google的App Engine,还是Salesforce的Force.com都存在一定的私有API.
可伸缩性
PaaS平台会自动调整资源来帮助运行于其上的应用更好地应对突发流量。而IaaS平台则常需要开发人员手动对资源进行调整才能应对。
整合率和经济性
PaaS平台整合率是非常高,比如PaaS的代表Google App Engine能在一台服务器上承载成千上万的应用,而普通的IaaS平台的整合率最多也不会超过100,而且普遍在10左右,使得IaaS的经济性不如PaaS.
计费和监管
因为PaaS平台在计费和监管这两方面不仅达到了IaaS平台所能企及的操作系统层面,比如,CPU和内存的使用量等,而且还能做到应用层面,比如,应用的反应时间(Response Time)或者应用调用某个服务的次数等,这将提高计费和管理的精确性。
学习难度
对于那些熟悉类UNIX系统的程序员而言,能很快学习在IaaS的开发和管理应用的方式,虽然现在IaaS产品普遍对Windows开发环境没有很好的支持,而如果要学会PaaS上面开发则有可能需要学一门新的语言或者新的框架,所以IaaS学习难度更低。
下面将通过一张表来总结一下上面的比较:
▲表1. PaaS和IaaS之间的比较
未来的竞争
在当今云计算环境当中,IaaS是非常主流的,无论是Amazon EC2还是Linode或者Joyent等,都占有一席之地,但是随着Google的App Engine,Salesforce的Force.com还是微软的Windows Azure等PaaS平台的推出,使得PaaS也开始崭露头角。谈到这两者的未来,特别是这两者之间的竞争关系,我个人认为,短期而言,因为IaaS模式在支持的应用和学习难度这两方面的优势,使得IaaS将会在短期之内会成为开发者的首选,但是从长期而言,如果PaaS能解决诸如通用性和支持的应用等方面的挑战,PaaS模式会因为其高整合率所带来经济性从而替代IaaS成为开发者的"新宠".