谷歌如何将数十亿行代码从Perforce迁移到Piper

谷歌如何将数十亿行代码从Perforce迁移到Piper

💡 原文英文,约1600词,阅读约需6分钟。
📝

内容提要

谷歌成功将Perforce服务器迁移到Piper系统,历时四年,面临挑战,减少操作风险,提供新系统开发支持,展示勇敢创新精神。

🔎

延伸解读

迁移耗时四年的背后原因

迁移耗时超过四年,并非技术实现本身缓慢,而是Perforce在十一年间已深度嵌入谷歌的软件生态。启动迁移时,已有300个工具依赖Perforce API,更关键的是,生产环境对Perforce的依赖不断出现,使得版本控制系统意外地影响线上流量。因此,团队必须极度谨慎,避免干扰终端用户体验,这大大延长了迁移周期。

全有或全无的豪赌

Piper迁移是一个全有或全无的赌注:由于必须保持源代码的唯一真实来源,在完全切换之前,谷歌无法从Piper获得任何收益。如果失败,不仅浪费数年开发时间,还会让本已超载的Perforce服务器雪上加霜。这种没有中间收益的特性,使得项目风险极高,但也凸显了谷歌破釜沉舟的决心。

迁移后的连锁效应

成功迁移到Piper后,最直接的效果是降低了运营风险,摆脱了对单一过载Perforce服务器的依赖。但更深远的影响在于,新系统支持了更大的流量,从而解锁了一系列新系统,例如静态分析工具Tricorder。此外,迁移后自动提交数量显著增加,表明新系统不仅解决了旧问题,还催生了新的开发模式。

对行业架构选择的启示

谷歌在2008年考虑替代方案时,曾短暂考虑拆分单体仓库,但最终决定继续坚持单体架构。这一决定与当时Git社区推崇的“更多更小仓库”理念相悖,却为后续大规模单体仓库工具的发展奠定了基础。如果谷歌当时采纳了传统智慧,今天的代码管理方式可能截然不同。这提醒我们,有时非共识的选择可能带来长远影响。

❓

Q&A

谷歌为什么决定从Perforce迁移到Piper系统?

谷歌决定迁移到Piper系统是因为Perforce服务器面临性能瓶颈和操作风险,且无法满足日益增长的开发需求。

Piper系统与Perforce相比有哪些优势?

Piper系统是分布式的,基于谷歌标准基础设施,能够更好地处理大规模代码库,减少操作风险。

谷歌在迁移过程中遇到了哪些挑战?

迁移过程中,谷歌面临与现有工具的兼容性、生产依赖性以及需要确保不影响用户体验等挑战。

谷歌的Piper系统是如何开发的?

Piper系统的开发始于2008年,经过四年的努力,最终在2012年成功部署,采用了清洁房间设计等技术。

迁移到Piper后,谷歌的开发效率有何变化?

迁移后,谷歌的自动提交数量显著增加,推动了新系统的开发和使用。

谷歌在迁移过程中采取了哪些技术手段?

谷歌采用了清洁房间设计等技术手段,以确保在不复制Perforce接口的情况下顺利迁移。

🏷️

标签

➡️

继续阅读