技術 | Netflix AWS 應用深度解析
相信很多朋友都對很多 Netflix 的電視劇耳熟能詳了。作為全球最大的網路流視頻點播服務網站,Netflix 早在2010年底就將把它的計算平台遷移到了 AWS 雲服務上面。也許就是因為這樣的戰略性轉變,使得 Netflix 能更專註地將更多的資源投入到內容製作上,在接下來的幾年裡出品了不少如《紙牌屋》(House of Cards)、《毒梟》(Nacros)、《王冠》(The Crown) 等優秀的原創劇集。今天這篇文章就來聊聊 Netflix 如何應用 AWS 雲計算平台打造一個能服務全球近9千萬用戶的視頻平台。
首先我們來看看一些數字:
Netflix 的視頻服務在高峰時段佔據了高達37%的 Internet 流量。相比之下,YouTube 僅佔到 15.6%,網頁瀏覽約 6%, Facebook約 2.7%, Amazon Instant Video 約2.0%, Hulu 約1.9%
在 AWS 上共利用超過10萬個 EC2 Instances 的80萬CPU Cores,且在此基礎上有約 20% 的波動
在每個服務區域上的 AWS Elastic Load Balancing 的流量超過 50Gbps
在 S3 上存儲和管理超過15億個對象的 60 PB 的數據。其中每天要丟棄超過 400TB 的過期數據以及新增 600TB 的數據
Netflix 的技術棧在 A 360 Degree View of the Entire Netflix Stack 一文中已經有詳細介紹,StackShare 的圖表展示了 Netflix 技術棧,其中應用到的主要 AWS 組件包括:EC2、S3、RDS、DynamoDB、ELB、CloudTrail等等。
雖然大家都說遷移到 AWS 雲計算平台是大勢所趨和未來的方向,但究竟有哪些具體原因使得 Netflix 將所有的計算平台遷移到 AWS 呢?
遷移到 AWS 平台的運行成本的大幅度降低。自從 AWS 服務2006年上線以來,其成本已經降低到了最初的近1/60, 越來越接近運行自己的計算平台的成本。這無疑大大鼓勵越來越多的用戶遷移到雲平台,而越來越多的用戶反過來帶來規模經濟效應使得 AWS 能以更便宜的邊際成本提供服務,也就隨著 AWS 的市場份額擴大進一步降低價格。
Source: Don』t let the 「cloud cost war」 stop your next Reserved Instance purchase
業界內部的精細分工更符合經濟效率的原則。雖然 Netflix 的有實力打造自己的計算數據中心,但是這樣並不能將其所有精力集中在開發高質量的視頻產品上。因此最有效的辦法就是將計算平台打造和維護交給更專業的 AWS 去做。
用戶增長和需求的不確定且難以預測。如果像 Netflix 這樣規模的一個公司需要建立自己的數據中心,往往需要提前1-2年對數據中心的規模做出較為精確的預測增長來購買硬體以避免額外的開銷。但是這樣帶來的問題就是:如果需求的增長不能達到預期,那麼額外的計算資源就是一種浪費;反過來,如果需求的增長遠遠超出預期,那麼就很難在短時間內來擴展現有的計算資源來滿足需求。對於 Netflix 提供的視頻訂閱服務來說,要精確預測用戶的未來需求不是一件容易的事情,比如因為某一個熱播的劇集訂閱用戶在一個月內大幅度增加。如果因為數據中心擴容的限制導致了服務質量的降低,則會嚴重傷害到整體用戶體驗的。因此 AWS 這種極具彈性計算資源正好使得 Netflix 能快速靈活地擴展或減少系統資源來滿足波動和難以預測的需求。
將現有的計算平台從私有的數據中心的遷移到 AWS 平台並不是易事,尤其當運用的規模達到一定程度時,各種意想不到的問題都會接踵而至,那麼我們從 Netflix 都能學到什麼經驗呢?
私有的數據中心和 AWS 有著截然不同的特性,而這些特性會影響到技術棧的任何一層,以至於部分或者整個技術棧都得重新設計和實現。私有的數據中心最大的優勢就是硬體的穩定性和一致性。例如在數據中心,硬體的故障率很低,這樣就是使得運行在上面的軟體設計可以不用考慮太多容錯性而專註於性能優化。而且因為數據中心是私有的,沒有來自於其他人對計算資源的競爭,因此在軟體的構架設計上也比較容易規劃。但是一旦轉移到 AWS,情況就截然不同了,因為 AWS 的計算資源是由很多客戶競爭共享的,計算資源、網路資源的性能都隨著整體的需求不斷波動甚至出現故障。這樣也對整個技術棧的設計帶來了不小的挑戰,對於 Netflix 這樣規模的一個系統來說,最為重要的就是系統的容錯性。
Netflix 的工程師在 Lessons Netflix Learned from the AWS Outage 一文中描述了的,一旦 AWS 故障發生,Netflix 也不能倖免,而一個區域性的錯誤就有可能導致整個系統雪崩式的災難發生。在實際構建大規模的 AWS 應用中,資源的不穩定性和故障必須放到首要因素來考慮,例如如果發生了區域性的故障,如何將請求在其他可用的資源上進行平衡,如何分布冗餘的數據使得災難性的後果不會發生都是一個雲計算平台工程師必須考慮的問題。
最後,Netflix 在 AWS 的大量投入也促成了許多十分實用和優秀的 AWS 工具的產生。在上一篇《玩轉 AWS 的必備工具》中我們已經提到了 Netflix 的 ICE,這是一個專門針對 AWS 的資源使用量和成本監控的開源工具。和 AWS 提供的 CloudWatch 不同,ICE 側重於從一個頂層管理者的角度對一個企業組織內部的眾多團隊使用 AWS 資源的狀況和開銷進行細粒度的分析和把握,以實現資源分配最優化的目的。
Eureka 是 Netflix 發布的另外一個開源項目,用於提供服務註冊 (Service Registry/Discovery) 和負載平衡 (Load Balancing) 服務,類似 Zookeeper,Doozer 和 Consul。Eureka 包含用 Java 實現的一個伺服器端和一個客戶端。Netflix 在 AWS 的每一個 Availability Zone 里都運行一個 Eureka 伺服器,這些伺服器通過非同步的協議來複制它們之間的狀態來實現高可用性和高容錯性。服務的註冊和發現是通過客戶端來完成的,客戶端通過定期和伺服器通信在伺服器端更新其狀態。如果 Eureka 中的某個伺服器下線了,剩下的幾個伺服器仍然可以在自己的 availbility zone 中正常工作知道離線的伺服器重新恢復正常重新加入到原來的伺服器組裡。
Chaos Monkey 是一個用於測試系統穩定和可靠性的模擬工具。在 CS211 AWS雲平台工程師訓練營課程中我們將會學習到如何應用 AWS 的 Autoscaling group 和 spot instance 來大幅度降低計算資源運行成本,但同時系統需要處理廉價計算資源的不穩定性帶來的可靠性問題。而 Chaos Monkey 就是用於模擬在這樣的環境下各種應用是如何處理運行時錯誤的。Chaos Monkey 可被配置用於在特定的時間按照特定的概率來異常地終止某個運行的服務來模擬實際運行中的故障情況,然後用戶便可以通過系統行為來發現系統中的被錯誤影響的主要部分以及檢驗和設計在某種錯誤情況下系統的容錯能力。
Netflix 的另一個開源項目:Security Monkey 是一個 AWS 安全監控和分析系統。想像一下如果需要部署一個由多個 AWS 賬戶組成、跨越多個 availability zones,且非封閉面向整個 internent 的系統,系統的安全配置是至關重要的。雖然 AWS 提供了一系列高質量的安全組件,例如 Security Group, IAM Roles,S3 Bucket Policty,來幫助用戶實現其安全性的要求,但是這些對於用戶來說,要正確地配置這些安全的組件卻不是一件容易的事情。有可能一個小小的配置更改就可能導致災難性的安全隱患且十分不容易被察覺。Security Monkey 就是用來檢測這些安全配置的更改,以及驗證這些安全部署是否和整體的安全策略兼容的系統工具。簡單的來說,Security Monkey 由三部分組成:監控服務 Watcher、通知服務 Notifier、和審核服務 Auditor。監控服務負責實時監控是否有新的安全配置更新被部署到到系統中,一旦監測到有安全配置的改變,通知服務會發送相應的通知給系統管理員或者安全審計員。而審核服務則定期用一系列的安全策略規則來測試系統,如果發現系統中有違反當前安全策略的配置,則立即通知負責安全的系統管理員。
本文作者:Dun
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。
------------------------這裡是分割線----------------------
本周AWS相關公開課:設計實現12億紐約計程車行駛數據AWS處理平台
- 美西時間1月20日 07pm
- 美東時間1月20日 10pm
- 北京時間1月21日 11am
免費報名鏈接:Welcome! You are invited to join a webinar: CS211 AWS Data Processing Infrastructure免費第一節課. After registering, you will receive a confirmation email about joining the event.
推薦閱讀:
※計算機已知一個地址,得到這個地址指向的內容,時間是常數級的嗎?如何實現的?
※才不是呢!
※解壓縮操作為什麼不吃CPU?
※CS申請新思路 — Professional Master
※計算機是個很好的工具箱
TAG:AmazonWebServicesAWS | 计算机 | Netflix |