一、SaaS介绍、长尾市场
SaaS(Software as a Service软件即服务)是通过互联网、以服务的形式交付软件、同时供多个租户(每个租户下面有一个或多个用户)租赁使用的业务模式。
相比传统应用软件,以下几点因素或许正是SaaS目前备受关注的原因。
首先是获取和部署方式发生了重大改变。SaaS模式下,企业可以通过互联网轻松获得软件,不需要专业部署即可使用,而无须像传统软件一样等待软件厂商漫长的交付过程。
费用上,企业无需购买软硬件以作为软件系统的服务器。软件的运行、维护、升级和数据的存储都在SaaS服务提供商那里。同时企业可以根据自身情况,按需租赁软件的部分或全部功能并按期支付租赁费用。SaaS软件的目标市场是长尾市场(针对众多中小企业),规模效应也使得SaaS软件的租赁费相对较低。
服务上,企业无需招聘相应的IT维护人员,软件的维护由SaaS服务提供商提供,软件的升级就像初次获取一样容易,企业几乎不用投入专门的人员和时间来应对就可以使用新的软件版本。
网络带宽的不断提高,使得SaaS软件与服务器的数据交互性增强,用户在线使用的等待时间大大缩短。
技术实现上,Ajax技术更是加快了软件响应,使得web页面可以不用刷新就可以完成数据的存取,具有了C/S界面的部分特性;Web Service技术
然而,SaaS软件也并不是没有缺点,这也正是抑制SaaS迅速普及的原因。
Internet的稳定性和带宽毫无质疑是不及企业内部的局域网的,对于运算量大、业务过程复杂的系统显然不方便采用SaaS模式;SaaS软件同时供数十甚至数百个租户使用,与传统定制软件相比少了特性化的东西,企业如果选择SaaS,也就意味着必须放弃一些自身特色;SaaS模式下数据是存储在SaaS软件厂商的服务器中的,将自己的业务数据放置于企业外部,恐怕心理上要有一个适应过程。
二、外围现状介绍
美国的Salesforce.com是最成功的SaaS的服务提供商之一,其在美国成功上市也极大地刺激了SaaS市场。微软、Oracle、SAP、IBM等国际大公司也都视SaaS为一次决不可措施的机会,纷纷采取措施切入SaaS市场,以图能够雄霸SaaS市场,引领未来。国内金蝶等软件厂商也纷纷介入,推出自己的SaaS产品,阿里巴巴更是押宝SaaS。知名厂商的介入,无疑给SaaS市场增加了信心。
三、服务交付方式
SaaS模式软件的交付相比传统软件的交付要容易得多。软件的形式仍然可以采用C/S和B/S两种结构。应用微软提供的ClickOnce部署技术,SaaS软件供应商将可以将自己C/S结构的软件发布到Internet上,租户通过浏览器就可以很方便地完成程序安装并开始使用(ClickOnce应用在本刊第14期中有介绍,有兴趣的可以去翻看);对于B/S结构的软件更容易交付给用户使用了。
四、多租用数据体系结构方案
企业作为租户租用SaaS软件,那么租户的数据如何存储?对租户数据应该采用何种隔离等级和方式?做SaaS模式的软件在数据体系结构上面临一个选择。在实际应用中有三种方式可以选择。
一是独立数据库的方式,就是说为每个租户提供一个独立的数据库,这种方式的优点是对单个租户的数据备份和恢复容易,但会增加硬件成本。
二是共享数据库,独立架构。Oracle数据库中都有架构(Schema)这个数据库对象,Sql Server在2005的版本中才引入架构作为数据库对象(架构对象的特性和使用不是本文的重点,我在此不作介绍)。每个租用都有一套完整的表集合,通过架构的方式来管理。这种方式能够充分利用服务器的性能。这种方式和前一种方式一样,存在更新维护上的困难,如果租户成百上千,可以想象数据库维护起来相当困难。不过也不是没有办法,通过SMO定制化管理数据库将极大地化解维护困难的问题,后面还有介绍,这里先一笔带过。
三是共享数据库,共享架构。即所有租户的数据存储于一套表集合中,表设计中增加租户的标识字段。这种方式在数据库维护上要简单许多,且可以最大化利用数据库服务器的性能,不同租户数据隔离的控制完全放在软件中处理。当然不同租户的数据不能单独备份,而且随着租户数和租户业务数据的增加,数据以乘积关系增加,单表记录数很容易上升到百万或千万或更高,用户速度上的体验必然下降。
五、多租用数据库维护SMO
上面说了前两种数据库体系结构均存在维护和部署上的困难,当数据库定义修改后怎么方便地在其它数据库或模式中执行更新并始终保持统一?问题很明确,解决方法的选择当然也就很有针对性,如果自己写个维护程序,能够自动将数据库对象显示在界面上,并提供批量的更新方法,问题也就解决了。随后我们发现了SMO(SQL Server管理对象,是SQL Server 2005客户端工具的一部分,也是SQL Server 2005功能包的一部分),她我们提供了非常有效的方法来通过编程的方式管理SQL Server。与ADO.NET相比,ADO.NET是一个通用的数据访问方案,可以用来访问众多不同的数据库,而SMO在管理SQL Server的应用中略胜一筹,而且只能用于SQL Server。