×
支持199IT发展可加入知识交流群(10K+用户),最有价值数据分享!
点击即可加入!
关闭

Google有多大?20亿行代码,等于40个Windows !

241241024

199IT数据中心微信账户:i199IT

译者:boxi

Google Search、Google Maps、Google Docs、 Google+、Google Calendar、Gmail、YouTube ……,实现所有 Google 服务的全部 20 亿行代码统统放到一个代码库进行管理,这也许是全球在用的最大的单一代码库了。

Google 有多大?我们可以用收入、用股票价格、客户规模,或者用虚的影响力来回答这个问题。不过这些并不是全部。Google 还是一个软件帝国。因此我们可以用代码来回答这个问题。

在几天前出席 @Scale 大会时,Google 的 Rachel Potvin 给出了一个相当接近的答案。她估计运行 Google 所有互联网服务(搜索、Gmail、Google Maps 等)所需的软件大概相当于 20 亿行代码。相比之下,自 1980年 代开始就一直研发的微软 Windows 操作系统(有史以来最复杂的单机软件之一)大概是 5000 万行。

也就是说 Google 的开发量相当于 Windows 的 40 倍。

更令人吃惊的是,供 Google 25000 为工程师使用的这 20 亿行代码全部都放在了一个代码库。在公司内部,Google 把它的代码当作了一个巨大的操作系统。“岁虽不能证明,” Potvin 说:“但我估计这是全世界在用的最大的单一代码库。”

Google 是一个极端的例子。但它的例子显示出在互联网时代我们的软件已经发展到何等复杂的地步—同时还显示了我们是如何变革代码工具和哲学来适应这种增加的复杂性的。Google 的庞大代码库仅面向内部使用。但是从某种程度来看,它相当于大家在互联网上共享海量代码的开源代码托管工具 GitHub。我们正在快速走向大规模代码协作的世界。这是我们跟上快速演变的互联网服务的唯一办法。

GitHub 系统总监 Sam Lambert 说:“像 Google 这样拥有 25000 名开发者,就意味着有着各种不同技能的人一起分享代码。但是作为小公司你一样可以利用 GtHub 和开源获得其中的一部分优势。也就是老话所谓的 ‘水涨船高。’”

不好的一面是开发运营 20 亿行规模的巨无霸并非简单的任务。

GitHub 实现的是让写代码的人很容易就能分享代码和协作。不过 GitHub 托管的不是一个软件项目,而是数百万。Google 则走得更远,把许多项目组合成了一个。由于要在那么多的工程师间协调如此庞大规模的代码,这听起来似乎有点疯狂。但 Potvin 说他们做到了。

Piper 在弹奏

实际上,Google 开发了自己的 “版本控制系统” 来管理这些代码,这个系统叫做 Piper,Piper 跑遍了 Google 搭建的运行其所有在线服务的所有基础设施,覆盖了 Google 的 10 个数据中心。

当然,这个系统并不是装了 20 亿行代码让公司内部人人都能访问那么简单。它还赋予了 Google 工程师非同寻常的自由去使用和组合来自无数项目的代码。Potvin 说:“这样的话做新项目的时候手上就有了海量的库。几乎所有事情都干完了。” 此外,工程师的一次代码变更可以马上部署到所有 Google 服务。也就是说一次更新就完成了全部升级。

这套系统也有一些限制。Potvin 说一些高度机密的代码—如 Google 的 PageRank 搜索算法是放在单独的库里面,仅供特定员工访问的。此外,Google 的设备操作系统 Android 和 Chrome 由于不在网上跑,而且跟其他服务有很大的不同,所以也是单独存放在独立的版本控制系统里面的。但大部分 Google 代码都是可以让软件模块、创意和解决方案进行自由流动的一个整体。

机器人助手

与此同时,Piper 还必须减轻人类编码者的大部分负担。它必须确保编码者代码中添加了所有必要的文件头;确保代码变更时不会互相踩踏;确保可以方便地排除错误和没用的代码。这些事情都非常棘手,棘手到其中的部分工作已经不是人可以干的了。所以 Google 已经从原来的版本控制系统 Perforce 迁移到 Piper,现在大部分的 commit 都是由机器人自动完成了。

这不是说机器人去写代码。它们的工作是生成软件运行所需的大量数据和配置文件。“需要齐心协力才能保持代码健康,” Potvin 说:“而这不仅仅是人的工作,也包括机器人的。”

Piper 为人人

其他人是否也能受益于类似的系统?当然。而且的确也有人这么做了。Facebook 的主应用大概有 2000 万行代码,他们也是把这些代码当作一个项目。还有的也在做类似的事情,只是规模要小一些。但是一旦那些公司接近 Google 或 Facebook 这样的规模,那后勤保障可能就会出问题。好消息是 Google 和 Facebook 正在探索改变这一点—替所有人改变这一点。

这两家巨头目前正在合作一款开源版本控制系统,让所有人都可以进行大规模的代码处理。其基础是 Mercurial。“我们在尝试看能不能让 Mercurial 达到 Google 代码库的规模,” Potvin 说。她表示,Google 正在监管 Facebook 类似工作的编程大牛 Bryan O’ Sullivan 等人密切合作。

这种做法似乎有些极端。从现在来看,没有几家公司的代码能做到 Google 或者 Facebook 的规模。但在不久的将来,会的。因为软件正在蚕食世界。

摘自:36Kr

感谢支持199IT
我们致力为中国互联网研究和咨询及IT行业数据专业人员和决策者提供一个数据共享平台。

要继续访问我们的网站,只需关闭您的广告拦截器并刷新页面。
滚动到顶部