saas公共服务平台架构及实现

saas公共服务平台架构及实现
saas公共服务平台架构及实现

1. SaaS介绍

1.1 SaaS概念

SaaS是Software-as-a-service(软件即服务)简称,是随着互联网技术发展和应用软件成熟,而在21世纪开始兴起一种完全创新软件应用模式。它是一种通过Internet提供软件模式,厂商将应用软件统一部署在自己服务器上,客户可以根据自己实际需求,通过互联网向厂商定购所需应用软件服务,按定购服务多少和时间长短向厂商支付费用,并通过互联网获得厂商提供服务。

用户不用再购买软件,而改用向提供商租用基于Web软件,来管理企业经营活动,且无需对软件进行维护,服务提供商会全权管理和维护软件,软件厂商在向客户提供互联网应用同时,也提供软件离线操作和本地数据存储,让用户随时随地都可以使用其定购软件和服务。对于许多小型企业来说,SaaS是采用先进技术最好途径,它消除了企业购买、构建和维护基础设施和应用程序需要。

在这种模式下,客户不再像传统模式那样花费大量投资用于硬件、软件、人员,而只需要支出一定租赁服务费用,通过互联网便可以享受到相应硬件、软件和维护服务,享有软件使用权和不断升级,这是网络应用最具效益营运模式。

1.2 SaaS 专用名词

1.多重租赁(Multi-tenancy)

SaaS"多重租赁"概念就是,多个公司将其数据和业务流程托管存放在SaaS服务商同一服务器组上,相当于服务商将一套在线软件同时出租给多个公司,每个公司只能看到自己数据,由服务商来维护这些数据和软件。也就是说,多个公司登录到同一网站,但登录后看到界面和数据,不同公司大不相同。

2.单点登录(Single sign-on)

这个概念应用在SaaS上,就是指把多个不同在线应用软件服务搭建成为一种新型整合服务。用户通常只需要登录一次就可以使用集成好应用软件组合。

3.基础架构平台(Platform infrastructure)

有时候SaaS拥护者希望出现一种基础架构平台来推动SaaS更好地发展。

这是因为首先得有一个平台来支撑SaaS软件应用程序运行,如今最著名是国外Salesforce 公司APP Exchange平台,国内800CRM800APP Native平台与Salesforce兼容。

4. SaaS(软件作为服务)

厉害SaaS销售代表直接用SaaS就能解决你所有管理软件问题。比起其它软件,SaaS软件更便宜,灵活性更强,能省掉更多麻烦。

5 SaaS成熟度模型(SaaS Maturity Model)

(1)Level1:定制开发

这是最初级成熟度模型,其定义为Ad Hoc/Custom,即特定/定制,对于最初级成熟度模

型,技术架构上跟传统项目型软件开发或者软件外包没什么区别,按照客户需求来定制一个版本,每个客户软件都有一份独立代码。不同客户软件之间只可以共享和重用少量可重用组件,库以及开发人员经验。最初级SaaS应用成熟度模型与传统模式最大差别在于商业模式,即软硬件以及相应维护职责由SaaS服务商负责,而软件使用者只需按照时间,用户数,空间等逐步支付软件租赁使用费用即可。

(2)Level2:可配置

第二级成熟度模型相对于最初级成熟度模型,增加了可配置性,可以通过不同配置来满足不同客户需求,而不需要为每个客户进行特定定制,以降低定制开发成本。但在第二级成熟度模型中,软件部署架构没有发生太大变化,依然是为每个客户独立部署一个运行实例。只是每个运行实例运行是同一个代码,通过配置不同来满足不同客户个性化需求。

(3)Level3:高性能多租户架构

在应用架构上,第一级和第二级成熟度模型与传统软件没有多大差别,只是在商业模式上符合SaaS定义。多租户单实例应用架构才是通常真正意义上SaaS应用架构,即Multi-Tenant架构。多租户单实例应用架构可以有效地降低SaaS应用硬件及运行维护成本,最大化地发挥SaaS应用规模效应。要实现Multi-Tenant架构关键是通过一定策略来保证不同租户间数据隔离,确保不同租户既能共享同一个应用运行实例,又能为用户提供独立应用体验和数据空间。

(4)Level4:可伸缩性多租户架构

在实现了多租户但单实例应用架构之后,随着租户数量逐渐增加,集中式数据库性能就将成为整个SaaS应用性能瓶颈。因此,在用户数大量增加情况下,无须更改应用架构,而仅需简单增加硬件设备数量,就可以支持应用规模增长。不管用户多少,都能像单用户一样方便地实施应用修改。这就是第四级也是最高级别SaaS成熟度模型所要致力解决问题。5.独立软件开发者(ISV)

开发软件个人或者公司,ISV通过平台来出售自己软件

6.软件入口

ISV出售软件时,提供给用户使用接口,即ISV开发软件进入网址。

7.创建子版本

ISV根据软件功能,版软件分成几个不同子版本,用户可以根据所需运用购买不同版本,其工作有isv完成

8.租户

购买了软件个人或者公司。

9.注册序列号

isv注册软件时获得序列号,是isv软件唯一不可变更序列号,可不计入数据库,单必须保存在isv软件配置文件中。

10.免登陆

由平台跳到isv软件时,不需进行再登陆,isv软件根据传过来用户信息,直接初始化用户信息。

11.Token

身份验证令牌,在saas平台跳到isv软件时使用,用于验证跳转用户合法性。Token动态生成,为了安全,其生命长度只有10-20秒。

12免登入接口

由平台提供一组验证程序,修改其中注册序列号后绑定到isv软件,以实现用户免登入。13.参与软件

不是自己购买开发软件,而是由别人购买并添加,其所有软件显示为参与软件。

14.AssP

软件互联平台,在这既SaaS平台

2.SaaS平台功能

2.1软件注册

2.1.1 业务流程图

图1 软件注册流程图

2.1.2业务详细说明

用户先注册一个平台帐号,登录后,点击我软件(即开发软件)进入,后点击

注册软件,填写相关信息,提交成功后,会产生一个软件注册序列号,此序列号为核对客户软件凭证。最后还需通过平台管理员审核,该软件才会出现在软件商城中,才可供平台用户购买。

2.1.3功能描述

注册软件主要是用于给想在该平台上出售软件第三方客户(软件提供商)提供软件入口,同时填写软件相关详细信息,图片,类别等。

注意:注册软件时需要客户填写软件入口,即客户所提供软件发布网址,当平台上客户购买了软件后,点击进入使用时,将通过该软件入口进入软件。

2.1.4用例图

图2软件审核用例图

图3注册软件用例图

2.2.1业务流程图

图4软件编辑流程图

2.2.2业务详细说明

软件注册成功并通过审核后,即可在我软件(开发软件)中查看,编辑或删除该软件信息,同时还可为软件进行版本分类,可创建,查看,删除子版本。

2.2.3功能描述

在我软件中可查看,编辑,删除该软件信息,同时还可为软件进行版本分类,可创建,查看,删除子版本。

2.2.4用例图

图5软件编辑用例图

2.3.1业务流程图

图6软件购买流程图

2.3.2业务详细说明

用户在软件商城可查看所有平台已通过审核软件,若用户已登录并未购买过该软件,则可点击购买进行购买软件;点击查看详细信息,可查看软件详细信息,点击购买可进行购买(前提是用户已登录并未购买过该软件),若此用户已购买过该软件则会提示已购买并跳到购买软件页面,用户可点击进入使用,若此用户未登录,则提示请先注册并登录。

添加用户:

若租户购买授权个数大于1,则可添加其他用户使用软件,添加用户有两种方式:

1.若用户已存在,即添加已在平台上注册用户,则可通过注册时填写电子邮件地

址进行查找,并添加,添加成功后,对方即可在参与软件中使用该软件。

2.若用户不存在,即添加还未在平台上注册用户,则可通过创建新用户来进行添

加,并把创建信息告知对方,对方即可在参与软件中使用该软件。

若不在想让某用户使用该软件,可通过删除操作来删除。

续费:

租户可根据仅追加使用授权个数,仅追加购买授权期限或同时追加个数和权限来进行续费

2.3.3功能描述

软件商城显示所有注册了并通过审核软件,平台上已注册并登录用户充值后可选择相应软件根据授权个数和授权时间进行购买。购买成功后即可在购买软件中查看并使用,同时还可进行续费,添加用户等操作。

添加用户用于租户添加自己所购买软件使用人员,也可根据需要进行删除。

注意:授权个数即可使用该软件人数,客户购买了软件后即成为租户,租户可通过添加用户操作添加用户。

授权时间即该软件可使用时间,若租户想增加授权个数或增加授权人数,即可通过续费来完成。

2.3.4用例图

图7软件购买用例图

2.4参与软件

2.4.1业务流程图

无业务流程图。

2.4.2业务详细说明

通过软件购买中添加用户可添加用户,成功后,用户点击参加软件中相应软件进入使用,可使用包括自己购买和通过其他租户添加进去使用软件

2.4.3功能描述

参加软件中显示用户可使用软件列表,包括自己购买和通过其他租户添加进去使用软件

2.4.4用例图

图8参与软件用例图

2.5账户与个人信息

2.5.1业务流程图

无业务流程图。

2.5.2业务详细说明

用户可根据需要查看余额,进行充值,查看个人信息,修改密码等

2.5.3功能描述

帐户与个人信息可查看用户余额,可进行充值,查看个人信息,修改密码等操作2.5.4用例图

图9帐户与个人信息用例图

02.6 SaaS平台免登陆接口

2.6.1业务流程图

图1-6-1 免登陆接口处理流程

2.6.2业务详细说明

用户请求访问购买SaaS软件:

用户请求使用用户购买SaaS软件时,平台会将用户ID(User_ID), 软件ID(Application_ID), 购买此软件租户ID(Renter_ID), 防止重传Token 这4个参数传值提供软件提供商提供网址。同时将此时生成Token序列和时间与访问用户id,软件id一起保存在数据库里,Token有效时间理应当设为10秒到20秒左右。

SaaS软件访问CheckLogin.aspx 调用免登陆接口:

SaaS软件在注册时候会获得一个独有软件序列号,软件提供商在软件开始运行代码中加入请求,访问平台判断此用户和本软件是否是合法软件和用户,SaaS软件应该将软件序列号,时间戳(系统当前时间),请求接口名,与传送过来四个值用md5加密生成一个新sipsign值,再把sipsign,时间戳,请求接口名和传送过来四个值传给平台CheckLogin.aspx 页面请求调用免登陆接口。(如图1-6-2 和图1-6-3)

图1-6-2 sipsign验证生成

图1-6-3 请求接口URL

判断请求接口名称:

请求接口理应当分为很多类型,所以在处理页面上应当做分类处理,当然目前只实现免登陆接口,但为了以后扩展这种业务流程上判断不能少(接口名称命名规则建议为:公司名.模块名.功能名,这样可以用split做分类操作)。如果不存在此名称接口,则返回一个错误信息。

获取请求数据:

根据接口类型不同,获取不同名称数据参数。如果获取某一个数据参数为空,则返回一个错误信息。

判断是否重传:

根据传送过来Token序列号和用户id,从数据库读出相应Token记录,并比较Token 中时间与平台上当前时间是否超出了Token防重传时间限制。如果超出了防重传时间限制,则返回一个错误信息。如果根据Token从数据库读不出任何数据,也返回一个错误信息。

Token存取流程如图1-6-4:

图1-6-4 Token存取流程

判断参数合法性:

根据传送过来参数,和平台从数据库读出相应软件序列号重新做一次sipsign运算,再将运算结果和SaaS软件传送过来值做比较,如果相同则合法,如果不相同则返回一个错误信息。

处理接口调用请求,返回结果数值:

通过一系列合法判断,最后执行接口处理请求,不同接口处理方式不同,需要返回结果由’&’特殊字符拼接成一个字符串返回给SaaS软件(也可以返回一个xml),如果不需要返回结果,可以返回一个成功信息。(这部分还需要对安全性进行考虑)

2.6.3功能描述

接口实现主要是针对SaaS软件与SaaS平台之间关联矛盾。因为用户数据与买卖交易数据都存放在SaaS平台之中。当SaaS软件需要获得买卖此软件某些合法用户数据时候就需要和平台进行一定交互,此时候就要通过接口来实现此种交互。

目前SaaS平台上只实现了免登陆接口,免登陆接口实现用户从平台到第三方软件链接不需要二次登陆,只需要在平台上购买了此软件,则可以从平台上直接登陆第三方软件使用。

接口种类可以有很多种,如果要扩展话还可能要有获取购买此软件用户授权接口,查询购买此软件用户信息接口,以及其他等等。

2.6.4用例图

接口模块不存在用例图。

2.7 SaaS软件用户初始化

2.7.1业务流程图

图1-7-1 SaaS软件初始化流程

2.7.2业务详细说明

用户在平台登陆:

基于SaaS平台SaaS软件用户都是在平台上实现注册登陆,这样平台上管理多个SaaS软件时候就可以一次登陆免去多个二次登陆麻烦。用户在平台通过单点登陆(SSO)链接到SaaS软件上。

选择购买软件进入:

用户可以拥有多个软件,不同软件有不同软件入口地址。

SaaS软件调用免登陆接口:

所有软件一开始都应当判断进入用户合法性。

判断用户所属租户是否存在→初始化租户信息:

先查看本地数据库中是否存在与此租户是否存在,如果不存在则需要初始化租户及相关数据,所谓初始化租户及相关数据不止是将租户信息加入到本地数据库,而且要初始化SaaS软件默认配置。譬如说SaaS软件本身具有默认几个角色,但由于SaaS软件特性是由多个不同租户使用,不同租户定义角色有所不同,但又具有相同系统默认角色,在这种情况下就需要在初始化租户时候初始化SaaS软件默认配置,将系统本身默认角色与此租户关联起来。还有一点要注意是,SaaS软件本地数据库里租户id就是用户在平台上用户id,通过这样才能判断平台上用户是否已经在软件本地里初始化过。

判断用户是否存在→初始化用户信息:

如果本地数据库没有此用户信息,且此用户又是合法,则将此用户信息存放在数据库里。如果SaaS软件系统功能上是分角色权限,则需要把给此用户赋予一个最低权限,再由系统管理员(即是租户)提升此用户权限。

载入登陆用户权限,信息:

当一切判断结束后,如果用户合法且系统初始化信息完毕则用户获得一个具有他在此系统权限和信息Session。

2.7.3功能描述

SaaS软件初始化过程也即是为了解决平台与SaaS软件之间关联矛盾问题。但不同是此部分必须要由软件提供者完成,也就是软件提供者需要在用户登陆时候就需要判断初始化数据(尽管从流程上看很繁琐,但必不可少)。这个初始化过程可以解决不同租户在软件中配置不同且又都保留系统默认配置问题。

在初始化设计我们采用是一对一设计方式:

图1-7-2 初始化方式

这种初始化方式即是每个用户就需要经历初始化判断过程,且只有判断后才能把用户数据添加到本地数据库里。即是一个租户买了软件后添加了用户,租户可以不先登陆,用户可以先登陆(因为所有用户都会触发初始化过程),然而只有登陆过用户才能出现在SaaS软件本地数据库中。这种初始化过程是采用分别初始化,一一对应方式。(至于基于组织结构方式进行初始化方式,我们在改进功能点与方案中再进行描述讨论)

2.7.4用例图

此模块无用例图。

3.SaaS平台需改进功能点与方案

3.1 基于组织机构软件用户管理方式

3.1.1 原功能描述

SaaS平台设计是基于用户软件使用方式,也就是说每个用户在平台上都是平级,当用户购买了软件之后他就成了这个软件一个特定租户,当用户想要其他用户使用自己购买软件时候,可以把这个软件使用授权赋予其他平台用户,至于具体权责划分就在软件中划分,当然租户可以收回赋予软件使用授权。这样方式是以个体用户为中心,采用平级处理来实现软件用户管理。(这方面还需要对恶意注册进行考虑改进)

3.1.2 改进后功能描述

根据新需求,SaaS平台追加一种基于组织机构软件用户管理方式。也就是说一个组织机构购买了一个软件后可以把软件授权赋予在所属组织机构用户上。这样实现方式可以让软件用户管理更简单,组织机构当然也可以回收某个用户使用权限,并赋予某个用户多个软件使用权限。同时,SaaS软件初始化过程中可以让组织中人员角色与SaaS软件中人员角色相对应(此功能很难实现)。

3.1.3 实现方案

如果要添加基于组织机构软件用户管理方式,则必须先要添加组织机构注册。也就是说注册类型分为个人用户注册和组织机构注册。至于组织机构里所属用户在理念上是可以由用户自由添加和管理(这种设计可以认为SaaS平台也具有SaaS软件部分特点),同时组织机构里用户也可以设置职位(职位在SaaS平台中并没有太大作用,但此类信息在组织机构初始化过程中可能要用到,详细信息在基于组织机构软件用户初始化方式中讨论说明)。那么一个基于组织机构软件用户管理方式可以看成是一个简单管理系统,如图3-1-1:

基于组织结构软件用户管理

图3-1-1 组织机构软件用户管理方式

既然组织机构里有属于此组织机构独有用户,那么出于安全与系统设计上考虑我们需要让组织机构中用户与普通个体用户分别独立开来,所以我们要加一张组织机构用户表来专门存储组织机构用户数据,同时必须要有一个数据字段来记录组织id,如图3-1-2:

图3-1-2 组织机构用户数据结构

用户数据信息里可以存放用户账号,密码,职位等其他用户信息。而组织机构用户是可以由组织机构随意添加,但组织机构用户只能有其所属组织机构管理(此部分存在一个恶意注册问题,可以考虑每个组织机构有个添加用户上限)。当然,组织机构用户与普通个体用户在平台上功能也应该有所不同,且他们涉及到关系业务逻辑也应当有所不同,具体设计想法如下:

1, 个体用户与组织机构间没有任何关系,即是和组织机构用户没有任何

关系,个体用户购买软件授权是不可以赋予组织机构用户。

2, 个体用户是一个平级概念,组织机构用户有上下级关系。

3, 个体用户可以通过购买软件成为一个租户,组织机构用户永远都是隶

属于组织机构这个租户下用户,同时也不具有购买软件功能。

4, 个体用户和组织机构用户登陆后所看到页面应当是不同。

5, 个体用户只能由平台系统管理员管理,而组织机构用户可以由组织

机构管理。

软件使用授权使用分配,其具体实现方式因为个体用户与组织机构分类而进行分类处

理,普通个体用户软件授权是赋予其他普通个体用户,这个个体用户可以由用户自己添加也可以查找现有个体用户账号,这种授权方式简单但操作起来麻烦又不便管理。至于组织机构授权方式,就是组织机构购买软件授权赋予组织机构下组织机构用户,这种选取方式更灵活,如图3-1-3 :

组织机构管理者

组织机构人员列表

用户1

用户2

用户三

[赋予软件A的授权]

[赋予软件B的授权]

[赋予软件A的授权]

[赋予软件B的授权]

图3-1-3 组织机构软件授权方式

为了更好管理组织下用户,组织机构也需要设定一个层级关系,如图:3-1-4

图3-1-4 组织机构人员层级关系

又由于组织机构用户是与组织机构与个体用户数据表是分开,所以组织机构管理员对组织机构用户添加,删除,修改都是可以,且不会影响平台用户操作和数据。

要实现这部分功能,要添加组织机构表,组织机构用户表,方便层次管理部门表。如果要自定义角色话还要添加个组织机构角色表。

3.2 基于组织机构软件用户初始化方式

3.2.1 原功能描述

原来平台上用户都是个体用户,且都是平级,初始化方式是采用分别初始化,一一对应方式。也就是说每个可以使用此软件用户只有第一次登陆到SaaS软件中去才能在SaaS软件中初始化用户数据。这种初始化方式每次初始化流量小,且每个用户登陆都能触发租户信息初始化,但不方便是需要每个用户登陆到软件中。

3.2.2 改进后功能描述

由于出现了基于组织结构软件用户管理方式,相应也应当增加基于组织机构初始化方式。基于组织机构初始化方式不同于普通个体用户初始化方式,其应当采用是组织机构管理员登陆一次性初始化这种方式。也就是说,当组织机构购买了此软件时候需要组织机构管理员登陆SaaS软件以便于初始化。而且这种触发方式只应当由组织机构管理员来触发实现,当组织机构管理员未触发此初始化事件时候,其他组织机构用户是无法访问SaaS软件。(这种初始化方式一次性要传送大量数据,如果发生网络冲突或中断话,要利用一些方法进行修正,当然也可以沿用原来初始化方式,不过这样就大大降低了组织机构灵活性)

3.2.3 实现方案

方式一

从最直接实现方式入手就是当组织机构管理员登陆软件时候传送大量数据,从而使得整个组织结构系统初始化。此方式如图3-2-1:

组织管理员

图3-2-1 组织机构初始化方式1

由于存在一个网络冲突原因,有可能在第一次初始化过程中失败。所以基于这部分考虑,在设计上我们在组织管理员初始化之后需要每个组织机构用户在登陆SaaS软件时候都需要通过少量数据交互与平台核对一下用户是否完成全部初始化完成,也就是说平台上组织机构用户数量与软件上组织机构用户数量进行核对比较,如果不符合话就应当调用平台上提供接口重新初始化。方式如图3-2-2:

组织机构用户

图3-2-2 组织机构防初始化失败方式

这种方式实现需要在平台添加一个重新初始化接口,同时SaaS软件初始化代码也要有所更改。还有一点非常重要,就是在SaaS软件中默认配置初始化一定要放在用户初始化前面(因为判断时候只是判断用户数量是否初始化完成)。

方式二(强烈不推荐)

这种方式是继续沿用原来初始化方式,也就是分别初始化,一一对应方式,此实现方式要考虑个体用户和组织机构所构成租户id重叠问题(因为SaaS软件本地数据库租户id是和平台上用户id相关联,现在又多了组织结构表和组织机构用户表,即是组织机构管理员也可以成为租户,这样id就可能相同)。我们可以让个体用户租户id用数字表示,而组织机构租户id用数字字母形成序列号表示。当然,如果采用这种方式话,SaaS软件id模式就可能不统一了。也可以在初始化过程中指明初始化类型是组织结构方式,从而用一种算法替换id 数值,这种方式也可以解决个体用户与组织机构用户id冲突问题。

总来说,这种实现方式不利于管理,使得组织结构方式软件用户管理灵活性大大下降,但实现起来比方式1更简单(更改代码量少)。

相关主题
相关文档
最新文档