构建它的案例
为什么要构建这个而不是组装堆栈?
构建 SaaS 的默认方式是组装:一个身份验证提供商、一个计费 SDK、一个数据库、一个电子邮件服务、一个功能标记工具,在实际产品的第一行之前有五个供应商。它们之间的接缝将成为你的代码库:协调计费与访问的 Webhook 处理程序、在系统之间复制用户的同步作业,以及计费供应商表示已付款而应用表示已锁定的凌晨 2 点类别的错误。 Kliv 将机箱作为一个系统,租赁、计费、权利、电子邮件、数据,进行运输,因此你花费数月时间编写的接缝不存在。
底盘没有差异化;你的产品不是。没有人会选择你的应用作为其登录页面或发票电子邮件,尽管他们会留下一步损坏的应用。将描述放在你的域上,只有你知道的事情,并让每个 SaaS 共享到达的部分都已组成。当你的定价发生变化时,是一个新的层级,一个计量附加组件,一个企业交易,这是对话中的一句话,而不是重新架构。
系统剖析
SaaS 实际上是由什么组成的
剥离掉产品,每个 SaaS 都有相同的骨架:租户、席位、计划、大门、仪表、发票。 Kliv 运送骨架;你描述了它周围的产品。以下是系统第一天就知道的内容。
组织机构
每个客户都是一个组织,他们的用户、数据和计费在一堵墙内。 A 公司无法读取 B 公司的数据库。
成员及角色
你的客户是公司,而不是登录,所有者、管理员和成员,每个人都看到自己的角色允许做什么。
计划和价格
目录:等级、试用、一次性解锁、计量附加组件,你的定价页面作为系统强制执行的数据。
权利
金钱和功能之间的联系,该组织的订阅打开的内容,在任何重要的地方进行检查。
仪表和使用情况
使用情况根据客户可见的登录活动,进行计数,由你计费。
订阅和发票
每个租户,的商业状态都在试用、活跃、逾期,有发票为证。
谁看到什么
数据库强制执行的规则
- 租户的行属于租户,跨组织读取不可能在数据库中进行,不会在应用中进行过滤。
- 权利按照实时计费进行:升级立即开放功能,取消则按计划缩小功能范围。
- 计量表和发票是同一个系统,计量的就是计费的,没有什么可核对的。
- 付款失败后,会在任何付款客户关闭之前开始催款,重试并发送恢复电子邮件。
这是 SaaS 的一部分,没有人选择构建,每个人都必须构建:身份、租赁、资金以及约束它们的规则。当它作为一个系统到达时,你的描述就变成了关于你的产品。
SaaS 的困难部分已经解决
这些不是附加组件,它们是由相同的平台组成的。
默认多租户
当客户注册你的应用时,每个客户都会获得自己的组织。 A 公司永远无法看到 B 公司的数据,隔离是在数据库级别的每个查询上强制执行的,而不是在必须记住编写的应用代码中执行的。你自己的管理数据位于单独的内部专用墙后面。
产品内的团队和席位
你的客户不是单个用户,他们是公司。登录、角色和每个组织共享是同一身份系统的一部分,因此“同一公司的每个人都可以看到他们公司的项目”是一句话,而不是冲刺。
按照 SaaS 实际收费方式收费
具有试用和公平按比例分配的订阅、一次性解锁以及基于使用量的计量定价。Kliv 为你创建产品、价格和仪表,这是一种描述:“Pro 计划每月 $20,每份生成的报告另加 2 美分”。
追随金钱的特征
将功能附加到计划和受限页面、数据和功能上。当账单发生变化时,升级、降级或取消,访问权限将自动生效。没有授权代码,没有夜间同步。
也出售内容访问权
内置文件存储有自己的访问规则:私有、每个组织共享或订阅后。高级 PDF、视频和下载内容可通过与应用的其余部分相同的权利来解锁。
在你的应用中自助计费
客户在产品,内的计费页面上更新卡、切换计划并阅读发票,当付款失败时,Kliv 会重试并向他们发送电子邮件,直到付款恢复为止。
充电方式
SaaS 的三种收费方式
定价页面演变为,层级分裂,仪表出现,企业交易需要发票。目录应该保持不变,无需重新架构。
分级订阅
$29–$99/月
选择 Starter 或 Pro 的团队
附加到计划的功能层:初学者获得核心,Pro 打开报告,API,团队功能。
- 解锁
- 功能遵循,计划,升级会立即打开它们,降级会按计划缩小范围,无需手动切换。
- 计费
- 每月或每年进行试验并公平按比例分配;失败的卡会在访问范围缩小之前重试并收到恢复电子邮件。
- 退款
- 批准访问控制,退款是一个决定,而不是意外。
基于使用情况
每次运行 0.$05
其账单应跟踪其价值的客户
基本计划加仪表:渲染、消息、API 调用,无论产品中的价值单位是什么。
- 解锁
- 使用情况会计入客户的登录活动,在发票到达之前可以在其计费页面上看到。
- 计费
- 计量费用按订阅周期,累积并计费。计量表和发票一致,因为它们是同一系统。
- 退款
- 有争议的订单项通过相同的审批流程解决。
一次性解锁
一次性 $500
想要附加组件而不是其他订阅的客户
一个终身模块、一个入门包、一个早期采用者交易,出售一次,旁边是订阅。
- 解锁
- 购买授予永久权利,该权利与客户运行的任何计划共存。
- 计费
- 一次收费,一张收据,相同的目录,相同的账单页面。
- 退款
- 相同的审批流程。
发布前
第一周,启动前
SaaS 比任何宣传册网站,都有更多的机制需要证明,这正是第一周很重要的原因。
塑造产品
描述一下:产品的用途、客户是谁、层级以及每个层级开放什么。 Kliv 构建了第一个预览,其中的组织、计划和大门已经真实存在。
让它成为你的
你的域名、你的品牌、你产品的语言,以及从结账强制执行的同一目录生成的定价页面。
连接真实的东西
连接 Stripe,设置实际价格和试用长度,将功能附加到计划中,并邀请你的团队进入运营商的视野。
尝试打破它
注册成为测试客户。尝试读取另一个组织的数据,观察数据库拒绝。一张卡失败,一个计划降级,看着大门随之而来。
然后排练一年
在 Sandbox 中,使用模拟资金和模拟时间,在发布前运行 SaaS 的第一年:试用版转换或到期、客户在 3 月份升级、卡在 6 月份出现故障并恢复、取消在正确的日期关闭正确的功能。你发布的业务已经运行,但并不希望它会运行。
建造或购买
为什么不直接将堆栈粘合在一起呢?
| 胶合堆栈 | 与 Kliv | |
|---|---|---|
| 租赁 | 身份验证提供商的组织功能加上你编写并永远重新审查的行过滤器。 | 组织在数据库中强制执行,跨租户读取是不可能的,不会被过滤。 |
| 计费 ↔ 访问 | Webhook 处理程序将计费供应商与你的应用关于谁付款的想法进行协调。 | 权利按照本机,计费,没有任何协调的缝隙。 |
| 使用定价 | 计量服务、计费服务以及它们之间的对账工作。 | 电表和发票是同一个系统。 |
| 生命周期电子邮件 | 另一个供应商、另一个模板语言、另一个 Webhook。 | 在模板上的,中内置收据、催款和试用提醒。 |
| 产品生产时间 | 几个月前的底盘首先有差异化特征。 | 底盘是第一天;你的描述已花在产品上。 |
租赁
胶合堆栈: 身份验证提供商的组织功能加上你编写并永远重新审查的行过滤器。
与 Kliv: 组织在数据库中强制执行,跨租户读取是不可能的,不会被过滤。
计费 ↔ 访问
胶合堆栈: Webhook 处理程序将计费供应商与你的应用关于谁付款的想法进行协调。
与 Kliv: 权利按照本机,计费,没有任何协调的缝隙。
使用定价
胶合堆栈: 计量服务、计费服务以及它们之间的对账工作。
与 Kliv: 电表和发票是同一个系统。
生命周期电子邮件
胶合堆栈: 另一个供应商、另一个模板语言、另一个 Webhook。
与 Kliv: 在模板上的,中内置收据、催款和试用提醒。
产品生产时间
胶合堆栈: 几个月前的底盘首先有差异化特征。
与 Kliv: 底盘是第一天;你的描述已花在产品上。
常见问题
租户隔离实际上是如何执行的?
在数据库中,具有行级规则。每个客户都是一个组织,他们的行都带有该边界,页面中的错误不能泄漏其他租户的数据,因为查询本身返回为空。
我可以将订阅与计量使用结合起来吗?
是的,这是一个计划,而不是两个系统:Pro 层,顶部每个渲染 0.$05。订阅对基本费用进行计费,计量表对使用量进行计费,客户可以在一张发票上看到两者。
当客户取消或降级时会发生什么?
权利会根据你的保单立即设置的时间表,或在期末,缩小,并且数据保留。返回的客户会在原地恢复他们的组织,这使得赢回他们成为一个计费事件,而不是迁移。
客户可以管理自己的账单吗?
是的,产品内的计费页面:更新卡、切换计划、读取发票。当付款失败时,催款会重试收费,并在任何人的访问范围缩小之前向客户发送电子邮件。
发布后我可以更改定价吗?
是的,目录是数据。添加层级、拆分计划、引入计量;新价格适用于新结账,现有订阅将保留其购买的条款,直到你另有决定为止。
这是真正的多租户,还是带有功能标志的账户?
真正的租户:每个客户组织都是数据库中的一流边界,拥有自己的用户、角色和行,与 Kliv 本身运行的多租户架构相同。