在我以前的文章中,解释了云计算的基本概念,包括它的定义,特性和各种服务模式。在本文中,将从开发者的角度对基础设施即服务(IAAS:Infrastrqucture-as-a-Service)和平台即服务(PAAS:Platform-as-a-Service)进行比较,更深入体了解服务模型的细节。
以两个主流的云服务为例:亚马逊Web服务(Amazon Web Service)和微软公司的Windows Azure。他们分别代表了IAAS和PAAS两种服务模式。我们重点对比两种服务模式的不同。
IAAS是按客户需求提供相应的基础设施,将自身资源租给客户,比如计算能力,存储,负载均衡等技术。
如表1左侧所示,IAAS提供商负责管理物理资源和虚拟化技术,物理资源比如网络,服务器和集群计算机,虚拟化技术帮助客户去运行虚拟机(VMs)。至于操作系统(OS)是由供应商还是客户管理经常是有争议的。一般情况下,IAAS提供商会用镜像文件预装完操作系统交给客户管理。以亚马逊Web服务(AWS)为例,亚马逊机器镜像(AMI:Amazon Machine Image)为客户提供了多种类型的操作系统,如Windows Server,Linux SUSE和Linux Red Hat,但不会对其进行维护或更新。
其他的软件比如中间件(如IIS,Tomcat,Caching Services),运行环境(JRE和.NET Framework)以及数据库(SQL Server,Oracle,MySQL)通常都不提供。因为IAAS提供商没有必要知道客户打算做什么。客户选择并安装所需要的软件后,在虚拟机上部署应用程序和数据。
为了对IAAS中设置应用程序的过程有一个全面的了解,我借鉴了微软工程师Mark Russinovich在BUILD会议上的一个幻灯片,用它来说明典型的IAAS服务的工作原理。
把开发完成的应用部署到云端,需要将它部署到Web服务器上并配置好数据库。对于IAAS,主要步骤如下:
1. 准备数据库服务器
从库中选择并启动数据库的镜像文件。如果库中未提供数据库管理系统(DBMS)则需自行安装。
2. 准备Web /应用程序服务器
从库中选择所需软件的镜像文件,进行配置和启动。如果有未提供的软件需要自行安装。
3. 配置数据库及其对象
接下来要配置数据库,包括配置数据文件,日志文件,安全性设置等。然后建表并添加数据。
4. 部署您的应用程序
接下来,将开发完成的程序部署到Web服务器中。
5. 配置负载均衡器
应用程序需要部署在多个实例上时,还需要对每个实例的IP地址和负载平衡器等进行配置。
6. 管理您的虚拟机和DMBS
最后是管理您的虚拟机。例如,当操作系统上有更新或补丁包时,IAAS提供商不会自动更新。这些都需要客户自己执行。
现在,让我们来看另一种云服务“PAAS”的独特之处。在PAAS中所提供的是客户所需要的应用程序管理环境。不单单提供IAAS中的组件,他提供了开发和分发应用的解决方案,如操作系统,中间件,运行环境,甚至数据库,如表1右侧所示。
换句话说,我们可以把PAAS看做一整套软件,硬件和基础架构的集合。客户只需带上应用程序和数据,就可以使用了。
对于PAAS,由于数据库、虚拟机和Web服务器很容易配置,所以主要步骤只有两步。如Mark Russinovich下面的幻灯片所示。
1. 数据库配置
无需自己安装数据库管理系统,只需要指出数据库服务器配置的位置。然后设置数据库、创建表格、添加数据。
2. 部署应用程序
和IAAS服务中的步骤类似,在PAAS云环境中部署应用程序。
如何配置负载均衡?以Windows Azure为例,它自动进行配置并做好准备接受流量,其他一切都将自动进行管理而不必特别的关心配置IP地址或负载均衡。
如何维护虚拟机?DBMS和Web服务器都将由供应商维护:
总之,我们研究了IAAS和PAAS两种方案的在服务模式和配置步骤上的差异。PAAS提供了更多的服务,而IAAS在底层比较灵活(例如:公共IP地址,负载均衡器等)。
毕竟众口难调,作为开发人员或架构师,充分了解客户需求、选择最佳方案往往会带来更好的结果。