我应该在无服务器应用程序中使用Express.js吗?

时间:2020-10-21 06:08:33

标签: express aws-lambda serverless

我想知道在无服务器应用程序(AWS Lambdas)中使用Express.js作为中间件是否是一个好主意?我担心的事实是,在Express.js中存在单一功能设置,将来如果有很多请求进入,它将开始节流。我的担忧是正确的,还是我什么都没动摇。

2 个答案:

答案 0 :(得分:1)

在构建单lambda和每个端点一个功能之间的决定并没有明确的答案。

一方面,如果您使用的是云形成-每个堆栈最多只能使用200个资源,这会使单路单lambda设计的小API变得笨拙,并迫使您走上类似的道路堆栈拆分,该方法有效,但在确实不应该存在的情况下增加了复杂性。此外,由于每个lambda函数都是其自己的部署程序包,因此共享代码变得更加困难-因此,您需要使用诸如手动包含的共享目录,本地NPM模块或良好的ol'方式复制粘贴之类的东西来共享逻辑您的功能。

另一方面,如果您选择将所有请求路由到lambda,然后在函数内部使用express路由请求-您将面临管理API Gateway通常可以为您处理的一些复杂性(例如请求模板验证之类的事情) ,或路由验证,或限制/ API使用管理)。

最终,您可以用任何一种方式构建成功的应用程序-因此,您需要考虑的重要事项是:

  • 您正在考虑支持的API端点的数量
  • 这些终结点的域边界(它们与大量共享代码非常相似吗?还是非常独特且整齐地绑定在它们自己的服务中)
  • 需要节流和请求验证之类的APIGW功能
  • 具有或不具有Express之类框架的开发人员的舒适度。

答案 1 :(得分:0)

我认为: Express启动了一个http服务器,但是Serverless(azure函数,lambda,...)是一个基于简单脚本的http服务器,因此...为什么要启动“另一个” http服务器?

无服务器是一个很棒的框架,因此您不需要任何其他工作...

Loopbak,Fastify,Http / s,Hapi等都适用相同的问题

关于路线: https://aws.amazon.com/blogs/aws/api-gateway-update-new-features-simplify-api-development/