1. 程式人生 > >沒有CTO的Netflix有哪些值得我們學習的工程文化?

沒有CTO的Netflix有哪些值得我們學習的工程文化?

可視化 com 總結 中心 原來 har 擴展 變更 .data

作者介紹:

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

沒有CTO的Netflix有哪些值得我們學習的工程文化?