9er*_*9er 4 api api-design amazon-web-services aws-lambda
如果我的API具有以下路由
POST /slack
POST /slack/hook
POST /slack/another-hook
POST /slack/hook/nested
Run Code Online (Sandbox Code Playgroud)
在API网关中具有4个单独的Lambda函数和4个路由是否更好?还是要有1个Lambda作为根路由,并让Lambda从那里处理路由?
例子1
POST /slack --> lambda1
POST /slack/hook --> lambda2
POST /slack/another-hook --> lambda3
POST /slack/hook/nested --> lambda4
Run Code Online (Sandbox Code Playgroud)
例子2
POST /slack --> lambda1
POST /slack/hook --> lambda1
POST /slack/another-hook --> lambda1
POST /slack/hook/nested --> lambda1
Run Code Online (Sandbox Code Playgroud)
是否有最佳做法?如果可以,为什么?
此处的这篇博客文章解释了各种无服务器模式的优缺点。以下是一些注意事项:
每个路由一个Lambda,也称为微服务模式:
优点
缺点
对于lambda,可能会有更多的冷启动,因为其中一些可能不会被频繁访问。
您可能最终需要管理许多lambda函数。
一个Lambda,具有多个路线,又称为服务/整体模式,具体取决于路线的分组方式:
优点
缺点
如您所见,每种方法都各有利弊,没有唯一正确的方法来做事情。另外,正如其他答案所暗示的那样,您还需要考虑诸如CICD,项目和时间限制之类的问题。
如果有人说有正确和错误的答案,我会感到惊讶。
我在不同的项目中都做过,我想这归结为 CICD 的偏好、架构、时间限制。
拥有一个 lambda 理论上可以简化您的架构,但实际上您正在构建一个具有适用于该架构的所有缺点的单体应用程序,但是,如果您是单一开发人员,它会显着减少构建、测试和部署过程,因此您不必担心 lambda 之间的依赖关系并拥有一个可部署的工件。
另一方面,多个 lambda 函数为您提供类似于微服务的灵活性,但它需要您拥有单独的管道,并且整个 CICD 生态系统变得更加复杂和耗时。
在一个 lambda 函数中包含所有代码时需要注意的更多事情是大小限制和潜在的依赖地狱,这取决于您的语言。
不知道您的组织/项目和时间限制,我可能会从单个 lambda 开始,然后在需要时将其拆分为多个 lambda 函数......
| 归档时间: |
|
| 查看次数: |
361 次 |
| 最近记录: |