前言


作为一个前端,你可能一直在迷茫,Node.js 的定位是什么?为什么我们需要它?


尤其是到了 2019 这个时间点,未来一段时间内,有一个词 -- Serverless 你会听到想吐。


所有人都在说 Serverless  


几乎没有人知道如何落地 Serverless  但大家都觉得其他人在大力做 Serverless  
所以大家都在宣传自己在做 Serverless  


阿里作为 Node.js 国内的引航者,在该领域深度实践多年。


在国内第一个引入 BFF 的概念,现在也是第一个提出 SFF(Serverless For Frontend)。


笔者过去几年有幸参与到该演化进程中,在此分享给大家一些心得,抛砖引玉。





演进史


鉴古知今,以史明鉴。


我们从哪里来,经过哪里,要去到哪里。


远古时代


天地初开,还没有出现前后端之分,仅有 设计 和 研发 两种角色:



在 Web 1.0 的时代,大部分的 B/S 系统都采用的是 集中式架构,分为标准的三层(MVC):




比较流行的是 Struts + Spring + Hibernate 框架,还有 Dreamweaver 等前端三剑客。



此时的业务开发的套路,基本上是:


  1. 从数据库查询到一段动态数据。
  2. 套到模板上,渲染出页面。
  3. 再加上几个静态资源(JS/CSS)去实现交互。


此时的主要矛盾在于:如何把那些有像素眼的 『美工』的天马行空的点子,高还原度的实现出来。




石器时代


然而艺术和代码之间的 Gap,对于很多缺乏艺术细胞的直男程序猿来说,是一件非常头疼的事。如何更好的提升用户交互体验,如何像素级的还原设计稿,都需要更高专业度的投入。


同时,由于互联网的迅猛增长,集中式架构已经逐渐无法满足海量的访问,从而演进出 分布式架构 ,对研发的能力要求也进一步提升。


因此基于专业度的诉求,逐渐分化出 前端研发 和 后端研发 的角色




此时的业务开发的套路,变为:


  1. 前端研发 根据原型图,切图,产出 HTML/CSS/JS ,交付给 后端研发
  2. 后端研发 把 CSS/JS 上传 CDN,然后把 HTML 手动改写为后端模板。
  3. 从数据库查询到一段动态数据。
  4. 套到模板上,渲染出页面。


此时的主要矛盾在于前后端耦合 





青铜器时代


随着 Web 2.0 的到来,以 Google 推出的 Gmail 为号角,前端进入富应用时代,各种框架层出不穷,从 AJAX + jQuery,到逐渐形成 Angular、React、Vue 三国鼎立。



此时的业务开发的套路,变为 前后端分离



前后端分离 一定程度上解决前后端的耦合问题,约定好接口后,前端可以直接 Mock 然后进行开发。


前端第一次翻身,如火如荼的投入到 前端框架 和 前端工程化 的建设中,矛盾在一定程度上弱化了。




蒸汽时代


随着后端 微服务化 的演进,开始走向深水区,服务下沉,趋向稳定,业务被划分为很多独立的微服务。


前端框架 和 前端工程化 趋向稳定,同时前端也进入了移动时代,出现了跨平台、跨终端适配的场景,对用户体验提出的更高的要求,对首屏时间等性能指标越来越重视,且发布频度越来越快。



此时的架构演化为:




随之而来的新的矛盾:服务下沉与用户体验灵活性的矛盾。



此时 Sam Newman 提出了 Backends For Frontends





此时,研发角色又转变为:



其中全栈研发又有两种来源





电气时代


BFF 的实践,在社区的分化严重,在大公司和创业公司比较受欢迎,但在话语权不强的中型公司,则举步维艰。



作为国内前端的引航者,过去几年,我们蚂蚁体验技术部工程产品的同学,产出了很多效能产品,包括:



但这些大部分还局限在 Pro Code 领域,离我们愿景中的终局还有很长的路要走。


此时的主要矛盾在于






幸而阿里开始吹响了 云通未来 的号角,各集团军协同作战,让我们能借助兄弟团队的协作,向未来迈进一大步,参与到『云通未来』的子战场。。



就如前言提到的,每个人对 Serverless 的定义和落地的理解都不一样。


我们依旧聚焦于一直以来的目标提升前端的研发效能,以一当百


其中 BFF 这个细分领域,我们将依托 Serverless 继续探索,简称为 SFF。


我们的思路如下:专业的人做专业的事,让业务开发者专注于业务本身的研发



一句话阐述:让纯前端开发者,只需写几个 Function 即可使用到后端相关的能力。


此时的研发角色划分,似乎又兜兜转转回到最初,但其实历史是螺旋上升的,表象一样,内在已然不同。


目前该演进正在进行中,更多分享敬请期待。



小结


鉴古知今,我们一直在前行,与君共勉。


未来已来,与其耳听八方,不如眼见为实,一起参与进来把生米煮成熟饭。


蚂蚁体验技术部,有 Node.js、Java、可视化、小程序云等岗位虚席以待,可 Base 杭州、广州,欢迎勾搭。


我是天猪,Egg.js 核心开发者,欢迎 Follow 我:github.com/atian25


image.png


以上。