从旧版架构转变为微服务架构

时间:2017-09-20 07:38:36

标签: rest microservices soa

我想讨论从胖DB到微服务架构的转换。

有点历史: 因此,我们有一个传统的贷款申请系统,它将客户详细信息捕获到一个包含1000多个表的FAT数据库中。该应用程序不仅仅是捕获超过贷款捕获的100多个屏幕/流程的贷款。像管理,报告,配置等。

当前状态: 整个表示层,逻辑层,DB层,ORM层是一个项目的一部分。

当前的任务: 该应用程序是在Win Forms中构建的,我的工作是将其转换为Modern UI,因为我们需要现代功能。

方法 我采取的方法是在当前的数据库结构上构建一些微服务。使用相同的DB将允许当前应用程序按原样运行,并且我们可以在某些微服务中编写新的DB层,逻辑层。然后我们可以编写将使用这些服务的现代用户界面(角度/反应)。 然后,第二步将停止使用遗留应用程序中的捕获操作。

第三步是将特定数据库表从旧数据库中移出到自己的数据库中。

通过保持当前操作按原样运行,这种方法似乎是最好的。此外,这种方法允许我们在生产环境中并行运行两个应用程序。

混乱: 我的问题是详细设计。我正在努力理解微服务中的上下文分裂。第一次迭代范围内的信息是: - 一些资格问题 - 联系方式 - 应用程序要求 - 银行明细 - 收入详情 - 费用详情 - 以前的贷款信息

我想要的微服务是   - 申请服务      - 质量问题      - 应用程序要求      - 以前的贷款信息      - 收入/支出详情   - 人口统计信息     - 银行明细      - 联系方式

问题: - 从遗留到微服务,这种方法听起来是否正确? - 微服务分裂。有人可以建议这是对的吗?

提前多多感谢。 问候 Gaurav Sharma

2 个答案:

答案 0 :(得分:2)

你说过:

  

在当前数据库结构上构建了一些微服务

我认为从根本上说这是错误的做法,我会敦促你考虑替代方案。这种方法的问题是,它将导致您现在拥有的相同级别的耦合和相互依赖性。您只是在SQL之上引入了一个额外的HTTP层,并且可能正在将逻辑推送到UI中。

如果您希望具有长期可维护性,则必须尽量减少微服务之间的相互依赖性。基本上微服务需要能够独立于其他微服务完成工作。

看看Self-Contained Systems

不可否认,通过HTTP镜像SQL接口(CRUD)更容易,如果需要,还有一些框架可以帮助您,但最终不会使架构更好。

答案 1 :(得分:0)

微服务的巨大优势在于您可以采用渐进式方式采用迁移项目,因此我会尝试确定可以迁移的各个功能,并允许您快速获得,避免大-ban方法。

您面临的最大挑战可能是了解您的第一个微服务的适当粒度。它必须有多大或多小。

一个很好的参考点是微服务应该尝试遵循principle of single responsibility,并且通常所有SOLID principles也适用。

如果你的DB很胖,你可能会有许多外出钥匙,你必须仔细计划如何面对database per service pattern

这篇文章也可能有所帮助'How Small Should Microservices Be?'