[QCon北京]Netflix高級工程師談Amazon EC2與devops
原創【51CTO專稿】在北美的視頻流網站當中,Netflix可以說是當紅炸子雞之一。1997年開始運作的Netflix在最開始的幾年一直以一種傳統的方式運作一個在線的視頻DVD租賃服務,后來著重發展基于用戶影評的推薦算法,從2008年開始著重發展在線視頻流的業務;從2009年開始,Netflix決心投入大量精力到移動互聯網大潮中,研發了iOS、Android、任天堂3DS、Nook等終端的客戶端。到2011年,Netflix的視頻流量已經占據北美web總流量的24%以上,排名第一。
在2012年4月的QCon大會上,筆者遇到了Netflix的高級軟件工程師Jason Brown先生,從他那里聽說了不少有趣的事情。Jason剛從QCon東京會場過來北京,分享的話題分別有關Amazon EC2和Cassandra在Netflix當中的應用。Netflix從2008年開始往Amazon EC2上遷移,就目前來看,說它是EC2的最大客戶可能也不為過。因此Netflix在使用公共云方面的經驗,對其他正在考慮云計算的企業而言應該會有不少可以借鑒之處。
Jason Brown簡介:Netflix高級軟件工程師,1999年在Ball State University獲得音樂碩士,之后開始接觸軟件分發工作,并逐漸發展為一名程序員。在加入Netflix之前,Jason曾在北美棒球聯盟傳媒任職架構師。
Jason加入Netflix是在2008年。在那一年之前,Netflix的業務主要運行在自己的數據中心當中,用IBM的高性能硬件搭配Oracle數據庫作為底層架構。在那一年秋季的某一天——也就是Jason去Netflix面試前后的某一天——Netflix的服務掛掉了,具體是因為流量暴增還是因為單點故障倒是不清楚。總之,Netflix在2008年決定往Amazon EC2上遷移,成本只是其中一方面的考慮。
“可擴展性很重要啊。除了Amazon EC2之外,還有誰能夠提供在1小時內增加1000個節點的能力?”Jason這樣介紹到。
“那如果不是在2008年,而是在現在做這個決定呢?你們仍然會選擇Amazon EC2這樣的公共云平臺,而不會考慮像Zynga那樣,搞個自己的私有云?”
“哦,我想我們目前不會打算回到自建數據中心的方案的。”Jason對數據中心的解決方案表示不置可否。“Zynga有他們的考慮。我有朋友就在zCloud工作,他們那邊的說法是自建私有云比使用Amazon EC2便宜,可能對他們來說真是這樣吧。不過對我們來說,還是剛才我說的那樣,能在1小時內增加1000個節點的可伸縮性,目前只有EC2能滿足我們的需求。而OpenStack這方面的東西,我也偶爾看看,這項技術感覺目前還在幼年期,不適合用在一個線上的業務當中。”
Netflix現在有700多名員工,其中大部分是工程師。Jason所在的Cassandra集群團隊主要由軟件工程師組成,還有三個dev-ops。
“您提到團隊中有3個dev-ops,也就是傳統上負責系統管理運維的工種。他們的工作主要包括哪些內容?”
“我們的dev-ops會寫很多腳本,讓各種工作變得自動化。”Jason介紹到。“點一下就做好環境搭建,點一下就做好配置,很多這樣點一下就完成的實現。其中很重要的一部分是跟監控相關的,我們想知道我們的Cassandra集群的運行狀態,每個節點的負載如何等等細節。”
“那總的來說,云計算下的運維工程師和傳統數據中心里面的運維工程師有何不同?”
“哦,在數據中心里面可是很無聊的。要加臺服務器?先填寫個工單;要上線個服務?先填寫個工單;要調試一下配置?先填寫個工單……工單然后審批,通過后再執行,很多這樣繁瑣的行政流程占據了工程師的時間。而在EC2上就很方便了,需求提交過來,也就是點兩下鼠標的工作。”
“剛才您提到寫腳本監控Cassandra集群,也就是說目前還沒有成熟的用來監控Cassandra的系統嗎?”
“沒,基本上都是我們自己實現的。”Jason向筆者介紹了Netfilx的一些開源項目(目前都公開在Github平臺上 https://github.com/Netflix),以及最近將要開源的一套“猴子”工具。“猴子工具針對EC2平臺,其中包含幾個子項目:有一個Chaos Monkey(混亂的猴子)專門在集群中隨即殺死虛擬機,以確保系統在部分節點故障時仍然可以正常運行;有一個Security Monky(安全的猴子),可以自動檢查系統中存在的漏洞;還有一個Janitor Monkey(看門人猴子),可以自動發現系統中的閑置資源并將其關閉。這套工具是各個團隊通用的,會在未來幾個月內開源。”
“那么針對AB測試,你們也有專門的工具嗎?”Jason負責的是AB測試這一塊,他在QCon上的話題也是有關AB測試系統的,所以筆者單獨詢問了一下。
“當然有了。AB測試有很多部分是專門針對Netflix的業務的,比如給用戶展示不同的界面,不同界面下的數據統計等等,當然這些肯定是不會開源的。一些通用的工具,未來倒是可能會逐漸都放到Github上面。”
Jason在QCon的分享上倒是透露了一些其他的情況,那就是Netflix目前正在聯系Amazon EC2之外的服務提供商來處理容災備份和恢復(他們目前使用的是Amazon的S3存儲),但具體是哪家,他現在還不便透露。隨著Netflix對集群性能的要求日益增高,Jason也開始學習一些Linux內核級別的知識。對于大規模網站架構的工程師而言,往高處和深處走是必然的趨勢;尤其在云計算普及之后,工程師有更多的時間精力可以放在業務本身,這相比上個世紀的工程師們是極大的優勢。