《云计算:原理与范式》一1.3 云计算的架构与类型

1.3 云计算的架构与类型

根据提供的能力和供应商的服务模型抽象级别,可以将云计算服务分为三类:①基础设施即服务(Infrastructure as a Service,IaaS);②平台即服务(Platform as a Service,PaaS);③软件即服务(Software as a Service,SaaS)[6]。图1.3描述了从物理基础设施到应用的云堆栈分层组织结构。

《云计算:原理与范式》一1.3 云计算的架构与类型

这些抽象层也可以视为一个更高层次的架构,可以由底层服务组成一个更高层的服务[37]。Buyya等[38]的参考模型阐述了集成式架构中每一层的作用。一个核心中间件管理物理资源,虚拟机部署在它们上面。此外,它提供了必需的功能(如核算和计费)供多租户按需付费。云开发环境以提供应用开发和部署能力的基础设施服务为基础,在这个层面上,各种编程模型、库、API和混搭编辑器(mashup editor)建立了业务、Web和科学应用的范围。一旦部署在云中,这些应用便由最终用户使用。

1.3.1 基础设施即服务

按需提供的虚拟化资源(计算、存储和通信)称为基础设施即服务(IaaS)[7]。云基础设施使运行操作系统有多种选择,在定制软件堆栈的服务器上按需配置。基础设施服务可以认为是最底层的云计算系统[39]。
Amazon Web服务主要提供IaaS。对于Amazon EC2服务,这意味着它可以提供可定制的虚拟机软件堆栈,这与定制一个普通的物理服务器有点类似。授予用户权限用于执行许多服务器活动,例如,服务器的启动和停止、自定义安装软件包、附加虚拟磁盘、配置访问权限和防火墙规则。

1.3.2 平台即服务

除了提供原始计算(raw computing)和存储服务的基础设施为导向的云外,另一种方法是提供一个更高层次的抽象使云易于编程,该方法称为平台即服务(PaaS)。云平台提供了一个环境,开发者在上面创建和部署应用,而不必知道应用将使用多少处理器或内存。此外,多个编程模型和专门服务(如数据访问、认证和付款)提供了新的应用结构块[40]。
Google AppEngine是PaaS的一个案例,它提供了可扩展的开发环境并托管Web应用,这应该在特定的编程语言(如Python或Java)中编写,并使用服务的自身专有结构化对象数据来存储。结构块包括内存对象缓存(memcache)、邮件服务、即时通信服务(XMPP)、图像处理服务与Google账户认证服务的整合。

1.3.3 软件即服务

应用驻留在云堆栈的顶部。最终用户通过Web门户访问这一层提供的服务。因此,越来越多的消费者从本地计算机上安装程序转向提供相同功能的在线软件服务。现在传统的桌面应用(如字处理和电子表格)可以在Web中作为一个服务访问。这一交付应用模型称为软件即服务(SaaS),它减轻了客户软件维护的负担,并简化了开发和供应商的测试 [ 37,41]。
Salesforce.com依靠SaaS模型,提供完全驻留在自己服务器上的商业生产应用(CRM),让客户定制和按需访问这些应用。

1.3.4 部署模型

虽然云计算主要出现在公共计算效用模型中,但也采用了与物理位置和分布变化相关的其他部署模型。从这个意义上说,以部署模型为基础,无论什么服务类型,云都可以分为公共云、私有云、社区云或混合云[6],如图1.4所示。
Armbrust等[5]将公共云定义为公众以按需付费的方式来使用云;私有云则定义为商业或者其他组织的内部数据中心,而公众无法直接使用。
在大多数情况下,建立一个私有云是通过添加虚拟化和类似云(cloud-like)的接口对现有的基础设施进行重组实现的。这允许用户与本地数据中心进行交互,同时具备公共云的相同优势。最显著的是自助服务接口、访问虚拟服务器的特权和按使用计量和计费。

《云计算:原理与范式》一1.3 云计算的架构与类型

社区云是“由一些组织共享基础设施,并为有共同关注点(如任务、安全要求、策略和准则)的社区服务[6]”。
公共云与私有云的计算能力结合便形成了混合云[7]。暂时租用空间处理负载高峰的方法称为“云爆发(cloud bursting)”[42]。