@levinzhang
2020-07-21T22:27:30.000000Z
字数 3047
阅读 635
by
在6月18日举行的Serverless Days在线活动中,来自云计算行业的领导者,包括来自加州大学伯克利分校、serverless.com、腾讯云和谷歌云的专家,齐聚一堂讨论了serverless计算的最新创新、使用场景和未来方向。
在6月18日举行的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