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

标签: 代码 google 管理 | 发表时间:2015-09-17 16:06 | 作者:
出处:http://news.cnblogs.com/

英文原文: Google Is 2 Billion Lines of Code—And It’s All in One Place

面对“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 的规模。

本文链接

相关 [代码 google 管理] 推荐:

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

- - 博客园_新闻
英文原文: Google Is 2 Billion Lines of Code—And It’s All in One Place. 面对“Google 这家公司有多大. ”这种问题,你可能会用收入、股票价格、客户数量或者是形而上学的影响力来回答这个问题. Google 作为全球最大的互联网公司,我们当然可以用“互联网思维”来思考这个问题,比如用代码数量来衡量它.

Google管理层不用Google+, 你呢?

- redhobor - 36氪
公司管理层关心自己的产品,并且每天使用,这几乎是任何伟大产品的必备条件. 从Facebook到Twitter,到苹果莫不如此. Google CEO Larry Page上次登录Google+是在3个多月以前,只发表过7个公开帖子,自从8月中旬以来只发过一条. 即便是这样,他也比执行总裁Eric Schmidt发的帖子多7条.

Google 是如何做代码审查的

- litefy - python.cn(jobs, news)
在上一篇文章中提到过,我已经不在Google工作了. 我还没有想清楚应该去哪里—有两三个非常好的工作机会摆在我面前. 因为在这段做决定时间里,我不再受雇于任何人,我想可以写一些专业性的东西,一些很有趣,但也会在同事和管理工作中导致关系紧张的东西. Google是一个非常优秀的公司. 他们做出了很多令人称赞的东西—既是公司外部,人们可以看到的东西,也是公司内部.

Google放弃Buzz和代码搜索

- 2楼水饺 - Solidot
七匹狼钱包 写道 "Google产品副总裁布拉德利-霍洛维茨(Bradley Horowitz)在官方博客宣布将终止多项产品和服务,包括代码搜索引擎、Buzz、Jaiku、iGoogle社交功能,以及针对Google搜索的大学搜索项目.

[原]Eclipse中使用google代码风格

- - 傲慢的上校的专栏
第一步,找到文件(有些废话),在 https://code.google.com/p/google-styleguide/source/checkout中通过svn获取eclipse-java-google-style.xml(不愿意麻烦,也可通过csdn下载: http://download.csdn.net/detail/aomandeshangxiao/5209114).

在Google管理一个软件团队

- - 博客 - 伯乐在线
伯乐在线注:2003年到2010年期间,原文作者 Matt Welsh 是哈佛大学工程和应用科学学院的计算机科学系教授. 在我离开学术圈之后,我常常被问及我在Google的工作是怎样的. 我猜想从终身教授到 软件工程师的转变听起来像是个巨大的落差. 抛开职位不说,我现在比起前面在哈佛的8年,工作更快乐也更高效,尽管做教授和管理软件团队有很多相似之处.

facebook是如何管理代码的

- NIUZHU - 无网不剩
原文在此,看完之后,终于明白为什么优秀的工程师都去了/想去facebook,因为那里是工程师们的天堂. 我对facebook的运转着迷. 这是一个很独特的环境,不容易被复制(他们的体系并不适合所有的公司,即使他们努力尝试过). 下面是我和facebook的朋友们关于他们如何开发和管理项目的记录. 现在距离我收集的这些信息又过去6个月了,我相信facebook肯定又对他们的项目开发实践进行了改进.

Facebook 是如何管理代码的

- everfly - 互联网的那点事
英文原文:How Facebook Ships Code. 中文翻译:Facebook 是如何管理代码的. 我对facebook的运转着迷. 这是一个很独特的环境,不容易被复制(他们的体系并不适合所有的公司,即使他们努力尝试过). 下面是我和facebook的朋友们关于他们如何开发和管理项目的记录.

源代码管理的十条戒律

- - 搜索引擎技术博客
源代码管理是我们工作中很重的一部分,是很多开发组的生命. 但是我们往往在这方面犯错,不理解很多基本的,核心的版本控制的概念. 我在这里列出了十条建议,可以说是戒律. 虽然我会用 Subversion 和 .NET 来做示例,但这些戒律和你用的 编程语言还有源码管理工具无关. VSS 已死,就让它离去吧.