任何新概念新技术的落地,本质上都是要和具体业务去结合,去真正解决具体问题。
云计算已经发展到用户仅需关注业务和所需资源(CPU、内存等)的程度。
K8S编排工具让用户只需关注自己的计算和所需资源,不需要关心到机器这一层。
Serverless架构让用户不需关心所需资源,只需关心业务逻辑,但需要为实际消耗的资源付费。
Serverless将掀起新的前端技术变革,此次将从前端开发模式在Serverless的演进、Serverless常见服务商提供的解决方案以及基于Serverless的前端开发模式等方面,与大家探讨Serverless中的前端开发模式。
一、前端开发模式的演进
四个阶段:
1、基于JSP模板渲染的动态页面
这个时期开发一个网页很easy,主要就是通过JSP(Java Server Page,在HTML页面中编写Java代码)、PHP等技术写一些动态模板,然后通过Web Server(nginx、apache)将模板解析成一个个HTML文件,浏览器只负责渲染这些HTML文件。
这个时期还没有前后端分工,通常是后端工程师顺便写了前端页面。
2、基于AJAX(2005)的前后端分离
前端负责界面和交互,后端负责业务逻辑的处理,前后端通过接口进行数据交互。
不需要在各个后端语言里写难以维护的HTML,网页的复杂程度由后端的Web Server转向了浏览器端的JavaScript,开始有了前端这个职位。
3、基于Node.js(2009)的前端工程化
随着Node.js一同出现的还有CommonJS规范和npm包管理机制,随后也出现了Grunt、Gulp、Webpack等一系列基于Node.js的前端开发构建工具。
2013年前后,前端三大框架(React.js、Angular、Vue.js)相继发布第一个版本,我们可以从以往基于一个个页面的开发变为基于一个个组件的开发,开发完成后使用webpack等工具进行打包构建,并通过基于Node.js实现的命令行工具将构建结果发布上线。前端开发开始变得规范化、标准化、工程化。
4、基于Node.js的全栈开发
Node.js对前端的重要意义还有,以往只能运行在浏览器中的js也可以运行在服务器上,前端可以用自己最熟悉的语言来写服务端的代码。于是前端开始使用Node.js做全栈开发,开始由前端向全栈的方向转变。这是前端主动突破自己的边界。
随着前端Node.js的发展,后端也随之发展,开始由巨石应用模式(
大部分web工程是将所有的功能模块(service side)打包到一起并放在一个web容器中运行,很多企业的Java应用程序打包为war包)
向微服务架构(
一种架构理念,是指将功能分解到离散的各个服务当中,从而降低系统的耦合性,并提供更加灵活的服务支持。把一个大型的单体应用程序和服务拆分为数个或数十个的微小型服务,它可扩展单个组件而不是整个的应用程序堆栈,从而满足服务等级协议。)
转变,导致以往的前后端分工出现了分歧。随着微服务架构的兴起,后端的接口渐渐变得原子性,微服务的接口也不再直接面向页面,前端的调用变得复杂了。于是 BFF(Backend For Frontend)架构出现了,在微服务和前端中间,加了一个 BFF 层,由 BFF 对接口进行聚合、裁剪后,再输出给前端。而 BFF 这层不是后端本质工作,且和前端的关系最大,所以前端自然而然选择了 Node.js 来实现。这也是当前 Node.js 在服务端较为广泛的应用的原因。
5、下一代前端开发模式——Serverless
Serverless是FaaS和BaaS的结合
二、Serverless常见服务商提供的解决方案
三、基于Serverless的前端开发模式
serverless开发流程
serverless带来的价值
serverless实践
- 基于Serverless的BFF(Backend For Frontend)
- 传统 BFF (Backend For Frontend) 架构
- 传统 BFF (Backend For Frontend) 的痛点
- 基于 Serverless 的 BFF 架构
- 基于 Serverless 的服务端渲染
参考:
https://www.jianshu.com/p/92632d6c2269
https://www.serverless.com/framework/docs/
https://www.zhihu.com/question/378776917
https://github.com/serverless/serverless
https://zhuanlan.zhihu.com/p/100651901
https://www.serverless.com/cn/