當前位置:
首頁 > 科技 > Facebook 運行在 AWS上1 年成本約為 59.7 億美元!

Facebook 運行在 AWS上1 年成本約為 59.7 億美元!

作者|SQLizer 官方博客

譯者|大愚若智

Facebook 大約在 2004 年成立,隨著逐漸成為美國五大科技巨頭之一,他們的基礎架構也由大學寢室里的一台伺服器發展成為遍布全球的七個定製數據中心。隨著 Facebook 預計用戶數將增長至 19.4 億,他們很有可能還在規劃新的數據中心。

最近公布了一則消息:Snap 分別與 Google Cloud Platform 和 AWS(Amazon Web Services)簽署價值 20 億和 10 億美元訂單,這使得我們不禁好奇,以 Facebook 如此龐大的規模,能否在 AWS 之上運行。

為了回答這個問題,我們從四個方面來考慮:

伺服器容量

伺服器硬體性能

軟體

成本

請注意,我們考慮的不是 Facebook 是否應該遷移至 AWS,只是在探討這樣做的可行性。

伺服器容量

由於 Facebook 已經很久沒有公布過準確的伺服器數量,很多人根據流傳的假設進一步進行了猜測。不過這裡肯定水分不少。

Facebook 到底有多少台伺服器?

早在 2012 年,Data Center Knowledge 估計 Facebook 共有 180,000 台伺服器。這個數值基於 2010 年發布的一組數據,通過這組數據精確計算得知,Facebook 在 2010 年共有 60,000 台伺服器。假設 2012 年的估值是準確的,那麼 Facebook 的伺服器數量增速已經遠遠超過了摩爾定律。

Facebook 的用戶增長情況,來源:The Next Web

我們想知道 Facebook 在五年(2012-2017)後的今天有多少台伺服器。為了獲得儘可能精確的估值,我們進行了三種計算。

計算一:每伺服器用戶數

首先通過「每伺服器用戶數」來計算 Facebook 的伺服器數量。

2012 年,Facebook 用戶數 10 億,共有 18 萬台伺服器。1,000,000 用戶 / 180,000 伺服器 = 5,556 用戶每伺服器

2017 年,Facebook 用戶數接近 20 億。2,000,000 用戶 / 5,556 用戶每伺服器 = 360,000 台伺服器

此外還需要考慮,Facebook 不僅用戶數翻倍,每個人生成的數據量也增加了:照片、視頻、直播等。另外現在 Facebook 還運營著 Instagram,那麼伺服器數量再翻一倍吧。

360,000 * 2 = 720,000 伺服器

按照這個計算方式,Facebook 在 2017 年擁有的伺服器數量約為 72 萬台。

計算二:每伺服器營收

接下來通過「每伺服器營收」來計算他們的伺服器容量。

2012 年,Facebook 營收為 50.89 億美元。將 2012 年的營收除以 2012 年的伺服器總量,那麼每伺服器營收為 2.8 萬美元。5,089,000,000 美元營收 / 180,000 伺服器 = 28,272 美元營收每伺服器

2016 年,Facebook 營收為 276.38 億美元,將其除以 28,272 美元,那麼就是 977,575 台伺服器。27,638,000,000 美元營收 / 28,272 美元營收每伺服器 = 977,574.98 台伺服器

按照這個計算方式,Facebook 在 2017 年擁有的伺服器數量約為 97.8 萬台。

計算三:每伺服器對應的員工數

這個方式將使用員工數來計算伺服器容量。、

2012 年,Facebook 有 4,619 名員工,平均每位員工對應約 40 台伺服器。180,000 伺服器 / 4619 員工 = 38.96 台伺服器每員工

2016 年,Facebook 有 17,048 名員工。按照每位員工 40 台伺服器來計算,約有 681,920 台伺服器。17,048 員工 * 40 伺服器每員工 = 681,920 台伺服器

按照這個計算方式,Facebook 在 2017 年擁有的伺服器數量約為 68.2 萬台。

不同數量之間的差異

三種計算方式的區間為 296,000。

978,000 - 682,000 = 296,000

取中間值並將其作為我們最終的數量。

296,000 / 2 = 148,000

682,000 + 148,000 = 830,000 或 978,000 - 148,000 = 830,000

所以我們估計 Facebook 在 2017 年共有 830,000 台伺服器。

AWS 又有多少台伺服器?

AWS 的全球基礎架構,來源:AWS

AWS 可以按照下列方式分解:

地區 – 一個完整包含的地理區域(如「歐洲」或「美國西部」)。

可用區域(AZ) - 地區內由一個或多個數據中心組成的不同區域(如「倫敦」或「俄勒岡」)。

數據中心 – 基本上就是一種大面積,造價高昂的倉庫,每個數據中心承載 5 萬至 8 萬台伺服器。

截止 2017 年,AWS 共有:

16 個地區(還有 3 個在建)。

42 個 AZ(新地區上線後還將增加 8 個)。

相關信息可參閱 AWS 全球基礎架構介紹。

假設平均每個數據中心有 6.5 萬台伺服器,平均每個 AZ 有 1.5 個數據中心,那麼伺服器的總數為 409.5 萬台。四捨五入一下,假設 AWS 共有 410 萬台伺服器。

(42 AZ×1.5 個數據中心) * 65,000 台伺服器 = 4,095,000

2014 年,Enterprise Tech 進行過類似的計算(不過是基於 28 個 AZ,但道理是相通的),最終估計的伺服器數量介於 280 萬到 560 萬台之間。他們的估算中,每個 AZ 包含三個數據中心,如果這個假設是準確的,那麼 AWS 在全球範圍內可能會有超過 800 萬台伺服器。

伺服器凈容量

在伺服器凈容量方面,根據上文(可能不準確的)計算,AWS 規模是 Facebook 的 5 倍。

Facebook 需要 83 萬台伺服器

AWS 有 410 萬台伺服器

4,100,000 / 830,000 = 4.939

補充說明:上述計算並未考慮 AWS 目前的容量局限。AWS 的日常運營有多少預留容量?AWS 是否有 20% 的預留容量可以分配給 Facebook?我們打算忽略這些問題,直接假設 AWS 可以完全容納 Facebook 目前的需求,但可能要犧牲靈活性作為代價。

為了滿足未來對伺服器的需求,Facebook 和 AWS 都在伺服器基礎架構方面進行持續不斷的投入,因此可以認為,未來的 AWS 也足以承載未來的 Facebook。

在伺服器凈容量方面,Facebook 有可能託管在 AWS 上嗎?

很可能是可以的。

伺服器硬體性能

不能直接假定 AWS 與 Facebook 的伺服器性能是相等的,因此還要考慮伺服器性能的問題。Facebook 在伺服器基礎架構方面已經投入了數十億美元,隨著規模逐漸增長,他們經歷了一台筆記本充當伺服器,從第三方租用伺服器,再到自建數據中心的過程。當他們開始自行設計並構建數據中心時,拆箱即用的解決方案就不再適合了。

Facebook 在建的沃斯堡(Fort Worth)數據中心,來源:DataCenter

Knowledge

Facebook 七個數據中心在各方面都以最大化性能和效率為設計目標。從數據中心整體設計到各種細節,例如伺服器機架和晶元,一切都是定製的。

「為了優化成本,我們淘汰了你能在標準伺服器上看到的大部分組件」,Facebook 伺服器的設計者 Amir Michael 在 2009 年這樣說過。

「我們拆掉了所有沒用的東西,只保留最必要的。」

2011 年,Facebook 開源了自己有關數據中心和伺服器的全部設計,藉此表達對高效率設計的熱愛。隨後還有很多人對該項目做出了貢獻,包括 Google。這些舉措也推動了硬體成本的進一步降低,開始有第三方製造商生產相關組件,進一步降低了定製化數據中心的建設成本。你可以訪問 Data Center Knowledge 查看完整的 Facebook 伺服器硬體清單。

因此 Facebook 現有的伺服器基礎架構已經得到了大幅優化,可以幫助 Facebook 儘可能高效地運營。例如,他們在伺服器場中開闢了一塊單獨的「冷存儲」,專門用來保存不再有人查看的照片和視頻(通常都是 10 年前上傳至 Facebook 的內容)。只有在有人想要查看這些照片或視頻時,才會「喚醒」這種存儲設備。

Facebook 多年的專精化運營與 AWS 截然不同,AWS 的存儲在設計上就需要考慮不同用途(高負荷)的使用。但是與 Facebook 和 Google 類似,Amazon 也自行設計硬體。

「沒錯,我們會自己製造伺服器,」Amazon CTO Werner Vogels 說:「我們會通過自行製造的定製化存儲和伺服器滿足這些(重量級)工作負載的需求。我們還與 Intel 合作製造以更高時鐘頻率運行的自用處理器。」

雖然 AWS 可能顯得更加通用化,不過他們伺服器的實際表現不可能比 Facebook 差。然而關於專用化以及效率,大家有很多不同看法,這些大型科技公司為什麼要這樣做?假設真的要遷移,為了能通過 AWS 獲得與自己數據中心類似的性能,Facebook 很有可能需要更多伺服器。為了體現這種因素,並在缺乏實際數據的情況下進行對比,我們假設 Facebook 遷移後需要的伺服器數量會比目前增加 10%,因此伺服器的數量將增至 91.3 萬台。

830,000 * 1.1 = 913,000

Facebook 的普萊斯維爾(Prineville)數據中心內部,來源:DataCenter Knowledge

另外還要注意,Facebook 正打算將 WhatsApp 從 IBM 平台遷出,轉移至自己的伺服器上運行。WhatsApp 目前使用了 700 台裸機(類似於 Facebook 的)高端 IBM SoftLayer 伺服器,這些伺服器基本上可以提供與 Facebook 自有硬體類似的性能。但相比我們之前討論的一切,這個數字(700!)實在是微不足道,那麼可以假設這方面未來的增長完全可以包含在他們未來的擴展計劃中。

遷移?

現實中,Facebook 完全不可能遷移至 AWS。因此這次開腦洞的過程並不考慮有關遷移的具體過程,我們只是想探討一下這樣做的可行性。實際上本文全文都基於這樣的一個假設:Facebook 從開始自建基礎架構的第一天開始就選擇託管在 AWS,結果將會怎樣。

權且假設我們在一個平行宇宙中,那麼遷移到 AWS 的工作是否順利,需要多久?Facebook 在 2013 到 2014 年間將 Instagram 從 AWS 遷移到了自己的伺服器上,整個過程用了一年,並且無人察覺。結合這件事來考慮,我們應該也可以在最終用戶毫無察覺的情況下進行反向遷移。

然而…… 我們要遷移的可是整個 Facebook,還包括 Instagram,因此整個過程肯定需要更長時間。相比這種理論上的遷移,Instagram 的遷移規模就小太多了,更無須說之前遷移後 Instagram 的規模也擴大了不少。另外別忘了 Netflix,他們花了八年才徹底遷移至 AWS。八年啊!

基於這些假設和猜測,遷移過程應該會很順利,但可能需要多年時間才能完成。

伺服器硬體性能

AWS 和 Facebook 都在定製數據中心、伺服器設計,以及實施方面進行了大量投入。在所有設計均已開源的情況下,這兩家的伺服器性能很可能不相上下。

我們認為 AWS 可以很輕鬆地提供 Facebook 所需的計算能力和性能。但因為 AWS 無法滿足 Facebook 某些特殊需求,因此還需要保留一些餘量。Facebook 用 830,000 台自有伺服器可以做到的事情,換成 AWS 的伺服器可能需要 913,000 台。

AWS 能提供 Facebook 所需的伺服器性能嗎?

極為可能毫無問題。

軟體

Facebook 曾經(並且目前依然)使用 OSS(開源軟體)進行開發。與其他公司類似,他們的增長速度飛快,以如此大的規模來說,通常都需要自行開發定製工具,或對現有工具進行大量修改才能滿足自己的需求。

他們依然使用 PHP 開發應用程序代碼,但為了提高性能,Facebook 開發了 HipHop Virtual Machine(HHVM),藉此通過即時編譯(JIT)的方式編譯 PHP 代碼。這意味著 Facebook 的代碼可以通過配合使用 HHVM 和 nginx 的方式來運行。Facebook 的整個網站運行在 HHVM 之上(桌面、API、移動),開發和生產環境均是如此。而這恰恰就是定製化的軟體。

感覺上,AWS 與 PHP 和 HHVM 的關係讓人擔憂。但在 Facebook 自己的 HHVM GitHub 代碼庫中,有一個鏈接指向了 HHVM for AWS Linux 伺服器。因此我們可以假設 Facebook 可以成功地在 AWS 上運行 HHVM,進而運行自己的網站。

但是資料庫呢?數據存儲方面,在 SQL 與 NoSQL 對戰中有一個臭名昭著的例子:Facebook 對 MySQL 進行了大刀闊斧的改動,用於存儲自己的時間線數據,同時依賴 memcached 實現快速交付。有關 Facebook 的伸縮,建議閱讀 High Scalability 的相關文章。Facebook 定製版 MySQL 的規範可參閱這裡。

Amazon RDS(Relational Database Service)可以滿足要求嗎?有很多科技巨頭都在使用 Amazon RDS,最著名的就是 Netflix。也許可以認為,如果 Netflix 以及他們公司的所有視頻都可以成功地通過 RDS 運行,那麼 Facebook 也可以?答案無法確定,不過 Facebook 的 MySQL 集群是極為龐大的,簡單地遷移很可能根本無法滿足需求。為了處理自己的負載,他們甚至創建了自己的 MySQL 分支!

目前 Facebook 也已構造出極為全面的技術棧。他們的 GitHub 代碼庫足以證明這一點。這不免讓人更擔心他們的基礎架構與 AWS 的兼容性問題。

這一過程到底會有多難,Netflix 的例子也許是最好的證明,隨著遷移至分散式雲環境,他們需要重建大部分技術組件。

AWS 能夠支持 Facebook 龐大的軟體環境和複雜的數據需求嗎?

也許可以,但幾乎可以肯定這樣做會讓性能大受影響,Facebook 甚至可能需要構建一個新的系統。

將 Facebook 託管到 AWS,成本會有多高?

注意:這可能是本文準確性最差的內容。雖然 AWS 提供了豐富的成本計算方法,但我們無法獲知 Facebook 對數據存儲和計算的實際需求。再次提醒,這些數據完全基於猜測。

我們好奇的最後一個問題:成本。雖然 AWS 已經幫助無數公司快速低成本地縮放,但他們中的絕大部分永遠無法達到 Facebook 的規模。以 Facebook 的規模來說,自建基礎架構可能更便宜(他們也正是這樣做的,但我們就是想開個腦洞 ^.^)。

在使用 AWS 自己的成本計算器進行計算前,先來看看一些全球化產品在雲計算方面的成本。

Snapchat 的 IPO 文件中提到,Snap 公司計劃在 5 年裡向 Google 支付 20 億美元,同時向 AWS 支付 10 億美元。也就是說,每月 5 千萬美元。如此巨大的數字讓技術界有些吃驚,甚至有人編出了「支付高額費用存儲並處理很快會被銷毀的內容」這樣的段子(譯註:Snapchat 是一種「閱後即焚」應用,用戶發送的文字和圖片等內容會在收件人查看之後立刻銷毀)。

上文曾經提到,WhatsApp 依然託管在 IBM 的公有雲伺服器上,但 Facebook 計劃儘快進行遷移。然而目前 WhatsApp 的託管成本依然高達每月 2 百萬美元。對於一個只使用了 700 台伺服器的應用來說,這個成本實在是有點高。

我們可以假設 Facebook 的用量需求遠高於 WhatsApp 和 Snapchat 的總合。

成本計算

下列計算較為簡單,基於 1,000,000 台伺服器,這些伺服器分別運行 EC2 計算、Amazon S3、Amazon RDS,以及照片和視頻等數據的存儲和傳輸任務,每月傳輸的數據流量為 1,256.5PB(1,256,500TB)。

計算中假設:

每天上傳 3 億張照片,平均每張照片 4MB。

每天上傳 1 億小時的視頻,平均每個視頻 200MB。

這些計算即不精確也不嚴謹。如果你有更好的計算方法,歡迎自己試一試!原始的 AWS 成本計算結果可參閱這裡。

隨後開始計算:

Amazon EC2

計算:Amazon EC2 實例(用於運行 PHP 代碼等內容)

實例:713,000 個

每月 100% 利用率

r3.2xlarge 實例上運行 Linux

3 年全額預付

Amazon S3

存儲(照片和視頻)

數據傳輸

區域間數據傳出:314125

數據傳出:628250

數據傳入:1256500

數據傳出至 CloudFront:1256500

Amazon RDS

Amazon RDS On-Demand DB 實例(用於運行 Facebook 的時間線)

資料庫實例:200,000 個

每月 100% 利用率

資料庫引擎和許可:MySQL

實例類型:db.r3.2xlarge

部署:多 AZ

存儲:常規用途,1TB

數據傳輸

區域間數據傳出:500TB

數據傳出:500TB

數據傳入:500TB

區域內數據傳輸:500TB

總額

一次性全額支付(3 年期預付):3,933,846,000.00 美元(39 億)

一次性全額支付分攤至 36 個月:每月 109,273,500.00 美元(1.09 億)

排除一次性支付,額外的月成本:389,020,939.96 美元(3.89 億)

月總成本:109,273,500.000 美元(1.08 億)+ 389,020,939.96 美元(3.89 億) = 498,293,439.96 美元(4.98 億)

年總成本:5,979,521,279.52 美元(59.7 億)

理論上,如果託管在 AWS 上,Facebook 每年的成本高達 59.7 億美元。

巨頭 Facebook

年營收超過 280 億美元,總市值 4340 億美元,全球用戶數超過 19.4 億的 Facebook 無疑有著龐大而複雜的基礎架構。有人預計 Facebook 在 2012 年時的自有伺服器基礎架構價值已高達 40 億美元,目前這一數字很可能已經翻了三倍達到 120 億美元。

然而每年 59.7 億美元的託管成本已經遠遠超過 Facebook 在 2017 年時的「營收成本」(3,789,000,000 美元),這個成本已包含數據中心以及其他方面的運營成本。

另外需要注意,假設估算的 AWS 價格可能並非 Facebook 需要支付的。與 Snapchat 和 Netflix 類似,Facebook 也是有很大影響力的重量級用戶,因此有能力協商並獲得更低的價格。

Facebook 能夠支付 AWS 託管費用嗎?

可以,但這樣更貴。

Facebook 有可能託管在 AWS 上嗎?

我們永遠不可能知道這種開腦洞的假設是否準確,但可以這樣看:

在伺服器凈容量方面,AWS 應該可以滿足 Facebook 的需求。

伺服器硬體的性能也許並非最優,但只要使用更多伺服器獲得更強計算能力就可以解決。

軟體部分最麻煩。需要考慮 Facebook 能否簡單地將現有基礎架構直接移植到 AWS。雖然有可行的解決方案,但可能需要在 AWS 現有基礎架構的基礎上構建新的系統。這樣的做法不僅痛苦,而且不太可行。但如果 Facebook 在 2010/2011 年就選擇託管到 AWS,那麼可能已圍繞 AWS 構建了自己的技術,這種情況下軟體本身不再是問題,但依然棘手。

Facebook 可以付得起託管費用,但相比目前的成本會高很多。

毫無疑問,這些結論都是錯的,因為我們無法獲得計算所需的數據。但是……

根據本文進行的計算和得到的結果,理論上可以將 Facebook 託管到 AWS 嗎?可以,完全可以。

閱讀英文原文:Is it possible to host Facebook on AWS?

點擊展開全文

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 雲頭條 的精彩文章:

十大數據中心公司:Equinix第一,中國電信第三
GoDaddy年底將關閉公共雲服務
烽火完成高性能、高集成度、更節能、易用性更好的Purley新平台伺服器研發
IC Insights:今年全球存儲晶元銷售將創歷史新高

TAG:雲頭條 |

您可能感興趣

Facebook在韓被罰39.7萬美元
IAB:2017年美國數字廣告營收上升21%達到880億美元,Google、Facebook是營收驅動力
Facebook賺翻了:6年前10億買下Instagram,目前達1000億美元
Facebook盤前暴跌19% B站跌5.54%
Facebook 四天內已損失520億美元
Facebook在2018年對Oculus總部投資了超8000萬美元
Facebook宣布新Oculus 5月21日上市,售價399美元
Facebook 2018年Q1凈利增63%
Facebook股價上漲4.2%
Facebook旗下Oculus Go 2018年將會賣出180萬台
Facebook F8大會看點;Carvana以2200萬美元收購Car360
Facebook Q2凈利潤51.06億美元,同比增長31%
Facebook第一季度凈利24.29億美元 同比下滑51%
3500萬美元:Facebook IPO信息……
FAANG三周累計蒸發3970億美元,Facebook、蘋果、亞馬遜怎麼了?
Facebook第二季度凈利潤21.16億美元 同比下滑49%
Facebook 和 Alphabet 年薪中位數逾 20 萬美元
入門款SurfaceBook2下架 起售價飆升至1499美元
Facebook第四季度凈利潤為42.7億美元 月均活躍用戶數21.3億
Instagram最新估值超1000億美元 是Facebook收購價的100倍