開源、行動、大數據:Facebook 這 15 年對科技的巨大貢獻

評論
評論
Photo Credit: Reuters

原文來自 Wired《HOW FACEBOOK HAS CHANGED COMPUTING》,作者 KLINT FINLEY。 台灣康泰納仕集團授權提供,INSIDE 編譯。

在過去 15 年之間,Facebook 徹底改變了我們與朋友維持聯繫、也改變了我們看待隱私、跟家人互動的方式,以及沒那麼好的-接受、消費外國廣告的方式。但 Facebook 也為電腦科學做出巨大貢獻。從Netflix到Uber再到Walmart,我們每天使用的許多應用程式、服務,都是使用Facebook開發並跟全世界共享的技術所構建的。

隨著公司發展到容納數百萬,最終數十億名使用者,Facebook 必須自行設計數據儲存架構、資料中心硬體設計這些工具去滿足、處理多到令人難以置信的使用者資料。而最近,它還建立一套完整為行動 Web 與 APP 構建界面的設計語言。更重要的是,Facebook 並沒有將這些私藏起來。它釋出了大量的開源工作,意味著其他任何人都可以使用,修改和分享Facebook的成果。

「多年以來,Facebook一直是開源的巨大驅動力,並起樂於跟更多的社區共享許多關鍵技術,」Linux基金會執行董事Jim Zemlin說著。該基金會致力於開發 GraphQL,這是一種由Facebook發明的程式語言,用於處理現在許多其他公司使用的 APP 與伺服器之間的通訊。 

由於Facebook的開放性,其許多技術已赫然成為產業標準。「Facebook不僅在我們建構伺服器的方式上發揮了巨大作用,而且工程師們為瀏覽器和手機編寫程式法方面也做出更多貢獻,」Airbnb的技術長Adam Neary說。「整個網路生態有一大部分是由Facebook開創並隨後開源的技術推動的。」

大數據的誕生

Facebook對整個產業第一個重大貢獻是Cassandra,這是一個可以擴展到數百或數千台伺服器的數據庫系統。

Facebook並不是第一家建立這樣一個數據庫的公司。亞馬遜和 Google 發表過他們新型分散式數據庫的論文,但兩家公司並沒有真正發表這些內部應用程式的代碼。Facebook 工程師 Avinash Lakshman曾為亞馬遜的論文中工作過,他跟另一位 Facebook 工程師 Prashant Malik 一起把亞馬遜和Google的論文結合起來創建了Cassandra。然後在2008發表了代碼。很快這份代碼被用於其他公司,例如雲端運算公司Rackspace。

「他們不僅複製了Google和亞馬遜所做的那些創新,還加上不少自己獨到的創意,」Jonathan Ellis說著。他曾任 Rackspace員工並大量使用 Cassandra,後來還在 2010 年創了 DataStax 這間為企業客戶提供 Cassandra 相關服務的公司。

根據 DB-Engines 資料,今天 Cassandra 是世界上第 11 大的數據庫。Apple,Netflix,Instagram和Uber都是他們的使用者和技術貢獻者。

Facebook也是開源數據處理平台Hadoop的早期貢獻者,Hadoop幾乎成了大數據的代名詞。的確,Hadoop早期開發大部分基於 Google 所發布的技術,並由 Yahoo 所完成。但 Facebook 是 Yahoo 之外首批採用Hadoop並為該平台貢獻大量額外工具的公司之一。Hadoop催生了多家創業公司,如Cloudera,由前 Facebook 科學家 Jeff Hammerbacher 共同創立。

Facebook 近年來在人工智慧研究方面投入了大量資源去更有效地利用數據,並為這件事釋出大量職缺。差不多在 Google 開放其 AI 引擎 TensorFlow 的前一年 2015,Facebook 就開放了許多人工智慧算法成果再一個名為 Torch 流行人工智慧平台上。據電腦科學家傑夫·黑爾(Jeff Hale)的一項分析顯示,Facebook 正持續不斷為Torch 之後新一代平台 PyTorch 的開發提供資源。目前 PyTorch 已是第三大的人工智慧框架。

開放式資料中心

Facebook 光是有可處理​​數百萬使用者的軟體是不夠的。它還必須直接設計硬體設施來管理所有資料。

像是使用外部空氣冷卻而不是工業冷卻系統的「露天」資料中心,以及甚至是可以快速更換處理器和其他組件的「模組化」伺服器,這些異想天開的硬體儲存架構都是 Facebook 的主意。

Facebook還公開所有這些硬體設計作為開放式運算計畫的一部分,這計劃現在是一個獨立的組織了。Facebook在2011年宣布開放式運算當時飽受質疑,儘管那時開源軟體社群已經逐漸成熟,但那還有很多人不清楚Facebook的異想天開是否適用其他公司。但很快,像台灣廣達這樣的供應商開始銷售起了基於 Facebook 設計的系統,後來包括Rackspace,微軟和蘋果在內的其他公司也為這項計劃貢獻了自己的硬體設計。

今天,Facebook正在與愛立信和德國電信等電信公司合作開展計畫,以幫助他們建立新的開源電信基礎設施,其中包括名為ARIES的遠程天線系統以及一個稱為Terragraph的無線電塔系統。

完成拼圖

在其這十年的大部分時間裡,Facebook最廣泛使用的開源貢獻就是這些基礎設施。Netflix 可能使用Cassandra 來管理使用者在數據中心的資料,卻並不透過 Facebook 網站上程式碼進行互動。這種情況在2013年開始發生變化,Facebook 發布了一個開放源代碼的「庫」React,並且用它來跟其他許多公司、開發者分享,寫出看起來就像本機應用程式的Web界面。

React 花了一些時間才流行起來,但近年來它已超越了 Google 的框架 Angular,成為寫前端最廣泛使用的程式庫,。Airbnb,Netflix 和 Walmart 都使用 React。

編程教育網站 FreeCodeCamp 的創辦人 Quincy Larson 就說:「2015年我突然發現我在舊金山的朋友們開始放棄像 jQuery、Angular ,轉而投奔 React 的懷抱。」

這可能與 2015 年發布 React Native 有關。React Native 能讓開發人員直接使用 JavaScript ,同時建立原生 iOS 及 Android App。

Facebook 並不是第一個提供使用 Web 技術寫行動端 APP 工具的公司,也不是第一個提供構建 Web 應用程式開源庫工具的公司。但諮詢業者 Rightpoint 的創新長格雷格·賴茲(Greg Raiz)表示,將這兩種想法結合起來就會有力量。「我認為這是一個很完整的發展過程,」他說。「Facebook 的作法,剛好大大推動了網路行動化這個大哉問。」

評論