Google文化、組織結構等大揭密

谷歌以”單元”(Cell)的形式組織這些運行Linux作業系統的伺服器,迪博納把這種形式比喻成互聯網服務的”磁片驅動器”(但別和一直謠傳的谷歌存儲服務Gdrive混淆了,”並沒有Gdrive這回事。”一位谷歌女發言人明確表示。),公司的軟體程式都駐紮在這些並不昂貴的電腦機箱裏,由程式員決定它們的冗余工作量。這種由很多單元組成的文件系統代替了商業存儲設備;迪博納表示谷歌這些單元設備更易於建造和維護,他還暗示他們能處理更大規模的數據。

谷歌不會漏過對任何技術細節的關注。多年來,公司的工程師就在研究微處理器的內部工作機制,隨著谷歌規模的持續壯大,必然會用到特別定制和調節過的晶片。知名工程師路易斯·巴羅索(Luiz Barroso)去年在一篇發表在工業雜誌上的論文中證實,近年來谷歌的主要負荷都由單核設計的系統承擔著。但許多伺服器端的應用,如谷歌搜索索引服務,所需的並行計算在單核晶片的指令級別上執行得並不好。

曾在數據設備公司(Digital Equipment)和康柏公司(Compaq)當過晶片設計師的巴羅索認為,隨著AMD公司、英特爾公司(Intel)、太陽電腦系統公司(Sun)開始製造多核晶片,必將會出現越來越多晶片級別的並行計算。

谷歌也曾考慮過自己製造電腦晶片,但從業界潮流來看,這個冒險的舉動似乎不是很必要。”微處理器的設計非常複雜而且成本昂貴,”運營高級副總裁烏爾斯·霍爾茨勒(Urs Holzle)表示。谷歌寧願與晶片製造商合作,讓他們去理解自己的應用並設計適合的晶片。這是一種客戶建議式的設計,其關注點在於總體吞吐量、效能,以及耗電比,而不是看單線程的峰值性能。霍爾茨勒表示,”這也是最近多核CPU的設計潮流與未來方向。”

裁縫般地定制軟體
為了能儘量壓榨硬體性能,谷歌開發了相當數量的定制軟體。創新產品主要包括用於簡化處理和創建大規模數據集的編程模型MapReduce;用於存儲和管理大規模數據的系統BigTable;分析分佈式運算環境中大規模數據集的解釋編程語言Sawzall;用於數據密集型應用的分佈式文件系統的”谷歌文件系統”(Google File System);還有為處理分佈式系統隊列分組和任務調度的”谷歌工作隊列”(Google Workqueue)。

正是從Sawzall這些工具裏體現出谷歌對計算效率的執著關注。並不是每家公司都能從底層去解決效率問題,但是對谷歌來說,為常規關係型數據庫無法容納的大規模數據集專門設計一種編程語言是完全合理的。即使其他編程工具可以解決問題,谷歌的工程師們仍然會為了追求效率而另外開發一套定制方案。谷歌工程師認為,Sawzall能與C++中的MapReduce相媲美,而且它更容易編寫一些。

谷歌對效率的關注使它不可能對標準Linux內核感到滿意;谷歌會根據自己的需要運行修改過的內核版本。通過調整Linux的底層性能,谷歌工程師們在提高了整體系統可靠性的基礎上,還一併解決了數據損壞和數據瓶頸等一系列棘手問題。對內核的修改也使谷歌的電腦集群系統因為通信效率的提高而運行得更快。
當然,谷歌偶爾也會出現系統故障,情況一旦發生,無數的用戶就會受到影響了。三年前一次持續30分鐘的系統故障使20%的搜索流量受到影響。

谷歌開發了自己的網站伺服器卻沒有使用開源的Apache伺服器,儘管它在網站伺服器的市場佔有率超過60%。迪博納認為,谷歌的網站伺服器可以運行在更多數量的主機上,對谷歌站點上內容龐大又彼此互相依賴的應用程式來說,這種伺服器的負載均衡能力遠比Apache的能力更高。同時,在用標準公共網關介面(CGI)訪問數據庫動態網頁方面,谷歌伺服器的編程難度要比Apache更高,但是最終運行速度卻更快。”如果我們能夠壓榨出10%~20%的性能,我們就可以節省出更多系統資源、電量和人力了。”迪博納在總結中指出。
谷歌還設計了自己的客戶關係管理(CRM)系統用於支援自己基於競價和點擊的互聯網廣告收費業務。但對是否需要設計自己的工具,谷歌的態度也不是一成不變的。比如在財會軟體上,它就使用了甲骨文公司(Oracle)的Financials軟體。
美林拿著一隻叉子舉例說明現成的產品也可以帶來價值。但在有些場合現成的軟體產品就不一定適用了。”我們的文化在各個層面對我們的運作都有深遠影響,”他表示,”所以我們不想讓購買所得的工具改變我們的工作方式和文化層面。”

谷歌沒有透露它在IT上的開銷。Susquehanna 金融集團(Susquehanna Financial Group)分析師瑪麗安·沃爾克(Marianne Wolk)估計今年上半年谷歌在IT上的花費高達三億美元,相當於在此期間谷歌全部收入的30%。而在過去幾年間,谷歌把全部收入的50%花在了IT上。現在,隨著公司的發展,IT開銷比例正在下降,其他領域如房地產業的投入正在增加。

非正統的科研人員管理方式使谷歌沒法和大多數科技公司一樣把研究和開發的預算分離開來。高級工程和研發副總裁阿蘭·尤斯塔斯(Alan Eustace)解釋說:”在許多大公司你會發現研究和工程是分離的。”但是把這兩部分預算分離開來,他認為”就等於從制度上遏制了把各項工作變得更加有趣的可能。”

谷歌的IT是”去中心化”(Decentralized)的管理方式。公司沒有CIO或首席技術官(CTO),但它擁有一大群高級工程師和技術人員。這中間包括主管系統基礎設施工程的副總裁比爾·庫格倫(Bill Coughran),他負責掌管和支撐谷歌線上應用的大型分佈式運算程式,而尤斯塔斯則負責產品的研發。謝爾蓋·布林(Sergey Brin)的身份並不僅是谷歌的創始人之一,他的日常工作是技術總裁。美林在三年前作為資訊系統高級主管加入谷歌,現在負責內部工程部門的管理和全球技術支援。

谷歌採用的是矩陣式管理系統,每位經理都有好幾位直接彙報的上司,每位工程師也可以同時向幾個人彙報。多數情況下,工程師們從共同工作的項目領導人處獲得指導和評價。但每隔三個月工程師們就可以自發調換項目,因此谷歌改變了傳統意義上的項目運作和績效考評模式。如同處理其他技術問題一樣,谷歌用人工智慧和電腦自動化的方式來處理一些日常工作。”我們的目標是儘量自主運作,以免工作變得乏味。”美林表示,”沒有人會喜歡乏味的工作,對嗎?”

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *