news 2026/10/17 16:49:58

从一到无穷大 #99:连接即服务:业务与基础设施的距离

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
从一到无穷大 #99:连接即服务:业务与基础设施的距离

前段时间看到 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 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
非缓存出网(美元/GB)0.090.09S3
函数调用(美元/百万次)20.20Lambda

表内沿用各官网的 GB 单位。EBS 只提供块存储;Lambda 的 0.20 美元仅为请求费,执行资源与时长另计,因此这些单项价格不能代表完整服务的价差。[48][54][55]

5.2 CloudBase

CloudBase 将不同资源的用量折成资源点,共用套餐内的点数:[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 下行(元/GB)0.210.21CDN
存储 CDN 回源(元/GB)0.150.15COS
函数执行(元/GB·秒)0.000111080.00011108SCF
函数调用(元/万次)0.01330.0133SCF
函数外网出流量(元/GB)0.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. 结束语

  1. BaaS 到底交付什么,核心价值落在哪里?它把基础资源接成业务可以直接使用的公共后端服务,由专业团队承担实现和持续维护。业务为这一层付费,买的是少做重复建设、少承担通用能力的运行负担。

  2. 哪些团队值得为这一层付费?后端人力有限的初期团队、需要批量交付应用的平台,以及接入工作重复的多产品组织。前提是公共服务能满足业务要求,省下的时间和维护投入值得这笔费用。

连接即服务的价值,在于由专业团队长期负责业务到基础设施之间的接入。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)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/17 16:48:14

大厂Java后端面试核心考点:Spring Boot、微服务与高并发实战指南

1. 这场面试&#xff0c;到底在考什么先把话说在前面&#xff1a;Java后端这个赛道&#xff0c;现在已经不是“会点框架、能写CRUD”就能混进去的时代了。我身边不少朋友&#xff0c;简历上写着“熟练掌握Spring Boot、熟悉微服务架构”&#xff0c;结果一到技术面就被问得原形…

作者头像 李华
网站建设 2026/10/17 16:47:49

风机选型不再烧电机:昆仑工具V3.2.6安装校核全攻略

简介&#xff1a;昆仑风机选型工具V3.2.6安装版面向暖通、环保、冶金、电力等行业的工程技术人员&#xff0c;帮助完成常见工业风机的风量、风压、功率、转速等关键参数输入与自动校核&#xff0c;内置厂商数据库和选型逻辑&#xff0c;可快速输出适配型号及基础技术参数&#…

作者头像 李华
网站建设 2026/10/17 16:47:31

GPT-5.4实战指南:从提示词到Agent的自动化工作流

1. 切入正题&#xff1a;这份GPT-5.4实战指南到底讲什么先说结论&#xff1a;这是一份面向2026年AI应用落地场景的实战操作手册&#xff0c;核心围绕大语言模型&#xff08;LLM&#xff09;的日常化、产品化、流程化使用展开&#xff0c;整理成了一份65页的PDF报告。标题里写的…

作者头像 李华
网站建设 2026/10/17 16:46:48

B/S与C/S架构本质区别:通信模型、资源归属与部署粒度

1. 从一次线上故障说起&#xff1a;为什么架构选型错了&#xff0c;整个系统就“喘不过气”去年参与一个教育类平台的二期迭代时&#xff0c;团队在压力测试阶段遭遇了典型症状&#xff1a;用户数刚突破3000并发&#xff0c;后台服务响应延迟就飙升到8秒以上&#xff0c;监控面…

作者头像 李华
网站建设 2026/10/17 16:46:38

ML Kit设备端AI实战:从云端OCR迁移到本地推理的选型与避坑指南

1. 设备端AI到底在解决什么问题第一次接触ML Kit是在一个离线票据识别的需求里。当时团队的第一反应是调云端OCR接口&#xff0c;但很快就撞上了三堵墙&#xff1a;一是现场网络时断时续&#xff0c;二是票据上带着客户名称和金额&#xff0c;走云端合规上过不去&#xff0c;三…

作者头像 李华
网站建设 2026/10/17 16:46:36

DSP2812音乐播放器实战:定点DSP如何播放WAV音频

简介&#xff1a;针对DSP嵌入式初学者的硬件音乐播放器完整实现方案&#xff0c;利用TI TMS320F2812高性能微控制器完成音频解码、播放控制与硬件联动&#xff0c;适合学习数字信号处理、中断机制和嵌入式系统集成开发。压缩包共40个文件&#xff0c;约70KB&#xff0c;以DSP28…

作者头像 李华