自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

探秘Facebook的交付工程團隊和BT部署系統(tǒng)

譯文
系統(tǒng) 新聞
目前Facebook網(wǎng)站升級的平均耗時為30分鐘——其中15分鐘用于生成二進制可執(zhí)行文件,而另外15分鐘則花費在通過BT體系將可執(zhí)行文件傳輸至各Facebook服務器的過程中。一般來說,F(xiàn)acebook會在每個工作日進行一次非關鍵性更新。而重大更新則每周進行一次,通常在周二下午進行內(nèi)容發(fā)布。

【51CTO 4月12日外電頭條】Facebook有一套成熟的軟件交付流程,平均30分鐘可完成一次升級。這套流程的背后有一個交付工程團隊,以及一套BT部署系統(tǒng)。這個系統(tǒng)是如何運作的?Arstechnica網(wǎng)站去拜訪了一次這個交付工程團隊,揭開了這個系統(tǒng)的神秘面紗——

    [[66537]]

Facebook園區(qū)入口

Facebook總部設立于加利福尼亞州門洛帕克市,這同一片園區(qū)在多年前孕育出了Sun Microsystems這家同樣聲名在外的高科技企業(yè)。園區(qū)入口處矗立著巨大的宣傳看板,相信每一位用過Facebook的朋友都不會對上面豎起大拇指的圖案感到陌生——贊,這是用戶表達肯定態(tài)度的方式,可能也標志著Facebook公司對自身成就的評價。我最近一次到園區(qū)采訪的時候,恰好碰上一群十幾歲的少年們聚集于此,爭相在宣傳板前合影留念。

一部席卷全球的熱門影片“社交網(wǎng)絡”讓成千上萬普通用戶了解到Facebook公司如何從學生宿舍內(nèi)的構(gòu)想成長為世界第二大巨型網(wǎng)站,這樣一個丑小鴨變天鵝的故事本身就極具傳奇色彩。然而恐怕很少有人知道這家社交網(wǎng)站成功的背后,有多少技術(shù)人員在交付工作方面付出了艱辛的努力:先進的高科技基礎設施造就了如今每天數(shù)以百萬計用戶的交互式Web應用體驗,而這正是無數(shù)工程師嘔心瀝血打造出的傲人成果。

我前幾天剛剛獲準對Facebook總部進行專訪,全程跟蹤這家社交巨頭的交付流程工作。Facebook公司正在籌備并部署一項全新社交功能,即“timeline”系統(tǒng)。而我則以獨家觀察者的身份參與到項目當中,隨時收集第一手信息并將資料整理發(fā)布。

在Facebook園區(qū)入口與前往企業(yè)辦公地點通路的交匯處,一個交通指標牌映入我的眼簾,上面寫著:黑客之路。正如該公司創(chuàng)始人Mark Zuckerberg在今年早些時候的首次公開募股信中所言,他希望能以“黑客之路”的方式規(guī)劃企業(yè)管理理念以及發(fā)展方向。在Facebook總部逗留的兩天當中,我第一次與他們的交付工程師們共同生活、攜手工作,并真正了解到黑客之路這一概念如何在該網(wǎng)站的成長與迅速普及當中起到?jīng)Q定性作用。

門洛帕克市的總部園區(qū)占地面積巨大,其間排布著密密麻麻的辦公建筑;與其說是企業(yè)園區(qū),這里倒更像是一個小型城市。建筑物當中隨處可見精致的涂鴉式壁畫及充滿幽默氣息的海報裝飾。與傳統(tǒng)的封閉或半封閉式辦公環(huán)境不同,F(xiàn)acebook公司的開發(fā)人員一般會在大片開放式空間中進行工作,辦公設備也沿著公用桌面排布,員工之間沒有設置任何阻礙視線的隔擋。

每座辦公建筑中都配備有公文室,在這里工作人員們可以在不干擾其他同事的前提下盡情開展討論。有趣的是,每座建筑中的會議室都會以特定的主題命名。比如某棟樓里的會議室就是以“狂蟒之災”這部電影中的一個笑話為名。另外,我還親眼見到一些以電視節(jié)目命名的房間。而在工作人員的陪同下進入另一棟建筑時,我發(fā)現(xiàn)一間名為JavaScript:The Good Parts的房間。哈哈,這肯定是來自Doug Crockford所撰寫的同名著作。

最終我來到交付工程團隊的辦公所在地。正如Facebook公司中的其它開發(fā)人員一樣,交付工程師們同樣使用開放式工作環(huán)境與公用辦公桌。不過他們的房間仍然具有非常鮮明的特色:這里實際是一個酒水品種相當豐富的酒吧。

這個房間原本在兩根垂直支撐柱之間設有一面背景墻。但在交付工程團隊入駐之后,他們將這塊區(qū)域改造成了酒吧吧臺,并在臺面上挑起他們精心挑選的名稱:Hotfix(熱修復補丁)吧。不用問,這個點子來自關鍵性軟件補丁更新技術(shù)。而這里的員工就在圍繞在吧臺周圍忙活手頭的工作。

我正是在這里第一次見到交付工程團隊的領導者Chuck Rossi。Rossi的工作設備就在吧臺對面,這樣他可以在工作的同時一伸手就抄起臺面上的酒水飲料。我花了整個下午與這位曾效力于谷歌與IBM公司的資深軟件開發(fā)人士談天說地,這段時光非常美妙,真的像兩個老朋友坐在科技氣息濃郁的后現(xiàn)代酒吧中暢所欲言。正是以這種方式,我了解到Rossi如何帶領他的團隊幫助Facebook部署更新服務,并討論這項工作的重要性及日常運作流程。

[[66538]]

Chuck Rossi,F(xiàn)acebook交付工程團隊的領導者,正坐在Hotfix吧旁接受采訪

Facebook的BT部署系統(tǒng)

Facebook資源代碼主要利用PHP編程語言進行編寫。PHP語言在開發(fā)速度方面優(yōu)勢明顯,但在性能方面比起低層次語言及某些現(xiàn)代編程替代方案卻頗有不足。為了讓這套以PHP為基礎的基礎設施在可擴展性領域更進一步,F(xiàn)acebook開發(fā)出了一套名為HipHop的特殊轉(zhuǎn)譯工具。

HipHop能夠?qū)HP代碼轉(zhuǎn)譯為高度優(yōu)化過的C++代碼,并通過二次編譯將其轉(zhuǎn)化為運行效率極高的本地二進制代碼。Facebook于2010年正式推出HipHop并開始銷售開源軟件使用許可,同時該公司的工程師們指出,在HipHop的幫助下,F(xiàn)acebook業(yè)務流程中的CPU平均使用率瞬間降低了50%。

由于Facebook所使用的整套代碼庫都通過編譯轉(zhuǎn)化二進制可執(zhí)行文件,因此該公司的整個部署流程與我們耳熟能詳?shù)腜HP環(huán)境頗為不同。Rossi告訴我,F(xiàn)acebook所有應用程序的二進制代碼庫總體積約為1.5GB。當Facebook對代碼進行升級并生成新的軟件包時,新的全局代碼庫也必須同時被推送到企業(yè)內(nèi)部的每一臺服務器當中。

把1.5GB大小的二進制代碼分配給不計其數(shù)的目標服務器,工作當中面臨的技術(shù)挑戰(zhàn)想想都令人頭痛。在摸索出幾套成型的解決方案之后,F(xiàn)acebook公司決定將BT技術(shù)敲定為最終手段。這種人氣極高的點對點文件共享協(xié)議在向大量不同服務器傳輸大型文件方面擁有著不可替代的優(yōu)勢及上佳表現(xiàn)。

Rossi解釋稱,F(xiàn)acebook公司創(chuàng)建了自己的定制BT追蹤工具,其設計目的是使Facebook基礎設施中的每一臺服務器都能夠與同一節(jié)點或機架中的其它服務器一樣獲得相同的分區(qū)內(nèi)容,如此一來總體延遲將得到大大降低。

目前Facebook網(wǎng)站升級的平均耗時為30分鐘——其中15分鐘用于生成二進制可執(zhí)行文件,而另外15分鐘則花費在通過BT體系將可執(zhí)行文件傳輸至各Facebook服務器的過程中。

當然,二進制可執(zhí)行文件只是Facebook應用程序堆棧中的組成部分之一。Facebook頁面中還包含諸多調(diào)用自外部資源的項目,例如JavaScript、CSS以及圖形要素等。這些文件被托管在分布于世界各地的內(nèi)容交付網(wǎng)絡(CDN)當中。

一般來說,F(xiàn)acebook會在每個工作日進行一次非關鍵性更新。而重大更新則每周進行一次,通常在周二下午進行內(nèi)容發(fā)布。交付工程團隊專門負責管理此類更新的具體部署工作,并全程跟蹤以確保更新的順利完成。

頻繁的更新及發(fā)布是Facebook在創(chuàng)立之初就確定下來的核心發(fā)展理念之一。在該公司剛剛邁入起步階段的時候,開發(fā)人員利用快速迭代及增量工程手段堅持不懈地對網(wǎng)站加以完善。這種技術(shù)層面上的靈活性在Facebook的發(fā)展及演變當中起到了關鍵性作用,并成功讓這家年輕的企業(yè)迅速成長為舉世矚目的社交巨子。

當初Facebook公司招募Rossi的時候,是希望他能夠領導交付工程團隊找到合適的途徑,確保企業(yè)在快速發(fā)展的同時步伐穩(wěn)健、基礎牢固。對于正處于急速擴張當中的Facebook而言,其網(wǎng)站的規(guī)模與管理復雜性也在以幾何級數(shù)式增長。要實現(xiàn)牢固穩(wěn)妥的交付戰(zhàn)略,傳統(tǒng)的解決方案已經(jīng)無法滿足需求。正是在這時,他們想到了BT部署系統(tǒng)。

在與Rossi共同度過的那個愉快的下午,我在概念上基本理解了他解決Facebook部署問題的處理方式??偨Y(jié)起來,他希望能在客觀條件與理論目標之間找到一個平衡點。他制定了一套相當嚴格的質(zhì)量及穩(wěn)定性標準要求,但具體到解決方案層面卻將著眼點放在高靈活性上。資源總是有限的,他認為最好的辦法是通過系統(tǒng)靈活性來應對各種意想不到的麻煩。

測試工作

在最近的幾篇文章中,我們已經(jīng)與讀者朋友深入探討了軟件應用程序步入高速交付周期所帶來的挑戰(zhàn)與機遇。而挑戰(zhàn)當中最難以克服的一個就是,如何在測試時間遠低于原先水平的前提下保證軟件的質(zhì)量不打折扣。

由于Facebook網(wǎng)站每天都會進行更新,因此質(zhì)量測試也就成了壓力最大、負荷最強的先鋒部門。為了快速發(fā)現(xiàn)問題,F(xiàn)acebook中每一位通過企業(yè)內(nèi)部網(wǎng)絡訪問該社交網(wǎng)站的員工,都將直接登入采用了最新代碼的實驗性網(wǎng)站架構(gòu)。在這里他們能夠接觸到一切尚未經(jīng)過測試的修改建議以及還沒有在正式網(wǎng)站上采用的最新功能。與此同時,員工還可以通過另一個單獨的網(wǎng)址訪問與外界用戶相同的正式運行版網(wǎng)站,這樣兩相對比之下可能更容易發(fā)現(xiàn)問題。

將測試網(wǎng)站設定為企業(yè)員工的默認訪問對象,能夠在新元素及功能付諸實踐之前先經(jīng)受專業(yè)人士的檢測。測試網(wǎng)站中還包含了一些內(nèi)置的錯誤報告工具,員工一旦發(fā)現(xiàn)問題,就可以利用它們輕松提供詳細反饋。

為了避免回檔事故并確定通用性技術(shù)問題,F(xiàn)acebook還部署了一套自動測試系統(tǒng)。該公司將這類測試分為兩個獨立的部分:一部分專門進行代碼的常規(guī)完整性測試,而另一部分則模擬用戶的日常使用情境,以確保網(wǎng)站的用戶界面能夠運轉(zhuǎn)良好。

在更新全面付諸實踐之前,新的代碼將首先被推送到“a2”層,也就是由數(shù)臺Facebook公共服務器組成的試點環(huán)境。在這個階段的測試工作中,會有一些隨機Facebook參與到更新中來。盡管參與者的數(shù)量在Facebook全局用戶群體中只占極小的比例,但技術(shù)人員仍然能從整個更新流程中發(fā)現(xiàn)潛在問題并及時加以修復。

[[66539]]

Chuck Rossi和他的工作臺

預檢流程

Facebook利用自己的內(nèi)部多人在線聊天系統(tǒng)(IRC)服務器保持企業(yè)中的交流通暢。大多數(shù)企業(yè)的工程人員在工作強度較大時,交流通道都顯得比較冷清。但根據(jù)Rossi的說法,F(xiàn)acebook公司在正常運作狀態(tài)下,每天會有約700名員工保持在線溝通。工具開發(fā)人員專門為IRC打造了幾種業(yè)務助手軟件,能夠?qū)RC中的各類功能與Facebook開發(fā)與部署工作流程緊密結(jié)合,進而發(fā)揮巨大的輔助作用。

在新一輪升級補丁即將上線之前,Rossi會在IRC系統(tǒng)中啟動一套檢測程序。在此次更新活動中提交過代碼的開發(fā)人員都將收到通知,并加入頻道以共同關注更新過程。整從此更新流程將在大家的協(xié)同監(jiān)控之下試作一次,當確認一切正常后才會進入實際部署階段。

如果某位開發(fā)人員在幾分鐘之后仍然沒有做出協(xié)作回應,Rossi能夠利用助手通過多種不同的通訊渠道對該開發(fā)人員發(fā)出提醒,其中包括電子郵件通知以及短信提示。正如Rossi在與我的交談中所強調(diào)的,他希望部署更新的時候所有與之相關的開發(fā)人員都能在場監(jiān)督并發(fā)表意見。

在Facebook公司內(nèi)部存在著這樣一種優(yōu)秀的開發(fā)文化,大家都認為開發(fā)人員應該為自己編寫的代碼負責到底,直到這些成果順利應用于產(chǎn)品之中。這一理念的實際體現(xiàn)就是“DevOps”活動,這種促進開發(fā)、技術(shù)運營及質(zhì)量保障部門間溝通的方案有效消除了各團隊之間的溝通障礙,并最終保證了項目的成功運轉(zhuǎn)。

如果Facebook網(wǎng)站在實際更新過程中出現(xiàn)問題,編寫相關代碼的開發(fā)人員會立即得到提示,并馬上投入到修復工作中去。

實際部署

Rossi在Facebook公司中的工作臺由以下設備構(gòu)成:一臺30英寸戴爾顯示器、一臺Mac筆記本電腦以及一臺分屏顯示器。上周二,我花了一整天時間觀察Rossi的日常工作內(nèi)容,發(fā)現(xiàn)他的大部分工作都是在瀏覽器以及終端窗口中完成的。在準備部署更新之前,他在終端窗口發(fā)出指令,正式啟動本次升級流程。

我們一同關注著Facebook網(wǎng)絡系統(tǒng)監(jiān)控工具所顯示出的各項狀態(tài)指標。網(wǎng)頁的主體內(nèi)容是個大大的進度條,標明企業(yè)內(nèi)部已經(jīng)成功完成二進制文件更新的服務器所占的百分比。隨著更新的自動部署,進度條也在不斷向終點推進。過程中,進度條左端出現(xiàn)了窄窄的紅色提示條,意味著新版本在更新時發(fā)生錯誤的系統(tǒng)比例。

Rossi告訴我,這種系統(tǒng)更新失敗的情況經(jīng)常發(fā)生。在部署過程中,升級失敗往往是由硬件問題所引發(fā)。舉例來說,如果某臺服務器的存儲容易不足或者運行種子文件時遭遇網(wǎng)絡問題,那么更新很可能無法完成。不過出錯的服務器數(shù)量一般都很小,只需簡單調(diào)整即可恢復正常,幾乎不會惹出什么大麻煩。

盡管軟件的部署對象是服務器,但Rossi告訴我Facebook的架構(gòu)仍然會對更新過程產(chǎn)生一些獨特的影響。Facebook在設計之初要求用戶會話能夠不依賴于任何特定的服務器設備,以分布式程度極高的無地區(qū)差形式進行運作。也就是說,F(xiàn)acebook基礎設施中的任意一臺服務器都能夠處理任何給定的頁面操作請求。

這種方式為全局系統(tǒng)提供了異乎尋常的彈性。當Facebook執(zhí)行更新時,工作人員不必擔心用戶會話的狀態(tài)會受到干擾或進行遷移。部署系統(tǒng)會在服務器端分批對Facebook執(zhí)行流程加以重啟,這樣一來整個更新過程就能夠以無縫化形式進行。無論是已經(jīng)完成更新的還是仍然運行著舊版本系統(tǒng)的服務器,都能夠繼續(xù)處理接收到的用戶頁面請求,而與此同時企業(yè)基礎設施的全面更新也在有條不紊地進行當中。

Facebook在更新與正常業(yè)務同時運轉(zhuǎn)的情況下,系統(tǒng)設施將幾乎處于滿負荷狀態(tài)。通常情況下,F(xiàn)acebook典型更新在部署中不需要預設停機時間,也絕不會引發(fā)任何形式的網(wǎng)站服務中斷現(xiàn)象。Rossi指出,無停機更新流程是Facebook交付工作策略中的一項原則性要求。他為此感到自豪,并認為這是對網(wǎng)絡軟件工程工作優(yōu)秀與否的一種檢驗。

事后檢查

更新流程徹底結(jié)束之后,Rossi還需要做進一步審查,以確保系統(tǒng)變更沒有對任何層面的原有內(nèi)容造成破壞。他的團隊為此專門打造了一套先進的分析工具,其作用是追蹤Facebook網(wǎng)站的各項運行狀態(tài)。工具的主儀表板上的線形圖顯示出各檢測指標的變化情況,包括流量、資源消耗、產(chǎn)品獨立組件故障率以及其它各種重要數(shù)據(jù)。

關注這些系統(tǒng)狀態(tài)的浮動與走勢,能夠有效幫助工程人員辨別并修正系統(tǒng)中出現(xiàn)的問題。在故障發(fā)生之初,技術(shù)人員能夠快速將當前數(shù)據(jù)與歷史記錄進行比照,并輕松準確地查明問題出在哪里。交付工程團隊及其它Facebook工程小組會在更新結(jié)束后繼續(xù)嚴密留意網(wǎng)站的運行狀態(tài),以確保一切項目及功能仍然運轉(zhuǎn)良好。

一旦發(fā)現(xiàn)問題,例如系統(tǒng)中的某部分出現(xiàn)不合理的高故障率,那么企業(yè)中的工程師們將立即開始對錯誤日志進行深入分析,以找出問題發(fā)生的根源。Facebook所使用的內(nèi)部工具非常犀利,在它的幫助下技術(shù)人員可以很輕松地觀察并分析日志內(nèi)容,并將結(jié)論與代碼變更及特定錯誤提示相結(jié)合,最終拿出一套最為簡潔高效的修復方案。

Facebook所使用的內(nèi)部監(jiān)控工具能夠追蹤大量數(shù)據(jù)源,甚至連與Facebook相關的tweet消息也涵蓋在內(nèi)。通過收集與匯總,該工具將分析結(jié)果以單獨的走勢曲線圖進行表示,直觀展現(xiàn)了網(wǎng)絡用戶對Facebook正面與負面評價的所占比例及變化。這一點非常重要,因為當我們在某種社交網(wǎng)絡中遭遇技術(shù)缺陷或應用故障后,很可能會在其它網(wǎng)站上大肆抱怨以發(fā)泄怒氣。對這類內(nèi)容保持關注,就能幫助Facebook的技術(shù)人員迅速掌握那些可能被自己忽略掉的系統(tǒng)故障。

根據(jù)我的觀察,當天的更新流程非常順暢,沒有出現(xiàn)任何技術(shù)問題或系統(tǒng)故障。日志消息的圖表中曾經(jīng)顯示某個系統(tǒng)組件出現(xiàn)了小小的負載高峰,但通過Rossi及其團隊的及時追蹤及排查后,發(fā)現(xiàn)一切都屬于正?,F(xiàn)象。

[[66540]]

Facebook公司交付工程團隊在慶祝“一周一度“的更新成功

回檔是失敗者的行為

盡管在我的采訪過程中并沒有出現(xiàn)什么亂子,但Rossi還是非常熱心地滿足了我的好奇心。這個問題其實也一直在困擾著我:一旦更新過程發(fā)生故障,F(xiàn)acebook會怎樣處理?他的回答是,如果在更新結(jié)束后有一大堆錯誤暴露出來,交付工程團隊將與相關開發(fā)人員通力合作,力爭在最短的時間內(nèi)解決這一問題。當修復方案準備就緒,Rossi的團隊將立即將其投付部署,并組織新一輪更新。

當某些錯誤太過嚴重時,快速修復幾乎是不可能完成的任務。因此我問他此前有沒有將網(wǎng)站恢復到舊有版本的經(jīng)歷。但他的回應斬釘截鐵:“回檔是失敗者的行為!“

不過他又微笑著補充道,事實上他確實也執(zhí)行過系統(tǒng)回檔。Facebook擁有一套合理的機制,能夠快速高效地將系統(tǒng)恢復到上一個版本,但他們只將此作為最后一項保障性手段使用。每臺服務器中都保存著上一個版本的二進制文件,并能夠在絕對必要的情況下立刻進行切換。

他告訴我,對于Facebook這樣的大型社交網(wǎng)站而言,進行系統(tǒng)回檔就像拉下火車上的緊急剎車一樣;這么做并不可取,因此除非別無選擇,否則他們絕對不會嘗試。在他就職于Facebook的數(shù)年中,系統(tǒng)回檔的情況也只碰上過幾次。

Facebook的測試機制以及開發(fā)人員問責理念有效防止了代碼編寫工作中出現(xiàn)嚴重錯誤的機率。當開發(fā)人員的代碼破壞了網(wǎng)站架構(gòu)時,他們不僅需要立即投入修復工作,還必須承擔績效評估及人事變動等層面的懲罰。Facebook公司中的代碼歸屬與開發(fā)人員緊密相聯(lián),因此根本不用指望在捅出婁子之后仍然高枕無憂。

該公司所使用的內(nèi)部工具具備一種標志性的Facebook式靈感,而Rossi也對這種評估機制贊不絕口。這是一種評分工具,它賦予了Facebook公司中每位員工一定的“karma”值,這一佛教用語通俗一點來說可以看作是“善惡值”。善惡值與代碼審查系統(tǒng)直接掛鉤,每位開發(fā)人員在網(wǎng)頁儀表板中都擁有自己的狀態(tài)欄,Rossi可以通過點擊欄中的“頂”或“踩”圖標來提升或降低對應員工的善惡值屬性。

在Rossi的工具中,表示“頂”的功能圖標與Facebook社交網(wǎng)站中的那個完全一致。而表示“踩”的圖標則正好是把“頂”的圖形上下倒置。Rossi不無得意地向我展示了他的圖標,并開玩笑說他是世界上惟一一個能使用Facebook式“踩”圖標的家伙。

善惡值的設定能夠幫助Facebook公司時刻掌握員工的工作狀態(tài),不過在代碼審查過程中,評分機制同樣能夠幫上大忙。在對更新代碼進行整體整合時,Rossi能夠一目了然地發(fā)現(xiàn)哪些代碼是由“善惡值”較低的技術(shù)人員所編寫,這樣他就會對這些代碼格外關注,因為這幫家伙出錯的潛在風險更高。

善惡值較低的員工可以通過自身的良好表現(xiàn)及工作態(tài)度逐漸提升這項評分——不過也有些人冥頑不靈,他們居然打算通過給Rossi帶小點心的方式讓他放自己一馬。不過最令人驚訝的是,Rossi真的認同了這一做法。他告訴我,酒和蛋糕是員工恢復善惡值的首選禮品。說到這里,他又指了指交付工程團隊辦公室中那令人印象深刻的酒水儲備:其中很大一部分就來自犯了錯的開發(fā)人員。

[[66541]]

Facebook公司交付工程部門中的Hotfix吧——以酒補過,原來這才是hotfix的真正含義

發(fā)展前景

我與Rossi探討了他對于發(fā)展前景,尤其是Facebook的部署策略在企業(yè)技術(shù)基礎設施發(fā)生變化之后的預期走勢。他認為,隨著時間的推移,他的團隊在工作效率方面將進一步提高:準備過程、構(gòu)建工作以及部署耗時等項目都還有潛力可挖,到時候整套更新任務可能幾分鐘就能搞定。

目前Facebook最重視的開發(fā)工作之一是推出一個能夠取代HipHop轉(zhuǎn)譯器的新型后備項目。Facebook公司的開發(fā)人員正在創(chuàng)建自己獨有的字節(jié)碼格式及自定義運行環(huán)境,他們將其稱為HipHop虛擬機,并希望它能成為支持Facebook運行的下一代平臺。這一項目完成之后,該企業(yè)將能夠把PHP源代碼編譯成能夠為虛擬機直接運行的字節(jié)碼。

如此一來,托管代碼模式將更接近于Java及.NET,這樣的進展能夠讓Facebook在保證代碼一致性的前提下進一步提高系統(tǒng)靈活性。拋開其它各類優(yōu)勢不談,Rossi告訴我這種態(tài)勢將對現(xiàn)有部署流程產(chǎn)生重大影響。過去每一次更新都必須在所有服務器上傳輸1.5GB體積的二進制代碼庫,而未來他們只將與修改內(nèi)容相關的字節(jié)碼發(fā)出即可完成更新。Facebook網(wǎng)站甚至有能力將更新字節(jié)碼與正處于運行狀態(tài)的應用程序直接拼接,這樣連進程都不必重新啟動了。

一旦上述理想能夠成為現(xiàn)實,整個大規(guī)模更新流程將能夠在數(shù)分鐘內(nèi)完成,而Facebook也就可以借此徹底拋棄以往的更新時間表,真正按照開發(fā)思路將增量部署納入變更模式之中。在這種情況下,企業(yè)開發(fā)人員則獲得史無前例的高度敏捷性。

在周二例行的關鍵性更新結(jié)束之后,Rossi和他的團隊開始對系統(tǒng)加以分析,以確保更新工作沒有引發(fā)任何問題。當一切圓滿結(jié)束之后,他們在hotfix吧舉杯暢飲以示慶祝。

歡樂的時光總是過得特別快,在結(jié)束了一天的采訪、再次漫步在Facebook園區(qū)的黑客之路上時,我不僅慨嘆默默無聞的“交付工程團隊”在扶持Facebook順利發(fā)展的道路上起到了如此巨大的作用。

Facebook盡心竭力所打造出的社交平臺,讓我們每一位普通使用者得以在其中分享過往閱歷、記錄當年點滴,這不禁令人心生景仰。而在這喧鬧繁華的平臺背后,卻有著這樣一群從未出現(xiàn)在燈光下的技術(shù)人員。他們擁有強大的知識背景,創(chuàng)造著與大多數(shù)人不一樣的奮斗故事。希望大家記得,正是由于這些個性鮮明、可敬可愛的人們的存在,F(xiàn)acebook才能始終光輝耀眼、獨領風騷。

原文:Exclusive: a behind-the-scenes look at Facebook release engineering

 

責任編輯:yangsai 來源: 51CTO.com
相關推薦

2012-05-12 00:51:49

Linux運維趨勢Facebook交付

2010-08-16 16:21:04

服務器Twitter

2017-02-27 18:28:45

持續(xù)交付部署

2010-07-19 08:41:56

Facebook

2023-02-07 08:21:05

團隊前后端架構(gòu)

2023-05-15 10:08:15

人工智能軟件交付工具

2023-08-09 19:03:21

數(shù)字化離岸交付

2014-04-16 13:34:19

Facebook數(shù)據(jù)中心

2013-10-10 09:55:28

Facebook數(shù)據(jù)中心傳統(tǒng)廠商

2022-08-03 09:48:48

敏捷交付框架

2012-12-07 09:15:05

vFabricApplicationDirector

2023-05-12 15:07:40

測試開發(fā)

2009-07-24 08:54:32

Windows 7版本發(fā)布RTM

2010-02-07 14:54:13

Android

2011-10-08 10:43:06

軟件工程

2023-11-08 17:19:21

平臺工程架構(gòu)設計

2018-04-24 09:00:00

開發(fā)自動化軟件架構(gòu)

2012-08-20 13:38:09

Facebook數(shù)據(jù)中心

2011-04-26 09:18:53

FacebookPHPmysql

2010-06-23 14:20:06

eMule協(xié)議
點贊
收藏

51CTO技術(shù)棧公眾號