客户关系管理(CRM - Customer Relation Management)系统,是SaaS实践中的一个重要应用。我们不妨以此为例,就其传统构建过程和向SaaS 多租户架构演化的历程, 解析一般SaaS 多租户架构的构建方法。
一、用开源框架,构建CRM系统的一般过程
如不考虑客户数量,及客户不同的个性化需求,就单套CRM系统构建而言,其过程遵从架构设计的结构标准 ——“4+1”视图,即场景视图、逻辑视图、开发视图、过程视图、物理视图。
1、构建“场景视图”
场景视图(用例视图),负责从用户角度,识别业务需求,描述业务场景。是架构设计的起点和终点。根据CRM内容,具体构建如下:
A. 场景描述
老板角度:了解客户增减数量;了解客户增减变化趋势;商务行程管理…
员工角度:保存和随时查阅客户资料;通过邮件、IM、IP电话与客户保持及时沟通;商务行程管理…
B. 场景(用例)抽象
客户管理:增、删、改、查,客户资料;
行程管理:商务形成安排(客户拜访、合同谈判);
订单管理:已签订单的管理;
C. 场景(用例)视图
2、构建“逻辑视图”
逻辑视图,负责从对象角度,构建对象模型,用以确立逻辑分层、模块划分、模块功能、模块间依赖关系等。其中,模块功能,既包括可见的业务功能,也包括不可见的系统功能(日志、权限、事务等)。根据CRM内容,具体构建如下:
A. 模块划分及功能
[客户]模块、[行程]模块、[订单]模块、[报表]模块
B .模块依赖关系
C. 模块包含的业务对象
【客户】模块 — 客户分组、客户、联系人;
【行程】模块 — 时间、事项等;
【订单】模块 — 时间、客户、订单等;
【报表】模块 — ……
3、构建“开发视图”
开发视图,负责从开发角度,描述软件在开发环境下的静态组织(程序包、应用的统一框架、引用的类库、SDK和中间件等),并规范和约束开发环境的结构。逻辑视图构建好之后,可从如下四个方面构建开发视图:
A. 开发环境
开发语言:Java、JavaScript、Html ;
数据库类型:MySQL 5.0 ;
应用服务器类型:Apache+JBOSS;
其他软件:Ant、JUnit 等
相关硬件:略
B. 技术框架
开源框架:Struts+Spring+Hibernate框架结构
调用视图:Struts、Spring、Hibernate向轻量级框架集的整合
C. 分层策略
数据持久层:也叫领域对象层(Domain Object),由POJO(Plain Old Java Object)组成;
DAO组件层:由DAO(Data Access Object)组件组成,一般封装了对数据库的CRUD原子操作;
业务逻辑组件层:一般由Service对象组成,实现系统所需要的业务逻辑处理;
控制器层:用于拦截用户请求,调用业务逻辑组件,根据处理结果转发到不同的表现层组件;
表现层:一般由JSP组成,负责接收用户请求,反馈处理结果。
D. 目录结构
根据分层,制定目录结构如下
一级目录包括:
Api: 存放service的接口定义源文件;
Action: 存放action的源文件和配置文件;
Biz: 存放各模块的业务逻辑组件和DAO组件;
Bundle: 存放JSP和HTML文件;
deploy:存放构建后待部署的jar文件。
biz目录下根据模块再分为dao和service目录,以及它们的实现类目录impl。
4、构建“过程视图”
过程视图,负责从过程角度,描述系统的并发和同步设计。旨在解决进程、线程、并发、同步、通信等方面的问题。
过程视图,依场景而定是否必须,可根据具体需求做裁减操作。
5、构建“物理视图”
物理视图(部署视图),负责从部署角度,描述软硬件的映射关系,以及系统在分布/部署上的设计。旨在解决系统安装、系统部署、网络分布等问题。
系统部署时将web服务器、应用服务器和DB服务器分离,以保证业务繁忙时的响应性能。
至此,CRM系统已基本成型。
二、构建符合“一级成熟度模型”特征的SaaS系统
原有CRM系统部署方案,做设备托管调整后,就是一套符合一级成熟度模型的SaaS系统了 。
然而,SaaS从“一级成熟度模型”向“四级成熟度模型”转变,中间还横跨着可配置、高性能和可伸缩的鸿沟。
我们会在以后的推送里做更加详细的讲解,感兴趣的朋友可以关注我们的公众号(ID:9z营销大数据)。