互联网产品的研发做了一下分析,大致有三种模式:SAAS开发、模板定制开发、全定制开发。技术架构难度由低到高。
SaaS开发
开发一个系统要支持SaaS模式,系统应满足:
l首先,它必须是Web程序,这样客户不用另外安装程序,只需要浏览器就可以直接使用;
l其次,系统要支持“按需收费”,不同级别的客户可能使用的系统模块有区别,那么我们的系统必须支持按权限配置系统模块;
l第三,系统肯定只有运行一套在中心服务器,数据库也只有一套,却要满足不同的客户使用系统,而且客户之间的数据又要完全独立,这样需要我们在系统中有隔离机制可以按照机构区分业务数据;
Saas系统架构的核心设计为多租户Saas架构,Saas系统架构实现应注意的设计包括:
1.做分层设计
Saas系统分层包括4级:
Saas系统分层:租户识别>应用层>数据访问层>缓存层>数据库
2、数据隔离要透明
在数据库访问层对SQL进行改写,加入tenant_id(租户id)
3.租户识别方案
比较好做法是通过url识别租户。系统是给租户生成一个随机的三级域名,比如abc.crm.baidu.com.如果客户想使用自己的域名,可以在cname到我们生成的三级域名,并在管理系统里面做绑定。
4.智能DNS
5.租户管理系统(计费,订购,定制,充值,催缴)
Saas系统是必须考虑计费系统和租户控制系统。这个系统需要都是独立设计。比如那个租户购买了那些模块,一个月多少钱。租户可以创建多的用户数。计费到期邮件提醒等功能。
计费方式一般有两种,周期性计费,类似月租方案,和使用量计费,用多少付多少。
6.定制化开发
SAAS的优势在于一套系统多人使用,定制化开发是无法避免的,比如CRM系统这样复杂的系统,不可能一套系统满足所有公司的要求。定制化开发尽可能分系统,分模块去做。
7.灰度升级
SAAS付费企业客户对系统问题特别敏感。为了减少升级可能出现问题的影响范围,一般都采用灰度升级策略。
使用了url来区分不同租户,灰度升级配置就会很方便。可以配置nginx来根据域名做分发,比如租户A(http://aaa.com)到实例1(版本1.0),租户B(http://bbb.com)到实例2(版本)。需要域名配置非常多时,可以考虑写一些扩展模块。
8.容量估计
9.Saas平台架构分层分析
Saas平台架构要完成从用户申请链接到使用购买功能模块的整个过程,用saas看似简单快捷,但却需要saas平台架构完成的非常复杂的处理过程。saas平台架构设计可分为