关于 WhatsApp 的故事有许多,其中有趣的部分之一是,它凭借如此小的团队体量实现了如此巨大的规模。
2014 年,Facebook 以 160 亿美元的价格收购即时通讯工具 WhatsApp,其中 40 亿美元为现金、提供价值 120 亿美元的 Facebook 股票、并为 WhatsApp 创始人和团队提供 30 亿美元限制股。
刚被收购时,WhatsApp 只有 35 名工程师,拥有超过 4.5 亿用户。如今,它雇佣了大约 50 名工程师,尽管 WhatsApp 的用户数量已经翻了不止一番,但庞大的用户群依然依靠这一小群工程人员来运行。谈及它成功的原因,WhatsApp 的软件工程师 Jamshid Mahdavi 表示,部分诀窍在于,公司使用了一种名为 Erlang 的编程语言构建其服务。尽管在更广泛的编码社区中 Erlang 并不是很流行,但 Erlang 特别适合处理来自大量用户的通信,它允许工程师动态地部署新代码。但 Mahdavi 表示,态度和技术同样重要。总结起来可以概括为两点,务实、极简的工程文化和正确的技术选型成就了如今的 WhatsApp。
WhatsApp 的工程文化包括三个主要原则:1、大事化小;2、保持简单;3、全神贯注于任务。
WhatsApp 有意将工程人员保持在小规模,只有大约 50 名工程师。个人工程团队也很小,由 1~3 名工程师组成,每个团队都有很大的自主权。
就服务器而言,WhatsApp 更倾向于使用数量较少的服务器,并且尽可能在最大程度上垂直地扩展每台服务器。
之前,他们的目标是每台服务器拥有 100 万个用户(但是当他们向应用程序添加更多的功能,以及用户在每个用户基础上产生更多的活动时,这变得更加困难)。
服务器数量减少意味着故障减少,从而使团队更易于处理。对于软件来说也是如此,它们限制了生产中系统和组件的总数。也就是说,需要开发、部署和支持的系统更少。不需要开发很多系统 / 组件,然后进入维护模式(最终成为孤儿,直到出错)。
WhatsApp 的口号是“不要过度工程”。他们避免在系统和组件上过度投资。取而代之的是,他们专注于建立足够的可扩展性、安全性和可靠性。
在进行技术选择的时候,其中一个关键因素是“什么是最简单的方法?”另外,他们避免在自动化方面的投资,除非完全必要。
WhatsApp 的产品设计非常专注。其主要目的是提供一个具有良好用户界面的核心通信应用程序。他们避免了额外的花里胡哨的功能,也不去实现那些不完全关注核心通信的功能。WhatsApp 认为,简单的产品更易于维护和扩展。
除了极简主义的工程文化以外,确定正确的技术方向以及合理搭建技术栈也是 WhatsApp 成功的秘诀之一。该技术栈围绕着三个核心组件:Erlang、FreeBSD 和 SoftLayer。
Erlang 是 WhatsApp 后端系统首选的编程语言。Erlang 从一开始就被设计用于并行性,容错性是该语言的一个主要特点。
了解更多有关 Erlang 的容错性,可复制链接到浏览器打开查看详情:
https://stackoverflow.com/questions/3172542/are-erlang-otp-messages-reliable-can-messages-be-duplicated/3176864#3176864
开发者使用 Erlang 的效率也非常高。但是,它是一种函数式语言,所以如果你不熟悉这种范式,则需要花一些时间来适应。这门语言非常简洁,只需少量几行代码就可以完成工作。
OTP(Open Telecom Platform,开放电信平台)是 Erlang 的开源中间件、库和工具的集合。
WhatsApp 尽量避免依赖关系,但它们确实使用了 Mnesia,一个 OTP 的分布式数据库。
Erlang 也带来了热交换代码的能力。无需重新启动应用就可以将新的应用代码加载到运行中的应用。这样可以让迭代周期非常快,WhatsApp 可以快速地发布补丁,并且服务的运行时间非常长。
想了解 WhatsApp 的后端究竟是如何用 Erlang 构建的,可复制链接到浏览器打开查看详情:
https://www.youtube.com/watch?v=LJx6mUEFAqQ
更重要的是,Erlang 允许编码人员高速工作——这是现代软件开发的另一个重要部分。它提供了在应用程序继续运行时将新代码部署到应用程序的方法。在这个不断变化的时代,这比以往任何时候都有用。
Erlang 语言确实有它的缺点。最主要的缺点之一就是了解 Erlang 的程序员相对较少,而且它不一定与当今互联网公司已经构建的许多代码兼容。Facebook 用 Erlang 构建了最初的 Facebook 聊天应用程序,但最终进行了重建,以便更好地适应其其他基础设施。
FreeBSD 是 WhatsApp 服务器使用的操作系统。
决定使用 FreeBSD 的是 WhatsApp 创始人,这是基于他们之前在雅虎的经验。创始人(以及许多早期团队)都曾经是雅虎的一员,而雅虎广泛使用 FreeBSD。
想了解 WhatsApp 到底是如何使用 FreeBSD 的,可复制链接到浏览器打开查看详情(请注意,这个讲座是 2014 年的,所以其中一些内容现在可能已经过时了):
https://www.youtube.com/watch?v=TneLO5TdW_M
SoftLayer 是 WhatsApp 在 2016 年使用的托管平台。他们选择 SoftLayer 主要有两个原因:
1、拥有一流的操作系统 FreeBSD。
2、能够订购并操作裸机服务器。
但是, SoftLayer 属于 IBM(IBM 公有云的一部分),后来 WhatsApp 从 SoftLayer 迁移到了使用 Facebook 的基础设施。2017 年,他们开始迁移。
低调的工程师们并没有对外界透露出 WhatsApp 更多的成功秘诀,当被要求解释公司成功的秘密时,Mahdavi 的回答很简单。
他表示:
公司之所以成功,是因为聘用了适应性强的工程师——在多个方面都是如此。最重要的就是要非常专注于你需要做的事情。不要把时间花在其他活动、其他技术,甚至是办公室里的事情上,比如会议。在 WhatsApp,员工几乎从不参加会议,这也是关键所在。
参考链接:https://www.quastor.org/p/how-whatsapp-scaled-to-1-billio
AICon 北京站邀请到上海闪马智能科技联合创始人兼 CTO 林亦宁博士带来《视频智能算法在泛安防场景下的落地应用》。本次演讲将从具体的应用案例出发,介绍以视频分析为主要载体的人工智能算法在泛安防场景中的实际落地形式。介绍如视频事件检测、视频跟踪、视频大数据等算法在真实的场景应用中的算法落地案例,阐述相应的算法和工程实践架构。
会期临近,余票有限,购票请咨询:13269078023(微信同电话)