何时在 Laravel 项目中使用微服务和 DDD

When to use Microservices & DDD in Laravel Project

你好

i'm wondring when i use microservices pattern in laravel & when to use DDD?

我搜索了一下没有结果

微服务是架构风格,DDD是架构模式。 换句话说,您可以将微服务用于外部架构和 DDD 或简单 CRUD,或者将洋葱用于内部架构作为微服务内部的服务。 您可以从 Microsoft

阅读更多 here

在下图中你可以更好地理解这个概念:

视情况而定。您正在处理哪种域?应用程序应该有多复杂?

从你的问题来看,需要考虑三点:1.你应该使用微服务模式吗? 2. 你应该使用 DDD 吗? 3.你应该使用Laravel吗?

  1. 当您拥有由大型团队组成的清晰组织结构时,通常会使用微服务。微服务支持独立部署,因此一项服务的部署对另一项服务的影响最小。微服务 通常 使用 DDD 方法进行划分,尽管您不必这样做。观看此视频,其中讨论了何时使用微服务:https://www.youtube.com/watch?v=GBTdnfD6s5Q&t=1559s
  2. 领域驱动设计是一种基于领域知识设计系统的方法。如果你有一个小项目,and/or 你也是领域专家,你可能不必使用 DDD。但是,DDD 可能有助于处理您可能不是领域专家的更复杂的领域,因为它可以让您的领域专家和开发人员之间进行顺畅的沟通。您还可以定义通用语言的边界,这可能有助于划分您的微服务。
  3. Laravel 是一个 PHP 框架。对于您的用例,PHP 能否满足您的要求? PHP 通常擅长更密集的计算任务,但与 NodeJS 相比速度明显变慢。您可以在那里找到有关基准的更多信息。对于一个框架,Laravel 具有强大的功能以及出色的代码和支持,尽管它是以牺牲性能为代价的。如果你想使用微服务,Lumen 可能是更好的选择(它是 Laravel 的轻量级版本)。但是话又说回来,如果 PHP 不能满足您的要求,您可能会更好地使用另一种语言和另一种框架,可能 ExpressJS/Spring.

就我个人而言,我使用 Laravel 整体模块化的方式,每个模块都使用 Onion Architecture,并使用 DDD 设计和实现所有模块的模型。到目前为止,它对我的​​用例来说效果很好。