Facebook怎麼搬200億張照片,而網友完全無感?

Home / Paper / Facebook怎麼搬200億張照片,而網友完全無感?

你的Instagram照片不在原來的地方了。

今年春天,正當約2億使用者在手機上使用Instagram的時候,一支小型工程師團隊將該照片分享服務從亞馬遜建於2010年的雲端服務轉移到Facebook營運的一個數據中心。“使用者們仍在他們開始旅程時所坐的那輛車當中,”Instagram創辦人Mike Krieger對於照片搬家如是比喻道,「但實際上我們已經更換了車子的每一個組成部分,而人們全然不覺。」

“Instagration”

Facebook將該舉稱作“Instagration”(Instagram 遷移),它對於CEO Mark Zuckerberg 和該公司來說都是前所未有的舉動。Facebook曾將其它收購回來的資產(如FriendFeed)轉移到自己的數據中心,但那些通常都是些小計劃,關閉服務後就能將它們納入Facebook的世界當中。

而Instagration則堪稱一項龐大且廣受歡迎的服務的動態搬家。“期間Instagram服務不能出現任何的中斷。”Facebook工程師George Cabrera指出。Facebook並未透露在亞馬遜雲端平台上運行Instagram具體需要多少台虛擬機器,只是說「要數千台」。該服務如今的數字照片儲存量已經超過200億張。

對於Instagram來說,此舉可讓它更加高效地接入長期以來幫助驅動Facebook龐大線上帝國的一系列雲端工具。而對於負責營運Facebook全球數據中心網路的工程師來說,它是融合公司營運與公司未來收購回來的應用程式的一個樣板。

與此同時,Instagration也給整個科技社群上了一兩課。該社群正越來越多地在諸如亞馬遜AWS的雲端服務上打造應用服務——那未來有可能會轉移至私有數據中心的應用程式。Instagration的關鍵在於亞馬遜名為虛擬私有雲(以下簡稱“VPC”)的專用服務。

複雜工程

2013年4月,也就是Facebook斥資10億美元將Instagram收入囊中約一年後,該社群網路的工程副總裁Jay Parikh表示,公司計劃將Instagram轉移至其自有的設施。

該計劃就是在那個時候啟動。遷移工作耗時約一年,儘管那是項浩大的工程,但負責的人員並不多。在2013年Instagram有8名工程師負責它的基礎設施,後來該數字增長至20人。Krieger稱,在展開為時一個月的數據遷移之前,該團隊實際上準備了大半年時間。

2010年以來,Instagram一直放在亞馬遜EC2雲端服務。為了將Instagram無縫遷移至Facebook位於東海岸的一個數據中心,團隊先是創建支撐Instagram服務的軟體副本。該副本在Facebook設施上開始執行後,該團隊就可以實施數據移轉——其中包括200億張照片。

這一過程比想像中要復雜。它涉及開發一個橫跨Facebook數據中心和Instagram在亞馬遜雲端上運營的私有電腦網絡——安全遷移所有數據的最佳方案——但如果不將Instagram轉至亞馬遜雲的另一個部分,該團隊就無法創建這樣的網絡。換言之,Krieger的團隊要對Instagram進行兩次遷移。

首先,他們將Instagram轉至亞馬遜的APC——Krieger團隊用以在亞馬遜上創建擴展至Facebook數據中心的邏輯網絡的工具。創建該網絡尤其重要,因為它能夠讓Facebook完全控制Instagram運行機器使用的網絡地址。據稱,如果不將Instagram轉至APC,他們就無法自定義那些網絡地址,這意味著將軟件轉至自有數據中心期間會面臨無數的地址衝突。

然而,Instagration當中還有更加複雜的事情——先將Instagram從EC2遷移至VPC期間,該團隊還需要在那兩個環境中建立一個公用網絡。對此亞馬遜並不提供解決方案。因此,Facebook臨時開發了名為Neti的網絡化工具。Neti的意義在於,它是Instagration過程中的另一個重要步驟——這對於那些在亞馬遜和其它雲服務上開發服務的人來說是重要的一課。

VPC在Instagram 2010年創立時並不存在。現在,如果其它的創業公司一開始就在VPC上運行服務,它們就能夠免去Instagram遷移中的那些額外步驟。VPC還可以幫助滿足將基礎設施的一部分從雲端遷移至私有數據中心的需求。

真正準備好遷移軟件和數據後,克雷格團隊運用日益流行的Chef工具。該工具用於編寫自動化程序來在大量的機器上加載和配置數字內容。例如,他們編寫的程序會自動將相應的軟件加載到運行於亞馬遜VPC的機器上,接著他們使用類似的程序在Facebook數據中心內的機器上加載幾乎一樣的軟件。他們開發的程序一個是用於在Instagram的各個數據庫服務器上安裝軟件,一個是用於配置緩存服務器(用於加快熱門照片的推送等用途)。

轉移的意義

Instagram的最後一批軟件和數據於4月底登陸Facebook數據中心。4月中旬,Instagram出現服務中斷,波及全球各地用戶,但該公司稱該事件與其遷移無關。

如今,Instagram的專用機器都位於Facebook設施內。據Facebook工程師佩德羅·甘納胡帝(Pedro Canahuati)稱,這使得該服務的運行更加高效,它用到的服務器數量只有它在亞馬遜雲上的三分之一,Instagram和Facebook團隊也可以共享各種數據遷移技術,因而Instagram的“數據抓取”時間足足減少了80%。

該舉也意味著Instagram能夠更加輕鬆有效地連接運行於Facebook設施的其它服務,以及Facebook遍布全球各地的其它數據中心。另外,Facebook建立了大規模的海量數據分析系統,Instagram現在可以像其它Facebook內部服務那樣利用該“大數據”基礎設施。Instagram還可以利用Facebook的垃圾信息過濾工具。

然而,克雷格說Instagram並不與Facebook分享數據,比如Facebook不能利用你在Instagram上的行為習慣在它的社交網絡平台上精準投放廣告——反之亦然。

Instagration絕不尋常。在Netflix前云基礎設施負責人艾德里安·科克羅夫特(Adrian Cockcroft)看來,大家都在轉到雲端,而不是遷離。“要是你的公司有Facebook那麼大的規模,你會希望自建數據中心。”他說,“而大多數的小公司都不應該這麼做。”但由於規模不斷擴張,諸如游戲公司Zynga的一些公司將其運營的很大一部分從雲端轉到了私有數據中心。未來肯定也會有其它的公司這麼做——特別是那些被Facebook收歸門下的公司。

3592 全部 5 今日

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *

*