我之前用过很久的 Supabase ,个人觉得 Supabase 对于独立开发真是太方便了,特别是出海场景和Vibe Coding的场景,所以准备写一个系列文章,介绍下 Supabase 的功能。这个系列的文章主要面向的用户是对 Supabase 不了解的独立开发者们。即使不懂代码,看完这个系列也能帮助你通过Vibe Coding的形式做出产品。
Supabase 是什么?
一般应用都会分为前端和后端两部分,前端即用户接触的部分,关乎用户体验,包括网站、手机里的App、微信里的小程序、电脑里的桌面应用等,后端则是用户无法直接接触到的部分,一般部署在服务器上,关乎着应用的业务逻辑,比如订单、商城等逻辑。对于前端,除了如在线文档、在线设计系统,大部分的用户界面都是比较简单且直观可视化的,即使没有代码基础也可以通过Vibe Coding来让AI直接写出来或者调整,但是对于后端,则稍微有点复杂,你需要一些服务器运维的知识,另外这里的业务逻辑编码也不如前端那么直观,对于不懂代码的用户还是有一些门槛的。
Supabase 就是一个致力于解决后端复杂性的平台,这样的平台统称为 Baas 平台,BaaS 表示 Backend as a Service,指后端被服务化,可以直接使用,另外 Supabase 也有一部分的 FaaS 的能力,即 Function as a Service,叫做边缘函数,可以用来增强 Supabase 的能力。
Supabase 可以做哪些事情
- 无需购买和运维服务器。独立开发最重要的事情是验证、开发、营销,运维服务器简直费力不太好。
- 无需购买和运维数据库。Supabase 自带了一个 Postgres 数据库,这也是 Supabase 的核心,整个 Supabase 以此为基石构建。
- Supabase Auth 轻松完成用户系统和社交登录。每一个应用几乎都需要一个用户系统,用 Supabase Auth 你只需要10分钟就可以搞定,包括社交登录。社交登录就是 Google 登录,微信登录这些。如果不写用户系统和注册登录的逻辑,想想可以省下多少时间啊。
- Supabase Database 可以完成大部分的CRUD(创建查询更新删除数据)。大部分的CRUD代码都是非常模版化的,但是如果自己编写后端逻辑和接口的话,还是需要联调的。这个功能可以配合 Supabase Auth 完成权限控制。
- Supabase Storage 可以存放你的图片、音频、视频、文档等数据,不用单独去购买对象存储。而且和 Supabase Database 一样,Supabase Storage 可以配合 Supabase Auth 完成权限控制。自己做一套类似的控制逻辑还是有不少成本的。
- Supabase Realtime 可以用来构建需要实时通信的场景,包括:消息推送、即时通信、多人聊天室、多人在线游戏等等。实时通信的构建即使对高级程序员来说也是非常复杂的,可以说 Supabase 极大的降低了这一块的难度,同样也可以通过 Supabase Auth 完成权限控制。
- Supabase Edge 是一套 FaaS,可以让你编写复杂的代码逻辑,完成核心业务,比如AI生成视频这一类的业务逻辑。Supabase Edge 使用 JS/TS 语言,全球部署,可以就近在离用户比较近的地方启动。
- Supabase Database 中还有一些数据库扩展,比如 pg_cron 用来实现定时任务,pg_net 可以发送网络请求等。
Supabase 我个人推荐的独立开发流程
- 识别出你的程序的业务核心逻辑
- 将其设计为 Supabase Database中的表,并设计表的访问策略
- 如果需要存放图片、音频、视频、文档等,则将其设计为 Supabase Storage 中的bucket及路径,并设计对象的访问策略
- 如果需要实时通信,则将其设计为 Supabase Realtime的三种类型之一,并设计访问策略
- 将核心复杂的业务逻辑通过 Supabase Edge 实现出来
基本上,以上就是一个完整的步骤了。
Supabase 在哪里可以用呢
如果你做海外产品,那么我建议你无脑选择官方的 Supabase。不过其对国内的访问存在一些网络延迟,大概在1-2s之间。
如果你做国内产品,那么我建议你选择阿里云的 RDS Supabase。阿里云的 Supabase 可以支持支付宝和微信登录,海外的不支持。阿里云的 Supabase Edge 应该是不支持的,不过Supabase Edge的能力本质上就是一个FaaS,可以通过阿里云的 Serverless 或者 传统的Serverfull 服务来代替。
如果没有非常明确强烈的要求,我不建议自托管方案。
下一篇文章,我会重点开始介绍 Supabase Auth。