Serverless风暴来袭前端工程师如何应对

目前很多前端同学都在学习 Serverless,很多文章和教程对 Serverless 都有不同方式的解读。
加州大学伯克利分校 2019 年 3 月份发表过一篇论文,名为《Cloud Programming Simplified: A Berkeley View on Serverless Computing》,文中对“Serverless 是什么”进行了一些描述:Put simply,serverless computing = FaaS + BaaS.简单来理解,Faas+BaaS 是 Serverless 的一种实现方式,这也是主流对 Serverless 的一种理解。
那 Serverless 的真正概念是什么呢?
论文最核心的摘要部分,我们可以看到如下图的一段话,它说出了 Serverless 真正内涵:中文大意是:「无服务器云计算(Serverless Computing)几乎封装了所有的底层资源管理和系统运维工作,使开发人员更容易使用云基础设施。
它提供了一个方式,极大地简化了基于云服务的编程,犹如汇编语言到高级编程语言般的转换。」这段话中举了一个例子非常生动:Assembly Language to high-level programming Languages.「Serverless 给云计算带来的改变,就是相当于从汇编语言到高级语言」。
汇编语言,计算机专业的学生都有了解过。
写汇编的话,首先需要了解 CPU 的结构,知道加法器、寄存器,需要自己管理内存、IO 设备等一些底层资源。
但开发者的目的并非如此,开发者应该是以业务为导向的。
而高级语言提供了诸多能力和框架支持,可以令开发者专注于更快地完成业务上的事情,这才是高级语言所具备的优点,而不是让开发者把精力浪费在底层资源管理。
由此可见,Serverless 的内涵就是对全部底层资源和运维工作的封装,让开发者专注于业务逻辑。
理解完 Serverless 的内涵,我们再来谈一下 FaaS(Function as a Service)的本质。
一句话而言,FaaS 就是至今为止最细粒度的算力分配方式,我们先理解下什么叫算力分配方式。
当我们谈论计算机应用科学的时候,共有三个维度:“算力、算法、数据” 。
在「算力」又有两个方向:一是如何让算力更强,让 CPU 运行得更快;
二是如何让算力分配的更合理。
传统计算机,从单任务实时操作系统到多任务分时操作系统,是解决算力的分配问题,云计算诞生的初衷以及要解决问题,也是解决巨大算力资源的合理化分配。
云的算力分配方式主要是以什么为粒度的呢?
答案是虚拟机。
比机器再降维一点的分配粒度是什么?
答案是容器。
那比容器再降一级的功能是什么?
答案是函数。
最早期的算力分配是物理机为单元,后来是虚拟机和容器。
这个算力分配细化的过程,也基本是云计算发展的过程。
现在云上可以函数作为一个计算单元,变成每一次业务执行分配一次资源,没有业务就没有资源分配。
所以,FaaS 是一个以函数(业务)为粒度的算力分配方式。
当我们理解了 Serverless 和 FaaS 的内涵,我们在讨论下这一切跟前端有什么关系。
随着 Node 的流行,前端工程师一直希望回归 Web 工程师的角色,全栈工程师的也在各种场合和文章被提到,最近几年大前端组织架构也成为超火话题。
第一,从前端工程师自身视角来讲,希望扩大自己的业务范围,进而才能有职业发展,仅仅做前台展现相关的东西,碰不到核心业务,价值得不到展现。
第二,如果从组织或是技术 leader 视角上来看问题的话,则会更
大前端的开发模式,会提升业务的迭代效率。
前端和后端都使用 JavasScript,技术栈是统一的。
从写代码,到编译、打包、脚手架、组件化、包管理,再到 CICD,采用同一套都不是问题。
Client Side JavaScript 和 Server Side JavaScript 本身就有很多可复用的代码,例如现在行业里有很多同构代码的 CSR 和 SSR 解决方案。
优化研发组织结构。
大前端的开发模式,让接口定义、接口联调、环境模拟等,原来需要两种不同技术能力栈的工程师互相协作的模式,变为同一种技术技术能力栈的工程师独立完成的模式,让沟通和推动的成本降到最低。
因此在 Serverless 的赋能下,前端工程师依旧只需要
即实现了从前端到真全栈的可能。

参考:
首先搞清楚serverless,直接理解就是无服务器,那么现在serverless的代表就是Faas(Function as a service),即函数即服务。
就前端而言呢,serverless影响不是很大,Faas一般都提供有不同语言的sdk调用,前端只要结合sdk做数据处理就可以了。
但是,最近几年前端一直在变化,前端工程化,SSR渲染等改变了前端工程师的

参考:
不是无服务,而是把基础服务都托管到云上,运营也有云端提供,所以后端的影响比较大,前端没那么大影响,后端出发,也比较不认可这种模式,因为后端才是最复杂容易出错的地方,部署上线的简化,其实复杂了后端的开发,需要对错误更要细分类,日志也要搭建响应系统,而不是简单从服务器拉日志分析即可,诸如此类,要求更深的开发能力