vlambda博客
学习文章列表

无服务器(Serverless)本质上就是虚拟主机(VirtualHost)的一次升华


文章声明:此文基于木子个人理解撰写,欢迎各位读者在评论区留言、吐槽、拍砖@-@。
生产环境:Serverless
问题关键字:Serverless


Serverless 是什么?

无服务器(Serverless)当前软件架构中最火的技术实现。它从概念初起到现在,也不过近7年的历史,而且它本身来说是一个大的运维+应用技术栈的实现,其中包括:服务器硬件、操作系统、存储、数据库、中间件等一系列产品。但它真的是一个新的技术实现吗?还是只是一个新瓶装旧酒?
在面对一个新的名词定义的时候,很多人朋友都感到新奇,甚至很多公司开始蠢蠢欲动,想一股脑的都上到自己公司的系统中去,对于它都没有一个足够的认知。当然这不能够怪企业,企业为了生存,在对投资人画饼的时候,得用到一些新鲜名词,尤其做互联网技术的企业:Cloud、BigData、Serverless、AI、VR等等。似乎没有一个高大尚的名词,很难得到更多的投资。

Serverless到底是什么?维基百科上是这样子写的:“无服务器运算(英语:Serverless computing),又被称为功能即服务(Function-as-a-Service,缩写为 FaaS),是云计算的一种模型。以平台即服务(PaaS)为基础,无服务器运算提供一个微型的架构,终端客户不需要部署、配置或管理服务器服务,代码运行所需要的服务器服务皆由云端平台来提供。”而在这当中,最早提供对应服务的应该是AWS的Lambda。其后各大公有云厂商都开始推出属于自己的Serverless Framework。Google Cloud Functions、Microsoft Azure Functions、IBM OpenWhisk、Aliyun SAE等等。
在AWS上木子找到了一篇关于Serverless架构的前世今生,其中这样描述Serverless,“无服务器架构是基于互联网的系统,其中应用开发不使用常规的服务进程。相反,它们仅依赖于第三方服务,客户端逻辑和服务托管远程过程调用的组合。”最重要的一点是,他这里也提到了,这项技术的目标并不是为了实现真正意义上的无服务器,而是希望能通第三方的基础服务,来解放客户的运维工作,使客户可以更好的关注于自身业务的本身(这正是公有云厂商的价值所在及很多客户的痛点)。目前阿里云、腾讯云、AWS、Azure等公有云厂商都有提供对应的服务,可能还是有很多朋友不能够理解,木子在这里再大胆的做一个类比,其实Serverless就是VirtualHost的一次升华,可能有的朋友会呵呵^_^,但我们仔细抽丝剥茧,会发现就是这么一回事。

Serverless Function

先来说说无服务函数(Serverless Function),它可以大致分为两大类:公共类无服务函数和自建无服务函数。本质上就是公共类的函数计算或者说单一业务处理逻辑的实现。你把业务丢到无服务函数里,它给你计算处理之后,返回结果给到你。回过头来看,那我们是不是可以在VirtualHost里面丢一个函数应用,由这个VirtualHost里的函数应用计算处理之后,返回结果给到我们了?而这个过程中唯一的区别就是算力问题,无服务函数后端提供的算力可能比你用VirtualHost的算力要强成千上万倍(当然系统入侵、电力故障、容灾等不在我们这次的讨论范围)。另一个就是公有云厂商提供的无服务函数接口能够和多种开发语言对接,这个其实本质技术上没有太多难点,公共类的无服务函数计算本身提供的是标准化的组件、中间件和各种方法或类的解耦。

Serverless Framework

前面我们说到了Serverless Function,下面我们来聊聊Serverless Framework,无服务框架我们可以理解为一堆无服务函数+中间件+负载均衡+业务逻辑+数据库的集合。通过上面的定义我们不难发现,是不是我们可以把它说成是一堆的虚拟主机+中间件+负载均衡+业务逻辑+数据库的集合了?在没有无服务框架的时候,我们通过不同种类的虚拟主机(asp、asp.net、php等)自建无服务函数体系(当然这里没有办法提供更加高端的无服务函数计算),与自身业务逻辑进行整合,从何实现类无服务应用框架,也不是不可以的事情。只是现在公有云厂商将其拆分得更细,并提供公共类服务,降低了服务提供的门框而已。下图是一个简单的Serverless Web应用的实现,它可以帮助我们更好的了解Serverless。当然Serverless Framework不仅仅包括Serverless Web,还有很多种不同类型的实现,如:Serverless K8S、Serverless 物联网架构等等。
下面我们再来解读一段关于Severless的说法:“最开始无服务器架构试图帮助开发者摆脱运行后端应用程序所需的服务器设备的设置和管理工作。”这不就是虚拟主机干的事情吗?你把代码直接ftp上去,然后打开网站就可以了,至于服务器在哪里,运行状态怎么样,是否有硬件故障,这都不是我们需要关心的事情,对应的虚拟主机提供商会帮我们解决。

Serverless 真的不需要运维吗?

Serverless真的不需要运维吗?这就如同共产主义,你可以无限接近,但真正做到很难。业务逻辑是第三方云服务提供商无法了解的,所以你会发现,目前的无服务框架还只能够提供比较基础的服务,或者说业务逻辑比较简单的一些业务场景的实现(当然这和目前无服务使用方的技术能力也有很大的关系)。但随着无服务框架的需求越来越旺盛,中间所暴露出来的问题也就更多了,而为了解决这些问题,无服务框架厂商又会提供一系列的诊断、分析、监控类工具,来辅助运维、开发人员进行业务故障分析,这也就是无意识中形成了一整套的无服务框架运维、开发体系,回过头来看,我们似乎又回到了原点(从技术上来说),但当我们站在业务的角度来看却不然,你的系统业务处理能力将有系数倍的增加,而这就是Serverless的魅力所在。
简而言之,言而总之,无服务器架构的出现不是为了取代传统的应用。然而,从具有高度灵活性的使用模式及事件驱动的特点出发,开发人员、架构师、运维人员应该重视这个新的计算、运维及开发应用模式,它可以帮助我们达到减少部署、提高扩展性并减少代码后面的基础设施的维护负担。而这也可能是开发人员、架构师、运维人员弯道超车的一个很好的机会,把握前沿技术、紧跟脚步,时间终将给你一个满意的答复。
关于Serverless我们就简单聊到这里,中间可能存在一些木子的个人武断或偏见,欢迎各位读者在评论区留言、吐槽、拍砖@-@。