Serverless在2021年状况报告 | Datadog

21-06-11 banq

无服务器Serverless已经在各种规模的组织中获得了吸引力,从云原生初创公司到大型企业。借助无服务器,团队可以专注于更快地将想法推向市场,而不是管理基础设施,同时只为他们使用的东西付费。在这份报告中,我们检查了数千家公司运行的数百万个函数,以了解无服务器在现实世界中的使用情况。

从短期运行的任务到面向用户的应用程序,无服务器支持广泛的用例。AWS Lambda 是最成熟、使用最广泛的功能即服务 (FaaS) 产品,但我们也看到 Azure Functions 和 Google Cloud Functions 的采用率增长惊人。今天,无服务器生态系统已经超越了 FaaS,包括数十种服务,可帮助开发人员构建更快、更动态的应用程序。四分之一的 Amazon CloudFront 用户已经接受了无服务器边缘计算,并且组织也在利用 AWS Step Functions 跨各种分布式组件管理应用程序逻辑。

 

Lambda 函数的调用频率是两年前的 3.5 倍

AWS Lambda 通过构建高度可扩展的应用程序使开发人员能够更快地进行创新,而无需担心基础设施。如今,团队不仅在试验无服务器,而且将其作为其软件堆栈的关键部分。事实上,我们的研究表明,自 2019 年以来一直使用 Lambda 的公司已经显着增加了使用率。平均而言,在 2021 年初,函数每天被调用的频率是两年前的 3.5 倍。此外,在同一组 Lambda 用户中,每个组织的功能平均每天运行 900 小时。

 

Azure Functions 和 Google Cloud Functions 势头强劲

AWS Lambda 可能已经启动了无服务器运动,但它并不是镇上唯一的游戏。Azure Functions 和 Google Cloud Functions 在各自的云平台中的采用率都在增长。在过去的一年中,运行 Azure Functions 的 Azure 组织的份额从 20% 攀升至 36%。在 Google Cloud 上,近四分之一的组织现在使用 Cloud Functions。尽管 Cloud Functions 是推出的三个 FaaS 产品中的最后一个,但无服务器在Google Cloud中并不是一个新概念——云平台早在 2008 年就推出了 Google App Engine,这是它的第一个完全无服务器的计算服务。但今天,我们看到了势头的转变转向谷歌较新的无服务器产品,即 Cloud Functions 和 Cloud Run。

 

今天的 Lambda 调用比一年前短得多

Lambda 越来越多地用于为需要低延迟的面向客户的应用程序提供支持。2020 年,Lambda 调用的中位数仅用了 60 毫秒——大约是前一年值的一半。一种可能的解释是,越来越多的组织正在遵循Lambda 最佳实践并设计高度特定于其工作负载的功能,这有助于缩短调用的持续时间。我们还注意到延迟分布的尾部很长,这表明 Lambda 不仅支持短期工作,而且还支持计算密集型用例。

 

Step Functions 为从 Web 应用到数据管道的一切提供支持

AWS Step Functions 使开发人员能够构建涉及多个 Lambda 函数和 AWS 服务的事件驱动工作流。在这些工作流中,Step Functions 协调错误处理、重试、超时和其他应用程序逻辑,这有助于在无服务器应用程序扩展时降低操作复杂性。我们的研究表明,平均 Step Functions 工作流包含 4 个 Lambda 函数——我们看到这个数字逐月增长。

Step Functions 提供两种类型的工作流程:标准和快速。我们注意到超过 40% 的工作流在一分钟内执行,这表明组织很可能使用快速工作流来支持大容量事件处理工作负载。但是,尽管许多工作流执行得很快,但其他工作流会运行一天多。事实上,最长的 Step Function 工作流运行时间超过一周。Step Functions 工作流可以包括活动工作人员例如,在 Amazon ECS 或 EC2 实例上运行的实例,这意味着它们能够执行比 Lambda 函数超时 15 分钟更长的时间。这使 Step Functions 能够支持大量用例,从延迟关键任务(如 Web 请求处理)到复杂、长时间运行的任务(如大数据处理作业)。

 

四分之一的 CloudFront 用户已接受无服务器边缘计算

边缘计算因其对更快数据处理的承诺而引起了很多关注。如今,四分之一的使用 Amazon CloudFront 的组织正在利用 Lambda@Edge 为其全球用户群提供更加个性化的体验。例如,Lambda@Edge 可以根据用户特征(例如,设备类型)动态转换图像或为不同版本的 Web 应用程序提供 A/B 测试。

通过利用 CloudFront 的边缘站点网络,Lambda@Edge 使组织能够更接近最终用户地执行功能,而无需设置和管理源服务器的复杂性。我们的数据显示,67% 的 Lambda@Edge 函数在 20 毫秒内运行,这表明无服务器边缘计算具有巨大的潜力,可以以最小的开销支持对延迟最敏感的应用程序。随着这项技术的成熟,我们希望看到更多的组织依赖它来改善他们的最终用户体验。

  

组织公司在大多数功能的预配置并发上超支

当 Lambda 函数在一段时间不活动后被调用时,它会经历短暂的执行延迟,称为冷启动。对于需要毫秒级响应时间的应用程序,冷启动可能无法启动。2019 年底,AWS 引入了预置并发,通过保持执行环境初始化并准备好响应请求来帮助 Lambda 用户对抗冷启动。

根据我们的数据,似乎为 Lambda 函数配置最佳预置并发量仍然是用户面临的挑战。超过一半的函数使用不到 80% 的配置预配置并发。同时,超过 40% 的函数使用了它们的全部分配,这意味着它们可能仍然会遇到冷启动,并且会从更多的并发中受益。Application Auto Scaling提供了一种解决这些问题的方法,允许用户根据利用率自动扩展预配置并发。

我们还看到,预配置并发更常用于 Java 和 .NET Core 函数,由于这些运行时的固有特性,这些函数的启动时间通常比 Python 或 Node.js慢。例如,Java 需要初始化其虚拟机 (JVM) 并将大量类加载到内存中,然后才能执行用户代码。

 

 

无服务器框架是使用 AWS CloudFormation 部署 Lambda 应用程序的主要方式

随着无服务器应用程序的扩展,手动部署 Lambda 函数和其他资源很快就会变得很麻烦。AWS CloudFormation 允许开发人员在集合(称为堆栈)中预置 AWS 基础设施和第三方资源,并且是 AWS 云开发工具包 (CDK)、AWS 无服务器应用程序模型 (SAM) 和无服务器框架等框架的底层部署机制。

在这些工具中,开源无服务器框架是迄今为止最受欢迎的——如今,超过 90% 的组织都在使用它,这些组织通过 AWS CloudFormation 管理其无服务器资源。除了无服务器框架,19% 的组织使用 vanilla CloudFormation,18% 使用 AWS CDK,13% 使用 AWS SAM。请注意,由于每个组织可能使用多个部署工具,因此这些值加起来超过 100%。

在无服务器应用程序中使用的 CloudFormation 堆栈中,65% 仅包含一个 Lambda 函数。此外,超过一半的功能(57%)使用 CloudFormation 部署。这表明,许多组织仍处于使用基础设施即代码自动化和优化其无服务器工作流的早期阶段。但正如 Kubernetes 和 Amazon Elastic Container Service (ECS) 等编排器对于管理大量容器变得必不可少一样,我们预计基础设施即代码工具在大规模部署无服务器应用程序方面将扮演更重要的角色。

 

Python 是最流行的 Lambda 运行时,尤其是在大型环境中

自 2018 年以来,Lambda 已提供对六种运行时的支持:Node.js、Python、Java、Go、.NET Core 和 Ruby。然而,Python 和 Node.js 继续在 Lambda 用户中占据主导地位,占函数的近 90%。所有部署的 Lambda 中有 58% 运行 Python(比一年前上升 11 个百分点),另有 31% 运行 Node.js(与去年相比下降 8 个百分点)。

当我们检查按环境大小划分的运行时使用情况时,出现了一个有趣的趋势:虽然 Node.js 在小型 AWS 环境中超越 Python,但随着环境规模的增长,Python 变得越来越流行。在 AWS 足迹最大的组织中,Python 的使用频率是 Node.js 的四倍。

 截至 2021 年 3 月,按版本划分的顶级运行时是:

  1. Python 3.x
  2. Node.js 12
  3. Node.js 10
  4. Python 2.7
  5. Java 8
  6. Go 1.x
  7. .NET Core 2.1
  8. .NET Core 3.1

​​​​​​​在用 Python 编写的函数中,超过 90% 使用 Python 3,其中 Python 3.8 是最受欢迎的版本。随着用户越来越多地迁移到 Python 3,Python 2.7 比一年前下降了 25 个百分点。AWS 已宣布计划在 2021 年 5 月停止对 Node.js 10 的支持,因此我们预计 Node.js 12 的使用量也会增加作为新支持的 Node.js 14。Java 8 在 Lambda 用户中的受欢迎程度是 Java 11 的五倍,尽管自 2019 年末开始支持后者。

 

 

猜你喜欢