在 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
评论