火出边际的Serverless,你居然还不了解?
摘要:图灵奖获得者David A. Patterson和Spark共同创始人Ion Stoica,在19年伯克利的会议上发布Serverless将是下一代默认的计算范式。
本文分享自华为云社区《听说最近Serverless很火?一文读懂什么是下一代云计算范式》,作者:敏捷的小智 。
云计算发展至今涌现出一系列改变传统IT架构和运维技术的服务,从IaaS、PaaS服务被人们熟知,到容器、微服务技术家喻户晓,技术的每一次变革都是围绕如何提升资源利用率降低成本,帮助开发者从繁重地机房建设和运维等基础设施管理工作中解放出来,简化编程方式,让企业和开发人员释放更多时间精力聚焦业务创新。
近来, Serverless进入人们视线,成为学术界以及工业界研究的热点。图灵奖获得者David A. Patterson和Spark共同创始人Ion Stoica,在19年伯克利的会议上发布Serverless将是下一代默认的计算范式。国内外大型云服务商纷纷布局Serverless领域。那么,究竟什么是Serverless?它的出现能否颠覆目前已有的开发方式呢?
Serverless的诞生
近十年,软件开发领域大热的话题莫过于敏捷和DevOps,我们从敏捷和DevOps角度,结合敏捷和DevOps的诞生路线来了解一下Serverless。
敏捷的诞生
2001年的敏捷软件开发宣言标志着敏捷开发的诞生,以Scrum、XP、Kanban为代表的一众敏捷开发模式被大家所熟识和接受,并应用在软件开发中取代了瀑布模式。敏捷的小步快跑、快速交付、及早反馈解决了业务和开发之间的矛盾,通过关注价值的优先级排序方法,保证开发团队一直走在正确的路上。
DevOps的诞生
快速交付是一个端到端的过程,只有开发的敏捷是无法实现运维端也同样敏捷的,DevOps在2009年应运而生,目的是解决Dev(开发)和Ops(运维)之间的矛盾,打通从客户提出需求到交付产品给客户一个全流程的价值链。
当今主流的微服务架构,它的最佳实践是建立一个 2 Pizza团队,应用按照微服务粒度进行拆分,打通应用DevOps全流程,接口标准化,环境标准化,开发单元可以按天或周进行升级发布,基础设施具备高可用能力和可扩展性,帮助应用实现较大程度上的快速迭代。然而微服务架构并非是应用开发的银弹,技术的发展是无止境的,计算架构正在不可阻挡地走向无服务器时代。
Serverless的诞生
团队是否可以只聚焦在Dev即业务和代码交付层面,而不去关心Ops的部分,减少部署、提高扩展性并减少维护基础设施的负担?由此对软件架构和工具平台的需求从微服务和PaaS转变为软件架构上更小粒度的解耦和平台更多的服务功能。基于此,Amazon在2014年发布的AWS Lambda,标志着Serverless商业化时代的开启,Serverless也从概念、愿景逐步走向落地。
什么是Serverless
Serverless直译过来就是无服务器。根据 CNCF 的定义,Serverless 旨在构建和运行不需要服务器管理的应用程序。那么,Serverless真的没有服务器吗,程序不需要服务器托管和运行吗?其实不然,无服务器架构只是服务器调配、维护、更新、扩展和容量规划等繁琐工作逐步下放到无服务器服务提供者(如华为云函数工作流FunctionGraph),解放开发者的生产力,让开发者专注于编写应用程序的业务逻辑,运维工程师能够将精力放在业务运维上。
目前业界普遍认为Serverless = FaaS + BaaS,FaaS(Function as a Service,函数即服务),开发者实现的服务器端应用逻辑以事件驱动的方式运行在无状态的临时容器中,这些容器和计算资源完全由云提供商管理。BaaS(Backend as a Service,后端即服务), 由第三方提供的包含某一块功能的微服务,开发者以 API 形式接入。比如云数据库、对象存储、消息队列等。
Serverless的基本运行单元为函数,是一种云计算执行、部署和计费模型,具有以下特点:1)快速上线,Serverless 让开发者聚焦业务逻辑,业务上线不再关注运行态的环境搭建,上线周期从周级缩短到天级。2)弹性伸缩,Serverless 让开发者无需提前预估业务流量,系统会根据业务流量按需扩容、缩容,响应速度从秒级提升到毫秒级。3)免运维,Serverless 让开发人员无需感知底层资源,自然也无需关注资源的分配和运维,从而实现自适应,免运维。4)按需调用、付费,Serverless让应用按需使用资源,按量计费,提升资源使用率,帮助企业降低成本。
Serverless的应用
为了有更好的直观体验,我们结合具体产品来了解一下Serverless的特点和适用场景,以华为云函数工作流(FunctionGraph)为例。
华为云FunctionGraph是一款基于事件驱动的函数计算与编排服务,提供了界面化、一站式的函数开发、管理、上线等功能,支持6大类语言和自定义运行时,支持10+类的函数触发器类型,可观测性上提供了较为丰富的日志、监控等功能。
FunctionGraph具有自动分层弹性调度策略,通过代码最小依赖、分层打包、分层加载/缓存、预测启动、预测加载等技术,使能极速冷启动,启动速度达到百毫秒级;根据请求的并发数量自动调度资源运行函数,实现透明、准确和实时的伸缩,应付业务峰值的访问;通过函数间高速总线实现低函数间通信时延(2~3ms),做到统一高速总线,支撑函数间通信事件、参数、Future等重要数据的高效传输;提供函数全生命周期管理能力,打通DevOps流程,包括CloudIDE/CI CD等打通,提供一站式函数开发平台,支持云上开发、调试。
适用场景
现阶段,Serverless主要应用在以下场景1)异步的并发,组件可独立部署和扩展;2)应对突发流量或服务使用量不可预测;3)短暂、无状态的应用,对冷启动时间不敏感;4)需要快速开发迭代的业务。基于此,Serverless非常适合做Web类应用开发、事件驱动类应用、AI类应用开发等,这里我们分享三种具体使用场景。
Web类应用
在小程序后端、Web后端、问答机器人、前端BFF等开发场景中,Serverless整合调度后端服务,解放端侧开发,让开发者更快、更灵活开发各种应用,无需关注后端服务。
事件驱动类应用
在实时图片处理、实时数据流处理、IoT事件处理等场景里,用户上传文件到对象存储服务,触发函数,完成对文件的处理、识别、提取、筛选等功能。此方案的优势为事件触发,按需供给,开发者无需关注业务波峰波谷,节省闲时成本,降低运维成本。
AI类应用
随着各行各业智能化深入带来更多的应用开发场景,使用Serverless与各类人工智能服务结合,可以快速构建人脸识别、车牌识别、AI推理、视频直播等应用。
优势为快速搭建,按需使用函数与多个智能服务集成,形成丰富的应用处理场景。并随时根据业务改变对函数处理过程进行调整,实现业务灵活变更。且运维简单,用户只需开通相关云服务并在函数服务中编写业务逻辑,无需配置或管理服务器,专注于业务创新。
当然Serverless并非完美,也有自己的不足,如进程启动延时、不适合长时间运行应用、无法常驻内存、细粒度的单位带来业务拆分上的困难等。任何新技术的应用,都要和具体业务结合,取其精华解决具体问题,毕竟适合的才是最好的。
国内Serverless现状
根据云计算开源产业联盟的《中国DevOps现状调查报告》显示,2020年,企业使用的基础设施技术中Serverless占比为14.1%,2021年占比为16.78%,增长了2.68%。由此可见,Serverless 作为未来的云计算范式,目前在国内的使用尚未达到规模,这也为广大开发者提供了弯道超车的机会。毕竟Serverless凭借自身的优越特性,对于开发者来说,吸引力是巨大的。
华为一线大咖带你轻松入门Serverless
你是否已经迫不及待要体验Serverless的魅力了呢?华为云倾心打造《Serverless高手伪装者速成班》,四阶课程学练结合,场景化实践助你轻松入门Serverless,更有一线专家跟踪教学,丰富学习奖励等您拿哦!
立即扫码报名,探秘Serverless吧!
火出边际的Serverless,你居然还不了解?的更多相关文章
- 打破你的认知!Java空指针居然还能这样玩,90%人不知道…
相信在座的各位都遇到过空指针异常,不甚其烦,本文不是教你避免空指针,而是一些对空指针其他方面的理解. 本文可能有点另类,也可能会打破你对空指针的认知. 1.null.method() 空指针? 我们知 ...
- Linux 内核的代码仓库太不一样了,光克隆都让我挠头,克隆后居然还丢文件,你肯定也会遇到!!!
一个肯定能让你节省几个小时的小知识 大家好,我是 小猿来也,一个人称撸(划)码(水)小能手的程序猿. 最近一段时间,每次经过旁边大佬工位,总是发现他在快速的切屏,不知道在搞什么?难道他发现了快乐星球? ...
- python崩溃到现在居然还没有放弃的Day07
今天新入一个全新的知识面,叫做深浅拷贝,拷贝英文名copy,俗称复制,作为一个火影迷就会想到拷贝忍者旗木卡卡西,跑题了,在所有的数据存储时,都会有内存地址和存储地址,浅拷贝只拷贝第一层的内存地址,深拷 ...
- script 标签 幼儿园级别的神坑。居然还让我踩到了。
这样的写法,会导致页面出现问题,就类似被中断了一样,百思不得其解还以为是代码出了问题. <script src="./Components/ProcessLine/ProcessLin ...
- 我造了个好大的"轮子",居然还不是"圆"的!
我造的这个"轮子"指的是集低代码开发与运维为一体的平台,为什么说它不是"圆"的,因为它有些与众不同,甚至可以说是有些另类.至于为什么造这个"轮子& ...
- 2019年居然还出版了一本ASP学习的书籍
ASP+Dreamweaver动态网站开发(第2版)孙更新,宾晟,李晓娜 著 内容简介 <ASP+Dreamweaver动态网站开发(第2版)>详细介绍了ASP的脚本语言基础.ASP的相关 ...
- https wireshark抓包——要解密出原始数据光有ssl 证书还不行,还要有浏览器内的pre-master-secret(内存里)
基于wireshark抓包的分析 首先使用wireshark并且打开浏览器,打开百度(百度使用的是HTTPS加密),随意输入关键词浏览. 我这里将抓到的包进行过滤.过滤规则如下 ip.addr == ...
- Java 12 骚操作, String居然还能这样玩!
Java 13 都快要来了,12必须跟栈长学起! Java 13 即将发布,新特性必须抢先看! 栈长之前在Java技术栈微信公众号分享过<Java 11 已发布,String 还能这样玩!> ...
- 天天用SpringBoot居然还不知道它的自动装配的原理?
引言 最近有个读者在面试,面试中被问到了这样一个问题"看你项目中用到了springboot,你说下springboot的自动配置是怎么实现的?"这应该是一个springboot里面 ...
- SQL 居然还能在 Apache ShardingSphere 上实现这些功能?
在去年 10 月 5.0.0-alpha 版本发布之后,Apache ShardingSphere 经历了长达 8 个多月的持续开发与优化,终于在 6 月 25 日正式迎来了 5.0.0-beta 版 ...
随机推荐
- QT中级(2)QTableView自定义委托(二)实现QProgressBar委托
同系列文章 QT中级(1)QTableView自定义委托(一)实现QSpinBox.QDoubleSpinBox委托 QT中级(2)QTableView自定义委托(二)实现QProgressBar委托 ...
- QT中级(1)QTableView自定义委托(一)实现QSpinBox、QDoubleSpinBox委托
1 写在前面的话 我们在之前写的<QT(7)-初识委托>文章末尾提到,"使用一个类继承QStyledItemDelegate实现常用的控件委托,在使用时可以直接调用接口,灵活实现 ...
- EFCore 使用FluntApi配置 全局查询筛选器
我们在类中通常会有一个属性为 IsDel来表示软删除或也称逻辑删除,这个属性会导致我们在进行查询操作时,每一次都要 .where(s=>s.IsDel==false) 非常的麻烦.在使用efCo ...
- 又拍云+PicGo搭建图床教程
具体搭建方法 https://blog.csdn.net/qq_41684621/article/details/114068076 这里有个细节 注意这里一定要加上 http:// 否则在自动生成 ...
- 从HumanEval到CoderEval: 你的代码生成模型真的work吗?
本文分享自华为云社区<从HumanEval到CoderEval: 你的代码生成模型真的work吗?>,作者:华为云软件分析Lab . 本文主要介绍了一个名为CoderEval的代码生成大模 ...
- 使用DocumentBuilderFactory解析XML浅谈
背景: 当使用Java解析XML时,可以使用javax.xml.parsers.DocumentBuilderFactory类.这个类提供了一种创建解析XML的文档对象的方式.DocumentBuil ...
- CART算法解密:从原理到Python实现
本文深入探讨了CART(分类与回归树)算法的核心原理.实现方法以及应用场景.文章首先介绍了决策树的基础知识,然后详细解析了CART算法的工作机制,包括特征选择和树的构建.接着,通过Python和PyT ...
- MCU看门狗使用注意事项
前言 最近因为项目产品硬件设计有问题,导致设计的一款产品把硬件电源开关以及硬件系统复位功能去掉了.更严重的是,这产品已经开始生产了,硬件已经无法修改,所以软件必须上看门狗,否则设备死机或是异常后就只能 ...
- [NOI online22提高A] 丹钓战
题目描述 有 \(n\) 个二元组 \((a_i, b_i)\),编号为 1 到 n. 有一个初始为空的栈 SS,向其中加入元素 \((a_i, b_i)\) 时,先不断弹出栈顶元素直至栈空或栈顶元素 ...
- FOJ有奖月赛-2015年11月 Problem B 函数求解
Problem B 函数求解 Accept: 171 Submit: 540Time Limit: 1000 mSec Memory Limit : 32768 KB Problem D ...