Database design 如何为我的微服务创建边界?

Database design 如何为我的微服务创建边界?,database-design,architecture,microservices,Database Design,Architecture,Microservices,我们有一个单一的基于web的CRUD应用程序,称之为a,它执行特定的任务。现在,我们有了一个新的需求,它在功能上或多或少独立于一个应用程序。受众不同,使用时间、功能等都不同。因此,我们决定将其构建到一个新的服务B中 当B要求A提供身份验证信息时,问题就开始了。考虑到这种情况可能再次发生,我们从A中取出了身份验证,并将其作为单独的提供者C。A和B都可以针对现在包含用户信息的C进行身份验证 下一个问题是,用户配置文件A过去用来保存用户配置文件,但现在,我们将其大部分移到了C。然而,我们需要保留一些B

我们有一个单一的基于web的CRUD应用程序,称之为a,它执行特定的任务。现在,我们有了一个新的需求,它在功能上或多或少独立于一个应用程序。受众不同,使用时间、功能等都不同。因此,我们决定将其构建到一个新的服务B中

当B要求A提供身份验证信息时,问题就开始了。考虑到这种情况可能再次发生,我们从A中取出了身份验证,并将其作为单独的提供者C。A和B都可以针对现在包含用户信息的C进行身份验证

下一个问题是,用户配置文件A过去用来保存用户配置文件,但现在,我们将其大部分移到了C。然而,我们需要保留一些B需要的额外字段。问题是我是否应该这样做

保留C中的所有字段,因为它是身份验证服务和保存所有用户信息的地方。 把它放在B里,因为这是唯一需要它的地方。
更一般地说,我的问题是如何决定如何将整体分割成单独的部分,如何分割数据,以及如何处理跨所有服务共享的用户ID之类的事情?

我同意吉尔伯特的意见:与用户相关的数据字段应保留在用户身份验证服务中

总的来说,可能没有一种正确的方法来设定边界,但确实存在一些一般概念,例如概念。此外,在处理微服务体系结构时,您应该记住的一个重要目标是,服务应该能够彼此独立地开发和部署

我发现有关该主题的更多资源和最佳实践非常有用:


通常,我会将用户信息保存在身份验证服务中。这使得应用程序D、E、F、G、H等更易于创建和维护。这在一般情况下是有意义的,但也有一些与用户相关的信息。这就是我困惑的原因。如果没有更多的细节,很难给出一个笼统的答案。我理解你为什么不想进入你的具体情况。如果你能让我知道你在寻找什么,我可以补充细节。