1译文:Google文化、组织结构等大揭密【转载】上一篇/下一篇2007-12-1019:30:46/个人分类:IT技术内部研发软件、开源软件、定制硬件和与众不同的人力管理,造就了这个搜索引擎巨人。加利福尼亚州山景城(MountainView)谷歌公司(Google,下称谷歌)总部有一个43号大楼,该建筑的中央大屏幕上显示着一个与谷歌地球(GoogleEarth)相仿的世界地图,一个转动的地球上不停地闪动着五颜六色的光点,恍如罗马宫廷的千万烛灯,每一次闪动标志着地球的这个角落一名谷歌用户发起了一次新的搜索。这同时意味着谷歌又一次满足了人们对未知信息的好奇与渴望。谷歌是与众不同的。它的独特不仅仅表现于革新的思维和充满创意的应用(比如那个大堂里的地球模型),更在于其有别常规的IT策略。从人们的常理来看,简单的硬件商品和免费软件是无法构建出一个帝国的,但是谷歌做到了。在性能调整后,谷歌把它们变成一个无可比拟的分布式计算平台,该平台能够支持大规模的搜索和不断涌现的新兴应用。我们原本认为这些应用都是个人消费级别的,但是谷歌改变了这一切。现在商业世界也在使用它们,这就令这家搜索公司显得那2么与众不同。谷歌Web服务背后的IT架构对无数使用搜索引擎的用户来说也许并不是非常重要,但它是谷歌几百位致力于把全球信息组织起来,实现“随处可达,随时可用”目标的工程师们的最核心工作。这就需要一个在覆盖范围和野心上都与谷歌的商业愿景完全相符的IT蓝图作为支撑。谷歌的经理们一直对公司的IT策略话题保持沉默,他们厌恶谈及特定的厂商或者产品,当被问到他们的服务器和数据中心时,他们总是闭口不谈。但与几位谷歌的IT领导一起呆了一天后,我们最终得以揭示该公司的IT是如何运作的,那可不仅仅是一个运行在无数服务器集群上的、表面看来非常简单的搜索引擎。在其简单的外表下,蕴涵着许多内部研发软件、定制硬件、人工智能,以及对性能的执着追求和打破常规的人力管理模式。IT理念方面,谷歌对同行有一条建议:尽量避免那些人人都在使用的系统和软件,以自己的方式做事会更有独特的竞争优势。“企业文化决定了你的做事方式。”道格拉斯·美林(DouglasMerrill),这位谷歌工程副总裁和事实上的首席信息官(CIO)指出,“到了我们这样的发展阶段,企业观念和文化非常与众不同,这也反过来鞭策我们必须要采用与众不同的方式来运行那些他人看来3很常规的系统。”谷歌最大的IT优势在于它能建造出既富于性价比(并非廉价)又能承受极高负载的高性能系统。因此IT顾问史蒂芬·阿诺德(StephenArnold)指出,谷歌与竞争对手,如亚马逊网站(Amazon)、电子港湾公司(eBay)、微软公司(Microsoft,下称微软)和雅虎公司(Yahoo,下称雅虎)等公司相比,具有更大的成本优势。谷歌程序员的效率比其他Web公司同行们高出50%~100%,原因是谷歌已经开发出了一整套专用于支持大规模并行系统编程的定制软件库。据他估算,其他竞争公司可能要花上四倍的时间才能获得同等的效果。打造服务器谷歌究竟是怎样做到这点的呢?其中一个手段,美林认为,“是因为我们自己动手打造硬件。”谷歌并不制造计算机系统,但它根据自己的参数定制硬件,然后像MTV的节目“靓车打造”(PimpMyRide)那样自己安装和调整硬件系统。开源程序经理克里斯·迪博纳(ChrisDiBona)评论道:“我们很善于购买商业服务器,并且改造他们为我们所用,最后把性能压榨和发挥到极致,以致有时候他们热得像要融化了似的。”这种亲手打造的方式,来源于谷歌从车库诞生时与生俱来的节俭风格,4更与谷歌那超大型的系统规模息息相关,良好的习惯一直延续至今。据说谷歌在65个数据中心拥有20万~45万台服务器—这个数目会有偏差(取决于你如何定义服务器和由谁来做这项统计)。但是,不变的是持续上升的趋势。谷歌不会去讨论这些资产,因为它认为保密也是一种竞争优势。事实上,谷歌之所以喜欢开源软件也是因为它的私密性。“如果我们购买了软件许可或代码许可,人们只要对号入座,就可以猜出谷歌的IT基础架构。”迪博纳分析说,“使用开源软件,就使我们多了一条把握自己命运的途径。”谷歌喜欢规模化的服务器运行方式。当有成百上千台机器时,定制服务器的优势也会成倍增加,效果也会更趋明显。谷歌正在俄勒冈州哥伦比亚河边的达勒斯市建造一个占地30亩的数据中心,在那儿它可以获得运算和降温需要的低价水力电力能源(参见边栏《谷歌数据中心自有一套》)。谷歌以“单元”(Cell)的形式组织这些运行Linux操作系统的服务器,迪博纳把这种形式比喻成互联网服务的“磁盘驱动器”(但别和一直谣传的谷歌存储服务Gdrive混淆了,“并没有Gdrive这回事。”一位谷歌女发言人明确表示。),公司的软件程序都驻扎在这些并不昂贵的电脑机箱里,由程序员决定它们的冗余工作量。这种由很多单5元组成的文件系统代替了商业存储设备;迪博纳表示谷歌这些单元设备更易于建造和维护,他还暗示他们能处理更大规模的数据。谷歌不会漏过对任何技术细节的关注。多年来,公司的工程师就在研究微处理器的内部工作机制,随着谷歌规模的持续壮大,必然会用到特别定制和调节过的芯片。知名工程师路易斯·巴罗索(LuizBarroso)去年在一篇发表在工业杂志上的论文中证实,近年来谷歌的主要负荷都由单核设计的系统承担着。但许多服务器端的应用,如谷歌搜索索引服务,所需的并行计算在单核芯片的指令级别上执行得并不好。曾在数据设备公司(DigitalEquipment)和康柏公司(Compaq)当过芯片设计师的巴罗索认为,随着AMD公司、英特尔公司(Intel)、太阳计算机系统公司(Sun)开始制造多核芯片,必将会出现越来越多芯片级别的并行计算。谷歌也曾考虑过自己制造计算机芯片,但从业界潮流来看,这个冒险的举动似乎不是很必要。“微处理器的设计非常复杂而且成本昂贵,”运营高级副总裁乌尔斯·霍尔茨勒(UrsHolzle)表示。谷歌宁愿与芯片制造商合作,让他们去理解自己的应用并设计适合的芯片。这是一种客户建议式的设计,其关注点在于总体吞吐量、效能,以及耗电比,而不是看单线程的峰值性能。霍尔茨勒表示,“这也是最近多核CPU的设计潮流与未来方向。”6裁缝般地定制软件为了能尽量压榨硬件性能,谷歌开发了相当数量的定制软件。创新产品主要包括用于简化处理和创建大规模数据集的编程模型MapReduce;用于存储和管理大规模数据的系统BigTable;分析分布式运算环境中大规模数据集的解释编程语言Sawzall;用于数据密集型应用的分布式文件系统的“谷歌文件系统”(GoogleFileSystem);还有为处理分布式系统队列分组和任务调度的“谷歌工作队列”(GoogleWorkqueue)。正是从Sawzall这些工具里体现出谷歌对计算效率的执著关注。并不是每家公司都能从底层去解决效率问题,但是对谷歌来说,为常规关系型数据库无法容纳的大规模数据集专门设计一种编程语言是完全合理的。即使其他编程工具可以解决问题,谷歌的工程师们仍然会为了追求效率而另外开发一套定制方案。谷歌工程师认为,Sawzall能与C++中的MapReduce相媲美,而且它更容易编写一些。谷歌对效率的关注使它不可能对标准Linux内核感到满意;谷歌会根据自己的需要运行修改过的内核版本。通过调整Linux的底层性能,谷歌工程师们在提高了整体系统可靠性的基础上,还一并解决了数据损坏和数据瓶颈等一系列棘手问题。对内核的修改也使谷歌的计算机7集群系统因为通信效率的提高而运行得更快。当然,谷歌偶尔也会出现系统故障,情况一旦发生,无数的用户就会受到影响了。三年前一次持续30分钟的系统故障使20%的搜索流量受到影响。谷歌开发了自己的网站服务器却没有使用开源的Apache服务器,尽管它在网站服务器的市场占有率超过60%。迪博纳认为,谷歌的网站服务器可以运行在更多数量的主机上,对谷歌站点上内容庞大又彼此互相依赖的应用程序来说,这种服务器的负载均衡能力远比Apache的能力更高。同时,在用标准公共网关接口(CGI)访问数据库动态网页方面,谷歌服务器的编程难度要比Apache更高,但是最终运行速度却更快。“如果我们能够压榨出10%~20%的性能,我们就可以节省出更多系统资源、电量和人力了。”迪博纳在总结中指出。谷歌还设计了自己的客户关系管理(CRM)系统用于支持自己基于竞价和点击的互联网广告收费业务。但对是否需要设计自己的工具,谷歌的态度也不是一成不变的。比如在财会软件上,它就使用了甲骨文公司(Oracle)的Financials软件。美林拿着一只叉子举例说明现成的产品也可以带来价值。但在有些场合现成的软件产品就不一定适用了。“我们的文化在各个层面对我们的运作都有深远影响,”他表示,“所以我们不想让购买所得的工具改变我们的工作方式和文化层面。”8保持活泼谷歌没有透露它在IT上的开销。Susquehanna金融集团(SusquehannaFinancialGroup)分析师玛丽安·沃尔克(MarianneWolk)估计今年上半年谷歌在IT上的花费高达三亿美元,相当于在此期间谷歌全部收入的30%。而在过去几年间,谷歌把全部收入的50%花在了IT上。现在,随着公司的发展,IT开销比例正在下降,其他领域如房地产业的投入正在增加。非正统的科研人员管理方式使谷歌没法和大多数科技公司一样把研究和开发的预算分离开来。高级工程和研发副总裁阿兰·尤斯塔斯(AlanEustace)解释说:“在许多大公司你会发现研究和工程是分离的。”但是把这两部分预算分离开来,他认为“就等于从制度上遏制了把各项工作变得更加有趣的可能。”谷歌的IT是“去中心化”(Decentralized)的管理方式。公司没有CIO或首席技术官(CTO),但它拥有一大群高级工程师和技术人员。这中间包括主管系统基础设施工程的副总裁比尔·库格伦(BillCoughran),他负责掌管和支撑谷歌在线应用的大型分布式运算程序,而尤斯塔斯则负责产品的研发。谢尔盖·布林(SergeyBrin)的身份并不仅是谷歌的创始人之一,他的日常工作是技术总裁。美林在三9年前作为信息系统高级主管加入谷歌,现在负责内部工程部门的管理和全球技术支持。谷歌采用的是矩阵式管理系统,每位经理都有好几位直接汇报的上司,每位工程师也可以同时向几个人汇报。多数情况下,工程师们从共同工作的项目领导人处获得指导和评价。但每隔三个月工程师们就可以自发调换项目,因此谷歌改变了传统意义上的项目运作和绩效考评模式。如同处理其他技术问题一样,谷歌用人工智能和计算机自动化的方式来处理一些日常工作。“我们的目标是尽量自主运作,以免工作变得乏味。”美林表示,“没有人会喜欢乏味的工作,对吗?”此外,谷歌的招聘跟踪系统能自动聚合应聘者的各种信息,为招聘经理提供候选人的工作简历,建议的面试问题,在招聘之后还会自动发送电子邮件询问招聘方对应聘人选的意见。工作面试包括逻辑问题、编写代码、讨论软件架构,和其他任何可以使谷歌相信应聘者具有快速学习新技术能力的证明,因为谷歌是不会让它的员工长时间只干一件事情的。许多小型和短期的项目意味着基于任务表的传统项目管理方式的软件不适用于谷歌。比如,他们的技术人员都不擅于总结自己的时间分配计划。他们更擅长的是写下每日工作相关的简短介绍或是代码片断。这些内容会定期和小组领导提交的项目更新信息一起汇编到数据库里,项目管理系统根据输入内容的主题,加上标签把它们转发给相关10人员。美林认为,“这样的系统还算不上真正的人工智能。”但是,除了谷歌还有哪家公司会这样管理员工呢?绩效考核也采用了类似的技术机制。谷歌的“Perf绩效”系统让经理们写电子邮件(当然还是先由电脑而非人工进行分析),邮件描述了员工在项目中表现的优劣。同事们则会收到另一封来自系统的电子邮件要求他们对比该员工与其他谷歌员工。Perf系统自动分析所有反馈信息,对员工对比结果进行评估,并把结果公开。这正是美林想要的效果,技术让工作关系变得更加透明和人性化。可以预见,虽然打开窗户的同时也会放进苍蝇,但美