НСПК / 24.12.24 / перетяжка / 2W5zFK76vmn
НСПК / 24.12.24 / перетяжка / 2W5zFK76vmn
НСПК / 24.12.24 / перетяжка / 2W5zFK76vmn

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

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

Соцсетями пользуются более 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

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

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