优点:
1、把模块拆分,使用接口通信,降低模块之间的耦合度(降低它们的依赖程度和关联性)。
2、把项目拆分成若干个子项目,不同的团队负责不同的子项目(对于团队来说可以更好地分配任务)。
3、增加功能时只需要再增加一个子项目,调用其他系统的接口就可以。
4、可以灵活的进行分布式部署。
缺点:
1、系统之间交互需要使用远程通信,接口开发增加工作量。
2、各个模块有一些通用的业务逻辑无法共用。(基于SOA架构通过Dubbo提供服务解决这一问题)
3、沟通成本很高。
原文:https://www.cnblogs.com/whirlwind/p/10638979.html