1 引言
横看成岭侧成峰,远近高低各不同。 不识庐山真面目, 只缘身在此山中。
________苏轼,《 题西林壁》
“社会化大开发”是人们梦寐以求的事情,信息化的软件将象您自家的水管一样,当您需要时您只要拧开水龙头,自来水就会源源不断地送到您家。将来的软件也会这样,只要您能上网,您随时都可通过访问软件服务公司提供商的某个地址,您所需要的业务就可以在网上完成,这里您完全不需要把软件和数据库下载到本地安装,也不让您自己手工升级和维护。您所要做的一个前提条件是您先必须通过注册的方式去购买这种服务。不仅仅是业务软件,就连操作系统等这样的庞然大物将来也会在您开机时通过网联网临时送到您电脑而不是您事先安装好。
2 什么是SaaS
2.1 SaaS的定义
SaaS是Software-as-a-service(软件即服务)的简称,是随着互联网技术的发展和应用软件的成熟,而在21世纪开始兴起的一种完全创新的软件应用模式。它与“on-demand software”(按需软件),ASP,hosted software(托管软件)所具有相似的含义。它是一种通过Internet提供软件的模式,厂商将应用软件统一部署在自己的服务器上,客户可以根据自己实际需求,通过互联网向厂商定购所需的应用软件服务,按定购的服务多少和时间长短向厂商支付费用,并通过互联网获得厂商提供的服务。用户不用再购买软件,而改用向提供商租用基于Web的软件,来管理企业经营活动,且无需对软件进行维护,服务提供商会全权管理和维护软件,软件厂商在向客户提供互联网应用的同时,也提供软件的离线操作和本地数据存储,让用户随时随地都可以使用其定购的软件和服务。对于许多小型企业来说,SaaS是采用先进技术的最好途径,它消除了企业购买、构建和维护基础设施和应用程序的需要。近年来,SaaS的兴起已经给传统套装软件厂商和平台软件厂商带来真实的压力,同时,社会化软件大开发就是以SaaS为基础,它是时代发展的必然产物和先进思想。
在这种模式下,企业不再象传统模式那样花费大量投资用于硬件、软件、人员,而只
需要支出一定的租赁服务费用,通过互联网便可以享受到相应的硬件、软件和维护服务,享有软件使用权和不断升级,这是网络应用最具效益的营运模式。企业采用SaaS服务模式在效果上与企业自建信息系统基本没有区别,但节省了大量用于购买IT产品、技术和维护运行的资金,且像打开自来水龙头就能用水一样,方便地利用信息化系统,从而大幅度降低了中小企业信息化的门槛与风险。
同时,服务提供商通过大规模的客户收取一定服务费用,一方面来达到软件的最大利
用率,另一方面也降低频繁的客户现场实施和维护费用,更多的精力投入到技术及服务质量上,更好地通过有效的技术措施保证每家企业数据的安全性和保密性。
2.2 SaaS的三层含义
SaaS有三层含义:
1. 表现层
SaaS是一种业务模式,这意味着用户可以通过租用的方式远程使用软件,解决了投资和维护问题。而从用户角度来讲,SaaS是一种软件租用的业务模式。
2. 接口层
SaaS是统一的接口方式,可以方便用户和其他应用在远程通过标准接口调用软件模块,实现业务组合。
3. 应用实现层
SaaS是一种软件能力,软件设计必须强调配置能力和资源共享,使得一套软件能够方便地服务于多个用户。
SaaS模式下的软件运营商,从不同层面提出了从系统设计、接口需求到软件实现的不同要求见图2-1:
图2-1 SaaS模式下各层的含义及实现
对SaaS软件的第一个要求就是将SaaS软件中的管理流与业务流进行分离。运营的本质就是控制,“通信能力运营”就是对用户能否使用通信能力的切换,而通信能力本身在设计之初,就支持这种切换;“IT应用运营”,也同样需要支持这种切换能力,而应用软件本身,往往更关注业务能力的实现,应用软件要转变成为SaaS软件,必须从根本上实现对使用权限的外部控制,也就是要实现管理流与业务流的分离,管理流用于实现对IT应用的切换控制,业务流用于保证IT应用功能的实现。
SaaS软件在接口方面,必须满足用户统一的远程调用要求。随着互联网技术和分布式计算技术的发展,越来越多的用户希望远程连接到数据源和应用,以期实现应用程序跨多个服务器的分布和运行,这也是Web2.0中混合搭建(Mash Up)的目标。SaaS软件需要支持采用分布式的SOA架构,使软件系统具备更强的灵活性、适应性和可维护性。分布式SOA架构通过智能端点让具备某种服务功能的应用自动找寻其他服务,并与其实现相互通信,从而满足基于SOA架构的SaaS软件对各项技术和成本的要求。
SaaS模式面向长尾市场,要求SaaS软件必须具备低成本运行能力和个性化配置能力。一方面,利基市场虽然总和诱人,但如果不能解决多用户间的资源共享,随着用户数量的增加,SaaS软件的运营成本就会线性上升,而无法产生规模效应;另一方面,客户在接受SaaS软件主要业务流程的前提下,还会有一定的个性要求,比如企业标识、页面版式、页面色系等,这也是SaaS软件需要满足的客户需求。此外,计算能力共享、存储能力共享、代码共享、个性化配置能力、大容量支持能力等等,都是编制SaaS软件中需要解决的问题。
2.3 SaaS常用词语解释
l 跨界混搭(mash-up)
“跨界混搭”这个术语起源于流行音乐,编曲者把两张唱片混编以后重新制作出一首
新歌。这个概念应用在SaaS上,就是指把多个不同的在线应用软件服务搭建成为一种新型的整合服务。用户通常只需要登录一次就可以使用集成好的应用软件组合。
需要注意的是,当您把多种SaaS服务混合到一个软件中去后,其中一种会是核心,如果其出现严重问题,将会影响到整个软件的使用。
l 集成器(Connector)
集成器是一种软件程序,让您从一个应用程序中读取数据,然后下载到SaaS解决方案中(同样可以用于将数据送回到另一个应用程序中)。这种数据传送通常用于实时或批量传送的情况,企业完成初始数据的导入或导出,然后根据需要定期更新这些数据。比如,像国外的SaaS服务商Salesforce或国内的800CRM提供SAP[/url]集成器,就将SAP中的客户数据导入到Salesforce或800CRM系统中。
l 解决方案扩展(Solution extension[/url])
SaaS 解决方案具有的扩展性让用户能够在已存在的软件结构上,按需再增加额外的工具或功能。像前面提到的Salesforce的App Exchange应用软件开发平台,以及国内的SaaS托管商800CRM的800App应用软件开发平台都是解决方案扩展的典型代表。
还有一些扩展性例如可以扩展数据模型,提供个性化的用户界面以及其他更多自定制的扩展服务。
l 垂直应用(Vertical applications)
“垂直应用”不是SaaS的专用术语,它也应用于其他领域,通常是指为某一个领域(例如银行,医药等)建立一个专门的平台。虽然它已经在传统行业应用很多年了,但是相对来讲应用在SaaS中还是一个比较新的概念。
随着SaaS的不断成熟,客户希望SaaS服务商能提供详细的垂直应用行业方案。例如,目前Salesforce的APP Exchange平台已经能够实现全方位跨行业的应用,各个行业的公司都能够在Salesforce的平台上进行二次开发。
l 参数应用(Parametric applications)
在传统软件模式下,如果软件的服务功能需要改变,那么相应的代码也需要重新编写。但是在SaaS模式下,用户可以通过输入新的参数变量,或者制定一些数据关联规则来开启一种新的应用。这种新式服务模式也被称为“参数应用”,“宏或”自定制对象,主要是因为这种应用程序可以让用户自己定制新的应用,不需要懂软件编程。
Salesforce或800CRM升级系统,自定制对象也同时升级,而最本质的应用则是客户可以自己通过改变参数和参数关联来为系统增加新的功能。
l 模块化(Modular)
SaaS中模块功能主要用于关闭或开启服务。在聚集了丰富功能的强大应用平台中,经理可以像选择菜单那样任意地选择功能,关闭某些不需要用到的功能,也可以根据需求增加新的功能。
SaaS服务商基于网络]架构建立了自己的应用平台,模块的灵活性使得他们可以根据客户的不同需求,将功能复杂繁多的系统配置成适合客户的系统。
l 在线SaaS
“在线SaaS”从表面意思来看似乎有点累赘,SaaS本身的概念就是提供一种在线服务,因此所有的SaaS应用程序都应该是产生于网络,壮大于网络的。但该术语是相对于SaaS的前身——ASP(应用服务提供商)来说的,这是一种早期的远程软件托管形式。跟如今直接在网上使用的系统相比,ASP时代的用户可能觉得通过专线或专用加密设备访问的系统来得更安心。显然,早期的ASP解决方案设计的一些运行缓慢的程序并没有很好地体现“在线”这个概念, 很多ASP客户需要借用、Citrix等实现远程访问。
所以当人们说 “在线SaaS”时,这个术语其实是在强调使用浏览器直接使用软件,而加密是通过浏览器通用的加密协议。
l 基础架构平台(Platform)
有时候SaaS的拥护者希望出现一种基础架构的平台来推动SaaS更好地发展。
这是因为首先得有一个平台来支撑SaaS软件应用程序的运行,如今最著名的是国外Salesforce公司的APP Exchange平台,国内800CRM的800APP Native的平台与Salesforce兼容。
l 服务水平协议(SLA)
SLA(Service Level Agreement),指IT服务提供商和客户之间就服务提供中关键的服务目标及双方的责任等有关细节问题而签订的协议,此协议重在陈述服务的质量、优先级和责权。
对于SLA的必要性,在BS15000-1中的服务提供过程中有明确指出:对服务提供全过程中的服务水平目标和工作量参数,应在组织(服务提供商和雇主公司)间协商同意并形成记录。对每一项服务应定义、协定和记录一个或多个服务水平协议(SLAs)。SLAs、运营级别协议和第三方合同(支持合同)及相应的程序应在相关组织间协商并记录。
SLA不止是一个合同书,更主要的方面是“SLA过程”。所谓“SLA过程”是指通过SLA的管理,来保障在SLA合同书中对客户承诺的QoS(Quality of Services)服务质量。
3 SaaS与传统软件的对比
SaaS的兴起将是IT业的一场新革命。SaaS模式将彻底改变传统软件的开发方式和使用方式。传统软件将在这场革新的浪潮中被冲击得支离破碎,大多数传统软件将会消亡或者转型。
3.1 SaaS与传统软件的区别
传统软件是在公司内部架设软件运行环境,自己购买应用服务器、数据库服务器、网卡等硬件,安装自己的局域网并在局域网内部署软件。所以不同公司都各自部署一套自己的系统。不同公司的用户事实是通过不同的途径访问不同的系统,如图2-2所示:
图2-2 传统软件
这种情况明显可看出一个致命的问题。就是软件的部署十分重要,软件的部署不仅要投入大量的硬件设备,并且软件部署的好坏直接影响着软件的正常使用,有些软件开发得再好,可是没有较好的部署结果还是失败。
以ERP软件为例,需要ERP这样的企业应用软件,软件的部署和实施比软件本身的功能、性能更为重要,万一部署失败,那所有的投入几乎全部白费,这样的风险是每个企业用户都希望避免的。通常的ERP、CRM项目的部署周期至少需要一两年甚至更久的时间,而SaaS模式的软件项目部署最多也不会超过90天,而且用户无需在软件许可证和硬件方面进行投资。传统软件在使用方式上受空间和地点的限制,必须在固定的设备上使用,而SaaS模式的软件项目可以在任何可接入Internet的地方与时间使用。相对于传统软件而言SaaS模式在软件的升级、服务、数据安全传输等各个方面都有很大的优势。让我们来看看SaaS模式的软件部署,如图2-3所示:
图2-3 SaaS模式
通过上面的分析我们总结出SaaS模式与传统软件许可模式的区别:
表2-1 SaaS模式与传统软件许可模式的区别
比较项目SaaS模式传统软件许可模式
开发方式产品式开发。软件开发商针对大众化以产品式开发项目式开发。软件开发商针对特定用户大众化以项目式开发为主
设备部署只需要使用最简单的PC设备自己构建复杂的IT系统
服务模式由厂商提供专业维护和服务需要自己培养一个专业的IT维护团队
使用方式任何可接入Internet的地方与时间使用必需在固定设备上使用
升级更新通过互联网随时更新软件使用的版本版本更新周期较长
付费方式定期为定购的服务支付费用一次性承担购买软件的投资风险
升级更新通过互联网随时更新软件使用的版本版本更新周期较长
3.2 SaaS对传统软件的影响
软件运营服务(SaaS)的诞生将会对传统软件产业产生巨大的冲击。它主要表现在以下三个方面:
第一,软件运营服务模式将会成为未来软件应用和销售模式的主要模式之一,将越来越多地抢占传统软件模式的市场。计世资讯(CCW Research)预计,从2007年开始,会有大量的运营化(SaaS)软件出现。到2010年,50%以上的传统软件将会同时出现软件运营服务模式。如果传统软件提供商不进行战略转型,将会在未来的市场竞争中处于不利地位。
第二,软件运营服务模式的出现将会促使传统软件的商业模式发生变化。由于软件运营服务模式实行的是按需服务、按需付费的模式,对用户的吸引力要远远高于传统软件的许可证模式。计世资讯(CCW Research)认为,随着软件运营服务按需服务和按需付费模式的普及与推广,传统软件的商业模式尤其是付费模式也会逐渐向此靠拢。
第三,软件运营服务的出现将会加剧传统软件业的整合与并购。由于软件运营商采用“一对多”的服务模式,这必然导致软件运营商的数量会大大减少,这也会给传统软件提供商带来巨大的挑战。计世资讯(CCW Research)预计,2010年,中国传统的软件提供商将有一半会消亡或转型。
4 SaaS与ASP的异同
SaaS和ASP的重点都是“软件部署为托管服务,通过因特网存取”。他们相同的地方
有:
l 运营模式:
软件所有权属于供应商,供应商来负责基础设施和软件维护升级工作。
l 服务方式:
客户按一定的付费周期来租赁供应商的服务,费用可能随着客户使用规模大小不同。
供应商定期和客户一起整理需求,以使服务能响应客户变化。
l 盈利方式:
通过专业化和规模经济来降低供应商软件服务成本,以此达到盈利目的。附加的盈利
方式有广告和无线增值等。
只有达到一定的规模,才能使供应商投入的硬件和专业服务成本和营业收入达到平
衡。在此之后,随着规模的增大,供应商的销售成本丝毫不受影响,利润才开始增长。
SaaS虽然是建立在ASP的基础上,它们的根源是相同的。ASP曾经倒在大众的一片
“喝彩”声中,只是过眼烟云。今天的SaaS又有什么新的变化呢?这是大加都很关心的,SaaS并不是简单的由ASP改变一下,也不是一种慨念的炒作。现在我们来讨论下SaaS和ASP的主要区别:
l ASP是“一对一”关系而SaaS是“一对多”关系
ASP提供客户服务是“一对一”关系,即针对不同的客户定制不同的应用。而SaaS
提供客户服务是“一对多”关系,即针对所有客户都是相同的应用服务。
ASP模式下每个客户运行供应商为自己定制的特有实例。从技术角度来说,就是每个
客户使用一个数据库、一个Web站点或者虚拟目录。数据库中的数据结构和应用的代码可能都根据客户需求做过定制化修改。
l SaaS是可自定义的
SaaS对于应用系统来说,更强调应用的可自定义,SaaS的自定义能力使得SaaS应用
能适合更广泛的企业用户,增多了很多用户体验,比如说自定义表单,自定义数据结构,自定义报表,自定义用户界面,自定义业务流程。用户可以通过这些可自定义的工具来满足自己的个性要求。
l 服务范围不同
SaaS应用更拓展了ASP的应用范围,并不仅仅局限于应用系统的托管,而更着眼于
提供更多的互联网服务。如Google Apps、Google Map甚至于邮件服务,都可以认为是SaaS应用的一种表现形式,原来含义上的托管已经从窄义的应用向广义的互联网应用转换。总之,SaaS提供了企业更多可供选择的互联网服务,这些服务通过SaaS进行整合,集约地提供给企业用户,和敏捷的应用互相辉映。
l 技术复杂程度不同
传统的ASP只是针对每个客户定制不同的应用,而没有将所有的客户放在一起进行考
虑。在SaaS模式中,在用户和Web服务器上的应用之间增加了一个中间层,这个中间层用来处理用户的定制、扩展性和多用户的效率问题。技术上来说,要比ASP模式复杂得多。
SaaS模式ASP模式都秉承“软件即服务”的理念,但是SaaS要比ASP复杂的多。
而SaaS的软件架构有较大改变,广泛应用Ajax技术,支持界面局部刷新,让用户有更好的体验感受。
l 扩展性不同
SaaS模式的代码和数据结构都是相同的,供应商在设计应用的时候已经考虑了扩展性,所以针对不同需求的客户,可以采用灵活的配置来响应,但是应用数据仍然是隔离的。从技术角度来说,所有客户都是使用一套安装包,数据库结构和一样。
下面我们从“软件即服务的”三个层面来比较SaaS模式与ASP模式的主要区别如表
2-2:
表2-2 SaaS模式与ASP模式在三个层面的区别
比较项目SaaS模式ASP模式
表现层以应用为中心,软件开发商和应用服务商分离以应用为中心,软件开发商和应用服务商合一
接口层支持远程标准接口应用级的调用不支持远程标准接口应用级的调用
应用实现层强调对资源的合理调配及共同使用一般通过软件复用实现应用共享
5 SaaS与SOA的异同
SOA是现在最流行的话语之一,它广泛被业界所关注。大家一谈到SaaS,似乎都要联想到SOA,有的人甚至把SaaS与SOA混为一谈,认为SaaS就是SOA。
SOA和SaaS,虽然有许多相似之处,一度被比喻成软件圈内的双“S”。它们有时被称作挛生姐妹,真是情同手足;但有时又被看作冤仇世家,看似貌合神离,又不得不走到一起。这么多的难以理解的东西缠在一起确实搞得人一团雾水,还是让我们先来正确地理解SOA是什么?
什么是SOA?
SOA(Service-Oriented Architecture,面向服务架构)是一个面向服务的架构模型,它将应用程序的不同功能单元——服务(service),通过服务间定义良好的接口和契约(contract)联系起来。接口采用中立的方式定义,独立于具体实现服务的硬件平台、操作系统和编程语言,使得构建在这样的系统中的服务可以使用统一和标准的方式进行通信。SOA与大多数通用的客户端/服务器模型的不同之处,在于它着重强调软件组件的松散耦合,并使用独立的标准接口。
从业务角度理解SOA,它是针对企业的一些旧的软件体系重新利用,进行整合,构建一套松散耦合的软件系统,同时也能方便的结合新的软件共同服务于企业的一个体系。使系统能够随着业务的变化更加灵活适用。
从技术角度理解SOA,SOA实际上是系统分析设计思想的进一步发展,它的思想超出了对象的概念,一切都以服务为核心,而服务由组件构成,组件是若干操作的集合,操作对应具体实现的程序函数。服务是通过对业务过程模型的分析而识别出来的。每个服务能够实现若干功能,这些功能由组件而不是操作来实现。组件是操作的调用集合,是服务功能实现的最小单位,而不是程序实现的最小单位。
在具体实现上,只要能提供服务的技术都可以实现SOA思想,如Web Service、RMI、Remoting、CORBA、JMS、MQ、甚至JSP、SERVLET等,另外还可以通过分布式事务处理和分布式软件状态管理来进一步地改善它。但是如果想让这些服务能够更广泛的被使用,或被大家认可,在互联网上发布,那么就要遵循一定的规则标准了。这一类的标准有SOAP、Java API for XML-based RPC (JAX-RPC)、WSDL 和 WS-* 规范等等。另外它的实现还需要安全性、策略管理、可靠消息传递以及会计系统的支持。
直观地理解,可以把SOA看做是模块化地组件,每个模块实现独立功能,不同的拼合提供不同的服务。利用SOA,把一团乱麻庞大无章的系统规整成一个一个的模块,方便地实现IT的最大利用率,并提高重用度。
虽然SOA和SaaS的本质都是Service(服务),但内涵却大相径庭。
通过上面的分析,SOA和SaaS的区别大概可以概括为以下几点:
l 服务的方式不同
SaaS所说的服务实际上是基于web的应用软件,而SOA所说的服务是web API,
或者叫web service。这两个概念是完全不同的。比如一个SaaS的运营商,在SaaS平台上提供了HR,CRM等系统。用户可以通过在网上租赁的形式来租借这些软件。而SOA是提供的不是软件,而是接口函数,比如说查询IP地址和城市对应的API,查询天气的API。当然SOA主要还是用户开发应用软件的中间件,这些中间件可以在互联网上发布,这是将来互联网的趋势,也可以解决软件的版权问题。
l 服务的对象不同
SOA包括了关于软件是如何被架构起来的东西,而SaaS是关于软件是如何被应用的。SOA是种技术,这种技术供软件生产者使用。SaaS是种商业模式,是把开发出的软件通过租赁的方式供用户使用。
l 服务的范围不同
SaaS模式的软件既可用SOA来架构,也可以不需要SOA。SOA不仅仅在SaaS模式的软件上被采用,而且大胆的应用在任何WEB软件架构中,包括一个小型的单用户软件。
l 整体与部分的关系
在SaaS当中,应用程序可以像任何服务一样被传递,就像您家中电话的语音一样,看起来似乎就是为您的需求量体裁衣得到的,SaaS是个整体的软件系统;而SOA的定义和这个无丝毫的联系。SOA支持的服务,都是些离散的可以再使用的事务处理,这些事务处理合起来就组成了一个业务流程,是从基本的系统中提取出来的抽象代码,SOA只是构成一个完整系统的部分框架。
l SaaS主要提供服务而SOA提供技术支持
SaaS主要是指一个软件企业向其它企业提供软件服务。而SOA一般是企业内部搭建系统的基础。SaaS注重的是提供服务的思维。而SOA注重的是实现服务的思维。
6 小结
本文介绍了什么是SaaS,并且比较了SaaS与ASP、SOA的不同之处。通过对SaaS的介绍,让我们对SaaS有了较深入的理解,也能区分ASP与SaaS的不同。为我们进行SaaS的深入研究奠定的基础。
SaaS系列介绍之二: SaaS介绍,布布扣,bubuko.com
原文地址:http://www.cnblogs.com/EricChan/p/3858353.html