Разработка
Как WhatsApp вырос до 1 миллиарда пользователей всего с 50 инженерами
Вот описание инженерной культуры и технологического стека, благодаря которым это стало возможным.
Сегодня мы поговорим о том, как WhatsApp вырос до 1 миллиарда пользователей всего с 50 инженерами.
В 2016 году WhatsApp охватил более миллиарда пользователей и имел следующую статистику нагрузки:
- 42 миллиарда сообщений отправляются ежедневно
- 1.6 миллиарда изображений отправляются ежедневно
- 250 миллионов видео отправляются ежедневно
Им удалось обслуживать этот масштаб всего с 50 инженерами.
Вот описание инженерной культуры и технологического стека, благодаря которым это стало возможным.
Инженерная культура
Инженерная культура WhatsApp строится на трех основных принципах:
- Держите вещи маленькими
- Держите вещи простыми
- Сосредоточьтесь на миссии
Держите вещи маленькими
WhatsApp сознательно сокращает штат инженеров до 50 человек.
Отдельные инженерные команды также небольшие, они состоят из 1–3 инженеров, и каждой из них предоставляется значительная автономия.
Что касается серверов, WhatsApp предпочитает использовать меньшее количество серверов и максимально масштабировать каждый сервер по вертикали.
Раньше их цель заключалась в том, чтобы иметь 1 миллион пользователей на каждый сервер (но это стало труднее, поскольку они добавили больше функций в приложение и поскольку пользователи увеличивают активность).
Меньшее количество серверов означает меньшее количество неполадок, что упрощает работу команды.
То же самое и со стороны программного обеспечения, где они ограничивают общее количество систем и компонентов в продакшене.
Это означает, что нужно разрабатывать, развертывать и поддерживать меньше систем.
Существует не так много систем/компонентов, которые разрабатываются и затем переводятся в режим обслуживания (чтобы в конечном итоге работать автономно, пока что-то не пойдет не так).
Держите вещи простыми
WhatsApp использует мантру Just Enough Engineering («Достаточной инженерии»).
Они избегают чрезмерных вложений в системы и компоненты.
Вместо этого они сосредотачиваются на создании ровно того, что нужно для масштабируемости, безопасности и надежности.
Один из ключевых вопросов, когда они делают технический выбор — «какой самый простой подход?».
Кроме того, они избегают инвестирования в автоматизацию, если в этом нет крайней необходимости.
Сосредоточьтесь на миссии
Продуктовый дизайн в WhatsApp невероятно сфокусирован.
Он нацелен на создание главного коммуникационного приложения с отличным пользовательским интерфейсом.
Они избегают лишних наворотов и не реализуют функции, которые не ориентированы исключительно на основные коммуникации.
Более простой продукт значительно упрощает обслуживание и масштабирование.
Стек технологий
Технический стек состоит из трех основных компонентов: Erlang, FreeBSD и SoftLayer.
Erlang
Erlang — предпочтительный язык программирования для серверных систем WhatsApp.
Erlang с самого начала был разработан для параллелизма, и отказоустойчивость — первоклассная особенность языка.
Вы можете узнать больше об отказоустойчивости Erlang здесь.
Производительность разработки с Erlang также чрезвычайно высока. Однако это функциональный язык, поэтому к нему нужно немного привыкнуть, если вы не знакомы с парадигмой.
Язык очень лаконичный, и на нем легко делать вещи с очень небольшим количеством строк кода.
OTP (Open Telecom Platform) — это набор промежуточного программного обеспечения с открытым исходным кодом, библиотек и инструментов для Erlang.
WhatsApp старается максимально избегать зависимостей, но они все же используют Mnesia, распределенную базу данных, которая является частью OTP.
Erlang также предоставляет возможность «горячей замены» кода. Вы можете взять новый код приложения и загрузить его в работающее приложение без его перезапуска.
Это делает цикл итераций очень быстрым и позволяет WhatsApp выпускать быстрые исправления и обеспечивать чрезвычайно длительное время безотказной работы своих сервисов.
Чтобы узнать, как именно бэкэнд WhatsApp построен на Erlang, вы можете посмотреть этот доклад 2018 года.
FreeBSD
FreeBSD — это ОС, которую WhatsApp использует для своих серверов.
Решение использовать FreeBSD было принято основателями WhatsApp, основываясь на своем предыдущем опыте работы в Yahoo!
Все основатели (и многие из первых членов команды) когда-то были частью Yahoo!, где широко использовалась FreeBSD.
Чтобы узнать, как именно WhatsApp использует FreeBSD, вы можете посмотреть этот доклад.
Обратите внимание, что это запись 2014 года, поэтому некоторые вещи могут устареть.
SoftLayer
SoftLayer — это хостинговая платформа, которую WhatsApp использовал в 2016 году.
Они выбрали SoftLayer по двум основным причинам
- Доступность FreeBSD как первоклассной операционной системы.
- Возможность заказа и эксплуатации физических серверов без софта.
Однако SoftLayer принадлежит IBM (часть общедоступного облака IBM), и потом WhatsApp перешел с SoftLayer на использование инфраструктуры Facebook.
Они осуществили переход в 2017 году.
Инструменты и методы, используемые для масштабируемости
Вы можете просмотреть полный доклад о разработке WhatsApp здесь.
Более подробные сведения о масштабируемости WhatsApp можно узнать на сайте High Scalability.