一文读懂Serverless,它到底有啥用?

news/2024/5/20 8:17:49 标签: serverless, 运维, docker

各位ICT的小伙伴好呀。

Serverless是最近大家讨论很多的一个话题。

今天我们就来聊聊什么是Serverless?

▉ Serverless是个啥?

Server:服务器,Serverless解决问题的产品。

less:更少,Serverless解决问题的目的。

所以Serverless直接翻译过来就是“更少的服务器”?

在国内,很多人将Serverless直接翻译成“无服务器”,但“无服务器”并不是说不需要依赖和依靠服务器等资源,其实更多的是一种使用体验。

开发者不用过多考虑服务器的问题,可以专注在产品代码上,并且无需管理和操作云端或本地的服务器,使得开发人员与服务器之间没有了直接交互,彷佛服务器不存在一般,所以才有了“无服务器”的说法。

基于此,云原生计算基金会(Cloud Native Computing Foundation)给出了Serverless的官方定义:构建和运行不需要服务器管理的应用程序的概念。

▉ 为什么需要Serverless?

每一个新技术概念的引入都伴随着生产力的提高,无服务器技术也不例外。

开发人员一直在寻找更有效的方法来维持软件开发生命周期,而无服务器架构且可以帮助企业专注于应用程序开发,不再需要担心服务器等基础设施的部署建设和运维管理,还可以很好的降低开发成本和缩短开发周期。

无服务器体系架构的开发建立在从虚拟化开始的先前成就的基础上,虽然这个过程是相当连续的,但它有几个值得注意的里程碑:

  1. 早期人们使用物理机来进行业务开发;
  2. 随着企业不断提高对软件开发效率的要求,越来越多的企业通过虚拟机提供服务。
  3. 虚拟化集群技术逐渐成熟,开始迁移到弹性更好的云计算平台进行开发。
  4. 基于最小化操作空间的原则,将每个VM细分为Docker容器。构建在Docker容器上的应用程序不需要任何运行时的环境管理,只需要核心代码的无服务器体系结构。
  5. Serverless来临,帮助开发人员专注于应用程序逻辑而不是服务器。

基于以上,我们可以看出开发底层架构的发展一共经历了5个里程碑的过程,就像人类的演进过程,代表着生产力的解放,极大提升了开发人员的的效率。Serverless来到了开发架构的高级阶段。

可能有人会问,我们为什么需要Serverless呢?

其实从物理机到 Serverless,就像我们买车一样,如果要买一辆私家车,这个车的车况保险全部要自己关心,然后你要自己开;到了虚拟机之后,我们把业务host 到云上,就像汽车租赁;然后再到网约车,我不用买车,不用关心车况,我们外出办事,只需要打个车,完全按需付费,按需弹性。

网约车就像Serverless,我们只需要享受服务,不需要关注车的情况,也不用管车的运行,只需要买这个打车服务就行了。

在 Serverles 架构下,用户仅需要关心业务实现,而操作系统、虚拟化和硬件层面的实现则全部交给服务商统一维护,达到了提高软件开发/交付效率、降低成本(资源成本、人力成本)的目的。

▉ 聊聊Serverless发展史?

所有技术发展都不是一蹴而就。

Serverless的概念出现已经有十多年了,并且伴随着云计算的发展越来越成熟。

早在2006年,伦敦的一家公司就发布了第一个Serverless平台Zimki。并提出 “Pay as you go”的概念,就是早期的按需付费的雏形,虽然在商业上并未取得成功,但是也拉开了Serverless的大幕。

在2008年,谷歌发布了App Engine服务,用户无需考虑预分配资源,也无需考虑操作系统的实现,让开发模式产生了根本变革。

直到2012年,一家提供DevOps 解决方案的公司 http://Iron.io 首次提出了Serverless 的概念。

但让Serverless被人熟知则是在2014年,AWS率先推出了真正意义上的第一款Serverless FaaS服务——Lambda。从此,Serverless 的概念逐渐进入大众视野,各大厂商开始跟进。

2016 年,Azure、Google以及 IBM相继发布 Serverless 计算平台。

2017 年,Serverless开始在国内落地。腾讯云和阿里云先后发布了Serverless 计算产品——云函数和函数计算;

一年后的2018 年,腾讯云发布小程序·云开发产品,提供基于小程序的多端Serverless 开发方案。阿里云推出Serverless容器服务ASK和Serverless应用引擎SAE。华为云也正式商用发布全球首款基于Kubernetes的Serverless容器服务——CCI(Cloud Container Instance)

2019 年,腾讯云和 http://Serverless.com 达成战略合作,共同开发 Serverless Framework 产品,提供Serverless 开发的一站式解决方案。

如今,Serverless已经成了各大云厂商的标配,受到整个行业的热捧。

▉ Serverless架构详解?

Serverless之所以能实现“按量计费”和“自动扩容”,与其涵盖的诸多技术有关,最关键的两个技术分别为BaaS(Backend as a Service,后端即服务)和FaaS(Function as a Service,函数即服务)。

简单理解,Serverless = Faas (Function as a service) + Baas (Backend as a service)。

首先我们来看FaaS(Function as a Service)函数即服务,也叫Serverless Computing,可让我们随时随地创建、使用、销毁一个函数。

简单来说,FaaS 就是“有事我就干,没事我就躺”。请求多的时候启动多个实例提供服务,没有请求时候则关闭所有实例。

举个例子,有这么一个业务需求:当用户上传一张图片,服务器监听到图片上传,给这个图片打水印,再把加了水印的图片传到oss上,保存了原图和加了水印的图。

上面的图片加水印的服务,就没有状态,它只是读图片、加水印,然后再上传图片,操作都是计算。Serverless服务按量付费,没有用户上传图片时候不会产生服务器租金。

BaaS(Backend as a Service)则是Serverless另一半的重要组成,BaaS即后端即服务,是指具备高可用性和弹性,而且免运维的后端服务。

说简单点,BaaS就是专门支撑FaaS的服务。FaaS就像高铁的车头,如果我们的后端服务还是老旧的绿皮火车车厢,那肯定是要散架的,而BaaS就是专门为FaaS准备的高铁车厢

比如你需要开发一个App,放在以往,注册、登录、密码管理等代码都需要你自己编写,但实际上这些代码在不同的应用里完全就是大同小异的,本质上是一种重复性工作。所以,云服务商将这些代码提取出来做成一个外部服务,当你需要实现这些功能时直接从云服务器调用即可,非常的方便。

微信小程序云开发,就是一种Serverless的应用场景,让前端工程师不仅可以开发页面还可以通过云函数(Faas)来写业务,而且还提供了基础存储(Baas)。

Serverless发展的一个方向,也就是追求这种一体化的开发体验。

下面举几个有名的Serverless产品FaaS:

  • 亚马逊AWS Lambda
  • 阿里FC
  • 腾讯云SCF
  • 华为FunctionStage

BaaS:

  • 谷歌firebase
  • Leancloud
  • bmob

Serverless架构的最大优势,显然就是帮助用户彻底摆脱了基础设施管理这样的“杂事”,更加专注于业务开发,从而提升了效率,降低了开发和运营成本。

Serverless的出现,可以让用户按照实际算力使用量进行付费,属于真正的“精确计费”。

换言之,用户的每一分钱,都花在了刀刃上。

▉ 适用哪些应用场景?

Serverless 进一步释放云计算的能力,将安全、可靠、可伸缩等需求交由基础设施实现,使用户仅需关注业务逻辑而无需关注具体部署和运行,极大地提高应用开发效率。同时这个方式促进了社会分工协作,云厂商可以进一步通过规模化、集约化实现计算成本大幅优化。

在现阶段,Serverless主要应用在以下几个场景:

首先,在Web及移动端服务中,可以整合API网关和Serverles服务构建Web及移动后端,帮助开发者构建可弹性扩展、高可用的移动或Web后端应用服务。

其次,在IoT场景下,Serverless可高效的处理实时流数据,由设备产生海量的实时信息流数据,通过Serverles服务分类处理并写入后端处理。

另外,在实时媒体资讯内容处理场景里,用户上传的音视频到对象存储OBS,通过上传事件触发多个函数,分别完成高清转码、音频转码等功能,满足用户对实时性和并发能力的高要求。

最后,无服务器计算还适合于任何事件驱动的各种不同的用例,这包括物联网,移动应用,基于网络的应用程序和智能聊天机器人等应用场景。

▉ 最后总结:

对于企业来说,支持Serverless计算的平台可以节省大量时间和成本,同时可以释放员工,让开发者得以开展更有价值的工作,而不是管理基础设施。另一方面可以提高敏捷度,更快速地推出新应用和新服务,进而提高客户满意度。但是Serverless不是完美的,它也存在一些问题,需要慎重应用在生产环境。毕竟,Serverless或许也仅仅是一个过渡的产物,但是这就要交给时间去验证了。

END


http://www.niftyadmin.cn/n/402861.html

相关文章

MyBatis-plus(1)

基本概念: 一)开发效率也就是我们使用这款框架开发的速度快不快,是否简单好用易上手。从这个角度思考,每当我们需要编写一个SQL需求的时候,我们需要做几步 1)Mapper接口提供一个抽象方法 2)Mapper接口对应的映射配置文件提供对应的标签和SQL语…

小红书热搜榜TOP1,多巴胺时尚爆火,怎么抄作业?

今夏时尚,明媚与简约并存。要说今年夏天什么最火?多巴胺必须拥有姓名。无论男女、老少、人宠,都被这股快乐风带飞。 “多巴胺”有多火?就只是彩色穿搭吗?各大博主、品牌若想加入,要怎么玩?今儿&…

解决“Pycharm用Git提交代码速度很慢”的问题

问题 Pycharm用Git提交代码时,速度平均在两三分钟左右,但是用Git命令行提交代码几秒钟就完成了 解决 删除Pycharm安装目录\bin下的runnerw.exe和runnerw64.exe即可恢复正常速度

你真的会写用例吗?自动化测试用例如何编写?看着资深测试的总结...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 Python自动化测试&…

vue 3 第三十三章:自定义 hooks

文章目录 1. vue 2 中mixins1.1. mixins 的缺点: 2. 自定义 hooks2.1. 创建自定义Hook2.2. 在组件中使用自定义Hook 2. 总结 1. vue 2 中mixins 在Vue.js 2.x版本中, mixin 被广泛用于将组件的逻辑、计算属性和方法复用到其他组件中。然而,使…

浅拷贝 深拷贝

数据类型 数据分为基本数据类型(String, Number, Boolean, Null, Undefined,Symbol) 和 对象数据类型 基本数据类型的特点:直接存储在栈(stack)中的数据 引用数据类型的特点:存储的是该对象在栈中引用,真实的数据存放在 堆内存…

安卓手机上哪个支持语音输入的记事本软件好用?

作为一个需要经常记录各种琐碎信息的人,我深知一款好用的记事本软件有多重要。因为在它的协助下,我可以对信息进行快捷记录、轻松查看。并且,随着科技的发展,有些记事本软件已经不再满足于简单的文字输入,而是新增了多…

信噪比对重构算法的影响

前面分析了MP算法、OPM算法和SP算法的原理以及采样率对三种算法的影响。在实际的应用中,会混入噪声,没有噪声那是理想的情况,这里就研究一下信噪比对重构信号产生的MSE的影响。 1、 信噪比对MP算法的影响 首先研究信噪比对MP算法产生的影响…