BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

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

| 作者 雨多田光 关注 8 他的粉丝 发布于 2018年1月9日. 估计阅读时间: 12 分钟 | GMTC大前端的下一站,PWA、Web框架、Node等最新最热的大前端话题邀你一起共同探讨。

亲爱的读者:我们最近添加了一些个人消息定制功能,您只需选择感兴趣的技术主题,即可获取重要资讯的邮件和网页通知

自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时代发挥了它的优势,至于它之后将走向何方,又将创造怎样的辉煌,我们拭目以待。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT