摘要:图灵奖获得者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,你居然还不了解?的更多相关文章

  1. 打破你的认知!Java空指针居然还能这样玩,90%人不知道…

    相信在座的各位都遇到过空指针异常,不甚其烦,本文不是教你避免空指针,而是一些对空指针其他方面的理解. 本文可能有点另类,也可能会打破你对空指针的认知. 1.null.method() 空指针? 我们知 ...

  2. Linux 内核的代码仓库太不一样了,光克隆都让我挠头,克隆后居然还丢文件,你肯定也会遇到!!!

    一个肯定能让你节省几个小时的小知识 大家好,我是 小猿来也,一个人称撸(划)码(水)小能手的程序猿. 最近一段时间,每次经过旁边大佬工位,总是发现他在快速的切屏,不知道在搞什么?难道他发现了快乐星球? ...

  3. python崩溃到现在居然还没有放弃的Day07

    今天新入一个全新的知识面,叫做深浅拷贝,拷贝英文名copy,俗称复制,作为一个火影迷就会想到拷贝忍者旗木卡卡西,跑题了,在所有的数据存储时,都会有内存地址和存储地址,浅拷贝只拷贝第一层的内存地址,深拷 ...

  4. script 标签 幼儿园级别的神坑。居然还让我踩到了。

    这样的写法,会导致页面出现问题,就类似被中断了一样,百思不得其解还以为是代码出了问题. <script src="./Components/ProcessLine/ProcessLin ...

  5. 我造了个好大的"轮子",居然还不是"圆"的!

      我造的这个"轮子"指的是集低代码开发与运维为一体的平台,为什么说它不是"圆"的,因为它有些与众不同,甚至可以说是有些另类.至于为什么造这个"轮子& ...

  6. 2019年居然还出版了一本ASP学习的书籍

    ASP+Dreamweaver动态网站开发(第2版)孙更新,宾晟,李晓娜 著 内容简介 <ASP+Dreamweaver动态网站开发(第2版)>详细介绍了ASP的脚本语言基础.ASP的相关 ...

  7. https wireshark抓包——要解密出原始数据光有ssl 证书还不行,还要有浏览器内的pre-master-secret(内存里)

    基于wireshark抓包的分析 首先使用wireshark并且打开浏览器,打开百度(百度使用的是HTTPS加密),随意输入关键词浏览. 我这里将抓到的包进行过滤.过滤规则如下 ip.addr == ...

  8. Java 12 骚操作, String居然还能这样玩!

    Java 13 都快要来了,12必须跟栈长学起! Java 13 即将发布,新特性必须抢先看! 栈长之前在Java技术栈微信公众号分享过<Java 11 已发布,String 还能这样玩!> ...

  9. 天天用SpringBoot居然还不知道它的自动装配的原理?

    引言 最近有个读者在面试,面试中被问到了这样一个问题"看你项目中用到了springboot,你说下springboot的自动配置是怎么实现的?"这应该是一个springboot里面 ...

  10. SQL 居然还能在 Apache ShardingSphere 上实现这些功能?

    在去年 10 月 5.0.0-alpha 版本发布之后,Apache ShardingSphere 经历了长达 8 个多月的持续开发与优化,终于在 6 月 25 日正式迎来了 5.0.0-beta 版 ...

随机推荐

  1. docker容器管理脚本

    #!/bin/bash #auto install docker and Create VM #by jfedu.net 2017 #Define PATH Varablies IPADDR=`ifc ...

  2. 市二模&中考游记

    市二模 过于久远,记不清了.当时由于不想写游记浪费备考时间所以没写. 然后就是我现在真的记不住,算了不写了( 大概是 140+150+135.5+89+68 吧. 中考 内容以各类奇闻逸事为主( \( ...

  3. Isito 入门(九):安全认证

    本教程已加入 Istio 系列:https://istio.whuanle.cn 目录 7,认证 Peer Authentication PeerAuthentication 的定义 实验 Reque ...

  4. Html5学习内容-4

    (一)display与visibility 这里主要控制元素是否显示 例子 visibility:文字消失空间保留 <!DOCTYPE html> <html lang=" ...

  5. 前后端都用得上的 Nginx 日常使用经验

    前言 nginx 是一个高性能的开源反向代理服务器和 web 服务器,一般用来搭建静态资源服务器.负载均衡器.反向代理,本文将分享其在 Windows/docker 中的使用,使用 nssm 部署成服 ...

  6. 手撕Vuex-模块化共享数据下

    前言 好,经过上一篇的介绍,了解了 Vuex 当中的模块化,本章主要介绍 Vuex 当中的模块化共享数据下篇. 我们知道在全局的 Store 对象当中,我们可以定义全局的数据,那么如果我们在模块当中也 ...

  7. AndroGenshin

    是一个apk文件 jadx打开以后发现主要操作 找到mainactivity,研究代码可以知道主要操作就是对两个字符串进行RC4加密再进行一次换表的base64操作,最后再将加密后的结果与flag做对 ...

  8. CatCatCat

    拿到题目没有思路,查看了题解 附件 放到kali中用string找flag,得到一个密钥,可以用来下面的解密 打开我养了-- 发现里面以U2F开头,结合txt名称"我养了一只叫兔子的91岁的 ...

  9. Android 线性布局和相对布局

    LinearLayout 线性布局 orientation 排列方式:vertical 竖直 horizontal 水平(默认值) layout_weight 权重:将子视图以对应的权重分配其空间大小 ...

  10. C#中的类和继承

    公众号「DotNet学习交流」,分享学习DotNet的点滴. 类继承 通过继承我们可以定义一个新类,新类纳入一个已经声明的类并进行扩展. 可以使用一个已经存在的类作为新类的基础.已存在的类称为基类(b ...