经过上面的多租户数据隔离和租户管理改造,实现了核心能力的建设。
但是SaaS化系统还需要一些完善工作才可以真正投入应用,主要还包括以下三个方面。
7.1 应用的可配置项租户应用的可配置性,大致包括以下几个方面:
1. 数据可配置
租户总是有些额外需要的数据需要保存起来,这样就需要数据设计设计上提前考虑可配置实施方案。
例如 租户希望在用户基本信息基础上,额外存储客户来源、生日、信用级别等扩展信息。
解决这类问题,通常情况下,我们可以在数据库表中添加标准化字段或采用预留字段方式,进行额外信息的存储,但是这样会严重破坏数据表的结构,而且预留字段也不一定能够完全满足用户诉求。
所以可以考虑侵染性更小的 Key-Value 扩展表来实现。
2. 功能可配置
SaaS应用强调“按需使用,按需付费”,也就是多租户SaaS应用能够支持让租户有选择的购买自己所需的功能,不同租户可以同时使用不同的功能集合。
对于同一个CRM系统而言,教育、培训、服务等行业很少有订单管理的概念,相对更重视客户服务体验管理;而零售、分销、制造等行业会更重视产品管理和订单管理。却很少强调客户服务及行程管理。
3. 界面(UI)可配置
常见的界面可配置包括:系统菜单可配置和页面内容可配置,可以通过配置化管理来实现。
7.2 系统的伸缩性对于系统菜单的配置,需要注意:一个租户一套菜单;同级菜单之间还存在显示顺序的问题。
1. 应用服务器水平扩展
对于应用服务器的水平扩展能力支持,对于已经具备上云能力的企业而言,可以采用打包、上云、pod容器部署全流程;对于非云化能力支持的业务来说,也可以通过增加扩展服务器数量来实现服务水平的扩充。
2. 数据库层水平扩展
相对于应用服务器的水平扩展,数据库层的水平扩展更难实现。很多应用在伸缩性上最后面临的问题,最终都会演化为数据库性能成为最大的瓶颈。
数据库层的水平扩展主要方式:
- 数据库的读写分离
将数据库的写操作统一到一个主服务器,而读操作则分摊到多个从服务器上,通过读写分离,实现数据库访问压力的分担。
- 数据库的垂直切分
数据库成为瓶颈后需要扩展,最容易想到的就是数据库的垂直切分,即将集中式的数据库表按照功能模块划分到不同的数据库中。
比如商城类数据库按业务进行垂直拆分,可以按业务划分为用户库、订单库、其他库。
但是这样操作也会对原有数据操作存在一定影响:
1)存在的跨表数据连接情况,需要去除;
2)原本的事务处理变的复杂,会演变成跨数据库的事务。
- 数据库的水平切分
简单来说,我们可以将数据的水平切分理解为是按照数据行的切分,就是将一张表的数据分别存储到多个数据库中,所以一个库中只保存一部分数据。
数据库的水平切分,不同的租户数据被划分到不同的物理数据库上。
7.3 SaaS系统安全相对于垂直拆分,水平拆分不是将表的数据做分类,而是按照某个字段的某种规则来分散到多个库之中,每个表中包含一部分数据。
SaaS应用所有的交互和数据都需要通过网络进行,安全确实是一个备受关注的问题,需要从以下两个方面来阐述:应用安全和数据安全。
1、应用安全
应用安全,主要体现在身份认证、权限管理、日志管理以及应用监控等方面。
- 身份认证
身份认证实现对客户身份的识别和认证能力,是整个系统应用安全的基础。
通过严格的身份认证,防止非法用户使用或伪装成其他用户来使用系统。
- 权限管理
权限管理,是要实现用户使用系统功能的访问控制,保证有效用户正常使用系统,同时防止非法用户和无权限用户对系统功能的使用。
- 日志管理
日志记录是对用户在系统中的操作行为和操作数据进行记录,以便对用户在系统中的操作进行查证,保证用户的任何行为都可被追溯。
用户在系统中的行为都有据可查,不能伪造自己的行为,同时,系统日志也不可被用户所篡改。
- 应用监控
对于SaaS系统而言,大量的客户端都在应用系统,要特别防止非法或恶意客户的攻击,以免影响到正常的用户应用。
可用性监控,就是要监控系统的软硬件的可使用情况,防止系统出现非正常情况。建设应用监控的一个重大意义在于及早的发现系统的不可用情况,并通知管理者进行修复。
2、数据安全
对于SaaS系统而言,用户最关心的问题就是数据安全。
除了上文我们提到的数据隔离安全,还需要考虑数据的存储安全,传输安全和应用安全。
SaaS应用的数据库是由运营商来管理的,对于租户来说,运营商及数据库并不是完全值得信任的。尤其租户的一些敏感数据,可能是不希望任何人能够获取到。
8、总结例如:公司的账单收入数据属于核心财务数据,假如此部分数据未脱敏存储或者传输过程存在风险,那这样的SaaS服务,租户用户肯定是不敢贸然使用的。
本文主要从全面的视角来串联讲述了SaaS化系统:
- 先入为主:最初给大家讲解SaaS的一些基本概念,以及其优劣式都有哪些;
- 关键核心:SaaS化系统建设核心在于数据隔离策略及多租户的管理;
- 查漏补缺:一个SaaS化系统从建设到应用,还包括很多可配置扩展项、系统的伸缩性设计以及系统数据安全的考虑。
SaaS的概念首次将软件和服务联系在一起,随着软件产业的发展,人们在SaaS化实践应用中不断的发现和总结整个产业的规律。软件会演变成提供服务的工具,软件和服务的边界将越来越模糊,从“软件即服务”到“服务即软件”,代表了现代软件产业向服务业融合的方向前进。
当一切IT皆服务,一切IT XaaS化的时候,身在局中的你我,该如何应对?“你”的客户是谁?“你”能提供的差异化服务是什么?“你”的核心竞争力在哪里?