2017-04-19 110 views
0

我在SOA(面向服务架构),我有以下情形一个问题新学:缩放服务边界(SOA)

在公司(MyCompany的),销售团队是有(这是一个技术权威业务能力 - 销售就是业务能力)。该公司决定创建2个产品,称Mycompany.Photos.com和Mycompany.Grocery.com。对于这两个网站他们都需要销售能力,即订单接受能力

因此,销售团队必须为这两个网站工作。因为,这两个网站都需要销售能力。

现在的问题是销售团队应该为每个网站和2个不同的终端创建2个不同的数据库吗?

例如:

如果销售团队最初有一个队列 “Mycompany.Sales.Endpoint”,它接收CreateOrderCommand。它处理CreateOrderCommand,在销售数据库中创建订单并发布OrderAcceptedEvent。当他们只支持一个网站时。如果他们开始支持具有相同端点的两个网站,那么Sales将如何区分这个订单是Mycompany.Grocery.com还是Mycompany.Photos?我们应该将Mycompany.Sales.Endpoint分成2个吗?销售团队是否应该了解照片网站订单和杂货网站订单?

一个答案,我能想到的是:

  1. 销售团队可以建立各2个不同的数据库为Mycompany.Grocery.com 和Mycompany.Photos.com
  2. 部署2个不同的业务组件(BC)为每个网站。
  3. 对于MycompanyPhotos,销售将有2个终端对Mycompany.Grocery.com BusinessComponent和“Mycompany.Photos.Sales.Endpoint”说“Mycompany.Grocery.Sales.Endpoint” 。

    即使它们处于相同的销售限制环境下,它是否可以有2个业务组件(BC)?我是否正确,这是我们规模的销售团队将支持这两种产品的销售能力吗?

对于长信息我很抱歉。我找不到解释这个问题的捷径。

回答

2

服务是企业能力的技术权威。

如果您应该能够区分来自任一系统的订单,但不能,您可能正在为多种业务功能构建“技术权威”。

除此之外,服务可以有很多组件。不要专注于技术问题,而应关注业务问题,看看您是否可以解释这一点。但是像Stackoverflow这样的平台,在问题&答案中与1比1的比率可能不是这样的问题的正确媒介。

+0

嗨@丹尼斯感谢您的回复。我编辑了我的问题,并删除了个人一对一的问题。但我仍然认为这是一个有效的SOA问题。 –

+0

服务不应该有“许多”业务组件 - 2可能是最应该有的。 –

+0

@RupeshKumarTiwari这当然是一个很好的问题,但是讨论在StackOverflow上比在论坛中更难,在论坛中你可以继续提问并在单个线程中回答问题。我认为论坛更适合这类问题。 –

2

我认为更好的方法来思考这种情况,你有效地拥有两家公司 - 一家在食品杂货店,具备所有相关功能,另一家在照片行业。即使这两家“公司”碰巧共享相同的公司文件,您也不应将其视为单一实体。

+0

谢谢@Udi Dahan!如果我理解正确,那么在公司内,我们可以有许多基于公司的销售部门(有限上下文/服务)。所以这里Photo Company将有自己的销售服务和订单,而杂货店则有自己的。 –