网站单页发布,网站视频链接怎么做,网站工程师培训,微信网站建设模板【答疑解惑】| 作者 / Edison Zhou这是恰童鞋骚年的第265篇原创内容之前在学习微软的示例eShopOnContainers时发现它使用的是单体代码仓库库#xff0c;之后又发现大家在进行微服务项目开发时也都在使用单体代码仓库。问题来了#xff0c;为啥要微服务项目都要使用单体仓库之后又发现大家在进行微服务项目开发时也都在使用单体代码仓库。问题来了为啥要微服务项目都要使用单体仓库所有微服务都在一个代码仓库呢1微服务应用的代码仓库组织我们都知道微服务应用相对于单体应用来说最大的好处就是可以独立开发、测试、部署和扩展。单体应用一般会采用单体代码仓库但是微服务应用的代码仓库应该如何组织呢是每个微服务一个仓库吗其实不一定针对微服务应用的代码仓库组织业界有两种主要的实践1多体仓库Multi-Repo即每个微服务对应各自代码仓库2单体仓库Mono-Repo即所有微服务对应一个代码仓库下图展示了这两种实践的示意引用自波波老师《Spring Boot与K8s云原生应用开发》课程单体应用仓库 vs 微服务多体仓库 vs 微服务单体仓库2多体仓库与单体仓库的比较多体仓库的优点显而易见职责单一代码量和复杂性受控支持多个团队独立开发边界清晰。单个微服务也易于独立开发测试和扩展不需要集中式管理。差不多这些就是微服务带来的好处。但是多体仓库有其自己的缺点一来项目代码不容易形成统一规范每个团队各自为政随意引入依赖Code Review无法集中开展代码风格也会各不相同。二来项目整体集成和部署会比较麻烦虽然单个项目集成容易但是整体进行集成就会收到仓库分散带来的困难。三来也是我个人认为对于中小技术团队来说最为重要的开发人员会缺乏对于整体项目的认知只关心自己负责的那一小块从而缺失对整体架构和业务目标整体性的理解。最后项目间可能会存在较多的冗余代码每个微服务一个仓库会造成每个团队不断地重复造轮子而不是去优先重用其他团队开发的已有的项目代码。对于多体仓库的缺点单体仓库解决了一些这也就形成了单体仓库的好处一来易于规范化项目代码所有微服务都在一个仓库中可以规范代码风格便于集中组织Code Review。二来易于整体集成和部署所有微服务都在一个仓库中配合DevOps工具可以方便地实现一键构建和部署实现持续集成。三来易于理解项目整体开发人员可以将整个项目clone到本地IDE中进行Code Review也可以直接本地部署和调试从而易于掌握整体技术架构和应用目标。最后易于重用已有轮子开发人员在开发时容易发现和重用已有的代码而不是去重复造轮子当然也利于对现有的代码进行重构。当然万物都是有利有弊单体仓库也不例外。随着业务的快速发展单体仓库中的项目代码会变得越来越庞大复杂性也会随之上升。因此对于企业来说需要有专门的集成团队和自动化的集成工具来支持才能保证单体仓库的持久应用。3业界都有哪些企业谁在用单体仓库在业界使用单体仓库组织微服务项目的企业不少例如Google、Facebook、Twitter和Salesforce以及Microsoft等互联网巨头虽然他们内部的项目庞大开发人员众多但是他们还是选择了使用单体仓库。谁在用MonoRepoeShopOnContainers项目代码结构刚刚我们也说道这些巨头企业都是有专门的集成团队和成熟的自动化集成工具来为开发团队进行支持使得开发团队可以一键构建和部署。画外音对小企业来说可能上微服务架构都得慎重一百个读者有一百个哈姆雷特各有各的看法。4小结对于中小企业/初创企业/进行数字化转型的传统行业企业来说如果要上微服务架构一般早期微服务的数量不会特别多采用单体仓库会比较合适。从本文也可以了解到微服务架构并不是倡导所有的东西都要独立自治像代码仓库就可以集中管理而且这也是业界的最佳实践之一。最后如果你在使用.NET Core开发微服务或者计划使用.NET Core开发微服务都可以先阅读一下这本《.NET微服务容器化应用架构指南》目前已更新到ASP.NET Core 3.1版本LTS版本。画外音欲练此功必看此书。点击“阅读原文”即可学习此书。往期精彩推文技术中台与业务中台有啥联系微服务架构中的BFF到底是个啥点个“在看” 就是对我最大的支持????点击进入架构指南