Serverless 详解

Serverless 是什么?

Serverless computing is a cloud computing execution model in which the cloud provider runs the server, and dynamically manages the allocation of machine resources. Pricing is based on the actual amount of resources consumed by an application, rather than on pre-purchased units of capacity. It can be a form of utility computing. — wikipedia.org

Serverless architectures are application designs that incorporate third-party “Backend as a Service” (BaaS) services, and/or that include custom code run in managed, ephemeral containers on a “Functions as a Service” (FaaS) platform. — 《Serverless Architectures》

无服务器架构是基于互联网的系统,其中应用开发不使用常规的服务进程。相反,它们仅依赖于第三方服务(例如 AWS Lambda 服务),客户端逻辑和服务托管远程过程调用的组合。 — 亚马逊 AWS 官方博客

Serverless(无服务器架构)是指服务端逻辑由开发者实现,运行在无状态的计算容器中,由事件触发,完全被第三方管理,其业务层面的状态则存储在数据库或其他介质中。 — 《无服务架构实践手册》

If your PaaS can efficiently start instances in 20ms that run for half a second, then call it serverless. — Adrian Cockroft

优缺点

优势

低成本

运维成本

 服务器、中间件、数据库等均托管于 BaaS/FaaS 平台,用户无需再参与基础设施及软件的维护,省去了集群的运维成本

开发成本

 对比 IaaS 或者 PaaS 平台的服务器或者操作系统,Serverless 的架构中,用户操作的是服务化的组件,比如存储服务、授权服务等,可以缩短开发周期,节约时间成本

按需计费

 Serverless/FaaS 区别于 IaaS/PaaS 预先分配计算资源的计费方式,其计费方式通常是按请求次数及运行时间。如此一来,不仅可以最大程度地利用资源,还能实现真正的按需计费,以降低用户的使用成本

Serverless cost

(使用 iPad™ 手绘而成)

高扩展

 自动进行横向扩展(毫秒级部署,秒级生命周期)

高资源利用率

 提供细粒度的计算能力,最大限度满足实时需求,使得资源利用率大幅度提升

NoOps

 运维的发展经历了,人肉运维、自动化运维、DevOps、AiOps 等。而 Serverless 模式下,用户只需要关心业务编码,真正实现了零运维成本

从更广泛的意义上来讲,Ops 除了指服务器维护,还会包括部署、网络、安全、监控、故障恢复和水平扩展等

劣势

状态管理

 对于有状态的服务,使用 Serverless 可能会导致灵活性降低。而在借助第三方存储媒介的时候,因为无法使用连接池,也使得创建与释放连接的成本加重

第三方存储媒介包括数据库、分布式缓存和云盘等

延迟

 Serverless 应用程序是无状态、分布式、低耦合的,导致很难实现低延迟

资源争用

 多租户模式下,资源隔离控制不当的话,会导致资源争用,使得某一个任务影响到其他任务的运行

没有统一的规范

 业内没有形成统一的接口和规范,导致很难跨平台地使用不同云服务厂商的 Serverless 产品

应用场景

  • 价格敏感场景(针对测试阶段 Demo 级别的实例输出)
  • 流式事件处理(视频流、图片流等)
  • 事件驱动架构
  • 响应式架构
  • IoT 物联网
  • 资源利用率低的业务(大部分时间空闲,只在固定时间触发计算)
  • 流量突发场景(难以预估流量高峰的峰值或时间点)
  • 混合云场景
  • Edge Computing 边缘计算(将应用部署至 CDN 节点,通过 CDN 触发 Lambda,在网络边缘节点直接完成计算,以提高响应速度)

架构

Serverless 发展路线图

gantt

dateFormat YYYY-MM-DD
title Serverless 发展路线图

section 概念提出
《Why The Future Of Software And Apps Is Serverless?》 : done , 首次提出 Serverless 概念 , 2012-10-15 , 2014-11-13

section 产品落地
AWS Lambda 发布 : done , 从概念落地为产品 , 2014-11-13 , 2015-07-09

section 完全构建
AWS API Gateway 发布 : done , AWS Lambda 和 AWS API Gateway 的结合,使得完全构建 Serverless 成为可能 , 2015-07-09 , 2015-10-13

section 成功案例
PlayOnSports 生产级 Serverless 应用 : done , 第一例商业案例大获成功 , 2015-10-13 , 2016-05-25

section 积极布道
举办第一届 Serverless Conf : done , 第一届 Serverless Conf 在纽约成功举办 , 2016-05-25 , 2017-01-01

section 厂商跟风
众多厂商争相入市 : done, IaaS 和 PaaS 厂商跟风,包括 Google Cloud Functions、Azure Funcions、IBM OpenWhis、阿里云函数计算等 , 2017-01-01 , 2018-01-01

section 蓬勃发展
Serverless 借势迅速发展 : active , 去中心化、轻量虚拟化、细粒度计算等技术蓬勃发展 , 2018-01-01 , 2021-01-01

云计算发展路线图

graph TD
start[Start] --> IDC(物理机房)
IDC --> IaaS(基础设施即服务)
IaaS --> PaaS(平台即服务)
PaaS --> SaaS(软件即服务)
SaaS --> Serverless(Serverless)
Serverless --> BaaS(后端即服务)
Serverless --> FaaS(函数即服务)
BaaS --> e[End?]
FaaS --> e[End?]

IDC

 物理机房

IaaS

定义

 IaaS,全称 Infrastructure as a Service,表示基础设施即服务,也有称作 Hardware as a Service

分类
  • 公有云

    公有云是放在公共的互联网上的,只要是平台上的用户都可以使用

  • 私有云

    私有云是为某一个客户单独构建,可以最大程度地保证数据安全和服务质量

  • 混合云

    混合云融合了公有云和私有云,将重要数据保存在本地私有云环境,同时将非核心数据上传公有云处理

平台
  • 国内

    阿里云™、知名 IaaS 平台™、青云™、盛大云™、华为云™、太平洋电信™、51IDC™、UCloud™

  • 国外

    Amazon AWS(Elastic Compute Cloud)™、Google Compute Engine™、EMC™、IBM™

PaaS

定义

 PaaS,全称 Platform as a Service,表示平台即服务。用户可以自己部署操作系统和软件

平台
  • 国内

    AppCan™、APICloud™、Testin™、Coding™、八百客™、云之讯™、追信魔盒™、机智云™

  • 国外

    Google App Engine™、Amazon Elastic Beanstalk™、Microsoft Azure™、VMware Cloud Foundry™

SaaS

定义

 SaaS,全称 Software as a Service,表示软件即服务。软件的开发、管理、部署都交给第三方,不需要担心任何技术问题,可以拿来即用。省去技术团队,直接应用云端系统进行运营和使用即可

平台
  • 国内

    阿里钉钉™、用友超客™、明道™、今目标™、Tower™、纷享销客™、红圈营销™、小满科技™、腾腾科技™、麦客™、美洽™、销售易™、快消总管™、EC 营客通™、店小三™、逸创云客服™

  • 国外

    Salesforce™、Sales cloud™、Zendesk™、Zoho™、IBM Lotus Live™

BaaS

定义

 BaaS,全称 Backend as a Service,表示后端即服务。为客户(开发者)提供整合云后端的服务,例如提供文件存储、数据存储、推送服务、身份验证服务等功能,以帮助开发者快速开发应用

FaaS

定义

 FaaS,全称 Function as a Service,表示函数即服务。服务商提供一个平台,允许客户开发、运行和管理应用程序功能,而无需构建和维护基础架构。按照此模型构建应用程序是实现“无服务器”体系结构的一种方式,通常在构建微服务应用程序时使用

社区发展

Star 趋势

Serverless Star History

(图片来源:star-history.t9t.io™ 官网)

资料

Wikipedia

Doc

Paper

Github

Blog

Video

Conf

DataBase

欢迎加入我们的技术群,一起交流学习

群名称 群号
人工智能(高级)
人工智能(进阶)
BigData
算法