微服务的大小应该是多少?你经常听到一些大意是“不要太大也不要太小”的东西 ——虽然这当然是正确的,但它在实践中并不是很有帮助。但是,如果您从精心设计的域模型开始,则更容易推断微服务。

本文使用无人机送货服务作为运行示例。您可以在此处阅读有关该方案和相应参考实现的更多信息。
在上一篇文章中,我们为无人机交付应用程序定义了一组有界上下文。然后,我们更仔细地研究了其中一个有界上下文,即 Shipping 有界上下文,并为该有界上下文标识了一组实体、聚合和域服务。
现在,我们已准备好从域模型转到应用程序设计。下面是可用于从域模型派生微服务的方法。
从有界上下文开始。通常,微服务中的功能不应跨越多个有界上下文。根据定义,有界上下文标记特定域模型的边界。如果发现微服务将不同的域模型混合在一起,则表明你可能需要返回并优化域分析。
接下来,查看域模型中的聚合。聚合通常是微服务的良好候选项。设计良好的聚合具有设计良好的微服务的许多特征,例如: