【问题标题】:Common DynamoDB through a common lambda or each microservice通用 DynamoDB 通过通用 lambda 或每个微服务
【发布时间】:2022-01-23 18:53:39
【问题描述】:

我们有一个“共享”层,其中包含项目中不同服务访问的一些资源。有一个表存储共享信息(项目中每个资源的用户权限,因为它可以变大所以不存储在 JWT 令牌中)

我们应该让 Lamba 读取 dynamoDB 表并仅授予其他微服务对共享 lambda 的访问权限,还是应该让微服务直接访问该表,以便他们可以使用 lib 方法从表中读取权限?我倾向于直接访问 DynamoDB 表,因为这样可以避免通过 lambda 进行额外的循环。

【问题讨论】:

  • 您为每次 Lambda 调用付费。您可能希望授予其他任何人对 DynamoDB 表的读取权限,而不是处理 Lambda。
  • 另外,如果您没有尝试实现特定要求,创建 Lambda 层就像复制 DynamoDB API。它会花费精力并增加系统维护的复杂性,而不会增加价值。如果没有具体原因,就让他们直接阅读。典型的用例是标准化访问模式以帮助数据消费者。但如果你不想帮助他们,让他们直接阅读。

标签: amazon-web-services aws-lambda amazon-dynamodb microservices


【解决方案1】:

这两种方法各有优缺点:

直接访问 DynamoDB - 好的方面

  • 其他 Lambda 函数的作者可以在他们自己的阶段上构建。速度更快的团队可以冲刺,而不是等待速度较慢的团队
  • 如果一个 lambda 函数行为不端/失败,其他 lambda 函数仍与其解耦,并且爆炸半径受到限制

直接访问 DynamoDB - 不好的一面

  • 在不同的 lambda 实例中重复编写类似内容的工作。
  • 每个 lambda 都可以编写自己的逻辑并在实现中引入差异。这可能是有意设计的,但也可能是一位开发人员误解了要求
  • 如果此 DynamoDB 因其中一个正在使用的 lambda 的错误编码而中毒,其他 lambda 也可能出现故障。
  • 很难衡量储备容量,一些 lambda 在读取单位时很容易变得贪婪。

调解 Lambda - 好的一面

  • 减少为不同消费者实现类似逻辑所需的工作量
  • 如果管理 DynamoDB 的共享 lambda 正在执行审计跟踪存储等操作,您将能够轻松衡量所需的读写容量单位。
  • 如果它与消费者解耦,则可以减少故障并将其包含在其中。

调解 Lambda - 不利方面

  • 如果使用的 lambda 期望从中返回值,则此共享 lambda 很容易成为单点故障。
  • 管理此 lambda 的团队和消费团队之间需要更多的沟通。这个 Lambda 可以很容易地引入政治:D
  • 如果消费团队的开发速度比这个共享 lambda 的所有者快得多,如果集成做得不好,它很容易成为其他团队的障碍。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-24
    • 2019-08-04
    • 1970-01-01
    • 2018-05-07
    • 2019-05-29
    • 2019-07-22
    • 2022-10-02
    相关资源
    最近更新 更多