Architecture 在不接触数据库的情况下将monolith迁移到microservices

Architecture 在不接触数据库的情况下将monolith迁移到microservices,architecture,containers,microservices,Architecture,Containers,Microservices,我们有一个巨大的单片应用程序和一个巨大的oracle数据库。我们希望将应用程序迁移到使用容器的微服务体系结构,而不需要在数据库级别做太多工作。稍后我们将更改数据库 隔离服务的最佳方法是什么?当我们在下一阶段更改数据库时,我们应该做些什么来减少痛苦 当您有多个进程(每个服务一个)时,在DB级别不会有问题吗?< /P> < P> Oracle数据库是在PCF基础上注入的。你可以这样做 杯子服务 服务经纪人 一旦db中的一个实例被注入pcf,那么您就可以创建服务实例并将其绑定到您的应用程序 这些更

我们有一个巨大的单片应用程序和一个巨大的oracle数据库。我们希望将应用程序迁移到使用容器的微服务体系结构,而不需要在数据库级别做太多工作。稍后我们将更改数据库

隔离服务的最佳方法是什么?当我们在下一阶段更改数据库时,我们应该做些什么来减少痛苦


当您有多个进程(每个服务一个)时,在DB级别不会有问题吗?< /P> < P> Oracle数据库是在PCF基础上注入的。你可以这样做

  • 杯子服务
  • 服务经纪人
一旦db中的一个实例被注入pcf,那么您就可以创建服务实例并将其绑定到您的应用程序

这些更改将应用于您的应用程序。您必须对其进行重构,才能从云环境中获取数据库详细信息。其余的交互可以保持不变

至于将单一应用程序转换为微服务,有不同的方法。何时使用,取决于具体情况以及组织接受变更的能力和意愿

一种常见的被称为“勒死模式”。这种方法允许您以增量方式将monolith迁移到MicroService。在这种方法中,您提取高价值的功能,并将其转换为微服务。然后,旧的整体要么忽略这些特性,要么进行重构以调用这些微服务

还有其他必须考虑的因素。它们包括会话处理、记录到文件等


希望这有帮助

< P> Oracle数据库是在PCF基础上注入的。你可以这样做

  • 杯子服务
  • 服务经纪人
一旦db中的一个实例被注入pcf,那么您就可以创建服务实例并将其绑定到您的应用程序

这些更改将应用于您的应用程序。您必须对其进行重构,才能从云环境中获取数据库详细信息。其余的交互可以保持不变

至于将单一应用程序转换为微服务,有不同的方法。何时使用,取决于具体情况以及组织接受变更的能力和意愿

一种常见的被称为“勒死模式”。这种方法允许您以增量方式将monolith迁移到MicroService。在这种方法中,您提取高价值的功能,并将其转换为微服务。然后,旧的整体要么忽略这些特性,要么进行重构以调用这些微服务

还有其他必须考虑的因素。它们包括会话处理、记录到文件等


希望这有帮助

在不重构应用程序使用的数据的情况下重构应用程序的处理方面可能会导致问题,其中之一就是不断增加的技术债务负担。由于您的大型RDBMS提供了大量“免费”的一致性,您是否还计划推迟所有需要添加以支持每个服务的基于事件的异步通知和更新的实现?如果这些端点甚至还没有被识别,那么在微服务最初完成之后,重构的范围似乎将超过数据库。除了独立于数据库结构的核心业务逻辑之外,一旦您分解了数据库,还需要对这些微服务进行另一次迭代开发

是的,“当您有多个进程时,在数据库级别”可能会出现问题。现在的问题是,在您的monolith中,您可能有跨表的事务,这些表属于(或服务于)多个业务域—这些域很可能要驻留在单独的微服务中


我建议采用一种更全面的方法,将数据库和monolith一起增量重构为微服务。选择一个容易分离的部分,然后开始。它可以由一对REST端点组成一个小型API,并将其数据分离到自己的表中。对于REST GET,使用任何您喜欢的方法将数据从monolith DB移动到这些表,以保持它们的同步。对于持久化方法,使用事件队列和简单服务更新microservice数据存储中的monolith数据。然后转到下一个服务。在继续的过程中,您可以开始解除服务以及用于维护microservice模式和monolith数据库模式之间的数据一致性的任何其他机制。如果不积累未知数量的技术债务,甚至可以在实现最初几个用户故事后更好地预测项目结果

在不重构应用程序使用的数据的情况下重构应用程序的处理方面可能会导致问题,其中之一就是不断增加的技术债务负担。由于您的大型RDBMS提供了大量“免费”的一致性,您是否还计划推迟所有需要添加以支持每个服务的基于事件的异步通知和更新的实现?如果这些端点甚至还没有被识别,那么在微服务最初完成之后,重构的范围似乎将超过数据库。除了独立于数据库结构的核心业务逻辑之外,一旦您分解了数据库,还需要对这些微服务进行另一次迭代开发

是的,“当您有多个进程时,在数据库级别”可能会出现问题。现在的问题是,在您的monolith中,您可能有跨表的事务,这些表属于(或服务于)多个业务域—这些域很可能要驻留在单独的微服务中

我建议采用一种更全面的方法,将数据库和monolith一起增量重构为微服务。选择一个容易分离的部分,然后开始。它可以包含一个由几个REST端点和