参考文章:云计算基本概念IaaS,PaaS,SaaS和Serverless - 看风景就 - 博客园

什么是 Serviceless 和 FaaS? - 简书

IDC 卖硬件,服务器托管和租赁,机柜为主,偏大型

IaaS (Infrastructure as Service) 基础设施即服务,卖硬件,机房,服务器,租赁单位更小,更灵活

PaaS (Platform as Service) 平台即服务,卖操作系统,包括 数据库软件,Web服务器,负载均衡器等。

SaaS (Software as Service) 软件即服务,卖云软件,就是多企业用户的web系统,例如:office 365,云CRM等

BaaS (Backend as Service) 后端即服务,卖后端特定场景服务,如 身份验证服务,推送服务,数据存储,文件存储等

Faas (Function as Service) 函数即服务,卖运行平台,用户自己开发应用,部署在平台上,调用执行,按次计费

Serverless 无服务架构,相当于 容器(k8s + Docker) + Faas + BaaS,就用户部署自己的函数在容器中,调用服务商的后端存储等服务,完成整个后端应用。

Serverless 适合构建比较简单的应用,比如上传一张图片,对一段音频/视频进行编码或解码,对请求返回一小段数据等。

Serverless架构主要有以下特点:

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

Serverless常见的应用有:发送通知(短信,邮件等),数据统计分析,定时任务 和 聊天机器人 等

Cloud Native(云原生)

云原生是一种基于云的基础之上的软件架构思想,以及基于云进行软件开发实践的一组方法论。云原生可以分拆为两个词,“云”和“原生”,其中“云”是和本地是相对应的,本地是指传统的的应用是运行服务器主机上,而云是指私有云、公有云和混合云;“原生”就是指土生土长的意思,是指应用在一开始就是基于云进行搭建的,云原生应用有几个基本的特点:微服务、DevOps、容器化等。

Serviceless(无服务器)

Serviceless 字面意思是指无服务器架构,无服务器不是指没有服务器,而是开发者无需关心服务器的维护工作,这些维护工作都是由云服务供应商提供,通过摆脱诸如服务器置备和管理等例行任务,开发人员就会有更多的时间专注于自己的应用开发,除之外,Serviceless 还应该提供自动伸缩功能,可以根据实际的使用情况,自动扩容和收缩服务的配置,甚至收缩到无服务实例的状态,通过事件触发创建实例,另外也应该具有按需付费的特点。

FaaS(函数即服务)

在理解这个概念之前我们先了解 IaaS 和 PaaS。IaaS 全程是 Infrastructure as a Service,基础设施即服务,就是我们通过租用云服务供应商提供的云主机,在云主机上搭建数据库和Web 服务器等,阿里云的 ECS 就属于 IaaS 产品。PaaS 全程是 Platform as a Service,平台即服务,供应商已经为我们搭建好了数据库、Web 服务器,我们可以直接调用数据库,另外我们也只需要把我们的代码上传到 Web 服务器即可完成部署,我们无需关心云服务器的工作等,比如 Google App Engine 就属于 PaaS 产品。

FaaS 的全程是 Function as a Service,函数即服务,在 PaaS 上更进一步,我们都不需要关心应用框架的搭建,我们只需要在供应商已经提供好的应用框架基础下编写函数的代码即可实现应用服务功能,连代码部署我们都不用关心。FaaS 是 Serviceless 一个典型的产品,应该要具备支持多种语言,服务自动伸缩,基于事件触发,按需付费等特点。FaaS的事件触发通常提供2种方式,一种是最常见的HTTP协议,支持GET和POST请求,另外一种是微服务之间的调度协议,通常是RPC协议。

适合场景

  • CPU密集型:当我们需要实现CPU密集型的功能的时候,比如视频转码、音频转码、文件处理等,为了避免影响主服务器的稳定性,可以把消耗大量CPU计算的任务都迁移到函数计算上,运行在沙箱环境中。
  • 瞬时高并发:当双十一来领,或者促销活动的到来,可能会导致短时间出现高并发的问题,如果我们预知流量的到来,我们需要提前部署足够的服务器,当这些粗发活动变成了常态性,比如每个星期定时发放优惠券,运维工作就变成了异常繁琐,如果利用FaaS的自动伸缩特定,当流量到来的时候云平台自动扩张,保证服务稳定。
  • 轻量级服务:对于前端和客户端的开发者,搭建一个后台服务的成本是相对来说较高的,需要更多的学习成本和维护成本,通过FaaS服务可以使用非常低的成本即可搭建一个轻量级服务。

如何更加好使用FaaS?

  • 基础服务BaaS化:由于Serviceless属于无状态服务器,短生命周期,意味着我们不能在服务器维护各种数据库连接的开销,也不能在容器生命周期内保存缓存,也不会在函数容器中搭建复杂的应用框架,所以需要简化基础服务的使用,如对象存储、日志存储、业务服务等,利用这些简化的服务,基于函数的服务就可以通过简单的编码实现各种功能。

优势

  • 多语言支持:FaaS供应商通常会为开发者提供多语言支持,基本会覆盖主流的服务器开发语言,开发者只需要选择自己属于的语言进行开发。
  • 自动伸缩、按需付费:传统的开发我们必须要为峰值预先部署足够的服务器配置和实例数量,然后我们也必须为空闲时间占用的服务而付费,而FaaS根据流量的情况自动伸缩服务实例的数量,不但可以减低突发事件导致的服务压力风险,同时我们只需要为实际占用的时长和配置进行付费。
  • 开发成本低:开发者不再需要关心服务器的维护工作,也不用需要关心服务器框架的搭建,让服务端开发不只是后端工程师的专属,让更多的前端和客户端工程师也可以参与到服务端的开发中来,同时也减少了沟通的环节,让开发更加高效。

劣势

  • 技术受限:由于代码是运行在供应商的服务架构体系,意味着我们需要根据供应商的环境来编写逻辑代码,如果需要更换供应商着要付出更大的成本。
  • 基础服务受限:由于我们无法管理自己的服务器,意味着我们的多数服务(比如数据库)只能根据供应商有什么服务而选择使用,难以定制。
  • 灵活性降低:由于服务器不受我们管理,意味着我们服务基于服务器做一些特点的控制。

FaaS探索的焦点

  • 自动伸缩:由于服务的颗粒度精确到了函数和单个API级别,意味着供应商可以准确地监测到并发量和内存占用和CPU的运行时长,供应商可以根据实际的调用情况自动扩展和收缩服务器的数量。
  • 快速弹起:如果当前是无任务无请求进来,FaaS服务实际上是不需要处于运行状态,完全可以处于停机状态,节省成本,由于服务的冷启动是需要一定的时间,当收到任务的时候如何快速弹起服务是非常重要。

Serviceless 产品

Serviceless FaaS

FaaS 是一个非常典型的 Serviceless 的产品,上文也详细介绍了FaaS的特点。

Serviceless PaaS

Serviceless除了FaaS,目前也有部分供应商提供应用级别的Serviceless PaaS平台,提供App Engine 和容器部署方式,PaaS 本身也有Serviceless一些特点,都是无服务器(开发者无需维护服务器),都可以实现快速扩容和收缩实例数量,但是不同的是Serviceless PaaS弥补了传统 PaaS 无法自动扩容收缩的能力,甚至可以收缩到无实例运行状态。好比如Serviceless PaaS是自来水,而传统PaaS是桶装水,自来水即开即用,而桶装水虽然也很方便,但是需要开发者预先计划好需要桶装水的数量。但是为了保证服务的连续性和快速响应,Serviceless PaaS通常会提供一个最小实例在维持工作,可以根据时间策略或者服务器的占用情况自动扩容和收缩服务实例,而传统PaaS是需要开发者手动进行扩容和收缩服务数量。所以在 Serviceless 加持下,PaaS的优势发挥的淋漓尽致。

总结

很多人分不清Serviceless和FaaS的区别,实际上FaaS只是Serviceless架构的一种产品形态。Serviceless FaaS虽然看起来很先进,可以在其有限的领域下,提供即开即用的功能,开发人员甚至不会用服务器开发即可完成一个web api的开发,比较适合前端和客户端的开发人员,但是由于缺少了灵活性,应用的场景其实是很有限,不适合用于主服务程序的开发。我认为Serviceless PaaS才是未来,在不丢失灵活性的情况下,提供弹性伸缩和按需付费,把Serviceless的特点发挥得淋漓尽致。Serviceless和FaaS没有一个绝对的定义,随着技术的演进,也会有新的解读,未来也会有更多的可能,更大的想象空间,所以我们不必拘束于当前的局限,一起向前看吧。

云计算基本概念IaaS,PaaS,SaaS和Serverless相关推荐

  1. Azure云计算系列之 IaaS PaaS SaaS 核心概念入门

    开门见山 举个例子: 首先, 假如你是个站长 你想建立一个网站 不采用云服务 那么你所需要的投入大概是:买服务器,搭建运行环境,编写网站程序. 但现在你追随潮流,采用流行的云计算: 首先云计算根据用户 ...

  2. 什么是云计算, 什么是 IaaS, PaaS, SaaS

    谈到云计算, 我们会和本地计算作比较. 传统的本地计算, 受限于本地机器性能和存储空间, 计算能力有限. 而云计算可以理解为部署在互联网上的计算机集群, 拥有计算和存储能力, 用户可以按需获取. 极大 ...

  3. 云计算概念 IaaS PaaS SaaS

    SaaS, PaaS, & IaaS定义 SaaS: Software as a Service 软件即服务(也称为云应用程序服务),云市场中企业最常用的选项. SaaS利用互联网向其用户提供 ...

  4. 云计算通俗讲义(Yanlz+Unity+XR+5G+云计算+IoT+TaaS+IaaS+PaaS+SaaS+边缘计算+泛在物联网+立钻哥哥+==)

    <云计算通俗讲义> <云计算通俗讲义> 版本 作者 参与者 完成日期 备注 YanlzXR_CloudNormal_V01_1.0 严立钻 2019.03.18 ++++5G接 ...

  5. 云计算之概念——IaaS、SaaS、PaaS、Daas

    云计算通俗来说就是输入/输出和计算不在一个主机上.计算要用到计算设备,计算设备一般是指CPU.内存和硬盘,输入/输出设备一般是指键盘.鼠标.显示器.耳机.音响.话筒等外设.而我们的个人计算机是使用主板 ...

  6. [6]辨析云计算交付模型IaaS PaaS SaaS和云部署模型

    目录 一.云交付模型 1.1 IaaS 1.2 PaaS 1.3 SaaS 二.云部署模型 2.1公有云 2.2社区云 2.3私有云 2.4混合云 2.5其他云部署模型 2.6关键点小结 一.云交付模 ...

  7. 云计算介绍-1.2,IaaS\PaaS\SaaS比较

    五.IaaS.PaaS比较 IaaS PaaS 开发者的视图 虚拟机.存储.带宽资源,可能需要自己安装OS. 开发和运行平台,类似J2EE.WEB服务器等运行环境 开发环境 传统桌面或服务器开发环境, ...

  8. 云计算介绍-1.1,IaaS\PaaS\SaaS辨析

    云计算是个很神奇的词汇,神奇在一切基于WEB的应用似乎都可以套到云计算范围内. 经过几年的普及,现在已经没人讲:云计算是旧瓶装新酒.百度李彦宏早几年这么讲,现在他也改口了,也要做云计算平台.云计算被公 ...

  9. Iaas,Paas,Saas三者的区别联系是什么?

    本词条由"科普中国"科学百科词条编写与应用工作项目 审核 . 多租户技术(英语:multi-tenancy technology)或称多重租赁技术,是一种软件架构技术,它是在探讨与 ...

最新文章

  1. 前端验证码后端返回一个图片_Web后端开发(6)——简易图片验证码的制作
  2. java输出流缓冲区内容清除,Java输入输出流与缓冲区的使用
  3. Apollo 8 — ConfigService 异步轮询接口的实现
  4. 高性能WEB开发之Web性能测试工具推荐
  5. python手机话费_查询话费订单详情示例代码
  6. DB2一个嵌套循环的sql
  7. Unicode 与 UTF-8 之间的转换
  8. mybatisnet - 2 使用 DataMapper 访问数据库
  9. javac编译带有package的java文件
  10. 最好的年终奖,是你拥有随时跳槽的能力
  11. 于娟的忠告----生命只有一次,活着才是王道啊
  12. python浮点数加整数_Python中整数和浮点数运算
  13. 什么是数据分层,数据分层的作用!
  14. 项目经理的能力模型和能力提升的方法
  15. 微信小程序html5音频,微信小程序 audio音频播放详解及实例
  16. logcat日志的五种级别
  17. python 实现 享元模式
  18. SwiftUI AVKit 之合并和叠加音频mp3 wav 并输出(教程含源码)
  19. XCUIApplication API
  20. 为什么医院治不好你的鼻炎

热门文章

  1. Angular 6集成Spring Boot 2,Spring Security,JWT和CORS
  2. 蒲公英服务器搭建小程序,wx小程序—— 小程序页面通用模板的使用
  3. ZZH与计数(矩阵加速,动态规划,记忆化搜索)
  4. C语言编写自己的日志系统
  5. 日志模块的C语言实现
  6. 卷积和互相关操作的关系
  7. flutter 获取父组件大小并布局容器LayoutBuilder
  8. Spring 构造器注入
  9. C语言学习_DAY_3_基本数据类型_运算符与表达式【C语言学习笔记】
  10. 人性的弱点:人盲从相信权威