Vol. 01 整体架构说明

【已变更为买断】SaaS 产品架构设计产品海豚湾2023-6-6 13:50

前言

SaaS平台本身是一个支撑平台,一方面要支撑SaaS软件企业内部的运营工作,另一方面需要支撑租户侧的业务运转。大型的SaaS平台还会需要支撑第三方应用,比如提供数据接口(API)供第三方集成。在平台侧的架构上,我们会划分为IaaS、中台、应用层、业务层和展示层这么5层,这个并不是标准架构。只是通过分层能够更好地划分我们架构中各个部分的依赖关系。

IaaS层

IaaS层一般来说不需要产品经理介入太多,大多数企业都是使用的公有云。这里把IaaS列出来,是想让大家了解一点背景知识。一般,比较注重安全的SaaS平台的IaaS结构会是下面这样。

其中像应用服务器、数据库服务器和文件服务器都在内网,也就是公网无法访问到这些机器,以保障这些业务支撑服务器的安全性。为让公网的浏览器和手机能够访问我们的服务,需要通过Web服务器(Web服务器可能是一个软件,并不一定是物理的机器)和堡垒机。堡垒机相当于公网和内网的桥梁,这样实现了内网的服务器和公网的隔离及互通。

SaaS产品的业务通常是随着客户的数量的增加而逐步成长起来的,因此一开始在IaaS层可能所需要的服务器非常少,比如就只有1台应用服务器、1台数据库服务器和1台文件服务器,甚至有的干脆将文件服务器和应用服务器合并为1台来降低成本。随着业务的增加,可以增加服务器数量来支撑更大规模的业务。

这里还有个地方需要注意,那就是公网数据传输的安全性。一般来说,前后端需要采用https协议进行数据加密传输。

中台(公共组件)

这里其实叫公共组件会更合适。其实所谓的中台,就是将多个业务系统共用的部分提取出来,统一维护,以更高的效率支撑业务系统。典型的例子就是现在的品牌商会在多个电商平台开店经营,不同平台的店铺就可以理解为是前台的应用,但是例如仓储管理、库存管理、物流管理、订单管理、财务管理等等就可以作为中台统一建设,然后支撑不同的店铺经营。

对于SaaS平台侧来说,我们会有下面一些公共组件:

  • 产品中心:统一管理面向租户侧的产品,这里服务也可以作为一项产品。这样的好处是租户侧可以统一到产品中心去购买我们的产品或服务。比如阿里云的产品与服务展示。

  • 支付网关:这包括SaaS自身产品的线上交易和租户侧可能的线上交易,比如电商SaaS。线上交易必然涉及到接入多家支付渠道,如果没有支付网关,就意味着每新增一家支付渠道,都需要重新建设,成本会非常高,而且不好维护。

  • 订单中心:这个其实就是将平台侧的订单统一管理,一方面是方便租户侧有统一的入口查看订单,另一方面也是方便平台侧对订单数据做统计分析。

  • 限流容错:这个是偏技术范畴了,当SaaS平台做出一定规模后,一个是可能会发生流量高峰,另一个是会有恶意的流量攻击。这个时候需要有限流容错策略来防止流量的冲击导致系统宕机。

  • 开发运维:这块其实是很多产品经理忽略的地方,实际上可以为开发运维搭建一套管理平台,一方面是做系统维护的风控,另一方面也是从技术指标上监测系统的运行状态。

  • 账号体系:账号体系是SaaS平台绕不开的话题,这包括租户员工的账号体系和面向C端业务(如电商SaaS)的用户体系。

  • 权限认证:权限认证通常我们是配置好权限功能后,需要有一个公共的组件去统一验证权限,比如账号密码验证、功能权限认证、数据权限认证等等。

  • 日志系统:日志系统通常会分为两类,一类是操作日志,一类是系统运行日志。操作日志主要会用于行为记录,以及风控溯源;运行日志则主要是监控系统运行状态,以及帮助开发定位系统问题。

  • 消息中心:系统会利用多种渠道向租户、用户发送消息,比如系统内提醒、微信模板消息、短信、钉钉提醒等等。这块也需要有统一的消息中心来维护,避免每个消息渠道都单独处理。

  • 文件系统:通常这块是技术来解决的,也就是我们在IaaS层看到的,会有相应的文件存储服务器,那么我们系统中上传的这些附件、图片都需要统一管理。

应用层

这个应用层其实指的是平台的应用市场,这些应用会包括平台自研应用、第三方开发者应用和开放平台。不过,大多数的SaaS产品都不会涉及这方面,因为通常应用市场都是那种一体化的产品提供的。典型的就是钉钉、企微这类。但是,我们的SaaS产品不可能能够满足客户的所有需求,而国内的企业客户很多都需要有一体化的解决方案。这个时候,要不就是我们的产品被其他平台集成(这是最常见的方式),要不就是我们自身提供开放平台,供客户自身或第三方开发应用。

业务层

业务层其实就是我们各个业务模块,这块也会是我们整个专栏的重点,我们会逐个模块讲解如何搭建好各个模块,以支持SaaS产品平台侧的业务运营。通常来说,SaaS产品的业务层会包括客户(租户)管理、合同管理、销售版本管理、产品及服务管理、订单管理、权限管理、平台通知管理、版本更新管理、服务工单管理、运营数据看板等模块。当然,实际上,针对不同行业的SaaS产品,模块会有些许差异。我们后续也会根据反馈去增加一些模块。

展示层

这块通常会有Web端、App端和其他端(比如微信小程序)。对于SaaS平台侧来说,主要还是Web端。这块我们以原型设计为主来讲解如何设计比较好的操作界面。