前言
上文说到云计算的十余年发展让整个互联网行业发生了翻天覆地的变化,Serverless作为云计算的产物,或者说是云计算在某个时代的表现,被很多人认为是真正意义上的云计算,关于“Serverless是什么”这个问题,其实是可以通过不同角度来分析的。
MartinFowler在“ServerlessArchitectures”一文中从Serverless组成角度给出了Serverless的定义,他认为Serverless实际上是BaaS与FaaS的组合,并针对BaaS和FaaS进行了详细的描述。
Serverless最早用于描述那些大部分或者完全依赖于第三方(云端)应用或服务来管理服务器端逻辑和状态的应用,这些应用通常是富客户端应用(单页应用或者移动端App),建立在云服务生态之上,包括数据库(Parse、Firebase)、账号系统(Auth0、AWSCognito)等。这些服务最早被称为Baas(BackendasaService,后端即服务)。
Serverless还可以指这种情况:应用的一部分服务端逻辑依然由开发者完成,但是和传统架构不同,它运行在一个无状态的计算容器中,由事件驱动,生命周期很短(甚至只有一次调用),完全由第三方管理。这种情况被称为FaaS(Functionsasaservice,函数即服务)。AWSLambda是目前的热门FaaS实现之一。
通过MartinFowler的描述可以总结出FaaS、BaaS以及Serverless之间的关系为下图所示。
Serverless架构的组成
从Serverless的结构上来看,Serverless=FaaS+BaaS是一个被普遍认可的概念;从Serverless的特性上来看,Serverless运行在无状态的计算容器中,由事件触发,并且拥有弹性伸缩以及按量付费等能力,让使用者不用花费更多的精力在服务器上,而是更加