摘要:Serverless 架构不是不要服务器了,而是依托第三方云服务平台,服务端逻辑运行在无状态的计算容器中,其业务层面的状态则被开发者使用的数据库和存储资源所记录。

Serverless 是什么

我们在题目提出了一个问题,Serverless 架构是不是就不要服务器了?回答这个问题,我们需要了解下 Serverless 是什么。

Serverless 架构近几年频繁出现在一些技术架构大会的演讲标题中,很多人对于 Serverless,只是从字面意义上理解,无服务器架构,但是它真正的含义是开发者再也不用过多考虑服务器的问题,但是并不代表完全去除服务器,而是我们依靠第三方资源服务器后端,从 2014 年开始,经过这么多年的发展,各大云服务商基本都提供了 Serverless 服务。

架构是如何演进到 Serverless ?

看看过去几十年间,云计算领域的发展演进历程。总的来说,云计算的发展分为三个阶段:虚拟化的出现、虚拟化在云计算中的应用以及容器化的出现。云计算的高速发展,则集中在近十几年。

总结来说有如下的里程碑事件:

  • 通过虚拟化技术将大型物理机虚拟成单个的VM资源。
  • 将虚拟化集群搬到云计算平台上,只做简单运维。
  • 把每一个VM按照运行空间最小化的原则切分成更细的Docker容器。
  • 基于Docker容器构建不用管理任何运行环境、仅需编写核心代码的Serverless架构。

从裸金属机器的部署应用,到 Openstack 架构和虚拟机的划分,再到容器化部署,这其中典型的就是近些年 docker 和 Kubernates 的流行,进一步发展为使用一个微服务或微功能来响应一个客户端的请求 ,这种方式是云计算发展的自然过程。

这个发展历程也是一场 IT 架构的演进,期间经历了一系列代际的技术变革,把资源切分得更细,让运行效率更高,让硬件软件维护更简单。IT架构的演进主要有以下几个特点:

  • 硬件资源使用颗粒度变小
  • 资源利用率越来越高
  • 运维工作逐步减少
  • 业务更聚焦在代码层面

Serverless 架构的组成

Serverless架构分为 Backend as a Service(BaaS) 和 Functions as a Service(FaaS) 两种技术,Serverless 它是由开发者实现的服务端逻辑运行在无状态的计算容器中,它是由事件触发,完全被第三方管理的。

什么是 BaaS?

Baas 的英文翻译成中文的含义:后端即服务,它的应用架构由大量第三方云服务器和API组成的,使应用中关于服务器的逻辑和状态都由服务提供方来管理的。比如我们的典型的单页应用SPA和移动APP富客户端应用,前后端交互主要是以RestAPI调用为主。只需要调用服务提供方的API即可完成相应的功能,比如常见的身份验证,云端数据/文件存储,消息推送,应用数据分析等。

什么是 FaaS?

FaaS可以被叫做:函数即服务。开发者可以直接将服务业务逻辑代码部署,运行在第三方提供的无状态计算容器中,开发者只需要编写业务代码即可,无需关注服务器,并且代码的执行它是由事件触发的。

Serverless的应用架构是将 BaaS 和 FaaS 组合在一起的应用,用户只需要关注应用的业务逻辑代码,编写函数为粒度将其运行在FaaS平台上,并且和BaaS第三方服务整合在一起,最后就搭建了一个完整的系统。整个系统过程中完全无需关注服务器。

Serverless 架构的特点

总得来说,Serverless 架构主要有以下特点:

  • 实现了细粒度的计算资源分配。
  • 不需要预先分配资源。
  • 具备真正意义上的高度扩容和弹性。
  • 按需使用,按需计费。

由于 Serverless 应用与服务器的解耦,购买的是云服务商的资源,使得 Serverless 架构降低了运维的压力,也无需进行服务器硬件等预估和购买。

Serverless 架构使得开发人员更加专注于业务服务的实现,中间件和硬件服务器资源都托管给了云服务商。这同时降低了开发成本,按需扩展和计费,无需考虑基础设施。

Serverless 架构给前端也带来了便利,大前端深入到业务端的成本降低,开发者只需要关注业务逻辑,前端工程师轻松转为全栈工程师。

Serverless 有哪些应用场景?

应用场景与 Serverless 架构的特点密切相关,根据 Serverless 的这些通用特点,我们归纳出下面几种典型使用场景:弹性伸缩、大数据分析、事件触发等。

弹性伸缩

由于云函数事件驱动及单事件处理的特性,云函数通过自动的伸缩来支持业务的高并发。针对业务的实际事件或请求数,云函数自动弹性合适的处理实例来承载实际业务量。在没有事件或请求时,无运行实例,不占用资源。如视频直播服务,直播观众不固定,需要考虑适度的并发和弹性。直播不可能 24 小时在线,有较为明显的业务访问高峰期和低谷期。直播是事件或者公众点爆的场景,更新速度较快,版本迭代较快,需要快速完成对新热点的技术升级。

大数据分析

数据统计本身只需要很少的计算量,离线计算生成图表。在空闲的时候对数据进行处理,或者不需要考虑任何延时的情况下。

  • 开发者编写代码,目前支持的语言Java、NodeJS、Python等语言。
  • 把代码上传到函数计算上,上传的方式有通过 API 或者 SDK 上传,也可以通过控制台页面上传上传,还可以通过命令行工具Fcli上传。
  • 通过API&SDK来触发函数计算执行,同样也可以通过云产品的事件源来触发函数计算执行。
  • 函数计算在执行过程中,会根据用户请请求量动态扩容函数计算来保证请求峰值的执行,这个过程对用户是透明无感知的。
  • 函数执行结束。

事件触发

事件触发即云函数由事件驱动,事件的定义可以是指定的 http 请求,或者数据库的 binlog 日志、消息推送等。通过 Serverless 架构,在控制台上配置事件源通知,编写业务代码。业务逻辑添加到到函数计算里,业务高峰期函数计算会动态伸缩,这个过程不需要管理软硬件环境。常见的场景如视频、OSS 图片,当上传之后,通过进行后续的过滤、转换和分析,触发一系列的后续处理,如内容不合法、容量告警等。

小结

回到我们文章的题目,Serverless 架构不是不要服务器了,而是依托第三方云服务平台,服务端逻辑运行在无状态的计算容器中,其业务层面的状态则被开发者使用的数据库和存储资源所记录。

Serverless 无服务器架构有其适合应用的场景,但是也存在局限性。总得来说,Serverless 架构还不够成熟,很多地方存在不完善。Serverless 依赖云服务商提供的基础设施,目前来说云服务商还做不到真正的平台高可用。Serverless 资源虽然便宜,但是构建一个生产环境的应用系统却比较复杂。

云计算还在不断发展,基础设施发服务日趋完善,开发者将会更加专注于业务逻辑的实现。云计算将平台、中间件、运维部署的责任进行了转移,同时也降低了中小企业上云的成本。让我们一起期待 Serverless 架构的未来。

本文分享自华为云社区《【华为云专家原创】Serverless 架构就不要服务器了?》,原文作者:aoho。

点击关注,第一时间了解华为云新鲜技术~

Serverless 架构就不要服务器了?相关推荐

  1. 我的 Serverless 实战 — Serverless 架构理念 ( 后端服务器发展 | Serverless 与 ServerFul | Serverless 定义 | 架构优缺点 )

    文章目录 一.后端服务器架构发展 二.Serverless 与 ServerFul 三.Serverless 定义 四.Serverless 优缺点 [本文正在参与 "100%有奖 | 我的 ...

  2. Serverless 架构到底要不要服务器?

    简介: Serverless 架构是不是就不要服务器了?回答这个问题,我们需要了解下 Serverless 是什么. Serverless 是什么? Serverless 架构是不是就不要服务器了?回 ...

  3. 应用架构步入“无服务器”时代 Serverless技术迎来新发展

    摘要:以"原生蓄力,云领未来"为主题的2021年云原生产业大会上,华为云Serverless函数服务产品经理分享了"华为云Serverless函数服务,让开发上云极简高效 ...

  4. 一文了解四种软件架构:Serverless架构、微服务架构、分布式架构、单体架构

    如果一个软件开发人员,不了解软件架构的演进,会制约技术的选型和开发人员的生存.晋升空间.这里我列举了目前主要的四种软件架构以及他们的优缺点,希望能够帮助软件开发人员拓展知识面. 一.单体架构 单体架构 ...

  5. 何为 Serverless 架构模式?这 5 大场景来告诉你!

    作者 | Hongqi  阿里云高级技术专家 本文整理自阿里云<Serverless 技术公开课> 什么是 Serverless 架构?按照 CNCF 对 Serverless 计算的定义 ...

  6. 未来我们对微服务和 Serverless 架构有什么期望

    Juan Ignacio Giro | 作者 梁桂钊 | 译者 技术正在以令人难以置信的速度发展,所以在市场上看到新的技术趋势并不新奇.由于微服务的进步,更强大的云计算,以及 Serverless 架 ...

  7. Serverless 架构模式及演进

    作者:西流 编辑&排版:雯燕 Serverless 架构 按照 CNCF 对 Serverless 计算的定义,Serverless 架构应该是采用 FaaS(函数即服务)和 BaaS(后端服 ...

  8. 专访阿里云 Serverless 负责人:无服务器不会让后端失业

    来源|阿里巴巴云原生 2012 年,云基础设施服务提供商 Iron.io 的副总裁 Ken 谈到软件开发行业的未来,首次提出了 Serverless 的概念,为云中运行的应用程序描述了一种全新的系统体 ...

  9. 常见 Serverless 架构模式

    作者 | Hongqi 阿里云高级技术专家 究竟什么是 Serverless 架构? 什么是 Serverless 架构?按照 CNCF 对 Serverless 计算的定义,Serverless 架 ...

最新文章

  1. 8g ubuntu 树莓派4b_树莓派4B安装Ubuntu系统,并安装桌面
  2. SAP CRM产品主数据明细页面无法打开的调试步骤
  3. hdu 3887 Counting Offspring
  4. 【CodeForces - 1A】Theatre Square(水题,几何)(CODEFORCES,梦的开始)
  5. jquery动画切换引擎插件 Velocity.js 学习01
  6. 按键脚本c语言,按键精灵脚本代码大全 按键精灵命令使用方法
  7. ios下使用speex进行音频压缩
  8. 高数-----两个重要的极限
  9. Antelope与 Barracude MYSQL 文件格式
  10. python非线性规划求解_Python之建模规划篇--非线性规划
  11. 强化学习及Python代码示例
  12. Java模拟ATM机系统
  13. android webview应用,Android WebView简单应用
  14. 局域网与城域网 - 以太网标准(百兆 100Base、千兆 1000Base、万兆 10GBase)
  15. JAVA的可变类与不可变类
  16. 支付原理及实现在线支付步骤
  17. 西安翻译学院东区计算机教室,精品案例 | 智慧教室的秘密,竟然在西安翻译学院曝光了!...
  18. 用emacs的org-mode写日记
  19. 最新计算机二级c语言程序设计题库,2016年计算机二级考试C语言程序设计真题题库.doc...
  20. windows日志删除工具

热门文章

  1. es6 import 命令
  2. 在java代码中设置TextView文本内容可滚动
  3. 开发环境很重要,需要学习如何自己搭建开发环境
  4. tee:结果输出到文件同时也作为往后的输入信息
  5. JAVA项目从运维部署到项目开发(三.Redis)
  6. chrome 调试 ios h5
  7. k-means 聚类算法
  8. Linux上更新war包
  9. 线段树——最大数——洛谷——1198
  10. php大文件下載,使用apache/nginx x-sendFile模塊替換