亚马逊|经过七年演进,Serverless流行起来了吗?( 二 )


虽然这项技术仍然有较长的路要走,但随着越来越多的公司,包括亚马逊云科技、谷歌、微软在这项技术上的投资,我们看到了无服务器采用率在持续增长。据 Datadog 2021 年发布的无服务器状态报告,开发人员正加速采用无服务器架构:2019 年之后 Amazon Lambda 的使用率显著增加,2021 年初,Amazon Lambda 函数的平均每天调用频率是两年前的 3.5 倍,且半数 Amazon Web Services 新用户已采用 Amazon Lambda。虽然微软和谷歌的份额有所上升,但作为无服务器技术的先驱,Amazon Lambda 在采用率方面一直保持领先地位,有一半的函数即服务(FaaS)用户在使用亚马逊云科技的服务。据 Amazon Web Services 公布的数据显示,已有数十万家客户在用 Amazon Lambda 来构建他们的服务。
2.通过 Amazon Lambda 看无服务器技术的演进Amazon Lambda 是一种事件驱动的计算引擎,亚马逊云科技在 2014 年 11 月的亚马逊云科技 re:Invent 大会上发布了该功能的预览版本。这马上引起了竞争对手的跟进,不少企业纷纷开始在云上提供类似服务,谷歌于次年 2 月发布了 Cloud Functions, IBM 也于同月发布了 Bluemix OpenWhisk,微软于次年 3 月份发布预览版 Azure Functions,等等。
在 Amazon Web Services 的产品页面上,亚马逊云科技给 Amazon Lambda 下的定义是:“用户无需预置或管理基础设施即可运行代码。只需编写代码并将其作为 .zip 文件或容器镜像上传即可。”
一个简单的用例是,西雅图时报使用无服务器技术自动调整移动、平板电脑和桌面设备显示所需的图像大小,每当图像被上传到 Amazon Simple Storage Service (S3) ,就会触发 Amazon Lambda 函数调用执行调整图像大小的功能。西雅图时报仅在调整图像大小后才向 Amazon Web Services 付费。
Amazon Lambda 的关键进展
对于要探索无服务器技术的团队来说,了解 Amazon Lambda 至关重要。无服务器虽然不等于 Amazon Lambda,但自 2014 年发布以来,Amazon Lambda 几乎已成为 Amazon Serverless 服务的代名词。实际上,Amazon Lambda 需要和其它工具一起才能形成一套完整的无服务器架构,比如通过 Amazon API Gateway 发送 HTTP 请求,或调用 Amazon S3 存储桶、Amazon DynamoDB 表或 Amazon Kinesis 流中的资源。
在发布早期,还只有 Amazon S3、Amazon DynamoDB 和 Amazon Kinesis 可用于 Amazon Lambda 函数。但自那之后,亚马逊云科技又逐步为 Amazon Lambda 函数集成了许多其它服务,例如 Amazon Cognito 认证、Amazon API Gateway、Amazon SNS 、Amazon SQS、Amazon CloudFormation 和 Amazon CloudWatch 等等。
亚马逊|经过七年演进,Serverless流行起来了吗?
文章插图

在 2014 年推出时,Amazon Lambda 只支持 Node.js,2015 年底,Amazon Lambda 中添加了 Java 支持,2016 年的时候又添加了 Python 支持。到现在,Amazon Lambda 原生支持 Java、Go、PowerShell、Node.js、C#、Python 和 Ruby 代码,并提供 Runtime API,允许用户使用任何其它编程语言来编写函数。
使用 Amazon Lambda ,用户除上传代码(或在 Amazon Lambda 控制台中构建代码)外,还需要选择内存、超时时间来创建函数。
【 亚马逊|经过七年演进,Serverless流行起来了吗?】最开始 Amazon Lambda 函数超时时长为 30 秒,后来被延长为 5 分钟。2018 年 10 月,Amazon Web Services 将超时时长设置为了 15 分钟,从此用户可以运行时间更长的函数,更加轻松地执行大数据分析、批量数据转换、批量事件处理和统计计算等任务。
Amazon Lambda 函数会根据配置的内存量线性分配 CPU 和其他资源。2020 年底,Amazon Lambda 函数的内存上限调整为了 10 GB ,与之前相比增加了 3 倍多,这也意味着用户可以在每个执行环境中访问多达 6 个 vCPU,可以让用户的多线程和多进程程序运行得更快。