【发布时间】:2021-10-19 23:59:43
【问题描述】:
我们一直遇到如何将职责组织到 AWS Lambda 函数中的问题。一个这样的例子涉及 CRUD 操作:
假设我们有四个类,W、X、Y 和 Z,每个类都有一组 CRUD 操作。如果我们为每个操作和每个类都有一个 lambda,那么这些 Lambda 将非常简单,可能太简单而无法证明 lambda 的合理性。我们可以为类的所有 CRUD 操作(创建 W、读取 W、更新 W、删除 W)编写一个 lambda。它将有一个 switch 语句来选择正确的 CRUD 操作。我们还可以为所有类的每个 CRUD 操作编写一个 lambda(创建 W、创建 X、创建 Y、创建 Z)。我们甚至可以让一个 lambda 完成所有工作,在业务逻辑周围使用嵌套的 switch 语句。
我在单台计算机上编程的经验让我讨厌让 lambda 为一个类做一个 CRUD 操作以外的任何事情。我还看过几位主持人说我的厌恶是有道理的。不幸的是,他们没有提供任何解释,所以我无法选择适合我的上下文的内容。
不费吹灰之力,我可以想到两个支持单体 lambda 的原因:
- Lambda 冷启动将分摊到更多功能中,并且发生的频率会降低。
- lambda 的编程开销大于函数。每个 lambda 都需要管理(部署、选择适当的资源参数等)。
除了拉取参数并将其传递给 switch 语句带来的复杂性之外,我对微型 lambda 的参数一无所知。
您的经验是否对单体 lambda 和微 lambda 之间的权衡产生了任何其他见解?
【问题讨论】:
-
Martin Fowler 的一些建议:Go Macro First, then Micro
-
Martin Fowler 的那篇文章有一些有趣的策略,可以将单体服务分解为微服务,并知道何时停止。它有所帮助,但并不是我要寻找的灵丹妙药。
标签: amazon-web-services aws-lambda