В феврале 2009 года появился мессенджер под названием WhatsApp (в 2014 году его приобрел Facebook). С тех пор количество его пользователей выросло до 1 млрд, при этом компания славится небольшим штатом — раньше там заявляли, что над мессенджером работают всего 50 инженеров-программистов. Об инженерной культуре и технологическом стеке, благодаря которым это стало возможным, читайте далее.
В 2016 году количество пользователей WhatsApp перевалило за 1 млрд. Статистика нагрузки выглядела следующим образом:
Такие объемы обслуживала команда всего из 50 человек, и вот как это стало возможным.
Инженерная культура WhatsApp базируется на трех основных принципах:
Обо всем по порядку.
В WhatsApp осознанно не расширяют команду, над проектом трудятся всего 50 человек. Отдельные инженерные команды также невелики и состоят из 1–3 специалистов, причем каждая группа работает независимо от другой.
Создатели мессенджера WhatsApp Брайан Эктон и Ян Кум
Что касается серверов, то боссы WhatsApp предпочитают, чтобы их было немного, но при этом они были вертикально масштабированы в максимально возможной степени. Меньшее количество серверов означает меньшее количество поломок, что облегчает работу команды.
То же самое относится и к программной части, где специалисты компании намеренно ограничивают общее количество систем и компонентов в производстве, что означает меньшее количество систем, которые необходимо разрабатывать, внедрять и поддерживать.
В WhatsApp следуют принципу «достаточной инженерии», избегая чрезмерного инвестирования в системы и компоненты. Вместо этого в компании делают акцент на масштабируемости, безопасности и надежности.
Шаблон интерфейса WhatsApp
При выборе технических решений в WhatsApp сначала стараются ответить на вопрос: «какой подход самый простой?». Кроме того, в компании стараются не инвестировать в автоматизацию, если можно обойтись без нее.
Дизайн WhatsApp хорошо проработан. Он нацелен на создание коммуникационного приложения с хорошим UI и без лишних наворотов. В компании стараются не внедрять функции, которые не предназначены для коммуникаций. Чем проще продукт, тем проще его поддерживать и масштабировать.
Стек технологий WhatsApp состоит из трех основных компонентов:
Это язык программирования, на котором написан бэкенд 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 выпускать быстрые исправления и обеспечивает длительное время бесперебойной работы серверов.
Это операционная система, которую WhatsApp использует для своих серверов. Решение использовать FreeBSD создатели мессенджера приняли на основе своего предыдущего опыта работы в Yahoo.
Узнать, как именно в WhatsApp используется FreeBSD, можно в докладе по ссылке.
Это хостинговая платформа, которую WhatsApp использовал в 2016 году. Выбор пал на нее по двум причинам:
Минус в том, что SoftLayer принадлежит IBM, поэтому со временем WhatsApp перешел от этой платформы на инфраструктуру Facebook.
А обо всех инструментах и техниках, которые в компании используют для масштабирования, можно почитать здесь.
Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…
Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…
Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…
В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…
Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…
Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…