从一到无穷大 #99:连接即服务:业务与基础设施的距离 前段时间看到 WorkBuddy 接入 CloudBase 的案例用户描述需求WorkBuddy 生成应用CloudBase 承接这些应用的数据库、账号、文件和部署。[1] 这个分工让我想起大约五个月前考虑过的一个问题只是当时更加模糊。很多自研业务对存储和数据库并不了解选定存储产品之后每次仍然需要开发访问接口、处理权限再把文件和业务数据关联起来。底下已经有数据库和对象存储了上面为什么还要重复写这么多东西中间这一层能不能抽象出来我一直认为业务和基础设施之间反复出现的接入工作有机会独立成为一层产品。Supabase、CloudBase 所属的 BaaS 就在处理这类问题。BaaS 到底交付什么核心价值落在哪里哪些团队值得为这一层付费费用与直接购买基础资源相比又差在哪里这次沿着具体 API 和计费规则看一遍。图 1WorkBuddy 案例原图。用户描述页面、数据、附件和登录需求上层产品把这些需求转成应用。[1]1. BaaS 的业界定义BaaSBackend 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 提供应用 APISupabase 以 PostgreSQL 为中心把 Auth、PostgREST、Storage、Realtime 和 Edge Functions 组合起来。[9] 开发者可以直接使用 SQL也可以通过同一个客户端调用这些服务。图 2Supabase Architecture 原图2026 年 10 月 11 日获取。网关为 EnvoyStorage 连接 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?selectid,title,statusproject_ideq.idlimit20。[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]图 3Supabase 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 查询形态与前面的例子很接近constdbapp.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元数据在 PostgreSQLapp.storage把上传、对象访问和签名封装成应用接口。[37][33] 文件的 RLS 可以查询业务成员关系表。PG 模式目前要求新建环境原有传统模式环境不能原地升级。[27]图 4WorkBuddy 案例中的数据管理界面。数据库、文件和认证已经进入上层产品的云服务入口。[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]图 6OpenAI 原文 Figure 02 的静态截图。SDK 经 Envoy 访问 Habitat再连接 Cosmos DB展示服务化后的请求路径。[42]Habitat 的在线接口采用受限的 Object / Edge 模型优先控制请求复杂度与访问成本。[42] 它收敛的是内部多产品的存储访问抽象范围与面向应用公共后端的 BaaS 不同。5. 计费方式与基础资源的价差两家的公开收费都包括订阅或套餐以及额度之外的用量费Supabase 按组织订阅CloudBase 普通套餐按环境购买再分别按活跃用户、资源消耗等计量。[43][44][45]以下价格查询于 2026 年 10 月 15 日。美元、人民币分别列示保留官网限时价不含商务折扣与税费原生资源对照均使用公开按量单价。5.1 SupabasePro 为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/GBEdge Functions200 万次/月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.1250.08EBS gp3文件存储美元/GB·月约 0.02130.023S3 Standard非缓存出网美元/GB0.090.09S3函数调用美元/百万次20.20Lambda表内沿用各官网的 GB 单位。EBS 只提供块存储Lambda 的 0.20 美元仅为请求费执行资源与时长另计因此这些单项价格不能代表完整服务的价差。[48][54][55]5.2 CloudBaseCloudBase 将不同资源的用量折成资源点共用套餐内的点数[45]套餐月费元/环境每月资源点个人版19.9限时价40,000标准版199330,000先抵扣套餐点数再抵扣加购资源包启用按量付费后仍有超出的部分才另行结算。公开基准为1,000 点对应 1 元个人版的点数可抵扣标价 40 元的资源消耗额度内不另收费。[45] 账号级平台版另有订阅上表不代表 WorkBuddy 的合作价格。[56]下面把 CloudBase 点数统一折成人民币对照上海的原生 COS、SCF以及中国大陆 CDN 的公开单价暂不计两边的套餐、免费额度和资源包抵扣[45][57][58][59]计量项单位CloudBase原生价格原生服务标准存储容量元/GB·30天0.11820.118COS标准存储读请求元/万次0.010.01COS标准存储写请求元/万次0.010.01COS存储 CDN 下行元/GB0.210.21CDN存储 CDN 回源元/GB0.150.15COS函数执行元/GB·秒0.000111080.00011108SCF函数调用元/万次0.01330.0133SCF函数外网出流量元/GB0.80.8SCF容量统一按 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] CloudBaseWorkBuddy × CloudBaseAI 应用生成平台的后端底座2026-09-18[2] CloudflareWhat is BaaS? Backend-as-a-Service vs. Serverless[3] OktaWhat Is BaaS (Backend as a Service)? Definition and Usage[4] Supabase DocsEdge Functions[5] CloudBase Docs云函数概述[6] Supabase DocsSupabase for Platforms[7] 腾讯云 API创建云开发环境 CreateEnv[8] AWSServerless on AWS[9] Supabase DocsArchitecture[10] Supabase JavaScript ReferenceInitializing[11] Supabase JavaScript ReferenceSign in a user[12] Supabase JavaScript ReferenceFetch data[13] Supabase JavaScript ReferenceInsert data[14] Supabase JavaScript ReferenceCall a Postgres function[15] Supabase DocsData REST API[16] Supabase DocsAuth architecture[17] Supabase DocsRow Level Security[18] Supabase JavaScript ReferenceUpload a file[19] Supabase JavaScript ReferenceCreate a signed URL[20] Supabase DocsRealtime[21] Supabase JavaScript ReferenceInvokes a Supabase Edge Function[22] Supabase DocsThe Storage Schema[23] Supabase DocsStorage Access Control[24] SupabaseSupabase Storage2021-03-30[25] Supabase DocsVercel Marketplace[26] CloudBaseCloudBase 正式支持 PostgreSQL2026-08-10[27] CloudBase DocsPG 模式概述[28] CloudBase DocsPostgreSQL 架构与权限模型[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 v3AI 模型[36] CloudBase Web SDK v3文档型数据库查询[37] CloudBase DocsPG 模式云存储权限管理[38] CloudBase Docs云托管介绍[39] CloudBase Docs静态网站托管[40] CloudBase CLI静态网站托管[41] CloudBase CLI部署云函数[42] OpenAIRapidly scaling online storage to serve over 1 billion ChatGPT users2026-09-11[43] SupabasePricing Fees2026-10-15 查询[44] Supabase DocsBilling on Supabase[45] 腾讯云CloudBase 资源点价格文档2026-09-23 更新[46] Supabase DocsMonthly Active Users[47] Supabase DocsStorage size usage[48] Supabase DocsEdge Function Invocations[49] Supabase DocsEgress usage[50] AWS Price ListAmazon S3us-east-12026-10-15 查询[51] AWS Price ListData Transferus-east-12026-10-15 查询[52] Supabase DocsDisk size usage[53] Supabase DocsCompute and Disk[54] AWSAmazon EBS pricing[55] AWSAWS Lambda pricing[56] CloudBase Docs平台版概述[57] 腾讯云云函数基本能力产品定价[58] 腾讯云对象存储 COS 定价上海2026-10-15 查询[59] 腾讯云CDN 基础服务计费[60] 腾讯云COS 存储容量、请求次数及数据取回按日结算公告[61] 腾讯云COS 流量费用[62] AWSCloud Pricing — Volume Discounts and Private Pricing[63] Supabase DocsSelf-Hosting[64] Evan BottcherWhat I Talk About When I Talk About Platforms2018-03-05[65] Claude Code DocsHow Claude remembers your project[66] UMEMUnified Memory Extraction and Management Framework for Generalizable Memory2026-02-11