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

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 хорошо проработан. Он нацелен на создание коммуникационного приложения с хорошим 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. 

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

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

Обучение Power BI – какие онлайн курсы аналитики выбрать

Сегодня мы поговорим о том, как выбрать лучшие курсы Power BI в Украине, особенно для…

13.01.2024

Work.ua назвал самые конкурентные вакансии в IТ за 2023 год

В 2023 году во всех крупнейших регионах конкуренция за вакансию выросла на 5–12%. Не исключением…

08.12.2023

Украинская IT-рекрутерка создала бесплатный трекер поиска работы

Unicorn Hunter/Talent Manager Лина Калиш создала бесплатный трекер поиска работы в Notion, систематизирующий все этапы…

07.12.2023

Mate academy отправит работников в 10-дневный оплачиваемый отпуск

Edtech-стартап Mate academy принял решение отправить своих работников в десятидневный отпуск – с 25 декабря…

07.12.2023

Переписки, фото, история браузера: киевский программист зарабатывал на шпионаже

Служба безопасности Украины задержала в Киеве 46-летнего программиста, который за деньги устанавливал шпионские программы и…

07.12.2023

Как вырасти до сеньйора? Девелопер создал популярную подборку на Github

IT-специалист Джордан Катлер создал и выложил на Github подборку разнообразных ресурсов, которые помогут достичь уровня…

07.12.2023