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

Muq*_*med 2 express aws-lambda serverless

我想知道在无服务器应用程序 (AWS Lambdas) 中使用 Express.js 作为中间件是否是一个好主意?我的担忧来自这样一个事实:在 Express.js 中存在单一功能设置,将来如果有大量请求进来,它将开始限制。我的担忧是否合理,或者我什么都没有动摇。

Aar*_*erg 7

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

一方面,如果您使用云形成 - 每个堆栈只能使用 200 个资源,这甚至会使采用单 lambda 每路由设计的小型 API 变得很麻烦,并迫使您走上堆栈拆分之类的道路,这是可行的,但当确实不应该有时会增加复杂性。此外,这使得共享代码变得更加困难,因为每个 lambda 函数都是其自己的部署包 - 因此您需要使用手动包含的共享目录、本地 NPM 模块或良好的老式复制粘贴之类的东西来在之间共享逻辑你的职能。

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

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

  • 您考虑支持的 API 端点数量
  • 这些端点的域边界(它们是否非常相似,有大量共享代码?或者非常独特且整齐地绑定到它们自己的服务中)
  • 对 APIGW 功能(例如限制和请求验证)的需求
  • 使用或不使用 Express 等框架的开发人员的舒适程度。