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