SAAS 系统设计(01)—— 重要模块设计

最近在攻克 SAAS 从 0 到 1 的架构设计,希望把已有的能力 SAAS 化,做个代练行业垂类的 SAAS,可以连通行业上下游。

通常的 SAAS 是针对一些可以标准化的场景,有通用的租户和针对的解决方案,做出 SAAS 平台后做推广。比如飞书、友盟等,它们是先有产品,构建 SAAS 的租户,再以用户为基础,让开发者基于 SAAS 平台,自定义开发产品。

他们也有两种商业模式。

  • 泛类通过 SAAS 主功能和三方产品盈利。

比如飞书、钉钉、企微,他们租户很广泛,所有公司、组织都可以用,它们 SAAS 主功能有组织架构、平台权限、IM 等。

盈利点包括:

  1. 大客户定制化,中小客户按人头收费。
  2. 通过 SAAS 平台的特点吸引租户(比如飞书是云文档 + OKR),收取开发者佣金。

这些涉及的三方产品非常多,飞书自己不会都做,他只需做好开发者系统,鼓励开发者入驻开发,它主要提供用户,SAAS 平台作为流量入口。

  • 垂类通过做好自身产品盈利

比如友盟,SAAS 主功能是数据收集和分析。它所有的产品都是自身开发,基于 SAAS 主功能扩展的。

友盟这种,所有参与人员都是自己,没有第三方开发者概念。它的产品更垂,受众更小。

我要做的 SAAS 更特殊,友盟和飞书起码是先有产品,再吸引用户,我这是已有用户和供应链,差个 SAAS 把他们关联之前,我们希望 SAAS 为我们提供模块化的支持,业务特点更像友盟。

所以我们 SAAS 有以下边界

  1. 垂类行业的 SAAS,用户群体固定,对有需求的人是刚需。
  2. 靠自己做好产品挣钱,几乎没有三方开发者。
  3. 几乎都是根据行业定制化的产品。

这个 SAAS 最大的作用,就是把前后端服务模块化,提高产研效率。

SAAS 主站、开发者、产品

SAAS 主站是 SAAS 自身的系统,租户无需开通任何产品就有的功能,比如组织架构、员工、平台级权限管理,未来我们还会做钱包、企微基础能力。

开发者平台,是在 SAAS 申请成为开发者后,自行编码应用,嵌入到 SAAS 中,可以通过调用 SAAS OpenApi 的方式获取商户在 SAAS 主站上信息,完整自己业务闭环。

产品,也叫解决方案。由多个应用打包,每个应用内有多个资源。

比如飞书中的销帮帮,这是产品,它里面每个菜单,都是应用,菜单中的每个页面,都是资源。(其实资源除了页面还有数据、功能,就是 RBAC 标准的一套,为了方便理解, 只说菜单资源)

这里应用只代表功能,不包含数据,多个功能模块(应用)打包,可以任意组成新的产品。

比如做个销忙忙产品,把这里 CRM 应用挪过去,再加点别的数据菜单就行了。

但是销帮帮和销忙忙的数据是隔离的。

后端应用分层和基础组件

后端服务分为 base、admin、app 层,所有应用的代码在 base 中,SAAS 管理后台是 admin,所有对外和租户门户服务是 app。

行业本身也有个最大的 admin,管所有行业内的租户,这个是开发者自己开发的。

基础组件有

  1. saas-base,saas 的 base 服务,和数据库打交道那层。
  2. saas-application,组织架构、钱包等基础组件,都以内部应用的形式嵌入。
  3. saas-open,SAAS 对三方应用开放的接口,比如获取组织架构信息、员工信息等,走 oauth2 授权。
  4. saas-admin,SAAS 管理后台,负责打包应用成为产品、审核应用和权限、商户入驻申请等。
  5. saas-app,租户门户的后台,租户的产品展示在上面。

这篇概念性的比较多,有点难理解,下一遍重点说说技术实现细节。

相关推荐
丘山子几秒前
Python 布尔运算的优雅实践
后端·python·面试
曾经的三心草7 分钟前
微服务的编程测评系统9-竞赛新增-竞赛编辑
微服务·架构·状态模式
汪子熙14 分钟前
理解 SSH Agent 的工作原理与应用场景
后端
苏琢玉23 分钟前
如何优雅地处理多种电商优惠规则?我用 PHP 封装了一个 Promotion Engine
后端·php·composer
豌豆花下猫25 分钟前
Python 潮流周刊#113:用虚拟线程取代 async/await
后端·python·ai
武子康27 分钟前
大数据-58 Kafka 消息发送全流程详解:序列化、分区策略与自定义实现
大数据·后端·kafka
福大大架构师每日一题27 分钟前
2025-08-02:最多 K 个元素的子数组的最值之和。用go语言,给定一个整数数组 nums 和一个正整数 k,请找出所有长度最多为 k 的连续子数组,计算
后端
Debug笔记27 分钟前
你真的理解 Java 中的线程池吗?一次“查不出原因的接口变慢”的真实排查经历
后端
Cache技术分享29 分钟前
149. Java Lambda 表达式 - Lambda 表达式的序列化
前端·后端
_風箏34 分钟前
Shell【脚本 01】实现定时备份文件、压缩、删除超时文件操作(showDoc文件备份脚本举例)
后端