**
一、Serverless是什么?**
Serverless译为“无服务器”,是指应用程序的编码人员和运维人员无需关注“服务器”的信息,仅关注业务所涉及的代码逻辑即可。而“服务器”相关工作由第三方(AWS、阿里云)来完成。
我们知道,如果要从0开始上线一个业务APP,大致需要做以下工作:
(1)购买服务器;
(2)安装操作系统;
(3)搭建开发环境;
(4)构建与部署APP;
(5)构建高可用与弹性的运行环境(如负载均衡和自动伸缩);
(6)建立APP运行的可观测性(日志分析与可视监控)。
无服务器架构的用户则只需负责(4)和(6);而其它项则由第三方来完成。
从应用架构的角度来看, 《高冷的云原生,原来可以这样理解》 一文讲解到了单体架构、微服务等。如果进一步将微服务进行划分,可形成“函数粒度”的服务,这些服务由事件驱动并由完全由第三方管理,称为函数计算或者FAAS(Function as a Service)。开发人员只需要编写函数就可以了,无需关注(第三方来完成)计算资源的高可用性、弹性等工作。
正如CNCF(Cloud Native Computing Foundation)对Serverless架构的定义:
Serverless是指构建和运行不需要服务器管理的应用程序概念。它描述了一种更细粒度的部署模型,其中将应用程序打包为一个或多个功能,上传到平台,然后执行、扩展和计费,以响应当时确切的需求。
函数计算是事件驱动的无状态应用,需要事件源和管理状态。能够产生事件的源有很多:对象存储、数据库、日志服务、表格存储等等,这些服务通常由公有云(AWS、阿里云)配套提供,称为后端即服务BaaS(Backend as a Service)。
正如UC Berkeley在 Cloud Programming Simplified: A Berkeley View on Serverless Computing一文中提到的Serverless架构:Serverless = FaaS + BaaS。
从基础设施的角度来看,先后经过了物理服务器、虚拟机、容器,现在发展到了Serverless。相应地,计算资源调度的粒度越来越细,越来越有弹性。套用阿里云官网的函数计算应用场景--视频转码:
二、为什么会出现Serverless?
人们总是追求效率、成本。
围绕着云计算,现在已经从云计算、云原生发展到Serverless,演进的背后原理已经在 《高冷的云原生,原来可以这样理解》 进行了探讨。
这里引用Ben kehoe的Serverless考量:
(1)我的业务是什么?
(2)做这件事情能不能让我的业务出类拔萃?
(3)如果不能,我为什么要做这件事情而不是让别人来解决这个问题?
(4)在解决业务问题之前没有必要解决技术问题。
三、Serverless架构是如何实践的?
Serverless的本质是让开发人员最大限度地去关注业务,进行业务创新,而不要把精力花费在底层运行环境所需要的高可用、弹性、安全等因素上。
Serverless最为直接的实践便是函数计算:
Amazon Lambda是一种事件驱动的计算引擎,” 用户无需预置或管理基础设施即可运行代码。只需编写代码并将其作为 .zip 文件或容器镜像上传即可。 ”
阿里云有函数计算。
其基本流程为:
开发者进行代码上传:以Java为例,上传的是jar包,同时会指定入口函数、当前版本、所需资源(内存)等信息。
当云产品事件源触发事件时,资源调度服务会依据函数计算的相关信息,进行申请函数实例。申请方式与VM、Docker类似,都是分布式集群里面,采用某种算法进行选择。
函数实例运行在VM中,同一个VM只运行同一用户的不同函数,以实现安全隔离。
除此之外,阿里云也进行了广泛的探索,其路线图为:
SAE(Serverless App Engine,Serverless应用引擎)是面向应用的Serverless PaaS平台,实现了Serverless的理念:帮助PaaS层用户免运维IaaS、按需使用、按量计费,做到低门槛微服务应用上云。
全部0条评论
快来发表一下你的评论吧 !