Январь 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)


  1. swordgna
    04.09.2023 13:15
    +16

    А я то думал, почему у них вечно глючит!.. теперь всё понятно))


    1. achekalin
      04.09.2023 13:15
      +2

      Как WhatsApp справлялся с 50 миллиардами сообщений в день, имея всего 32 инженера

      Скажем честно: плохо справлялся и справляется.

      Я лично жду, когда они уже перестанут быть популярны, и помрут, как аська. Кажется, самое классическое приложение из 20 века у меня на телефоне.

      "Ну а чё, пипл хавает!"


  1. EugeneVRN
    04.09.2023 13:15
    +12

    Отсюда бизнес идея: Если тебя не берут в гугл надо сильно разозлится на них, написать топовое приложение и продать им за 19 миллиардов.


    1. Karopka
      04.09.2023 13:15
      +5

      Да, но он сперва айфон купил и "понял огромный потенциал нового App Store".


  1. Regis
    04.09.2023 13:15
    +12

    Из заголовка можно подумать, что производительность системы как-то однозначно и очевидно коррелирует с числом разработчиков (нет).


    1. Aldrog
      04.09.2023 13:15
      +1

      Производительность системы (если речь о бекенде глобального сервиса) прямо коррелирует со своей сложностью, а сложность уже коррелирует с количеством разработчиков.


    1. GospodinKolhoznik
      04.09.2023 13:15
      +3

      Ну до какого то момента, пока вся система работает на одном единственном сервере действительно можно обходиться силами одного единственного человека. Но когда много серверов в разных точках мира, им надо друг с другом как то обмениваться данными, как то взаимно резервировать друг друга и их все надо конфигурировать то уже и 1000 девопсеров может оказаться мало. Так что 32 это действительно круто.


      1. zoonman
        04.09.2023 13:15
        +3

        На самом деле управлять пулом серверов не так уж и сложно. Просто нужно работать с API от облачных провайдеров. Гораздо сложнее профайлить код и выявлять узкие места.


  1. RealSaniok
    04.09.2023 13:15
    +31

    Erlang конечно же был выбран совсем не потому, что на нём ejabberd написан...


  1. drno-reg
    04.09.2023 13:15
    +2

    если приложение такое успешное, то почему тогда Ян Кум его продал?


    1. ilriv
      04.09.2023 13:15
      +8

      Классика же.
      Модератор: Внимание, ролик содержит мат. Если для вас это неприемлемо, то не смотрите его.


    1. rootdefault
      04.09.2023 13:15
      +5

      Потому что сделать технически грамотное приложение это одно, а вот чтоб монетизировать его потенциал уже совсем другие компетенции и команды нужны


    1. shmutz
      04.09.2023 13:15
      +2

      >то почему тогда Ян Кум его продал

      Патамучта все эти мессенджеры офигенно убыточные. Что телеги, что ватсапы.... Статья слишком поверхностная, могли бы эту тему и расписать, явно были внешние инвесторы и не единожды.


    1. romxx
      04.09.2023 13:15
      +3

      "Приложение успешное" и "приложение прибыльное" это два не всегда пересекающихся множества. Продавали прежде всего пользовательскую базу, а не приложение как таковое.


    1. nixtonixto
      04.09.2023 13:15
      +1

      Продал потому, что главное — не сделать. Главное — продать на пике стоимости, тем самым окупив расходы и заработав на жизнь и пенсию.


    1. Hlad
      04.09.2023 13:15

      Потому что сам по себе WhatsApp, как мессенджер, не представляет большого коммерческого интереса. 19 миллиардов заплатили за базу социальных связей (кто с кем переписывается, кто у кого есть в телефонной книге...)


    1. AstarothAst
      04.09.2023 13:15

      А почему нет? Серьезно, почему бы не продать именно то, что популярно? Это позволит продать подороже.


  1. GBR-613
    04.09.2023 13:15
    -5

    Если инженеры - живые люди, то положено говорить не "32 инженера", а "32-х инженеров". (Хотя - 32 неживых компьютера.)


  1. Samhuawei
    04.09.2023 13:15
    +2

    Гм, зашёл в гит ejabberd, лицензия GPL v2. Вотсап не хочет исходники опубликовать? Зовите Столлмена и юристов.

    Ну и по кликбейтному заголовку. У нас 5 инженеров поддерживают примерно 50 платформ с миллионами ежедневных транзакций. Ничего особенного в этом нет. Если продукт написан грамотно, то и проблем масштабирования не должно быть.


    1. Andrusha
      04.09.2023 13:15
      +3

      Предоставление исходников сервера требовалась бы, если бы они поставляли получившуюся модификацию сервера конечным пользователям, а они используют её внутри инфраструктуры.


      1. Samhuawei
        04.09.2023 13:15
        -5

        У вас своеобразное понимание лицензии GPL. На уровне "воровать нельзя, но если никто не видит то можно".


        1. Aldrog
          04.09.2023 13:15
          +2

          Человек всё правильно пишет. Для решения этой проблемы был придуман AGPL.


        1. Andrusha
          04.09.2023 13:15
          +2

          Моё понимание полностью соответствует официальному.


          1. Sap_ru
            04.09.2023 13:15

            А в какой момент они "release the modified version to the public in some way"? Они её не продавали, не сдавали аренду, не распространяли. Раз не было распространения, то нет и обязанности предоставлять исходники.


          1. Samhuawei
            04.09.2023 13:15

            В том пункте что вы процитировали говорится прямо. Если это внутренний инструмент типа линтера или хитрого парсера логов - публиковать не надо. Если код используется в публично доступном проде - извольте опубликовать.


            1. Andrusha
              04.09.2023 13:15

              Про это уже ответил @Sap_ru, причём до вашего толкования того, что «говорится прямо». Про лицензию AGPL вам тоже уже сообщили. В любом случае, про модифицированный ejabberd на бэкенде известно, наверное, с момента запуска WhatsApp; если бы у разработчиков ejabberd были бы претензии к Яну Куму и тем 32 инженерам, они бы их уже озвучили.


              1. Samhuawei
                04.09.2023 13:15

                А при чём тут разработчики ejabberd? Нарушены права широкого неограниченного круга пользователей. Они представлены Free Software Foundation с момента опубликования кода под лицензией GNU GPL v2. Почему не засудят Whatsapp? Не хотят, или времени нет. Опять таки слова на иск не намажешь, нужны доказательства. Я сомневаюсь что суд выдаст иск на арест серверов Facebook на основании слов балабола.


                1. Andrusha
                  04.09.2023 13:15

                  Почему не засудят Whatsapp?

                  Потому что они ничего не нарушают. Если бы был повод, то моментально собралась бы толпа юристов, желающих поучаствовать в доении Meta. Но вопрос за всё это время даже не поднимался.


    1. strangeman
      04.09.2023 13:15

      Зависит от характера модификаций. Ejabberd, насколько я помню, отлично расширяется за счет плагинов и такие плагины могут трактоваться как отдельный piece of software, соответственно могут лицензироваться иначе.

      Аналогичная история с WordPress например, он тоже под GNU GPL v2, однако ж никто не заставляет публиковать исходники платных плагинов к нему.


    1. zodchiy
      04.09.2023 13:15

      Вы перепутали требования GPL с AGPL.


    1. thunderspb
      04.09.2023 13:15

      Полностью согласен. Грамотный девопс может "держать" достаточно жирный прод. Сре для этого не особо нужны. Главное акхитектура, как это настроено и грамотные ранбуки для ноков. Не обязательно иметь 100500 "инженеров"...


      1. vainkop
        04.09.2023 13:15

        Сре для этого не особо нужны.

        ?

        SRE implements DevOps https://sre.google/workbook/how-sre-relates/


  1. Samhuawei
    04.09.2023 13:15
    -4

    Для управления серверами WhatsApp разработчики использовали операционную систему FreeBSD, потому что уже имели опыт работы с ней в Yahoo. К тому же у FreeBSD имеется тщательно настроенный и надёжный сетевой стек.

    Сдаётся мне и тут они выбрали ОС чтобы не публиковать изменения в исходном коде. У FreeBSD лицензия позволяет, в отличие от ядра линукса.


  1. Samhuawei
    04.09.2023 13:15
    -3

    В следующем году он покупает iPhone и сразу же понимает огромный потенциал нового App Store.

    С точки зрения владельца бизнеса огромный потенциал видимо у самой Apple, а для стартапа App Store это немалые расходы и постоянная игра в лицензионные соглашения которые Apple меняет на ходу. С этой точки зрения на Андроиде попроще. На крайняк есть магазин huawei или просто apk.


  1. BigVal
    04.09.2023 13:15

    А минимизация в трей видимо противоречит их первому принципу единой (или единственной?) ответственности... Ах да, "это процесс добавления в продукт излишних функций, усложняющих пользование им."


  1. vladvul
    04.09.2023 13:15
    -1

    Киллер фича воцапа было сканирование контактов, а также рассылка приглашений по смс


  1. Hlad
    04.09.2023 13:15
    +2

    Из статьи я понял прежде всего, что Ян Кум за 9 лет пропил 5 миллиардов долларов.


  1. Yuri_nedre
    04.09.2023 13:15

    Где-то после продажи фейсбуку, как раз и бросили развивать приложение. Реально за 10 лет ничего нового не появилось.


    1. Firsto
      04.09.2023 13:15

      А куда его развивать? Цели достигнуты, всё работает.)

      При развитии продукта упор всегда делался на его основную функцию — обмен сообщениями.


    1. blind_oracle
      04.09.2023 13:15
      +3

      Не люблю Whatsapp, но вот "развитие" в духе Telegram "а давайте добавим сторис и крипту" - спасибо не надо. Крипта провалилась и слава богу, но сторисы приехали.


      1. vainkop
        04.09.2023 13:15

        "развитие" в духе Telegram "а давайте добавим сторис и крипту" - спасибо не надо

        Телега очень хороша, но, видимо, не на ваш вкус.

        Крипта провалилась и слава богу

        Крипта вполне себе жива и развивается, а кошелёк телеги с p2p очень удобен.


        1. blind_oracle
          04.09.2023 13:15

          Телега хороша, но попытка сделать из хорошего мессенджера очередной WeChat где напихано всё - не надо.

          А про крипту я имел в виду TON, который туда прикрутить хотели.


          1. vainkop
            04.09.2023 13:15

            Мне как раз нравится концепция "очередного WeChat", но таки более понятного для нас и более быстрого.

            Ton вполне жив и развивается, а на этой неделе он подорожал процентов на 30-40, т.к. Ton Space запустили, обмен TON/USDT возможен и судя по всему Ton вот вот начнёт торговаться на Binance и ещё несколько факторов.


  1. shornikov
    04.09.2023 13:15
    +1

    А где они брали деньги на железо, когда внезапно выскочили в стратосферу?


  1. haword
    04.09.2023 13:15

    Я так понимаю все придумали инженеры, 32 человек, всю систему реализовали, все работало. а их начальник взял и все продал за 19 миллиардов и все положил себе в карман. молодец.


    1. blind_oracle
      04.09.2023 13:15

      Я думаю, что в такой мелкой конторе они все были акционерами и стали мультимиллионерами потом.


  1. disco18
    04.09.2023 13:15

    Интересно, сохранилась ли подобная схема после покупки фейсбуком)


  1. mikegordan
    04.09.2023 13:15

    Интересно сколько у них ЗП если всего вся прибыль делится на 32 лица )


    1. DenSan38
      04.09.2023 13:15

      Кто сказал,что она делится (делилась)?


  1. oleg_rico
    04.09.2023 13:15

    А меня всегда интересовало- почему skype, который начал значительно, раньше не стал таким мегапопулярным как WhatsApp? Я могу предположить что ошибка Скайпа была идентификация по никнеймам, а не по номеру телефона, но это же можно было исправить, когда WhatsApp стал набирать обороты.

    Ну и конечно Аська, которая была мессенджером ещё в те времена когда никто не слышал про WhatsApp, она почему не стала?


    1. Andrusha
      04.09.2023 13:15

      но это же можно было исправить

      Можно было, но не исправили. Из конца нулевых не всем было очевидно, что через 10 лет смартфон станет основным средством доступа в Интернет у большинства населения планеты.

      Помимо аутентификации по номеру телефона, думаю, там требовалось некоторое допиливание как клиентов, так и бэкенда, и тут уже возникает финансовый вопрос, напрямую связанный с предыдущей причиной: стоит ли оно того, и как это всё монетизировать? Я напомню: Skype зарабатывал деньги функцией звонков на обычные телефоны, а ICQ вообще рекламой в официальном клиенте.


    1. Samhuawei
      04.09.2023 13:15
      +2

      Скайп был мегапопулярным. Пока его не купила Microsoft. Но у самой Microsoft было как минимум два схожих приложения. И на скайп положили болт.


      1. oleg_rico
        04.09.2023 13:15

        Skype был популярным до тех пор пока не появилась альтернатива. более простая в использовании и более удобная в виде идентификации по номеру.

        Кстати, недавно нужно было позвонить на заграничный номер и я так и не нашёл чем это сделать удобно, так как баланс skype пополнить не смог. Невозможно сейчас пополнить баланс российского skype


        1. Samhuawei
          04.09.2023 13:15
          -1

          Всякая идентификация по номеру телефона это дыра в безопасности человека. Сольют логи с сервера по запросу роскомпозора и нарисуют двушечку. Скайп в этом смысле безопаснее. Ник к делу не пришьёшь.


        1. Shatun
          04.09.2023 13:15

          ИМХО, скайп убил переезд на новый бек с порядка года продолжающимися глюками и подвисаниями.


      1. Shatun
        04.09.2023 13:15

        Но у самой Microsoft было как минимум два схожих приложения. И на скайп положили болт.

        Скайп нормально разивался, фичи выкатывались, сами изменения были в основном необходимыми. Но в техническом плане это было сделано совсем негладко.


  1. Psychosynthesis
    04.09.2023 13:15
    +2

    Этот пассаж про 32-х инженеров вкупе с упоминанием числа сообщений создаёт впечатление, что они должны были руками сидеть и эти миллиарды сообщений разбирать, и именно поэтому автор статьи так восхитился.

    А вообще, статья мусор конечно абсолютный, как и сам WhatsApp собственно. Великая загадка почему такой хлам такой рейтинг набирает.


  1. joker2k1
    04.09.2023 13:15

    За 10 лет пропил 5 млрд. Неплохо )