随着云、大数据、容器等技术的成熟,无服务器架构(Serverless)正在成为软件架构领域的热门话题。

一般来说,Serverless架构分为 Backend as a Service(BaaS,后端即服务) 和 Functions as a Service(FaaS,函数即服务) 两种技术。Baas的应用架构由大量第三方云服务器和API组成的,应用中关于服务器的逻辑和状态都由服务提供方来管理。FaaS指开发者可以直接将服务业务逻辑代码部署,运行在第三方提供的无状态计算容器中,开发者只需要编写业务代码即可,无需关注服务器,并且代码的执行它是由事件触发的。其中AWS Lambda是目前最佳的FaaS实现之一。

ap加db架构 dbaas架构_AWS

Serverless架构受到广泛欢迎,主要是因为它有以下特点:

(1)不需要管理服务:不需要提供或维护任何的服务器,不需要安装任何的软件或运行时。

(2)弹性扩缩:应用程序扩缩能自动完成或是通过调整其资源使用量来调整容量,而不是通过增减服务器的数量。

(3)高可用:无服务器应用程序内置高可用和容错。无需考虑高可用,运行应用的服务默认提供高可用。

(4)没有闲置损耗:不需要对计算和存储之类的服务预留容量。如果代码没有运行,就不会收费。

构建无服务器应用程序意味着开发者可以专注在产品代码上,而无须管理和操作云端或本地的服务器或运行时。因此,对于企业来说,应用Serverless架构具有明显的优势:

(1)降低公司启动成本、运营成本

通常情况下,创业公司启动web服务需要准备:版本管理服务器、持续集成服务器、测试服务器、应用版本管理仓库、数据库服务器等等IT基础设施。采用云服务,创业公司不需要自己去搭建服务器,因此会有更多的时间去开发业务功能。而采用函数计算的serverless与云服务器最大的区别是:云服务器需要一直运行,比如说月费或年费要多少钱租,但是serverless是按需计费的,如果有请求到来的时候,才运行函数,否则的话,是不需要钱的。

(2)降低开发成本,实现快速上线

serverless会提供一系列的配套服务,并且会提供一系列的函数计算模板,我们只需要写好我们的配置即可,那么这一系列的东西都可以自动,高效的完成任务。serverless内部还有相当于有内建自动化部署功能,每次我们写完业务代码后,我们只需要运行下即可,很轻松的实现快速上线。比如,在AWS Lambda 函数计算里面,函数一般在上传后几秒钟内,就能做好调用准备。

(3)系统安全性更高

要保持服务器一直运行不是件容易的事情,并且还需要考虑黑客不同类型的攻击,但是有serverless后,我们不需要考虑这些问题了,这些问题第三方供应商已经会帮我解决这些问题的。

(4)能适应微服务架构、扩展能力强

对于传统应用来说,要应对更多的请求的方式,就是部署更多的实例。然而,这个时候往往已经来不及了。而对于 FaaS 来说,我们并不需要这么做,FaaS 会自动的扩展。它可以在需要时尽可能多地启动实例副本,而不会发生冗长的部署和配置延迟。

以AWS Lambda为案例,Lambda能让我们不用思考任何服务器,也就是说,不用我们处理服务器上的部署,服务器的容量和服务器的扩展和失败容错,还有服务器上选择什么OS操作系统,语言的更新,日志等等问题。你的应用程序只需要和多个第三方的API或服务打交道,也可以自我创建一个无服务器的API。

基于以上优点,无服务架构得到了开发人员的积极响应。在以资源有效的方式交付应用程序时,它提供了更多的选项和可能性。很多大型的企业,比如Netflix,已经在探索无服务器计算,希望解放开发人员的时间。随着云计算的兴起,云应用正在进入一个无服务器的世界,这将对软件和应用的创建和发布带来巨大的空间。