从开发调试到部署运维一套完整的Se

本文将从前端的角度来看Serverless是什么,Serverless的出现会给前端带来什么样的机遇和挑战,并以一个具体的项目为例说明如何基于Serverless实现项目功能。

前端开发的横向演进

在刚开始的互联网时代,网页很简单,就是一些静态或简单动态的页面,主要是用来做信息的展示和传播。开发一个网页主要就是通过JSP、PHP等技术写一些动态模板。这个阶段还没有前后端的分工,通常是后端工程师顺便写了前端页面。

在AJAX技术出现之后,可以把Web分为前端和后端,前端负责界面和交互,后端负责业务逻辑的处理。前后端通过接口进行数据交互。随着页面越来越复杂,移动网络的应用的兴起,对加载性能有了更多的要求,通常异步渲染页面白屏时间比较长,另一方面对SEO也不够友好,所以落地页又回归到服务端渲染的这个方案。

前端在发展,后端也在发展,在分层和模块划分上更加的粒度化,微服务化。微服务的接口不再是面向页面,前端的接口调用变得复杂了,所以需要在微服务和前端中间,加了一个BFF层,全称(backendforfrontend),由这一层对接口进行聚合、裁剪后,再输出给前端。而这层不是后端本质工作,距离前端比较近,关系更大一些,所以前端工程师很自然选择了Node.js来实现。这也是当前Node.js在服务端比较广泛的应用。

可以看到,每一次前端开发模式的变化,都因为某个变革性技术的出现。先是AJAX,然后是Node.js。那么下一个变革性的技术是什么?不言而喻,就是Serverless。

但是,如果完全让前端工程师来开发一个后端,需要考虑很多内容。

首先要考虑代码运行的环境和相关资源。比如前端代码运行的环境是用户的浏览器。后端环境需要服务器,网络,访问服务的域名、证书,服务器的操作系统,软件安装,webserver,数据库等。

除此之外,前端要考虑的是用户的网络,浏览器的兼容性,交互的流畅程度,还有视觉效果。后端还要考虑负载均衡,流量控制,弹性伸缩,高并发,备份容灾,安全防护,监控警告等。

前端并不擅长这些,但有了Serverless之后,这些我们基本上不用考虑,我们的主要精力可以用来实现业务逻辑。Serverless为什么能帮助做这些事情?

FaaS+BaaS可以称之为一个完整的Serverless,FaaS(FunctionasaService)是函数运行的平台。BaaS(BackendasaService)则是一些后端云服务,比如云数据库、对象存储、消息队列等,通过使用BaaS,可以极大简化应用开发难度。开发者将代码上传到云函数平台,并配置相关的触发器。平台根据触发器事件,完成运行环境的准备、调度、执行和扩容这些工作。

从架构上,可以看到Serverless的这些特点:

无运维,使用Serverless我们不需要关心服务器,不需要关心运维,这也是Serverless思想的核心。

无状态,因为每次函数执行,可能使用的都是不同的容器,无法进行内存或数据共享。如果要共享数据,则只能通过Redis、COS等第三方服务。

事件驱动,函数在FaaS平台中,是需要通过事件来触发函数执行。

低成本,实现按需调用,按需伸缩、按使用收费。

基于Serverless的前端开发模式

01

BFF

基于Serverless,前端的一些通用开发模式可以怎么来做呢?下图是比较通用的BFF架构。最底层是后端微服务,最上层是前端应用,在微服务和应用之间,是通常由前端工程师开发的BFF层,对接口进行聚合裁剪,在返回给前端使用。

这样的架构解决了接口协调的问题,但也带来了一些新的问题。以前前端只需要


转载请注明:http://www.soiphoto.com/gznr/gznr/18199.html

  • 上一篇文章:
  •   
  • 下一篇文章: 没有了