基于软件即服务理念的SaaS模式的产品成为众多企业的必选,SaaS的优势投入少见效快这让企业所青睐。
在商战纷争积累的时代,企业利用管理软件来优化运营生产效率已是刚需,然而对于中小企你死我亡的争斗中更是尤为明显,其中其中基于软件即服务理念的SaaS模式的产品成为众多企业的必选,SaaS的优势投入少见效快这让企业所青睐。
SaaS是英语中“软件既服务”的首字母缩写,Software as a service (SaaS)。是一种软件应用的交付模式,通常指软件商开发基于网络的软件应用且安装运营(或独立或借助第三方)并通过Internet让客户使用。客户并不为软件本身而只为使用软件付费,客户可以通过特定的接口或网络服务(Web Services)来使用这些应用。
因为SaaS这种软件交付模式可以允许中小企业在不增加IT投入的基础下,快速实现信息化,同时也能够大幅度降低信息化给企业带来的风险。所以目前基于SaaS模式的企业管理软件已经在国际市场上占据了一定的市场份额,受到了很多中小企业的追捧。特别在数量众多且IT基础薄弱的国内中小企业市场,这种模式被包括SAP在内的众多国内外软件业巨头所看好,纷纷投入大量资源进行相应的研究开发。
面对SaaS的需求,这一模式产品是否成熟,发展程度如何我们来分析探讨。
一。SaaS系统三大要素
从系统架构的角度来看,要设计一个符合实际业务需求的能够支持多用户同时访问的SaaS系统就必须关注以下三大要素:可扩展(Scalable)、高效的多用户支持(Multi-Tenant-Efficient)、可配置(Configurable)
可扩展意味着最大程度的提高系统并发性,更有效的使用系统资源。比如说应用,优化资源锁的持久性,使用无状态的进程,使用资源池来共享线和数据库连接等关键资源,缓存参考数据,为大型数据库分区等技术。
高效的多客户支持则是设计基于SaaS模式的系统中最为重要的一环。比如说当一个用户试图通过某个基于SaaS模式的客户关系管理应用(Customer Relationship Management)来访问本公司的客户数据时,它所连接的这一基于SaaS模式的客户关系管理应用可能正同时被来自不同企业的成百上千个终端用户所使用,此时所有用户完全不知道其他并发用户访问的存在。这种在SaaS应用中极为常见的场景就要求基于SaaS模式的系统可以支持在多用户间最大程度共享资源的同时严格区分和隔离属于不同客户的数据。
当在传统的本地安装软件的使用环境中谈论可配置性时,直接修改部分代码进行二次开发来适应当前用户的需求是比较常见的解决方案。但在基于SaaS模式的使用环境中,如果业务应用的任何部分被修改了,则这一修改将可能同时影响所有当前客户的使用环境。因此,一般而言在SaaS模式的使用环境中,客户使用元数据(Metadata)来为其终端用户配置系统的界面以及相关的交互行为。由此可见,设计SaaS系统的一大挑战就是要确保配置软件应用的过程本身是简单且易于为客户所直接理解并使用的,而且应该无需考虑付出任何额外的开发和维护成本。
上述三大要素固然是构建一个成熟的单实例多用户的SaaS系统的关键因素,但设计一个成熟的系统并不是做一个简单的加法。开发一个仅符合上述一条或二条要素但同时满足所有客户商业需求的SaaS系统一样具有很大的实用价值。不过这种情况应该仅仅在如下前提下成立:即如果要强行使该SaaS系统符合所有上述要素的话就会无法做到成本最优(Cost-Effective)。
二。SaaS系统的成熟度模型
一般来说按照目前业界通行标准,基于SaaS模式的系统可以按照其设计成熟度分成以下四种程度,其中每一级与前一级的区别则在于是否引入了前述三大要素中的部分或全部。
第一级 定制
第一级成熟度类似于上世纪90年代初的应用服务提供商(Application Service Provider)所采用的软件交付模式。在符合这一级成熟度的系统中,每个客户拥有一个为其定制的应用实例,这一单独的实例运行在SaaS服务提供商的硬件之上。从系统架构而言,这一级别的SaaS系统和传统的本地安装软件非常相似,同一客户的不同终端用户使用客户端软件连接同一个应用实例,但这一客户实例和服务提供商同时运行的其它客户的应用实例相比是完全独立的。
因此传统的服务器-客户端的应用可以在花费少量开发资源和无需重新设计整个架构的前提被改造成符合这一级别的SaaS模式的系统。虽然相比起其它更为成熟的SaaS模式的系统,这一类型的系统所能给SaaS服务提供商带来的收益有限,但它确实可以让SaaS服务提供商通过整合服务器硬件和管理来降低成本,因此目前有不少国内的软件厂商就尝试应用这种手段将其已有的传统系统改造为相应的SaaS系统。
第二级 可配置
在符合第二级成熟度的系统中,每个客户还是各自拥有一个单独的应用实例,但不同之处在于第一级中的用户实例是根据每个客户的需求单独定制的,而在这里,每个客户使用相同的代码。SaaS服务提供商通过详细的具体配置选项来允许客户改变自身应用的外观和系统行为。尽管如此,不同的应用实例之间还是保持完全独立运行。
将所有客户的应用实例集中于同一代码库之下极大的减少了对于SaaS服务提供商的服务需求,因为此时对系统代码任何微小的改变都会立刻影响所有的当前客户,这下也就可以节省为每个客户的应用实例单独升级或修改的成本。但是相比起第一级的成熟度模型,如果试图将一个传统的服务器-客户端的应用改造成符合第二级成熟度的SaaS系统,将需要花费更多的重新架构和开发的成本。
最后,同第一级模型有一处类似的是,符合第二级成熟度模型的系统一样需要SaaS服务提供商准备足够的硬件和存储空间来支持潜在的大量的同时运行的应用实例。
第三级 可配置,高效的多用户支持
在第三级的成熟度模型中,服务提供商通过运行一个应用实例来为所有的客户服务,同时通过可配置的元数据来给每一个客户提供不同的用户体验和功能。可配置的权限控制和安全策略则确保了每一个客户的数据被单独存放且与其它客户的数据相隔离。因此,从最终用户的角度出发,他们将感受不到所使用的应用实例也在同一时间为其他客户所共享。
这种方式解决了这样一个问题,那就是随着SaaS 服务供应商业务的发展和客户的增多,只能通过提供更多的服务器资源来运行更多应用实例,现在SaaS 服务供应商可以用同样数量的服务器资源为更多的客户服务,从而比起前两级成熟度模型的系统,更有效的利用了硬件资源,降低了运营成本。
但这一架构的不利之处在于无法灵活的提升系统性能,除非使用数据分区技术来提高数据库的性能,一般来说SaaS 服务供应商将只能通过把系统转移到更为强大的服务器上来提升性能。
第四级 可配置,高效的多用户支持 可扩展
在这一级也就是最后一级的成熟度模型中,SaaS服务供应商将通过运行一个负载均衡的具备权限验证功能的平台来为众多的客户同时服务,每个客户的业务数据将被单独存放,同时提供使用可配置的元数据来为每一个客户提供其自身需要的独一无二的用户体验。符合这样一个成熟度的SaaS系统将可以轻易支持一个相当大的客户数目,这是因为在其后台运行的服务和业务实例可以在不修改系统架构的基础上随着需求动态的增加和减少,任何的系统变动和修复可以轻而易举的同时作用于数以千计的客户环境中,就如同只为单一客户服务时同样简便。
三。选择适合的成熟度等级
综上所述,符合最高的第四级的成熟度模型的SaaS系统似乎永远是SaaS系统设计的终极目标,但实践证明这并非永远正确。一般来说,将SaaS系统的成熟度看成一个两头具同等重要性的杠杆也许更为恰当,杠杆的一头是独立(Isolated)的数据和代码,而另一头则是共享(Shared)的数据和代码。
选择何种程度的成熟度模型取决于SaaS服务供应商所支持的商业模式、系统模型和运营需求,以及其它基于客户业务需求的一些考虑,而且以上各种因素之间往往还会有微妙的联系:
商业模式 – 独立的数据模式是否符合财务考量。为了获得经济和管理上的好处而采取数据共享往往意味着SaaS服务供应商可以因此节约相当一部分的管理成本。但在有些情况下,客户可能会对此有不同的需求,比如说,尽管SaaS服务供应商可以保证客户的机密数据即使与其它客户的数据存放在一个数据库内但绝对不会外泄,客户仍然可能受强有力的法律或文化上的限制,从而抵制或干脆拒绝使用任何基于多个客户使用共享服务来访问同一个应用结构的SaaS软件服务。当然从商业模式的角度来看更重要的是,一旦计划运营基于这一商业模式的SaaS系统,SaaS服务供应商必须证明该应用如何能在当前采用的成熟度模型基础上保证业务顺利发展且实现盈利。