什么是Serverless无服务器架构?

Serverless的概念

Serverless是最新兴起的架构模式,中文意思是“无服务器”架构。目前,业界并没有给出明确的定义,把其分成两种类型,分别为“Backend as a Service” 和 “Functions as a Service”。

什么是Serverless无服务器架构?

“Backend as a Service”即BaaS,是一种新型的云服务,旨在为移动和Web应用提供后端云服务,实现对逻辑和状态进行管理,包括云端数据/文件存储(例如Parse、Firebase)、消息推送(例如极光推送、个推)、应用数据分析等等。 可以说BaaS是诞生于移动互联网,为了加速移动应用开发和降低成本而形成的开发架构。BaaS可以带来后端能力的服务化,服务化也为后端能力优化管理带来了可能,这些能力通过服务开发者而诞生,重复的建设和规划会在初期就得到避免。

开发者通过使用这些服务,实现自己的业务功能的同时,也会对服务的能力进一步提出要求,促进后端服务的发展。BaaS是在PaaS和SaaS之间,为了满足移动互联网快速发展的需要,将后端的能力以服务形式提供,是在PaaS平台开发能力的基础上,用SaaS的思路,将后端能力服务化,让开发者在此基础上开发自己的Software解决方案。

“ Functions as a Service”即FaaS,指这样的应用,一部分服务逻辑由应用实现,但是跟传统架构不同在于,他们运行于无状态的容器中,可以由事件触发,短暂的,完全被第三方管理,功能上FaaS就是不需要关心后台服务器或者应用服务,只需关心自己的代码即可。其中AWS Lambda是目前最佳的FaaS实现之一。

Serverless不代表再也不需要服务器了,而是说:开发者再也不用过多考虑服务器的问题,计算资源作为服务而不是服务器的概念出现。Serverless是一种构建和管理基于微服务架构的完整流程,允许你在服务部署级别而不是服务器部署级别来管理你的应用部署,你甚至可以管理某个具体功能或端口的部署,这就能让开发者快速迭代,更快速地开发软件。

什么是Serverless无服务器架构?

传统的互联应用架构图与Serverless architactures的不同点

亚马逊AWS发布了新产品Lambda。当时Lambda被描述为:一种计算服务,根据时间运行用户的代码,无需关心底层的计算资源。从某种意义上来说,Lambda姗姗来迟,它更像S3,更像云计算的PaaS理念:客户只管业务,无需担心存储和计算资源。而在此之前不久,2014年10月22日,谷歌今天收购了实时后端数据库创业公司Firebase。Firebase声称开发者只需引用一个API库文件就可以使用标准REST API的各种接口对数据进行读写操作,只需编写 HTML+CSS+JavaScrip前端代码,不需要服务器端代码(如需整合,也极其简单)。

什么是Serverless无服务器架构?

Lambda优势

相对于上两者,Facebook 在2014年二月收购的 Parse,则侧重于提供一个通用的后台服务。不过这些服务被称为Serverless或no sever。想到PaaS了是吗?很像,用户不需要关心基础设施,只需要关心业务,这是迟到的PaaS,也是更实用的PaaS。这很有可能将会变革整个开发过程和传统的应用生命周期,一旦开发者们习惯了这种全自动的云上资源的创建和分配,或许就再也回不到那些需要微应用配置资源的时代里去了。

什么是Serverless无服务器架构?

Parse架构

Serverless的特点

  1. Serverless意味无维护,Serverless不代表完全去除服务器,而是代表去除有关对服务器运行状态的关心和担心,它们是否在工作,应用是否跑起来正常运行等等。Serverless代表的是你不要关心运营维护问题。有了Serverless,可以几乎无需Devops了。
  2. Serverless不代表某个具体技术,有些人会给他们的语言框架取名为Serverless,Serverless其实去除维护的担心,如果你了解某个具体服务器技术当然有帮助,但不是必须的。
  3. Serverless中的服务或功能代表的只是微功能或微服务,Serverless是思维方式的转变,从过去:“构建一个框架运行在一台服务器上,对多个事件进行响应。”变为:“构建或使用一个微服务或微功能来响应一个事件。”,你可以使用 django or node.js 和express等实现,但是serverless本身超越这些框架概念。框架变得也不那么重要了。

Serverless架构的优势

1. 低运营成本

在业务突发性极高的场景下,系统为了应对业务高峰,必须构建能够应对峰值需求的系统,这个系统在大部分时间是空闲的,这就导致了严重的资源浪费和成本上升。在微服务架构中,服务需要一直运行,实际上在高负载情况下每个服务都不止一个实例,这样才能完成高可用性;在Serverless架构下,服务将根据用户的调用次数进行计费,按照云计算pay-as-you-go原则,如果没有东西运行,你就不必付款,节省了使用成本。同时,用户能够通过共享网络、硬盘、CPU等计算资源,在业务高峰期通过弹性扩容方式有效的应对业务峰值,在业务波谷期将资源分享给其他用户,有效的节约了成本。

2.简化设备运维

在原有的IT体系中,开发团队即需要维护应用程序,同时还要维护硬件基础设施;Serverless架构中,开发人员面对的将是第三方开发或自定义的API 和URL,底层硬件对于开发人员透明化了,技术团队无需再关注运维工作,能够更加专注于应用系统开发。

3.提升可维护性

Serverless架构中,应用程序将调用多种第三方功能服务,组成最终的应用逻辑。目前,例如登陆鉴权服务,云数据库服务等第三方服务在安全性、可用性、性能方面都进行了大量优化,开发团队直接集成第三方的服务,能够有效的降低开发成本,同时使得应用的运维过程变得更加清晰,有效的提升了应用的可维护性。

4.更快的开发速度

这一点在现在互联网创业公司得到很好的体现,创业公司往往开始由于人员与资金等问题,不可能每个产品线都同时进行,这时候就可以考虑第三方的Baas平台,比如使用阿里云提供的RDS,极光推送的消息推送,Bmob支付以及地理位置等等,能够很快进行产品开发的速度,把工作重点放在业务实现上,把产品更快的推向市场。

Serverless规模扩展性方面由于充分利用云计算的特点,因此其扩展是平滑的,同时由于Serverless是基于微服务的,而一些微功能微服务的云计算是零收费,这样有助于降低整体运营费用。

将来下述具体应用将可能使用Serverless架构:

  • 静态网站的管理
  • 替代WordPress(Serverless Blog Project)
  • 个人媒体服务器(less!)
  • 物联网Iot或家庭自动框架或项目 (使用 AWS IoT)

2018年Google推出Serverless世界的利器:Knative,可在任何公有私有云上实现无服务器架构,这样用户使用无服务器编程可以不限于特定的云平台如亚马逊AWS。Serverless代表无服务器计算技术崛起, 是微服务的一种表现形式,是新一代云服务和开发架构的实践,是云计算发展重点方向之一。 Serverless架构是BaaS实现的精髓,是BaaS进一步的解读,FaaS(Function as a service)是BaaS中云代码的实现方式。作为使用方我们不仅熟悉业内Serverless架构的经典产品,而且需要进行学习进而开发属于自己Serverless产品,或者能够很好的进行选型为自己产品快速的开发与运营提供基础条件。


分享到:


相關文章: