摘要:图灵奖获得者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吧!