SaaS 系统架构设计经验

SaaS系统最近几年都挺火。许多创业公司都是在试着建立公司等级的运用 cRM, HR,市场销售, Desk SaaS系统。许多SaaS创业公司也拿了超大金额风险投资。终究SaaS相对性传统式手机软件的竞争优势十分明显。

近期一年,荣幸构架一个Crm SaaS 系统,上线几个月来,各领域都比令人满意。全部系统建立全过程,踩了许多坑,获得也比较多。总结一下SaaS系统构架一些特性:

1.分层次设计方案

SaaS 系统构架心得分享专业知识

SaaS系统分层次大约是:

租赁户鉴别>网络层>数据信息浏览层>缓存文件层>数据库查询

业务流程编码全是写在网络层。

租赁户鉴别可以用spring回调函数完成,随后应用ThreadLocal传送给后面

数据库查询和缓存文件层对网络层应该是全透明的。程序猿在敲代码的情况下,只关注领域模型,不应该担忧多租户的问题。

2.数据信息防护要全透明

SaaS系统说起来非常简单,一切系统好像加个tenant_id(租赁户id)就变为SaaS系统了。例如原先的账号登录是:

SaaS培训学校管理方法系统

select username,password from users where e ** il='abc@qq.com'

改为

select username,password from users where e ** il='abc@qq.com' and tenant_id =1;

针对繁杂业务流程的SaaS系统,那样行为十分风险,并且开发设计高效率很低。你想一想假如那一个程序猿写sql情况下忘记了加 “ and tenant_id =1” . 結果无法预料。

比较好作法是在数据库查询浏览层对SQL开展改变。

TenantContext.exec("select username,password from users where e ** il='abc@qq.com' ");

在数据库连接池依据TenatnContext改变Sql.

那样做作用是,一来程序员较多把系统搞down了,也不会信息内容串了相互之间泄漏。二来未来做数据透析表分库也很便捷,顶层运用无需改动。

3. 租赁户鉴别计划方案

比较好作法是根据url鉴别租赁户。系统是给租户转化成一个任意的三级域名,例如 abc.crm.baidu.com. 假如顾客想应用自身的网站域名,可以在cname到大家转化成的三级域名,并在管理方法系统里边做关联。

那样一个租赁户可以有两个网站域名,浏览SaaS,一个随机生成的三级域名,此外一个租赁户自身的网站域名.编码里边可以依据回来的网站域名,分辨是那一个租赁户随后复位TenantContext.

假如不希望根据网站域名来做,还可以根据用户名来分辨。这类方法要牵涉到租赁户转换问题。

4. 智能化DNS

(之后填补。)

5. 租赁户管理方法系统(收费,购买,订制,在线充值,催款)

SaaS培训学校管理方法系统是需要考虑到收费系统和租赁户操纵系统。这一系统必须全是单独设计方案。例如那一个租赁户选购了这些控制模块,一个月要多少钱。租赁户可以建立较多的用户量。收费期满电子邮件提示等作用。

收费方法一般有二种,规律性收费,相近月租计划方案,和需求量收费,用多大付是多少。 规律性收费非常简单。还可以二者结合在一起。

6. 订制化开发设计

SaaS的优点取决于一套系统多的人应用,好像和个性定制化开发设计有矛盾。例如A顾客要想A作用,B顾客不要想。但订制化开发设计是难以规避的,例如CRM系统那样错综复杂的系统,不太可能一套系统达到任何企业的规定。订制化开发设计尽量分系统,分控制模块去做。随后根据控制面板中配备不一样租赁户购买不一样控制模块,这些控制模块可以在前面网页页面上表明。不一样的子系统必须分离布署。前面可根据nginx依据url派发,例如 http://abc.crm.baidu.com/bi/xxx/xx这一详细地址,就派发到BI子系统。不必试着OSGI去搞模块化设计,这个是个深坑。

也有开发设计和商品,目前要求一定要剖析清晰,不必一发布发觉得不偿失。新作用尽可能做的单独可以配备。

私域操盘咨询

免费获取私域运营资料

申请免费使用

在线咨询