北京時間6月12日消息,《連線》雜志網(wǎng)絡版近日刊載文章,講述了三名Facebook工程師是如何重建Facebook基礎的。
以下是這篇文章的主要內容:
在Facebook位于加利福尼亞州門羅帕克的新公司總部的邊緣地帶有一幢18號樓,走到這幢樓的背面,就會發(fā)現(xiàn)所謂“戰(zhàn)斗洞窟”(The Battle Cave)的遺跡。
今天,這個房間只是開放式辦公空間的另一種延伸而已,成排的Facebook員工在這里工作。但如果你看看右手邊的墻面上方,那么就會看到兩個金屬支架,這兩個支架曾托起一對平板顯示屏,那就是喬爾·珀巴(Joel Pobar)及其組員追蹤其每日進度的地方。
珀巴領導著一個最好的工程師團隊,這個團隊的任務是重建Facebook這個全球最流行的社交網(wǎng)絡的基礎。到現(xiàn)在為止,他們已經(jīng)辛辛苦苦地為這個項目工作了三年多。在去年秋天,這個團隊的工作一度陷入了停滯狀態(tài),而且似乎永遠也無法看到光明。在這段為期幾個星期的時間里,他們一直都在18號樓北面的這個房間里“蹲點”,幾乎把醒著的所有時間都用來寫代碼和重寫代碼,努力設法磨練自己的創(chuàng)造力,以便駕馭Facebook這個全球最大的網(wǎng)站之一。
這個房間之所以被叫做“戰(zhàn)斗洞窟”,有著很好的理由。工程師們不僅是在跟軟件代碼“戰(zhàn)斗”,同時也是在跟時間戰(zhàn)斗。跟斯坦利·庫布里克(Stanley Kubrick)扮演的奇愛博士(Dr. Strangelove)的“作戰(zhàn)室”(The War Room)一樣,工程師們在“戰(zhàn)斗洞窟”里也通過高高掛在墻上的兩個顯示屏來追蹤自己的工作進度,這兩個顯示屏會不斷地提醒他們牢牢記住距離完成自己的工作還有多遠,而他們從事的工作被視為打造Facebook的未來。
從那以后,這些工程師已經(jīng)搬出了“戰(zhàn)斗洞窟”,但那兩個金屬支架則留了下來,它們可以提醒在這里工作的員工時常想起Facebook押下的重大賭注——公司創(chuàng)始人兼首席執(zhí)行官馬克·扎克伯格(Mark Zuckerberg)喜歡把這個賭注稱作“黑客之道”(The Hacker Way),這是個技術性的賭注,可以作為這家成立至今已經(jīng)九年的社交網(wǎng)絡公司所獨有之心態(tài)的例證。
“那是一個高風險、高回報的賭注。”杰·帕里克(Jay Parikh)說道,他是Facebook的工程副總裁,負責支撐Facebook運作的硬件和軟件的設計和操作等事務。“我們現(xiàn)在的業(yè)務運營規(guī)模十分龐大,因此必須冒上很大的風險才能生存下去。”
想要理解Facebook的這個賭注,那就必須首先把時鐘撥回到2003年底。如果你看過《社交網(wǎng)絡》(The Social Network)這部電影,那么就應該會對這個日子有印象:在那個寒冷的日子里,當時身處美國東北部地區(qū)的扎克伯格坐在自己的哈佛大學宿舍里,首次開始致力于構建自己的社交網(wǎng)絡。
黑客之道
就Facebook最初的想法來自何處、扎克伯格最終嘗試做些什么以及其他一些問題而言,還多少存在某些爭議,但有一件事情則是可以肯定的:當扎克伯格坐下來開始構建這個社交網(wǎng)絡時,他使用的是一種名為PHP的電腦編程語言。
在扎克伯格這樣的網(wǎng)絡程序員中,PHP在2003年時曾風靡一時。這種編程語言給程序員們帶來了一種迅速開發(fā)和再開發(fā)網(wǎng)絡軟件的方法,在C++等較為復雜的編程語言以外提供了一條捷徑。而隨著時間的流逝,PHP語言可令程序員迅速開發(fā)軟件的本領對Facebook及其“黑客之道”來說的重要性將會變得更大;“黑客之道”是一種不斷迭代的哲學,一直都是推動扎克伯格及Facebook前進的動力。Facebook工程師喜歡改動東西,而且喜歡迅速改動,而PHP語言能讓他們做到這一點。
PHP是一種所謂的“動態(tài)打字”的編程語言,也就是說程序員不需要花時間定義程序中每個變量所需要的特定參數(shù)。“如果你讓 一屋子的開發(fā)者開發(fā)一個應用,并讓他們使用一種動態(tài)語言,那么他們能在較快的時間里完成。”Facebook工程師凱斯·亞當斯(Keith Adams)說道。今天Facebook的全球用戶人數(shù)已經(jīng)超過了10億人,有1000多名工程師正致力于建設和重建這個網(wǎng)站,而他們仍在使用PHP語言。
從某種程度上來說,這令人感到驚奇。雖然PHP語言很適合迅速開發(fā)軟件,但不太適合運行像Facebook這樣規(guī)模龐大的網(wǎng)站。當你用PHP代碼——而不是使用C++等靜態(tài)語言——來建設一個網(wǎng)站時,速度上確實可以快很多;但你將需多得多的服務器才能運行網(wǎng)站,而當網(wǎng)站用戶達到10億人之多時,那么這些服務器將會帶來龐大的費用。
但是,扎克伯格和Facebook程序員還是堅持使用這種編程語言,他們沒有像Twitter程序員那樣改用新的語言,而是發(fā)明了新的方式來以超快的速度運行PHP語言。實際上,F(xiàn)acebook一直都在替換網(wǎng)站的基礎,但卻沒有改變網(wǎng)站本身。這就是所謂的“黑客之道”。
Facebook在2010年推出了一種名為“HipHop”的工具,這個工具能把PHP代碼轉換為C++代碼,然后再Facebook的服務器上執(zhí)行。隨后Facebook對這個工具作出了改進,結果是利用轉換后代碼運行的網(wǎng)站能承載相當于純PHP代碼網(wǎng)站五倍到六倍的流量,而服務器數(shù)量不變。
“如果沒有推出HipHop,那么我們可能已在某個時刻陷入了困境,因為當時我們很可能需要更多服務器來運行這個網(wǎng)站,但且無法及時地獲得那么多的服務器。”Facebook工程師德魯·帕洛斯基(Drew Paroski)說道。“那就像是一個‘萬?,斃麃唫髑?rsquo;(美式橄欖球術語,指成功率很低的長距離直傳,一般在比賽快結束時候使用,孤注一擲地傳出去以求在最后的時刻得分,剩下的就只有祈求圣母瑪利亞保佑),讓我們得以涉險過關。”
但在那次涉險過關以后不久,帕洛斯基、亞當斯和另一名Facebook工程師賈森·埃文斯(Jason Evans)決定,他們要做到更好,不再讓Facebook面臨這樣的險境。有天下午,這三名工程師達成了共識,認為如果他們用虛擬機來取代HipHop,那么Facebook就能把PHP的表現(xiàn)提升至更高的水平。所謂的“虛擬機”其實是一種軟件,能在網(wǎng)站的PHP代碼和運行網(wǎng)站的服務器硬件之間提供更大的合力。
帕洛斯基等三人沒有把PHP語言轉譯為C++語言,而是將其轉換為原生機器代碼——也就是服務器芯片所“講”的語言。他們對網(wǎng)站實時執(zhí)行的方式進行了追蹤,然后有了一個更好的想法來將PHH代碼轉換為原生機器代碼。亞當斯回憶道:“HipHop看起來很容易被擊敗。”
這是一種大膽的想法,特別是要考慮到HipHop才剛剛上線而已。構建這樣的虛擬機是一項十分龐大的任務,通常情況下應該由甲骨文、微軟或VMware等軟件公司負責實施,這些公司都擁有創(chuàng)造這種“系統(tǒng)軟件”(在電腦內部核心運行的軟件)的目標。
三人在隨后的幾個星期時間里一直都致力于開發(fā)虛擬機,幾個月后取得了足夠的進展,從而獲得了Facebook對這個項目的支持。到最后,F(xiàn)acebook管理層指派了其他七名工程師跟帕洛斯基等三人一起開發(fā)這個新的平臺,同時停止開發(fā)HipHop。這一舉動凸顯了Facebook以黑客為中心的文化,同時也表明這家公司在過去的幾年時間里取得了多大的成長。“Facebook能在解決一個非常困難的問題的同時還保留自己的文化聯(lián)系。”科技巨頭VMware負責開發(fā)這種軟件的艾里·柯林斯(Eli Collins)說道。“這同時也標志著這家公司的轉變。”
唯一的問題在于,在亞當斯、埃文斯和帕洛斯基三人花了兩年時間開發(fā)這種虛擬機以后,其速度已跟不上活躍網(wǎng)站的需求。
Facebook工程師凱斯·亞當斯