单体应用优点:
便于共享:包含所有功能,便于在团队之间共享。
易于测试:一旦部署,所有服务都可以使用了,简化测试过程,没有额外依赖。
易于部署:只需将单个文件复制到单个目录下。
单体应用缺点:
复杂性高:由于是单个归档文件,整个项目包含很多模块,模块边界模糊,依赖关系不清晰,代码混轮堆在一起,使得整个项目非常复杂,编译时间更长。
扩展能力受限:单体应用只能作为一个整体进行扩展,无法根据业务模块的需要进行伸缩。
微服务架构优点
易于开发和维护:一个微服务只会关注一个特定的业务功能,所以业务清晰,代码量较少。开发和维护单个微服务相对简单。
单个微服务启动较快。
局部修改容易部署:单体应用只要修改,就要重新部署整个应用。对某个微服务进行修改,只需要重新部署这个服务即可。
按需伸缩:可根据需求,实现细粒度的扩展。
微服务架构缺点:
运维需求高。
使用微服务构建的是分布式系统。系统容错、网络延迟、分布式事务等都会带来巨大问题。
接口调整成本高,微服务之间通过接口进行通信。修改某一个微服务的API,可能所有用到这个接口的微服务都需要进行调整。