给单打独斗构建者的推荐默认路径
这是一条已经对无数个单人项目奏效的路线。每一步都只在你真正需要时才采取。
-
原型:静态 + 一个托管后端服务。 把你的前端放到静态托管上(Cloudflare Pages、Vercel 或 Netlify)。对于数据和身份验证,依靠一个像 Supabase 或 Firebase 这样的托管后端,这样你就跳过了自己运行数据库。成本:基本为零。
-
早期生产:添加边缘函数或无服务器函数。 当你需要服务器端逻辑时——保密的 调用、webhook、自定义身份验证——在同一个平台上添加函数。仍然缩减到零,仍然便宜,仍然一次部署。
-
真实产品:把后端迁移到容器平台。 当应用超出了函数的能力范围(长时间运行的进程、想要一个持久服务器的框架、后台任务)时,把它容器化,部署到 Railway、Render 或 Fly.io。让 AI 来写
Dockerfile和平台配置。 -
扩展或专门化:到那时才考虑 或像 AWS 这样的云提供商。 这是复杂度(以及你的账单)跳升的地方。大多数单打独斗的构建者从不需要这一步,而这是把事情做对的标志——而不是一种局限。
CDN(Content Delivery Network,内容分发网络)坐在这条路径的前面,会根据它是否已有副本而极大地改变速度。缓存 HIT 从边缘即刻应答;缓存 MISS 则必须先一路回到你的服务器:
CACHE HIT (快 — 大多数请求)
┌─────────┐ ┌───────────┐
│ BROWSER │ ───▶ │ EDGE CACHE│ ──┐ 副本已在此
└─────────┘ ◀─── │ 有 │ ◀─┘ 毫秒级响应
└───────────┘
CACHE MISS (慢 — 首次请求)
┌─────────┐ ┌───────────┐ ┌──────────┐
│ BROWSER │ ───▶ │ EDGE CACHE│ ───▶ │ SERVER │ 获取并存储
└─────────┘ ◀─── │ 空 │ ◀─── │ (origin) │ 下次 = HIT
└───────────┘ └──────────┘
要避免的错误是从第 4 步开始,仅仅因为那是"真正的工程师"据说会用的东西。事实恰恰相反:从简单开始才是资深的做法。你随时可以晋级到更多的控制权,但你很难找回那些与你本不需要的基础设施搏斗而损失掉的几个月。