В нашем блоге мы рассказываем об опыте разных компаний по работе с инфраструктурой и пишем о том, как сами работаем над созданием облачного провайдера 1cloud. За несколько лет мы добились определенного прогресса в условиях ограниченных ресурсов, а у блога молодого проекта появилось множество читателей).
В том числе поэтому история о том, как мессенджер WhatsApp для работы с 900 млн пользователей обходится всего 50 инженерами, показалась нам интересной.
900 миллионов пользователей
4 сентября сооснователь WhatsApp Ян Кум написал в своем Facebook о том, что число пользователей мессенджера достигло 900 млн. Первым комментарием к записи стало поздравление от основателя соцсети Марка Цукерберга, который чуть больше года назад выложил за WhatsApp $19 млрд.
WhatsApp теперь часть Facebook, однако как во многих интервью подчеркиваем Кум, его команда по-прежнему обладает большой самостоятельностью в развитии проекта — а значит, заслуг Facebook в его выходе на такой высокий уровень не так и много, а всю основную работу делают инженеры Кума.
На момент сделки с Facebook в команде WhatsApp было 35 инженеров, которые обеспечивали работу сервиса для 450 млн пользователей. Теперь пользователей удвоилось, а инженеров стало только 50. Представители проекта редко рассказывают о том, как выстроены их рабочие процессы, однако на недавно на одном из мероприятий для разработчиков, инженер WhatsApp Джамшид Махдави (Jamshid Mahdavi) раскрыл некоторые подходы компании.
Erlang и мессенджеры
Системы мессенджера создаются с помощью языка программирования Erlang, который хорошо подходив для обеспечения параллельной работы различных процессов.
Чем больше пользователей и число задач, которые они ставят перед сервисом, тем востребованнее подобные языки. К примеру, для создания антиспам-системы Facebook использовался Haskell, который был создан в 80 годах в рамках академического эксперимента и до сих пор не так уж широко используется. Однако для задач Facebook очень важна возможность одновременной обработки множества событий, и здесь Haskell подходит очень хорошо. В свою очередь Google и Mozilla используют для похожих задач новые языки Go и Rust.
Как и Haskell, Erlang родился в 80-х — первая версия платформы была разработана сотрудниками Ericsson Джо Армстронгом, Робертом Вирдингом и Майком Уильямсом в 1986 году. Изначально язык был закрытым и использовался только для внутренних проектов компании, однако в дальнейшем руководство Ericsson отказалось от поддержки внутреннего языка программирования в пользу Java и других платформ. В итоге код платформы был открыт под лицензией Erlang Public License.
Покинувшие Ericsson разработчики Erlang продолжили заниматься его развитием, поэтому он продолжил свою жизнь. С началом эпохи мессенджеров у Erlang открылось второе дыхание — язык активно используется не только командой WhatsApp, но и разработчиками таких приложений, как WeChat и Whisper, которым также важна масштабируемость и надежность, а также высокая скорость разработки (что является одним из плюсов Erlang).
Нужно все упрощать
Использование Erlang имеет и свои минусы. Во-первых, этот язык знает относительно небольшое количество разработчиков. Кроме того, продукты на Erlang не так просто интегрировать с уже существующей инфраструктурой большой интернет-компании. Например, Facebook изначально создал приложение Chat на Erlang, но позднее переписал его, чтобы приложение лучше интегрировалось с другими системами.
Вице-президент соцсети по инженерии Джей Парик (Jay Parikh) называет Erlang
«маленьким островом, для связи которого с большой землей нужно слишком много лодок».
WhatsApp не сталкивался с необходимостью осуществления подобных интеграций. И Махдави считает, что дефицит Erlang-разработчиков не является большой проблемой.
Мы стараемся нанимать талантливых инженеров, а не тех, кто просто знает Erlang& Когда мы нанимаем нового разработчика, то хотим, чтобы первое время он осваивал новый язык и средой его использования. Если инженер талантлив, он сможет это сделать и без большого опыта работы с этим конкретным языком.
Кроме того, Махдави говорит, что справляться таким небольшим количеством людей компании удается из-за ее культуры, в которой не приветствуются вещи, которые отвлекают — будь то использование новых «горячих» технологий или разнообразные совещания. В WhatsApp работают всего несколько десятков человек, и они никогда не тратят время на встречи.
heathen
Простите, а причина, почему так мало инженеров поддерживают столь большое количество пользователей в том, что они используют Erlang, в том, что WhatsApp нанимает инженеров без опыта использования этого языка или в том, что у них совещаний нет?
develop7
почему или? всего понемногу, очевидно
heathen
Статья, судя по заголовку, должна показать нам опыт WhatsApp по работе с highload с минимальными вложениями труда. А в результате опять половина статьи посвящена Эрлангу, две строчки о том, что они берут инженеров без опыта работы с Erlang и ещё две — о том, что у них нет совещаний.
Мой комментарий был саркастическим. Совершенно не приветствую бессодержательные статьи. Вот вся статья, если убрать оттуда воду:
«WhatsApp — мессенджер, который за время с момента покупки компанией Facebook увеличил количество клиентов с 450 миллионов до 900, а количество инженеров — с 35 до всего 50. Это удалось благодаря использованию языка Эрланг, а так же тому, что они принимают на работу инженеров, которые не разбираются в Erlang и учат их (инженеров) своими силами, а так же благодаря отсутствию совещаний и использованию старых технологий».
Я понимаю, что это корпоративный блог, но неужели нельзя найти интереснее информационный повод, чтобы о себе напомнить?
auine
Может быть потому, что они могут позволить себе мощности, и потому, что они под крылом фейсбука — хайлоад проекта с опытом.