各位ICT的小伙伴大家好呀。
最近有没有关注2023亚马逊云科技 re:Invent大会?大会第一天第一个主题演讲,亚马逊云科技高级副总裁Peter DeSantis就以“Road to Serverless”为主题,详细展开了对Serverless发展的解读。
不熟悉的小伙伴可能会云里雾里,亚马逊云科技为啥用这么大的篇幅来介绍Serverless,它到底有何奇妙之处?
今天我们一起重点聊下Serveless到底是个什么东西?也在后面顺便看下亚马逊云科技又发布了什么新东西?
▉ Serverless是个啥?
Server:很简单,直接翻译就是服务器,Serverless要解决问题的产品。
less:更少,Serverless解决问题的目的。
让服务器越来越少?啥?难道,亚马逊云科技要干掉服务器厂商?
No,Serverless并不是说未来就不需要服务器等资源,这其实更多的是一种用户的使用体验。
简单理解就是,开发者在使用的时候不用过多考虑服务器的问题,你就管写代码就好,不需要管理和操作云端或本地的服务器,让开发人员与服务器之间没有了直接交互,仿佛服务器不存在一般,所以才有了“无服务器”的说法。
来看看云原生计算基金会(Cloud Native Computing Foundation)给出了Serverless的官方定义:构建和运行不需要服务器管理的应用程序的概念。好拗口,不愧是官方定义,没明白的继续往下看就可以了。
▉ 为什么需要Serverless?
每一个新技术概念的引入都伴随着生产力的提高,而Serverless也不例外,说白了就是怎么让程序员快点搬砖。
程序员一直在寻找更有效的方法来维持软件开发生命周期(不嫌累?),而无服务器架构且可以帮助企业专注于应用程序开发,不再需要担心服务器等基础设施的部署建设和运维管理,还可以很好的降低开发成本和缩短开发周期。(既要又要!)
无服务器体系架构的开发建立在虚拟化的成就基础上开始的,虽然这个过程是相当连续的,但还是有几个值得注意的里程碑:
早期人们使用物理机来进行业务开发;
随着企业不断提高对软件开发效率的要求,越来越多的企业通过虚拟机提供服务。
虚拟化集群技术逐渐成熟,开始迁移到弹性更好的云计算平台进行开发。
基于最小化操作空间的原则,将每个VM细分为Docker容器。构建在Docker容器上的应用程序不需要任何运行时的环境管理,只需要核心代码的无服务器体系结构。
Serverless来临,帮助开发人员专注于应用程序逻辑而不是服务器。
如上图,我们可以看出开发底层架构的发展一共经历了5个里程碑的过程,就像人类的演进过程,代表着生产力的解放,极大提升了开发人员的的效率。Serverless来到了开发架构的高级阶段。
可能有人会问,我们为什么一定要Serverless呢?
其实从物理机到 Serverless,就像我们买车一样,如果要买一辆私家车,这个车的车况保险全部要自己关心,然后你要自己开;到了虚拟机之后,我们把业务host 到云上,就像汽车租赁;然后再到网约车,我不用买车,不用关心车况,我们外出办事,只需要打个车,完全按需付费,按需弹性。
网约车就像Serverless,我们只需要享受服务,不需要关注车的情况,也不用管车的运行,只需要买这个打车服务就行了。
在 Serverles 架构下,用户仅需要关心业务实现,而操作系统、虚拟化和硬件层面的实现则全部交给服务商统一维护,达到了提高软件开发/交付效率、降低成本(资源成本、人力成本)的目的。
▉ 聊聊Serverless发展史?
Serverless的概念出现已经有十多年了,并且伴随着云计算的发展越来越成熟。
早在2006年,伦敦的一家公司就发布了第一个Serverless平台Zimki。并提出 “Pay as you go”的概念,就是早期的按需付费的雏形,虽然在商业上并未取得成功,但是也拉开了Serverless的大幕。
在2008年,谷歌发布了App Engine服务,用户无需考虑预分配资源,也无需考虑操作系统的实现,让开发模式产生了根本变革。
直到2012年,一家提供DevOps 解决方案的公司 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 年,腾讯云和 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:
Serverless架构的最大优势,显然就是帮助用户彻底摆脱了基础设施管理这样的“杂事”,更加专注于业务开发,从而提升了效率,降低了开发和运营成本。
Serverless的出现,可以让用户按照实际算力使用量进行付费,属于真正的“精确计费”。
换言之,用户的每一分钱,都花在了刀刃上。
▉ 适用哪些应用场景?
Serverless 进一步释放云计算的能力,将安全、可靠、可伸缩等需求交由基础设施实现,使用户仅需关注业务逻辑而无需关注具体部署和运行,极大地提高应用开发效率。同时这个方式促进了社会分工协作,云厂商可以进一步通过规模化、集约化实现计算成本大幅优化。
在现阶段,Serverless主要应用在以下几个场景:
首先,在Web及移动端服务中,可以整合API网关和Serverles服务构建Web及移动后端,帮助开发者构建可弹性扩展、高可用的移动或Web后端应用服务。
其次,在IoT场景下,Serverless可高效的处理实时流数据,由设备产生海量的实时信息流数据,通过Serverles服务分类处理并写入后端处理。
另外,在实时媒体资讯内容处理场景里,用户上传的音视频到对象存储OBS,通过上传事件触发多个函数,分别完成高清转码、音频转码等功能,满足用户对实时性和并发能力的高要求。
最后,无服务器计算还适合于任何事件驱动的各种不同的用例,这包括物联网,移动应用,基于网络的应用程序和智能聊天机器人等应用场景。
▉此次AWS发布了啥?
在此次re:lnvent 2023大会上,亚马逊云科技高级副总裁Peter DeSantiss首先回顾了近年来亚马逊云科技在其庞大云服务体系上构建大规模的Serverless服务的过程,包括用于存储的Amazon S3、用于计算的Amazon Lambda、以及用于数据库的Amazon DynamoDB。
Peter 表示:“Serverless的核心理念是消除管理服务器和基础设施的负担。通过使用Serverless服务方式,用户无需再关心升级软件、修补操作系统、淘汰旧主机以及验证新主机等问题。”
紧接着3项Serverless新服务:
首先是 Amazon Aurora Limitless Database,这是一个数据库产品,可以根据客户的数据模型,自动随着计算或存储需求的增加,进行数十个、甚至数百个数据库实例的扩展。对于企业端的数据库管理者来说,所有的这些扩展实例 " 看起来 " 和操作起来,依然像是单一一个数据库那样简单。他们不再需要手动去规划数据库的拆分,也无需再担心拆分操作对数据库性能的影响,一切都是自动进行的。
其次,他们还带来了 Amazon ElastiCache Serverless,这则是一种近乎全自动的缓存配置服务。现在只需要一分钟、而不是过去的几个小时,就能完成缓存的初始化。并且缓存的大小、算力、网络带宽,全部都会根据云端的实时负载情况进行自动调整,会根据客户实际使用的存储量和所消耗的计算量进行收费。
最后,AWS 此次还带来了 Amazon Redshift Serverless,其使用了 AI 技术来学习客户的工作负载模式,根据预测的需求自动调整容量和资源。客户现在只需要选择是更偏 " 性能 "、还是 " 成本 ",Amazon Redshift Serverless 便可以自动执行复杂的、甚至是每日持续的容量调整,来满足性价比目标。
另外,AWS 方面就展示了他们在量子计算领域的一些最新进展和目标。不得不说,AWS在创新方面还是超前的,其它厂商要努力“跟进”了。
▉ 最后总结:
对于企业来说,支持Serverless计算的平台可以节省大量时间和成本,同时可以释放员工,让开发者得以开展更有价值的工作,而不是管理基础设施。另一方面可以提高敏捷度,更快速地推出新应用和新服务,进而提高客户满意度。但是Serverless不是完美的,它也存在一些问题,需要慎重应用在生产环境。毕竟,Serverless或许也仅仅是一个过渡的产物,但是这就要交给时间去验证了。