1.2 云计算的服务类型
云计算是一种新的技术,也是一种新的服务模式。云计算服务提供方式包含基础设施即服务(Infrastructure as a Service,IaaS)、平台即服务(Platform as a Service,PaaS)和软件即服务(Software as a Service,SaaS)3种类型。IaaS提供的是用户直接使用计算资源、存储资源和网络资源的能力,PaaS提供的是用户开发、测试和运行软件应用的能力,SaaS是将软件以服务的形式通过网络提供给用户使用。
这三类云计算服务的层次关系如图1.4所示。IaaS处于整个架构的底层;PaaS处于中间层,可以利用IaaS层提供的各类计算资源、存储资源和网络资源来建立平台,为用户提供开发、测试和运行环境;SaaS处于最上层,既可以利用PaaS层提供的平台进行开发,也可以直接利用IaaS层提供的各种资源进行开发。
图1.4 云计算服务层次
云计算服务提供商可以专注于自己所在的层次,无需拥有三个层次的服务能力,上层服务提供商可以利用下层的云计算服务来实现自己计划提供的云计算服务。例如,提供PaaS服务的云计算提供商可以基于Amazon EC2的IaaS平台来建立自己的PaaS服务平台,向用户提供PaaS服务;提供SaaS服务的云计算提供商可以使用Google App Engine平台或者微软的Azure平台开发、测试和运行自己的软件,向用户提供SaaS服务。
1.2.1 IaaS:基础设施即服务
IaaS是把计算、存储、网络以及搭建应用环境所需的一些工具当成服务提供给用户,使得用户能够按需获取IT基础设施。IaaS主要由计算机硬件、网络、存储设备、平台虚拟化环境、效用计费方法、服务级别协议等组成。
通过使用IaaS,用户无需购买计算机和相关系统软件,也不需要购买存储设备,更省去了维护和升级计算机的烦恼。用户只需要购买IaaS的服务就可以获得计算和存储资源,并在这些资源上构建自己的平台和应用。IaaS服务模式如图1.5所示。
图1.5 IaaS服务模式图
IaaS具有以下特点:
·把IT资源以服务的方式提交给用户;
·基础设施可以动态扩展,即可以根据应用的需求动态增加或者减少资源;
·计费服务灵活多变,按实际使用的资源进行计费;
·多租户,相同的基础设施资源可以同时提供给多个用户共享使用;
·企业级的基础设施,不仅仅可以为个人用户提供IT资源,而且可以满足中小企业的IT资源需求,使得它们可以从聚集的计算资源池中获利。
从业务上来看,IaaS需要把计算、存储、网络等IT基础设施通过虚拟化整合和复用后,通过互联网提交给用户。提供的IT基础设施要能够根据应用的运行情况进行动态扩展或收缩,并按照实际的使用量进行计费。作为IaaS服务提供商,需要重点解决资源提供和运营管理两个问题。
Amazon EC2是第一个商用的IaaS平台,它的底层使用了Citrix的Xen虚拟化技术,以Xen虚拟机的形式向用户动态提供计算资源。此外,Amazon公司还提供了简单存储服务(Simple Storage Service,S3),以及弹性块存储服务(Elastic Block Store,EBS)等多种IT基础设施服务。Amazon EC2向虚拟机提供动态IP地址,并且具有相应的安全机制来监控虚拟机节点间的网络,限制不相干节点间的通信,从而保证了用户通信的私密性和数据的安全性。从收费模式来看,Amazon EC2按照用户使用资源的数量和时间进行计费,从真正意义上实现了云计算的“按使用付费”的模式。
IaaS的核心技术包括虚拟化技术、分布式存储技术、高速网络技术、超大规模资源管理技术和云服务计费技术。
(1)虚拟化技术
通过虚拟化技术,可以在一个物理服务器上同时运行多个虚拟机。这些虚拟机之间是完全隔离的,就好像多台物理服务器一样。这样可以大大提高服务器利用率,从而大大降低服务器的购置成本和运维成本。比较通用的x86虚拟化技术有Citrix的开源Xen、XenServer,VMware的ESX以及开源KVM等。
(2)分布式存储技术
对于高效存储海量的、多种结构的数据,同时还要保证这些数据的可管理性,传统的存储技术已经不能够胜任。必须提供一套新的分布式存储系统。新型的分布式存储系统有OpenStack开源平台的Swift以及Ceph。
(3)高速网络技术
高速网络技术是支撑云计算的核心技术,没有高速的网络技术,用户就无法使用云计算服务商提供的各种资源。因此,网络技术对云计算是至关重要的,决定了云计算最终能够提供的资源共享等服务的能力。
(4)超大规模资源管理技术
云计算系统中的资源一般来讲都是海量的,需要管理成千上万的物理服务器,几十万甚至上千万的虚拟机。面对如此庞大规模的资源,管理的压力是巨大的。因此,海量资源管理是IaaS云计算的核心问题。在IaaS中,资源主要包括计算、存储、网络、服务器等硬件资源。资源管理系统需要将这些资源通过抽象形成逻辑资源,整合起来作为单个的集成资源池提供给用户。资源管理系统对用户提供标准的访问接口,向用户屏蔽了资源所在的物理位置和资源获取的复杂过程等,直接提供给用户所访问的资源。另外,资源管理系统需要根据用户的请求把特定的资源分配给资源请求者;合理地调度相应的资源,使请求资源的任务能够在没有后台管理员参与的情况下自动完成。
(5)云服务计费技术
云计算的资源都是以服务方式提供给用户的,就像电力公司给用户提供电一样,因此服务计费非常重要。云计算中的服务计费比传统的电力公司更为复杂。在IaaS中,既要考虑用户使用的CPU、内存、磁盘、网络等的数量,还要考虑使用的时间,以及使用的状态等。云服务计费技术需要获取用户使用这些资源的详细数据。
与传统的企业数据中心相比,企业使用IaaS服务具有以下5个方面的优势。
(1)低成本
企业不需要购置硬件,省去了前期的资金投入;使用IaaS服务是按照实际使用量进行收费的,不会产生闲置浪费;IaaS可以满足突发性需求,企业不需要提前购买服务。
(2)免维护
IT资源运行在IaaS服务中心,企业不需要进行维护,维护工作由云计算服务商承担。
(3)伸缩性强
IaaS只需几分钟就可以给用户提供一个新的计算资源,而传统的企业数据中心则需要数天甚至更长时间才能完成;IaaS可以根据用户需求来调整资源的大小。
(4)支持应用广泛
IaaS主要以虚拟机的形式为用户提供IT资源,可以支持各种类型的操作系统,因此IaaS可以支持的应用的范围非常广泛。
(5)灵活迁移
虽然很多IaaS服务平台都存在一些私有的功能,但是随着云计算技术标准的诞生,IaaS的跨平台性能将得到提高。运行在IaaS上的应用将可以灵活地在IaaS服务平台间进行迁移,不会被固定在某个企业的数据中心。
1.2.2 PaaS:平台即服务
PaaS是一种分布式平台服务,为用户提供一个包括应用设计、应用开发、应用测试及应用托管的完整的计算机平台。在该服务模式中,用户不需要购买硬件和软件设施,只需要支付一定的租赁费用,就可以拥有一个完整的应用开发平台。在PaaS平台上,用户可以创建、测试和部署应用及服务,并通过其服务器和互联网传递给其他用户使用。
PaaS的主要用户是开发人员,与传统的基于企业数据中心平台的软件开发相比,用户可以大大减少开发成本。
PaaS平台的种类目前较少,比较著名的有Force.com、Google App Engine、Windows Azure以及开源平台Cloud Foundry。业界的第一个PaaS平台是Salesforce在2007年推出的Force.com。通过这个平台,用户不但可以使用Salesforce提供的完善的开发工具和框架来轻松地开发应用,还可以把应用直接部署到Salesforce的基础设施上,利用其强大的多租户系统,使用户可以交付健壮、可靠、可伸缩的在线应用。
Google在2008年4月推出了Google App Engine(GAE)PaaS平台,从而将PaaS的支持范围从在线商业应用扩展到普通的Web应用。GAE的推出使得越来越多的开发者开始熟悉和使用功能强大的PaaS服务。
PaaS层的实现路径有多种,其核心技术有以下5种。
(1)REST技术
使用REST(Representational State Transfer,表述性状态传递)技术,PaaS平台能够非常方便地将中间层所支撑的部分服务提供给调用者。
(2)多租户技术
多租户技术使得一个单独的应用实例可以为多个组织服务,还能够保持良好的隔离性和安全性。多租户技术能够有效地降低应用的购置和维护成本。
(3)并行计算技术
为了进行海量数据处理,需要利用大型服务器集群进行并行计算。Google App Engine和开源平台Hadoop的MapReduce就是这方面的代表。
(4)应用服务器
在原有应用服务器的基础上为云计算做了一定的优化,如用于Google App Engine的Jetty服务器。
(5)分布式缓存
分布式缓存技术不仅能有效地降低对后台服务器的压力,还能够加快对用户请求响应的反应速度。使用最广泛的分布式缓存技术是Memcached。
PaaS服务示意图如图1.6所示。对于PaaS平台来讲,应用服务器和分布式缓存是必备的。REST技术主要用于对外的接口,多租户技术则主要用于SaaS应用的后台,而并行处理技术常被作为单独的服务推送给用户使用。
图1.6 PaaS服务示意图
和传统的基于本地的开发和部署环境相比,PaaS平台主要有以下优势。
(1)友好的开发环境
通过提供IDE(Integrated Development Environment,集成开发环境)和SDK(Software Development Kit)等工具来让用户不仅能够在本地方便地进行应用的开发和测试,而且能够进行远程部署。
(2)丰富的服务
PaaS平台会以API的形式将各种各样的服务提供给上层的应用。系统软件(比如数据库系统)、通用中间件(比如认证系统,高可靠消息队列系统)、行业中间件(比如OA流程,财务管理等)都可以作为服务提供给应用开发者使用。
(3)精细的管理和控制
PaaS能够提供应用层的管理和监控,能够观察应用运行的情况和具体数值(如吞吐量和响应时间等)来更好地衡量应用的运行状态,还能够通过精确计量应用所消耗的资源进行计费。
(4)弹性强
PaaS平台会自动调整资源来帮助运行于其上的应用更好地应对突发流量。当应用负载突然提升的时候,平台会在很短时间内(1分钟左右)自动增加相应的资源来分担负载。当负载高峰期过去以后,平台会自动回收多余的资源,避免资源浪费。
(5)多租户机制
PaaS平台具备多租户机制,可以更经济地支撑海量数据规模,还能够提供一定的可定制性以满足用户的特殊需求。
(6)整合率高
PaaS平台的整合率非常高,如Google App Engine可以在一台服务器上承载成千上万个应用。
1.2.3 SaaS:软件即服务
SaaS直接为用户提供软件服务,用户可以按照服务水平协议(Service Level Agreement,SLA)通过网络从云服务提供商处获取所需要的、有相应软件功能的服务,而不需要购买软件产品并安装在自己的计算机或者服务器上。SaaS就是软件服务提供商为了满足用户的需求提供的软件的计算能力。SaaS云服务提供商负责维护和管理云中的软件以及支撑软件运行的硬件设施,同时免费为用户提供服务或者以按需使用的方式向用户收费。所以,用户无需进行安装、升级和防病毒等,并且免去了初期的软硬件支出。SaaS服务的示意图如图1.7所示。
图1.7 SaaS服务示意图
SaaS是出现最早的云计算服务,其前身是ASP(Application Service Provider)。最早的ASP厂商有Citrix、Salesforce.com和Netsuite等,主要都是专注于在线CRM(客户关系管理)应用。由于当时ASP技术还不够成熟,不提供定制和集成等功能,网络环境还不够稳定和快速,所以ASP并没有发展起来。2003年以后,在Salesforce的带领下,原来的ASP企业以SaaS作为新的旗帜重新进入市场,随着技术和商业两方面的不断成熟,Salesforce、WebEx和Zoho等国外企业得到了成功。同样,在国内也有许多企业(如用友、金蝶、阿里巴巴和八百客等)也加入了SaaS的行列并取得了一定的成效。
与IaaS和PaaS相比,SaaS开发成本低,技术难度低,起步也比较早,所以SaaS产品数量众多,其中最有名的包括Google Apps、Salesforce CRM、Office Web Apps和Zoho。与传统桌面软件相比,现有的SaaS服务的功能和用户体验稍逊一筹。
SaaS的优势主要体现在以下4个方面。
(1)使用简单
SaaS应用可以通过浏览器访问,只要有网络,用户就可以随时随地通过多种设备使用SaaS服务,并且不需要安装、升级和维护。
(2)支持公开协议
现有的SaaS服务都是基于公开协议的,如HTTM4和HTTM5等。用户只需要使用常用的浏览器就可以使用SaaS服务。
(3)成本低
使用SaaS服务后,用户无需在使用前购买昂贵的许可证,省去了先期投入,只需要在使用过程中按照实际使用付费,成本远远低于桌面版。由于数据处理都在云端完成,用户在使用SaaS应用的时候也无需购买额外的硬件。SaaS服务一般都有先免费试用的功能,用户可以先体验后付费。
(4)安全保障
SaaS服务提供商都提供了比较高级的安全机制,不仅为存储在云端的数据提供加密措施,还通过HTTPS协议确保用户和云平台之间的通信安全。
虽然PaaS层在应用运行环境的层面向上提供了一系列的保障和支持,但是在应用本身的层面上,SaaS开发者仍需要设计实现多个功能特性,以提供SaaS平台所必需的能力,包括多租户、应用整合、动态扩展、信息安全、计费和审计等。这些功能就是实现SaaS的关键技术。
(1)大规模多租户支持
大规模多租户支持是SaaS模式成为可能的核心技术。因为SaaS改变了传统软件由用户购买许可证在自己本地安装、自行运行和维护的使用模式,变为在线订阅、按需付费的租用模式。这就意味着运行在应用提供商SaaS上的应用能够同时为多个组织和用户使用,能够保证用户之间的相互隔离。没有多租户技术的支持,SaaS就不可能实现。
(2)认证和安全
认证和安全是多租户的必要条件。当接收到用户发出的操作请求时,其发出请求的用户身份需要被认证,并且操作的安全性需要被监控。尽管用户之间的数据与环境隔离的功能是由多租户技术保证的,但是认证和安全处在应用的最前端,是SaaS安全的第一道防线。
(3)定价和计费
定价和计费是SaaS模式的客观要求。SaaS直接为最终用户提供服务,其服务对象很分散,需求会有多种多样,为用户提供的选择也多,所以,提供合理、灵活、具体而便于用户选择的定价策略是SaaS成功的关键之一。如何将SaaS定价以一种清晰、直观、便于用户理解的方式进行呈现也非常重要。精确的计费是收费的依据,是保证整个SaaS能够良性运营和发展的最关键的经济环节。
(4)服务整合
服务整合是SaaS长期发展的动力。SaaS应用提供商一般来讲不可能为用户,特别是企业用户,提供需要的完整产品线,因此需要通过与其他产品的整合来提供整套产品的解决方案。只有通过整合,才能为用户提供整体解决方案,也才可能使自己的SaaS为更广泛的用户所接受。
(5)开发和定制
开发和定制是服务整合的内在需要。一般来讲,每个SaaS应用都提供了完备的软件功能,但是为了能够与其他软件产品进行整合,SaaS应用最好具有一定的二次开发功能,包括公开API,提供沙盒以及脚本运行环境等。