当前位置: 首页 > 科技观察

2022年了,你还不知道Multi-repo和Mono-repo的区别吗?

时间:2023-03-12 06:33:09 科技观察

Multi-repo和Mono-repo是Git托管代码的两种策略,我们讨论这两种策略及其优缺点。简介大多数现代项目都在Git上进行管理和托管。Git已成为全球分布式源代码控制、版本控制和协作的标准平台。Git快速高效,托管和管理Git代码的方式主要有两种:Mono-repoMulti-repo在深入研究这些方式之前,我们先来了解一下Repo是如何工作的。什么是回购?存储库(Repo)包含项目的所有文件夹和文件。它还包含有关用户、人员和计算机的信息。Git存储库数据是版本控制的,Repos可以由个人或团队成员拥有。Git存储库可以是公共的、私有的或内部的。GitHub是Git存储库的托管服务,并具有用户界面。Git提供版本控制和代码共享功能,Git的特殊之处在于如果开发人员想要对他们的文件进行一些更改,他们可以将整个存储库复制到他们的本地系统。因此,即使开发人员没有特定项目的写入权限,他们也可以在本地复制内容并进行修改(我们称之为分叉)。此外,如果开发人员希望共享本地所做的更改,他们可以向项目所有者发送“拉取请求”。一个项目只能有一项服务。如果您的项目有多个工作流,您可以为每个工作流创建多个服务。大多数开发人员喜欢将较大的项目拆分为具有一种或多种功能的较小的独立服务。每项服务都可以解决各种业务问题。随着无服务器框架的流行,用户可以将功能作为服务来访问。一旦你创建了这些功能——作为服务并部署它们,下一步就是对它们进行结构化和版本控制——你可以将所有服务放在一个存储库中(mono-repo),或者每个服务都有一个存储库(multi-repo))!什么是单一回购?在mono-repo方法中,您将所有服务保存在一个(mono)存储库中。您仍然可以独立部署和管理每项服务。这些服务可以共享公共库和代码。Facebook、Google和Dropbox等公司使用Mono-repo。Mono-repo的优点Mon-repo方法有很多优点:在一个地方存储所有项目的代码,团队中的每个人都可以访问。易于重用和共享代码,与团队协作。很容易理解您的更改对整个项目的影响。代码重构和大代码更改的最佳选择。团队成员可以全面了解整个项目。易于管理依赖项。Mono-repo的缺点当然,Mono-repo也有一些缺点,主要表现在性能上。如果您的项目增长,每隔一天添加更多文件,git检出、拉取和其他操作可能会变慢,并且文件搜索可能需要更长的时间。此外,如果您为您的项目雇用了许多独立承包商,让他们访问整个代码库可能并不安全。此外,实施持续部署(CD)很困难,因为许多人可以合并他们的更改,而持续集成(CI)系统可能需要多次重构。使用Mono-repo的大公司有自定义工具来处理扩展问题。例如,Facebook使用自定义文件系统和源代码控制。什么是多重回购?在Multi-repo方法中,有多个存储库为一个项目托管多个库和服务。如果服务发生变化,开发人员只需重新构建该服务,而不用构建整个项目。个人和团队可以处理他们的特定服务,并且他们只能访问他们有权访问的服务。Netflix和亚马逊等公司使用Multi-repo。多回购的优势?采用Multi-repo的公司远多于Mono-repo,原因如下:每个服务和库都有自己的版本控制。代码检出和拉取是小而独立的,因此即使项目规模增长也不会有性能问题。团队可以独立工作而无需访问整个代码库。更快的开发和灵活性。每个服务都可以单独发布,有自己的部署周期,让CI和CD更容易实现。更好的权限访问控制——所有团队不需要拥有对所有存储库的完全访问权限——在需要时获得读取权限。Multi-repo的缺点跨服务和项目使用的公共依赖项和库必须定期同步以获取最新版本。筒仓文化在某种程度上受到鼓励,导致代码重复和多个团队试图解决相同的问题。每个团队可能会根据一组不同的最佳实践编写代码,因此很难遵循通用的最佳实践。MonoRepo和MultiRepo的区别下面总结一下MonoRepo和MultiRepo的区别:Mono-repoMulti-repo一个组织的所有项目的所有代码都驻留在中央仓库中(译者:这里可能感觉有点绝对)每个服务和项目有一个单独的存储库团队可以协作和一起工作;他们可以看到彼此的变化团队可以自主工作;个别更改不会影响来自其他团队或项目的更改每个人都可以访问整个项目Fabric管理员可以将访问控制限制为仅开发人员需要访问的项目或服务。如果项目规模扩大,问题就会出现并扩大。良好的性能,因为有限的代码和较小的服务单元使得持续部署(CD)变得困难。)和持续集成(CI)开发人员可以轻松实现CD和CI,因为他们可以独立构建服务定期同步,避免以后出现问题总而言之,Mono-repo和Multi-repo同样流行,哪个更好取决于你的项目规模、项目要求以及你需要的版本控制和访问控制级别。Mono-repo侧重于一致性,而Multi-repo侧重于解耦。在单一仓库中,整个团队都可以看到一个人所做的更改,而多仓库为每个团队创建一个单独的仓库,并且这些团队只能访问他们需要的存储库。如果你想为你的项目使用mono-repo和multi-repo的组合,你可以使用meta,一个用于管理多个项目和存储库的工具。原文地址:Mono-RepovsMulti-Repo:ThrowingLightOnCodeRepositoryStrategies原作者:ButterflyThoughts译者:Gopal