如果我有一个具有以下路由的API
POST /slack
POST /slack/hook
POST /slack/another-hook
POST /slack/hook/nested
在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
例2
POST /slack --> lambda1
POST /slack/hook --> lambda1
POST /slack/another-hook --> lambda1
POST /slack/hook/nested --> lambda1
这是最好的做法吗?如果是这样的话?
这篇博客文章here解释了各种无服务器模式的优缺点。以下是一些要记住的事项:
每个路由一个Lambda又称微服务模式:
优点
缺点
一个Lambda具有多个路由,即服务/整体模式,具体取决于路由的分组方式:
优点
缺点
正如您所看到的,每种方法都有利有弊,没有一种正确的方法可以做到。另外,正如另一个答案所示,您还需要考虑CICD,项目和时间限制等事项。
如果有人说有正确和错误的答案,我会感到惊讶。
我已经完成了不同的项目,我想它归结为CICD偏好,架构,时间限制。
从理论上讲,一个lambda可以简化您的体系结构,但有效地构建一个具有适用于该体系结构的所有缺点的单一应用程序,但是,如果您是单个开发人员,它可以显着减少构建,测试和部署过程,因此您不必担心lambda之间的依赖关系并且有一个可部署的工件。
另一方面,多个lambda函数为您提供类似于微服务的灵活性,但它需要您拥有单独的管道,整个CICD生态系统变得更加复杂和耗时。
在一个lambda函数中包含所有代码时要注意的更多事情是,大小限制和潜在的依赖性地狱,取决于您的语言。
不知道你的组织/项目和时间限制,我可能会从一个lambda开始,如果需要,稍后将其拆分为多个lambda函数...