《Wired》今天一篇文章谈到Google的代码量已达到20亿行,并简单介绍了Google是如何管理这些代码的。
这20亿行代码,涉及搜索、Gmail、文档、地图、YouTube、Google+等绝大多数Google提供的服务,存储在“一个”代码仓库中,两万五千名Google工程师都可以访问——这可能是世界上最大的单一代码库。只有几个例外:涉及机要信息的代码,如PageRank算法,或者相对独立的项目,如Android和Chrome系统储存在其他单独代码库中。工程师之间可以方便的共享代码——这意味着所有新项目和功能都能利用之前已经写好的代码——20亿行已经几乎无所不包了,而且一处改进,所有相关项目都能受益。
20亿行是什么概念?14年前,Windows XP发布时,包含4500万行代码——Google的代码数量,约为40多个XP。
Google使用一个称为Piper的系统管理这个巨大的代码仓库——这套系统运行在10个不同的数据中心之上,管理的数据量约为85TB,Google工程师每天会进行45000次commit。这又是什么概念?相当于Google工程师每周就重写了一次Linux。
不仅如此,这套从前任Perforce演化而来的系统,还要帮助人类工程师打理各种琐碎的代码修改和提交工作,例如检查Bug和清理用不到的代码,生成必要的配置文件等等——维护代码库健康的工作不仅是工程师在做。
此外,Google正与Facebook合作,计划将类似的强大代码管理工具提供给外界,让公司之外的所有工程师都能受益。不过这套系统并非基于Git,而是Mercurial。当这套系统公之于众时,GitHub会受什么影响?
其实不仅Google的代码庞大复杂至此,微软也毫不逊色。Hacker News上就有微软工程师讲到了自己了解的数据:仅Windows build system每天在微软内部网络产生的交换数据量,就相当于Netflix所有电影总和的数倍!