Рубріки: Мнение

1 млрд пользователей и всего 50 инженеров-программистов — как WhatsApp устроен изнутри

Богдан Мирченко

В феврале 2009 года появился мессенджер под названием WhatsApp (в 2014 году его приобрел Facebook). С тех пор количество его пользователей выросло до 1 млрд, при этом компания славится небольшим штатом — раньше там заявляли, что над мессенджером работают всего 50 инженеров-программистов. Об инженерной культуре и технологическом стеке, благодаря которым это стало возможным, читайте далее.

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

  • 42 млрд сообщений ежедневно;
  • 1,6 млрд изображений ежедневно;
  • 250 млн видео ежедневно.

Такие объемы обслуживала команда всего из 50 человек, и вот как это стало возможным. 

Инженерная культура

Инженерная культура WhatsApp базируется на трех основных принципах: 

  • чем меньше, тем лучше;
  • чем проще, тем лучше;
  • все члены команды должны быть сосредоточены на миссии.

Обо всем по порядку. 

Чем меньше, тем лучше

В WhatsApp осознанно не расширяют команду, над проектом трудятся всего 50 человек. Отдельные инженерные команды также невелики и состоят из 1–3 специалистов, причем каждая группа работает независимо от другой. 

Создатели мессенджера WhatsApp Брайан Эктон и Ян КумСоздатели мессенджера WhatsApp Брайан Эктон и Ян Кум

Создатели мессенджера WhatsApp Брайан Эктон и Ян Кум

Что касается серверов, то боссы WhatsApp предпочитают, чтобы их было немного, но при этом они были вертикально масштабированы в максимально возможной степени. Меньшее количество серверов означает меньшее количество поломок, что облегчает работу команды. 

То же самое относится и к программной части, где специалисты компании намеренно ограничивают общее количество систем и компонентов в производстве, что означает меньшее количество систем, которые необходимо разрабатывать, внедрять и поддерживать. 

Чем проще, тем лучше

В WhatsApp следуют принципу «достаточной инженерии», избегая чрезмерного инвестирования в системы и компоненты. Вместо этого в компании делают акцент на масштабируемости, безопасности и надежности. 

Шаблон интерфейса WhatsApp

При выборе технических решений в WhatsApp сначала стараются ответить на вопрос: «какой подход самый простой?». Кроме того, в компании стараются не инвестировать в автоматизацию, если можно обойтись без нее. 

Все члены команды должны сосредоточиться на общей миссии

Дизайн WhatsApp хорошо проработан. Он нацелен на создание коммуникационного приложения с хорошим UI и без лишних наворотов. В компании стараются не внедрять функции, которые не предназначены для коммуникаций. Чем проще продукт, тем проще его поддерживать и масштабировать. 

Технический стек

Стек технологий WhatsApp состоит из трех основных компонентов: 

Erlang

Это язык программирования, на котором написан бэкенд WhatsApp. Erlang был разработан для параллелизма, его особенность — первоклассная отказоустойчивость. Подробнее об этом можно почитать здесь. Благодаря этому Erlang-разработчики достигают высокой производительности, однако это функциональный язык программирования, поэтому пользователь должен к нему привыкнуть, если не знаком с его парадигмой. Язык очень лаконичен, и на нем легко выполнять задачи с минимум кода.

Пример синтаксиса Erlang: 

-module(db).
-export([new/0,destroy/1,write/3,delete/2,read/2,match/2]).
new()->[].
destroy(_)->ok.
write(Key, Element, Db)->[{Key,Element}] ++ Db.
read(Key, []) ->{error, instance};
read(Key, [{Key,Element}|_])->{ok,Element};
read(Key, [{_,_}|T])->read(Key,T).
delete(Key,[])->[];
delete(Key,[{Key,_}|T])->T;
delete(Key,[H|T]) -> [H| delete(Key,T)].
match(Element, [])->[];
match(Element, [{Key,Element}|T])->[Key| match(Element,T)];
match(Element, [{_,_}|T])->match(Element,T).

OTP (Open Telecom Platform) — это коллекция промежуточного программного обеспечения с открытым исходным кодом, библиотек и инструментов для Erlang. В WhatsApp стараются максимально избегать зависимостей, но используют распределенную базу данных Mnesia, которая является частью OTP. 

Язык поддерживает «горячую» замену кода. То есть пользователь может загрузить новый код в рабочее приложение без перезапуска. Это делает цикл итераций очень быстрым и позволяет WhatsApp выпускать быстрые исправления и обеспечивает длительное время бесперебойной работы серверов. 

FreeBSD

Это операционная система, которую WhatsApp использует для своих серверов. Решение использовать FreeBSD создатели мессенджера приняли на основе своего предыдущего опыта работы в Yahoo.

Узнать, как именно в WhatsApp используется FreeBSD, можно в докладе по ссылке. 

SoftLayer

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

  • доступность FreeBSD как первоклассной операционной системы;
  • возможность заказа и эксплуатации «голых» серверов.

Минус в том, что SoftLayer принадлежит IBM, поэтому со временем WhatsApp перешел от этой платформы на инфраструктуру Facebook. 

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

Останні статті

Что такое прокси-сервер: пояснение простыми словами, зачем нужны прокси

Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…

21.11.2024

Что такое PWA приложение? Зачем необходимо прогрессивное веб-приложение

Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…

19.11.2024

Как создать игру на телефоне: программирование с помощью конструктора

Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…

17.11.2024

Google Bard: эффективный аналог ChatGPT

В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…

14.11.2024

Скрипт и программирование: что это такое простыми словами

Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…

12.11.2024

Дедлайн в разработке: что это такое простыми словами

Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…

11.11.2024