導語:“團隊使用了一款名為“Erlang”的編程語言來開發這款即時通訊應用。” 但,僅此而已?
屬于處女座的九月注定不平凡,近日WhatsApp首席執行官Jan Koum在他的Facebook個人主頁上宣布,使用這款即時通訊應用的人數已經超過了9億人!有趣的是,WhatsApp母公司Facebook創始人兼首席執行官馬克·扎克伯格很快轉發了Koum的帖子,在表達對WhatsApp實現重要里程碑的同時,小扎還偷拍了Koum手握智能手機發帖的照片,并曬到了Facebook上。
如果把時間倒回到一年前,當小扎砸下190億美元收購WhatsApp的時候,幾乎人人都覺得他瘋了。可是現在看來,這絕對是一筆極有眼光的投資,因為如今全世界最受歡迎的三款互聯網App全部都是Facebook的!第一款當然是我們熟知的Facebook社交網絡,目前該社交網絡服務用戶數量已經超過了150億人;第二個是已經從Facebook原生應用里剝離出來的即時通訊應用Facebook MeSSEnger,其用戶數量已達7億人;第三個就是WhatsApp,當然啦,嚴格意義上來說,WhatsApp實現了9億用戶量的“傲人戰績”,基本上和Facebook沒有太多關聯。
不過,WhatsApp真正讓科技圈感到震驚的是他們給我們展現了一種與眾不同的互聯網服務模式,人們根本無法想象,如此巨大的用戶量竟然只是由那么幾個人就搞定了!
去年WhatsApp被Facebook收購時,他們的員工數量并不多,整個公司只有35名工程師,用戶數量剛剛超過4.5億。今天,他們只雇傭了50名工程師,但用戶數量卻翻了一番,更重要的是,就這么幾個工程師幾乎都是靠自己(沒有外包)來維持WhatsApp應用服務有效運轉的。因此,對于其他很多希望快速擴大自己用戶數量的互聯網服務來說,的確值得好好研究一下WhatsApp,看看他們究竟有何過人之處。
WhatsApp很少談論公司工程內部工作,也極少會提及運營方面的事情,因此一旦有人分享,肯定都是非常有料有價值的東西。比如近日在美國加州圣何塞市的一場活動中,WhatsApp軟件工程師JamshidMahdavi就登臺簡要介紹了該公司的“制勝訣竅”,其中之一,就是他們使用了一款名為“Erlang”的編程語言來開發這款即時通訊應用的。雖然這個編程語言在編程社區里沒那么受歡迎,但卻非常適合用來開發一些有大規模用戶的即時通訊應用服務,而且工程師還可以快速部署新代碼。但是Mahdavi表示,WhatsApp成功的訣竅除了技術之外,更重要的是一種態度。
Mahdavi大約是在兩年前加入WhatsApp的,彼時這家初創公司已經渡過了業務上升期,已經是一款非常成功的即時通訊應用了,但是Mahdavi發現WhatsApp公司對軟件工程的理解非常獨特,首先他們使用的是非常小眾的編程語言Erlang,而且操作系統使用的也是不太常見的FreeBSD,但WhatsAPp真正厲害的地方,是他們極簡的企業運營模式。“擁有如此大規模用戶量的應用程序,通常需要龐大的基礎機構支持,但是WhatsApp的方式卻有些‘另類’,”Mahdavi說道,“WhatsApp會用最簡單的方法,去解決那些他們需要解決的問題,這種方法讓我腦洞大開。”
采用支持并行處理的小眾編程語言
在使用Erlang的過程中,WhatsApp同時也推動了這款編程語言的發展。Erlang具有極強的并發性,也就是說,它支持同時處理多個進程。那些需要支持大量用戶彼此間通訊的互聯網服務,其實就是多進程處理的現實體現,顯然,類似Erlang這樣的編程語言會非常有競爭力。
另一個例子是Facebook,他們在開發反垃圾系統的時候也使用了類似的編程語言Haskell,Facebook希望利用反垃圾系統識別社交網絡上的惡意軟件和垃圾信息。Haskell編程語言誕生于上世紀八十年代,起初只在學術圈里使用,并沒有太多普及。但是對于Facebook開發反垃圾系統而言,這款編程語言太合適不過了,因為它不僅支持處理并發進程任務,程序員還可以快速追蹤到緊急任務。不僅如此,谷歌和Mozilla(火狐瀏覽器開發商)也嘗到了小眾編程語言的甜頭,因為他們分別使用了兩款編程語言Go 和Rust,而且效果甚佳。
如果從本質上來說,WhatsApp已經取代了過去電信行業里的短信服務。
正如Haskell一樣,Erlang也誕生于上世紀八十年代,它是由瑞士跨國公司愛立信旗下的工程師開發的,用于電信公司設計開發軟件和硬件,并構建高速固話網絡。“過去,人們總是會先創造出一種編程語言,然后再去想利用這款語言可以做些什么事,但現在,工程師更青睞于為解決某個特定問題,針對性地開發一種個性化的編程語言”Erlang程序語言專家,英國人FrancescoErlang說道,“過去的網絡缺乏規模性和穩定性,那時同時具備這兩個屬性的只有電話網絡了。”
在現代編程領域里,Erlang依然算不上是主流產品,不過在WhatsApp和其他互聯網公司,比如微信和Whisper,Erlang發揮出了自己的價值,基本上,WhatsApp取代了傳統電信的短信服務,但這點和過去的電話網絡又非常相似,因為WhatsApp同時也具有“規模性和穩定性”這兩大屬性。
此外,程序員使用Erlang可以快速地編寫代碼,速度,是現代軟件開發領域里非常重要的一個條件。Erlang支持在程序中快速插入新代碼,即便程序在運行時也能完成該操作。在一個代碼快速迭代的時代,Erlang這種功能會非常有用。
保持極簡、智能
Erlang主要有兩個主要的缺陷,第一,Erlang編程語言的普及率并不高,因此掌握這種編程語言的程序員數量并不多;第二,由于Erlang不是主流編程語言,因此目前對于很多互聯網公司開發的產品,Erlang幾乎沒有任何共同之處。最明顯的例子就是FacebookChat App,Facebook一開始使用Erlang語言開發了這款應用,但最后,為了能夠適應其他基礎架構Facebook不得不使用其他語言重新開發。“Erlang現在就像是汪洋中的一座孤島,如果你僅僅為了去這座孤島而建造大量船只,顯然不太劃算,”Jay Rarikh說道,他是Facebook現任工程副總裁。
當然啦,WhatsApp不存在上述問題,因為他們現有的基礎架構就是用Erlang語言構建的。另外對于缺乏Erlang語言程序員的問題,Mahavi認為這不是什么大事兒。“我們的招聘策略,不是專門去看某個程序員是否掌握Erlang語言,而是去尋找最優秀、最聰明的工程師,”他說道,“我們希望員工加入WhatsApp之后,先花一周時間了解下Erlang,掌握在哪些環境下需要使用這款編程語言。如果你能夠勝任,一周時間綽綽有余。”
正是依靠這些具有極強適應力的工程師,WhatsApp獲得了成功(當然這也是成功的原因之一)。有人詢問Mahadvi,WhatsApp到底有什么成功的秘訣,他簡單地回應說,“成功最重要的,就是要全身心投入到你需要做的工作上。不要被其他任何事情分心,很多辦公室瑣事都會導致你無法專注工作。”
在WhatsApp,員工幾乎從不參加會議。的確,僅有五十個工程師的公司也沒有開會的必要;但這的確也是WhatsApp成功的秘訣。