Serverless 和 faas

本文涉及的产品
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
函数计算FC,每月15万CU 3个月
简介: Serverless 和 faas

参考FaaS(函数即服务) + BaaS(后台即服务)、拉钩教育《玩转 Serverless 架构》课程、Faas,又一个未来?

Serverless 说白了,就是一种不用关心服务器的架构思想,开发者可以不关心除业务代码之外的事情,进而提高业务的迭代效率,使用的云服务也是用多少付多少,从而节省成本。总的来讲,Serverless 对开发者研发方式的影响是巨大的。

因为基于 Serverless,后端工程师不用再关心系统运维,可以专注于业务开发,深入业务细节,使业务快速迭代,帮助业务成功。

说到 Serverless,就不得不说云计算,因为云计算的发展史就是 Serverless 的兴起史。纵观云计算的历史,我们可以将其分为物理机时代、虚拟机时代、容器时代、Serverless 时代

物理机时代,网站上线和稳定运行面临的最大问题就是服务器等硬件问题,你既要购买服务器,还要承担服务器的场地、电力、网络等开销,并且还需负责服务器的维护。好在随后几年随着虚拟化技术逐渐成熟,云计算逐渐进入虚拟机时代,这也给我们带来了希望。

云产品常见分层

Iaas

最初云厂商都是卖硬件,AWS 的 EC2、阿里云 ECS、Azure Virtual Machines,这种云计算形态也被叫作 IaaS(基础设施即服务)

Paas

在裸机上部署操作系统后就是 Paas,提供了一个可运行环境

Saas

后面随着业务形态发展,云厂商发现可以抽象出一些通用的平台,比如中间件、数据库等,于是就把这些功能做成服务,也放在云上去卖,这就是 SaaS。

云数据库有专门的服务器,并且还提供了备份容灾,比自己在服务器上安装数据库更稳性能更强。

对象存储能无限扩容,不用担心磁盘不够了。

这样一来,服务器就只负责处理用户的请求,把计算和存储分离开来,既降低了系统负载,也提升了数据安全性。并且单机应用升级为了集群应用,通过负载均衡,会把用户流量均匀分配到每台服务器上。

不过在服务器扩容的过程中,你还是会遇到一些麻烦。 比如购买服务器时,会发现之前服务器型号没有了,只有新的型号,并且每次新扩容一台服务器,都需要在上面初始化软件环境和配置,还需要保证所有服务器运行环境一致,这是个非常复杂还容易出错的工作。

总的来说,虚拟机可以让你不用关心底层硬件,但是如果能让我们不用关心运行环境就更好了。于是,容器技术诞生了。

容器时代

你还使用了 Kubernetes 来做管理容器集群。基于 Kubernetes 和云厂商提供的弹性能力,你可以实现网站的自动弹性伸缩。目前使用 k8s 的成本还比较高,还需要开发者自己去维护集群,编写繁多的 YAML 来部署应用。

问题:

1、因为你需要去规划节点和 Pod 的 CPU、内存、磁盘等资源,需要编写复杂的 YAML 去部署 Pod、服务,需要经常排查 Pod 出现的异常,需要学习专业的运维知识。

2、容器扩缩容时间长,不能实现秒级扩缩容。

Serverless

在 Serverful 的架构下,开发首先需要分配或找到可用的资源,然后加载代码和数据,再执行计算,将计算的结果存储起来,最后还需要管理资源的释放。

现阶段关于 Serverless 的实现主要是基于 FaaS(函数即服务) 和 BaaS (后端即服务)的方案。

FaaS 提供了运行函数代码的能力,并且具有自动弹性伸缩。基于 FaaS,我们应用的组成就不再是集众多功能于一身的集合体,而是一个个独立的函数。每个函数实现各自的业务逻辑,由这些函数组成复杂的应用。

BaaS(Backend as a service),“后端即服务”, 是将后端能力封装成了服务,并以接口的形式提供服务。比如数据库服务、文件存储服务等。通过 BaaS 平台的接口,我们运行在 FaaS 中的函数就能调用各种后端服务,进而以更低开发成本实现复杂的业务逻辑。

有了 IaaS,我们不需要关注物理机;有了 PaaS,我们不需要关注操作系统;有了容器,我们不需要关心运行环境;而 Serverless 技术的出现,能够让我们不再关心传统的运维工作,让我们更专注于业务的实现,把时间精力花在更有意义的事情上,让我们以更快的速度、更低的成本完成应用的开发迭代,进而创造出更大的价值。

谁在维护serverless的底层

使用 Serverless 有两个途径,一是使用公有云 Serverless 产品,二是自己私有化部署 Serverless 平台。

如果使用公有云 Serverless 产品,底层机器全都由云厂商维护。Serverless 的弹性能力也由云厂商实现。缺点就是你需要依赖云厂商。

如果在自己的服务器集群上部署 Serverless 平台(私有化部署),但这样就需要自己维护底层机器了,运维成本和经济成本都很高。

为什么没有提到Saas

SaaS 的话,是厂商直接提供软件服务,用户花钱购买使用,也就不用自己设计网站架构了

Pod(容器组)是Kubernetes项目的原子调度单位

serverless为什么能实现秒级切换

k8s 的弹性有两种,一种是 Pod 的伸缩,快的话可能几秒钟,这与镜像大小、网络环境等因素有关,并且每次 Pod 扩容都是创建一个全新的 Pod;另一种是节点的伸缩,需要创建新的机器,通常需要几分钟,而 Serverless 则不需要我们关心机器。所以整体上,我认为 Serverless 是秒级弹性伸缩,而 k8s 是分钟级。

一方面是优化了容器本身的启动速度,另一方面是通过容器重用、执行上下文重用等方案,尽可能避免从零初始化一个容器,这样 Serverless 函数就可以实现几十毫秒甚至几毫秒的弹性伸缩。

Severless和容器的关系

目前绝大多数 Serverless 平台底层实现,都是基于容器技术的,Serverless 平台可以基于容器技术实现函数的资源隔离、CPU 和内存限制等。

Serverless的特点

Serverless 架构的主要特点是按量付费、弹性伸缩、不用运维

无状态。基于 FaaS 和 BaaS 的架构,是一种计算和存储分离的架构。 计算由 FaaS 负责,存储由 BaaS 负责,计算和存储也被分开部署和收费。这使应用的存储不再是应用本身的一部分,而是演变成了独立的云服务,降低了数据丢失的风险。而应用本身也变成了无状态的应用,更容易进行调度和扩缩容。

缺点:由于函数无状态,我们就需要使用数据库来存储状态,每次执行就需要访问数据库,就会有大量的网络 I/O,进而降低代码执行的效率。我们大多数应用都是有状态的,比如本地缓存、数据库连接池以及进行通信等,FaaS 的局限就会让我们开发复杂的后端应用变得困难

函数通信效率低

如果两个函数的数据有依赖,需要进行通信、交换数据,就要进行函数与函数之间的调用(调用方式是 HTTP 调用)。相比之前的内存调用,数据交互效率显然低了很多。而这个问题的本质,是 FaaS 还没有比较好的数据通信协议或方案。

相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
相关文章
|
3月前
|
消息中间件 运维 Serverless
函数计算产品使用问题之如何部署Stable Diffusion Serverless API
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
21天前
|
机器学习/深度学习 监控 Serverless
无服务器架构(Serverless)
无服务器架构(Serverless)
|
3月前
|
存储 运维 Serverless
Serverless 支撑赛事转播问题之利用函数计算实现图片处理的实时性和成本节约如何解决
Serverless 支撑赛事转播问题之利用函数计算实现图片处理的实时性和成本节约如何解决
|
3月前
|
前端开发 Serverless 应用服务中间件
Serverless痛点解决问题之将传统 LAMP/LNMP 项目直接 FaaS 化如何解决
Serverless痛点解决问题之将传统 LAMP/LNMP 项目直接 FaaS 化如何解决
39 0
|
4月前
|
JSON JavaScript Serverless
函数计算操作报错合集之流水线部署 serverless 全部失败,该如何解决
Serverless 应用引擎(SAE)是阿里云提供的Serverless PaaS平台,支持Spring Cloud、Dubbo、HSF等主流微服务框架,简化应用的部署、运维和弹性伸缩。在使用SAE过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
3月前
|
消息中间件 运维 Serverless
Serverless 支撑赛事转播问题之利用函数计算处理视频直播截帧服务如何解决
Serverless 支撑赛事转播问题之利用函数计算处理视频直播截帧服务如何解决
|
3月前
|
JavaScript Serverless
Serverless 架构问题之Midway FaaS开源框架的设计如何解决
Serverless 架构问题之Midway FaaS开源框架的设计如何解决
36 0
|
3月前
|
Serverless 数据安全/隐私保护 开发者
Serverless 架构问题之阿里云函数计算在事件生态层面如何解决
Serverless 架构问题之阿里云函数计算在事件生态层面如何解决
42 0
|
3月前
|
监控 Serverless API
Serverless 函数计算问题之环境变量不生效如何解决
在函数实例详情页面登录实例的方法是在“监控指标-实例指标”区域点击特定实例ID进入详情页,之后在右上方找到并点击“登录实例”按钮即可开始操作。使用Golang SDK调用`InstanceExec` API执行命令并通过回调处理输出的具体方式为:首先构建`InstanceExecInput`对象设置服务名、函数名、实例ID及命令
44 0
|
2月前
|
人工智能 自然语言处理 Serverless
阿里云函数计算 x NVIDIA 加速企业 AI 应用落地
阿里云函数计算与 NVIDIA TensorRT/TensorRT-LLM 展开合作,通过结合阿里云的无缝计算体验和 NVIDIA 的高性能推理库,开发者能够以更低的成本、更高的效率完成复杂的 AI 任务,加速技术落地和应用创新。
148 13

热门文章

最新文章

相关产品

  • 函数计算