Serverless 到底是什么呢?

    技术圈对 Serverless 的定义也在不断的调整和变化中,所以导致有不少刚接触 Serverless 的同学会认为 FaaS 就是 Serverless,也有同学认为 PaaS也是 Serverless,还有同学说使用 Serverless 就没有服务器了。总的来说,很多同学对 Serverless 到底是什么并没有一个很清晰的认知,概念还比较模糊,那么,接下来,我们尝试从广义和狭义两个角度入
    手,解释 Serverless 的架构理念;

    广义上来说,Serverless 是一种后端架构理念,或者说是一种思想、概念,直接翻译过来叫做 “无服务”,但是不要被字面意思误导,这并不代表着应用运行不需要服务器,在 Serverless 时代之前,我们可以将传统架构统称为 Serverful 时代, 意思就是关于服务器的一切,我们都需要人工干预,而Serverless,更准确的说,应该是开发者不用关心服务器的意思,是将服务器相关的工作交给云平台来做,对于开发者来说,与服务器运维有关的所有工作都不再关心,Server(服务器)是不可能真正消失的。Serverless 所希望的,是开发者用代码去支撑业务逻辑,而对于资源的管理交给工具和云。

    在 Serverful 的架构下,我们需要关心的问题非常多,比如:根据业务流量大小等指标,响应式地调整服务规模,实现自动弹性伸缩。再比如异地容灾、负载均衡、日志监控、文件存储等等,解决这些复杂的问题需要投入大量的人力、物力, 而在 Serverless 架构下,开发者只专注于开发业务逻辑,所有的这些与业务无关的基础设施,全部交给云平台负责,由云平台统一调度、运维。

    在这样的理念指导下,各家云平台厂商,都有不同实现方案,每家云平台提供的 Serverless 服务,都或多或少的存在差异,但是,按照 CNCF (云原生计算基金会) 对Serverless 计算的定义,Serverless 架构应该是采用 FaaS(函数即服务)和 BaaS(后端即服务)服务来解决问题的一种设计。这样的定义从应用落地的角度来说,更加的具体可行,也让我们对 Serverless 的理解更加的清晰明了;因此,从应用落地的角度,狭义的 Serverless 就是 FaaS+BaaS 的组合

    image.png