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.
А обо всех инструментах и техниках, которые в компании используют для масштабирования, можно почитать здесь.
Сообщить об опечатке
Текст, который будет отправлен нашим редакторам: