Monorepo简介

news2024/9/20 9:30:30

Monorepo

  • 第一章:与Monorepo的邂逅
  • 第二章:Multirepo的困境
  • 第三章:Monorepo的魔力 - 不可思议的解决问题能力
  • 第四章:Monorepo的挑战与应对策略
  • 第五章:总结
  • 第六章:参考

第一章:与Monorepo的邂逅

今天和大家介绍一下Monorepo,其实之前工作的很多很多年都没有接触过“Monorepo”这个词,因为之前的多家公司本身就是Monorepo,直到我入职了一家公司采用了multi-repo方式来维护代码,痛苦的使我不得不寻求解决方案(谁让我是开发底层框架的呢,就我最痛苦),因缘际会认识了Monorepo。

  • Multirepo:每个项目使用一个git仓库来管理,或者一个项目中的每个模块用一个仓库来管理
  • Monorepo:多个项目是使用一个git仓库来管理
    在这里插入图片描述

第二章:Multirepo的困境

以下是我根据网上的资料和我遇到的实际问题整理的脑图:
在这里插入图片描述
对于开发维护底层框架的我来说,Multirepo简直是噩梦,最痛苦的三个点:

  • 框架更新困难,没有原子的更新方法,只能每个团队通知,由于更新不及时,好多次导致使用的框架版本不统一,导致有的模块可以启动、有的模块启动不了
  • API维护的战战兢兢,根本不敢丢弃老的接口,要一直背着包袱,因为你不知道哪个仓库就用了
  • 依赖混乱导致架构根本无法统一,当想引入Mediapipe、Taskflow等任务流的执行框架时,发现单进程根本不可能,因为每个模块用的依赖随时都有可能发生变化,一旦导致冲突就会出现无法启动的问题

第三章:Monorepo的魔力 - 不可思议的解决问题能力

当我更新框架版本花了2周后,我终于下定决心要改变这种状态,因为这种状态下框架迭代根本无法实现敏捷开发、Bug无法被快速修复、新功能无法被测试充分,所以我开始学习Monorepo的知识,发现Monorepo真的可以完美解决Multi-repo遇到的问题,并且国外的Google、国内的腾讯等大厂都在使用这种代码管理方式,Monorepo的优势我整理成了简单的脑图来总结一下:
在这里插入图片描述

第四章:Monorepo的挑战与应对策略

当然Monorepo也不是银弹,它也有很多需要解决的问题,比如下图中的挑战:
在这里插入图片描述
在我的工程实践中,对于上面问题的应对措施:

  • 权限控制,直接放弃了,公司非常Open,直接所有人可见、可修改,但是合入主线需要Owner的Approve
  • 性能问题,公司只是某个部门采用Monorepo,代码量还没有巨大到非常恐怖的地步,所以日常浏览、编辑都没有问题,编译性能是通过bazel的remote cache来解决,从全量编译从1小时逐渐优化到10~20分钟
  • 破坏主线,这个需要公约+CICD来约束MR,把控准入标准

第五章:总结

由于不是转门搞CI/CD或DevOps的同学,所以对于Monorepo的认识不是太深刻,总结一下我的认识:
对于代码量没有恐怖到一定程度,不考虑权限问题,那么Monorepo一定适合你的团队,基本没有什么副作用,也有助于建设公司的共享、互助的工程师文化;但是如果你的团队对权限问题要求很高,那就只能做一些妥协,将关键代码单独管理,通过repo或git submodule来和Monorepo大仓一起管理。

第六章:参考

https://new.qq.com/rain/a/20210726A0AD3W00
https://www.cnblogs.com/guxingzhe/p/17587786.html
https://www.163.com/dy/article/E71EEJTA0511K58A.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1965449.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

打开Excel后无法编辑是什么情况?3种解决方法

当发现Excel表格无法编辑,相关菜单选项也都变成灰色状态,无法点击时,可以看看是否以下3个原因造成的,一起来看看对应的解决方法吧。 一、Excel标记为“最终版本” 原因: 当Excel标记为最终版本时,Excel会…

AWS-负载均衡-创建一个对外的HTTPS ALB

目录 介绍 功能差异 适用场景 性能比较 补充 基本组成部分 创建流程 介绍 Elastic Load Balancing 支持三种类型的负载均衡器:Application Load Balancer、Network Load Balancer 和 Classic Load Balancer。这里用ALB( Application Load Balancer)说明。 功…

MySQL之表完整性约束

前言:本博客仅作记录学习使用,部分图片出自网络,如有侵犯您的权益,请联系删除 作用:用于保证数据的完整性和一致性 约束条件说明PRIMARY KEY (PK)该字段为该表的主键,可以唯一的标识记录,不可以…

诚宜开张圣听不应妄自菲薄

拾人牙慧孜孜不倦 青山依旧在几度夕阳红朝闻道夕死可矣 青山依旧在几度夕阳红 安能以血补天我计不成乃天命也臣本布衣躬耕南阳大丈夫宁死不辱尔要试我宝剑是否锋利吗又待怎样休教天下人负我竖子不足与谋皇天不佑天下英雄唯使君与操尔青光殷殷其灿如炎备不量力欲申大义于天下我…

LLM:微调大模型的评估

微调了一个垂直大模型,要判断其好坏,怎么做才算科学的? 一、客观测试集评测 训练的时候,就划分了训练集、验证集、测试集,6:3:1. 验证集用于观察有没有过拟合,一般来说是loss;测试集是在训练完…

【全国大学生电子设计竞赛】2024年E题

🥰🥰全国大学生电子设计大赛学习资料专栏已开启,限时免费,速速收藏~

工作流流程引擎框架推荐来了

近期有不少粉丝客户朋友都在询问工作流流程引擎框架推荐。随着行业竞争激烈化,实现流程化办公已经成为当务之急。低代码技术平台及工作流流程引擎拥有够灵活、更可靠、可视化界面等诸多个优势特点,在推动企业实现数字化转型的过程中深受行业信赖与喜爱。…

Go语言生成excel、将excel保存到本地、将多个excel表格压缩为压缩包、在压缩文件上传OSS删除本地excel文件和压缩包

最近在公司了个需求,主要涉及到文件导出,需要根据特定表格文件生成excel文件导出,同时对导出的excel临时保存本地,生成压缩包,将压缩包上传至OSS(Object Storage Service)后删除本地临时文件。下…

cpu飙升时的排查方式、线上环境常规排查步骤

提示:面试问题:cpu飙升时的排查方式、生产问题排查方式 文章目录 前言一、cpu飙升时的排查步骤1、top2、top -Hp pid3、printf ‘0x%x’ tid4、jstack pid | grep tid 二、总结三、线上环境常规排查步骤1、查看服务器中线程情况2、查看系统异常进程的16进…

JavaEE 从入门到精通(一) ~ Maven

晚上好,愿这深深的夜色给你带来安宁,让温馨的夜晚抚平你一天的疲惫,美好的梦想在这个寂静的夜晚悄悄成长。 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结 前言 在软件开发的日常工作中,有效的项目管理是…

OCC 模型编辑

目录 一、简介 二、主要功能 三、常用方法 四、详细子类示例 1、BRepBuilderAPI_Copy 1.1 形状复制 注意事项 1.2 复制和变换 2、BRepBuilderAPI_Transform 3、BRepBuilderAPI_GTransform 3.1 应用广义仿射变换 3.2 平移和旋转变换 3.3 缩放 4、BRepBuilderAPI_Nu…

shell正则表达式和文本处理器

文章目录 一,正则表达式1.基础正则表达式1.1 字符匹配1.2 元字符1.3 字符集1.4 预定义字符集1.5 量词1.6 非打印字符 2.扩展正则表达式2.1分组和引用2.2 选择2.3 量词 二,文件处理器1.grep2.sed3.egredp4.awk4.1awk版本4.2工作原理4.3工作流程4.4运行模式…

搜维尔科技:Manus VR数据手套-适用于机器人、人工智能和机器学习解决方案

在劳动力短缺和工作环境日益严峻的今天,机器人技术正成为解决这些复杂问题的关键。MANUS™ 手指捕捉技术,结合先进的量子追踪技术,为机器人的精确操作和远程控制提供了准确且先进的解决方案。 技术亮点 实时数据捕捉:通过Quantum…

数学强化✨张宇18讲+1000题45天带刷计划

张宇25版18讲加起来一共656页,是以前的2倍内容,课时量页直接翻倍! 你以为张宇是把强化内容给重新讲了一遍吗?并不是,张宇往年的的强化内容放在了25版的基础部分来讲,这就直接导致张宇基础30讲课时量页跟着…

视频美颜SDK技术揭秘:如何在直播中实现实时美颜

为了满足观众对视觉效果的追求,视频美颜SDK(软件开发工具包)应运而生。今天小编将揭示视频美颜SDK技术,探讨它是如何在直播中实现实时美颜效果的。 一、视频美颜SDK的基本原理 视频美颜SDK是一种专为视频直播应用设计的软件工具…

电子级异丙醇的应用以及电子级异丙醇的提纯

电子级异丙醇是一种极高纯度的异丙醇(Isopropyl Alcohol, IPA),专为电子和其他高科技产业中对清洁度和纯度有严格要求的应用而设计。它经过特殊的精炼和过滤工艺,以去除水分、杂质、颗粒物以及金属离子,确保其具备超低…

最优化(12):约束优化算法

本章主要讲解罚函数法和增广拉格朗日函数法。

微信静默授权,配置redirect_uri,路径

微信静默授权,配置redirect_uri,路径 1.登录微信公众号 2.进入:https://mp.weixin.qq.com/cgi-bin/settingpage?tsetting/function&actionfunction&token1764020234&langzh_CN

2/100数据分析实战项目_商城销售数据分析_Python+帆软BI

前言 商城销售数据分析 数据源:https://www.heywhale.com/mw/project/5f7f0c07fab2e800300e51e4/content BI展示http://localhost:37799/webroot/decision/link/xItL 密码: a600【链接失效:2024年10月31日】 1. 销售数据分析 销售数据分析一般分析什么数据&#x…