袋鼠云数栈前端从 Multirepo 到 Monorepo 研发

2023-12-26  本文已影响0人  袋鼠云数栈前端

困境频生前端代码管理何解?

前端代码管理一直是困扰着不少前端开发团队的难题,从开发到发布的整体工作流程中,除了常规的技术问题外,往往还伴随着沟通成本、维护成本及协作效率等问题。这些问题在团队规模较小的时候可能不太明显,但是当团队规模变大时矛盾就越发凸显。
数栈前端开发团队负责着离线开发、实时开发、数据服务、数据资产等多条产品线的开发和维护工作,面对众多的产品线,如何合理的管理代码,成了团队需要思考的问题,虽然借助了 Multirepo 进行管理,但还是遇到了许多难题:

这些问题严重拖慢了数栈前端团队从开发到发布的整体流程,同时增加了团队的维护成本和沟通成本,如何寻找新的工具解决这些问题已迫在眉睫,在进行了深入调研和多次讨论的过程中,新的项目管理方式 Monorepo 在这时映入了我们的眼帘。

Multirepo VS Monorepo

那么 Multirepo 和 Monorepo 到底是什么呢?其实他们分别代表的是两种前端代码管理方式:

上图为 Multirepo 和 Monorepo 的对比图,从图中我们可以简要归纳:

两种管理方式各有千秋,不能简单的定义哪种方式更好,但 Monorepo 的共享机制、统一管理及协作成本低等优势,显然更符合深陷复杂产品线挑战的数栈前端团队的需求,选择 Monorepo 也是团队探索效率提升的必然道路。

合适才最好 Monorepo 方案规划

确定了新的管理方式后,接下来面对的就是如何与数栈相适配的问题。市面上关于Monorepo的解决方案和相关工具有很多,虽然 rush、nx 之类的工具能够在特定的领域提供较好的解决方案,但却并不符合我们的实际需求。
在调研了社区的各种 Monorepo 实现和解决方案之后,结合我们自身的业务场景和需求,最终我们选择了 pnpm 和 turborepo 作为底层的包管理工具和任务调度工具,因为只有最合适的产品才是最好的解决方案。

不断探索 Monorepo 落地实践

在确定了底层包管理工具和任务调度工具后,数栈&Monorepo 整体架构方案也明确了:


file

Monorepo 解决了之前使用 Multirepo 时存在的问题,帮助我们更好的管理代码,接下来我们将结合 Multirepo 存在的问题来详细说明 Monorepo 是如何在数栈产品中落地的。

自动化迁移的实现,保证了迁移过程的快速且顺利的进行,各产品线的同学可以较为平滑的过渡到新的项目管理方式——Monorepo。

写在最后

数栈前端团队正式迁移到了 Monorepo,解决了之前 Multirepo 项目管理方式下的私有源维护成本高,工具/配置不统一,逻辑复用链路长且难以维护等问题。在迁移的过程中,实现了大部分迁移工作的自动化进行,并对重要的配置等进行了权限校验以进行限制和保护。整体提升了数栈前端团队研发的效率,降低了协作和沟通成本,有效实现了降本增效。

上一篇下一篇

猜你喜欢

热点阅读