На чём пишут современные соцсети, способные выдержать огромный поток людей
Соцсетями пользуются более 5 млрд человек по всему миру. Рассказываем, на каких языках программирования их пишут и как они выдерживают такой поток юзеров.
4К открытий27К показов
В 2024 году аудитория социальных сетей достигла 5 млрд человек. К слову, всего 10 лет назад количество пользователей было чуть меньше 2 млрд, а в 2004, когда появились Facebook* (принадлежит компании Meta, запрещенной в РФ), MySpace и Friendster — всего 227 млн.
Сейчас среди самых популярных соцсетей — Facebook* (больше 3 млрд пользоваталей), Instagram* (принадлежит компании Meta, запрещенной в РФ, 2 млрд пользователей), TikTok (1,5 млрд пользователей), Telegram (900 млн), а также другие площадки, такие как YouTube (2,5 млрд пользователей), WhatsApp (2 млрд пользователей), китайский WeChat (1,3 млрд пользователей) и SnapChat (750 млн пользователей).
Ежедневно соцсетями пользуется огромное количество людей. Например, среднесуточная аудитория Telegram составляет 450 млн человек, а Instagram* — 500 млн человек.
Такое число пользователей ставит перед разработчиками непростую задачу: мало сделать платформу стильной и удобной в использовании — нужно написать её код так, чтобы она выдерживала многомиллионный поток юзеров каждую секунду и не «падала».
Ниже рассказываем о том, как и на каких языках программирования создаются социальные сети.
Как «строятся» современные соцсети
За созданием социальной сети лежит не один язык программирования, а целый кластер технологий — именно они обеспечивают стабильную работу приложений. База большинства современных соцсетей — микросервисная архитектура. При этом подходе приложение разбивается на набор небольших, независимых сервисов, каждый из которых выполняет свою специфическую задачу, плюс у каждого микросервиса своя база данных. Например, у мессенджера внутри Instagram* одна база данных, а Reels* — другая.
Чтобы несколько микросервисов работали слаженно, нужно, чтобы каждый из них запускался в своём контейнере. За это отвечает Docker — он позволяет упаковывать приложения и их зависимости в контейнеры, которые могут быть легко развёрнуты и управляемы на любом сервере.
Для управления микросервисами используют Kubernetes — он упорядочивает и автоматизирует их работу. Этот процесс называется оркестрацией контейнеров. Благодаря ему можно обновить, откатить назад и увеличить мощность только одной части приложения.
Так, чтобы добавить в соцсеть сторис, разработчикам не нужно переписывать весь код — достаточно создать новый контейнер, который будет отвечать только за это. Кстати, занимаются этим DevOps инженеры.
К тому же работа социальных сетей зависит от стабильного функционирования серверов, баз данных и облачных технологий. Например, в TikTok используются такие базы данных, как MongoDB, SQL, Cassandra, и MySQL, а в качестве облаков — Amazon Web Services (AWS) или Google Cloud Platform (GCP).
Сейчас два ключевых принципа, которые лежат в основе социальных сетей — это защита данных пользователей и глубокая персонализация контента.
- Защита данных. Подразумевает шифрование данных, использование безопасных протоколов связи (например, HTTPS), а также строгие политики управления доступом. Социальные сети обязаны защищать данные пользователей от несанкционированного доступа и утечек.
К сожалению, некоторые площадки пренебрегают безопасностью своих пользователей. Так, в 2021 году данные более 500 млн пользователей Facebook* просочились в сеть — злоумышленники продавали номера телефонов через Telegram и могли воспользоваться персональной информацией жертв слива в любой момент. А в 2023 году хакеры украли личные данные сотрудников и бизнес-партнёров, а также исходный код Reddit — это случилось потому, что один из сотрудников попался на фишинговую кампанию. К счастью, персональная информация пользователей не пострадала.
Несмотря на различные системы защиты и шифрования данных, никто в сети не может быть в безопасности. Поэтому всегда нужно помнить: всё, что происходит в интернете, остаётся в интернете.
- Глубокая персонализация. Включает использование алгоритмов машинного обучения и анализа данных, чтобы предоставлять пользователям контент, который соответствует их интересам и поведению. Сюда входят рекомендательные системы, персонализированные новости и таргетированная реклама.
Разумеется, язык программирования — такой же ключевой элемент создания соцсетей. Ниже рассмотрим, на чём же написаны популярные площадки.
Facebook*
Бэкенд Facebook* был изначально написан на PHP. Впоследствии компания разработала собственный язык программирования Hack — он расширил возможности PHP за счёт статической типизации и других функций, повышающих производительность.
Среди веб-технологий — JavaScript и React. Кстати, последний фреймворк также разработали в самом Facebook*, равно как и Thrift — инструмент для масштабируемой разработки межъязыковых сервисов, используется для межсервисной коммуникации.
Мобильные приложения в основном пишутся на нативных языках: Java/Kotlin используются для Android, а Objective-C/Swift — для iOS.
Всё это вместе с MySQL и Cassandra делает приложение удобным в использовании, а главное — стабильным, учитывая, что им пользуются более 3 млрд человек по всему миру. Правда, случаются и казусы: в октябре 2021 года сервисы Meta* (запрещена на территории РФ) «лежали» больше шести часов. Тогда кто-то из сотрудников обновил маршрутизаторы, но в какой-то момент что-то пошло не так, и системы дали сбой.
VK
Российский брат Facebook* тоже был написан на PHP. Однако со временем его производительности не хватало для такой крупной платформы, и в 2014 году компания решила разработать собственный компилятор KPHP — он поддерживает узкое подмножество PHP.
KPHP берёт код на PHP, превращает его в код на C++, а потом компилирует.
Среди преимуществ собственного инструмента — строгая типизация, асинхронность, «шаренная» память для всех сотрудников, оптимизация времени компиляции и рантайма. В общем, профит в скорости и надёжности.
И всё это, чтобы сеть оставалась производительной при большом потоке пользователей — в октябре 2023 года в VK заходили почти 90 млн юзеров.
Кстати, код KPHP можно посмотреть на GitHub.
Instagram*
Бэкенд соцсети написан на Python, а динамичные и удобные пользовательские интерфейсы — на JavaScript и React. Приложение для iOS разработано на Swift и Objective-C, для Android же использовался Java и Kotlin — всё для чёткого кроссплатформенного взаимодействия.
Базы данных пишутся на PostgreSQL, Cassandra и Redis. Среди других фишек — RabbitMQ, который упрощает взаимодействие между различными сервисами.
X (Twitter)
X пользуются более 600 млн человек по всему миру. Соцсеть написана на базе Ruby (бэкенд), Scala и JavaScript. Ruby и Scala отвечают за производительность, масштабируемость и параллелизм. А JavaScript — снова история про интерактивные пользовательские интерфейсы, которые обновляются в режиме реального времени.
Telegram
Telegram сейчас — уже не просто мессенджер, учитывая, что появляется всё больше личных телеграмм-каналов. Павел Дуров даже «хотел» вернуть стену, правда, это была первоапрельская шутка. Но мем «Дуров, верни стену» по-прежнему актуален.
У Telegram есть несколько версий:
- десктоп-версия для Windows написана на C++;
- приложение для MacOs базируется на Objective-C, C и Swift;
- версия для iOS тоже написана на Objective-C и Swift;
- android-приложение разработано на Java, C++ и C;
- веб-версия Telegram базируется на NodeJS и AngularJS в качестве бэкенд и фронтенд-фреймворков.
Для разработки ботов есть Telegram API — это набор инструментов и интерфейсов программирования приложений, созданный Telegram специально для разработчиков. Он доступен на множестве языков программирования: Ruby, Python, Java, JS, PHP, C# и др.
TikTok
Платформа для настоящих зумеров была разработана на Objective-C и Swift для iOS и на Java и Kotlin для Android. Среди баз данных — MongoDB, SQL, Cassandra и MySQL.
Также TikTok использует облачные сервисы, такие как Amazon Web Services (AWS) и Google Cloud Platform (GCP), для поддержки бэкенда, систем хранения данных и вычислений.
На Reddit зарегистрированы почти 900 млн человек, а ежедневно им пользуются 70 млн. Бекэнд Reddit основан на Python — он служит для обработки данных, взаимодействия с пользователями и управления контентом. А интерфейсы написаны на знакомом JavaScript.
Разрабатывать, а главное поддерживать социальные сети — непростая задача, учитывая, какой поток людей заходит в них ежедневно. В основном девелоперы придерживаются опредёленных моделей, но более крупные игроки создают собственные инструменты, которые обеспечивают высокую производительность и стабильность.
4К открытий27К показов