Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Architecture 从整体到微服务(涉及哪些任务?)_Architecture_Microservices - Fatal编程技术网

Architecture 从整体到微服务(涉及哪些任务?)

Architecture 从整体到微服务(涉及哪些任务?),architecture,microservices,Architecture,Microservices,我很好奇将一个巨石站点转换成微服务涉及到哪些任务。你必须做些什么才能使它工作,即重定向。要将此付诸实践,以下网站的转换涉及哪些任务 简言之,我了解transistion的功能,但不了解如何进行transistion。将站点划分为小型存储模块列表。然后根据微服务模式逐个/部分地开发模块。将站点划分为小模块列表。然后根据微服务模式逐个/部分地开发模块。此处缺少许多信息-例如,您网站的当前架构和技术堆栈是什么。考虑到这是一个非常广泛的问题,我建议以下指南: 不要一次重构所有的东西 — 要把它做好是

我很好奇将一个巨石站点转换成微服务涉及到哪些任务。你必须做些什么才能使它工作,即重定向。要将此付诸实践,以下网站的转换涉及哪些任务


简言之,我了解transistion的功能,但不了解如何进行transistion。

将站点划分为小型存储模块列表。然后根据微服务模式逐个/部分地开发模块。

将站点划分为小模块列表。然后根据微服务模式逐个/部分地开发模块。

此处缺少许多信息-例如,您网站的当前架构和技术堆栈是什么。考虑到这是一个非常广泛的问题,我建议以下指南:

  • 不要一次重构所有的东西 — 要把它做好是不可能的

  • 将Monolith视为带有一些API的黑盒。它们不一定是RESTful API — 想办法与之互动

  • 在添加新功能时,为每个功能创建单独的(微型)服务,并使用API,让它们与Monolith的API交互

  • 一段时间后,你会发现你的巨石的各个部分只能通过你的新API来访问。尽管它们仍然是monolith代码库的一部分。垂直移出功能,将核心功能与其数据解耦,并将所有前端应用程序重定向到新的API

  • 一旦您看到有界上下文冒泡,就可以方便地将它们从整体中分割出来,并将它们作为单独的服务工作

  • 使用微服务,您将需要比以前更多的自动化。提前考虑持续集成和持续部署(CI/CD)、容器和存储库、中心日志记录和监视


我建议在开始讨论你的具体问题之前,先获得一些简明的概括性想法。这是一个很好的开始。

这里缺少很多信息-例如,您网站的当前架构和技术堆栈是什么。考虑到这是一个非常广泛的问题,我建议以下指南:

  • 不要一次重构所有的东西 — 要把它做好是不可能的

  • 将Monolith视为带有一些API的黑盒。它们不一定是RESTful API — 想办法与之互动

  • 在添加新功能时,为每个功能创建单独的(微型)服务,并使用API,让它们与Monolith的API交互

  • 一段时间后,你会发现你的巨石的各个部分只能通过你的新API来访问。尽管它们仍然是monolith代码库的一部分。垂直移出功能,将核心功能与其数据解耦,并将所有前端应用程序重定向到新的API

  • 一旦您看到有界上下文冒泡,就可以方便地将它们从整体中分割出来,并将它们作为单独的服务工作

  • 使用微服务,您将需要比以前更多的自动化。提前考虑持续集成和持续部署(CI/CD)、容器和存储库、中心日志记录和监视


我建议在开始讨论你的具体问题之前,先获得一些简明的概括性想法。这是一个很好的开始。

从你发布的链接很难看出网站的复杂性。我假设您正在进行自己的库存和订单管理,而不是将这些任务推给服务提供商。我还假设您不能在迁移过程中停止特性开发

对于任何遗留迁移项目来说,最重要的事情是首先在遗留代码中安装控制反转。这将提供一种方法来分离可能现在紧密耦合的独立关注点。没有国际奥委会,你的日子会很难过。请注意,在迁移旧版应用程序时,构造函数注入是非启动程序。相反,您必须使用服务定位器模式,并在将来记住构造函数或属性注入

一旦你有了一个IoC容器,你就可以开始寻找接缝来提供服务了。您可能会发现自然地将自己借给内部服务的代码,因此重构它们以由服务定位器解决。系统记录器是一个很好的起点

最初几个月的目标是转向面向服务的体系结构,其中大部分业务逻辑包含在域实体或服务中。不要强调从一开始就要获得完美的体系结构——这是不可能的。迁移过程涉及到从一个臭气熏天的体系结构转移到臭气逐渐减少的体系结构,而不是直接从整体结构转移到模块化结构。只需从UI和控制器中获取业务逻辑,稍后您就可以调整域层或应用层的内容

请注意,存储库也是本文的重点。在迁移到服务时,还必须迁移所有DB访问以使用存储库模式。这将为真正的单元测试打开大门

当您将代码迁移到使用服务、存储库和IoC时,您将开始看到可以将某些功能分解为API的接缝。用一个小特性创建第一个API,并重构您的monolith以使用它。使其变小,因为它需要大量的基础架构和流程更改,并且您希望同时进行的更改尽可能少。分离出第一个API后,继续将越来越多的功能迁移到该API

顺便说一句,现在是转向CQRS体系结构和DDD策略的大好时机。第一个API应该是一个完全有界的C