以CRM系统为例,浅析“初级SaaS 架构的构建方法”

客户关系管理(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框架结构)

调用视图: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营销大数据)。

推荐阅读更多精彩内容