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