什么是 Serverless

什么是Serverless

Serverless,中文叫做无服务器。

无服务器是一种云原生开发模型,可使开发人员专注构建和运行应用,而无需管理服务器。

无服务器与其他云计算模型的区别在于,它是由云提供商负责管理云基础架构和应用扩展。无服务器应用部署在容器中,这些容器在被调用时会自动按需启动。

(X)aas

IaaS、PaaS、SaaS、BaaS、FaaS,这些名词后面都带着aas三个字母,aas 是 As-a-Service,即为服务的意思。我们看下面这个架构图:

IaaS、PaaS、SaaS

云平台一般都会提供以上架构图中的三种云服务

IaaS:Infrastructure as a Service(基础设施即服务

从上面的架构图可以看出,IaaS处于最底层,服务商提供底层/物理层基础设施资源(服务器,数据中心,环境控制,电源,服务器机房),客户自己部署和执行操作系统或应用程序等各种软件。

在标准的基础架构即服务(IaaS)云计算模型中,用户需要预先购买容量单元;也就是说,您要先向公共云提供商支付始终可用的服务器组件的费用,才能运行您的应用。 用户自行负责在需求高时扩展服务器容量,并在不再需要时缩减容量。即使在应用闲置不用期间,运行该应用所需的云基础架构也要保持就绪。

PaaS:Platform as a Service(平台即服务)

PaaS处于中间层,服务商提供基础设施底层服务,提供操作系统(Windows,Linux)、数据库服务器、Web服务器、域控制器和其他中间件,以及服务模型中的备份服务等中件层服务。例如IIS,.NET,Apache,MySQL …,客户自己控制上层的应用程序部署与应用托管的环境。

SaaS:Software as a Service(软件即服务)

SaaS处于最上层,服务商提供基于软件的解决方案,满足客户最终需求;如OA、CRM、MIS、ERP、HRM、CM、Office 365、iCloud、G Suite等应用,客户不需考虑任何形式的专业技术知识,获得完整的软件包,使他们的日常工作和生活变得更轻松。

img

Baas,Faas

无服务器架构有事件触发应用代码运行时,公共云提供商才会为这一代码分配资源。该代码执行结束后,用户便不再付费。除了成本与效率上的优势外,无服务器也能将开发人员从应用扩展和服务器置备相关的琐碎日常任务中解放出来。

使用Serverless时,管理操作系统和文件系统、安全补丁、负载平衡、容量管理、扩展、日志和监控等例行任务都由云服务提供商分担。

在无服务器模型中,云提供商负责运行物理服务器并代表用户动态分配资源,用户则可以直接将代码部署到生产环境中。

无服务器计算产品通常分为两类,分别是后端即服务(BaaS)和功能即服务(FaaS)。

BaaS 可让开发人员访问各种各样的第三方服务和应用。例如,云提供商可以提供认证服务、额外加密、云访问数据库以及高置信度使用数据。在 BaaS 中,无服务器功能通常通过应用编程接口(API)调用。也可以理解为BaaS = IaaS + PaaS + APIs + SDKs,即服务提供商提供了大量的功能,使用方只需要接入sdk,然后使用其api即可。

在大多数情况下,当开发人员提到无服务器时,他们所指的基本是 FaaS 模型。在 FaaS 下,开发人员仍然要编写自定义服务器端逻辑,但它可以在完全由云服务提供商管理的容器中运行。

一般情况下,云平台的计算费用取决于调用次数,执行时长,内存消耗。所以如果这个函数的功能代码写得不好,调用次数非常多,执行时间特别长,或者消耗了大量的内存,那么价格就会很贵。

一般和BaaS结合,开发一些项目所需的特殊计算,只为实际计算量付费。

那么这种服务适合用于计算量偶尔比较高,但是一般情况没有计算量,或者计算量低的服务

Baas和Faas看起来介于Paas和Saas之间,可以让开发者只关注如何应用的逻辑,而Baas和Faas的区别在,Baas提供各种后台服务的接口,如认证服务等,像是一个个可以配置的插件,而Faas则就是简单的逻辑,你的代码对于数据库的crud可能只是简单的一行代码,无论后台是mysql还是sqlserver。