SaaS是Software-as-a-Service(软件即服务)的简称,随着互联网技术的发展和应用软件的成熟,相对于传统卖软件的模式,SaaS是一种全新的软件应用模式,基于SaaS模式,软件服务商开发出软件产品后,不是直接把产品卖给客户,而是通过自建机房或者租用机房,将软件统一部署在服务器上,客户可以根据自己的需求,通过互联网向软件服务商采购所需的软件服务,而不再需要自己购买服务器进行安装、配置和维护。只要能上网,客户就能使用SaaS服务。客户按采购的服务内容和时间长短向软件服务商支付费用,服务内容可以随时调整,服务期满后可以继续使用,也可以不再使用。
SaaS的具体介绍,这篇文章不再具体赘述,接下来是本篇文章重点介绍的内容。
SaaS的优点在于软件服务商不再需要去客户现场安装、调试和升级软件产品,正是基于此原因,很多传统软件厂商想转变软件销售模式,拥抱SaaS,但是,SaaS模式虽好,但真正做好可不是一件容易的事,主要包括以下几个方面:
1,软件的架构和传统软件不一样;
2,数据存储量大,包括结构化数据和非结构化数据,性能问题突出;
3,需要专业的SaaS运营平台。
笔者以前开发过ToB的软件产品并以SaaS模式进行运营,下面就SaaS产品开发与运营两方面给大家介绍一下。
在讲SaaS模式之前,先要把传统模式和SaaS模式的成本做一下分析,为后续的内容作铺垫:
1)、 传统软件企业卖软件:主要成本在销售费用、实施费用和售后服务费用;
2)、 SaaS模式:主要成本为销售费用和售后服务费用。
从以上对比可以看出,SaaS模式没有实施费用或者很少,售后服务费用,SaaS模式因为软件部署在自己的服务器上,升级很方便,因此,这块费用也是SaaS模式占优。
另外考虑成长性,当客户增长很快时,传统模式的实施队伍不一定跟得上,而SaaS模式只需要增加网络服务器即可解决。
任何商业模式,最后比的都是效益,综上所述,SaaS模式具有比传统模式在成本上具有优势,这篇文章的重点讲述的就是如何开发SaaS产品并高效运营(中小微企业客户),这个问题首先从分析成本控制开始,然后是怎么搭架构,最后怎么运营。
SaaS模式的产品,在功能上与传统软件产品没有差异,一个采购了SaaS服务的客户,软件服务商的主要成本,去掉销售费用,剩下的主要就是服务器网络费用了。
SaaS服务收费,一般按年或者按月收取,所以计算网络服务器成本时,也需要按年或者按月计算。
要想控制服务器网络设备的费用,需要从以下几个方面着手:
1,服务器配置和数量;
2,存储空间;
3,网络带宽。
以上3点,控制目标是客户体验达到要求的情况下尽可能降低成本,这样,问题来了,用户量是逐步变化的,服务器网络设备需要做到可量化,然后才可以水平扩展。
传统软件销售没有这个问题,直接为客户托管服务器也不会有这个问题,但对于SaaS来讲,却是个大问题。
笔者在刚开始做SaaS产品和运营的时候,选择的方式是部署一套系统,数据库用MySQL,使用的是高性能的应用服务器和数据库服务器,各个租户的数据通过租户ID做区分,这样,产品改动很小,部署也省事。平台上线后,刚开始免费,运行不错,但慢慢问题就暴露出来了,数据库里的数据大量增加,数据库服务器扛不住了,网络带宽也不够了,客户体验越来越差,前期通过增加服务器配置和网络带宽能解决,后来通过增加服务器配置和网络带宽也解决不了了。
以上是传统软件直接转SaaS容易犯的错误。
没办法,架构重新搭,系统重构,主要解决的是资源量化和水平扩展的问题。
我们做了分析,网络和服务器费用,必须控制在销售额10%以内,按照租用1台服务器(包括宽带和硬盘)1年20000元计算,折算销售额20万元,如果一个租户1年服务费用5000,则一台服务器至少需要支持40个租户,如果10000个租户,需要250台服务器。
按照上面的部署方式,250台服务器支撑10000个租户是不合适的,因此,必须转变思路,使用新的架构。
经过多方实践,最后确定了以下架构:
1,租户数据库隔离,使用PostgreSQL数据,每个租户一个数据库;
2,应用服务器共用,不同租户登录后连接自己的数据库,一个应用服务器同时具有多个数据库连接池,数据库连接信息存储在SaaS运营管理平台的数据库里;
3,其它服务,比如附件,也使用一个应用服务器支持多个租户的形式;
4,统一登录,然后分发到不同的应用服务器。
简单地说,就是一台数据库服务器创建多个数据库,一台应用服务器供多个租户使用,这样,避免了数据库数据量大的问题,对应用服务器的要求也降低了很多。
经过评估和实践,一台基本配置的应用服务器(4核16G)和一台基本配置的数据库服务器(4核16G),可以支撑400个租户(每个租户用户量50以内)的正常使用,这样,对服务器和网络带宽的要求就降低了很多,400个租户一年的销售额可以达到200万元,而网络和服务器费用不超过10万元,完全达到的成本控制要求。
要想实现以上架构,还需要开发一套SaaS运营平台,否则无法实现以上架构。
SaaS运营平台包括以下几个部分:
1,公司网站,通过这个网站,客户可以自行注册并试用产品,可以定制服务,可以交费、续费;
2,管理后台;
3,监控中心;
4,服务器部署工具;
5,自动部署和升级工具。
公司网站用来宣传公司和产品,同时,对客户来说,可以快速开通测试租户进行试用、可以随时调整自己所采购的产品、可以交费、可以续费,同时提供SaaS平台的登录入口。
SaaS运营管理平台的管理后台是给软件服务商内部使用的,打通了产品、销售、实施、财务、售后、等环节,产品管理包括产品线、模块、菜单的配置,以及不同销售产品不同版本的功能清单,销售部分,不管是客户在公司网站下单还是公司的销售人员下单,都能处理,下单时,选择产品和所需的模块,会有不同的价格,如果试用,系统分配试用帐号和时间,如果确定购买,则付费后开始正式使用。对于临近试用期或者服务期限的客户,系统除了通知销售人员外,还可以自动发邮件或者短信进行客户提醒。实施管理部分,可以快速地创建临时租户、将临时租户转变成正式租户,这些工作在几秒钟内就能完成,同时实现公司服务器管理、应用服务管理、附件服务管理、租户数据库服务器和应用服务器分配、租户登录服务器分配、系统升级、系统回滚等功能,财务部分,与销售订单和付款相连,实现付款开通、发票、欠费停服务等功能。
监控中心实时监控SaaS平台的运行情况,包括服务器状态(CPU、硬盘)、网络(访问量)、租户(基本信息、活跃情况)等信息,可以大屏实时显示。
服务器部署工具用来实现新开服务器、应用服务器安装、数据库安装的自动化处理,通过程序自动连接服务器实现文件上载下载、软件的安装、软件启动停止等操作,减少系统运维人员数量并提高准确性。
自动部署和升级工具,主要用来自动更新系统,包括应用服务更新部署和数据库脚本的执行,能够自动抓取修改后的代码、增量式更新系统,如果有数据库脚本,则按顺序与应用服务器同步更新。
以上几个部分部署在一个系统里,称为SaaS运营管理平台,是SaaS模式软件服务商对外提供服务的重要支撑。
基于租户分离的架构,结合SaaS运营管理平台,可以开发出适用大量租户使用并高效运营的SaaS平台。
实现建议:具体实现时,有以下建议:
1, SaaS软件产品应用服务部署的时候推荐使用apache+tomcat(2个),实现负载均衡,会话黏性,前后不分离;
2,SaaS软件产品的数据库,建议使用PostgreSQL,安装部署简单,运行稳定,性能优异;
3,SaaS运营管理平台应用服务部署的时候推荐使用apache+tomcat(2个),实现负载均衡,前后不分离(会话黏性),前后分离(jwt+会话缓存);
4,登录服务器独立出来,使用F5实现负载均衡或者云服务提供商(阿里云等)提供的负载均衡服务,登录应用服务器可以部署多个;
用户登录可以使用租户编号、用户名、密码的方式,也可以使用用户名@租户编号、密码的方式,另外,可以使用手机号对用户进行实名认证,然后使用手机号和密码即可登录。