如今,谷歌的工程师置身于一条伟大存在链当中:始于1级,也就是底部的IT技术支持人员;2级是大学应届生,3级通常拥有硕士学位……
若成为10级的谷歌院士就是赢得一种终身荣誉,通常是各自领域的世界领先专家。
而Jeff和Sanjay是谷歌最高级研究员——该公司有史以来也是唯一的11级……
请看来自《纽约客》的文章:
2000年3月的一天,谷歌的六位顶级工程师聚在一间临时作战室。公司正处在前所未有的紧急状态。
去年10月,它的核心系统——通过爬梳网站建立索引——已经停止了工作。用户仍然能在google.com上输入查询信息,但得到的结果已经过期五个月了。风险远远超出了工程师的预计。
此时谷歌的联合创始人Larry Page和Sergey Brin正在洽谈强化雅虎搜索引擎的事宜,并承诺提供比自己现有大十倍的索引规模——这个体量可以媲美万维网,后者的规模在去年已翻了一番。
如果他们失败了,google.com将变成遗迹,和雅虎的生意很可能谈崩,公司将冒着烧光资金的风险,最后被人遗忘。
在这一间阶梯会议室里,工程师们给锯木架放上门板,然后装上电脑。Craig Silverstein靠墙坐得很远,他只有二十七岁,小身板,嗓子尖。Silverstein是Google的第一个员工:他刚加入公司的时候,还是在Brin的客厅办公,一个人重写了大部分代码。
这次他和罗马尼亚的系统工程师Bogdan Cocosel工作了四天四夜,毫无进展。"没有任何有意义的分析," Silverstein回忆道,"一切都被破坏了,而我们一筹莫展。"
Silverstein几乎没觉察到,越过他的左肩,有一位三十三岁的Sanjay Ghemawat,浓眉黑发、两鬓稍灰,十分安静。他毕业于麻省理工。
Sanjay在几个月前加入了公司,那时是12月。他跟随了一位同事的脚步——三十一岁的Jeff Dean,他瘦瘦高高、精力充沛。他们都来自Digital Equipment Corporation,Jeff比Sanjay要早十个月离开。他们极其要好,而且喜欢一起写代码。
谷歌11级工程师:Sanjay Ghemawat
在作战室里,Jeff把椅子推到Sanjay的桌前,自己的桌子空着。Sanjay敲着键盘,Jeff就倚在一边,像个制作人对新来的主播那样唠唠叨叨。
Jeff和Sanjay开始研究熄火了的索引。他们发现有些词语不见了——他们搜索"邮箱"没得到任何结果——其它结果的顺序完全是乱的。这些天他们一直在寻找代码的漏洞,沉浸在编程逻辑里,上上下下都检查遍了。他们找不到错在哪里。
程序员有时会将软件想象成一种有层次的结构,从顶层的用户界面,下降到越来越基础的层次。冒险进入这种结构的底层,即软件与硬件的交汇之处,就背离了理想的代码秩序,而转向它所凭依的电与硅的元素世界。
在作战室的第五天,Jeff和Sanjay开始怀疑他们要找的问题不是出在逻辑上,而是在物质上。他们将混乱的索引文件转换为原初形式:二进制代码。他们想知道机器能观察出什么。
Sanjay的显示器上出现了一大串1和0的粗体,每行代表一个索引词。Sanjay发现:一个应该是0的数字是1。当Jeff和Sanjay将所有来源错误的词放到一起的时候,他们看出一个规律——每个词都有同样的问题。机器的内存芯片不知怎么被搞坏了。
Sanjay看着Jeff。谷歌在这几个月经历了越来越多的硬件故障。问题在于,随着谷歌的壮大,它的计算基础设施也在不断扩大。在你拥有足够的计算机硬件之前,它很少会出问题——但之后它会一直出问题。
谷歌11级工程师:Jeff Dean
电线磨损了,硬盘坏了,主板过热了。许多机器从未开始工作;有些会莫名奇妙地变慢。奇怪的环境因素也会产生影响。当超新星爆炸时,爆炸波会产生向各个方向散射的高能粒子;科学家认为,有一种微小的可能,让宇宙射线的一个出轨粒子能够击中地球上的计算机芯片,把一个0拨到1。
世界最强大的计算机系统,比如在NASA、金融公司,使用可以容忍单个字节变动的特殊硬件。但谷歌的运营像一家初创公司一样,买的是更便宜的缺少这项功能的电脑。公司已经到达了一个转折点。它的计算集群已经如此庞大,以至那些少见的硬件故障都会变得很普遍。
Jeff和Sanjay一起编写代码来给损坏的机器打补丁。 不久之后,新索引完成,作战室解散。Silverstein陷入了困境。他是一个很好的调试人员;找到漏洞的关键是追究事情的根源。Jeff和Sanjay在这方面走得更远。
在3月索引崩溃之前,谷歌的系统基于其创始人研究生时期在斯坦福写的代码。Page和Brin不是专业的软件工程师。他们是学术界进行搜索技术实验的人。
当他们的网络爬虫崩溃的时候,没有任何有内容的诊断信息——只是一句"Whoa, horsey!"老员工称之为BigFiles,这是Page和Brin编写的一个软件,就像BugFiles。 他们最重要的索引代码需要好几天才能完成,如果遇到问题就必须重新开始。按硅谷的说法,谷歌不可能"规模化"。
我们常说我们在"上网查询",但我们真不是;我们的搜索引擎游览全部网页的索引——一张地图。 当谷歌在1996年仍被称作BackRub时,它的地图小得可以装在Page宿舍的电脑里。到了2000年3月,根本没有一台大得能够处理它超级计算机。
谷歌维持下去的唯一方法就是购买客供服务器并将它们连接成一个机队。因为就算这些计算机的价格打对折,谷歌都觉得不值——软盘驱动器,金属机箱——公司就订购原厂的主板和硬盘然后将它们拼在一起。
谷歌把一千五百个这种设备堆叠成六英尺高的宝塔,放在加利福尼亚州Santa Clara市的一幢建筑物里。由于硬件故障,只有1200个能够工作。看起来随机发生的故障在不断地破坏系统。为了生存,谷歌必须将计算机联合成一个无懈可击、随机应变的整体。
Jeff和Sanjay并肩承担起这项任务。曾在Apple开发Macintosh前身的Wayne Rosing于2000年11月加入Google,负责管理百人工程团队。
他说,"他们才是领导者"。他们每周工作90个小时,编写的代码使单个硬盘驱动器出现故障也不会破坏整个系统。他们在爬梳的过程中添加了检查点,方便在中途重启。通过开发新的编码和压缩方案,他们使系统容量实际增加了一倍。他们是一往无前的优化者。
当汽车转弯时,外轮必须覆盖更多的地面;类似地,硬盘外缘比内缘旋转得更快。谷歌已经把要经常访问的数据移到外部,因此在读磁头下面,字节可以更快地流动,但内部的一半是空的;Jeff和Sanjay在这个空间里存储了常用搜索的预处理数据。
在2001年的四天时间里,他们证明了谷歌的索引可以使用快速随机存取存储器而不是相对较慢的硬盘存储;这一发现重振了公司经济。Page和Brin知道用户会涌向即时提供答案的服务。问题是速度需要计算能力,计算能力需要花钱。Jeff和Sanjay用软件解决了难题。
在2005年Rosing离开之后,Alan Eustace成为了工程团队的负责人。"看似矛盾的是,为了解决庞大的问题,你必须知道最小的细节," Eustace说。Jeff和Sanjay对计算机的了解精确到字节。
Jeff曾经传发过一份列表——"每个程序员都该知道的潜在数字"。说实话,它是一列几乎没有程序员知道的数字:L1的缓存引用一般需要0.5纳秒,或是从内存中依次读取1兆字节需要250微秒。
这些数字植入了Jeff和Sanjay的大脑。他们带头重写了几次谷歌的核心软件,让系统容量呈数量级增长。与此同时,谷歌庞大数据中心的技术人员们正走在崎岖的道路上,他们遵照软件生成的指令来更换硬盘驱动器、电源和记忆棒。即使有一部分磨损和失灵,系统仍可以向前运转。
如今,谷歌的工程师置身于一条伟大存在链当中:
始于1级,也就是底部的IT技术支持人员;
2级是大学应届生,3级通常拥有硕士学位,达到4级需要几年时间,或有博士学位,大多数晋升都停滞在第5级。
6级工程师——前10%——能力强到他们可以被归为项目成功的主因;7级是拥有相当成绩的6级。
8级的首席工程师与主要产品或一些基础设施相关联,9级杰出工程师令人景仰。
成为10级的谷歌院士就是赢得一种终身荣誉,谷歌院士通常是各自领域的世界领先专家。
Jeff和Sanjay是谷歌高级研究员——该公司有史以来也是唯一的11级。
(江瀚视野观察)