serverless原理?serverless是什么意思?什么是BaaS、Faas?

serverless原理?serverless是什么意思?什么是BaaS、Faas?,第1张

serverless原理?serverless是什么意思?什么是BaaS、Faas?

serverless是什么意思?serverless是什么,直译过来就是无服务器。


根据 CNCF 的定义,Serverless 是指构建和运行不需要服务器管理的应用程序的概念。


serverless中文的含义是 “无服务器”,但是它真正的含义是开发者再也不用过多考虑服务器的问题,但是并不代表完全去除服务器,而是我们依靠第三方资源服务器后端,比如使用 Amazon Web Services(AWS) Lambda. 计算服务来执行代码,那么Serverless架构分为 Backend as a Service(BaaS) Functions as a Service(FaaS) 两种技术,Serverless它是由开发者实现的服务端逻辑运行在无状态的计算容器中,它是由事件触发,完全被第三方管理的。


什么是BaaS?

Baas 的英文翻译成中文的含义:后端即服务,它的应用架构由大量第三方云服务器和API组成的,使应用中关于服务器的逻辑和状态都由服务提供方来管理的。


比如我们的典型的单页应用SPA和移动APP富客户端应用,前后端交互主要是以RestAPI调用为主。


只需要调用服务提供方的API即可完成相应的功能,比如常见的身份验证,云端数据/文件存储,消息推送,应用数据分析等。


什么是FaaS?

FaaS可以被叫做:函数即服务


开发者可以直接将服务业务逻辑代码部署,运行在第三方提供的无状态计算容器中,开发者只需要编写业务代码即可,无需关注服务器,并且代码的执行它是由事件触发的。


其中AWS Lambda是目前最佳的FaaS实现之一。


Serverless的应用架构是将BaaS和FaaS组合在一起的应用,用户只需要关注应用的业务逻辑代码,编写函数为粒度将其运行在FaaS平台上,并且和BaaS第三方服务整合在一起,最后就搭建了一个完整的系统。


整个系统过程中完全无需关注服务器。


Serverless 是一个当今软件世界中比较新的话题。


它并没有一个普遍公认的权威定义,每个人每个企业对它的解释可能都有不同,而 Serverless 正是在这种情况下不断发发展的。


但是就算如此,有一些 Serverless 的特征还是被广泛认可的:

服务端的主机和进程完全由供应商管理

可以根据负载进行自动伸缩

按照精确的使用情况来计费,就像水和电一样。


(效用计算)

满足以上几点就意味着:

供应商对 Serverless 服务的能力评估方式不再是单纯的提供多少CPU,多少硬盘空间这种的资源性指标了,而可能是可以承受多少峰值的并发数,实时性等类似的非功能性指标。


由于服务端完全托管给给供应商,使用者无法介入,那么供应商应该提供很高的可用性保障。


以上五点我认为是 Serverless 比较重要的几个特性。


Serverless 的两种形式

Serverless 其实是一种理念,这个理念的核心就是去服务器化。


而当前这种理念有两种实现形式,分别是:

MBaaS(Mobile Backend as a Service),简称 BaaS

FaaS(Function as a Service)

BaaS

BaaS 有些类似 SaaS 的概念,只不过是更小粒度的应用。


可以理解为 BaaS 就是有第三方提供的包含某一块功能的微服务,使用者以 API 形式接入。


比较有名的有 Google Firebase。


而国内的厂商 Lean Cloud 也提供了比较丰富的 BaaS 服务能力。


BaaS 一开始更多的是服务于移动应用开发,为了让很多移动应用创业者可以更专注与应用端本身的业务,出现了 BaaS 这种服务形式,大大提高了他们的生产效率。


FaaS

FaaS 是一种面向函数的构建和部署软件的方式,最先由亚马逊提出,其标志性产品就是 AWS Lambda。


与 BaaS 相同,用户也不需要管理任何服务端的资源。


除此之外,这些函数进程甚至都不是永久存在的,而是只有在需要的时候才加载运行,运行后会立刻被销毁。


由于这种面向函数的构建和部署方式很简单,FaaS 的自动扩展能力非常强。


Serverless的优点

简单的介绍完了 Serverless 的概念,那么我们为什么要使用 Serverless 以及什么场景使用 Serverless 比较好呢?

Common

普遍的好处有两点:

1.降低运维成本。


由于很多服务端的主机维护以及进程管理,甚至是构建部署都不需要使用方关系,可以节约一大波人力和资源成本。


2.绿色计算,降低资源浪费

因为供应商的服务是构建在云上的,而出于效用最大化的考虑,供应商会努力去提高资源的使用效率。


相比现在很多厂商自己维护主机和进程,可以减少很多不必要的资源浪费。


BaaS

由于 BaaS 是把很多服务端能力交由第三方实现,所以开发成本也得到了很大的节约。


FaaS

FaaS的好处主要有两点:

1.构建和部署更简单

因为供应商提供了比较完整的 FaaS 的构建部署方案,不需要开发者自己再去搞了。


而且 FaaS 的构建和部署形式本身也是相对简单的。


2.最小化了扩展的成本

这个优点对于无规律的请求高峰更有益处。


因为无规律意味着你很难制定合适的策略去应对,而 FaaS 它方便的自动伸缩能力可以很好的应对这种场景,而且也不会造成资源的浪费。


Serverless的缺点:

说完了优点,我们谈谈缺点

首先,当前的各种 Serverless 概念的服务,无论 BaaS 还是 FaaS,最大的问题是会被供应商绑定。


比如你使用 Lean Cloud 的数据存储服务,如果你想要迁移到 Google Firebase 上去,那么他们的数据和编程模型可能完全不同,这其中的成本有可能是非常巨大的。


这些是你需要考虑的一点。


其次,因为服务端被托管给了供应商,你无法自己去根据自己的需求对服务端进行优化。


第三,由于服务端本质还是云计算的那套,供应商处于效用最大化原则,你的服务是有可能和其他人的服务公用一个实体资源的。


那么可能会产生多租户问题,不论是从安全性还是从性能的角度都要考虑清楚。


第四,安全问题。


越多的调用第三方服务,就意味着向外暴露越多的风险点。


另外,如果你的服务端完全依靠第三方的话,还有一个重要的问题是你失去了一层服务端的壁垒,很多需要在服务端拦截的内容现在你无法做到了,而放在应用端做这些事情的风险是很大的。


最后,对于 FaaS 而言,还有一些它独有的缺点:

1.函数量爆炸

随着使用的深入,你管理的函数数量可能会有一个大爆发。


而这意味着混乱,和更多出错的可能。


2.重复的函数逻辑

不同的应用端可能不得不写一套相同的函数逻辑。


因为有可能发出的事件是不同的,但是处理方式是相同的。


3.无状态

因为函数进程是运行后即刻销毁,所以状态的保留在这里毫无意义。


总结:

对开发者而言,无论什么样的技术和概念,本质都是我们实现业务的工具而已。


所以对工具的各方面的了解是十分有必要的。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/570632.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-09
下一篇 2022-04-09

发表评论

登录后才能评论

评论列表(0条)

保存