Chaos Kong來了:Netflix的AWS調(diào)度工具
Netflix在持續(xù)擴(kuò)大其基礎(chǔ)設(shè)施,無(wú)論是在Amazon Wed Services還是在世界各地的數(shù)據(jù)中心。由于這種擴(kuò)張,我們開發(fā)了Chaos Monkey和Chaos Gorilla的新伙伴:Chaos Kong。
Edberg在Netflix領(lǐng)導(dǎo)著一支可靠的團(tuán)隊(duì),同時(shí)也是Raddit第一個(gè)有償職工,他就Netflix公司如何管理其龐大的經(jīng)營(yíng)和這個(gè)過程中開發(fā)人員的作用做了一次廣泛的會(huì)談。
到Netflix請(qǐng)求視頻首先經(jīng)過API,API每天接受20億次請(qǐng)求,API將這些請(qǐng)求路由到Netflix后端服務(wù)。系統(tǒng)記錄這項(xiàng)活動(dòng)每天產(chǎn)生約70到80億個(gè)數(shù)據(jù)點(diǎn)。
“我們喜歡說我們的日志系統(tǒng)也可以播放電影”,Edberg說,“關(guān)鍵的是,我們幾乎一切都是自動(dòng)化,當(dāng)有一個(gè)操作任務(wù)時(shí),我們?cè)噲D找出如何自動(dòng)化”。
Simian Army持續(xù)發(fā)展
這包括Chaos Monkey,可以隨機(jī)關(guān)閉Amazon云平臺(tái)虛擬機(jī)的一個(gè)彈性工具。我們的目標(biāo)是設(shè)計(jì)出能允許在運(yùn)行時(shí)偶然出錯(cuò)的應(yīng)用程序,這就是被我們熟知的Simian Army,Netflix的套件之一。同時(shí)也包括可以禁用整個(gè)可用區(qū)的Chaos Gorilla。每一個(gè)Amazon地區(qū)都包含了一個(gè)可用區(qū),允許用戶創(chuàng)建本地停機(jī)的故障轉(zhuǎn)移選項(xiàng)。
自從Netflix在Amazon三個(gè)不同的地方(Virginia, Oregon and Europe-West in Dublin)運(yùn)行后就開發(fā)出了Chaos Kong,一個(gè)能模擬影響整個(gè)Amazon地區(qū)停機(jī)的工具,并能將業(yè)務(wù)轉(zhuǎn)移到其他地區(qū),Netflix公司使用了Amazon的預(yù)留實(shí)例,以確保有能力從一個(gè)地區(qū)到另一個(gè)地區(qū)的大規(guī)模流量轉(zhuǎn)移。
以下是Edberg談話重點(diǎn)的總結(jié):
采用云技術(shù)(和一個(gè)巨大的CDN):Netflix已經(jīng)成為Amazon Web Services和云驅(qū)動(dòng)公司的典范,很多內(nèi)容通過數(shù)據(jù)中心來服務(wù)。“我們?cè)谠粕线\(yùn)行任何服務(wù),但那僅僅是表面上的控制”,Edberg說,“所有的視頻來自于我們的CDN上”。Netflix的CDN部署在全球21個(gè)數(shù)據(jù)中心。代理服務(wù)器將數(shù)據(jù)中心和AWS的“對(duì)話”。Netflix設(shè)計(jì)了自己的4U服務(wù)器,這些服務(wù)器的供應(yīng)商包括Supermicro、Intel、日立和Seagate。
Netflix的DevOps:Netflix的開發(fā)團(tuán)隊(duì)每天發(fā)布的部署超過100個(gè)更新,公司遵循的“DevOps”模式,開發(fā)人員都要編寫和部署代碼,誰(shuí)開發(fā),誰(shuí)負(fù)責(zé)。“我們聘請(qǐng)負(fù)責(zé)人的成年人,相信他們能夠做好自己應(yīng)該做的”,他說,“它工作的很好,當(dāng)他們需要的時(shí)候開發(fā)商會(huì)部署生產(chǎn),如果有東西壞了,你也必須要解決它,即使是凌晨4點(diǎn)”。
并不是說這個(gè)過程有時(shí)候很乏味,“開發(fā)人員善于了解他們服務(wù)的驚險(xiǎn)性”,Edberg說,“這種分布式基礎(chǔ)設(shè)施的缺點(diǎn)之一是,你可能并不知道你的改變將影響上下游的依賴性”,雖然很多服務(wù)都受其范圍的限制,因此我們可以創(chuàng)建一個(gè)像Fast Properties一樣的配置工具允許開發(fā)者擴(kuò)大他們的系統(tǒng)變化范圍,“我們正在努力使其變得更好”。
冗余三原則:“我們從來沒有將數(shù)據(jù)只保存在一臺(tái)機(jī)器上”,Edberg說,“我們確信我們掌握著三個(gè)區(qū)域的一切,我要求在三個(gè)可用區(qū)運(yùn)行,因此他們?cè)谌齻€(gè)數(shù)據(jù)中心中運(yùn)行”。公司的Cassandra數(shù)據(jù)庫(kù)架構(gòu)在三個(gè)不同的區(qū)域中運(yùn)行。
對(duì)于所有的Netflix的技術(shù)成就,Edberg的商業(yè)模式迎來了挑戰(zhàn):停機(jī)時(shí)間的實(shí)際成本很難計(jì)算,公司的收入是基于月度訂閱,而不是每天或每小時(shí)的交易,撤銷是關(guān)鍵的指標(biāo),不能全部歸因于停機(jī)時(shí)間。