一开始看到Serverless这个词, 我以为既然是Server, 那不应该是后端同学关注的技能吗? 然而在仔细了解其技术之后, 我才发现后面还有个less, 即无, 无服务. Serverless 顾名思义, 就是不需要服务, 就是我们前端程序员可以在不需要关注后端服务部署, 容灾, 监控警告, 系统以及网络安全等东西的情况下开发后端服务.
那么其实现原理是怎么样的呢?
首先要从Faas说起, 因为他就是实现Serverless的一种主要手段. 那么Faas是一种什么东西呢? Faas 全称 Function as a Service, 就是函数作为服务。以前我们部署一个后端服务, 往往需要一套很完整的流程, 例如部署Node的一套服务, 我们需要用pm2来配置进程资源, 需要监听进程运行情况, 以保证进程挂掉重启, 需要在服务器上下载node运行时, 需要的依赖, 甚至需要Nginx配置反向代理, 将请求分发到不同的node进程中,等等, 这一系列流程才可以启动一个真正的服务。而Faas,Function as a Service,我们只需要部署一个函数来处理业务逻辑即可,之前的其他步骤,什么容灾呀,全部通过云平台帮我们实现。具体是怎么实现的呢?
现在腾讯云和阿里云,都开始在Serverless上发力, 各自都有了一些初步的Serverless服务。Serverless服务,提供的是一种组件化的服务,例如,将我们上诉说到Node部署那么多流程,封装为一个具体的服务,就是一个已经部署好的空的Node服务,至于这个Node服务要做什么业务逻辑,由我们自己决定。所以在此基础上,我们刚才所说的Faas,就是如此,我们将我们的业务代码封装为一个函数,或者说处理业务的代码本来就是一个函数,然后把我们的这个函数部署到腾讯云上的Serverless中Node的组件中运行,我们就可以非常简单的提供了一套可以访问Node服务,而不再需要取关注服务启动期间的进程资源等跟业务无关的逻辑的处理,这样就可以让我们程序员更加关注于业务逻辑,而免去了很多其他繁琐的工作。
所以有人说,“Serverless 给云计算带来的改变,相当于从汇编语言到高级语言”,是不是觉得很多道理?以前写汇编的话,我们需要自己去了解cpu的结构,自己管理内存等,而高级语言,让我们只需要关注业务逻辑,而内存管理的这些事情,由高级语言本身帮我们处理了,现在Serverless也是同样的道理,我们只需要关注业务逻辑的处理,而这些业务逻辑怎么部署,怎么为用户提供服务,都由云平台帮我们处理了。
那么,这项Serverless技术为什么说是前端程序员的未来呢?因为通过这项技术,前端程序员可以实现真正的全栈,我们可以先编写前端代码一样,编写后端代码,然后像静态资源一样直接部署到云上,为用户提供服务。这样就极大的扩充了我们前端程序员的边界,我们可以做的不仅是展示逻辑,后端数据服务我们也一样可涉及,只有接触到后端数据,业务的核心,我们前端程序员的价值才可以放大。