【问题标题】:Shared library vs REST service. What are the pros and cons?共享库与 REST 服务。优缺点都有什么?
【发布时间】:2019-12-18 21:02:37
【问题描述】:
有:
- 要求在多个服务之间共享键值对存储
- DynamoDB 中的一个简单表
- 非常简单的键值对创建逻辑
直观地说,我想将 DynamoDB 表放在一个 REST 服务后面,该服务将实现我拥有的所有简单逻辑。不幸的是,这意味着给解决方案增加了许多可靠性和性能挑战,因为让我的服务像 DynamoDB 一样出色、有弹性和高性能并不容易。
我考虑为此目的创建一个共享库已经有一段时间了。该库将实现逻辑并直接连接到 DynamoDB 表。我预计 DynamoDB 表和将在库中实现的逻辑都不会发生很多变化。
这两种方法的优缺点是什么?
【问题讨论】:
标签:
rest
architecture
amazon-dynamodb
system-design
【解决方案1】:
服务只是库的打包和部署选择。两者都绝对有效,具体取决于您的特定需求。
我很好奇你为什么觉得有必要包装 dynamodb?您是否想在其之上放置一些特定的域逻辑来约束它? DynamoDB 已经是一项 RESTful 服务...将您自己的 RESTful 服务置于其之上可能是有利的,但您必须让我相信这样做的价值。如果您有需要限制功能的特定业务逻辑,将其打包为共享库具有一定的优势,特别是如果您可以封装该业务逻辑并将其与 DynamoDB 的实现分开。
【解决方案2】:
我假设更新共享库将不在您的控制范围内。并且客户端(图书馆用户)会在适合他们的时候更新。
如果上述假设成立,您应该始终使用休息服务。考虑一些事情
你的 rest api 可能会使用缓存而不是一直调用 dynamodb。
您可能想要更新要放入 dynamodb 的数据的架构。
您可以同时使用另一个数据库。
- 您可能有一些验证逻辑,这些逻辑肯定会随着时间的推移而发展。