如何通过大规模代码共享来加速团队开发速度

对于高速的开发团队,代码共享被视为最佳实践。

什么是代码共享

        代码共享指把已创建的代码统一存放起来,以供其他团队再次下载并开发。团队不必在已经解决的问题上花费时间。使用代码共享可以在团队和项目之间建立一致性,因为您可以使用统一的方式来构建项目。

        对于大型项目和大型团队,这不仅仅是简单地复制和粘贴几行代码。那么团队如何大规模共享代码?

团队如何共享代码

        不同规模的团队需要使用不同的方法进行代码共享。

在较小规模的团队中可以:

  • 在单个项目中重复使用代码。 

  • 在多个项目中代码共享。

        由于所有的代码仍在一个团队中,因此更便于管理。关于被共享的代码记录可以存放在一个README文件中。

        而较大的团队可以使用外部协作工具。

        随着团队不断扩大,代码共享变得更加复杂。为了加快开发速度并构建更大的项目,更多的团队需要共享代码。公司可能具有以下特点:

  • 少数团队在几个共享代码的项目上工作。

  • 在多个团队和项目之间共享的复杂代码模块

大规模利用代码共享面临的挑战

        大规模代码共享涉及将文件打包到组件和模块中,并保障所有团队在任何项目中都能使用这些代码。这样做能带来很多好处,但也面临了许多挑战:

依赖问题

        管理一个代码共享模型涉及管理单独代码集之间的依赖性。如果更改了多个产品中使用的组件,库,程序包或模块中的某些内容,则需要了解其潜在影响。此更改如何与所有相关产品一起工作?您的体系结构有助于确定如何管理这些依赖项。这可以通过多种方式来完成。

共享库

        共享库将模块作为版本化的软件包来应用。然后,团队可以选择将哪些模块放入其产品中。一开始,这很容易维护。但是,当产品开始使用这些库的不同版本时,技术依赖性就会增加。

        当开发人员,CI / CD系统或构建过程更新库的版本时,您需要测试每个产品/资产/可交付对象。并且由于大多数版本控制系统通常不存储软件包,因此您依赖于其他单独的工具和过程。这些可以帮助管理项目和库的依赖关系,但也会使CI / CD流水线复杂化。

Monorepo

        Google和Facebook都使用Monorepo架构。它通过将代码全部放在一个地方,有助于他们代码共享,从而减少了外部依赖性。开发人员可以在与项目相同的存储库中访问所需的信息。

        使用monorepo可以帮助团队了解项目,使他们更轻松地进行协作。但是您需要确保您的工具可以支持它。由于您正在一个仓库中使用如此大的代码库,因此需要实现一个稳定的CI / CD流水线。它需要确保单元测试,冒烟测试和集成测试始终通过。您还需要高性能的工具,可以支持大型下载和合并,使开发人员不会因此延后开发进程。

微服务

        微服务架构使用API在松散耦合的服务之间进行通信。每个都被单独维护。这些服务通常保存在自己的单独存储库中。这有助于团队集中精力并维护代码库的一个特定部分。这样做的结果是,开发人员对他们正在创建或维护的服务非常熟悉。

        因为开发人员无需复制大型存储库,所以分解代码有助于提高性能。但是,当涉及到更改的方向时,他们需要担心将其应用于单独的存储库。对于CI / CD,随着时间的流逝,这会创建大量的依赖项。

        使用微服务需要大量资源(测试框架,DevOps工程师,其他软件等)进行管理。服务的版本不同,需要一起测试。开发人员不在本地托管外部API。因此,他们需要依靠其网络和基础结构来使API联机且可访问。管理员需要确保所有内容都是最新的并且可以正常工作,以便人们访问正确的共享版本。需要细心记录和交流体系结构,架构和系统集成,以避免API不兼容。

        所有这些架构都创建了某种依赖性。您需要确保您的工具使您可以看到代码中正在产生的需求。否则,您将依赖于外部手动维护的文档,或者更糟糕的是,一个可能已经过时的物理白板。

代码共享的稳定性

        当您开始添加新的团队成员时,您会增加每日提交的次数。这些交付通常不再提交到单个共享分支。随着团队的成长,您的分支策略和代码审查策略需要发展。

        随着更多更改进提交到代码库,您将增加未成熟代码误入的风险。使用代码共享模型需要团队严格审查和测试代码。如果您的代码库在存储库之间划分,您将会有需要一起测试的依赖项。无论哪种情况,都需要确保速度与质量之间达到平衡,以确保代码保持稳定。

       保持您的合并很小。使它们变得非常具体,有助于团队跟踪将来出现的问题。当然,要尽早且频繁地合并。

支持多个版本

        代码共享在支持发行版本方面也会引起令人头痛的问题。您的团队需要处理在团队和项目之间共享的代码。找出源自旧版本的错误几乎是不可能的。确保您的开发人员正在以正确的方式进行合并。您的工具需要运行常规测试。

如何大规模使用代码共享

您的团队如何克服这些挑战并扩大规模?

        复杂的体系结构和可访问的库对于有效使用代码共享至关重要。他们需要工具来支持共享的大量资产,增强可见性并支持发布项目。

为了了解项目,模块和组件之间的关系,公司经常指望文档和管理员。但是这些很少帮助解决合并冲突。开发人员需要查看他们的代码放在哪里可以适合于所有团队成员。尽管使用了大量工具,但是版本控制是基础。

优秀团队如何利用代码共享

        Helix Core(Perforce的版本控制)可帮助团队代码共享。因为有了Helix Core,开发人员总能知道哪位成员在做哪部分工作。使用Helix Visual Client,开发人员可以在一个屏幕上专门签出代码,查看谁签出了代码,并查看其所有数字资产(包括Git仓库)。

代码共享如何与Perforce配合使用?

        复杂的大型项目更易于管理,因为团队始终知道变更应如何在项目之间流动。您所有的数字资产(包括所需的打包文件)都存储在一台高性能服务器中。这为您的CI / CD流水线提供了统一的构建和单一数据源。团队可以进行编码并将所有内容(包括Git资产)整合在一起。另外,Helix Core具有将大文件快速交付给团队成员的性能。

        像Perforce流这样的功能也帮助支持你的架构。使用流图,您可以查看哪些分支,版本和项目正在等待更改。流深度可以通过将组件分开来帮助您进一步自定义。然后可以将它们添加到您的流水线中,并在项目和团队之间轻松共享。

Helix Core入门

        亲自了解Helix Core如何帮助您更快地代码共享。联系我们免费试用