
Январь 2008 года — Калифорния, США.
Инженер Ян Кум нанимается на работу в Facebook* — получает отказ.
Это был не конец — он продолжил двигаться дальше.
В следующем году он покупает iPhone и сразу же понимает огромный потенциал нового App Store.
С несколькими бывшими коллегами из Yahoo он решает создать программу мгновенного обмена сообщениями. Программе дают имя WhatsApp. Предназначение WhatsApp — стать заменой дорогостоящим SMS.
Рост популярности WhatsApp поражает воображение — каждый день в него заходит один миллион людей.
WhatsApp мог справляться с 50 миллиардами сообщений в день от 450 миллионов активных пользователей, имея в штате всего 32 инженера.
Хотя взрывной рост продукта — это приятная проблема, для её решения Яну Куму и команде разработчиков WhatsApp пришлось применить самые передовые технологии проектирования.
Разработка WhatsApp
Методики обеспечения огромной масштабируемости WhatsApp можно вкратце описать так:
▍ 1. Принцип единственной ответственности
При развитии продукта упор всегда делался на его основную функцию — обмен сообщениями.
Разработчики не стремились к созданию рекламной сети или платформы соцсетей.

Они всеми способами избавлялись от разрастания функций (feature creep).
Разрастание функций — это процесс добавления в продукт излишних функций, усложняющих пользование им.
Благодаря минималистичным требованиям к продукту, команда разработчиков смогла поставить на первое место надёжность WhatsApp.
▍ 2. Технологический стек
Для реализации основных функций серверов WhatsApp был использован язык программирования Erlang; на то имелись следующие причины:
- он обеспечивает чрезвычайно высокую масштабируемость при малой затрате ресурсов
- он поддерживает горячую загрузку
Потоки — нативная функция Erlang, в отличие от Java или C++, где потоки принадлежат операционной системе. Нативные потоки в Erlang снижают затраты на переключение контекста, потому что отсутствует необходимость сохранения всего состояния CPU.
Горячая загрузка упрощает развёртывание изменений в коде без перезапуска сервера или перенаправления трафика. Проще говоря, горячая загрузка обеспечивает чрезвычайно высокий уровень доступности сервиса.
▍ 3. Зачем заново изобретать велосипед?
Не надо придумывать велосипеды — или используйте опенсорс, или купите коммерческое решение.

Ejabberd — это написанный на Erlang опенсорсный сервер для обмена сообщениями в реальном времени.
WhatsApp был создан на основе ejabberd. Команда разработчиков дополнила ejabberd, переписав часть его основных компонентов под свои нужды.
WhatsApp использовал сторонние сервисы, например, Google Push для реализации пуш-уведомлений.
▍ 4. Сквозная функциональность
Сквозная функциональность — это элементы, влияющие на многие части продукта и которые сложно разделить. Например, это мониторинг состояния сервисов и алерты.
Огромное внимание было уделено тому, чтобы сквозная функциональность повышала качество продукта.

Continuous integration (CI) — это практика, при которой инженеры регулярно объединяют свои изменения в коде в центральный репозиторий.
Continuous delivery (CD) — это практика автоматического развёртывания изменений в коде в тестовом окружении или в продакшене.
Команда WhatsApp использовала Continuous integration и Continuous delivery для совершенствования своего процесса разработки ПО.
▍ 5. Масштабируемость
Горизонтальное масштабирование — это процесс увеличения количества машин в пуле ресурсов.
Вертикальное масштабирование — это процесс увеличения мощностей машины, например, CPU или памяти.
Диагональное масштабирование — это гибрид горизонтального и вертикального масштабирования, при нём вычислительные ресурсы добавляются и вертикально, и горизонтально.
Для снижения затрат и степени сложности эксплуатации WhatsApp использовал диагональное масштабирование.

Для управления серверами WhatsApp разработчики использовали операционную систему FreeBSD, потому что уже имели опыт работы с ней в Yahoo. К тому же у FreeBSD имеется тщательно настроенный и надёжный сетевой стек.
FreeBSD была индивидуально настроена таким образом, чтобы выдерживать по два с лишним миллиона соединений на сервер. Были изменены такие параметры ядра, как файлы и сокеты.
Ресурсы на серверах резервировались избыточно, чтобы выдерживать резкие скачки трафика и справляться с такими сбоями, как нарушения связности сети или выход оборудования из строя.
▍ 6. Эффект маховика
Разработчики измеряли такие метрики, как CPU, переключения контекста и системные вызовы, выявляя и устраняя узкие места. Такие операции выполнялись через равные промежутки времени.

Цикл непрерывной обратной связи существенно повысил производительность WhatsApp.
▍ 7. Качество
Нагрузочное тестирование — это процесс измерения производительности системы под ожидаемой нагрузкой. Оно выполнялось для выявления единых точек отказа.

Нагрузочное тестирование выполняется или генерированием искусственного трафика продакшена, или настройкой DNS для перенаправления большего объёма трафика на определённый сервер.
▍ 8. Малый размер команды
С увеличением размера команды пути коммуникации между инженерами увеличиваются квадратически. И это приводит к снижению продуктивности.
Команду разработки WhatsApp специально ограничивали в размерах — в ней было всего 32 инженера

Итог
WhatsApp считается одним из самых успешных приложений для мгновенного обмена сообщениями.
В 2014 году WhatsApp был куплен за огромную сумму в 19 миллиардов долларов тем же Facebook*, который отказал в найме Яну Куму.
По данным Forbes, собственные активы Яна Кума составляют в 2023 году 14 миллиардов долларов.
Meta Platforms*, а также принадлежащие ей Facebook** и Instagram**:
* признана экстремистской организацией, её деятельность в России запрещена;
** запрещены в России.
Telegram-канал с розыгрышами призов, новостями IT и постами о ретроиграх ????️

Комментарии (58)
Regis
04.09.2023 13:15+12Из заголовка можно подумать, что производительность системы как-то однозначно и очевидно коррелирует с числом разработчиков (нет).
Aldrog
04.09.2023 13:15+1Производительность системы (если речь о бекенде глобального сервиса) прямо коррелирует со своей сложностью, а сложность уже коррелирует с количеством разработчиков.
GospodinKolhoznik
04.09.2023 13:15+3Ну до какого то момента, пока вся система работает на одном единственном сервере действительно можно обходиться силами одного единственного человека. Но когда много серверов в разных точках мира, им надо друг с другом как то обмениваться данными, как то взаимно резервировать друг друга и их все надо конфигурировать то уже и 1000 девопсеров может оказаться мало. Так что 32 это действительно круто.
zoonman
04.09.2023 13:15+3На самом деле управлять пулом серверов не так уж и сложно. Просто нужно работать с API от облачных провайдеров. Гораздо сложнее профайлить код и выявлять узкие места.
RealSaniok
04.09.2023 13:15+31Erlang конечно же был выбран совсем не потому, что на нём ejabberd написан...
drno-reg
04.09.2023 13:15+2если приложение такое успешное, то почему тогда Ян Кум его продал?
ilriv
04.09.2023 13:15+8Классика же.
Модератор: Внимание, ролик содержит мат. Если для вас это неприемлемо, то не смотрите его.
rootdefault
04.09.2023 13:15+5Потому что сделать технически грамотное приложение это одно, а вот чтоб монетизировать его потенциал уже совсем другие компетенции и команды нужны
shmutz
04.09.2023 13:15+2>то почему тогда Ян Кум его продал
Патамучта все эти мессенджеры офигенно убыточные. Что телеги, что ватсапы.... Статья слишком поверхностная, могли бы эту тему и расписать, явно были внешние инвесторы и не единожды.
romxx
04.09.2023 13:15+3"Приложение успешное" и "приложение прибыльное" это два не всегда пересекающихся множества. Продавали прежде всего пользовательскую базу, а не приложение как таковое.
nixtonixto
04.09.2023 13:15+1Продал потому, что главное — не сделать. Главное — продать на пике стоимости, тем самым окупив расходы и заработав на жизнь и пенсию.
Hlad
04.09.2023 13:15Потому что сам по себе WhatsApp, как мессенджер, не представляет большого коммерческого интереса. 19 миллиардов заплатили за базу социальных связей (кто с кем переписывается, кто у кого есть в телефонной книге...)
AstarothAst
04.09.2023 13:15А почему нет? Серьезно, почему бы не продать именно то, что популярно? Это позволит продать подороже.
GBR-613
04.09.2023 13:15-5Если инженеры - живые люди, то положено говорить не "32 инженера", а "32-х инженеров". (Хотя - 32 неживых компьютера.)
Samhuawei
04.09.2023 13:15+2Гм, зашёл в гит ejabberd, лицензия GPL v2. Вотсап не хочет исходники опубликовать? Зовите Столлмена и юристов.
Ну и по кликбейтному заголовку. У нас 5 инженеров поддерживают примерно 50 платформ с миллионами ежедневных транзакций. Ничего особенного в этом нет. Если продукт написан грамотно, то и проблем масштабирования не должно быть.Andrusha
04.09.2023 13:15+3Предоставление исходников сервера требовалась бы, если бы они поставляли получившуюся модификацию сервера конечным пользователям, а они используют её внутри инфраструктуры.
Samhuawei
04.09.2023 13:15-5У вас своеобразное понимание лицензии GPL. На уровне "воровать нельзя, но если никто не видит то можно".
Andrusha
04.09.2023 13:15+2Моё понимание полностью соответствует официальному.
Sap_ru
04.09.2023 13:15А в какой момент они "release the modified version to the public in some way"? Они её не продавали, не сдавали аренду, не распространяли. Раз не было распространения, то нет и обязанности предоставлять исходники.
Samhuawei
04.09.2023 13:15В том пункте что вы процитировали говорится прямо. Если это внутренний инструмент типа линтера или хитрого парсера логов - публиковать не надо. Если код используется в публично доступном проде - извольте опубликовать.
Andrusha
04.09.2023 13:15Про это уже ответил @Sap_ru, причём до вашего толкования того, что «говорится прямо». Про лицензию AGPL вам тоже уже сообщили. В любом случае, про модифицированный ejabberd на бэкенде известно, наверное, с момента запуска WhatsApp; если бы у разработчиков ejabberd были бы претензии к Яну Куму и тем 32 инженерам, они бы их уже озвучили.
Samhuawei
04.09.2023 13:15А при чём тут разработчики ejabberd? Нарушены права широкого неограниченного круга пользователей. Они представлены Free Software Foundation с момента опубликования кода под лицензией GNU GPL v2. Почему не засудят Whatsapp? Не хотят, или времени нет. Опять таки слова на иск не намажешь, нужны доказательства. Я сомневаюсь что суд выдаст иск на арест серверов Facebook на основании слов балабола.
Andrusha
04.09.2023 13:15Почему не засудят Whatsapp?
Потому что они ничего не нарушают. Если бы был повод, то моментально собралась бы толпа юристов, желающих поучаствовать в доении Meta. Но вопрос за всё это время даже не поднимался.
strangeman
04.09.2023 13:15Зависит от характера модификаций. Ejabberd, насколько я помню, отлично расширяется за счет плагинов и такие плагины могут трактоваться как отдельный piece of software, соответственно могут лицензироваться иначе.
Аналогичная история с WordPress например, он тоже под GNU GPL v2, однако ж никто не заставляет публиковать исходники платных плагинов к нему.
thunderspb
04.09.2023 13:15Полностью согласен. Грамотный девопс может "держать" достаточно жирный прод. Сре для этого не особо нужны. Главное акхитектура, как это настроено и грамотные ранбуки для ноков. Не обязательно иметь 100500 "инженеров"...
vainkop
04.09.2023 13:15
Samhuawei
04.09.2023 13:15-4Для управления серверами WhatsApp разработчики использовали операционную систему FreeBSD, потому что уже имели опыт работы с ней в Yahoo. К тому же у FreeBSD имеется тщательно настроенный и надёжный сетевой стек.
Сдаётся мне и тут они выбрали ОС чтобы не публиковать изменения в исходном коде. У FreeBSD лицензия позволяет, в отличие от ядра линукса.
Samhuawei
04.09.2023 13:15-3В следующем году он покупает iPhone и сразу же понимает огромный потенциал нового App Store.
С точки зрения владельца бизнеса огромный потенциал видимо у самой Apple, а для стартапа App Store это немалые расходы и постоянная игра в лицензионные соглашения которые Apple меняет на ходу. С этой точки зрения на Андроиде попроще. На крайняк есть магазин huawei или просто apk.
BigVal
04.09.2023 13:15А минимизация в трей видимо противоречит их первому принципу единой (или единственной?) ответственности... Ах да, "это процесс добавления в продукт излишних функций, усложняющих пользование им."
vladvul
04.09.2023 13:15-1Киллер фича воцапа было сканирование контактов, а также рассылка приглашений по смс
Hlad
04.09.2023 13:15+2Из статьи я понял прежде всего, что Ян Кум за 9 лет пропил 5 миллиардов долларов.
Yuri_nedre
04.09.2023 13:15Где-то после продажи фейсбуку, как раз и бросили развивать приложение. Реально за 10 лет ничего нового не появилось.
Firsto
04.09.2023 13:15А куда его развивать? Цели достигнуты, всё работает.)
При развитии продукта упор всегда делался на его основную функцию — обмен сообщениями.
blind_oracle
04.09.2023 13:15+3Не люблю Whatsapp, но вот "развитие" в духе Telegram "а давайте добавим сторис и крипту" - спасибо не надо. Крипта провалилась и слава богу, но сторисы приехали.
vainkop
04.09.2023 13:15"развитие" в духе Telegram "а давайте добавим сторис и крипту" - спасибо не надо
Телега очень хороша, но, видимо, не на ваш вкус.
Крипта провалилась и слава богу
Крипта вполне себе жива и развивается, а кошелёк телеги с p2p очень удобен.
blind_oracle
04.09.2023 13:15Телега хороша, но попытка сделать из хорошего мессенджера очередной WeChat где напихано всё - не надо.
А про крипту я имел в виду TON, который туда прикрутить хотели.
vainkop
04.09.2023 13:15Мне как раз нравится концепция "очередного WeChat", но таки более понятного для нас и более быстрого.
Ton вполне жив и развивается, а на этой неделе он подорожал процентов на 30-40, т.к. Ton Space запустили, обмен TON/USDT возможен и судя по всему Ton вот вот начнёт торговаться на Binance и ещё несколько факторов.
shornikov
04.09.2023 13:15+1А где они брали деньги на железо, когда внезапно выскочили в стратосферу?
haword
04.09.2023 13:15Я так понимаю все придумали инженеры, 32 человек, всю систему реализовали, все работало. а их начальник взял и все продал за 19 миллиардов и все положил себе в карман. молодец.
blind_oracle
04.09.2023 13:15Я думаю, что в такой мелкой конторе они все были акционерами и стали мультимиллионерами потом.
oleg_rico
04.09.2023 13:15А меня всегда интересовало- почему skype, который начал значительно, раньше не стал таким мегапопулярным как WhatsApp? Я могу предположить что ошибка Скайпа была идентификация по никнеймам, а не по номеру телефона, но это же можно было исправить, когда WhatsApp стал набирать обороты.
Ну и конечно Аська, которая была мессенджером ещё в те времена когда никто не слышал про WhatsApp, она почему не стала?
Andrusha
04.09.2023 13:15но это же можно было исправить
Можно было, но не исправили. Из конца нулевых не всем было очевидно, что через 10 лет смартфон станет основным средством доступа в Интернет у большинства населения планеты.
Помимо аутентификации по номеру телефона, думаю, там требовалось некоторое допиливание как клиентов, так и бэкенда, и тут уже возникает финансовый вопрос, напрямую связанный с предыдущей причиной: стоит ли оно того, и как это всё монетизировать? Я напомню: Skype зарабатывал деньги функцией звонков на обычные телефоны, а ICQ вообще рекламой в официальном клиенте.
Samhuawei
04.09.2023 13:15+2Скайп был мегапопулярным. Пока его не купила Microsoft. Но у самой Microsoft было как минимум два схожих приложения. И на скайп положили болт.
oleg_rico
04.09.2023 13:15Skype был популярным до тех пор пока не появилась альтернатива. более простая в использовании и более удобная в виде идентификации по номеру.
Кстати, недавно нужно было позвонить на заграничный номер и я так и не нашёл чем это сделать удобно, так как баланс skype пополнить не смог. Невозможно сейчас пополнить баланс российского skype
Samhuawei
04.09.2023 13:15-1Всякая идентификация по номеру телефона это дыра в безопасности человека. Сольют логи с сервера по запросу роскомпозора и нарисуют двушечку. Скайп в этом смысле безопаснее. Ник к делу не пришьёшь.
Shatun
04.09.2023 13:15ИМХО, скайп убил переезд на новый бек с порядка года продолжающимися глюками и подвисаниями.
Shatun
04.09.2023 13:15Но у самой Microsoft было как минимум два схожих приложения. И на скайп положили болт.
Скайп нормально разивался, фичи выкатывались, сами изменения были в основном необходимыми. Но в техническом плане это было сделано совсем негладко.
Psychosynthesis
04.09.2023 13:15+2Этот пассаж про 32-х инженеров вкупе с упоминанием числа сообщений создаёт впечатление, что они должны были руками сидеть и эти миллиарды сообщений разбирать, и именно поэтому автор статьи так восхитился.
А вообще, статья мусор конечно абсолютный, как и сам WhatsApp собственно. Великая загадка почему такой хлам такой рейтинг набирает.
swordgna
А я то думал, почему у них вечно глючит!.. теперь всё понятно))
achekalin
Скажем честно: плохо справлялся и справляется.
Я лично жду, когда они уже перестанут быть популярны, и помрут, как аська. Кажется, самое классическое приложение из 20 века у меня на телефоне.
"Ну а чё, пипл хавает!"