知识卡片
微服务拆分困境的根本原因:边界不清晰,而非粒度大小
内容
微服务实践中长期存在一些似是而非的理解:有人认为微服务就是把一个单体部署包物理拆成多个部署包,或者换一套支持微服务的分布式框架;也有人认为”微服务就是要小,拆得越小越好”。这些理解共同导致了一些项目因为过度拆分微服务,最终复杂度过高到难以上线和运维。书中给出的诊断是:微服务拆分困境的根本原因不是”不知道该拆多小”,而是”不知道业务或应用的边界到底在什么地方”——如果业务边界和应用边界本身是清晰的,拆分该在哪里下刀这件事自然就有了答案。真正决定微服务设计质量的,不是拆出了多少个服务、每个服务体积多大,而是这些微服务的内外部边界是否清晰、是否得到了有效隔离,以及未来业务发展时这些边界能否支撑业务模型和微服务架构继续轻松演进。这个诊断把一个容易陷入”数量/大小”争论的问题,重新定位到了”边界清晰度”这个更本质的维度上,这也是DDD在这一章要被引入的直接原因——DDD提供的正是一套用来确定业务边界的系统方法。
参考来源
- 位置:第3章《微服务设计为什么要选择DDD》"3.2 微服务拆分和设计的困境"(源文件:_epub-src/OEBPS/Text/chapter2-3-2.xhtml)
- 结论依据:原文说明"综合来看,我认为微服务拆分困境产生的根本原因,就是不知道业务或者应用的边界到底在什么地方……其实有时候微服务设计的重点不在于微服务的大小,也不在于拆分出多少个微服务,而是在于微服务内外部的边界是否清晰,这些边界是否进行了有效隔离",直接支撑本卡片结论。
- 原始内容:综合来看,我认为微服务拆分困境产生的根本原因,就是不知道业务或者应用的边界到底在什么地方。换句话说,如果确定了业务边界和应用边界,这个困境也就迎刃而解了。