写在开头:
什么是Server模式?前端、后端现在都可以使用Serverless模式进行开发和部署吗?
先回答第一个问题:
Serverless 圈内俗称为“无服务器架构”,Serverless 不是具体的一个编程框架、类库或者工具。简单来说,Serverless 是一种软件系统架构思想和方法,它的核心思想是用户无须关注支撑应用服务运行的底层主机。这种架构的思想和方法将对未来软件应用的设计、开发和运营产生深远的影响。
所谓“无服务器”,并不是说基于 Serverless 架构的软件应用不需要服务器就可以运行,其指的是用户无须关心软件应用运行涉及的底层服务器的状态、资源(比如 CPU、内存、磁盘及网络)及数量。软件应用正常运行所需要的计算资源由底层的云计算平台动态提供。
说人话,什么意思?
后端Serverless模式:
就是你直接在网页上编辑好你的逻辑,点一下部署,你就可以发布新的代码到服务器上面了,不需要你去关心运维部署层面的东西了,只要你考虑开发逻辑即可。
例如,向下面这样(基于构建物联网LOT应用工具开发的,类Serverless模式)
前端Serverless模式:
一样的,你在网站点编辑好你的逻辑,点下构建发布,就发布成功了,无论是IOS、安卓、小程序、H5
例如下面这样,在网页中将组件拖入页面,点击上架,那么就上架成功了
通过上面的内容,你应该能知道Serverless模式的大概使用了,可是,怎么把一个很复杂的功能点实现呢?那么你要深入理解下Serverless的模式含义
Serverless = Faas + Baas
Faas:函数即服务
Baas: 后端即服务
为什么说Serverless模式,是等于Faas + Baas呢。
首先,函数是我们自己定义的逻辑,但是函数并不能帮我们做到所有想做的事情,例如,我们要有一个redis服务,这个服务是进程外缓存,是独占一个端口存在的,而Serverless就是为了帮我们屏蔽运维和部署的问题,那么就需要函数编写你的一个一个业务逻辑,然后平台帮我们集成一些特殊的功能,例如redis,mysql等。
Serverless中,很重要的一个点就是函数
例如一个接口调用
你可能需
解析参数、
参数处理、
更新db=》通知db、
更新缓存=》通知redis
等等..
以上的这几个步骤,完成了接口调用
你可以很直观的想象,每个节点都是一个函数,处理完成后,将下个函数所需要的值传递过去,调用下一个函数(节点),这样过程非常清晰、逻辑独立,复用也更为简单。
所以Serverless的核心,就是讲究颗粒度,函数拆分到极致的细致
Faas函数的生命周期:
需要注意的点:
采用函数计算的 Serverless 与云服务器最大的不同之处在于:云服务器需要一直运行,而函数计算是按需计算。按需计算就意味着,在请求到来的时候,才运行函数。没有请求的时候,是不算钱的。
像redis、mysql这些,就属于Baas部分,就是:后端即服务,这些都是可以向云厂商申请资源的
通用的Sereverless架构:
使用Serverless开发的⚠️点和优缺点:
-
一定要编写单元测试
-
Serverless对一些希望掌控底层计算资源的场景来说不是很合适
-
Serverless并不是必要的,合适的场合确实能提效不少,目前我已经在生产环境上前后端都在用这种模式开发
-
快速上线是Serverless模式最大的优点,一键发布
-
减少运营成本
-
可移植性的问题,Baas服务,每个厂商实现标准不一致
-
更适用于微服务
-
会大量依赖于第三方服务,例如Baas部分
-
调试和开发不是特别方便
-
自动扩展能力非常好
以上就是我在使用Serverless模式进行前后端开发的一些总结,觉得有帮助让你理解到什么是Serverless模式的话