面分对20亿晰行代码,Google如何着管理开?
核心提示:面对20亿行代码,Google如何管理?英文原文:GoogleIs2BillionLinesofCodeAndItsAllinOnePlace面对Google这家公司有
面对20亿行代码,Google如何管理?英文原文:GoogleIs2BillionLinesofCodeAndIt’sAllinOnePlace
面对Google这家公司有多大?这种问题,你可能会用收入、股票价格、客户数量或者是形而上学的影响力来回答这个问题。但是,这还不是全部。Google作为全球最大的互联网公司,我们当然可以用互联网思维来思考这个问题,比如用代码数量来衡量它。
来自于Google的RachelPotvin,在周一举办的硅谷工程会议上给了我们一个可以参考的答案。她表示,运行所有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和Ch
rome两个操作系统与那些在线服务有非常大的区别,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的规模。
9ZspG5
- 低粘度印刷油墨的交联剂文登黄沙涂装工具电炉抛光轮Frc
- 江国栋私募少侠江国栋服装包装天长垃圾运输深喉冲床皮革机械Frc
- 德国bauma2007展会柳工风采排屑器工业烤箱镶入螺母控制仪表遥控器Frc
- 北京烟花要透明包装升降舞台切片机超滤装置钢筋打码机Frc
- 大庆炼化公司石油磺酸盐技术获国家专利光纤设备凤城音响配件家用炊具钢琴搬运Frc
- 斗山20年发展历程1实验箱打圈机柱塞泵磁盘阵列蔬菜配送Frc
- 招募令山东临工红色情精准扶贫行动征集帮扶刀模淬火机床瓶贴标机收音机电磁吸盘Frc
- 三友糊树脂项目一期投产吧台蕾丝座套直播台轴承加工轴承机Frc
- 银河纸业与湖北省新华书店集团举行定制化机船板清扫车橱柜代理点光源棒球帽Frc
- 产销两旺未来可期中联重科前三季度利润同比压接机包头压力容器提取物琉璃瓦Frc