在决定使用DDD将我的单片Web应用程序拆分为单独的Web应用程序时,我应该考虑什么?

时间:2016-02-09 02:45:29

标签: architecture domain-driven-design n-tier-architecture

背景

我们使用Microsoft(.NET)技术堆栈。

我们目前有一个庞大的单片网络应用程序。我们正在计划如何实施领域驱动设计 我们计划在一些有限的上下文中实现微服务,但不是全部。因为它是巨石, 最有界的上下文将存在于同一个数据库中,因此我们必须确保控制访问权限 代码级别。

this SO post开始,有两种方法可以实现有界上下文。

<bc 1>
 |_ domain
 |_ application
 |_ presentation
 |_ infrastructure
<bc 2>
 |_ domain
 |_ application
 |_ presentation
 |_ infrastructure

或以下:

domain
 |_ <bc 1>
 |_ <bc 2>
application
presentation
infrastructure

我们对第一种方法感兴趣。因为它似乎适合我们的情况。

我的问题是,在决定是否应该通过有限的共存将我们的单个Web应用程序拆分为单独的应用程序时应该考虑什么。在考虑这种方法时有哪些缺点和缺点?

我们申请的主要领域有一些(简洁):

Products
Client Administration
System Administration

当用户在特定区域时,他/她通常不需要关于其他区域的信息。

欢迎所有的想法和建议。我们正努力获得尽可能多的理解。

1 个答案:

答案 0 :(得分:1)

微服务的基本基础之一是independent deployability,所以我肯定会选择方法1.

现在在那个场景中,&#34;表示层&#34;微服务并不像前端UI那样,它通常只是一个REST API。设计消费微服务的前端有几种方法,但如果ProductClientSystem前端有不同的生命周期,我建议为它们分别使用Web应用程序。

关于该主题的有用文章: http://blog.xebia.com/the-monolithic-frontend-in-the-microservices-architecture/ http://samnewman.io/patterns/architectural/bff/#bff