Fargate vs Lambda,什么时候使用?

时间:2018-09-11 11:50:33

标签: aws-lambda amazon-ecs serverless aws-fargate

我对整个无服务器领域还很陌生,并且在尝试使用Fargate vs Lambda时想尽办法。

我知道Fargate是ECS的无服务器子集,Lambda也无服务器,但受事件驱动。但是我希望能够以简单的方式向熟悉容器但不熟悉AWS和无服务器的其他人解释这两种范例。

当前,我们有几个物理服务器负责接收文本文件,将其解析出来,并用结果填充几个数据库表。根据我的理解,我认为这将是一个更适合Lambda的用例,因为解析文本文件的过程是由计划触发的,不会长时间运行,并且在不使用时会逐渐减少。

但是,如果我们要移植接收API调用的其中一台服务器,则可能要使用Fargate,因为我们始终需要至少一个映像实例并运行。

就容器而言,用非常笼统的术语来说,可以肯定地说,如果容器被设计成可以做到:

docker run <some_input>

然后这是Lambda的工作。

但是,如果容器被设计为执行以下操作:

docker run --expose 80

然后这是Fargate的工作。

这是一个很好的类比吗?

4 个答案:

答案 0 :(得分:10)

这是一个很好的类比的开始。但是,Lambda在可用CPU和RAM方面也有局限性,每次调用的最大运行时间为5分钟。因此,任何需要更多资源或需要运行5分钟以上的东西都将更适合Fargate。

我也不确定为什么您说某些东西更适合Fargate,因为您“总是需要至少运行一个实例”。 Lambda + API网关非常适合API调用,API Gateway始终准备好接收API调用,然后它将调用Lambda函数来处理它(如果尚未缓存响应)。

答案 1 :(得分:9)

重要的是要注意,使用Lambda,您不需要构建,保护或维护容器。您只需要担心代码。现在,正如已经提到的,Lambda有5分钟的时间限制和3GB的内存限制(CPU按比例增加)。另外,如果偶尔使用它,则可能需要预热(按计划进行)以提高性能

Fargate管理docker容器,您需要对其进行定义,维护和保护。如果您需要更好地控制代码运行环境中的可用资源,则可以潜在地使用容器(或服务器),但这又随管理人员一起提供。您还可以在内存/ CPU大小以及运行所需的时间长度方面有更多选择。

即使您提到的是API服务器,也可以将API网关放在最前面并调用Lambda

答案 2 :(得分:3)

正如Mark所提到的,您可以使用Lambda + API Gateway将Lambda函数公开为API。 但是lambda在函数执行方面有很大的局限性。在支持的编程语言,内存消耗和执行时间方面存在限制(最近的5分钟增加到了15分钟)。这是AWS Fargate可以通过提供容器世界和无服务器(FaaS)世界的好处而提供帮助的地方。在这里,您只担心容器(其CPU,内存要求,IAM策略..),并通过选择Fargate启动类型将其余部分留给Amazon ECS。 ECS将选择正确的实例类型,管理您的集群,它是自动扩展的,具有最佳利用率。

答案 3 :(得分:0)

这是正确的类比,但它不能详尽地解释这两种范例。

通常,Lambda更适合无服务器应用程序。它的本质是功能即服务(FaaS)。它只完成简单的任务,仅此而已。不要期望太多。

应将其视为无服务器模块的首选。但是它有更多的限制和约束。根据功能和非功能需求,围绕的基础架构以及许多其他因素来详细阐述模块架构。

要做出最低限度的决定,您必须查看以下限制列表:

  1. 可移植性
  2. 环境控制
  3. 触发类型
  4. 响应时间
  5. 响应大小
  6. 处理时间
  7. 内存使用量

这些是主要因素。但是,该列表并未涵盖这两种无服务器技术之间要考虑的所有因素和限制。

要了解更多有关我的信息,建议您推荐https://medium.com/greenm/aws-lambda-or-aws-fargate-the-step-by-step-guide-to-choosing-the-right-technology-925ebcf89b7c