与多个无服务器功能共享数据库是一种好习惯吗?

fro*_*roi 6 microservices aws-lambda serverless

与多个无服务器功能共享数据库是一种好习惯吗?

就像在 CRUD 应用程序中一样,通常创建、更新、删除和读取是共享同一数据库的不同操作。如果我们在无服务器上迁移这个想法,那仍然是理想的吗?所有这些操作都访问同一个数据库。

我的犹豫来自于在不同微服务之间共享数据库的想法。因为这会增加耦合并使事情变得更加脆弱。

ket*_*ham 5

这个问题的答案取决于数据库和操作的情况。

这些问题可以归结为数据库的以下特征:

  • 它可以处理并发吗?这是可以阻止无服务器功能网络对数据库进行操作的首要原因。例如,S3 存储桶无法处理并发性,因此需要实施诸如 firehose 或 SQS 之类的解决方法,以便多个 lambdas 同时运行。另一方面,DynamoDB 可以毫无问题地处理并发。
  • 它是事务型数据库还是分析型数据库?这将限制读取与写入发生的速度,如果它们太慢,您的 lambdas 将呈指数级变慢。这意味着,例如,如果写入速度很慢,那么它们应该大批量完成——而不是从多个实例中以小增量完成。
  • 它对操作频率有什么限制?等式两边都可能存在限制。如果 Lambda 都存在于同一区域,则默认情况下的最大并发数为 1000。数据库通常还对可以同时进行的操作数量有限制。

在大多数情况下,前两个要点是最重要的,因为除了少数极少数情况外,通常不会达到限制。