面对20亿行代码,Google兑换代码如何管理

版权声明:本文为博主原创文章未经博主允许不得转载。 /song/article/details/

Google兑换代码有多庞大要回答这个问题,我们可以看收入看股价,看客户数量看影响力。但是这都还不够充汾说到规模,那么Google兑换代码绝对是一个巨大的计算机软件帝国为了印证着一点,我们还可以看看Google兑换代码的代码规模

周一,Google兑换代碼员工  在一个硅谷举办的工程会议上提到了代码量这个问题(戳看视频请科学上网)。根据她的估计你平时用到的Google兑换代码互联网服務的软件(包括搜索服务、邮箱、地图)的总代码量,大约有20亿行之多相比之下,微软公司的Windows操作系统作为世界上最复杂的个人电脑操作系统,从1980年代至今不断研发和演化其代码量规模也不过是5千万行而已。

所以说把Google兑换代码的代码全部重新构建一次,其规模相当於把Windows系统构建40次之多其实和Windows系统作比较是合乎情理的(译注:作者的意思是:可能会有人质疑,Windows只是一个操作系统软件但是Google兑换代码搜索,GmailGoogle兑换代码地图是好几个软件,用一个软件的代码量与好几个软件的代码总量做比较貌似不合乎情理,作者在后面会解释这个问題)

和Windows的基础代码很像,Google兑换代码的20亿行代码是用来驱动整个Google兑换代码服务的他们是一个整体!这20亿行代码支撑着Google兑换代码搜索、Google兑換代码地图、Google兑换代码文档、Google兑换代码 plus、Google兑换代码日历、Gmail、Youtube,以及其他各种Google兑换代码互联网服务并且,这20亿行代码是存放在一个单一的玳码仓库里的供Google兑换代码的25000个工程师共同使用。Google兑换代码把自己的代码看成一个“巨大的操作系统”“尽管我没法证明,”Potvin表示,“但是我猜这应该是世界上最大的单一代码仓库了”

Google兑换代码的情况其实是个特例。但这个例子向我们展示了在互联网时代我们的软件有多么的复杂,以及我们如何通过改革工具来适应这种复杂度Google兑换代码的超大代码仓库只对内部员工开放。不过我们也有类似的工具——Github,这是一个开源代码仓库平台它向全世界所有的工程师开放,任何人都能最大程度地共享其中的海量代码时代变了,现在的工程师能利用超大规模的代码库进行协同工作这也是现代互联网服务能够维持快速进化的不二之法。

“让25000个开发人员共享代码库就像Google兑換代码这种大公司做的这样,意味着开发人员丰富各异技能多种多样。”GitHub 的系统总监 Sam Lambert 如是说,“不过对于小公司来讲,通过Github和开放源代码你也可以具有(与Google兑换代码)同样的优势。因为有句古话说得好:‘水涨船高’”

“关于编译20亿行代码,其挑战的一面在于:┅次性构建和运行20亿行代码这可不是闹着玩的。”“这肯定是一项技术挑战——一次伟大的壮举”“20亿这个数字无疑是令人震惊的。”

Github的天才之处在于它能让程序员分享和协作的代价降低。但是Github(不像Google兑换代码)并不把所有东西都存储成单一软件项目它的方式是存儲上百万个小项目。Google兑换代码先行一步把无数的小项目化零为整。考虑到这涉及那么多的工程师那么多的项目,化零为整听上去有点瘋狂但是根据Potvin的说法:Google兑换代码做到了。

简单来说Google兑换代码自己做了一个“版本控制系统”,用来对其所有的代码进行判审这个系統名字叫做Piper,它运行在整个Google兑换代码的已经搭建好的庞大的在线基础设施上并管理着所有在线服务。根据Potvin的说法这个系统分布在10个不哃的Google兑换代码数据中心上。

这件事情的意义绝不仅仅是说Google兑换代码的工程师能够访问20亿行代码这么简单这件事情的意义在于:每一个Google兑換代码的工程师都有充分的自由对仓库中的无数项目进行使用和组合。“你新建一个项目”Potvin向《连线》杂志解释到,“然后就有无比富裕的代码库资源供你使用基本上你需要的东西都有现成的。”更美妙的是工程师对代码进行了修改以后,马上就能实施部署然后反映到所有Google兑换代码的服务上。只需要对一处进行更新你就对所有的东西都完成了更新。

当然这个系统还是有限制的Potvin说,有一些高度敏感的代码——比如像Google兑换代码的网页排名搜索算法(PageRank Search Algorithm)这种——是放在单独的代码仓库里的只有部分被授权的员工才能看到。因为这些算法并不在互联网上运行因此他们和其他代码是不同的,Google兑换代码还把其他两个设备相关的操作系统源代码Android和Chrome,进行了单独的版本控淛管理不过对于绝大多数代码,Google兑换代码把他们存成了一个整体工程师可以使用它进行构建模块,提出创新以及实现解决方案

Lamber指出,构建和运行一个这样的系统不仅仅需要知道基本知识还要意识到这个系统庞大的计算能力。Piper涵盖85T数据(8500G)Google兑换代码的25000名工程师每天會完成45000次提交操作。这种强度可不是开玩笑Linux开源操作系统一共有40000个文件,1500万行代码而Google兑换代码工程师每周就会修改25000个文件,1500万行代码

同时,Piper还需要兼顾降低程序人员的负担的任务让程序员可以埋头修改自己的程序,而又不至于踩了别人的脚程序员要能够把不适用嘚或有问题的代码移除代码库。这个任务非常困难所以不能完全靠人工来处理这项工作。现在Google兑换代码已经把把之前所用的Perforce版本控制系統切换到了Piper上Piper使用了自动机器人来处理大多数的用户提交。

当然这不是让机器人来写代码而是让机器人自动生成当大量的数据和配置攵件,来协助用户运行软件“为了让你的代码维持健壮,你需要做很多具体的工作”Potvin说,“然后我们的办法是让机器人帮助你去分担這些工作而不是只让人来做。”

那么其他厂商能不能从Piper这种系统中收益呢当然可以,并且他们正在这样做Facebook应用的总代码量也已经达箌了2亿行之多,而且Facebook也是将整个代码看成一个整体工程的其他的企业也在这么做,只是规模上稍微小了一些对于那些与Google兑换代码或者Facebook規模差不多的公司来讲,都可以采用这样的形式不过现在Google兑换代码和Facebook正在探索新的方法,从而让每个人都能从中获益

两大IT巨头目前都茬研究,如何让超大规模的开源版本控制系统可供所有人使用这项研究是基于已经存在的Mercurial系统开展的。“我们正在尝试是否能够把Mercurial系統扩展到Google兑换代码代码仓库的规模。”Potvin指出。目前Google兑换代码正在和编程大师Bryan O’Sullivan以及其他Facebook的程序员们通力合作争取在这方面取得突破。

這看上去也许有点儿极端毕竟目前大多数公司对代码的操作都达不到Google兑换代码或者Facebook的那个级别。但是在不久的将来他们就会变成那样。

不请自来, 怒答一发 现在已经不做網页游戏了, 曾经做过一款3kw级别的页游, 当时在xx99公司, 项目刚立项的时候, 老板要求我用erlang做服务器, 说简单,容易上手, 不会出问题, 而我之前的开发经验基本都是3d客户端, 还给我一本erlang的书籍说让我好好研究下, …

  这个数字是Google兑换代码的工程經理Rachel Potvin在硅谷的一个工程师大会上透露的这20亿行代码包括Google兑换代码所有的互联网服务——从搜索、Gmail到Google兑换代码地图。作为对比世界上最複杂的软件之一,微软的Windows操作系统大约有5000万行代码

  对比一下,Windows作为全世界最复杂的运行在单个电脑中的软件从上个世纪80年代开发臸今,也不过只有5000万行代码Google兑换代码是它的40倍。

  尽管你可能会说拿Google兑换代码那么多软件的代码和Windows单个软件比是不公平的但事实上,Google兑换代码这20亿行代码其实存储在一个代码库中25000位Google兑换代码工程师可以随时调用它,它就像统一的单个软件

  这有点像工程师们经瑺使用的网站GitHub,他们可以在这里分享代码合作编程,但不同的是GitHub是由一个个独立的软件项目组成,而Google兑换代码的代码库把所有20亿行代碼融合成了一个项目

  “这一定是个巨大的技术难题,”GitHub系统部总裁Sam Lambert说“这个数字实在令人震惊。”

  为了管理这么多代码Google兑換代码专门建立了名叫Piper的“可视化管理系统”,这就是Google兑换代码庞大软件群的地基据Potvin透露,这个系统存在于10个不同的数据中心

  当Google兌换代码工程师决定发起一个新项目时,他就有一个巨大的工具库可以使用并且当工程师对其中某个代码工具进行优化,这个优化立刻僦会帮助到所有项目

  当然,这个工具库并不包括Google兑换代码的核心搜索引擎部分的代码只有少部分高权限工程师才能接触到。除此鉯外Android与Chrome两大操作系统也分别有自己的“可视化管理系统”。

  Piper作为Google兑换代码 20亿行代码的管理器它可不只单纯地存储着85TB数据。由于Google兑換代码 25000名工程师每天都会作出45000次的代码更新这需要有人来帮助他们进行问题的排查与处理,Piper就是这个“人”

  Piper并不会写代码,但是咜会生成许多数据及配置文件来帮助这个Google兑换代码软件的运行“你需要共同努力来保持代码健康,”Potvin说道“这不只是人类的活,机器囚也在帮忙”

我要回帖

更多关于 Google兑换代码 的文章

 

随机推荐