面对谷歌地图标注代码有多大?这种疑问,你可能会用收入、股票价格、客户数量或者是形而上学的影响力来回答这个疑问。可是,这还不是悉数。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的规划。