Перетяжка, Карта дня
Перетяжка, Карта дня
Перетяжка, Карта дня

На чём пишут современные соцсети, способные выдержать огромный поток людей

Аватарка пользователя Анна Ельцова
для
Логотип компании Tproger
Tproger
Отредактировано

Соцсетями пользуются более 5 млрд человек по всему миру. Рассказываем, на каких языках программирования их пишут и как они выдерживают такой поток юзеров.

5К открытий28К показов
На чём пишут современные соцсети, способные выдержать огромный поток людей

В 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

На Reddit зарегистрированы почти 900 млн человек, а ежедневно им пользуются 70 млн. Бекэнд Reddit основан на Python — он служит для обработки данных, взаимодействия с пользователями и управления контентом. А интерфейсы написаны на знакомом JavaScript.

Разрабатывать, а главное поддерживать социальные сети — непростая задача, учитывая, какой поток людей заходит в них ежедневно. В основном девелоперы придерживаются опредёленных моделей, но более крупные игроки создают собственные инструменты, которые обеспечивают высокую производительность и стабильность.
Следите за новыми постами
Следите за новыми постами по любимым темам
5К открытий28К показов