你的AI应用真的需要一个后端吗?加之前先想清楚

只有三种情况真正需要后端——处理支付、让API密钥和敏感信息不暴露在浏览器里,以及在多个用户同时编辑同一数据时充当唯一的真相来源。

你开始纠结的那一刻

后端说白了就是运行在浏览器之外某个地方的代码——它做浏览器本不该做的事,比如收钱、保管密钥,并且和数据库打交道。大多数AI搭建的应用其实已经在做这些事了,只是不一定长成你想象中的样子。

你的应用能跑,用户在注册,功能在一个个上线。然后一种隐隐的不安冒了出来:是不是应该有个”真正的后端”?人人都在谈后端。正经应用都有后端。而你的搭建工具给你的是个TypeScript加React的东西,你开始怀疑这是不是……不够专业。

事实是:这种感觉多半是错的。后端做的事没有一样是魔法,你的AI应用很可能早就在做了。如果没在做,加个后端也解决不了真正的问题——那个真正坏掉的地方。

这篇文章要说的,就是怎么分辨这两者。

后端到底是干什么用的?

后端存在的理由只有三个:处理钱、保管敏感信息,以及在多人编辑同一份数据时充当唯一的真相来源。

处理钱。 如果你的应用要收款或者向用户收费,支付处理商会要求你有后端。浏览器不能直接拿着你的密钥去调Stripe(那等于把密钥写进客户端代码里,谁都能看到)。所以你需要一台服务器来保管密钥,接收浏览器发来的请求,再代表用户去和Stripe对话。这就是后端。它不用多复杂——大多数应用一个Node函数就够了——但它必须存在。

保管敏感信息。 API密钥、数据库密码、认证令牌——这些东西不能放在浏览器里,因为任何用你应用的人都能读到。如果你的AI应用要调用一个需要认证的外部服务,浏览器自己是做不到的。应用可以和你的后端对话,后端掌握密钥,再去调用那个外部服务。你的敏感信息就这样保住了。

数据的唯一真相来源。 如果两个用户同时在用你的应用,而且都在改同一份数据,你就需要一个中央权威来判定谁的修改算数。浏览器当不了裁判——两个浏览器互相看不见对方。所以你需要一台服务器来说:“Alice的改名生效,Bob的修改晚了30毫秒,不算。“那台服务器就是后端。这也是为什么数据库这一节很重要——你需要一个所有数据真正落脚的地方。

注意,没上榜的是:性能、专业感、可扩展性、“因为大家都有”。正是这些感觉,诱使你加上根本不需要的复杂度。

怎么判断自己是不是真的需要后端?

有三个信号说明你确实需要后端:应用变慢的原因浏览器自己解决不了、你需要在用户看不见也打断不了的地方运行代码、或者两个用户在互相覆盖对方的数据。下面说说怎么判断,如果有的话,是哪一种情况适用于你。

“它变慢了。” 如果用户在反映变慢,问题通常出在三个地方之一:浏览器干的活太多(CPU吃紧、算法不好、渲染的DOM太多)、网络慢(挺遗憾,但确实如此)、或者数据库慢(查询太多、索引不对——你的AI应用其实已经在和数据库打交道了,通常还是个不错的数据库)。真正的后端解决不了浏览器里的CPU开销。真正的后端解决不了网络延迟(物理规律不好惹)。后端可以通过加缓存或更聪明的查询方式来帮上数据库的忙,但你的搭建工具大概率已经想到了。

一个真实的变慢故事:一个待办事项应用在加载列表时很卡。开发者当时想的是”我需要一个真正的后端”。实际问题是:应用每次都在加载全部5000条待办,而不是先加载前50条再配个”加载更多”按钮。一个下午就修好了,后端根本没动。后端从来不是问题所在。

“我想运行一些用户不该看到的代码。” 这是唯一站得住脚的理由,而且比你想的要少见得多。举例:用户注册后发一封欢迎邮件(你希望这段代码即使用户关掉标签页也照样跑)、跑一个通宵处理文件的后台任务、按计划调用某个外部API。这些理由都成立。你确实需要某个东西在某台服务器上跑着。但它不一定非得是带认证、带路由、带数据库的完整后端。它可以只是一个按计划运行、或者被webhook调用的”云函数”。比整个后端简单多了。

“多个用户在同时修改同一份数据,我的更新丢了。” 这个是真问题。如果你看到”Alice的修改不见了”或者”两个人编辑同一张表单,后一个人的修改把前一个人的覆盖了”,那你遇到的就是并发冲突问题。有些数据库处理得比较好,有些AI搭建工具默认用的数据库处理得不好。但解决办法不一定是整个后端——可能是换个数据库、加个锁、或者加乐观并发控制(说白了就是”记住旧版本号,更新前先比对一下”)。问问你的搭建工具能不能换数据库或者加版本追踪。你需要的可能不是后端,而是更聪明的数据库设置。

哪些看起来像后端问题,其实不是?

有三件事经常被误认为是后端问题,其实都不是:JavaScript全放在一处、没有单独的API层、以及那种没有具体对象的泛泛的安全焦虑。

“代码都是JavaScript,而且全放在一个地方。” 很多成功的应用就是浏览器里的JavaScript,直接对话一个真实的数据库(Firebase、Supabase、MongoDB Atlas,随便你的搭建工具用的是哪个)。没有”真正的后端”服务器。一切照样运转。代码用同一种语言、放在同一个地方,并不代表它不真实。JavaScript是能干活的。

“没有单独的API层。” 你的浏览器直接和数据库对话。很多人的第一反应是”这不对吧,中间应该有个API”。但如果那个API做的事就是”从这张表选出来返回”或者”插入这张表”,中间这一层其实什么都没加,纯粹是多余的开销。你的数据库本身就是个API。能直接调就直接调。

“我担心安全问题。” 大多数AI搭建的应用自带合理的默认设置:密码是哈希过的,SQL注入不可能发生(数据库库会拦住),敏感信息不会留在客户端。如果你真的担心,该做的是去问搭建工具这些事有没有做到位,而不是条件反射地加个后端。一个没做好的后端,比一个做得好的前端更容易出问题。

一份诚实的决策树

不靠猜测,按下面这个流程来判断:

  1. 你的应用现在能不能在没有后端的情况下正常工作? 能的话,进入第2步。不能的话,说明你已经有后端了(或者需要建一个)。继续往下看。(你的AI应用说不定已经有了。)

  2. 你想加的这个东西,是浏览器从根本上做不到的吗? 收钱?肯定做不到。发邮件?也做不到。用密钥调外部API?做不到。别的呢?大概率浏览器能做。如果是浏览器能做、只是慢,进入第3步。如果是浏览器根本做不到的事,那你需要后端。

  3. 修好真正的问题之后,变慢的感觉还在吗? 加载的东西少一点?缓存更聪明一点?批量请求?换个更好的数据库?诀窍在于:先搞清楚到底哪里慢。把明显的修复办法都试过之后,再考虑加后端。因为加后端解决不了一个低效的算法——它只是把这个算法搬到了另一台机器上。

  4. 如果你加了后端,它真的解决问题了吗? 这就是陷阱所在。你为了”提升性能”加了个后端,结果延迟反而变差了,因为现在你要先调用后端,后端再去调数据库——而这本来在浏览器里一步就能搞定。先测量,再动手。

你需要的是完整后端,还是一个云函数就够了?

如果你想做的事能塞进一个运行几秒钟就结束的单一函数里,那你需要的是云函数,而不是完整后端。用下面这个测试来判断。

想想你希望后端做什么。现在设想把它写成一个单独的JavaScript函数(可能就100行左右),被调用时跑几秒钟然后结束。这件事能塞进这个盒子里吗?

  • 处理支付webhook?能。
  • 发一封欢迎邮件?能。
  • 上传前校验一个文件?能。
  • 跑一个每晚生成的报表?能(算是吧——你可以按计划去调用它)。

如果答案是”能”,你不需要”真正的后端”。你需要的是云函数。Vercel、AWS Lambda、Google Cloud Functions,随便哪个都行。更便宜、更简单,你也不用天天照看一台服务器。

如果答案是”不能”——如果你需要一个一直运行、要处理成千上万请求、带着复杂业务逻辑的东西——那你考虑的才是真正的后端,这场对话才更重要。但说实话,对用AI搭建应用的人来说,这种情况很少见。大部分看起来像”后端工作”的东西,其实就是”调这个API”或者”存这份数据”,而你的搭建工具大概率早就处理好了。

该问你的搭建工具的那个真正问题

在加任何东西之前,先问搭建工具一个问题:现在到底哪里坏了,是后端能真正修好的?

如果对方给出的是具体答案——“我们需要收款""我们需要用密钥调API""我们有数据冲突”——很好。你清楚自己在朝什么方向搭建。

如果答案是”呃,正经应用都有后端”,那只是一种感觉,不是理由。这和你想给一个没人共享的应用加用户账户、或者给明明只有三样东西的数据加十五张表的表结构,是同一种感觉。这是范围蔓延的味道,只不过戴了顶后端的帽子。

大多数成功的单人应用,并没有你想象中那种”真正的后端”。它们有个数据库(你的搭建工具大概率早就配好了)。可能有一两个按计划运行的函数。但真正干活的,是浏览器里跑的代码,它直接和数据库对话,不用中间层就能一个个上线功能。

你的应用现在这样很可能就挺好。觉得它不够好的那种感觉,通常是野心的声音,不是事实。等它真正解决一个实际问题时,再加后端——不要因为”感觉应该有”就加。


下次你在构思一个新功能时,不妨问问自己:这件事是浏览器从根本上做不到的吗?还是因为”后端”这个词听多了,你就以为需要一个?这两个问题的答案是不一样的,而只有其中一个才是你真正该操心的事。