FaaS如何在云2.0时代发挥优势,又将走向何方?

摘要: 过去十年,云服务深刻地改变了社会获取和使用计算能力的方式,云服务自身也以极快的速度演进。在基础设施云化之后,容器、Serverless等技术迅猛发展,开始推动业务能力的云化,云计算进入2.0时代。

点此查看原文:https://yq.aliyun.com/articles/368938?spm=a2c41.11181499.0.0

自2006年AWS发布的第一个云服务S3开始,存储、计算等IT基础设施的能力纷纷被以服务的方式提供给用户。过去十年,云服务深刻地改变了社会获取和使用计算能力的方式,云服务自身也以极快的速度演进。在基础设施云化之后,容器、Serverless等技术迅猛发展,开始推动业务能力的云化,云计算进入2.0时代。

12月19日的阿里云栖大会上,阿里云函数计算负责人杨皓然做了主题为“触摸云端编程之道——利用函数计算快速构建弹性可扩展的云原生应用”的演讲,他介绍了Serverless与函数即服务(Function as a Service, FaaS)的关系和价值,演讲结束后我们就该话题进一步采访了他。

云是弹性的、经济的、高效的

什么是云?杨皓然认为“对用户而言,云的核心是解决资源弹性、财务成本和开发效率的问题”。IaaS,PaaS,FaaS等不同形态的云服务本质上都是为了解决资源的弹性、成本和效率问题,不同的地方在于解决的问题域、角度和方式。最开始,云1.0时代,基础设施的云化为用户提供了和传统IT环境近乎一致的体验,让用户能把应用无缝迁移到云端。IaaS层服务通过虚拟化等技术大幅提高了资源利用率,而用户也只需租赁计算资源,不必承担物理硬件的折旧等成本,相比于用户维护自有IT基础设施的方式,IaaS在资源弹性和成本等方面有明显的优势。当人人都能获取所需的计算资源后,如何更高效地管理和使用计算资源则是下一个亟待解决的问题,毕竟,系统配置、故障处理、削峰填谷如何充分利用资源对用户都是不小的负担。

在杨皓然看来,不同层次的云服务是在从不同的角度去解决这些问题,大致可分为“以资源为中心”和“以应用为中心”两类。“以资源为中心”,是指沿着IaaS类服务的思路,进一步优化资源的弹性、成本和效率,例如提供更细粒度规格、更快伸缩时间的计算资源。“以应用为中心”,则是指从应用的架构和开发的角度提供服务,帮助用户构建能充分利用云端资源的、弹性高可用的应用,例如函数计算这样的FaaS服务,或者容器编排服务等。

FaaS把云的弹性、经济和高效优势发挥到了极致

当越来越多的开发者在云端构建应用时,如何正确设计应用架构、充分发挥云的优势变得越来越重要,“云端优先”的思想应运而生,这便促使“云原生(Cloud Native)”应用开发的出现。相比于Serverless,云原生应用是一个更宽泛的概念,在IaaS、PaaS与FaaS等不同的云平台上,都可以构建云原生应用,只不过它们的弹性和敏捷收益不同。”

“如果想要充分地发挥云弹性、经济和高效的优势,一开始就去适配这些特点,做架构的设计,那么最终得到的就是云原生应用。”杨皓然说。

在云原生架构中,以函数计算等FaaS服务为中心的Serverless架构越来越流行。杨皓然认为:“FaaS把云的弹性、经济和高效优势发挥到了极致,真的做到了使开发者只需要关注业务,而不用去管理底层基础设施。”FaaS有如下主要优势,这使它被越来越多人关注:

事件驱动,使得可以与其它服务无缝集成;
由云端全托管,运维高效;
实时弹性伸缩,细粒度的资源计量,按需付费。对于用户来讲,即使应用负载有明显的波峰波谷,资源使用率也是100%;
简化的编程模型,用户专注于单个请求逻辑的开发;
可以做严格的运行时隔离和权限管理机制,保障安全;
……
图片描述

如果要在传统的IT基础设施上实现弹性高可用的分布式系统,那么开发者需要去管理一些具体的底层细节,比如要考虑某个函数需要调度到哪台机器上运行?它是以线程方式还是以进程方式运行?进程崩溃怎么处理?网络不连通怎么办?……这些都需要开发者编码实现。

考虑一下边缘计算的场景,那么这个问题会显得更加明显和严重。在边缘场景中,用户会面对成百上千的小集群,这些设备分布在各种物理环境中,会遇到网络条件恶劣、硬件架构类型不相同、通信能力限制等问题,由开发者来进行管理几乎是不可能的。

“但是实际上,用户应该从底层系统开发维护这类无差别的工作上脱身,专注于业务的创新,更快地将产品推向市场,更快地迭代改进。”杨皓然解释:“各种云服务就是把这些底层的东西抽象出来,让用户能快速地构建弹性的、低成本的、高可用的系统,而Serverless特别是FaaS在这上边目前做得最极致。”

连接是函数计算的核心价值

目前谈Serverless必FaaS,但实际上FaaS只是Serverless生态的一部分。杨皓然解释:“首先Serverless是一个生态,涵盖了计算、存储以及更上层的、垂直领域的很多服务。它不是一个新概念,AWS第一个云服务 S3 就是Serverless的存储服务。其次,Serverless已经无处不在了,云端每年发布的新功能、新服务,超过70%都是Serverless形态。FaaS只是整个Serverless生态的一部分,但是最近几年,因为FaaS才使得Serverless火起来,被更多人关注。”

因为FaaS把云中存储和计算的服务都粘合起来了,帮助用户快速构建云原生应用。而且FaaS以函数为单位来提供资源,这将云弹性和经济的优势发挥到了极致。他举了一个例子:“以往开发一个应用,可能存储用到了对象存储等Serverless服务,但这只是一部分,它只是解决了某一个特定问题。用户仍然要管理机器等基础设施,开发运维代价高,而通过FaaS,用户能快速地整合多种云端服务,开发效率有了质的提高。”

以开发一个短视频社交应用为例,移动设备上产生的视频文件上传到对象存储中,触发函数处理,通过函数计算连接其它服务后,用户只需专注于函数逻辑的开发,比如抽取元数据、人脸识别等等;并且,在这整个架构中,每个环节都是弹性高可用的。

图片描述

通过事件驱动的连接,函数计算让对象存储、消息中间件服务、CDN等单纯的数据存储、流动、分发服务具备了“可编程”的特性,极大地增加了用户使用这些服务的灵活性。所以广泛地连接各类存储、计算或者垂直领域的服务是函数计算的核心价值。相反,杨皓然认为,目前有一些开源的FaaS框架,重点解决了弹性伸缩的问题,但还没有广泛的和其它服务连接,没有充分发挥FaaS的威力。未来,我们应该能看到开源产品在这一块的长足进步。

以应用为中心,而不是以资源为中心

对于函数计算的实现方式,杨皓然认为“立足点应该是以应用为中心,而不是以资源为中心”。他举例说明了这个观点:“以弹性伸缩为例,‘以资源为中心’的思路,是让用户设定一些规则,比如某个机器CPU使用率超过85%就要扩容,这是云1.0时代的方法。而函数计算的模式,它是根据应用层的信息去理解用户的负载,可以采用各种维度的数据,比如TPS、请求延迟,机器的负载等等,用机器学习等方式去分析数据,做出更智能的资源调度,这属于‘以应用为中心’。”

同时,“以应用为中心”也要求函数计算要同时具备工具和平台两种属性,既能让用户解决小范围的、离散的问题,也能快速构建复杂应用。“如何平衡工具和平台两种属性,是FaaS获得广泛应用的关键。”杨皓然说。

面临的挑战

虽然比较有影响力的Serverless(FaaS)产品已经发布了几年,但是现在Serverless或者FaaS技术还处在初期阶段,产品形态和边界还有很多值得探索的地方。杨皓然认为,目前Serverless在技术上有几个点需要去关注:

以应用为中心,更智能地去理解用户的应用场景;
用户体验方面,在整个生态上有很多东西需要完善,如函数协同、状态管理和工具链等等;

与IoT和边缘网关的无缝结合。

而另一方面,在面向使用者的时候,Serverless也遇到了很大的挑战。“用户的开发调试体验和传统方式差异较大,需要一定时间的适应。函数计算简化了用户编码的复杂度,却对架构能力提出了更高的要求。”杨皓然解释到,“FaaS为了资源的弹性,在运行环境上有诸多限制,使得以单体架构来构建的复杂系统,要迁移到Serverless的架构上比较困难。”

那么在向Serverless架构迁移时可以怎么做呢?杨皓然认为使用函数计算构建应用和微服务架构的理念是契合的,用户采用微服务架构,把业务逻辑拆解为细粒度的微服务后,一个个微服务可以实现为对应的函数。 所以说,函数计算是微服务理念的一种重要的实践方式,二者是相互促进的。因此更现实的方式是使用函数计算先解决独立的、离散的问题,或者采用微服务的方式把系统拆分为细粒度的服务,然后逐步演进到Serverless架构。

从云走向边缘

目前有一个观点是“云计算的未来将是走向边缘”,也就是说以类似于CDN的方式,将计算放到更加靠近用户的区域。杨皓然说他认同这个观点,他解释到:“未来数据的产生将无处不在,并且这些数据需要被处理、被理解,才能产生价值。”从这个角度来看,数据是需要被提炼的,在无处不在的数据中,其实有大量的噪音;而用户端到云之间有一个通道问题,如果不在贴近数据源端去做一些计算,那么整个带宽、延迟之类的成本会很不友好。

以IoT为例,杨皓然认为在IoT场景上边缘计算会特别重要。IoT大量的设备,它的数据量远远超过人产生的数据。这种场景下,如何帮助用户解决数据的收集和分析问题将非常重要,也非常有挑战。IoT/边缘环境是非常独特的,硬件架构迥异(ARM、X86、MIPS……)、通信协议众多、设备动态加入/删除、网络并不总是可用等等,面对这样的环境,需要以全新的方式构建应用。杨皓然总结了理想的边缘环境计算平台,需要具备的一些特点:

IoT的数据处理一定会发生在边缘和云端,因此应用也一定包含边缘和云端两部分,二者需要以统一的方式构建,数据能在边缘和云端无缝同步;
IoT 的环境是动态的,设备/网络可以很自由的加入/删除。几乎所有的协议设计都是事件驱动的方式,例如发布/订阅模式;

IoT 在边缘上的应用,通常是轻量的,因此设备/资源/安全管理层的研发成本不能被应用逻辑的开发成本分摊掉。需要有更高的计算抽象层次,让开发专注于业务逻辑。
函数计算这样的全托管事件驱动服务比较符合上述要求,目前我们也看到业界在这上面的一些探索,相信未来FaaS在边缘环境也会发挥重要的作用。

FaaS已经在云2.0时代发挥了它的优势,至于它之后将走向何方,又将创造怎样的辉煌,我们拭目以待。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/522872.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解锁新姿势 | 如何用配置中心实现全局动态流控?

摘要: 当资源成为瓶颈时,服务框架需要对消费者做限流,启动流控保护机制。流量控制有多种策略,比较常用的有:针对访问速率的静态流控、针对资源占用的动态流控、针对消费者并发连接数的连接控制和针对并行访问数的并发控…

53K!拿下阿里Python岗,这些技术点全考了!

Python又上热搜了!”,最近笔者在逛脉脉时,发现这样的一条信息:看完后,我相信大家和我一样,what,Python这么时候值钱了?本篇文章,我将帮大家搞定两大疑问:1. P…

用WEB技术栈开发NATIVE应用:WEEX SDK原理详解

摘要: WEEX依旧采取传统的web开发技术栈进行开发,同时app在终端的运行体验不输native app。其同时解决了开发效率、发版速度以及用户体验三个核心问题。那么WEEX是如何实现的?目前WEEX已经完全开源,并捐给Apache基金会&#xff0c…

什么是java枚举_什么是java枚举

什么是java枚举?java 枚举的定义与用法一、枚举的定义:枚举是一种特殊的数据类型,之所以特殊是因为它既是一种类(class)类型却又比类型多了些特殊的约束,但是这些约束的存在也造就了枚举类型的简洁,安全性以及便捷性。…

基于阿里云Serverless架构下函数计算的最新应用场景详解(一)

摘要: Serverless概念是近年来特别火的一个技术概念,基于这种架构能构建出很多应用场景,适合各行各业,只要对轻计算、高弹性、无状态等场景有诉求的用户都可以通过本文来普及一些基础概念,看看这些场景是否对用户有一些…

浪潮云完成6亿元B轮融资,正推进上市;VMware收购AI初创公司Bitfusion;小爱同学App在苹果应用商店下架……...

关注并标星星CSDN云计算极客头条:速递、最新、绝对有料。这里有企业新动、这里有业界要闻,打起十二分精神,紧跟fashion你可以的!每周三次,打卡即read更快、更全了解泛云圈精彩newsgo go go 华为Mate30 Lite贴膜曝光&am…

基于阿里云Serverless架构下函数计算的最新应用场景详解(二)

摘要: Serverless概念是近年来特别火的一个技术概念,基于这种架构能构建出很多应用场景,适合各行各业,只要对轻计算、高弹性、无状态等场景有诉求的用户都可以通过本文来普及一些基础概念,看看这些场景是否对用户有一些…

增长黑客系列:今天比昨天增长多少?快使用环比函数来分析日志

摘要: 增长黑客系列:今天比昨天增长多少?快使用环比函数来分析日志 在我们平时分析业务时,一个最重要的指标就是,今天比昨天增长多少,本周比上周增长多少;或者同上一个周期相比增长最大的分类是…

云计算将会让数据中心消失?

戳蓝字“CSDN云计算”关注我们哦!作者 | 王洪鹏出品 | CSDN云计算(ID:CSDNcould)近年来企业应用云化明显,越来越多的企业开始将自己的公司业务转移到云平台之上,可能是迁到公有云,也可能是私有云…

巧用 Img / JavaScript 采集页面数据

摘要: 当我们有一个新内容时(例如新功能、新活动、新游戏、新文章),作为运营人员总是迫不及待地希望能尽快传达到用户,因为这是获取用户的第一步、也是最重要的一步。 点此查看原文:http://click.aliyun.com/m/40929/…

时间序列数据的存储和计算 - 开源时序数据库解析

摘要: Prometheus 开源时序数据库解析的系列文章在之前已经完成了几篇,对比分析了Hbase系的OpenTSDB、Cassandra系的KairosDB、BlueFlood及Heroic,最后是tsdb ranking top 1的InfluxDB。 点此查看原文:http://click.aliyun.com/m/…

flowable modler为任务节点增加自定义属性

如何在modler设计器中为任务节点,添加自定义的属性。 文章目录1、modler设计器中所有元素的定义2、flowable如何处理stencilset_bpmn.json文件3、为UserTask任务节点添加一个扩展属性3.1. 添加属性的名称3.2. 为任务节点添加扩展属性3.3. 查看效果1、modler设计器中…

微软对OpenAI投资10亿美元欲开发AI技术;华晨宝马宣布建成全球首个5G汽车生产基地;传苹果将收购英特尔调制解调器芯片业务...

关注并标星星CSDN云计算极客头条:速递、最新、绝对有料。这里有企业新动、这里有业界要闻,打起十二分精神,紧跟fashion你可以的!每周三次,打卡即read更快、更全了解泛云圈精彩newsgo go go 索尼Xperia 1R信息曝光&…

java se 与j2se_javaSE和 j2SE的区别?

javaSE和 j2SE的区别?关注:71 答案:4 mip版解决时间 2021-01-28 18:29提问者耍硪ミ倪配么2021-01-27 20:19javaSE和 j2SE的区别?最佳答案二级知识专家自然卷的气质2021-01-27 21:53JavaEE 比 se多了许多包,用于开发大规模的,分布式的Java应用/服务器…

[高速通道进阶一]如何理解高速通道的就近接入和一点接入连接全球

摘要: 经常有用户问,我在上海有个IDC,在北京有个VPC,我想通过专线把IDC和VPC连接起来,我是不是要找运营商直接拉一根上海到北京的专线?其实不是这样的,用户只需要接入到最近的接入点即可。高速通…

Flowable决策任务(decision task)

摘要:Flowable中引入了一个decision task(我们可以将其称之为决策任务)。在讲解decision task之前,我们不妨看一下dmn引擎。因为如果大家不了解dmn,那肯定不知道如何使用decision task了。 dmn是decision Modeling Not…

5G精华问答 | 5G技术已经成熟了吗?

1G时我们用手机打电话,2G时我们能互发短信、看文字信息,3G时上网看图片,而4G时我们看视频和直播,从1G到4G,不仅信号越来越好,安全性越来越高,上网也越来越快了。1Q:5G技术已经成熟了…

PyODPS DataFrame:统一的数据查询语言

摘要: 前几天,PyODPS发布了0.7版本,这篇文章给大家介绍下PyODPS新版本带来的重要特性。 之前也有若干篇文章介绍过了,我们PyODPS DataFrame是延迟执行的,在调用立即执行的方法,比如execute、persist等之前&…

AliOS Things 持续集成(CI)系统介绍

摘要: AliOS Things在快速的迭代进化之中,如何保证提交的代码质量,并保证在各个硬件平台上的稳定性,是一个非常大的挑战。同时物联网硬件碎片化,资源紧张,对持续集成(CI)系统也提出了…

从青铜到王者,助力企业轻松上云的四大绝招!

戳蓝字“CSDN云计算”关注我们哦!IBM在7月份发生了很多大事,其中这两件你知道吗?第一,IBM(NYSE: IBM)与美国电话电报公司(AT&T)(NYSE: T)达成一项为期多年的战略联盟…