微服务到底是采用多仓库还是单体仓库更好呢?

单块仓库(mono-lith)

单体应用,所有代码在一个项目当中。

单体仓库(mono-repo)

所有的服务分模块都放在一个仓库当中。
优点:
1、易于规范代码。所有代码在一个仓库中,可以标准化依赖管理,集中开展code review,规范代码风格
2、易于集成和部署,所有的代码在一个仓库中,配合自动化构建工具,可以做到一键构建和一键部署,一般不需要特别的集中管理和协调
3、易于理解项目整体,开发人员可以把整个项目加载到本地的ide里进行code review,可以本地部署调试,方便开发人员把握整体的技术架构和业务目标
4、易于重用,开发人员容易发现和重用已有的代码,也更容易对代码进行整体的重构,抽取出一些公用的功能。

google twitter facebook
缺点:
随着业务团队规模变大,代码库会变得越来越庞大,复杂对也会上升

多仓库(multi-repo)

每一个服务单独放在一个仓库中。
优点:
每个服务独立仓库,职责单一,代码量和复杂性设控。服务有不同的团队维护,边界清晰。单个服务也易于自置开发,测试,部署和扩展,不需要集中管理协调。
缺点:
1、项目代码不容易规范,每个团队各自为政,随意引入依赖,code review无法集中开展,代码风格各不相同。
2、项目集成和部署比较麻烦,虽然每个服务易于集成和部署,但是整个应用集成和部署,由于仓库比较分散,就需要集中的管理和协调。
3、开发人员缺乏对于整体项目的总体的认知。缺乏对项目技术架构、业务目标整体性的理解
4、项目间冗余代码多,导致团队开发,不能复用其他团队开发的通用代码。

总结:

初创公司、和业务不是特别庞大采用单体仓库比较好。为了支持云原生,一键部署可以采用单体仓库。

你可能感兴趣的:(微服务,架构,云原生)