在决定使用 DDD 将我们的整体 Web 应用程序拆分为单独的 Web 应用程序时,我应该考虑什么?
What should I consider when deciding to split our monolithic web application into separate web apps using DDD?
背景
我们使用 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
当用户在特定区域时,he/she 通常需要很少的关于其他区域的信息。
欢迎所有想法和建议。我们正在努力获得尽可能多的理解。
微服务的基本基础之一是 independent deployability,所以我肯定会选择方法 1。
现在在那种情况下,微服务的 "Presentation layer" 不会像前端 UI 那样远,它通常只是一个 REST API。有几种方法可以设计使用微服务的前端,但如果 Product
、Client
和 System
前端具有不同的生命周期,我建议为它们使用单独的 Web 应用程序。
关于该主题的有用文章:
http://blog.xebia.com/the-monolithic-frontend-in-the-microservices-architecture/
http://samnewman.io/patterns/architectural/bff/#bff
背景
我们使用 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
当用户在特定区域时,he/she 通常需要很少的关于其他区域的信息。
欢迎所有想法和建议。我们正在努力获得尽可能多的理解。
微服务的基本基础之一是 independent deployability,所以我肯定会选择方法 1。
现在在那种情况下,微服务的 "Presentation layer" 不会像前端 UI 那样远,它通常只是一个 REST API。有几种方法可以设计使用微服务的前端,但如果 Product
、Client
和 System
前端具有不同的生命周期,我建议为它们使用单独的 Web 应用程序。
关于该主题的有用文章: http://blog.xebia.com/the-monolithic-frontend-in-the-microservices-architecture/ http://samnewman.io/patterns/architectural/bff/#bff