首页  ·  知识 ·  云计算
基于SaaS模式在线软件系统开发方案的研究
袁志俊 夏红霞   万方数据    编辑:德仔   图片来源:网络
引 言 客户关系管理(customer relationship
 引 言

    客户关系管理(customer relationship management,CRM),是企业信息化中非常重要的应用,但在传统的软件开发模式下,无论是企业用户还是软件供应商,CRM的应用都存在很多的问题。高成本,高门槛和高风险使很多中小型企业对CRM望而却步,也使很多大型企业很难得到预期的收效。另一方面,CRM软件供应商重复性地为各个企业开发相似的系统,软件和硬件投资的同质化非常严重,很难有效降低开发成本和提高软件创新性,并且传统的软件推广模式也不利于供应商推广CRM系统。与CRM类似,如ERP,GroupWare等企业信息化应用也存在类似问题。在这样不利于企业信息化发展的局面下,软件即为模式SaaS模式应运而生,在目前现有的软件和硬件条件下,它能很好解决以上问题。国内外已有基于SaaS模式成功地通过互联网提供企业IT应用的例子,如SalesForce、阿里软件等。

1 软件即为服务SaaS

    1.1 SaaS的特点和优势


    软件即为服务SaaS(software as a service),是一种新兴的软件模式,与传统模式相比,最明显的特点是在此模式下,软件以服务的形式开放在互联网上,用户无需购买软件和部署软件所需的相应的软硬件资源,只需浏览器就町以随时随地使用软件上所有服务功能。它的优势体现在:相对于企业用户而言,SaaS让用户以低成本,低门槛和低风险的方式使用软件服务;相对于软件供应商而言,SaaS可以借助于互联网的传播能力高效,快速地推广软件服务,并且可以避免重复工作,使软件供应商专注于提高服务质量,提高核心竞争力。

    1.2 软件开发在SaaS模式下需要解决的关键问题

    (1)面向服务,基于业务。传统的软件大多是基于IT技术来构建,从IT技术的角度去满足业务的需求。但在SaaS模式下,供应商需要更为敏捷地推出服务满足用户的业务需求,这就要求在软件构架方面要以服务为粒度,以面向服务的方式构建软件。

    (2)高安全性。传统的CRM等企业应用都是限制在企业内部,而SaaS会把应用暴露在互联网上,因此所面临的安全威胁将远远高于传统模式,并且要让用户放心地把关键数据交给供应商管理,必须在安全方面给予足够地重视。数据管理的责权转变使得安全性在软件构架中优先级更高。

    (3)数据隔离。传统的CRM针对的是单个企业,程序和数据库设计都是限制在单个企业范围内,而SaaS模式系统要面向多个企业。这要求程序和数据库设计要建立在多用户模型之上,使企业之间相互独立和隔离。

2 SaaS系统中关键问题的解决方案

    SaaS模式下系统设计和开发成败的关键点在于面向服务的系统架构,安全架构和多企业数据隔离设计。下面以SaaS模式下CRM系统为例,提出针对以上关键问题的解决方案。

    2.1 面向服务架构

    SOA(service oriented architecture),即面向服务架构,是以服务为粒度,基于业务来构建软件系统。本文将以SOA为基础构建S矩s系统架构,其原因有以下几点:①以业务为驱动,更敏捷地满足用户的业务需求。②提高系统复用性,更快速,代价更低地推出新服务。③更好把服务与用户自有系统相整合。④有利于把本系统的服务与其他s缸s供应商的服务进行整合。

    2.1.1 SOA实施模式

    实施一个SOA项目有3种模式:Top-down、Bottom-up和Meet in the middle。Top-down筒而言之就是从业务模型入手,把业务过程分解成服务组件,然后再通过具体的实现技术来构建各个服务模块。Bottom-up与此正好相反,是从已存在的技术模块入手,把技术细节包装成服务模块,然后把这些服务模块组装成业务过程。Meet in the middle融合了前两种模式,分别从业务过程和IT技术入手,最后把业务过程和各个服务模块组装在一起。本系统的实施要求完全以业务为驱动,并且也不存在任何残留系统,所以用Top-down模式来实施SOA。

    2.1.2 SOA实施流程概述

    Top-down模式决定了整个实施过程要以从业务过程到具体实现技术为路线。具体可以分为4个阶段:业务建模,构建组装,部署实施和管理监控。如图1所示。
 
图1 SOA实施周期


    (1)业务建模:收集和分析业务需求,建模、模拟和优化业务过程。
    (2)构建组装:根据业务模型,设计服务组件、组装可重用的服务组件形成业务过程。
    (3)部署实施:把组装好的业务过程部署到集成环境中,并使用部署环境的专有服务对各个业务过程进行管理和支持。
    (4)管理监控:分别从业务和IT的角度对部署好的系统以及相关资源进行管理和监控,并把监控所得的各项信息反馈给业务模型层面,使其更好地优化业务模型,进行下一轮SOA实施周期的迭代。

    2.1.3 SOA实施的具体步骤

    本文将以CRM系统中的商机管理模块为例,阐述SOA实施的具体步骤。在具体的实施开发中需要相应的开发工具进行支持,在本系统开发中使用了IBM的SOA产品线,其中包括业务建模工具WBM(webshpere bussiness、modeler)、集成开发工具WID(webshpere integration developer)、程序开发工具RAD(rational application developer)、部署环境WAS(webshpere application server)和、WPS(websphere process server)。但SOA是标准规范而不是具体的实现技术,所以本文的解决方案不依赖具体的SOA厂商,在其他SOA厂商提供的平台上也能按照相同的思想和类似的步骤进行实施。

    (1)业务建模阶段。此阶段主要由业务人员参与,通过WBM完成以下工作:①分析有关商机管理的业务需求,如创建、修改、删除和查找商机信息,对商机进行结案总结等。在WBM里,创建Process,用task表示以上所有业务需求。②确定业务所涉及的角色,如销售人员、部门领导和公司领导,并确定他们之间的关系,如公司领导可以管理部门领导和销售人员,部门领导可以管理本部门的销售人员,销售人员管理属于自己的商机信息。在WBM里,在Resources里分别创建角色销售人员、部门领导和公司领导,并在Organizations里配置角色之间组织结构。③确定业务实体,如商机和人员。在WBM里,分别创建表示商机和入员的Bussiness Item。并配置其相关属性。④业务建模。根据以上创建的各项业务资源,创建业务流程。⑤模拟和分析。配置所构建的业务过程涉及到的成本和产出,并对其进行模拟试验,最后得到详细和科学的分析报告,供业务人员分析,帮助其对业务过程进行优化。⑥导出业务模型,供以下实施阶段使用。

    (2)构建组装阶段。此阶段主要由架构师和软件开发人员参与,通过、WID和RAD完成以下工作Ⅲ:①构建总体流程和实现框架。通过上一阶段得到了业务模型,用IT的手段来实现具体的业务流程和规则。在WID里,导入上一阶段得到的业务模型,得到了符合业务需求的总体框架。②设计服务组件。面向服务组件的架构SCA(service component architecture)是一种全新的、跟语言无关的编程模型,它提供了一种统一的调用方式,从而使得客户可以把不同的组件类型,比如POJO、EJB、流程组件和人工交互组件等,通过一种标准的接口来封装和调用。SCA是让SOA得以实施的有效手段。在这一阶段,用SCA的规范来设计各个服务组件。在设计服务组件的过程中,需要把握好服务接口的粒度,尽可能地使服务组件得以重用。如在商机管理的模块中,可以设计一个专门服务商机管理流程的服务组件,在服务组件里构建各项操作,如创建、修改、删除和查找商机信息等等。在具体的实施中,需要、WID和RAD配合使用,在WID里定义服务接口和服务组件所处的上下文,在RAD里去实现服务组件的各个接口。③整合业务流程和服务组件。业务流程和服务组件设计好之后,需要把各个部分整合起来。业务流程是一个完整的事务单元,它需要多个服务组件的支持,通过服务组件的接口把服务组件和流程整合在一起,如果流程所需要的服务接口和服务组件提供的接口不一致,可以通过接口映射的手段,把异构的接口对接起来。

    (3)部署实施阶段和管理监控阶段。这两个阶段主要是把所构建的业务流程和服务组件部署到实际运行环境,并对其进行监控和管理,主要依托的是SOA部署和监控工具的支持,本系统用到部署环境WAS和WPS,监控工具WebSphere Business Monitor。因为涉及设计和开发的内容不多,所以在这里省略相关内容的阐述,这些内容可以通过相关产品文档得到。
 2.2 安全架构

    在SaaS模式下,安全设计是整个程序设计成败的关键,并且相比于传统的企业级开发,难度要大。因为如果安全上存在隐患,用户是不敢把如客户信息等关键数据放到SaaS供应商这儿来,并且这样一个对安全要求很高的系统是开放在互联网上,面临的安全上的威胁比局域网内的要大很多。总结起来,威胁主要来自以下3个方面:

    (1)数据传输链路上的安全威胁。用户的浏览器通过互联网连接到远程服务器,数据上的交换极其容易被他人截获,甚至是在SaaS供应商内部,DMZ(demilitarized zone)与保护区域内的数据交换也存在被他人截获的隐患。

    (2)业务逻辑上用户认证与授权的安全威胁。SaaS为多个的企业提供软件服务,因此存在不同企业间数据窃取的隐患,甚至在一个企业内部,也存在越权操作的安全隐患。

    (3)数据储存上的安全威胁。成百上千的企业把关键数据存放在SaaS供应商这儿,极有可能造成数据丢失和数据被窃取的严重后果。

    针对以上的安全隐患,本系统在数据传输,认证与授权和数据储存3个层面做安全上的设计。总架构如图2所示。
 

图2 安全设计架构


    (1)数据传输安全设计。本系统采用SSL(secure socket layer)保护数据传输上安全。具体设计方案是在服务端生成密钥库和数字证书,当客户端通过HTTPS协议向服务端发送请求时,服务端向客户端发送数字证书和公钥,客户端通过已安装的公共CA证书验证服务器的可信度。客户端通过服务端发来的公钥把自己的私钥加密传输给服务端,服务端用自己的私钥解密得到客户端的私钥,在建立连接以后的数据传输中用这个对称的私钥进行加密保护。这样设计的目的在于在保证可信度和安全的前提下,尽量减轻安全因素对系统性能上的影响。在服务端内部,也是通过SSL来保护DMZ与非DMZ之间数据传输的安全性。

    (2)认证与授权安全设计。对系统资源和业务流程的安全保障主要是通过对用户认证与授权来完成。为了提高系统整合程度和用户认证效率,本系统采用LDAP(lightweight directory access protocol)来统一管理用户认证信息。认证服务器是系统的前端拦截器,通过访问LDAP服务器,对客户端的访问进行认证,并把用户的认证信息和用户的实际请求向后方服务器传递。安全策略服务器会根据用户认证信息和对资源的请求向授权服务器提取相应的授权信息,对整个集群环境下Web层和应用服务层里的资源加以安全监管。

    (3)数据存储安全设计。企业用户的数据在本系统中主要存储在数据库中,数据存储安全设计主要体现在以下3个方面:①数据库服务器与应用服务器相分离。通过加装防火墙等形式对数据库实施更进一步安全保障。②数据库服务器实现集群。在保证高可访问性和负载的同时,也保证了在数据遭到破坏的情况下,可通过备份信息来得以恢复。③在数据持久化层,实现对关键数据的加密存储。有些数据属于关键数据。比如客户名称,电话号码等,这些信息不能已明文的形式存放在数据库里,而应在存进数据库之前实施加密,提取数据时实施解密,这样做的好处是,当有他人通过非法手段得到数据库的情况下,通过加密的方式使关键数据得以保护。本系统采用JCE(Java cryptographic extensions)来对关键数据实施加密和解密。

    2.3 多企业数据隔离设计

    多企业数据架构是多个企业数据共存,并共享同一应用系统的数据架构,这是SaaS软件开发与传统软件开发最大的不同点之一。在传统的CRM系统开发中,是对单个企业进行定制开发,所有数据专属于单个企业。而在SaaS模式下,所有应用模块和服务是为多个企业所用,每个企业都有属于自己的一套数据,那么在同一应用环境下,如何管理多套互相隔离的企业数据,如何保证数据安全和高可用性,是多企业数据架构要解决的核心问题。一般的设计方案分为完全隔离型,完全共享型和数据库共享Schema隔离型。

    (1)完全隔离型,是指每个企业独享各自数据库,无论在逻辑还是物理上都把不同企业的数据隔离开来,并在应用程序里根据企业的标识动态加载数据库。这种方案的优点在于设计难度低,结构简单,数据易于管理。而缺点是在性能上容易造成系统扩展的瓶颈。

    (2)完全共享型,是指所有企业数据共享于同一数据库,通过在每个表里添增企业标识来区分不同企业的数据。此方案的优点在于数据库的利用率很高,硬件成本较低。而缺点在于数据隔离性很低,多个企业数据混在同一表中,会有很大的安全隐患,也不容易对某个企业数据进行备份和恢复。另外,容易造成单表的数据量过大,性能上会有很大影响。

    (3)数据库共享Schema隔离型,是指所有企业数据共享于同一数据库,但不同企业的数据通过不同的Schema相区分。此方案的优缺点折中于前两种方案,主要问题在于会造成单个数据库里的表过多,需要对数据库进行分区,实现难度较大。

    综合以上3种方案的优缺点,本系统中采用的是较为综合的方案。具体上是集成使用共享型和隔离型方案,根据企业用户某些属性(如:企业等级,数据规模等)选择相应数据库类型,并在业务逻辑层和数据库之间增加持久化中间件来屏蔽这一过程。结构如图3所示。
 

图3 多企业数据隔离设计方案


    通过对中间件的设计,一方面可以让业务逻辑层用统一的方式对待来自数据库的数据;另一方面可以使企业数据隔离方案更为灵活,比如可以对安全要求较低数据量不大的企业使用共享数据库方案,而对安全要求较高投入较大的企业使用独享数据库方案。中间件的主要设计思路是对每一次数据库连接进行动态加载,根据企业用户的标识动态生成相应的数据库连接,并且通过ORM(object relational mapping)模式在持久化层里屏蔽数据存取细节。

3 结束语

    本文以基于SaaS模式的CRM系统为实践基础,对实施SaaS过程中面向服务的系统架构,安全架构和多企业数据隔离设计等关键性问题,提出了可行的解决方案。实践己证明,按照本文提出的解决方案构建的CRM系统能够通过重用服务的方式达到业务敏捷性,能够让企业用户安全地使用系统功能,能够高效地支持多个企业相互独立地使用系统,值得广大构建SaaS软件的架构师和开发人员借鉴

本文作者:袁志俊 夏红霞 来源: 万方数据
CIO之家 www.ciozj.com 微信公众号:imciow
    >>频道首页  >>网站首页   纠错  >>投诉
版权声明:CIO之家尊重行业规范,每篇文章都注明有明确的作者和来源;CIO之家的原创文章,请转载时务必注明文章作者和来源;
延伸阅读
也许感兴趣的
我们推荐的
主题最新
看看其它的