(二)Serverless概念及特点
Serverless 翻译为中文是 “服务器无感知”,这代表开发者不需要关心服务器。根据
CNCF的定义,“Serverless是指构建和运行应用程序不需要管理服务器的概念。它描述了一种更细粒度的部署模型,即将应用程序打包为一个或多个功能,上传到平台,然后执行、扩展和计费,以响应当时确切的需求。”其核心思想是将应用程序解耦至“Function”并自动扩展缩减,让用户无需再关注服务器,包括托管或发生在服务器上的所有内容,从而进一步提高云的效率,降低运营的工作量和成本,有效解决资源浪费与成本高的问题。广义的Serverless是指构建和运行软件时不需要关心服务器的一种架构思想。基于 Serverless 思想实现的软件架构就是 Serverless 架构。
与 Serverless 对应的概念就是 Serverful。在Serverful架构下,如果要保证应用持续稳定运行,需要用户自行解决很多问题,例如备份容灾、弹性伸缩、日志监控等。解决这些复杂的问题需要投入大量的人力物力,小公司几乎无法完成。Serverless 就是为了解决这些问题诞生的,它可以将底层硬件、存储等基础资源隐藏起来,由平台统一调度、运维,并将常用的基础技术抽象、封装,比如数据库、消息队列等,将其以服务的方式提供给开发者。开发者只专注于开发业务逻辑,所有业务无关的基础设施,都交给 Serverless 平台。
概括而言,Serverless 和 Serverful 的架构有如下区别,一是资源分配,在 Serverless 架构中,无需关心应用运行的资源(比如服务配置、磁盘大小),只提供一份代码就行;二是计费方式,在 Serverless 架构中,计费方式按实际使用量计费(比如函数调用次数、运行时长),不按传统的执行代码所需的资源计费(比如固定CPU),计费粒度也精确到了毫秒级,而不是传统的小时级别;三是弹性伸缩,Serverless架构的弹性伸缩更自动化、更精确,可以快速根据业务并发扩容更多的实例,甚至允许缩容到零实例状态来实现零费用,对用户来说是完全无感知的,而传统架构这一过程需要较长时间。Serverless被业界认为是继虚拟化、容器技术之后的云计算的第三代通用计算平台。