Loading...
墨滴

一介刁民

2021/06/08  阅读:95  主题:橙心

Serverless 2021 最新调查报告

Serverless 2021 最新调查报告

数据更新于 2021年 5月,数据来源于国外 DATADOG 的调查报告

近两年以来 Serverless 已经获得了极大的关注,从云原生初创公司到大型公司。借助于 Serverless,开发团队可以更专注得将想法推向市场化,只需为他们的使用量付费即可,不必关心相关基础设施。

在这份调查报告中,我们调查了数千家公司运行的数百万个函数,以了解 Serverless 在生产环境中的实际使用情况。

其中 Serverless 应用场景广泛,从短任务到面向用户的应用程序。AWS Lambda 是最成熟,使用最广泛的 Faas 产品,同时也可以看到 Azure FunctionsGoogle Cloud Functions 的使用率也增长惊人。当前 Serverless 的生态系统已经不局限于 Faas,还包括其他数十种服务,可以帮助开发者更快得构建应用。四分之一的 Amazon CloudFront( CDN 产品)用户已经接受了 Serverless 边缘计算,同时也有不少组织开始利用 AWS Step Functions 用来管理各种分布式应用。

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

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

Azure FunctionsGoogle Cloud Functions 势头强劲

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

现在的 Lambda 调用的持续时间比去年短很多

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

Step Functions 提供从 Web 应用程序到数据通道的连接

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

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

四分之一的 CloudFront (AWS CDN) 用户已接受 Serverless 边缘计算

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

通过利用 CloudFront 的边缘站点网络,Lambda@Edge 能够在更接近用户的地方执行计算,而无需重新修改源站服务器的配置。 我们的数据显示,67%Lambda@Edge 函数在 20 毫秒内运行,这表明无服务器边缘计算具有巨大的潜力,可以以最小的开销应对延迟敏感的应用程序。 随着这项技术的成熟,相信越来越多的人会利用边缘 Serverless 改善他们的应用体验。

使用 Serverless 的组织在预留函数并发量上花费超支

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

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

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

Serverless Framework 是使用 AWS CloudFormation(AWS 应用编排服务)部署 Lambda 应用程序的主要方式

随着 Serverless 应用数量的递增,手动部署 Lambda 函数和其他资源将会变得越来越麻烦。 AWS CloudFormation 允许开发人员在集合(称为堆栈)中预置 AWS 基础设施和第三方资源。并且它也是 AWS 云开发工具包 (CDK)、AWS Serverless 应用程序模型 (SAM) 和Serverless Framework等框架的底层部署机制。

在这些工具中,开源的 Serverless Framework [https://github.com/serverless/serverless]是迄今为止最受欢迎的——如今,超过 90% 的组织都在使用它,这些组织使用 AWS CloudFormation 管理其 Serverless 资源。 除了 Serverless Framework19% 的组织使用 vanilla CloudFormation18% 使用 AWS CDK13% 使用 AWS SAM。 请注意,由于每个组织可能使用多个部署工具,因此这些值加起来超过 100%

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

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

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

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

截至 2021 年 3 月,最受欢迎的 runtime 依次是:

  • Python 3.x
  • Node.js 12
  • Node.js 10
  • Python 2.7
  • Java 8
  • Go 1.x
  • .NET Core 2.1
  • .NET Core 3.1

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

关注公众号: Knative,了解更多 Serverless 、Knative,云原生相关资讯

关注公众号,回复 "进群",即可进群与众多云原生 Serverless 技术大佬探讨技术,探讨人生。

在这里插入图片描述
在这里插入图片描述

一介刁民

2021/06/08  阅读:95  主题:橙心

作者介绍

一介刁民