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

雷锋网授权转载 作者:思睿 网站: http://www.leiphone.com/ 微信: leiphone-sz

面对“Google 这家公司有多大?”这种问题,你可能会用收入、股票价格、客户数量或者是形而上学的影响力来回答这个问题。但是,这还不是全部。Google 作为全球最大的互联网公司,我们当然可以用“互联网思维”来思考这个问题,比如用代码数量来衡量它。

来自于 Google 的 Rachel Potvin,在周一举办的硅谷工程会议上给了我们一个可以参考的答案。她表示,运行所有 Google 互联网服务的软件,包括了 Google 搜索、Gmail、Google地图等,大约有20亿行代码。相比之下,从20世纪80年代就开始开发的 Windows 操作系统——有史以来为单一计算机所开发的最复杂的软件工具之一,只有5000万行代码。

所以简单一刀切的话,建立 Google 相当于建40个 Windows 系统。

当然,5000万行代码驱动的仅仅是 Windows 系统本身,而20亿行代码则是 Google 的全部。Google 的业务覆盖范围及其广,包含了搜索、地图、文档、社交、日历、邮件、视频,以及其他互联网服务,所有20亿行代码都存放在代码资源库中,提供给全部2.5万名 Google 工程师调用。在公司内部,Google 对待它的代码就像对待一个巨大的操作系统。Potvin 表示:“虽然不能证明这一点,但我认为这是全球最大的单一信息库。”

Google 是一个极端例子,但它展示了如今的软件在互联网时代有多复杂,以及我们如何改变使用的编码工具和理念,以适应这种复杂性。Google 的巨大资源库仅适用于内部程序员,但在某种程度上,它已经类似于Github——一个向所有公众开放的源代码库,工程师可以通过互联网共享代码。我们正在走向一个需要经常大规模合作代码的世界,也只有这样才能跟上现代互联网服务的发展。

GitHub 就表示:“Google 拥有2.5万名工程师,他们可以与内部拥有各种不同技能的人分享代码。但是小公司可以使用 GitHub 和开源,得到同样的优势。”

另一方面,建立并运行一个20亿行代码的庞大系统,并不简单。Lambert 表示:“这是一项技术挑战,也是一个巨大壮举,数字相当惊人。”

GitHub 可以让程序员轻松共享代码和协作,它涵盖了数以百万计的项目,但没有直接容纳软件项目。Google 则更进了一步,将很多项目合并成一个。鉴于涉及许多工程师以及同时应付如此多代码的难度,能做到这一点十分地疯狂。

Piper

Google 为了同时应付所有代码,已经建立了自己的“版本控制系统”:Piper。它在整个庞大的网络基础设施上运行,系统覆盖了10个不同的 Google 数据中心。

这一系统不仅将所有20亿行代码都存放在单一的系统内,并提供给公司内部工程师调用,更给工程师提供了更多自由,可以使用及合并横跨无数项目的代码。Potvin 表示:“当你开始一个新项目,Google 已经提供了有丰富资源的图书馆,几乎一切事情都已经帮你完成。更重要的是,工程师可以在所有 Google 服务中进行代码变更和立即部署。更新一件事,就能够更新一切。”

当然使用这个系统也有限制。Potvin 表示,某些高度机密的代码,如PageRank 搜索算法,被存储在一个单独的资源库中,只提供给特定员工。而且,由于Android 和 Chrome两个操作系统与那些在线服务有非常大的区别,Google 会将它们的代码存储在单独的版本控制系统中。但在大多数情况下,Google 代码都是一个整体。

机器程序员

Lambert 指出,构建和运行这样的一个系统,不仅需要知道如何做到这种事,还需要庞大的计算能力。Piper 每天需要处理大约85TB的数据(即85000GB),Google 的 2.5万名工程师每天会对资源库做出45000次提交(修改)。

与此同时,Piper 还必须能删去人类程序员所产生的大量冗余。它必须确保代码准确无误,程序员不会相互干涉,要能从资源库中删除错误和未使用的代码。而正是存在这一切困难,Piper不得不接手一些人类的工作。现在,Google 已经从之前的一个版本控制系统Perforce,切换到了 Piper,让机器来完成一部分工作。

这并不意味着 Google 要让机器人编写代码,但它们确实可以生成很多运行软件所需的数据和配置文件。程序员和机器人需要协调一致,维护代码健康。现在已经不只有人类在维护代码了。

让所有人受惠的 “Piper”

其他公司能否受益于同类系统呢?当然能,而且也确实有公司这样做了。Facebook 的主应用有2000万行以上代码,公司把整个事情作为一个单独的项目。还有一些公司以较小规模在做同样的事情,而当这些公司不断接近 Google 或 Facebook 的规模,也会做同样的事。但Google 和 Facebook 都在探索能够改变每个人的方法。

两家巨头正在开发一个开源的版本控制系统,任何人都可以用它来处理大规模代码。它基于现有系统Mercurial,Google正试图扩展 Mercurial 资源库,达到Google的规模。

via wired

原文发布于微信公众号 - 大数据文摘(BigDataDigest)

原文发表时间:2015-09-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据和云

揭秘:贵州交警“六合一”系统,零故障运行500天的背后

如今贵州地区,市民只需打开手机APP,就能够快速便捷地享受到诸如路况查询、违章处理、罚款缴纳等一系列自助式服务,免去了往来于家与交警队之间的奔波之苦。在其背后,...

45280
来自专栏丑胖侠

第一次使用stackoverflow的寻求帮助

最近在研究一项资料很少的技术——Drools,遇到一个很棘手的问题,搜遍所有网站,百度、谷歌都找不到解决方案。无奈之下,想起了stackoverflow这个技术...

22650
来自专栏极限编程

简单设计落地三板斧

如果你认同 简单设计的价值观,我相信 解析简单设计原则 对你来说很容易理解并接受,它不像面向对象设计原则(比如:SOLID)那么晦涩难懂,它给你指明了一条明朗...

11610
来自专栏CSDN技术头条

【SDCC讲师专访】华为李元佳:我对Postgres未来的发展是非常乐观的

本期我们采访的嘉宾是Postgres中国用户会发起人,开源爱好者李元佳先生,目前在华为担任数据库方面的产品规划,曾经在Nortel Networks、NTT、E...

32480
来自专栏IT 指南者专栏

推荐 5 个堪称黑科技的网站

这个周末终于有点闲心来写写自己喜欢的东西了。实话说,可以写的东西其实很多,但是真正属于干货的可能还是有限的。

78630
来自专栏FreeBuf

2017年Google与不良应用和恶意开发者都做了哪些斗争

写在前面的话 毫无疑问,硬件设备的灵魂就是应用程序。它们可以帮你马上叫到一台出租车,跟朋友分享自己生活中的精彩瞬间,了解全球的最新资讯,跟地球另一端的朋友一起玩...

21480
来自专栏Debian社区

Jono Bacon: GPL 没落了吗?

不久之前我看到了 RedMonk 的 Stephen O’Grady 发了一个关于开源协议的有趣的推特,那个推特里面有这张图,

9420
来自专栏EAWorld

DevOps 10大IT管理工具

? 写在前面(译者自序) 很久没有写博客了,几乎不知道如何开始。多年过去,已经没有转载的热情,想想该干点啥呢? 我们数字化企业云平台团队近期在研发DevO...

34930
来自专栏ATYUN订阅号

谷歌重磅推出数据集搜索引擎Dataset Search

谷歌推出了一个搜索引擎Dataset Search,以帮助研究人员找到免费使用的在线数据。该公司于9月5日推出该服务,称其针对的是“科学家,数据记者,数据极客等...

25440
来自专栏罗超频道

今天凌晨这个小动作,让微信完成复制中国互联网的最后一步

6月6日凌晨,苹果WWDC 2017年召开让许多人忽视了微信的一个重量级更新:微信公众账号图文消息正式允许插入第三方内容。微信内容运营者在编辑图文消息时,可以插...

33250

扫码关注云+社区

领取腾讯云代金券