AI实践哪家强?来 AICon, 解锁技术前沿,探寻产业新机! 了解详情
写点什么

50 名工程师支撑着一个 10 亿用户量的产品:成功因素之一是员工几乎不参会

  • 2021-11-03
  • 本文字数:2362 字

    阅读完需:约 8 分钟

50名工程师支撑着一个10亿用户量的产品:成功因素之一是员工几乎不参会

WhatsApp 是全球最受欢迎的聊天软件之一,目前用户数量以达到 10 亿。让人惊讶的是,如此庞大的用户数量背后,是由一个仅有 50 名工程师的技术团队做支撑的。本文,我们从工程文化、技术栈等方面来解读 WhatsApp 如何仅用 50 名工程师就将用户规模扩大到 10 亿。

WhatsApp 的工程文化

 

关于 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 的技术栈

除了极简主义的工程文化以外,确定正确的技术方向以及合理搭建技术栈也是 WhatsApp 成功的秘诀之一。该技术栈围绕着三个核心组件:Erlang、FreeBSD 和 SoftLayer。

Erlang

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

FreeBSD 是 WhatsApp 服务器使用的操作系统。

 

决定使用 FreeBSD 的是 WhatsApp 创始人,这是基于他们之前在雅虎的经验。创始人(以及许多早期团队)都曾经是雅虎的一员,而雅虎广泛使用 FreeBSD。

 

想了解 WhatsApp 到底是如何使用 FreeBSD 的,可打开链接查看详情(请注意,这个讲座是 2014 年的,所以其中一些内容现在可能已经过时了):

 

https://www.youtube.com/watch?v=TneLO5TdW_M

 

SoftLayer

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-billion

2021-11-03 13:503078
用户头像
李冬梅 加V:busulishang4668

发布了 1114 篇内容, 共 728.7 次阅读, 收获喜欢 1257 次。

关注

评论

发布
暂无评论
发现更多内容

SAP ABAP 系统同微软 Office 套件进行 Desktop Integration 的工作原理

汪子熙

Office SAP abap Netweaver 7月月更

Kafka面试22连问,看完直接跟面试官聊骚都没问题

程序知音

Java kafka 程序员 后端 程序员面试

Kubernetes核心技术剖析和DevOps落地经验|研发效能

laofo

DevOps k8s 研发效能 工程效率

Qt 实现解压压缩包

小肉球

qt 7月月更

阿里云机器学习平台PAI与华东师范大学论文入选SIGIR 2022

阿里云大数据AI技术

Transformer 机器学习/深度学习

【LeetCode】实现一个魔法字典Java题解

Albert

LeetCode 7月月更

Git .ignore 文件规则不生效

攻城狮杰森

git IDEA 协同开发 7月月更

【Docker 那些事儿】如何安全地停止、删除容器

Albert Edison

Docker Kubernetes 容器 云原生 7月月更

内部排序——基数排序and总结

乔乔

7月月更

从虚拟中发展电网现实:数字孪生承载的能源变革

脑极体

Python 入门指南之类

海拥(haiyong.site)

7月月更

“Shift”键——一直被人低估的功能键

极客天地

长安链研究笔记 - win10(goland)源码启动长安链,可调试源码

长安链

机器学习-聚类算法

AIWeker

机器学习 聚类算法 7月月更

低代码实现探索(四十四)检查器待研究

零道云-混合式低代码平台

双目立体匹配之代价聚合

秃头小苏

7月月更

Wallys/Qualcomm IPQ8072A networking SBC supports dual 10GbE, WiFi 6

wallys-wifi6

2022年数据库审计厂家排名看这里!

行云管家

数据库 行云管家 数据库审计

现在云堡垒机价格是多少?贵吗?可以先免费试用吗?

行云管家

云计算 堡垒机 云堡垒机 IT资产安全

打造“拉动式”企业培训管理方案,释放人才潜能

明道云

动态化UI在Qunar客户端首页的应用

Qunar技术沙龙

WWDC22 - Apple 隐私技术探索

37手游iOS技术运营团队

ios macos apple appstore WWDC22

WWDC22 - In App Purchase 更新总结

37手游iOS技术运营团队

ios iap appstore WWDC22 In App Purchase

2022年7月中国数据库排行榜:墨天轮榜单榜眼易主,PolarDB得分涨幅最大

墨天轮

数据库 TcaplusDB TiDB 国产数据库 polarDB

👨‍💻Mybatis源码我搞透了,面试来问吧!写了134个源码类,1.03万行代码!

小傅哥

源码分析 小傅哥 mybatis 大厂面试 面试经验

LED显示器好用吗?

Dylan

web技术分享| 基于vue3实现自己的组件库第二章:Pagination组件

anyRTC开发者

前端 Web 音视频 Vue3 Pagination

大厂都在玩的容器技术到底是什么?

慕枫技术笔记

容器 云原生 7月月更

如何提交一个PR?完成这 6 点就可以了

OpenAnolis小助手

开发者 pull request 龙蜥社区 【人人都可以参与开源】 社区建设

开源协议详解

源字节1号

开源 软件开发 前端开发 后端开发

活动报名|聚焦案例实践,Apache Pulsar 在线 Meetup 火热来袭

腾源会

开源 腾源会 Apache Pulsar 社区

50名工程师支撑着一个10亿用户量的产品:成功因素之一是员工几乎不参会_文化 & 方法_Quastor Daily_InfoQ精选文章