前段时间看到 WorkBuddy 接入 CloudBase 的案例:用户描述需求,WorkBuddy 生成应用,CloudBase 承接这些应用的数据库、账号、文件和部署。[1] 这个分工让我想起大约五个月前考虑过的一个问题,只是当时更加模糊。
很多自研业务对存储和数据库并不了解,选定存储产品之后,每次仍然需要开发访问接口、处理权限,再把文件和业务数据关联起来。底下已经有数据库和对象存储了,上面为什么还要重复写这么多东西?中间这一层能不能抽象出来?
我一直认为,业务和基础设施之间反复出现的接入工作,有机会独立成为一层产品。Supabase、CloudBase 所属的 BaaS 就在处理这类问题。BaaS 到底交付什么,核心价值落在哪里?哪些团队值得为这一层付费,费用与直接购买基础资源相比又差在哪里?这次沿着具体 API 和计费规则看一遍。
图 1:WorkBuddy 案例原图。用户描述页面、数据、附件和登录需求,上层产品把这些需求转成应用。[1]
1. BaaS 的业界定义
BaaS(Backend as a Service,后端即服务)把应用常用的后端能力作为服务交付。开发者通过 API 或 SDK 使用认证、数据库访问、文件存储、消息通知等能力,由服务提供方负责实现和运行维护。[2][3]
业务仍要定义表结构、谁能访问什么,以及自己的业务流程,平台提供规则的执行机制。Supabase、CloudBase 还允许业务部署自定义函数,补充公共能力之外的逻辑。[4][5]
WorkBuddy 这类上层产品还会调用项目创建、资源配置与部署接口,批量为不同应用交付后端。[1][6][7]
BaaS 关注交付哪些现成的后端能力;Serverless 关注服务器由谁管理,由平台承担资源供给和弹性。Serverless 涵盖计算、集成和数据服务,FaaS(函数即服务)只是其中一种形态。[8] 在云函数里自己实现登录逻辑,用的是 Serverless 计算;直接调用托管认证 API,用的是 BaaS 的现成能力。两者可以组合,BaaS 也不以按调用收费、缩容到零作为定义条件。
2. Supabase:围绕 PostgreSQL 提供应用 API
Supabase 以 PostgreSQL 为中心,把 Auth、PostgREST、Storage、Realtime 和 Edge Functions 组合起来。[9] 开发者可以直接使用 SQL,也可以通过同一个客户端调用这些服务。
图 2:Supabase Architecture 原图,2026 年 10 月 11 日获取。网关为 Envoy;Storage 连接 PostgreSQL 的部分主要涉及元数据与权限。[9]
2.1 数据与身份接口
使用@supabase/supabase-js的createClient(projectUrl, publishableKey)建立客户端后,业务可以调用以下入口。[10]
| SDK 调用 | 提供的能力 |
|---|---|
supabase.auth.signInWithPassword({ email, password }) | 登录并取得用户与会话。[11] |
supabase.from('reports').select('id,title') | 读取业务表的指定列。[12] |
supabase.from('reports').insert(row) | 向业务表写入记录。[13] |
supabase.rpc('confirm_booking', params) | 调用已定义的 PostgreSQL 函数。[14] |
例如,登录后的客户端查询某个项目的报告,可以写成:
const{data:reports,error}=awaitsupabase.from('reports').select('id,title,status').eq('project_id',projectId).limit(20);if(error)throwerror;底下对应的是 PostgREST 数据接口,例如GET /rest/v1/reports?select=id,title,status&project_id=eq.<id>&limit=20。[15] 表结构决定接口的数据形态,SDK 负责请求与结果封装,业务省掉了逐表编写 HTTP 路由、参数解析和查询包装的工作。
用户登录后,客户端在数据请求中携带会话身份;表级GRANT与行级 RLS 决定能执行什么操作、能访问哪些记录。[16][17] 上面代码中的.eq()只是查询条件,用户能否访问项目仍由服务端策略决定。项目成员关系和授权规则需要业务定义,平台承接身份传递和规则执行。
rpc('confirm_booking', params)通过POST /rest/v1/rpc/confirm_booking,调用 PostgREST 允许访问的业务数据库函数。[14] 需要一起完成的数据修改,可以在函数内组织,省去一层转调数据库的 HTTP 服务。
2.2 文件、实时事件与业务函数
| SDK 调用 | 提供的能力 |
|---|---|
supabase.storage.from(bucket).upload(path, file) | 上传文件并返回对象路径。[18] |
supabase.storage.from(bucket).createSignedUrl(path, seconds) | 生成有时效的文件访问链接。[19] |
supabase.channel(topic).on(type, filter, callback).subscribe() | 建立频道事件订阅。[20] |
supabase.functions.invoke('notify-report', { body }) | 调用已部署的 Edge Function。[21] |
Storage 在 PostgreSQL 保存 Bucket 和 Object 元数据,文件字节放在对象存储中;文件访问策略可以写在storage.objects上。[22][23] 签名链接在签发时检查权限,持有链接的人可在有效期内访问。[19]
图 3:Supabase Storage 2021 年发布原图。PostgreSQL 管元数据,对象存储保存文件内容;Kong 是当年的组件。[24][22]
Realtime 的事件类型有不同用途:broadcast分发自定义消息,presence同步在线状态,postgres_changes订阅数据库变更;发送广播用频道的send(),发布在线状态用track()。[20]
Edge Functions 执行服务端 TypeScript 代码。functions.invoke()传入函数名与请求体,底下访问/functions/v1/<name>;适合接 Webhook、调用外部 API、使用服务端密钥。[4][21] 业务负责函数代码和授权,平台负责部署与调用入口。
前端页面通常再配 Vercel 等托管服务;Supabase 也支持开源组件自托管。[25][9]
3. CloudBase:应用 API、计算与发布入口
CloudBase 把数据库、认证、文件和计算资源组织进云开发环境。2026 年 8 月 10 日上线的 PostgreSQL 能力,进一步把身份、文件元数据和业务数据访问放到 PG 模式里。[26][27] 以下 PG 示例采用 Web SDK v3。
3.1 PG 模式的 SDK 与 HTTP API
使用@cloudbase/js-sdk的cloudbase.init({ env: envId, accessKey: publishableKey })初始化app,环境 ID 指向目标环境,公开 Publishable Key 用于应用侧接入。业务侧的主要入口如下。[28][29]
| SDK 调用 | 提供的能力 |
|---|---|
app.auth.signInWithPassword({ username, password }) | 登录并建立用户会话。[29] |
app.rdb().from('reports').select('id,title') | 查询 PostgreSQL 业务表。[30] |
app.rdb().from('reports').insert(row) | 向 PostgreSQL 业务表写入记录。[31] |
app.rdb().rpc('confirm_booking', params) | 调用已定义的数据库函数。[32] |
app.storage.from(bucket).upload(path, file) | 上传文件到 PG 模式的存储服务。[33] |
app.storage.from(bucket).createSignedUrl(path, seconds) | 签发私有文件的临时访问链接。[33] |
app.callFunction({ name: 'notify-report', data }) | 调用已部署的云函数。[34] |
app.ai().createModel('cloudbase').generateText({ model: modelId, messages }) | 调用环境支持的模型生成文本。[35] |
这里app.auth、app.storage是属性,app.rdb()、app.ai()是方法。登录后的 PG 查询形态与前面的例子很接近:
constdb=app.rdb();const{data:reports,error}=awaitdb.from('reports').select('id,title,status').eq('project_id',projectId).limit(20);if(error)throwerror;对应的 HTTP 入口是GET /v1/rdb/rest/reports,同样通过 PostgREST 处理筛选、选列等参数。请求身份进入 PostgreSQL,普通用户的数据读写由表级授权和 RLS 约束。[28]
CloudBase 也保留文档型数据库接口,例如app.database().collection('reports').where({ status: 'published' }).get()。[36] 这是文档集合查询,与app.rdb()的 PG 表访问对应不同的数据模型。
PG 模式下,文件内容在 COS,元数据在 PostgreSQL;app.storage把上传、对象访问和签名封装成应用接口。[37][33] 文件的 RLS 可以查询业务成员关系表。PG 模式目前要求新建环境,原有传统模式环境不能原地升级。[27]
图 4:WorkBuddy 案例中的数据管理界面。数据库、文件和认证已经进入上层产品的云服务入口。[1]
图 5:同一案例中的邮箱认证与 SMTP 设置,展示上层产品如何复用账号能力。[1]
3.2 云函数、容器服务与静态发布
云函数可以承接事件处理或 HTTP 服务;需要自选语言、框架和系统依赖时,可以把完整后端部署到 CloudBase Run,再通过其 HTTP/HTTPS 接口访问。[5][38]
前端构建产物则可以交给静态网站托管,由它提供 CDN、HTTPS 和域名接入。[39] CloudBase CLI 的发布入口也对应不同产物,例如:
# 上传已经构建好的静态站点tcb hosting deploy ./dist-eENV_ID# 部署已有配置和代码的事件云函数tcb fn deploy notify-report-eENV_ID这些命令需要已登录 CLI 并配置目标环境;hosting deploy上传静态目录,不代替前端构建。[40][41]
4. Habitat:内部存储访问的另一种抽象
OpenAI 的 Habitat 面向已有的内部业务服务,在 ChatGPT、API、Codex 等产品与基础存储之间,集中处理路由、授权、Schema 查找、序列化和连接管理。[42]
图 6:OpenAI 原文 Figure 02 的静态截图。SDK 经 Envoy 访问 Habitat,再连接 Cosmos DB,展示服务化后的请求路径。[42]
Habitat 的在线接口采用受限的 Object / Edge 模型,优先控制请求复杂度与访问成本。[42] 它收敛的是内部多产品的存储访问,抽象范围与面向应用公共后端的 BaaS 不同。
5. 计费方式与基础资源的价差
两家的公开收费都包括订阅或套餐,以及额度之外的用量费:Supabase 按组织订阅,CloudBase 普通套餐按环境购买,再分别按活跃用户、资源消耗等计量。[43][44][45]
以下价格查询于 2026 年 10 月 15 日。美元、人民币分别列示,保留官网限时价,不含商务折扣与税费;原生资源对照均使用公开按量单价。
5.1 Supabase
Pro 为25 美元/组织/月,内含每月 10 美元计算抵扣,可覆盖一个 Micro 数据库实例;增加项目或升级实例,支付抵扣之外的计算费。表内金额均为美元:[43][44]
| 计费项 | Pro 内含额度 | 超额单价 |
|---|---|---|
| 普通认证 | 10 万 MAU/月 | 0.00325/MAU |
| 数据库磁盘 | 8 GB/项目 | 0.125/GB·月 |
| 文件存储 | 100 GB | 约 0.0213/GB·月 |
| 非缓存出网 | 250 GB/月 | 0.09/GB |
| 缓存出网 | 独立的 250 GB/月 | 0.03/GB |
| Edge Functions | 200 万次/月 | 2/百万次 |
例如,普通认证达到 20 万 MAU,超额费为(200,000 − 100,000) × 0.00325 = 325 美元,加订阅共 350 美元/月,其他费用另计。MAU 统计当月登录或刷新 Token 的去重用户;例子按 Pro 关闭 Spend Cap、允许超额计费计算。[46]
除磁盘额度按项目计算外,上表额度按组织共享。文件存储按 GB·小时累计,月价为近似值;函数超额调用按百万次一包向上取整。[44][47][48]
再看额度耗尽后的资源单价。原生资源选择 AWSus-east-1,使用按需刊例价,不计免费额度和采购折扣;S3 仍在首 50 TB 存储和首 10 TB 付费出网档位。Supabase 的默认数据库磁盘为 gp3,下面也对照原生 EBS gp3:[47][49][50][51][52][53][54]
| 计量项(单位) | Supabase 超额价 | 原生价格 | 原生服务 |
|---|---|---|---|
| 数据库磁盘(美元/GB·月) | 约 0.125 | 0.08 | EBS gp3 |
| 文件存储(美元/GB·月) | 约 0.0213 | 0.023 | S3 Standard |
| 非缓存出网(美元/GB) | 0.09 | 0.09 | S3 |
| 函数调用(美元/百万次) | 2 | 0.20 | Lambda |
表内沿用各官网的 GB 单位。EBS 只提供块存储;Lambda 的 0.20 美元仅为请求费,执行资源与时长另计,因此这些单项价格不能代表完整服务的价差。[48][54][55]
5.2 CloudBase
CloudBase 将不同资源的用量折成资源点,共用套餐内的点数:[45]
| 套餐 | 月费(元/环境) | 每月资源点 |
|---|---|---|
| 个人版 | 19.9(限时价) | 40,000 |
| 标准版 | 199 | 330,000 |
先抵扣套餐点数,再抵扣加购资源包;启用按量付费后,仍有超出的部分才另行结算。公开基准为1,000 点对应 1 元,个人版的点数可抵扣标价 40 元的资源消耗,额度内不另收费。[45] 账号级平台版另有订阅,上表不代表 WorkBuddy 的合作价格。[56]
下面把 CloudBase 点数统一折成人民币,对照上海的原生 COS、SCF,以及中国大陆 CDN 的公开单价;暂不计两边的套餐、免费额度和资源包抵扣:[45][57][58][59]
| 计量项(单位) | CloudBase | 原生价格 | 原生服务 |
|---|---|---|---|
| 标准存储容量(元/GB·30天) | 0.1182 | 0.118 | COS |
| 标准存储读请求(元/万次) | 0.01 | 0.01 | COS |
| 标准存储写请求(元/万次) | 0.01 | 0.01 | COS |
| 存储 CDN 下行(元/GB) | 0.21 | 0.21 | CDN |
| 存储 CDN 回源(元/GB) | 0.15 | 0.15 | COS |
| 函数执行(元/GB·秒) | 0.00011108 | 0.00011108 | SCF |
| 函数调用(元/万次) | 0.0133 | 0.0133 | SCF |
| 函数外网出流量(元/GB) | 0.8 | 0.8 | SCF |
容量统一按 30 天换算,COS 选标准存储、非多 AZ 价格。[45][58][60] CDN 下行只对照原生每月首 2 TB 档位;之后原生有阶梯降价。下行是 CDN 到用户,回源是 COS 到 CDN,两段流量分别计量,GB 沿用各官网口径。[59][61]
SDK/HTTP API 和身份认证另按调用次数消耗资源点,分别折合 0.1 元和 0.5 元/万次;认证调用次数与 Supabase 的 MAU 是不同指标。[45]
5.3 对客价格与采购成本
对客单价与原生刊例价持平,仍然可能有资源转售的毛利。Supabase 是独立厂商,集中采购基础资源有机会获得低于零售价的成本;AWS 公开提供按规模分档的价格,以及以消费承诺换取折扣的 Private Pricing。[62] CloudBase 的内部资源成本同样不能直接用腾讯云对外刊例价代替。本文没有两家的实际采购或内部结算数据,因此不估算具体折扣和毛利率。
这类平台的收入可以拆为订阅 + MAU 等应用服务计费 + 基础资源转售,采购折扣则可能形成转售毛利,还要支撑服务运行。业务最终要比较整套账单与自建、维护相同能力的成本。[63]
6. 结束语
BaaS 到底交付什么,核心价值落在哪里?它把基础资源接成业务可以直接使用的公共后端服务,由专业团队承担实现和持续维护。业务为这一层付费,买的是少做重复建设、少承担通用能力的运行负担。
哪些团队值得为这一层付费?后端人力有限的初期团队、需要批量交付应用的平台,以及接入工作重复的多产品组织。前提是公共服务能满足业务要求,省下的时间和维护投入值得这笔费用。
连接即服务的价值,在于由专业团队长期负责业务到基础设施之间的接入。Habitat 提供了内部存储访问服务的参考;领域还可以收窄到 Agent 会话消息。[42] 具体到司内 Agent Message 即服务,我更看重的是存储团队其实更了解怎样写出更快、更稳的系统。当读写、顺序、权限和保留时间这些 API 语义已经定义清楚,由存储团队承担它们与基础设施之间的连接,能够把对访问模式、性能和故障处理的理解放进实现里。
垂直领域要有真实的付费意愿。我认为,先搭一个试图包办所有业务的大中台,再要求各业务接入的路线已经过时。连接即服务应该从有人愿意付费的具体问题开始。Bottcher 对内部平台的建议也是从已验证的需求出发,让使用者愿意选择它。[64]
我不看好独立通用记忆服务,它的付费意愿与处理成本很难匹配。个人想用公共服务却未必愿意付费,有实力的团队又可以自建;什么值得记,最终仍由业务定义。抽取、整理、Embedding 和评估都是持续成本,Harness 已能内化部分记忆能力,模型团队也有训练专门能力的空间。[65][66] 对既不做 Agent、也不掌握模型能力,却想独立出售通用记忆模块的团队,我的判断是,这条商业路线已经宣告死亡。能抽象出一个模块,距离做成有人付费的服务还很远。
产品阶段不同,业务与基础设施之间的分工也会变化。业务有人、有钱,也能持续维护之后,自建更容易围绕自己的负载优化;业务初期首先想把产品做出来,专业团队能把公共服务做好,自然值得购买。就像基础架构团队也会直接使用成熟的操作系统。五个月前我想到的那层抽象,值得继续做的就是这类分工:业务愿意交出来,专业团队能把约定的服务长期做好。
7. 参考资料
[1] CloudBase:WorkBuddy × CloudBase:AI 应用生成平台的后端底座(2026-09-18)
[2] Cloudflare:What is BaaS? Backend-as-a-Service vs. Serverless
[3] Okta:What Is BaaS (Backend as a Service)? Definition and Usage
[4] Supabase Docs:Edge Functions
[5] CloudBase Docs:云函数概述
[6] Supabase Docs:Supabase for Platforms
[7] 腾讯云 API:创建云开发环境 CreateEnv
[8] AWS:Serverless on AWS
[9] Supabase Docs:Architecture
[10] Supabase JavaScript Reference:Initializing
[11] Supabase JavaScript Reference:Sign in a user
[12] Supabase JavaScript Reference:Fetch data
[13] Supabase JavaScript Reference:Insert data
[14] Supabase JavaScript Reference:Call a Postgres function
[15] Supabase Docs:Data REST API
[16] Supabase Docs:Auth architecture
[17] Supabase Docs:Row Level Security
[18] Supabase JavaScript Reference:Upload a file
[19] Supabase JavaScript Reference:Create a signed URL
[20] Supabase Docs:Realtime
[21] Supabase JavaScript Reference:Invokes a Supabase Edge Function
[22] Supabase Docs:The Storage Schema
[23] Supabase Docs:Storage Access Control
[24] Supabase:Supabase Storage(2021-03-30)
[25] Supabase Docs:Vercel Marketplace
[26] CloudBase:CloudBase 正式支持 PostgreSQL(2026-08-10)
[27] CloudBase Docs:PG 模式概述
[28] CloudBase Docs:PostgreSQL 架构与权限模型
[29] CloudBase Web SDK v3:身份认证
[30] CloudBase Web SDK v3 PG:查询数据
[31] CloudBase Web SDK v3 PG:插入数据
[32] CloudBase Web SDK v3 PG:调用数据库函数
[33] CloudBase Web SDK v3 PG:云存储
[34] CloudBase Web SDK v3:云函数
[35] CloudBase Web SDK v3:AI 模型
[36] CloudBase Web SDK v3:文档型数据库查询
[37] CloudBase Docs:PG 模式云存储权限管理
[38] CloudBase Docs:云托管介绍
[39] CloudBase Docs:静态网站托管
[40] CloudBase CLI:静态网站托管
[41] CloudBase CLI:部署云函数
[42] OpenAI:Rapidly scaling online storage to serve over 1 billion ChatGPT users(2026-09-11)
[43] Supabase:Pricing & Fees(2026-10-15 查询)
[44] Supabase Docs:Billing on Supabase
[45] 腾讯云:CloudBase 资源点价格文档(2026-09-23 更新)
[46] Supabase Docs:Monthly Active Users
[47] Supabase Docs:Storage size usage
[48] Supabase Docs:Edge Function Invocations
[49] Supabase Docs:Egress usage
[50] AWS Price List:Amazon S3,us-east-1(2026-10-15 查询)
[51] AWS Price List:Data Transfer,us-east-1(2026-10-15 查询)
[52] Supabase Docs:Disk size usage
[53] Supabase Docs:Compute and Disk
[54] AWS:Amazon EBS pricing
[55] AWS:AWS Lambda pricing
[56] CloudBase Docs:平台版概述
[57] 腾讯云:云函数基本能力产品定价
[58] 腾讯云:对象存储 COS 定价(上海,2026-10-15 查询)
[59] 腾讯云:CDN 基础服务计费
[60] 腾讯云:COS 存储容量、请求次数及数据取回按日结算公告
[61] 腾讯云:COS 流量费用
[62] AWS:Cloud Pricing — Volume Discounts and Private Pricing
[63] Supabase Docs:Self-Hosting
[64] Evan Bottcher:What I Talk About When I Talk About Platforms(2018-03-05)
[65] Claude Code Docs:How Claude remembers your project
[66] UMEM:Unified Memory Extraction and Management Framework for Generalizable Memory(2026-02-11)