做者介紹:html
楊波,拍拍貸基礎框架研發總監。具備超過 10 年的互聯網分佈式系統研發和架構經驗,曾前後就任於:eBay 中國研發中心(eBay CDC),任資深研發工程師,參與億貝開放 API 平臺研發,攜程旅遊網(Ctrip),任技術研發總監,主導攜程大規模 SOA 體系建設,惟品會(VIPShop),任資深雲平臺架構師,負責容器 PaaS 平臺的調研和架構
前言
近日和下屬一塊兒吃晚飯,期間聊到Netflix技術那些大膽的創新,過後以爲有必要總結一下,給團隊分享,讓你們瞭解世界較高級的技術組織在技術、架構、組織和文化方面的創新。讓你們在埋頭幹活的時候,偶爾也能夠擡頭看看天(大處着眼,小處着手)。因而就有了這篇文章。
注意,Netflix技術自己也在快速的迭代進化中,本文主要基於Netflix在slideshare上的分享總結而成,其中的不少內容目前可能已通過時,可是Netflix的創新文化和精神仍然值得咱們學習借鑑。
1、大規模生產級微服務架構實踐
微服務不少公司(eBay, Amazon, BAT)都有,甚至比Netflix作得更早,但Netflix大概是大規模生產級微服務作得最傑出的。
100s範圍的微服務,1000s範圍的每日生產變動,10,000s範圍的實例,1,000,000s範圍的活躍客戶數,1,000,000,000s範圍的度量。可是隻有10s範圍的運維工程師,沒有本身的數據中心NOC,應該算微服務DevOps的較高境界了。
Netflix微服務可視化。
2、開源整個微服務技術棧
Netflix微服務技術棧的核心組件基本上都是開源的。Pivotal在2~3年前把Netflix開源的這攤東西封裝一下改頭換面,再拼湊一些其它東西(配置中心,調用鏈監控等)就變成了Spring Cloud。如今你們耳熟能詳的Zuul網關,Eureka服務發現註冊中心,Hystrix熔斷限流,Archaius配置等組件,Netflix在2012年左右就都開源出來了。
開放開源是Netflix的一種競爭戰略。
Netflix爲啥熱衷於要搞開源?
將本身的解決方案創建爲行業標準和較佳實踐
創建Netflix技術品牌
僱傭、留住和吸引較高級工程師
從共享生態中得到反饋輸入並受益
3、系統所有遷移AWS公有云
大體在09/10年左右, Netflix就開始啓動上公有云戰略(固然背後也是吃了自建數據中心的苦頭),應用逐步向AWS遷移,這個過程一共持續了將近5年,到15年的時候,遷移完畢,所有應用上到AWS。09/10年左右的AWS還不太成熟,別說當時,即便如今也沒有幾個大公司不掂量一下敢提所有遷移公有云的戰略。另外AWS能有今天,Netflix也是功不可沒,幫Amazon躺了無數的坑。
4、在AWS基礎上打造PaaS平臺
Netflix在AWS IAAS的基礎上封裝打造了本身的PaaS雲平臺服務(大部分組件開源),包括
平臺運行時服務(Eureka,Zuul, Edda,Atlas)
平臺庫和框架(Karyon/Ribbon,Hystrix,Rx
Java, Governator,Servo, Archaius, Astyanax)
平臺大數據和緩存服務(Cassandra/ES/
Hadoop Platform as a Service, EVCache,S3)
平臺工具和服務(Asgard/Aminator, SimianArmy/ChaosMonkey, ICE)
業內最近開始提出雲原生(Cloud Native)架構的理念,Pivotal是這個理念的主要推進者(背後主要是要推它的Cloud Foundry產品)。其實Netflix在2013年就提出了Cloud Native理念,並且它的整個平臺(AWS IAAS + PaaS)就是雲原生的。
5、兩地三中心高可用
Netflix的
高可用架構也是作得大氣磅礴,同城部署3個對等的可用區(AWS Availability Zone),1個甚至2個掛不影響可用性。
異地(Regions)再作對等部署,一個Region裏頭的AZ全掛,另一個Region接着可用。
6、採用Cassandra No
SQL做爲主數據庫
Netflix原來用Oracle等傳統Sql數據庫,可是受到擴展性挑戰。公司架構管理層大膽顛覆性提出使用Cassandra
NoSQL做爲主要的持久化化存儲機制,Netflix在2012年就作到大部分數據存放Cassandra和S3等非關係數據庫上。這個架構決策也是很是大膽有魄力,通常沒有幾個公司敢這麼幹的。Cassandra本質上是一種KV數據庫,更像sorted map存儲,不支持事務,不支持join。在CAP理論中,Cassandra是展示AP特性,無中心分散式高可用,自然支持跨數據中心數據同步,這大概是Netflix最看重的特性。Cassandra是讀慢寫快的特性(通常數據庫是讀快寫慢),Netflix大量使用Memcached作緩存補償。
Cassandra在同城多個Zone之間同步數據,在異地(Inter-Region)之間再同步,流量到9Gbits/s,延遲83ms,18TB的數據備份(2013年的數據)。
7、鏡像部署和發佈自動剎車
近年docker容器技術大火,你們都在談不可變基礎設施(immutable infrastructure)的理念,本質就是鏡像部署。Netflix在2012年前就已經實現鏡像部署,發佈的單位是AMI(Amazon Machine Image)鏡像,經過持續交付工具Asgard(如今升級版叫Spinnaker)直接將鏡像推到AWS雲中部署,支持藍綠(須要至少兩倍虛機),灰度和金絲雀等部署模式。
Netflix的發佈管道叫Paved Road,就是平臺團隊鋪好的路,由提交,構建,AMI鏡像烘焙(Image Baking)和發佈四個階段組成。
金絲雀發佈以後,系統會自動生成金絲雀健康報告和分數(背後須要統計上千個metrics + 複雜智能
算法),達到必定的分數(好比80分),才能繼續roll out。這個也稱發佈自動剎車。
8、反脆弱架構
Netflix大膽提出反脆弱架構的理念(架構師受到尼古拉斯·塔勒布《反脆弱》一書的啓發,並將其應用到架構領域):爲了讓你的系統更加健壯,不是將它們嚴格保護起來,而是主動隨機性地的增長一些破壞性測試,逼迫研發人員作好高可用。
Netflix從週一至週五,上午9點到下午3點,混亂猴子軍團會隨機殺生產實例,這個叫Chaos Monkey,還有增長延遲的Latency Monkey。
還有Chaos Gorilla能夠殺整個可用區(Availability Zone),Chaos Kong殺整個Region。聽說Netflix曾主動關閉一個可用區,客戶沒有任何影響。
國內一些互聯網公司也有演習和自攻一說,但基本都是提早打招呼的,規模通常也不大,Netflix是隨機不打招呼玩真的。
9、幾乎沒有流程,沒有員工手冊
Netflix是一家高度重視人才密度,重自由和責任文化,輕流程的公司。公司沒有正式的員工手冊,只有一條簡單的指導原則:
Act in Netflix’s best interest,以Netflix的較佳利益行事。
10、No CTO, No Ops
Netflix的技術這麼牛逼,但它是沒有技術CTO職位的,只有首席產品CPO,工程團隊和產品團隊的VP都向CPO彙報。這樣作更可能是爲了產品導向,便於技術和產品溝通合做,避免兩邊扯,避免業務驅動仍是技術驅動的悖論,你們都是產品驅動。Netflix把它稱爲BusDevOps組織架構。
Netflix也沒有獨立的運維團隊(NoOps),架構+中間件+運維+大數據閉環統稱爲雲平臺工程(Cloud and Platform Engineering)團隊,一個VP總負責,更好地對接DevOps文化。Netflix的產品導向文化很是濃厚,連平臺工程團隊開源出來的產品都是整整齊齊的(見https://netflix.github.io/),PaaS雲平臺是整個雲平臺工程團隊較大的產品輸出。
Netflix的CTO實際上是Chief Talent Officer,負責人才招聘的,公司對人才的重視可見一斑。
11、不管公司興衰,始終支付市場較高工資
不用多解釋,這大概是Netflix最有霸氣底氣和牛逼的一點。據我在米國的同窗講,去Netflix基本是硅谷頂薪,博士畢業去給開了超過30萬美金的年薪(這仍是前幾年的行情)。通常進去難,去了留下來也不容易,不勝任的被客客氣氣勸退的有。能留下來的通常也不跳,由於再跳也沒有更高的待遇了。
顯然,沒有較高級的人才密度,就沒法支撐其高大上的技術架構和鶴立雞羣的文化。較高級的人才彙集在一塊兒,容易碰撞迸發創新火花,搗騰出顛覆性的東西和理念。
寫在最後
我在這邊總結Netflix技術作的牛逼的事情,一方面是由於欽佩,但這不是重點,畢竟目前國內基礎環境和人才密度是支撐不起這種類型文化的公司;可是,他山之石,能夠攻玉,Netflix的不少技術、架構、組織和文化思路值得咱們學習和借鑑。
我本人沒有在Netflix工做過,上面的信息主要經過互聯網共享資料(特別是slideshare)學習解讀(有些解讀可能仍是偏頗的),所謂強者無祕密,Netflix的強大也體如今它無私分享精神,它在公司內部是信息公開透明分享的,對外部也同樣,幾乎全部Netflix微服務技術棧(也稱NetflixOSS)你能夠從github.com/netflix免費得到,其內部架構和技術相關資料基本上均可以經過slideshare或者Netflix techblog免費得到。在公開透明一塊即便Google、Amazon和Apple這些互聯網巨頭都應該是自嘆不如的。Netflix公司大概是地球上開出的一朵特別奇葩耀眼的花。
向Netflix致敬!