1、Serverless简介

Serverless技术是继虚拟机、容器之后的第三代通用计算技术。Serverless直译为无服务器,这是相对于客户视角而言,开发者无需关注底层服务器或者容器资源,只需使用平台支持的语言编写核心代码并设置代码运行的条件,底层计算资源包括服务器 CPU、内存、网络和其他配置/资源维护、代码部署、弹性伸缩、负载均衡等完全由云服务商来提供,并且按照代码实际运行时间收费,空闲时不收费。

2、Serverless元年已到

最早提出Serverless概念的是Amazon,2014年年底Amazon Lambda也正式推出,此后全球各大云服务厂商相继推出各自的Serverless平台,典型如Google Cloud Functions,Azure Functions,IBM Cloud Functions。

国内市场Serverless开始普及在2017年,腾讯无服务器云函数,阿里云函数计算相继推出,此外开源Serverless框架,如Apache OpenWhisk,Spring Cloud Function,Lambada Framework,webtask也不断涌现。

如同十多年前,没人能笃定云计算实现“No Hardware”,SalesForce喊出“No Software”时也让人不解,Serverless就这么接近爆发奇点。

2017至2019年,腾讯云Serverless的用户规模、产品下载和调用等数据每年增长超过10倍以上。Serverless现在主流的客户群体主要还是一些有快速迭代应用、能够在C端有快速响应的一些场景,比如像小程序,移动互联网应用,创业类以及一些腰部互联网公司,这些企业没有历史IT负担敢于接受新技术快速创新以及迭代它的业务。

3、Serverless元年的机遇和挑战

新生事物总要经历由概念到落地痛苦的适应过程,Serverless也不例外,目前摆在Serverless技术落地面前的有三座大山。

首先就是成本和费用,Serverless追求按需索取、按量付费,但是业内很多厂商不是站在开发者的角度设计计费系统,导致开发者在使用过程中没有能完全享受到按量付费、按需索取的一个价值,相比云主机按秒付费,目前行业内已经将Serverless架构的计费粒度普遍降低到100毫秒,但在实际应用中依然有大量实际运行时长少于100毫秒的业务场景依然按照100毫秒计费。

以实际运行时长30毫秒的场景来说,如果按照100毫秒计费的话,相当于用户多花费了 70% 的资源费用。这实际上给开发者造成了不必要的成本压力。

第二座大山是生态问题,Serverless前期因为生态缺乏而被诟病,要想更进一步,生态问题无法回避。每个厂商都希望推出自己的标准,函数调用、事件触发、函数黄金变量定义以及标准等等都是封闭的,缺乏开源的规范和开源的生态支持。相似的一幕曾经在容器领域上演,直到后来kubernetes成为事实标准,Serverless还在寻找自己的事实标准。

第三板斧针对开发者,Serverless的真正使用者是开发者,而现在开发者缺乏一些好的工具,整体环境环境还不够友好。

4、基于Serverless的前发模式

在开始具体的案例之前,先看一下传统开发流程,如下图所示:

serverless.png

在传统开发流程中,我们需要前端写页面,后端工程师写接口。后端写完接口之后,把接口部署了,再进行前后端联调。联调完毕后再测试、上线。上线之后,还需要运维工程师对系统进行维护。整个过程涉及多个不同角色,链路较长,沟通协调也是一个问题。

而基于Serverless,后端变得非常简单了,以往的后端应用被拆分为一个个函数,只需要写完函数并部署到 Serverless 服务即可,后续也不用关心任何服务器的运维操作。后端开发的门槛大幅度降低了。因此,只需要一个前端就可以完成所有的开发工作。
当然,前端基于 Serverless 去写后端,最好也需要具备一定的后端知识。涉及复杂的后端系统或者 Serverless 不适用的场景,还是需要后端开发。