首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Serverless Days 2020展望Serverless架构的未来

在6月举行的Serverless Days在线活动中,加州大学伯克利分校、Serverless.com、腾讯云和谷歌云的专家齐聚一堂,讨论了Serverless计算的最新创新、使用场景和未来方向。

在2019年O’Reilly对1500名IT专业人士的调查中发现,40%的受访者所在的组织已经采用了Serverless架构。2020年的DataDog调查显示超过50%的AWS用户在使用Serverless AWS Lambda函数即服务(Function as a Service,FaaS)。Serverless技术正在成为主流。

Serverless Days是一个关注Serverless技术的国际领先的会议,今年6月18日在中国举办。业界和学术界的顶级专家分享了一些事实、提示和观点,解释了为什么Serverless会如此流行,以及为什么企业应该关注这个它。

Johann Schleier-Smith 做了一个关于 Serverless 计算历史和未来的演讲。他是“ Cloud Programming Simplified: A Berkeley View on Serverless Computing ”论文的合著者之一,该论文将 Serverless 计算定义为无状态 FaaS(函数即服务,如 AWS Lambda)和有状态存储 BaaS(后端即服务,如 AWS S3)的组合。

在我们的定义中,服务要想被视为 serverless,它必须能够动态扩展,不需要显式提供并且要根据使用情况收费。——出自“A Berkeley View on Serverless Computing”一文

根据 Schleier-Smith 的说法,Serverless 计算能够极大地简化系统和基础设施管理,并且正在进入简化应用开发的新阶段。在实现 Serverless FaaS 基础设施方面,有三种主要的方式。每种方式都致力于提供了隔离和安全的沙箱,以便于执行用户提交的代码。

实现 FaaS 基础设施的第一种方式是使用系统或硬件级别的 VM,比如 AWS Firecracker。这种方式为应用提供了最好的隔离性和安全性,但是可能会比较慢,管理起来也很复杂。云供应商安装和启动操作系统和运行时软件栈(如 Node.js 或 Python)来运行用户的代码。AWS Lambda 的成功证明了这种方法的可伸缩性。

第二种方式就是使用容器,如 Docker。容器会使用像 Kubernetes 这样的方案来进行管理。这种方式的安全性稍差一些,但是性能上要比系统级 VM 高得多。在执行用户的代码之前,云供应商加载和启动带有操作系统与运行时栈的容器镜像。

第三种方式,也是正在兴起的方式,就是使用应用程序特定的 VM,比如 WebAssembly 。这种方式提供了较高层级的抽象。WebAssembly VM 不需要引导自己的操作系统或软件栈。它能够执行编译好的字节码应用。 WebAssembly 提供了一个高层级的“基于能力”的安全模型来访问系统资源(如通过 WASI 规范),而不是使用粗粒度的操作系统级别的隔离。但是,与操作系统容器不同,WebAssembly 的缺点在于,只有它支持的应用才能编译为 WebAssembly 字节码。目前,只有 C/C++、 Rust AssemblyScript (TypeScript 的一个子集)得到了良好的支持。

我们有实现隔离的多种方式,应用可以根据自己的需求选择不同的方式。——Johann Schleier-Smith

这三种方式提供了平衡性能、安全性和易用性等方面的一系列方案。随着技术的演化,不同方式之间的界限会变得模糊起来。例如,将系统级 VM 和容器桥接起来, LightVM 方式试图将相关的操作系统功能直接编译到 VM 中,从而实现更快的性能。

Serverless 基础设施方面另外一个创新是 Google Cloud 的 gVisor 。Google 的 Wenlei He 在会议上针对 Cloud Run 作了一个很棒的演讲。从底层来件,Google gVisor 提供了一个系统级别的沙箱,设计用来运行容器。它要比 Docker 更安全,比系统级的 VM 更快。如今,Google 的三个主要的 Serverless 产品,即 Cloud Run Cloud Functions App Engine ,都是构建在 gVisor 之上的。

FaaS 环境中,Serverless 一个常见(但也可能是被低估)的维度就是它能够向公有云基础设施添加“可编程的”维度——Google Cloud Serverless 产品经理 Jason Polites

正如 Schleier-Smith 和 Polites 所暗示的那样,Serverless 基础设施创新是一个达成目的的手段。Serverless 计算的最终目标是简化互联网程序的开发。不过,随着一张架构图,最近“Serverless Twitter”成为了热议的话题,很多人不禁要问:相对于我们要替代的“有服务器的”技术,它到底哪里简单了?(原图出自该文,感兴趣的读者可以查阅。)

Serverless.com 的 CEO Austen Collins 做了一个关于最先进的 Serverless 工具和应用架构的演讲。他创造了“Serverless 架构师的兴起”这一提法,用来描述对有经验的 Serverless 技术人才的迅速变化的需求。随着对 Serverless 采用的不断增长,开发人员正在使用它来构建成熟的企业级应用,而不仅仅是简单的 Web 服务或 AWS 服务之间无状态的连接器。例如,开发人员正在突破 Serverless FaaS 和 BaaS 之间的界限。AWS 最近发布了 Elastic File System for Lambda ,从而能够实现 Lambda 函数的状态化。另一方面,WebAssembly 正在推动通过 WASI 或自定义的数据库访问扩展实现安全的文件系统访问。

正如上图所示,FaaS 应用的复杂性在急剧增长。现在,开发人员似乎需要具备软件架构师的技术才能构建Serverless 的解决方案。作为在中国举办的第一个Serverless Days 活动, Serverless.com 宣布与腾讯云建立合作,提供简化在腾讯云 Serverless 平台上开发 Node.js+Express.js 应用静态Web 站点 RESTful API 端点的软件工具。

与西方的互联网巨头类似,腾讯是亚洲最大的互联网公司之一,运行着复杂的数据中心来为其应用提供动力,所以将其一部分的数据中心作为云服务对外提供也是很自然的事情。腾讯云的 Serverless 总经理 Yunong Xiao 介绍了腾讯云主要的 Serverless 产品,包括 Serverless Cloud Function (SCF) 以及用于在 SCF 上部署应用的 Serverless 框架

Serverless Days China 活动由腾讯云赞助。这是一次关于Serverless 计算的一次东西方碰撞,中国的开发者对讨论的技术产生了浓烈的兴趣。

原文链接:

Serverless Days 2020 Looks at Future of Serverless Architecture

  • 发表于:
  • 本文为 InfoQ 中文站特供稿件
  • 首发地址https://www.infoq.cn/article/OJf92Lv6P8LrVfGOvC4P
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券