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