【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

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

公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

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

发布了 809 篇内容, 共 377.6 次阅读, 收获喜欢 998 次。

关注

评论

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

【极客大学】【架构师训练营】【第四周】典型大型互联网应用系统的技术方案和手段

NieXY

极客大学架构师训练营

大型互联网应用系统技术方案和手段总结

CATTY

互联网

云计算 “拍了拍” Serverless

零度

云计算 Serverless 互联网 计算机

互联网架构演化

极客李

浅谈互联网系统架构

鲁米

一个典型的大型互联网应用系统的技术方案&手段

Amy

极客大学架构师训练营 作业 第四周

大型互联网系统使用的技术和方案

极客李

Week 04 命题作业

卧石漾溪

极客大学架构师训练营

架构师训练营 week03 总结

尔东雨田

极客大学架构师训练营

Week4 作业

Shawn

深入浅出Shiro系列——权限认证

程序员的时光

权限系统

Week04 作业

极客大学架构师训练营

做产品少走弯路:你需要懂点高阶的知识

我是IT民工

产品 管理 知识体系

架构师训练营 Week 04 总结

Wancho

架构师训练营第四周作业

一剑

大型系统常用的技术方案和技术手段

imicode

重学 Java 设计模式:实战观察者模式「模拟类似小客车指标摇号过程,监听消息通知用户中签场景」

小傅哥

Java 设计模式 小傅哥 代码优化 观察者模式

第四周总结

Geek_5d0795

极客大学架构师训练营

架构师训练营第四周-系统架构综述

草原上的奔跑

架构师第四周学习总结

傻傻的帅

维基百科(Wikipedia)网站架构设计分析

架构5班杨娟Jessie

极客大学架构师训练营

架构师训练营」第 4 周作业

edd

【微信聊天】5张图帮你看懂二分查找

Java小咖秀

Java 算法 漫画 二分查找

本周的一些总结

Geek_zhangjian

用100行代码手写一个Hystrix

小眼睛聊技术

Java 架构 高可用 设计 后端

架构师训练营 week03 作业

尔东雨田

极客大学架构师训练营

架构师第四周作业

傻傻的帅

极客时间架构师训练营 - week4 - 作业 2

jjn0703

week4总结---系统架构

a晖

小师妹学JVM之:逃逸分析和TLAB

程序那些事

Java JVM TLAB 逃逸分析 签约计划第二季

大型互联网应用系统的技术方案和手段(训练营第四课)

看山是山

分布式 微服务 极客大学架构师训练营

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