来源:了不起的云计算
Serverless是最近大家讨论很多的一个话题。
今天我们就来聊聊什么是Serverless?
▉Serverless是个啥?
Server:服务器,Serverless解决问题的产品。
less:更少,Serverless解决问题的目的。
所以Serverless直接翻译过来就是“更少的服务器”?
在国内,很多人将Serverless直接翻译成“无服务器”,但“无服务器”并不是说不需要依赖和依靠服务器等资源,其实更多的是一种使用体验。
开发者不用过多考虑服务器的问题,可以专注在产品代码上,并且无需管理和操作云端或本地的服务器,使得开发人员与服务器之间没有了直接交互,彷佛服务器不存在一般,所以才有了“无服务器”的说法。
基于此,云原生计算基金会(Cloud Native Computing Foundation)给出了Serverless的官方定义:构建和运行不需要服务器管理的应用程序的概念。
▉为什么需要Serverless?
每一个新技术概念的引入都伴随着生产力的提高,无服务器技术也不例外。
开发人员一直在寻找更有效的方法来维持软件开发生命周期,而无服务器架构且可以帮助企业专注于应用程序开发,不再需要担心服务器等基础设施的部署建设和运维管理,还可以很好的降低开发成本和缩短开发周期。
无服务器体系架构的开发建立在从虚拟化开始的先前成就的基础上,虽然这个过程是相当连续的,但它有几个值得注意的里程碑:
早期人们使用物理机来进行业务开发;
随着企业不断提高对软件开发效率的要求,越来越多的企业通过虚拟机提供服务。
虚拟化集群技术逐渐成熟,开始迁移到弹性更好的云计算平台进行开发。
基于最小化操作空间的原则,将每个VM细分为Docker容器。构建在Docker容器上的应用程序不需要任何运行时的环境管理,只需要核心代码的无服务器体系结构。
Serverless来临,帮助开发人员专注于应用程序逻辑而不是服务器。
基于以上,我们可以看出开发底层架构的发展一共经历了5个里程碑的过程,就像人类的演进过程,代表着生产力的解放,极大提升了开发人员的的效率。Serverless来到了开发架构的高级阶段。
可能有人会问,我们为什么需要Serverless呢?
其实从物理机到 Serverless,就像我们买车一样,如果要买一辆私家车,这个车的车况保险全部要自己关心,然后你要自己开;到了虚拟机之后,我们把业务host 到云上,就像汽车租赁;然后再到网约车,我不用买车,不用关心车况,我们外出办事,只需要打个车,完全按需付费,按需弹性。
网约车就像Serverless,我们只需要享受服务,不需要关注车的情况,也不用管车的运行,只需要买这个打车服务就行了。
在 Serverles 架构下,用户仅需要关心业务实现,而操作系统、虚拟化和硬件层面的实现则全部交给服务商统一维护,达到了提高软件开发/交付效率、降低成本(资源成本、人力成本)的目的。
▉聊聊Serverless发展史?
所有技术发展都不是一蹴而就。
Serverless的概念出现已经有十多年了,并且伴随着云计算的发展越来越成熟。
早在2006年,伦敦的一家公司就发布了第一个Serverless平台Zimki。并提出 “Pay as you go”的概念,就是早期的按需付费的雏形,虽然在商业上并未取得成功,但是也拉开了Serverless的大幕。
在2008年,谷歌发布了App Engine服务,用户无需考虑预分配资源,也无需考虑操作系统的实现,让开发模式产生了根本变革。
直到2012年,一家提供DevOps 解决方案的公司 Iron.io 首次提出了Serverless 的概念。
但让Serverless被人熟知则是在2014年,AWS率先推出了真正意义上的第一款Serverless FaaS服务——Lambda。从此,Serverless 的概念逐渐进入大众视野,各大厂商开始跟进。
2016 年,Azure、Google以及 IBM相继发布 Serverless 计算平台。
2017 年,Serverless开始在国内落地。腾讯云和阿里云先后发布了Serverless 计算产品——云函数和函数计算;
一年后的2018 年,腾讯云发布小程序·云开发产品,提供基于小程序的多端Serverless 开发方案。阿里云推出Serverless容器服务ASK和Serverless应用引擎SAE。华为云也正式商用发布全球首款基于Kubernetes的Serverless容器服务——CCI(Cloud Container Instance)
2019 年,腾讯云和 Serverless.com 达成战略合作,共同开发 Serverless Framework 产品,提供Serverless 开发的一站式解决方案。
如今,Serverless已经成了各大云厂商的标配,受到整个行业的热捧。
▉Serverless架构详解?
Serverless之所以能实现“按量计费”和“自动扩容”,与其涵盖的诸多技术有关,最关键的两个技术分别为BaaS(Backend as a Service,后端即服务)和FaaS(Function as a Service,函数即服务)。
简单理解,Serverless = Faas (Function as a service) + Baas (Backend as a service)。
首先我们来看FaaS(Function as a Service)函数即服务,也叫Serverless Computing,可让我们随时随地创建、使用、销毁一个函数。
简单来说,FaaS 就是“有事我就干,没事我就躺”。请求多的时候启动多个实例提供服务,没有请求时候则关闭所有实例。
举个例子,有这么一个业务需求:当用户上传一张图片,服务器监听到图片上传,给这个图片打水印,再把加了水印的图片传到oss上,保存了原图和加了水印的图。
上面的图片加水印的服务,就没有状态,它只是读图片、加水印,然后再上传图片,操作都是计算。Serverless服务按量付费,没有用户上传图片时候不会产生服务器租金。
BaaS(Backend as a Service)则是Serverless另一半的重要组成,BaaS即后端即服务,是指具备高可用性和弹性,而且免运维的后端服务。
说简单点,BaaS就是专门支撑FaaS的服务。FaaS就像高铁的车头,如果我们的后端服务还是老旧的绿皮火车车厢,那肯定是要散架的,而BaaS就是专门为FaaS准备的高铁车厢。
比如你需要开发一个App,放在以往,注册、登录、密码管理等代码都需要你自己编写,但实际上这些代码在不同的应用里完全就是大同小异的,本质上是一种重复性工作。所以,云服务商将这些代码提取出来做成一个外部服务,当你需要实现这些功能时直接从云服务器调用即可,非常的方便。
微信小程序云开发,就是一种Serverless的应用场景,让前端工程师不仅可以开发页面还可以通过云函数(Faas)来写业务,而且还提供了基础存储(Baas)。
Serverless发展的一个方向,也就是追求这种一体化的开发体验。
下面举几个有名的Serverless产品FaaS:
亚马逊AWS Lambda
阿里FC
腾讯云SCF
华为FunctionStage
BaaS:
谷歌firebase
Leancloud
bmob
Serverless架构的最大优势,显然就是帮助用户彻底摆脱了基础设施管理这样的“杂事”,更加专注于业务开发,从而提升了效率,降低了开发和运营成本。
Serverless的出现,可以让用户按照实际算力使用量进行付费,属于真正的“精确计费”。
换言之,用户的每一分钱,都花在了刀刃上。
▉适用哪些应用场景?
Serverless 进一步释放云计算的能力,将安全、可靠、可伸缩等需求交由基础设施实现,使用户仅需关注业务逻辑而无需关注具体部署和运行,极大地提高应用开发效率。同时这个方式促进了社会分工协作,云厂商可以进一步通过规模化、集约化实现计算成本大幅优化。
在现阶段,Serverless主要应用在以下几个场景:
首先,在Web及移动端服务中,可以整合API网关和Serverles服务构建Web及移动后端,帮助开发者构建可弹性扩展、高可用的移动或Web后端应用服务。
其次,在IoT场景下,Serverless可高效的处理实时流数据,由设备产生海量的实时信息流数据,通过Serverles服务分类处理并写入后端处理。
另外,在实时媒体资讯内容处理场景里,用户上传的音视频到对象存储OBS,通过上传事件触发多个函数,分别完成高清转码、音频转码等功能,满足用户对实时性和并发能力的高要求。
最后,无服务器计算还适合于任何事件驱动的各种不同的用例,这包括物联网,移动应用,基于网络的应用程序和智能聊天机器人等应用场景。
▉最后总结:
对于企业来说,支持Serverless计算的平台可以节省大量时间和成本,同时可以释放员工,让开发者得以开展更有价值的工作,而不是管理基础设施。另一方面可以提高敏捷度,更快速地推出新应用和新服务,进而提高客户满意度。但是Serverless不是完美的,它也存在一些问题,需要慎重应用在生产环境。毕竟,Serverless或许也仅仅是一个过渡的产物,但是这就要交给时间去验证了。