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