使用Serverless模式开发部署前端和Node.js_Node.js

写在开头:

 

什么是Server模式?前端、后端现在都可以使用Serverless模式进行开发和部署吗?

 

先回答第一个问题:

 

Serverless 圈内俗称为“无服务器架构”,Serverless 不是具体的一个编程框架、类库或者工具。简单来说,Serverless 是一种软件系统架构思想和方法,它的核心思想是用户无须关注支撑应用服务运行的底层主机。这种架构的思想和方法将对未来软件应用的设计、开发和运营产生深远的影响。

 

所谓“无服务器”,并不是说基于 Serverless 架构的软件应用不需要服务器就可以运行,其指的是用户无须关心软件应用运行涉及的底层服务器的状态、资源(比如 CPU、内存、磁盘及网络)及数量。软件应用正常运行所需要的计算资源由底层的云计算平台动态提供。

 


 

说人话,什么意思?

后端Serverless模式:

 

就是你直接在网页上编辑好你的逻辑,点一下部署,你就可以发布新的代码到服务器上面了,不需要你去关心运维部署层面的东西了,只要你考虑开发逻辑即可。

 

例如,向下面这样(基于构建物联网LOT应用工具开发的,类Serverless模式)

 

使用Serverless模式开发部署前端和Node.js_Node.js_02

 


 

前端Serverless模式:

 

一样的,你在网站点编辑好你的逻辑,点下构建发布,就发布成功了,无论是IOS、安卓、小程序、H5

 

例如下面这样,在网页中将组件拖入页面,点击上架,那么就上架成功了

使用Serverless模式开发部署前端和Node.js_Node.js_03


 

通过上面的内容,你应该能知道Serverless模式的大概使用了,可是,怎么把一个很复杂的功能点实现呢?那么你要深入理解下Serverless的模式含义

 

Serverless = Faas + Baas 

 

使用Serverless模式开发部署前端和Node.js_Node.js_04

 

Faas:函数即服务 

 

Baas:  后端即服务 

 

为什么说Serverless模式,是等于Faas + Baas呢。

 

首先,函数是我们自己定义的逻辑,但是函数并不能帮我们做到所有想做的事情,例如,我们要有一个redis服务,这个服务是进程外缓存,是独占一个端口存在的,而Serverless就是为了帮我们屏蔽运维和部署的问题,那么就需要函数编写你的一个一个业务逻辑,然后平台帮我们集成一些特殊的功能,例如redis,mysql等。

 

Serverless中,很重要的一个点就是函数

 

例如一个接口调用

使用Serverless模式开发部署前端和Node.js_Node.js_05

你可能需

解析参数、

参数处理、

更新db=》通知db、

更新缓存=》通知redis

等等..

以上的这几个步骤,完成了接口调用

 

你可以很直观的想象,每个节点都是一个函数,处理完成后,将下个函数所需要的值传递过去,调用下一个函数(节点),这样过程非常清晰、逻辑独立,复用也更为简单。

 

所以Serverless的核心,就是讲究颗粒度,函数拆分到极致的细致

 

使用Serverless模式开发部署前端和Node.js_Node.js_06

 

Faas函数的生命周期:

 

使用Serverless模式开发部署前端和Node.js_Node.js_07

需要注意的点:

 

采用函数计算的 Serverless 与云服务器最大的不同之处在于:云服务器需要一直运行,而函数计算是按需计算。按需计算就意味着,在请求到来的时候,才运行函数。没有请求的时候,是不算钱的。

 

像redis、mysql这些,就属于Baas部分,就是:后端即服务,这些都是可以向云厂商申请资源的

 

使用Serverless模式开发部署前端和Node.js_Node.js_08

 

使用Serverless模式开发部署前端和Node.js_Node.js_09

通用的Sereverless架构:

使用Serverless模式开发部署前端和Node.js_Node.js_10

 

使用Serverless开发的⚠️点和优缺点:

  • 一定要编写单元测试

  • Serverless对一些希望掌控底层计算资源的场景来说不是很合适

  • Serverless并不是必要的,合适的场合确实能提效不少,目前我已经在生产环境上前后端都在用这种模式开发

  • 快速上线是Serverless模式最大的优点,一键发布

  • 减少运营成本

  • 可移植性的问题,Baas服务,每个厂商实现标准不一致

  • 更适用于微服务

  • 会大量依赖于第三方服务,例如Baas部分

  • 调试和开发不是特别方便

  • 自动扩展能力非常好

 

以上就是我在使用Serverless模式进行前后端开发的一些总结,觉得有帮助让你理解到什么是Serverless模式的话

 

 

使用Serverless模式开发部署前端和Node.js_Node.js_11