23 просмотра
WhatsApp: 1 миллиард пользователей и 50 инженеров
https://www.quastor.org/p/how-whatsapp-scaled-to-1-billionВ 2016 году WhatsApp охватил более миллиарда пользователей и имел следующую статистику нагрузки:
- 42 миллиарда сообщений отправляются ежедневно
- 1,6 миллиарда изображений отправляются ежедневно
- 250 миллионов видео отправляются ежедневно
Им удалось создать этот масштаб всего с 50 инженерами.
Принципы разработки
- Делайте вещи маленькими
- Делайте вещи простыми
- Сосредоточьтесь на одной задаче
Делайте вещи маленькими
WhatsApp сознательно сокращает штат инженеров до 50 человек.
Отдельные команды небольшие, они состоят из 1–3 инженеров, и каждой из них предоставляется значительная автономия.
Что касается серверов, WhatsApp предпочитает использовать меньшее количество серверов и максимально масштабировать каждый сервер по вертикали.
Раньше их цель заключалась в том, чтобы иметь 1 миллион пользователей на каждый сервер (но это стало труднее, поскольку они добавили больше функций в приложение и поскольку пользователи увеличивают активность для каждого пользователя). Меньшее количество серверов означает меньшее количество поломок, что упрощает работу команды.
То же самое и со стороны программного обеспечения, где они ограничивают общее количество систем и компонентов в производстве. Это означает, что нужно разрабатывать, развертывать и поддерживать меньше систем.
Существует не так много систем/компонентов, которые разрабатываются и затем переводятся в режим обслуживания (чтобы в конечном итоге стать сиротами, пока что-то не пойдет не так).
Делайте вещи простыми
WhatsApp использует мантру «Достаточно инженерного дела».
Они избегают чрезмерных вложений в системы и компоненты. Вместо этого они сосредотачиваются на создании ровно столько, сколько нужно для масштабируемости, безопасности и надежности. Один из ключевых факторов, когда они делают технический выбор, - это «какой самый простой подход?» Кроме того, они избегают инвестирования в автоматизацию, если в этом нет крайней необходимости.
Сосредоточьтесь на одной задаче
Дизайн продукта в WhatsApp невероятно сфокусирован. Он предназначен для создания основного коммуникационного приложения с отличным пользовательским интерфейсом. Они избегают лишних наворотов и не реализуют функции, которые не ориентированы исключительно на основные коммуникации. Более простой продукт значительно упрощает обслуживание и масштабирование.
Стек технологий
Технический стек состоит из трех основных компонентов: Erlang, FreeBSD и SoftLayer.
Erlang
Erlang - предпочтительный язык программирования для серверных систем WhatsApp. 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 году.