【发布时间】:2017-09-16 01:47:09
【问题描述】:
我是 SOA(面向服务的架构)的新手,我对以下场景有一个问题:
在公司(Mycompany)中,有销售团队(这是业务能力的技术权威——这里的销售是业务能力)。该公司决定创建 2 种产品,即 Mycompany.Photos.com 和 Mycompany.Grocery.com。对于这两个网站,他们都需要销售能力,即订单接受能力。
因此,销售团队必须同时为这两个网站工作。因为,这两个网站都需要销售能力。
现在的问题是销售团队是否应该为每个网站创建 2 个不同的数据库和 2 个不同的端点?
例如:
如果销售团队最初有一个队列“Mycompany.Sales.Endpoint”并且它接收 CreateOrderCommand。它处理 CreateOrderCommand,在销售数据库中创建订单并发布 OrderAcceptedEvent。当他们只支持一个网站时。如果他们开始支持具有相同端点的两个网站,那么销售将如何区分这个订单是针对 Mycompany.Grocery.com 还是 Mycompany.Photos 的?我们应该将 Mycompany.Sales.Endpoint 拆分为 2 吗?销售团队是否必须了解照片网站订单和杂货网站订单?
我能想到的一个答案是:
- 销售团队可以为 Mycompany.Grocery.com 分别创建 2 个不同的数据库 和 Mycompany.Photos.com
- 为每个网站部署 2 个不同的业务组件 (BC)。
-
Sales 将有 2 个端点,例如“Mycompany.Grocery.Sales.Endpoint” Mycompany.Grocery.com BusinessComponent 和 MycompanyPhotos 的“Mycompany.Photos.Sales.Endpoint”。
即使它们在相同的销售边界上下文中,它也可以有 2 个业务 组件 (BC) ?我说的对吗,我们扩大销售团队的方式会支持两种产品的销售能力吗?
对于这么长的消息,我深表歉意。我找不到任何捷径来解释这一点。
【问题讨论】:
标签: domain-driven-design nservicebus soa microservices