本文来源公众号:程序员成功大家好,我是杨成功。这是我2022年的第一篇文章,一直在思考写什么比较好。既然是新年,新年又有新气象,写一些技术展望思路是不是比较合适呢?于是文章的标题,也就是本文的核心思想就出来了:在Serverless的背景下,部分“前端工程师”将转型为“应用交付工程师”。这里有三个名词:Serverless前端工程师和应用交付工程师。另一方面来说说我对2022年前端的展望。Serverless什么是Serverless?单从意思上就很明显,服务很少。我觉得这个理解很好。因为大家对Serverless的翻译是没有服务,真的没有服务吗?不,我们先来看看它的具体概念:【RedHat】Serverless是一种云原生开发模式,可以让开发者专注于构建和运行应用程序,而无需管理服务器。看不懂?翻译成普通话。也就是说,之前的服务,比如我们前端需要连接的接口应用,都是要部署在服务器上的。后端同学想开发一套接口,首先要申请一个服务器,然后把应用部署到这个服务器上,用域名解析,然后给出前端接口的URL地址前端调用。但是Serverless出现之后,即使没有服务器,没有运维知识,也可以将应用部署到线上。关键是可以在没有服务器的情况下部署应用程序。如何部署?先看Serverless的两种形态:BaaS:全称BackendasaService,译为后端即服务。FaaS:全称是FunctionasaService,译为函数即服务。BaaS是指服务器应用,也叫云应用。比如我们常用的阿里云的云数据库和对象存储,都属于BaaS。其实无论是数据库还是静态资源存储,我们都可以自己在服务器上搭建。但是有了云数据库这样的产品,我们可以绕过服务器,直接使用云数据库。这是“无服务器”的第一层概念:淡化服务器,直接联系服务器应用。注意:这是淡化服务器,并不是真的没有服务器。只是云厂商对服务器进行了抽象和封装,暴露给开发者的直接是应用,所以好像没有为开发者服务。BaaS在后端应用最为广泛,因为很多后端基础设施(如数据库、日志等)不需要手动搭建,而且有云厂商标准的稳定支持,可以专注于业务逻辑。然而,随着前端的快速发展和后端的云原生化,一些有奇思妙想的大佬是这样想的:“前端调用后端接口,在里面发起请求前端的一个功能,那么必然后端需要提供一个接口服务,那我们是不是可以直接把这个功能部署在云端,变成一个云功能给前端直接使用,就不需要了后端接口?”大佬一拍大腿,这主意太高明了。这样做的话,前端岂不是要站起来当农奴唱歌?于是大佬们继续少用服务器,于是出现了FaaS。FaaS是一种面向功能的构建和部署软件的方式,也称为云功能。FaaS是BaaS的又一次升级。在稀释服务端的基础上,也稀释了应用,直接将功能暴露给前端。以前我们的前端函数都是在本地声明,本地调用。现在云函数单独部署在云端,供我们前端远程调用。这就是“无服务”的第二层概念:服务器淡化,应用淡化,功能直接接触。其实直到Serverless发展到FaaS阶段,才真正对前端产生了变革性的影响。前端工程师什么是前端工程师?早年的前端工程师更像是“页面工程师”。大多数人的工作是使用“三驾马车”将设计图制作成网页。直到现在,很多后端开发者对前端的印象都是一样的。但是最近几年,大家发现前端工程师好像一直在“滚”,不断地拓展着自己的边界。虽然他还戴着“前端工程师”的帽子,但他的工作早已超出了传统前端的范畴。从“拓界”这件事上,大致可以分为两个方向:向前:向产品和设计方向;向后:向后端和运维方向发展;更多地思考“为什么”?以前,从产品确认到设计图,前端只需要还原设计图即可。这是理想的,但实际情况是有些地方的产品和设计无法考虑,到前端实现才可行,只能“换需求”或“重新发明轮子””。这是前端最恶心的事情。一旦出现这种情况,就会迫使前端人员思考:这个页面设计合理吗?交互有没有问题?如果有问题,那么我们将不接受这个需求,产品会先回去清理。这样就大大减少了前端的无用功,提高了开发效率,也逐渐培养了前端的产品思维。除了产品思维,前端也在思考如何在设计层面更容易把“图”变成“代码”。所以这几年出现了很多设计图转代码的方案,比如蓝湖、阿里的imgcook。这些实用的解决方案让一个应用从设计之初就有了前端的影子。向后开发的表现典型是在Node.js出现之后,以Express为代表的超轻量级框架,因为比较简单,而且是JS语言,在国内掀起了一股“全栈开发”的浪潮。前端圈。有一个原因。一些小应用程序适合用Node.js编写。它快速高效。但是在一些大规模的生产应用中,前端是遥不可及的。尤其是云原生出现后,后端的门槛逐渐升高。相信有很多优秀的前端工程师,用Node.js连接数据库,写一些业务逻辑接口,是完全没有问题的。但是如果让你去搞一些高级的后台玩法,做一些服务器运维,你可能就做不来了。哪些是先进的?之前在网上看到一个后端大佬的有趣描述。俗话说:左手高并发,右手高可用,头顶中间件,微服务,拥抱云原生。这是boss的全套铠甲。所以你看,后面的墙高到挡住了想要进去的前端。至此,后端已经深耕细作,前端也通过不断的尝试找到了自己的方向。每个人都在自己的领域里做自己的事情,互不纠缠。但在Serverless尤其是FaaS出现之后,天平开始发生微妙的变化。应用交付工程师什么是“应用交付工程师”?首先声明一下,这不是官方的概念,是在思考前端落后发展的时候诞生的。上面我们说了,传统前端工程师的职责是将设计图做成网页,但是随着Node.js的出现,前端有了更多接触后端的机会。对于一些小的应用,一些优秀的前端可以自己完成前端和接口,然后上线,不需要后端的参与。我们可以称这群人为“全栈工程师”。所谓全栈,要么一端深一端浅,要么两头浅(当然超级大牛无视),所以开发小应用还好,但是没有这回事作为大规模生产应用程序的完整堆栈。现在随着Serverless云功能的出现,屏蔽了服务端和后端应用,大大降低了后端开发的门槛。前端似乎又看到了希望。我们不需要写接口,只需要写云函数,也可以实现生产应用的后端开发。以前是高墙,前端是滚不进去的,现在墙都拆了,你说我们能不能进去?一个典型的例子就是微信小程序云开发。前端在微信开发者工具上编写云函数,一键上传部署。然后在小程序代码中获取并调用这个远程函数,也就是说整个过程前后端自己实现和调试,直到应用开发完成。这是一个典型的“前端工程师”变“应用交付工程师”的例子。使用Serverless云函数,不仅可以轻松实现后端业务功能,而且监控、并发、负载都由云厂商统一实现。因此,稳定性和可靠性也得到了很好的保证。还有一点,可能是目前大家的观念问题。他们认为单独的云功能服务需要自己付费,还不如自己直接在云服务器上部署应用。事实上,函数计算是按调用次数和访问流量计费的,比云服务器更节省资源和性价比。我认为这个概念在各大厂商的推动下会在2022年逐渐发布,越来越多的web应用也会接入serverless,所以会有更多的前端开发工程师转变成应用交付工程师。以前,前端想要实现自己的一些想法,需要配合后端接口,还需要后端或者运维的帮助,部署上线。但现在不会了,我们有机会自己弄清楚这一切。我觉得这对前端来说是一个巨大的机会,一个很好的机会,直接把产品和想法生产出来一个应用。此外,前端协作模式也可能发生变化。以前一个大型应用,前端组都是模块化开发的。但是现在有了Serverless,再加上去年逐渐成熟的微前端,前端协作模式很有可能从“一个模块一个模块开发”变成“一个应用一个应用开发”,这是一个非常爽的事物。还有向前拓展时培养的产品思维。以后前端可能就是最了解整个应用的人了,前景就不用多说了。加油吧,前端人!2022年祝大家升职加薪,再攀新高峰!想了解更多为了更好的保护原创,本文将发布在微信公众号前端樵夫。本公众号仅原创,每周至少一篇优质文章,专注于前端工程与架构的实践与思考。另外,我还建了一个微信群,为对这个方向感兴趣的同学提供交流和学习。如果你也感兴趣,欢迎加我微信ruidoc拉你进群~
