什么是Serverless?阿里云腾讯云都在发力「无服务器架构」

本文涉及的产品
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
函数计算FC,每月15万CU 3个月
简介: 要说目前软件架构中热度十二分的话题,当属Serverless。通常我们会将其翻译为“无服务器架构”。尽管成天被称为“无服务器”,但该架构与传统架构不同,显然并不是真的不需要服务器。而是选择将服务器等基础设施的管理“隐藏”起来,计算资源作为服务而不是作为服务器的概念出现。

要说目前软件架构中热度十二分的话题,当属Serverless。


通常我们会将其翻译为“无服务器架构”。


尽管成天被称为“无服务器”,但该架构与传统架构不同,显然并不是真的不需要服务器。


而是选择将服务器等基础设施的管理“隐藏”起来,计算资源作为服务而不是作为服务器的概念出现。


兼具事件触发、短暂以及完全被第三方管理等多重属性,其中开发者只需关注业务逻辑即可。


那一年,也就是2012,TA首次出现在技术人的视野之中。


就在崭露头角之后的短短两年,号称云计算“3A巨头”之一的AWS,就于当年年底正式推出了Lambda 产品,标志着Serverless的商业化进程隆重被开启。


当时的Lambda曾被大家如此描述:这是一种计算服务,可以根据时间来运行用户的代码,无需关心底层的计算资源。



从2012年到2014年,Lambda着实不算早到。


但就像云计算PaaS初出茅庐时的说法一样:用户只管业务就好,底层IaaS就交给我们吧!


Serverless与PaaS带给人们的理念是如此惊人的相似。


随后的两年时间内,Google Cloud Function 和微软 Azure Function 在技术圈子的成功,也就顺理成章将 Serverless推进了热化阶段。


从架构变迁聚焦Serverless内涵


对于众多开发者而言,显然仅仅知道“Serverless被定义为无服务器架构”的概念完全不够,如何将Serverless的理解更具象化一些?


恐怕还是要从软件应用架构演进的角度说起。


或许你可能了解,在十几年前,单体应用作为最主流的应用架构形式被广泛认可。


依靠一台服务器外加一个数据库,就能让服务可用性达到峰值状态。


但随着服务器老化性能下降甚至自身损坏的情况,再加上企业业务量的逐渐扩大,单体架构再也不是“一招鲜吃遍天”。


哪怕在流量入口加入负载均衡器,让单体应用可以部署在多台服务器上来增加弹性,也不能完全解决由代码无物理边界所带来的大量冲突。


至此,单体应用架构第一次有机会进化成微服务架构,而此时的架构师们也就不得不直面分布式带来的新挑战。


例如那些年的缓存服务 Redis、状态协调服务ZooKeeper、消息服务 Kafka等。


我们可以简单理解为,将一个大系统划分为多个业务模块,其中的业务模块又需要分别部署在不同的服务器上,各个业务模块之间通过接口进行数据交互,这件事儿似乎没那么简单。


当然除了分布式环境的特殊性以外,微服务架构也给运维带来了不小改变。


具体实践中,由于微服务可以部署在不同的服务器上,也可以部署在相同的服务器却不同的容器上,包括应用分发标准、生命周期标准以及自动化弹性等能力在内的重要性也就一一凸显出来。


转眼到了众所周知的云原生时代,业务直接上云不说,还能提供标准化的应用托管服务,包括版本管理、发布、上线后的观测、自愈等,价值红利得到进一步彰显。


而此时Serverless也正迎着这波技术红利闯入了大众的视线,得到关注。


可以看出,在架构的演进中,无论是研发还是运维人员都逐渐将着眼点从机器向平台系统转移,而不是单纯用人去管理,这或许是对于Serverless原理最朴素的阐释。


总结一下,Serverless的出现其实是将主机管理、操作系统管理、资源分配等,甚至是应用逻辑全部组件都集成为服务。


如果将其放在当下的云计算场景中,就不能单纯狭义理解为“不用关心服务器”那么简单,毕竟上云的资源除了服务器之外,还涉及基础计算、存储资源、网络资源等诸多,也包括数据库、缓存以及消息队列等更上层的范畴。


Serverless架构类同FaaS,又做何解?


提及 Serverless,很多人的第一反应都是 FaaS+BaaS。


的确,这是 Serverless的一种实现形式,也是一种比较主流的理解。


所谓“FaaS+BaaS ”,其实就是函数即服务与后端即服务的结合体。


具体来说,BaaS(Backend as a Service)可以被解释为“后端即服务”。


一般是API调用后端或别人已经实现好的程序逻辑,通常用来管理数据。


例如,亚马逊RDS可以替代自己部署的MySQL,当然其中还有各种其它数据库、中间件的作用。


FaaS(Functions as a Service)则是函数即服务,作为无服务器计算的一种形式,当前使用最广泛的当属AWS的Lambada。


经过长期实践我们认为,Serverless架构可以提供一种更加“代码碎片化”的软件架构范式,而所谓的“函数”(Function),则是提供相比微服务更加细小的程序单元。


进一步来说,究竟该如何理解“函数即服务”的概念?


大致上是开发者先将函数定义封装在容器中,通过调用函数来实现调用后端存储等服务。


本质上,FaaS是一种事件驱动的由消息触发的服务。


与传统的服务器端软件的不同,经应用程序部署到拥有操作系统的虚拟机或者容器中,一般需要长时间驻留在操作系统中运行。


而FaaS则可以直接将程序部署上到平台上,当有事件到来时触发执行,执行完了就可以消灭。


更重要的一点,FaaS产品不需要对特定框架或库进行编码。


还是以AWS Lambda函数为例,函数可以在Javascript、Python、Go等,也就是任何JVM语言(Java,Clojure,Scala等)或.NET语言中实现;但与此同时,Lambda函数还可执行与其部署工件捆绑在一起的另一个进程。


在FaaS环境中,用户将函数功能代码上传到FaaS提供商,其中对的水平扩展是完全自动弹性的。


而“函数”还可以代表客户所要执行的每个操作,即每个函数完成一个相对简单的业务逻辑,一个完整的应用由若干个函数组成,主要包括创建、读取、更新以及删除等。



目前,函数即服务(Function as a Service,FaaS)是当下Serverless实现的技术基础。


因为FaaS和Serverless之间关系密切,所以FaaS的特点也可以被认为是Serverless平台的特点,但如果单纯认为Serverless就是FaaS,就比较狭义了。


BaaS 时代仅仅以 API 的方式提供应用依赖的后端服务;而在 FaaS 时期,用户与开发者不再关注底层,这么说Serverless繁荣也是合理有据的事儿。


使用Serverless,也是一把双刃剑


据实际观察,一直以来企业使用 Serverless 通常会涉及几方面因素,其中“减少运营成本”被认为是最直观有效的原因之一。


的确,应用Serverless后,企业就无需再为潜在的流量高峰买进大部分时间都可能空闲的服务器机架,而是根据流量进行自动伸缩,采用按请求量来付费的灵活方式。


此外“自动按需扩展”可以发挥到极致:随时扩展到当前的使用量,消除了意外或者季节性流量高峰的困扰。


更重要的是,Serverless 不需要关心内存泄露,还具备将云数据库、云消息队列等服务囊括在内的完善配套设施,极大减少工作量。


哪怕企业中大部分的开发人员都出身软件,对修复保护以及管理并不擅长,一样可以做到专注软件开发,Serverless绝对没问题。


基于此,一直以来国内外都有很多企业致力于提供基于Serverless 框架的能力服务,接受程度更是水涨船高,简单盘点下,尤其是几家大型的公有云厂商。


例如里程碑式的AWS Lambda。


作为AWS针对Serverless架构推出的FaaS云服务,AWS Lambda自2014年上线以后就受到广泛关注,除了满足大家对Serverless的期望之外,更重要的是AWS平台的成功。


AWS Lambda的优势可以简单总结为:


成熟度高:第一个在主流公有云平台上的Serverless FaaS平台,已经有数年的发展和沉淀用户基数大:AWS Lambda有较大的用户基数,参考案例很多活跃的社区:目前开源社区有很多围绕AWS Lambda展开的开源项目AWS的整合:AWS Lambda天然和AWS平台上的服务有良好集成紧随其后,Microsoft Azure也在2016年推出了事件驱动的函数式云计算服务Azure Functions。


其支持用户以多种语言进行函数开发,包括Java、Node.js、PHP、C#、F#、Bash及Microsoft Windows的PowerShell脚本等。


此外,Azure Functions除了提供公有云的版本之外,还提供私有化(On-premises)部署的版本Azure Functions Runtime。


产品功能也是可圈可点:


完整性:Azure Functions是一个功能比较完备的Serverless FaaS平台整合:Azure Functions天然与Azure云平台上各类服务有良好的集成平台:对于使用微软体系产品和工具构建IT能力的企业而言,Azure Functions是Serverless转型的首选平台私有化:提供带有商业支持的私有化部署版本,可满足不同层面的用户的需求同样是在2016年,Google Cloud Platform推出了Google Cloud Functions平台,也同时加入Serverless领域的竞争序列。


同为FaaS平台,Google Cloud Functions与AWS Lambda和Microsoft Azure在功能上最大的区别有啥?


细数以后,可能在于Google Cloud Functions目前仅支持JavaScript作为函数开发语言,运行环境为Node.js。


2018年7月,Google又顺势公布了开源项目Knative,定位为Kubernetes的Serverless插件,推出后得到了Pivotal、IBM以及Red Hat的大力支持。


国外争先恐后,国内也是蜂拥而至。阿里云作为国内第一批推出Serverless平台的公有云厂商,其FaaS平台产品被称为阿里云函数计算。


如果从事件触发、支持语言以及用户体验等方面考量,该产品也有很多数据值得关注:


事件触发:阿里云函数计算可以被阿里云上的服务事件触发,例如阿里云对象存储(OSS)支持语言:阿里云函数计算目前支持的开发语言为Node.js,并计划后续将支持Java及Python整个函数代码的部署包大小不能超过50MB,部署包解压后的代码不能超过250MB用户体验:阿里云函数计算提供了基于Web的控制台和SDK;用户可以通过Web控制台管理函数应用,也可以通过交互式的命令行来操作服务规格:一个服务下最多包含50个函数和10个触发器。在运行时,函数最长的运行时间为300s,即5min,一个函数的最大并发数为100同为国内云计算竞争的翘楚,无服务器云函数(Serverless Cloud Function,SCF)是腾讯云推出的函数式计算平台,根据官方的资料,其发布时间是2017年4月26日。



总结下腾讯云Serverless平台的特点:


函数运行时:腾讯云SCF目前支持Python、Java及Node.js作为函数的开发语言用户可以以压缩包的形式从本地上传代码,也可以引用腾讯云对象存储中的代码文件事件触发:目前腾讯云SCF支持的事件触发源有腾讯云对象存储COS、定时器、腾讯云消息服务CMQ,以及用户手动通过API及控制台触发服务规格:每个函数将在一个基于CentOS Linux的环境中被执行。函数执行的内存范围为128MB至1536MB,单个区域支持的最大函数定义数量为20个,函数执行的最大时长为300秒,最大的并发数为5以上我们探讨的基本是大型公有云服务商针对Serverless的技术实践。


其实与公有云相比,在私有环境中构建Serverless平台,在技术上并没有什么太多障碍,自然也有不少领先的技术尝试,对于此我们会专门成文详细探讨。


可以发现,哪怕是拥有世界范围影响力的公有云服务商针对Serverless的技术探究似乎也出现了缺乏统一认知以及相应标准,无法适应所有的云平台的情况,例如支持的开发语言不同,事件触发的机制有差异等。


毕竟Serverless从来都不是一款产品,也不是一个工具,而是一整套能力的合集。


甚至在实践中还会出现业务轻量化困难、难以在秒级甚至毫秒级别扩容出业务实例;基础设施响应能力不足导致服务发现和日志监控系统等问题。


进而带来大量其他web服务器托管提供商可能会倒闭,很多SaaS平台受到冲击以及运维和实施人员的生存空间进一步缩小等行业现象。


但不容规避的一点,Serverless 架构的兴起使“去服务器化”真正造福了开发者,让基础设施管理出现了新契机。


随着技术上对去中心化以及轻量虚拟化的需求越发强烈,这种“全云化”的模式似乎预示着真正的云时代正在到来,不是吗?




云服务器ECS地址:阿里云·云小站

相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
相关文章
|
7天前
|
机器学习/深度学习 人工智能 弹性计算
什么是阿里云GPU云服务器?GPU服务器优势、使用和租赁费用整理
阿里云GPU云服务器提供强大的GPU算力,适用于深度学习、科学计算、图形可视化和视频处理等多种场景。作为亚太领先的云服务提供商,阿里云的GPU云服务器具备灵活的资源配置、高安全性和易用性,支持多种计费模式,帮助企业高效应对计算密集型任务。
|
9天前
|
存储 分布式计算 固态存储
阿里云2核16G、4核32G、8核64G配置云服务器租用收费标准与活动价格参考
2核16G、8核64G、4核32G配置的云服务器处理器与内存比为1:8,这种配比的云服务器一般适用于数据分析与挖掘,Hadoop、Spark集群和数据库,缓存等内存密集型场景,因此,多为企业级用户选择。目前2核16G配置按量收费最低收费标准为0.54元/小时,按月租用标准收费标准为260.44元/1个月。4核32G配置的阿里云服务器按量收费标准最低为1.08元/小时,按月租用标准收费标准为520.88元/1个月。8核64G配置的阿里云服务器按量收费标准最低为2.17元/小时,按月租用标准收费标准为1041.77元/1个月。本文介绍这些配置的最新租用收费标准与活动价格情况,以供参考。
|
7天前
|
机器学习/深度学习 人工智能 弹性计算
阿里云GPU服务器全解析_GPU价格收费标准_GPU优势和使用说明
阿里云GPU云服务器提供强大的GPU算力,适用于深度学习、科学计算、图形可视化和视频处理等场景。作为亚太领先的云服务商,阿里云GPU云服务器具备高灵活性、易用性、容灾备份、安全性和成本效益,支持多种实例规格,满足不同业务需求。
|
15天前
|
弹性计算
阿里云2核16G服务器多少钱一年?亲测价格查询1个月和1小时收费标准
阿里云2核16G服务器提供多种ECS实例规格,内存型r8i实例1年6折优惠价为1901元,按月收费334.19元,按小时收费0.696221元。更多规格及详细报价请访问阿里云ECS页面。
52 9
|
12天前
|
监控 Ubuntu Linux
使用VSCode通过SSH远程登录阿里云Linux服务器异常崩溃
通过 VSCode 的 Remote - SSH 插件远程连接阿里云 Ubuntu 22 服务器时,会因高 CPU 使用率导致连接断开。经排查发现,VSCode 连接根目录 ".." 时会频繁调用"rg"(ripgrep)进行文件搜索,导致 CPU 负载过高。解决方法是将连接目录改为"root"(或其他具体的路径),避免不必要的文件检索,从而恢复正常连接。
|
15天前
|
弹性计算 异构计算
2024年阿里云GPU服务器多少钱1小时?亲测价格查询方法
2024年阿里云GPU服务器每小时收费因实例规格不同而异。可通过阿里云GPU服务器页面选择“按量付费”查看具体价格。例如,NVIDIA A100的gn7e实例为34.742元/小时,NVIDIA A10的gn7i实例为12.710156元/小时。更多详情请访问阿里云官网。
54 2
|
21天前
|
存储 弹性计算 NoSQL
"从入门到实践,全方位解析云服务器ECS的秘密——手把手教你轻松驾驭阿里云的强大计算力!"
【10月更文挑战第23天】云服务器ECS(Elastic Compute Service)是阿里云提供的基础云计算服务,允许用户在云端租用和管理虚拟服务器。ECS具有弹性伸缩、按需付费、简单易用等特点,适用于网站托管、数据库部署、大数据分析等多种场景。本文介绍ECS的基本概念、使用场景及快速上手指南。
62 3
|
25天前
|
监控 网络协议 安全
DNS服务器故障不容小觑,从应急视角谈DNS架构
DNS服务器故障不容小觑,从应急视角谈DNS架构
46 4
|
25天前
|
机器学习/深度学习 监控 Serverless
无服务器架构(Serverless)
无服务器架构(Serverless)
|
26天前
|
存储 弹性计算 编解码
通过阿里云的活动租赁云服务器时如何选择实例规格?选择指南参考
新手用户通过阿里云的活动租赁云服务器的时候实例规格应该怎么选?目前在阿里云的活动中,可选的云服务器类型除了轻量应用服务器之外,云服务器的主要实例规格有经济型e、通用算力型u1和计算型c7与c8y、通用型g7与g8y、内存型r7与r8y等实例,但是对于新手来说,由于是初次购买,实例规格往往不知道怎么选择了。本文为大家展示阿里云目前活动中各云服务器实例规格性能、适用场景以及选择指南参考。

热门文章

最新文章

相关产品

  • 函数计算