单体仓库与多仓库——两种源码组织模式介绍
单体仓库与多仓库——两种源码组织模式介绍 单体应用和微服务应用 在介绍单体仓库和多仓库前,先来说说什么叫单体应用和微服务应用。 微服务相比单体应用最大的好处是可以独立的开发测试部署和扩展。单体应用一般采用单体仓库,但是微服务的代码仓库该如何组织呢?一定是每个服务一个仓库吗? 其实也不一定,针对微服务的代码组织,业界有两种主要的实践,一种是多仓库(multi-repo)也就是每个服务开一个源码仓库,另一种叫单体仓库(mono-repo)所有源码都在同一个仓库中,尽管整个应用采用的微服务架构。 项目代码组织示例: 多仓库 单体仓库和多仓库都是有利有弊的。 多仓库的好处是显而易见的: 1.每一个服务都有一个独立的仓库,职责单一。 2.代码量和复杂性受控,服务由不同的团队独立维护、边界清晰。 3.单个服务也易于自治开发测试部署和扩展,不需要集中管理集中协调。 多仓库存在的问题: 1.项目代码不容易规范。每个团队容易各自为政,随意引入依赖,code review 无法集中开展,代码风格各不相同。 2.项目集成和部署会比较麻烦。虽然每个项目服务易于集成和部署,但是整个应用集成和部署的时候由于仓库分散就需要集中的管理和协调。 3.开发人员缺乏对整个项目的整体认知。开发人员一般只关心自己的服务代码,看不到项目整体,造成缺乏对项目整体架构和业务目标整体性的理解。 4.项目间冗余代码多