50名工程師支撐着一個10億用戶量的產品:成功因素之一是員工幾乎不參會

{"type":"doc","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"blockquote","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"WhatsApp是全球最受歡迎的聊天軟件之一,目前用戶數量以達到10億。讓人驚訝的是,如此龐大的用戶數量背後,是由一個僅有50名工程師的技術團隊做支撐的。本文,我們從工程文化、技術棧等方面來解讀WhatsApp如何僅用 50 名工程師就將用戶規模擴大到 10 億。"}]}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"WhatsApp 的工程文化"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"關於WhatsApp的故事有許多,其中有趣的部分之一是,它在如此小的團隊中實現瞭如此巨大的規模。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"2014年,Facebook以 160 億美元的價格收購即時通訊工具 WhatsApp,其中 40 億美元爲現金、提供價值 120 億美元的 Facebook 股票、併爲 WhatsApp 創始人和團隊提供 30 億美元限制股。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"剛被收購時,WhatsApp只有35名工程師,擁有超過4.5億用戶。如今,它僱傭了大約50名工程師,儘管WhatsApp的用戶數量已經翻了不止一番,但龐大的用戶羣依然依靠這一小羣工程人員來運行。談及它成功的原因,WhatsApp的軟件工程師Jamshid Mahdavi表示,部分訣竅在於,公司使用了一種名爲Erlang的編程語言構建其服務。儘管在更廣泛的編碼社區中Erlang並不是很流行,但Erlang特別適合處理來自大量用戶的通信,它允許工程師動態地部署新代碼。但Mahdavi表示,態度和技術同樣重要。總結起來可以概括爲兩點,務實、極簡的工程文化和正確的技術選型成就瞭如今的WhatsApp。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"WhatsApp 的工程文化包括三個主要原則:1、大事化小;2、保持簡單;3、全神貫注於任務。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"大事化小"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"WhatsApp 有意將工程人員保持在小規模,只有大約 50 名工程師。個人工程團隊也很小,由 1~3 名工程師組成,每個團隊都有很大的自主權。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"就服務器而言,WhatsApp 更傾向於使用數量較少的服務器,並且儘可能在最大程度上垂直地擴展每臺服務器。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"之前,他們的目標是每臺服務器擁有 100 萬個用戶(但是當他們嚮應用程序添加更多的功能,以及用戶在每個用戶基礎上產生更多的活動時,這變得更加困難)。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"服務器數量減少意味着故障減少,從而使團隊更易於處理。對於軟件來說也是如此,它們限制了生產中系統和組件的總數。也就是說,需要開發、部署和支持的系統更少。不需要開發很多系統\/組件,然後進入維護模式(最終成爲孤兒,直到出錯)。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"保持簡單"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"WhatsApp 的口號是“不要過度工程”。他們避免在系統和組件上過度投資。取而代之的是,他們專注於建立足夠的可擴展性、安全性和可靠性。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"在進行技術選擇的時候,其中一個關鍵因素是“什麼是最簡單的方法?”另外,他們避免在自動化方面的投資,除非完全必要。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"全神貫注於業務"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"WhatsApp 的產品設計非常專注。其主要目的是提供一個具有良好用戶界面的核心通信應用程序。他們避免了額外的花裏胡哨的功能,也不去實現那些不完全關注核心通信的功能。WhatsApp認爲,簡單的產品更易於維護和擴展。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"WhatsApp的技術棧"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"除了極簡主義的工程文化以外,確定正確的技術方向以及合理搭建技術棧也是WhatsApp成功的祕訣之一。該技術棧圍繞着三個核心組件:Erlang、FreeBSD 和 SoftLayer。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"Erlang"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"Erlang 是 WhatsApp 後端系統首選的編程語言。Erlang 從一開始就被設計用於並行性,容錯性是該語言的一個主要特點。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"瞭解更多有關 Erlang 的容錯性,鏈接如下:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https:\/\/stackoverflow.com\/questions\/3172542\/are-erlang-otp-messages-reliable-can-messages-be-duplicated\/3176864#3176864","title":null,"type":null},"content":[{"type":"text","text":"https:\/\/stackoverflow.com\/questions\/3172542\/are-erlang-otp-messages-reliable-can-messages-be-duplicated\/3176864#3176864"}],"marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"開發者使用 Erlang 的效率也非常高。但是,它是一種函數式語言,所以如果你不熟悉這種範式,則需要花一些時間來適應。這門語言非常簡潔,只需少量幾行代碼就可以完成工作。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https:\/\/en.wikipedia.org\/wiki\/Open_Telecom_Platform","title":null,"type":null},"content":[{"type":"text","text":"OTP"}],"marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}]},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"(Open Telecom Platform,開放電信平臺)是 Erlang 的開源中間件、庫和工具的集合。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"WhatsApp 儘量避免依賴關係,但它們確實使用了 Mnesia,一個 OTP 的分佈式數據庫。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"Erlang 也帶來了熱交換代碼的能力。無需重新啓動應用就可以將新的應用代碼加載到運行中的應用。這樣可以讓迭代週期非常快,WhatsApp 可以快速地發佈補丁,並且服務的運行時間非常長。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"想了解WhatsApp 的後端究竟是如何用 Erlang 構建的,鏈接如下:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https:\/\/www.youtube.com\/watch?v=LJx6mUEFAqQ","title":null,"type":null},"content":[{"type":"text","text":"https:\/\/www.youtube.com\/watch?v=LJx6mUEFAqQ"}],"marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"更重要的是,Erlang允許編碼人員高速工作——這是現代軟件開發的另一個重要部分。它提供了在應用程序繼續運行時將新代碼部署到應用程序的方法。在這個不斷變化的時代,這比以往任何時候都有用。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"Erlang語言確實有它的缺點。最主要的缺點之一就是了解Erlang的程序員相對較少,而且它不一定與當今互聯網公司已經構建的許多代碼兼容。Facebook用Erlang構建了最初的Facebook聊天應用程序,但最終進行了重建,以便更好地適應其其他基礎設施。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"FreeBSD"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"FreeBSD 是 WhatsApp 服務器使用的操作系統。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"決定使用 FreeBSD 的是 WhatsApp 創始人,這是基於他們之前在雅虎的經驗。創始人(以及許多早期團隊)都曾經是雅虎的一員,而雅虎廣泛使用 FreeBSD。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"想了解WhatsApp 到底是如何使用 FreeBSD 的,可打開鏈接查看詳情(請注意,這個講座是 2014 年的,所以其中一些內容現在可能已經過時了):"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https:\/\/www.youtube.com\/watch?v=TneLO5TdW_M","title":null,"type":null},"content":[{"type":"text","text":"https:\/\/www.youtube.com\/watch?v=TneLO5TdW_M"}],"marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"SoftLayer"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"SoftLayer 是 WhatsApp 在 2016 年使用的託管平臺。他們選擇 SoftLayer 主要有兩個原因:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"1、擁有一流的操作系統 FreeBSD。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"2、能夠訂購併操作裸機服務器。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"但是, SoftLayer 屬於 IBM(IBM 公有云的一部分),後來 WhatsApp 從 SoftLayer 遷移到了使用 Facebook 的基礎設施。2017 年,他們開始遷移。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"結語"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"低調的工程師們並沒有對外界透露出WhatsApp更多的成功祕訣,當被要求解釋公司成功的祕密時,Mahdavi的回答很簡單。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"他表示:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"blockquote","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"公司之所以成功,是因爲聘用了適應性強的工程師——在多個方面都是如此。最重要的就是要非常專注於你需要做的事情。不要把時間花在其他活動、其他技術,甚至是辦公室裏的事情上,比如會議。在WhatsApp,員工幾乎從不參加會議,這也是關鍵所在。"}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"參考鏈接:"},{"type":"link","attrs":{"href":"https:\/\/www.quastor.org\/p\/how-whatsapp-scaled-to-1-billion","title":null,"type":null},"content":[{"type":"text","text":"https:\/\/www.quastor.org\/p\/how-whatsapp-scaled-to-1-billion"}],"marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}]}]}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章