写点什么

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:503062
用户头像
李冬梅 加V:busulishang4668

发布了 1105 篇内容, 共 718.7 次阅读, 收获喜欢 1253 次。

关注

评论

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

Sovit3D数字孪生智慧机场三维可视化云平台

数据可视化平台

物联网 智慧机场 机场三维可视化 数字孪生机场 机场数字化转型

一文读懂加密资产板块的盈利潜力与投资机会

鳄鱼视界

Java NIO关键概念之Buffer

老农小江

Java 源码解读 java nio

Linux三剑客grep、sed、awk以及正则表达式

A-刘晨阳

Linux 运维 11月月更 三剑客

类和动态内存分配

Maybe_fl

硬核技术助力提效,腾讯广告持续探索产学融合新航图

科技热闻

项目git-flow版本控制优化

Geek_pwdeic

git gitlab git-flow

六张图详解LinkedList 源码解析

Jeremy Lai

源码 linkedlist

TOGAF企业架构框架-6架构治理和组织落地

马说IT

TOGAF 架构治理 企业架构框架

中国APM市场份额第一!博睿数据实力领跑

博睿数据

可观测性 IDC 博睿数据 ONE平台 智能运维AIOps

OpenMLDB BUG 悬赏令

第四范式开发者社区

人工智能 机器学习 数据库 开源 特征

Linux磁盘管理

A-刘晨阳

Linux 运维 磁盘 磁盘分区 11月月更

2022年10月中国汽车智能网联月度观察

易观分析

汽车 智能网联

干货收藏|Clickhouse 常见问题及解决方案汇总

云智慧AIOps社区

MySQL 数据库 Clickhouse Data 故障处理

ArrayList源码解析

Jeremy Lai

源码 ArrayList

活动预告 | 2022 SACC 中国系统架构师大会

第四范式开发者社区

人工智能 机器学习 数据库 开源 特征

软件测试面试真题 | 什么是PO设计模式?

测试人

软件测试 自动化测试 PO 测试开发 UI自动化测试

性能优化-懒加载(图片 组件 路由)

肥晨

懒加载 11月月更 图片懒加载 路由懒加载 组件懒加载

前端性能优化常问面试题-防抖节流

肥晨

防抖 节流 防抖节流 前端面试题 11月月更

OpenMLDB 新手宝典 开发者上手必读

第四范式开发者社区

人工智能 机器学习 数据库 开源 特征

Go 容器之队列的几种实现方式

宇宙之一粟

队列 数据结构与算法 Go 语言 11月月更

企业如何正确使用低代码转型升级

力软低代码开发平台

20款免费项目管理软件大盘点!你用过几款?

优秀

项目管理软件

G1 垃圾收集器深入剖析(图文超详解)

mikechen的互联网架构

Java 架构 面试 G1垃圾回收器 11月月更

MYSQL大法之慢SQL--COMMIT

小书童

MySQL 数据库 11月月更

通过 Python FastAPI 开发一个快速的 Web API 项目

宇宙之一粟

Python Web框架 FastApi 11月月更

服务器的正向代理与反向代理

我是一个茶壶

服务器 正向代理与反向代理 11月月更

OpenMLDB 线上引擎资源需求预估模型,助你快速预估资源消耗

第四范式开发者社区

人工智能 机器学习 数据库 开源 特征

Linux进程管理

A-刘晨阳

Linux 运维 进程 11月月更

盒子模型-css中的老生常谈

肥晨

11月月更 盒子模型 css盒子模型 css面试题

量化合约对冲交易机器人app系统开发案例

开发微hkkf5566

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