什么是Serverless

描述

**

一、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、按需使用、按量计费,做到低门槛微服务应用上云。

开发

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分