特别想回答这个问题。
但是写了一段,给删去了;再写了一段,又删去了些。面对这个问题,想说的太多。
我是软件工程师出身,后专职于前端,现在专注于在 Serverless 技术。今天我不会从 Serverless 给前端带来的价值方面来回答:在目前回答中有各种大牛,他们都已经给出了极好的答案。我就写点感想,作为大家的补充。
我就谈三个问题:
1、从计算机科学的角度来看,Serverless 到底是个啥。
2、Serverless 到底让谁下了岗。
3、开发工程师为什么要关注 Serverless(抱歉,我把前端泛化成了开发人员,后面会说为啥)
先讲第一个问题:
又不得不提到那所计算机科学的名校 —— 伯克利。时间回到了2009年的2月,他们发了一篇paper:《Above the Clouds: A Berkeley View of Cloud Computing》,发表了伯克利对于云计算的一些观点,并对未来进行一些预测。 很巧合的是,在接下来的一年内,国内有两家云计算公司,都在大量反对的声音里成立了 —— 就是现在国内最大的那两家。
传统计算机,从单任务实时操作系统到多任务分时操作系统,是解决算力的分配问题。云计算诞生的初衷以及要解决问题,也是解决巨大算力资源的合理化分配。“让计算资源能想水和电一样 —— 想用的时候就有,想用多少就用多少,用多少就付多少 ” 最早期的算力分配是物理机为单元,后来是虚拟机和容器,再后来就是函数。所以,FaaS 就是一个以函数(业务)为粒度的算力分配方式。
10年后,他们又发了一篇paper:《Cloud Programming Simplified: A Berkeley View on Serverless Computing》。说到这里,各位观众可以去Google一把,看看A Berkeley View打头的paper都是什么量级的话题。引用并翻译一下摘要部分 :
“无服务器云计算(Serverless Computing)几乎封装了所有的底层资源管理和系统运维工作,使开发人员更容易使用云基础设施。它提供了一个方式,极大地简化了基于云服务的编程,犹如汇编语言到高级编程语言般的转换。”
这段话中举了一个例子非常生动:
Assembly Language to high-level programming Languages.
“Serverless给云计算带来的改变,就是相当于从汇编语言到高级语言"。汇编语言,计算机专业的学生都有了解过。写汇编的话,首先需要了解CPU的结构,知道加法器、寄存器,需要自己管理内存、IO设备等一些底层资源。但开发者的目的并非如此,开发者应该是以业务为导向的。而高级语言提供了诸多能力和框架支持,可以令开发者专注于更快地完成业务上的事情,这才是高级语言所具备的优点,而不是让开发者把精力浪费在底层资源管理。
Serverless的内涵就是对全部底层资源和运维工作的封装,让开发者专注于业务逻辑。
所以,不好意思,Serverless 并不是一个前端的概念。Serverless 和其他的前端技术不同,它不是为了解决前端的问题而出现。它是云计算的未来,是整个软件和应用架构的未来,它属于每一种类型的应用开发者。
第二个问题,Serverless 到底让谁下了岗。直接说答案:
没有人。
所有新技术都不会让技术研发工程师下岗。只有不接纳不面对技术变革的工程师,才会从浪潮之巅掉下来,拍死在沙滩上。
后端研发会下岗吗?当然不会。
后端研发会更聚焦于后端业务逻辑、数据处理和流转、调度、策略、算法、事务管理、服务治理。BFF对后端研发来说,是成长性最弱的一块,最脏最累最扯皮的活儿。如果题主说的后端只能做BFF,那…… 有没有Serverless 都快下岗了吧。
运维工程师会下岗吗?当然不会。
运维的职责是要保证服务的稳定行,业务的监控,错误告警,数据报表,容量,容灾。 运维工程师最辛苦,很多脏活累活 —— 就是因为和底层耦合太紧。业务上云后,运维同学下岗了吗?如今大部分的运维都技能升级,增加了云计算相关知识技能。 Serverless 应用也需要运维角色,实际就是这样。实际情况是提供 Serverless 服务的云厂商,以平台的方式,把一些藏活累活给扛了,让运维工作可以更多的紧贴业务,而不是机器。
第三个问题:开发工程师为什么要关注 Serverless
肯定是个人的职业发展。
之所以把前端替换为开发工程师,因为Serverless并不是只属于前端的。 但是Serverless 是未来,是风口。Serverless 封装和解决了底层资源的分配和管理,让开发可以更聚焦于业务。从这个角度看:谁现在做的业务最多,谁的受益就越大。
我接触过很多做 Serverless 的都是后端工程师,他们用类似于 Serverless framework 工具,快速且简单方式去搭建后端Web Service,专注于后端业务逻辑,前端UI基于Vue或者React也能很快的搭一个出来。现在前端的工具、脚手架、UI组件非常丰富,lowcode或者nocode的平台也蠢蠢欲动,构建一个前端的UI已经不是什么难事。
如果总是觉得现状很OK,不关注趋势,不往前走一步。谁先下岗这还真是没准的事儿。
最后,既然本题是关于Serverless,再推荐两个我们这边的 Serverless 站:
我之前也从前端视角,分析过 Serverless对于前端的价值,有兴趣可以阅读:
jenswang:我在GMTC上的分享:腾讯 Serverless 前端落地与实践zhuanlan.zhihu.com