Serverless 的承诺都兑现了吗?( 二 )


虽然这项技术仍然有较长的路要走 , 但随着越来越多的公司 , 包括亚马逊云科技、谷歌、微软在这项技术上的投资 , 我们看到了无服务器采用率在持续增长 。 据Datadog2021年发布的无服务器状态报告 , 开发人员正加速采用无服务器架构:2019年之后AmazonLambda的使用率显著增加 , 2021年初 , AmazonLambda函数的平均每天调用频率是两年前的3.5倍 , 且半数AmazonWebServices新用户已采用AmazonLambda 。 虽然微软和谷歌的份额有所上升 , 但作为无服务器技术的先驱 , AmazonLambda在采用率方面一直保持领先地位 , 有一半的函数即服务(FaaS)用户在使用亚马逊云科技的服务 。 据AmazonWebServices公布的数据显示 , 已有数十万家客户在用AmazonLambda来构建他们的服务 。
通过AmazonLambda看无服务器技术的演进
AmazonLambda是一种事件驱动的计算引擎 , 亚马逊云科技在2014年11月的亚马逊云科技re:Invent大会上发布了该功能的预览版本 。 这马上引起了竞争对手的跟进 , 不少企业纷纷开始在云上提供类似服务 , 谷歌于次年2月发布了CloudFunctions , IBM也于同月发布了BluemixOpenWhisk , 微软于次年3月份发布预览版AzureFunctions , 等等 。
在AmazonWebServices的产品页面上 , 亚马逊云科技给AmazonLambda下的定义是:“用户无需预置或管理基础设施即可运行代码 。 只需编写代码并将其作为.zip文件或容器镜像上传即可 。 ”
一个简单的用例是 , 西雅图时报使用无服务器技术自动调整移动、平板电脑和桌面设备显示所需的图像大小 , 每当图像被上传到AmazonSimpleStorageService(S3) , 就会触发AmazonLambda函数调用执行调整图像大小的功能 。 西雅图时报仅在调整图像大小后才向AmazonWebServices付费 。
AmazonLambda的关键进展
对于要探索无服务器技术的团队来说 , 了解AmazonLambda至关重要 。 无服务器虽然不等于AmazonLambda , 但自2014年发布以来 , AmazonLambda几乎已成为AmazonServerless服务的代名词 。 实际上 , AmazonLambda需要和其它工具一起才能形成一套完整的无服务器架构 , 比如通过AmazonAPIGateway发送HTTP请求 , 或调用AmazonS3存储桶、AmazonDynamoDB表或AmazonKinesis流中的资源 。
在发布早期 , 还只有AmazonS3、AmazonDynamoDB和AmazonKinesis可用于AmazonLambda函数 。 但自那之后 , 亚马逊云科技又逐步为AmazonLambda函数集成了许多其它服务 , 例如AmazonCognito认证、AmazonAPIGateway、AmazonSNS、AmazonSQS、AmazonCloudFormation和AmazonCloudWatch等等 。
Serverless 的承诺都兑现了吗?
文章图片
在2014年推出时 , AmazonLambda只支持Node.js , 2015年底 , AmazonLambda中添加了Java支持 , 2016年的时候又添加了Python支持 。 到现在 , AmazonLambda原生支持Java、Go、PowerShell、Node.js、C#、Python和Ruby代码 , 并提供RuntimeAPI , 允许用户使用任何其它编程语言来编写函数 。
使用AmazonLambda , 用户除上传代码(或在AmazonLambda控制台中构建代码)外 , 还需要选择内存、超时时间来创建函数 。
最开始AmazonLambda函数超时时长为30秒 , 后来被延长为5分钟 。 2018年10月 , AmazonWebServices将超时时长设置为了15分钟 , 从此用户可以运行时间更长的函数 , 更加轻松地执行大数据分析、批量数据转换、批量事件处理和统计计算等任务 。
AmazonLambda函数会根据配置的内存量线性分配CPU和其他资源 。 2020年底 , AmazonLambda函数的内存上限调整为了10GB , 与之前相比增加了3倍多 , 这也意味着用户可以在每个执行环境中访问多达6个vCPU , 可以让用户的多线程和多进程程序运行得更快 。
在发布至今这七年里 , AmazonServerless服务各方面都在不断改进: