Ari*_*ger 5 aws-lambda serverless-framework serverless aws-serverless
在学习无服务器框架时,我遇到了一些教程,展示了如何在Lambda中运行Express实例。在我看来,这似乎有点过分,违背了Lambda函数的目的。
该方法通常涉及在Lambda中运行Express实例,并将API网关请求代理到Express路由器以进行内部处理。
对我而言,简单的方法是仅在API网关中创建一个API,并将单个请求路由到Lambda进行处理。我想念什么吗?
考虑到Lambdas的执行时间为15分钟,就内存而言,仅分解Express实例不是很昂贵吗?此外,限制并发执行Lambda 100次会产生瓶颈,不是吗?在这种情况下,EC2实例是否会更合适?像这样使用Lambda似乎太过分了。
我在Lambda中运行Express实例的唯一两个好处是:
如果我丢失了某些东西,这种方法有什么好处?
一些促进这种方法的资源:
小智 6
您的大多数观点都是有效的,并且可以将其称为反模式,以在API网关后面的Lambda函数内部运行Express。
需要指出的是初始化的时候是不是那个太大的关注。虽然单个调用的执行时间限制为15分钟,但单个Lambda实例在启动后将处理多个请求。频繁调用的单个Lambda实例通常具有6到9个小时的生命周期,并且在闲置约30分钟后被处置。(请注意,AWS不会公开披露这些参数,这些数字仅应用作参考)。不幸的是,谁愿意冷启动并吃掉初始化延迟,则可能会获得数千毫秒的额外延迟。
如您所说,此方法的主要优点是为具有现有Express知识和应用程序的现有Node开发人员提供了迁移路径。从头开始开发应用程序并实施惯用的无服务器模式(例如,利用API网关路由)时,通常不应考虑这种方法。
重申一下,这种方法的主要缺点:
PS这些天的主要竞争者可能不是专用的EC2实例,而是在Node.js中运行Express的Fargate容器。这种模式与无服务器具有许多相同的优点,同时又可以使现有的开发模式和工具保持完整。
| 归档时间: |
|
| 查看次数: |
517 次 |
| 最近记录: |