基于 SaaS 模式的进销存实战架构分析
作者:邢波涛
关于什么是 SaaS (Software As a Service ) ,无论是各大媒体,包括网络媒体,还是《程
序员》杂志本身,都已经讲了很多了(《程序员》杂志还分别在 2007 年第 10 期和 2008 年
第 8 期,做了两期关于 SaaS 的专题),我也就不再重复。基于 SaaS 模式的应用还是很丰
富的,但是对企业管理软件这个领域来讲,无论是美国的 Salesforce , 还是国内的八百客,
都是从 CRM 做起的。直至现在,基于 SaaS 模式的进销存,在技术架构上,都还是处于摸
索阶段,甚至有人在我的 Blog 上留言,金蝶的友商网只是象征性的推出了用 ASP.net 技术
编写的第一版,第二版要完全转向 JAVA 平台,从.NET 平台转向 JAVA 平台,那就相当于
把整个软件重新写了一遍。用友虽然推出了伟库网,但是至今尚未看到它的进销存应用,
只是“网上订货”和“租户营销”两大功能模块。进销存对广大中小企业来讲,还是非常有市场
的,但是各大软件厂商,迟迟未推出基于 SaaS 模式的稳定成熟的进销存软件,这说明什么
呢?这说明它的确不好做,在技术架构上,的确有很难解决的问题。我做了很多年的
MIS/ERP/进销存管理软件,关注 SaaS 模式也好几年了,所以我就做了一套基于 SaaS 模式
的进销存软件,和大家一起探讨一下基于 SaaS 模式的进销存软件的技术架构,就当是抛砖
引玉,无知者无畏吧。
一、 SaaS 成熟度模型
《程序员》在第八期,刊登了阿里软件首席架构师赵进的文章《SaaS 成熟度模型浅
析》, 他借用 Frederick 和 Gianpanolo Carraro 的文章,把 SaaS 的成熟度,从低到高分成 4
个级别:
第一,每个租户使用一个独立的数据库实例和应用服务器实例,数据库中的数据
结构和应用程序的代码根据租户需求,订制化修改。
第二,每个租户依然使用一个独立的数据库实例和应用服务器实例,但是应用程
序已经考虑到了可扩展性,针对每个租户的可定制化通过配置的方式实现,它是一套
应用程序。
第三,单实例,多租户,所有租户共享一个数据库实例和一个应用服务器实例,
数据库通过增加 Tenant 表和 TENANT_ID 字段来解决识别租户的问题。这时也是一套
应用程序。
第四,多实例,多租户,这时有多个应用服务器实例,最终租户通过负载均衡被
分配到不同的应用服务器实例,并且该租户携带某个业务数据库实例信息,由应用服
务器动态链接到相应得业务数据库。此时也是一套应用程序。
二、 技术架构设计目标
由上面分析可以看出,从理论上 SaaS 已经有了一套完整的成熟度模型,所以基于
SaaS 模式的应用,还是蛮丰富的。但是由于进销存软件的需求,完全不同于 CRM 软
件和财务软件,相对于财务软件,国家有着明确的法律规范,而进销存系统是个性化
非常强的一个系统,要求所有的租户采用同一个用户界面和同一个业务逻辑,是不现
实的。对于进销存这块来说,租户有强烈的个性化需求的意愿。所以,本着这个思想,
应用层的设计要求能够做到以下两点:
(1)所有的租户理论上均可以自定义自己的页面
评论1