相关资讯

行业信息 公司资讯

SaaS合同管理系统架构总结

合同助手 2018-08-08

ToB Saas系统最近几年都很火。很多创业公司都在尝试创建企业级别的应用 cRM, HR,销售, 合同管理系统。很多Saas创业公司也拿了大额风投。毕竟Saas相对传统软件的优势非常明显。最近一年,有幸架构一个Crm saas 系统,上线了几个月来,各方面都比满意。整个系统创建过程,踩了很多坑,收获也比较多。总结一下Saas系统架构一些特点:

SaaS合同管理系统架构总结

SaaS合同管理系统架构总结

1.分层设计

saas系统分层大概是:

租户识别>应用层>数据访问层>缓存层>数据库

业务代码都是写在应用层。

租户识别可以用spring拦截器实现,然后使用ThreadLocal传递给后端

数据库和缓存层对应用层应该是透明的。程序员在写代码的时候,只关心业务逻辑,不应该担心多租户的问题。

2.数据隔离要透明

3. 租户识别方案
比较好做法是通过url识别租户。系统是给租户生成一个随机的三级域名,比如 abc.crm.baidu.com. 如果客户想使用自己的域名,可以在cname到我们生成的三级域名,并在管理系统里面做绑定。

这样一个租户可以有两个域名,访问saas,一个随机生成的三级域名,另外一个租户自己的域名.代码里面可以根据过来的域名,判断是那个租户然后初始化TenantContext.

如果不想通过域名来做,也可以通过登录名来判断。这种方式要涉及到租户切换问题。

6. 定制化开发
SAAS的优势在于一套系统多人使用,似乎和定制化开发有冲突。比如A客户想要A功能,B客户不想要。但定制化开发是无法避免的,比如CRM系统这样复杂的系统,不可能一套系统满足所有公司的要求。定制化开发尽可能分系统,分模块去做。然后通过控制台中配置不同租户订购不同模块,那些模块可以在前端页面上显示。不同的子系统需要分开部署。前端可通过nginx根据url分发,比如 abc.crm.baidu.com/bi/xxx/xx这个地址,就分发到BI子系统。不要尝试OSGI去搞模块化,这个是个大坑。

还有开发和产品,现有需求一定要分析清楚,不要一上线发现后患无穷。新功能尽量做的独立可以配置。

7. 灰度升级
SAAS付费企业客户对合同管理系统问题都特别敏感。 为了减少升级可能出现问题的影响范围,一般都采用灰度升级策略。如果使用了url来区分不同租户,灰度升级配置就会很方便。可以配置nginx 来根据域名做分发,比如租户A(aaa.com)到实例1(版本1.0),租户B(bbb.com)到实例2(版本). 当需要域名配置非常多的时候,nginx配置文档会乱。这块时候可以考虑使用nignx_lua来写一些扩展模块。

“本文为合同助手(非常好用的项目进度管理)出品,转载请注明”

合同助手 | 合同管理制度
产品介绍
合同助手
资讯中心
行业资讯
公司资讯
使用模式
申请加盟
关于我们
公司简介
联系我们
企业文化
组织架构
核心理念
  • 合同助手是一款专注于企业合同生命周期管理(CLM)的系统软件,支持合同审批/项目审批/合同收付款相关/钉钉集成/合同清单进度等功能的合同管理软件系统,已经为众多企业提供高效信息化的合同管理制度和合同管理办法.
Copyright © 2019 京ICP备14027964号-3号

扫一扫添加客服进行咨询