本周,Facebook讓一群記者參觀了它位于俄勒岡州普賴恩維爾市的數據中心,在這個過程中也展示了他們的一個移動應用測試實驗室,用來測試Facebook app、 Messenger 和Instagram。
目前 這個實驗室總共含有60個機架,每個機架上放置32臺移動設備,這樣整個實驗室擁有有將近2000臺移動設備。每個機架擁有自己單獨的Wi-Fi 信號,并配有電磁干擾附件,以確保周圍的機架不會相互擠占Wi-Fi 信號。
每次Facebook對自己的手機應用做出改變時,都會在這些設備上進行測試,確保沒有程序崩潰以及其他性能問題。為確保所有的測試都是可比較的,每一次測試完成之后,這些手機須全部重新啟動。
圖自:Techcrunch
這些移動設備包含了市面上常見機型,例如基本的三星 Galaxy 系列,以及最新版的iPhone系列。同時,這些手機也會運行各版本的操作系統,包含了 KitKat以來所有版本的安卓系統,以及 從 iOS 7 到 iOS 9。
另外,為了加載最新的代碼,所有手機都要連上PC和Mac Mini。分別對應安卓和iOS系統,一臺機架上可能配有4臺OCP Leopard服務器 或8臺Mac Mini(因為一臺Mac Mini 只能連接4臺手機)。
相比于在實體設備上測試,模擬器上測試更加容易,但是Facebook為什么選擇前者呢?
Facebook團隊成員解釋道,盡管在模擬器上可以弄清楚app產生錯誤的原因,但是它不能很好地測試性能,“比如說,我們并不能在模擬器上追蹤1%的性能回歸,所以我們選擇了實體設備測試。”
雖然Facebook沒有明確說明除了使用Chef這個服務器工具以外,他們是怎樣把最新的代碼加載到這些移動設備上的,但是工作人員提到這個實驗室來源于Facebook在CT-Scan領域里的工作(CT-Scan 是一種性能監測服務),或許我們從中能稍微得到一些線索。
在早些時候,工程師只在一臺設備上測試運行app,鑒于市場上多種多樣的手機和平板設備,這是不夠的,所以Facebook“生產工程”(Production Engineering)部門內的一個小團隊就開始著手組建這些機架。
圖自:Techcrunch
早期的這些機架構造十分簡單,都是用的金屬材料,這使得Wi-Fi 信號不能有效接收,從而造成整個系統運行不暢。之后員工們嘗試建造一面可以放置240部設備的墻壁,但那樣占的空間就太大了。
現在新版的機架不僅解決了Wi-Fi 信號問題,還增加了新功能--安裝了攝像頭,用來追蹤設備上的各種情況,然而工作人員好像還沒開始用這個功能。
接下來的一段時間,實驗室工作人員正試圖把每個機架上的設備數量增加到64個,同時讓代碼加載到移動設備的效率更快。然而可能更重要的是,Facebook正打算開源機架的設計,以及公開Chef的核心技術秘密。
當然,擁有同樣類型實驗室的并非只有Facebook一家。微軟、亞馬遜和谷歌都有開放的移動應用測試平臺,如果你要測試自己的app,任選一家就行。