深度

浅谈云计算时代的 Serverless

爱点击  · 2020-06-02 15:03

【摘要】 当我们在谈论Serverless时,究竟在谈论啥?


作者:爱点击高级技术经理 吴铭铭


Serverless是当前最炙手可热的技术之一,在2019年一度引起热议。Serverless是指构建和运行不需要服务器管理的应用程序的概念,它是云计算时代的一种架构模式,被认为是云计算发展的未来。云计算从发展之初到现在,被大家所熟知的服务类型主要有三种:


  • IaaS(Infrastructure as a Service)

    基础架构即服务,云服务商提供基础设施,用户可以自己控制底层

  • PaaS(Platform as a Service)

    平台即服务,用户无需管理底层的基础设施,只需要管理自己的应用

  • SaaS(Software as a Service)

    软件即服务,用户的部署、管理、开发都交给云服务商,用户直接使用即可


1.jpg


现在慢慢开始演变出新的两种服务类型:

  • FaaS(Function as a Service)

    函数即服务,以函数为主体的事件驱动架构,用户通过事件来驱动函数应用

  • BaaS(Backend as a Service)

    后台即服务,云服务商为用户提供云后端的服务,如文件存储、数据存储、推送服务


Serverless的应用架构就是FaaS和BaaS的结合体,具体可理解为开发者编写函数运行在 FaaS 平台中,并使用了 BaaS第三方服务,这样搭建的一套完整系统。

2.png


IT计算的发展历程,是一个逐步提高生产效率的过程,在这个发展历程中主要经历了以下几个演变:

3.png


  • 通过虚拟化技术将大型物理机虚拟成单个的VM资源

  • 将虚拟化集群搬到云计算平台上,只做简单运维

  • 把每一个VM按照运行空间最小化的原则切分成更细的Docker容器

  • 基于Docker容器构建不用管理任何运行环境、仅需编写核心代码的Serverless架构


而在这个演变的过程中又体现了以下几个特点:

  • 硬件资源使用颗粒度变小

  • 资源利用率越来越高

  • 运维工作逐步减少

  • 业务更聚焦在代码层面

Serverless的内涵就是对全部底层资源的封装,让开发者更专注于业务逻辑。Serverless,翻译成中文是无服务器架构,但并不是无服务。这是一种新的架构模式,开发者不再关心应用运行所需的服务资源,只需关注自己的业务逻辑编写业务代码,而服务相关的都交给Serverless平台。

4.png


在Serverless架构中,FaaS层通过一些列函数实现应用业务逻辑,提供给开发者使用,开发者通过事件来驱动所需要的函数实现自己的业务。而不管是Frontend层、Backend层还是FaaS层都可以去调用云计算平台提供的 BaaS 服务。BaaS的主旨是为开发者免去后端开发和部署的烦恼,使用Baas开发者不需要购买服务器、也不需要部署后端环境、甚至不需要编写后端代码就轻松实现了业务功能,减少了开发流程。


Serverless的技术特点:

  • 应用的加载和执行由事件驱动,由不同的事件与函数进行关联实现不同的响应

  • 按需加载,只有当有请求或有事件发生时服务才会被启用,节省计算资源

  • 因应用按需加载和卸载,状态不能做到本地持久化,同样也无法做到传统意义上的会话保持

  • Serverless应用原生可以支持高可用,应对突发的高访问量


Serverless优势:

  • 降低成本,使用Serverless大大降低了服务成本

  • 部署更方便,无需重复搭建本地环境、测试环境、线上环境

  • 系统安全性更高,不要用考虑底层安全性问题

  • 能适应微服务架构,Serverless天生就与微服务架构是相辅相成的

  • 可扩展性高,基于FaaS 会自动的扩展


Serverless缺点

  • 不适合长时间运行,长时间运行的应用使用Serverless成本高

  • 缺乏调试和开发工具

  • 完全依赖于第三方服务,不方便服务迁移

  • 构建复杂,有门槛

  • 无法用于高并发运用,高并发进程开销大,同样会面临成本高的问题


随着近几年Serverless的发展,业界已经出现了多种平台和工具帮助用户进行Serverless架构的转型和落地。有最早被大众所认可的AWS Lambda,还有来自微软公有云的Azure Functions,基于Kubernetes 架构实现的Kubeless,以容器技术为核心的开源框架OpenFaaS。而国内比较有名的有阿里云函数计算、腾讯云函数(Serverless Cloud Function,SCF)。


小程序开发是目前国内使用 Serverless 比较常用的一个场景。具体的实现就是小程序云开发,支付宝小程序和微信小程序都提供了云开发功能。

5.png


在传统的小程序开发中,需要小程序工程师进行小程序端的开发,还有接口工程师进行服务端接口的开发,然后小程序工程师去调用接口工程师的接口实现业务。接口服务还需要有负载均衡、备份冗灾、监控报警等一些列部署运维操作。在Serverless中只需要一个工程师就能够完成整个应用的前后端开发。因为云开发将后端封装为了 BaaS 服务,并提供了对应的 SDK 给开发者,开发者可以像调用函数一样使用各种后端服务。应用的运维也转移到了提供云开发的服务商。


Serverless主要应用在事件请求场景、流量突发场景、大数据处理场景,通过事件触发场景、业务访问有高峰和低谷的场景、迭代次数多需要快速发布的应用都可用Serverless来实现。通过Serverless构建的应用以更加安全、高效的方式运行,用户不需要关注底层的应用,从而更加专注于业务层的创新。


来自投稿

已有0人收藏

+1

已有1人点赞

+1

发表评论

请先后参与评论

已有0

转发

入驻
机构号