WhatsApp目前拥有9亿用户,但为何只需要50名工程师?
本文来自 Wired 文章《Why WhatsApp Only Needs 50 Engineers for Its 900M Users WIRED》,作者 CADE METZ,虎嗅编译。
本月初,WhatsApp 的 CEO Jan Koum 在他的 非死book 上宣布,公司的实时通讯服务已经拥有 9 亿用户。之后 非死book CEO Mark Zuckerberg 也立刻连发两条回复他,一条说 “祝贺,”另一条的配图是 WhatsApp CEO 在编辑那条 “宣布用户突破 9 亿”的状态时的样子,并写道 “这就是你编写那条状态时的抓拍”,Zuckerberg 写道。
WhatsApp 目前归 非死book 所有,在 WhatsApp 以初创公司之姿面世刚满一年后,Zuckerberg 和他的公司便出资 190 亿美元将其买下。这样一来,非死book 就运营着互联网上最火的三个 app。作为主业的社交网络业务目前在世界范围内拥有 15 亿用户,而 非死book Messenger,从 非死book 中拆分出来的即时通讯业务也拥有 7 亿用户。但是 Koun 宣布的里程碑似的 9 亿用户的荣耀是属于 WhatsApp 的,而不是作为一个 非死book 生产线上的一个产品。
WhatsApp 的有趣之处在于它实现了小团队打造大型服务。当它被 非死book 收购时,它是一个拥有 35 名工程师和 4.5 亿用户的软件。如今,当它已经把这个用户数翻倍,它也只拥有 50 名工程师而已,并且这个小团队几乎全部在依靠自己的力量来运作这个产品。当下,有很多互联网服务都在快速地向百万用户目标进发,WhatsApp 至少从某种程度上向它们展示了一种方法。
WhatsApp 从不在技术和其他运营工作上发表太多言论,但是昨天,在加利福尼亚州圣何塞的一个会上,WhatsApp 的软件工程师上台对公司的一些非同寻常的理念做了简短的讨论。其中一个就说公司使用的编程语言是 Erlang。虽然 Erlang 在编程界并不是很受欢迎,但它擅长处理海量用户之间通讯任务,并且它允许工程师快速配置新代码。但是 Mahdavi 说,和技术同样重要的还有态度。
Mahdavi 两年前加入 WhatsApp,那时作为初创企业的 WhatsApp 已经处于稳定的运营状态,Mahdavi 发现他们使用的工程方法是他从未见过的。因为他们在使用 Erlang 作为编程语言,并使用一款名为 FreeBSD 的操作系统,这使他们的系统变得很简单。 “这是一个完全不同的搭建大规模基础架构的方法,”他在周一时候说。 “能够了解到有这样的简单方法来解决问题真是大开眼界。”
并行性编程语言的利用
WhatsApp 使用 Erlang 只是推动此类并行性(同时跑多个程序)编程语言前进的一个侧面。因为互联网服务涉及得人越多越需要多任务处理,这时这类编程语言就显得格外具有吸引力了。
非死book 一直在使用一种叫 Haskell 的编程语言搭建反垃圾邮件系统。Haskell 最早形成于 80 年代晚期的一个学术实验室,但到如今仍未流行起来。非死book 选择它来阻截垃圾邮件是因为它很擅长于并行任务处理,也因为它可以让程序员对任务进行快速处理。同时,谷歌和 Mozilla——火狐浏览器制造商正在合力开发一种拥有类似功能的语言,为名 Go and Rust。
正如 Haskell 一样,Erlang 也是一个 80 年代的产物。Erlang 是爱立信公司的工程师们为了搭建高速电话网络时而创建的语言。 “Erlang 是为了解决一个特定问题才发明的语言,而不是为了发明而发明,之后才发现了它的用途,”Erlang 的专家 Francesco Cesarini 说。 “当时那个特定的问题就是需要强大的可拓展性和可靠性。电话网络是当时唯一能够展现这些属性的系统。”
Erlang 一直都被编程领域边缘化,但是在 WhatsApp 和其他互联网公司,包括微信和 Whisper,它成功找到了像之前电话网络时期一样的存在感。实际上,WhatsApp 就是手机短信的替代服务。它也对 “可扩展性和可靠性”有着极高要求。
另外,Erlang 还让程序员办公更高效,这也是现代软件开发必不可少的部分。它提供了一种方法,可以在程序还在运行的情况下,快速编入新的代码。在这个时刻变化的时代,这个特性是无比有用的。
保持简单,保持聪明
这个语言也有它的缺点。只有相对较少的程序员了解 Erlang,它也不会百分百与如今互联网公司的代码相匹配。非死book 用 Erlang 语言开发了他们自己的聊天 app,但最终他们还是重新用其他语言进行再次开发,以适配其他基础架构。 “Erlang 是我们拥有的一座岛的话,我们很难建造出足够多的船可以停靠到岛上。”非死book 工程副总裁 Jay Parikh 说。
当然,WhatsApp 并不一定要用这种方法与已有基础架构进行整合。Mahdavi 相信这些问题对于 Erlang 的程序员来说并不是问题。“我们的招聘战略是去找最好最聪明的工程师。我们并没有对 Erlang 有特别要求,因为工程师都知道 Erlang,”Mahdavi 在周一时候说。“我们希望工程师加入我们之后,用最初的一周去熟悉这种语言,并学习使用操作环境。如果你雇了聪明的人,他们自然会胜任的。”
从某种程度上来说,公司能够成功也因为雇佣了这些适应力强的工程师。在被问到公司成功的秘诀是,Mahdavi 如此简洁地回答。但这的确是关键。“最重要的是要非常专注到你需要去做的事情上,”他说,“不被其他的事情和其他的技术分心,即使是办公的会议也不行。”
在 WhatsApp,工程师基本从来不参加会议。是的,他们就只有几十人,但这就是关键之所在。