没有后端的应用

在 infoQ 上这篇文章不用后端:noBackend 是什么?有什么好处?,阿里的王涛对这种没有后端的架构做了介绍和探讨。以下是文章引言。

在近期举办的前端趋势 2013大会上,Gregor Martynus 做了一场题为“各位快看,不用后端!”的报告,站在前端的视角谈应用开发,服务端组件只退化到实现浏览器尚不支持的特性,这种方式与传统开发方式截然相反,后者首先要关注应用服务端,然后再利用前端技巧来提升应用。他们还建了一个名为noBackend 的网站来深入传播这种理念。

王涛认为:这种模式给了前端开发人员更大的挑战和机遇。这种模式也不是横空出世的,它是经历了后端为主,前后端分离的阶段之后的另一个发展方向。当前前后端分离的模式正在大规模使用中。

诚然,在当前流行的前后端分离开发的模式中,也越来越体现出这种模式,前端越来越重,对于安全性,机密性不强的逻辑都慢慢地放到前端来做。在我第二家雇主做的那款网页游戏中也很有体现。前后端的人员比例已经在 1:1,很多公司会更高,前端开发不仅要处理 UI,还要处理越来越多的业务逻辑。很多时候前端逻辑和后端逻辑有很大的重复。前端用于快速响应用户行为,后端用于验证后保存到数据库。比如根据当前属性,能不能穿上某种装备。前端判断可以,那么就让用户穿上装备,并且通知后端。后端判断可以,就保存到数据库,如果不可以(可能是用户使用外挂修改了自身属性),就返回错误让前端取消刚才的行为。

前面我们提到很多应用中,后端就相当于是个数据库,前端才是应用的主体,有着完整的业务逻辑。但是后端着不可替代的验证作用。检验用户数据格式,数值,用户有没有作弊,以及保存到数据库中。

所以这种没有后端的模式比较适合于这样的情况:

(1)用户于用户之间没有关系的应用。比如 TODO List 等。一个人数据一般不会共享给其他人,也不会对其他人有任何影响,此时我们完全可以完全相信前端传来的数据。后端就完全退化成数据库,仅仅有着数据存储的功能了。

(2)应用所有的操作都是比较通用的,云服务已经提供了这样的接口,比如博客应用,对文章的增删改查,博主的个人页面。在 Gregor Martynus 的讲稿中还有信用卡付费等接口,相信越来越多的操作会集成到这些云服务中,会有越来越多的应用适合种没有后端的模式。

对于不少应用中,可能不是所有的数据都能满足以上条件,那么也可以仅仅将这部分数据拆分出来,减少后端人力的投入。对于以上模式,个人也是充满期待。