SaaS
收录于 工程治理体系
SaaS 不只是上云:多租户、边界管理与商业模型,团队到底该先想清什么
很多团队把 SaaS 理解成部署方式变化,结果系统越做越重,交付成本降不下来。真正要先想清的,是多租户复利、边界管理、商业模型,以及这些判断怎么落到团队日常决策里。
很多团队做了两三年 SaaS,都会慢慢碰到一个别扭现象:系统明明已经云化了,交付成本还是下不来,版本还是不好迭代,客户需求还是在不断撕主线。
问题往往出在一开始就把 SaaS 理解窄了,跟云上得好不好关系不大。SaaS 当然包含部署方式变化,但最麻烦的地方,是商业契约、交付模型、软件形态一起变了。少看任何一层,后面都得补课。
我更在意的,是一个团队有没有先把三件底层事情想清楚:
- SaaS 对企业到底解决了什么核心问题。
- 在满足多数客户的前提下,怎么做个性化且不撕裂主线。
- 我们到底靠什么赚钱,收费模型如何反向约束产品和技术。
这三件事分开聊都不难,难的是很多团队只想了其中一件。结果就会出现一种很典型的表面繁荣:功能越来越多,客户越来越杂,代码越来越重,但复用率和毛利率并没有一起变好。
问题也就在这儿。
这篇文章对我来说,也不只是把一些概念重新讲一遍。它更像是我把我们内部这几年 SaaS 演进里踩过的坑,和我后来反复看 SaaS 相关资料时形成的理解,重新收成一篇。前半篇先把多租户、边界管理、商业模型这三块底层东西摊开。后半篇再讲,这些判断最后怎么落回团队的日常决策。要是不落回去,前面那堆话很容易只剩概念感。
先把词讲清楚:SaaS 不是一个词,而是三件事叠加
这几年大家都在聊 SaaS、多租户、低代码、云化,很多讨论最后都会收缩成技术部署问题。
可真往下做,SaaS 从来不只是一个部署名词。我更习惯把它看成三次迁移同时发生:
- 商业契约迁移:从一次性买断转向持续订阅。
- 交付迁移:从客户机房部署转向服务商托管。
- 软件形态迁移:从“为一个客户写一套代码”转向“为一个行业定义默认工作方式”。
很多团队其实只完成了第二件事,觉得把系统托管到云上就算 SaaS 化了。
不过如果第一件事和第三件事没跟上,说白了还是“在线项目制”,算不上 SaaS。
flowchart TD
A["讨论 SaaS 化"] --> B{"到底改了几层"}
B -->|"只改交付迁移"| C["在线项目制<br/>只是把系统托管到云上"]
B -->|"三层一起变"| D["真正的 SaaS 化"]
D --> D1["商业契约迁移<br/>买断 -> 订阅"]
D --> D2["交付迁移<br/>客户机房 -> 服务商托管"]
D --> D3["软件形态迁移<br/>单客户代码 -> 行业默认工作方式"]
D1 --> E["软件从一次性商品<br/>变成长期服务关系"]
D2 --> E
D3 --> E
分水岭在这里:
SaaS 的关键一步,是把软件从一次性商品改造成长期服务关系——搬上云只是起点。
从项目制到行业操作系统:SaaS 本质是标准化博弈
传统定制软件在做的是“把某一个客户的流程数字化”。
SaaS 在做的是“替一个行业给出一套默认且持续演化的工作方式”。
我们自己这条产品线,其实就是沿着这条路过来的。最早更多是在做项目交付的标准化,把同类需求、同类流程、同类部署方式尽量收拢;再往后才慢慢发现,难点在于你到底敢不敢给这个行业一套默认做法,项目做快只是第一关。我自己一直在这个转折带上看这件事,所以越来越强烈地觉得,SaaS 化意味着产品主线、团队分工、版本策略都得跟着改——远不止部署环境从客户机房搬到云上。
我习惯用一个二维坐标解释这件事:
- X 轴:行业里各家公司今天实际上是怎么干活的。
- Y 轴:这些公司希望自己怎么干活,或者说应该怎么干活。
项目制通常沿着 X 轴复刻现状。
SaaS 不一样,它多少要带一点主张:给行业一条更标准、更可复制、也更可治理的默认路径,再慢慢把客户从 X 轴推向 Y 轴。
这里面有个很现实的取舍:
越坚持标准,越可能在短期遭遇“为什么不能按我们历史习惯做”的阻力;
你越是迎合所有现状,越会在中长期失去主线和复利。
所以做 SaaS,既要有产品上的克制,也要有一点必要的主张:
- 克制在于不把所有需求都做进主线。
- 主张在于敢于给出工作流观点,并推动行业默认水平上移。
基石一:多租户真正的价值,不是省机器,而是复利
谈 SaaS 就绕不开租户。广义上,一个租户通常就是一个客户组织。
很多人把多租户理解成“同一套系统塞更多客户,省机器、省人力”。这个理解不算错,但还是太浅。
我更认同的说法是:多租户的核心价值在于让产品、运维和认知一起产生复利——省机器只是副产品。
如果没有多租户心智,你做的还是批量交付,不是 SaaS。
我们自己就踩过这种坑。早期一租户一套承载时,隔离很清楚,排障也很直接,但资源利用率会越来越差;等开始往共享承载面走,又会遇到另一种麻烦:如果没有把头部租户、长尾租户、资源预算和迁移规则提前讲清,头部租户一抖,共享池就会被带乱,版本和运维压力一起上来。走到这一步就会发现,多租户远比“把多个客户放进同一套系统”复杂——你得继续回答谁该共享、谁该专属、什么信号触发拆池、出了问题到底按租户看还是按承载面看。
四层隔离是基本盘
一个成熟的多租户系统,至少要把隔离做到四层:
- 数据隔离:A 公司不能看到 B 公司的任何数据,包括主库、日志、报表、导出。
- 权限隔离:同租户内部不同角色也只能看各自该看的范围。
- 资源隔离:大租户高并发不能把其他租户拖慢或拖垮。
- 故障隔离:单租户异常不能扩大成全局事故。
这四层如果只停在 PPT 上,后面谈复利都是空话。
多租户带来的三类复利
- 产品演化复利:一次字段优化、一次流程改进、一次推荐策略调整,可以覆盖全部或大多数租户。
- 运维治理复利:一套监控体系、一条故障定位路径、一套容量模型,可以跨租户复用。
- 行业认知复利:你能看到真实的行业平均线、头部实践和无效功能,再反哺产品默认方案。
所以优秀的 SaaS 团队会对可观测性特别执着。
他们做的事更像是建立“多租户可复用的诊断体系”,已经超出“排查一个 bug”的范畴。共享一套产品以后,最怕的倒不是某个租户报错——怕的是你根本看不出问题到底落在租户配置、资源配额、代码变更还是数据规模上。
可观测性至少要回答的五个问题
- 某个租户的错误率、延迟、QPS 分别是多少。
- 某个租户为什么会觉得慢,是资源瓶颈还是流程配置问题。
- 某个功能被谁在用、用到了哪一步、在哪一步流失。
- 哪些模块被高频使用,哪些模块是产品认为重要但无人使用。
- 某次变更对全量租户和头部租户分别造成了什么影响。
基石二:决定 SaaS 生死的,不是代码量,而是边界管理
很多号称 SaaS 的系统,最后输的不是功能不够,是边界守不住。
最典型的三种边界失守:
- 产品边界失守:什么都做,最后什么都不精,主线越来越碎。
- 客户边界失守:客户要什么就做什么,最终变成“以 SaaS 名义做外包”。
- 技术边界失守:把个性需求直接写进主干,升级像做外科手术。
我们自己有过一段版本质量明显往下掉的时期。回头看,问题出在很多本来该停在客户规则层、行业模板层的东西,被一路推进了主线。每次表面上都是“先把这个客户接住”,最后落到版本上,就是回归面越来越大、验证越来越重、每次发版都像在猜还有哪条历史分支会被带出来。
需求评审时,先做“归位”,再做“实现”
每个需求进来,我建议团队先问一句:这个诉求应该挂在哪里。
如果挂错层,短期上线很快,长期维护成本会指数级上升。
比如客户说“审批里要多一个特殊分支”,先别急着问怎么改表、怎么加节点。先问这到底是行业里普遍存在的差异,还是这家客户自己的历史流程包袱。前者可能值得沉成模板或插件,后者更适合停在客户规则层。
flowchart TD
A["客户诉求进入评审"] --> B{"先判断它是什么问题"}
B -->|"管理 / 组织问题"| C["交给培训 / 实施 / 顾问 / 生态伙伴"]
B -->|"产品能力问题"| D{"影响范围在哪里"}
D -->|"全租户长期共性"| E["平台内核"]
D -->|"某垂直行业反复出现"| F["行业插件 / 行业模板"]
D -->|"单客户历史包袱或特例"| G["客户规则层<br/>配置 / 规则引擎 / 插件"]
E --> H["进入主线"]
F --> H
G --> I["不进主线"]
C --> I
一个可执行的分层方式是:
- 平台内核:十年维度稳定、全租户共享、不会轻易改动的能力。
- 行业插件:面向某垂直行业的预设流程和规则模板。
- 客户规则:只属于单客户,必须放在配置、脚本、规则引擎或插件,不进主线。
这套分层说白了就是成本控制手段,跟“架构美学”没关系。
你把客户规则写进内核,等于给未来所有版本埋雷。
还有一个关键边界:谁来解决什么问题
很多客户需求,说到底是管理问题或组织问题,产品能力根本兜不住。
例如“员工不会用系统”“KPI 设计不清晰”“内部流程没人推进”等。
深一点的 SaaS 团队会明确三件事:
- 哪些问题必须产品化,才能规模复用。
- 哪些问题应该由培训、实施、顾问、生态伙伴解决。
- 哪些问题即便客户强烈要求,也不该承诺产品承担。
如果一个客户内部 KPI 都没定清、流程 owner 也没站住,你靠产品把这些全兜住,最后很容易做出一堆只有一个客户会用、但每个版本都要维护的功能。
这个边界一旦不清,团队会被无限需求拖入低复用泥潭。
基石三:收费模式和成本模式必须成对出现
SaaS 团队常见误区,是技术上已经开始产品化了,商业模型却还是糊的。
模型一模糊,后果非常现实:你不知道某租户究竟赚钱还是亏钱,自然也不知道该给他什么级别的隔离、资源和 SLA。
我一直强调一句话:收费模式会反向塑造技术形态。
- 按席位或版本收费:你必须把权限、模块、版本边界切清楚。
- 按用量收费:你必须从第一天就具备计量、配额、账单、审计能力。
- 按结果收费:你必须控制关键业务链路并提供可验证归因。
比如你按调用量收费,却看不到租户级调用量、峰值和回放成本,账就一定算不清;你按高级版卖 SLA,却没有把资源隔离、限流和应急通道分层,那销售承诺迟早会反噬系统。
说到底这不是财务问题,也不是销售问题,是架构问题。它决定了你如何做资源池、隔离等级、容量规划和成本核算。
三块底层东西想清楚以后,团队日常会落到四个判断维度
这三件底层东西一旦想清楚,团队日常讨论会很不一样。
我更常用四个维度看一个团队是不是在做 SaaS,而不是在做“云上的项目制”。
1) 时间维度判断
看一个需求,我不太先问“怎么实现”,而是先问“这个决定写进系统三年后会不会后悔”。
很多时候我们会优先选一个短期麻烦、长期省事的方案,因为 SaaS 本来就是长期复利游戏。
2) 抽象维度判断
当三个客户提了看起来不同的诉求,团队能不能先抽出共同对象、共同动作和扩展点,再决定要不要沉成平台能力。
如果每次都“按需求写接口”,最后只会得到一座越来越重的 if/else 博物馆。
3) 经济维度判断
听到“大客户特殊需求”时,不能只讨论开发工期,还要评估单位经济影响:
- 是一次性收益,还是长期成本项。
- 会不会引发连锁特例,拖慢后续版本。
- 是否影响现有计费模型和资源公平性。
4) 组织维度判断
系统设计不只是代码结构,也是分工结构。
你要清楚哪些能力必须产品化,哪些交给实施,哪些交给生态伙伴。
很多所谓系统复杂,归根结底是责任边界没划清。分工清楚,团队才能把研发产能投入到可复用主线。
这些判断最后要落进研发日常
如果前面这些判断只停在管理层 PPT 里,那这篇文章还是会显得很虚。实际有用的是,它们会不会改变团队接需求、拆方案、做发布时的默认动作。
我现在更愿意用下面这些信号判断团队有没有真的进入 SaaS 思维:
- 接到需求先做归位,先分清这是共性能力、行业模板,还是客户特例,而不是先开写。
- 评估方案时,默认会多问两层:它会不会影响全租户,它会不会改掉未来计费、资源和版本策略。
- 设计扩展点时,优先考虑配置化、插件化、规则边界,而不是先往主线塞一个特例分支。
- 做可观测性时,不只看 CPU、QPS、错误率,也会看租户级指标、业务级指标和变更影响面。
- 发版和验证时,会追问这次改动到底打到哪些租户、哪些产品形态、哪些历史兼容分支,而不是只说“这个版本已经测过了”。
不是所有业务都适合第一天就做标准多租户,更现实的是先把演进路线设计对
与其直接说“哪些场景不适合 SaaS”,不如更准确一点地问:你现在处在什么阶段,下一步到底该把哪层能力先做出来。
下面这些场景,通常都不适合一开始就强推标准多租户:
- 强监管和强数据主权场景,必须物理隔离或专属环境。
- 行业流程还在剧烈变化,标准尚未稳定。
- 客户极度分散且个性需求占比过高,短期共性难抽象。
这时候更务实的路线,是先把演进路线设计成“可迁移”,别急着喊标准化:
- 先把领域边界和核心模型抽象清楚。
- 允许阶段性混合交付,积累共性数据。
- 共性形成后再回收进统一主线。
这里更要紧的,是你有没有给自己留出一条从项目标准化继续走到行业 SaaS 化的路。如果这条路是断的,前面很多判断最后都会变成口号。
如果今天开始补这门课,我会先看这 10 条
如果你要把上面这些判断确实落成团队动作,我更建议先拿下面这张表自查,而不是一上来就做一轮很大的架构升级:
- 是否明确了平台内核、行业插件、客户规则三层边界。
- 是否定义并落地了数据、权限、资源、故障四层隔离。
- 需求评审是否包含“归位判断”,并要求记录归位结论。
- 个性诉求是否优先通过配置、规则引擎、插件实现。
- 是否建立租户级可观测性与业务级可观测性。
- 是否能按租户计算收入、成本和毛利。
- 是否把收费模式和资源/SLA 分层打通。
- 是否有高风险变更的回滚点和灰度策略。
- 是否能持续识别“看似重要但无人使用”的功能。
- 是否建立了客户问题与产品问题的分流机制。
这 10 条里只要有 3-4 条长期缺失,你的 SaaS 大概率会逐步退化成项目制。
回头看这三件事
我对 SaaS 的判断一直没怎么变:说到底,SaaS 是把行业经验沉淀成可复用、可计量、可持续演进的服务系统——上云只是载体。
多租户决定你有没有复利底座,边界管理决定系统会不会越跑越歪,商业模型决定这套东西到底能不能长期活下去。
三件事单拎出来都不新鲜,最难的是它们要在同一套产品、同一套组织分工、同一套成本结构里同时成立,而且能持续很多年。