摘要:Serverless 架构不是不要服务器了,而是依托第三方云服务平台,服务端逻辑运行在无状态的计算容器中,其业务层面的状态则被开发者使用的数据库和存储资源所记录。
咱们在题目提出了一个问题,Serverless 架构是否是就不要服务器了?回答这个问题,咱们须要了解下 Serverless 是什么。前端
Serverless 架构近几年频繁出如今一些技术架构大会的演讲标题中,不少人对于 Serverless,只是从字面意义上理解,无服务器架构,可是它真正的含义是开发者不再用过多考虑服务器的问题,可是并不表明彻底去除服务器,而是咱们依靠第三方资源服务器后端,从 2014 年开始,通过这么多年的发展,各大云服务商基本都提供了 Serverless 服务。docker
看看过去几十年间,云计算领域的发展演进历程。总的来讲,云计算的发展分为三个阶段:虚拟化的出现、虚拟化在云计算中的应用以及容器化的出现。云计算的高速发展,则集中在近十几年。数据库
总结来讲有以下的里程碑事件:segmentfault
从裸金属机器的部署应用,到 Openstack 架构和虚拟机的划分,再到容器化部署,这其中典型的就是近些年 docker 和 Kubernates 的流行,进一步发展为使用一个微服务或微功能来响应一个客户端的请求 ,这种方式是云计算发展的天然过程。后端
这个发展历程也是一场 IT 架构的演进,期间经历了一系列代际的技术变革,把资源切分得更细,让运行效率更高,让硬件软件维护更简单。IT架构的演进主要有如下几个特色:服务器
Serverless架构分为 Backend as a Service(BaaS) 和 Functions as a Service(FaaS) 两种技术,Serverless 它是由开发者实现的服务端逻辑运行在无状态的计算容器中,它是由事件触发,彻底被第三方管理的。前端工程师
Baas 的英文翻译成中文的含义:后端即服务,它的应用架构由大量第三方云服务器和API组成的,使应用中关于服务器的逻辑和状态都由服务提供方来管理的。好比咱们的典型的单页应用SPA和移动APP富客户端应用,先后端交互主要是以RestAPI调用为主。只须要调用服务提供方的API便可完成相应的功能,好比常见的身份验证,云端数据/文件存储,消息推送,应用数据分析等。架构
FaaS能够被叫作:函数即服务。开发者能够直接将服务业务逻辑代码部署,运行在第三方提供的无状态计算容器中,开发者只须要编写业务代码便可,无需关注服务器,而且代码的执行它是由事件触发的。并发
Serverless的应用架构是将 BaaS 和 FaaS 组合在一块儿的应用,用户只须要关注应用的业务逻辑代码,编写函数为粒度将其运行在FaaS平台上,而且和BaaS第三方服务整合在一块儿,最后就搭建了一个完整的系统。整个系统过程当中彻底无需关注服务器。less
总得来讲,Serverless 架构主要有如下特色:
因为 Serverless 应用与服务器的解耦,购买的是云服务商的资源,使得 Serverless 架构下降了运维的压力,也无需进行服务器硬件等预估和购买。
Serverless 架构使得开发人员更加专一于业务服务的实现,中间件和硬件服务器资源都托管给了云服务商。这同时下降了开发成本,按需扩展和计费,无需考虑基础设施。
Serverless 架构给前端也带来了便利,大前端深刻到业务端的成本下降,开发者只须要关注业务逻辑,前端工程师轻松转为全栈工程师。
应用场景与 Serverless 架构的特色密切相关,根据 Serverless 的这些通用特色,咱们概括出下面几种典型使用场景:弹性伸缩、大数据分析、事件触发等。
因为云函数事件驱动及单事件处理的特性,云函数经过自动的伸缩来支持业务的高并发。针对业务的实际事件或请求数,云函数自动弹性合适的处理实例来承载实际业务量。在没有事件或请求时,无运行实例,不占用资源。如视频直播服务,直播观众不固定,须要考虑适度的并发和弹性。直播不可能 24 小时在线,有较为明显的业务访问高峰期和低谷期。直播是事件或者公众点爆的场景,更新速度较快,版本迭代较快,须要快速完成对新热点的技术升级。
数据统计自己只须要不多的计算量,离线计算生成图表。在空闲的时候对数据进行处理,或者不须要考虑任何延时的状况下。
事件触发即云函数由事件驱动,事件的定义能够是指定的 http 请求,或者数据库的 binlog 日志、消息推送等。经过 Serverless 架构,在控制台上配置事件源通知,编写业务代码。业务逻辑添加到到函数计算里,业务高峰期函数计算会动态伸缩,这个过程不须要管理软硬件环境。常见的场景如视频、OSS 图片,当上传以后,经过进行后续的过滤、转换和分析,触发一系列的后续处理,如内容不合法、容量告警等。
回到咱们文章的题目,Serverless 架构不是不要服务器了,而是依托第三方云服务平台,服务端逻辑运行在无状态的计算容器中,其业务层面的状态则被开发者使用的数据库和存储资源所记录。
Serverless 无服务器架构有其适合应用的场景,可是也存在局限性。总得来讲,Serverless 架构还不够成熟,不少地方存在不完善。Serverless 依赖云服务商提供的基础设施,目前来讲云服务商还作不到真正的平台高可用。Serverless 资源虽然便宜,可是构建一个生产环境的应用系统却比较复杂。
云计算还在不断发展,基础设施发服务日趋完善,开发者将会更加专一于业务逻辑的实现。云计算将平台、中间件、运维部署的责任进行了转移,同时也下降了中小企业上云的成本。让咱们一块儿期待 Serverless 架构的将来。
本文分享自华为云社区《【华为云专家原创】Serverless 架构就不要服务器了?》,原文做者: aoho 。