云函数计算基金会对serverless的定义

  • Serverless架构应该是采用Fass(函数即服务)和Sass(后端即服务)服务来解决问题的一种设计。

  • 狭义上的Serverless就是Fass+Sass的组合。

  • Fass:Function as a Service。本质上就是一个函数运行平台,集成了触发器。它会负责服务器资源的调度和运维。

  • Bass:Backend as a Service。可以理解为黑盒,Sererless将后端架构整个承担了下来,以接口的方式提供服务。

Serverless优点

Serverless

  • 事件驱动:云函数也不是一直运行的,而是通过一定的条件触发。是通过一些类似消息事件、定时器等等触发的。产生事件的源头叫做触发器。

  • 按量付费:Serverless是按照fass调用次数,以及消耗的cpu、内存等资源按量计费的。Fass也会根据并发量生成多个函数实例。

  • 弹性伸缩:Bass也会根据并发亮自动调配服务器资源。实现了不同访问量的实时弹性伸缩。

  • Fass和Bass的架构是分离计算和存储的架构。计算由Fass负责,存储由Bass负责。Fass和Bass也被分开部署和收费。应用的存储已经不是应用的一部分,而是演变为了独立的云服务器。

Serverless缺点

  • 严重依赖云平台厂商:例如A厂商认为数据可以采用sql形式存储,B厂商则认为还可以采用json格式形式存储。那么它们所对应的Fass接口是不同的。同一套代码是不可能在不同的Serverless产品上运行的。
  • 开发调试困难,Serverless依赖云服务,本地难以搭建环境。
  • 底层硬件不确定。bass是一个黑盒,有些代码必须使用特定的cpu和gpu运行的。

使用serverless-http包装express和云函数

使用serverless-http包装express和云函数