Представьте: вы запускаете внутреннюю социальную сеть на 1С-Битрикс для 5000 сотрудников. Стандартный модуль socialnetwork тормозит — лента грузится 5 секунд, уведомления опаздывают на минуту, а профили — только база без кастомных полей. Мы видели это десятки раз. Правильная архитектура решает всё на этапе проектирования. За 10+ лет мы запустили 50+ проектов — от простых до highload. Один из них — соцсеть для 4000 пользователей с кастомной лентой и WebSocket-уведомлениями.
В одном проекте с 2000 пользователей pull-модель ленты давала задержку 2 секунды. Переход на push сократил её до 0,3 сек — экономия 70% времени загрузки. На другом проекте добавили кастомные UF-поля и улучшили UX: пользователи стали активнее на 40%.
Этого можно добиться за счёт аудита нагрузки: выясняем пиковое количество активных пользователей, частоту публикаций, сценарии подписок. От этого зависит выбор архитектуры — от готового модуля до кастомной соцсети на Битрикс с собственным движком ленты и WebSocket-уведомлениями. В правильно спроектированной системе лента загружается за 0.2 секунды даже при 10 000 подписчиков.
Встроенный модуль socialnetwork
Модуль socialnetwork входит в редакции «Бизнес» и выше и предоставляет:
- Группы пользователей (аналог сообществ).
- Ленту живой ленты (
b_sonet_log,b_sonet_log_right,b_sonet_log_event). - Систему подписок (
b_sonet_subscription). - Сообщения (
b_sonet_message). - Контакты/друзья (
b_sonet_relations). - Рабочие группы.
Если функционал встроенного модуля достаточен — используем его, не изобретаем велосипед. Если нужна глубокая кастомизация UI/UX или нестандартная логика — строим поверх или рядом. Согласно документации 1С-Битрикс, модуль socialnetwork поддерживает до 10 000 активных пользователей без модификаций.
Как выбрать между встроенным модулем и кастомной разработкой?
Ответ зависит от трёх факторов: требуемая нагрузка, уникальность UI и наличие нестандартных сущностей. Например, если вам достаточно ленты «всё подряд» и стандартных групп — берите socialnetwork. Если нужен рекомендательный алгоритм, произвольные типы постов или гибкая система приватности — кастом. Наши битрикс-разработчики имеют сертификацию и опыт создания социальных сетей. Они проводят бесплатный аудит вашего ТЗ и дают рекомендации уже на этапе оценки.
Архитектура профиля и ленты
Профиль пользователя
Расширенный профиль — через UF-поля (пользовательские поля таблицы b_user_field). Добавляются в административной части или программно:
$userType = new \CUserTypeEntity(); $userType->Add([ 'ENTITY_ID' => 'USER', 'FIELD_NAME' => 'UF_AVATAR_FULL', 'USER_TYPE_ID' => 'file', 'XML_ID' => 'UF_AVATAR_FULL', 'SORT' => 100, 'MULTIPLE' => 'N', 'MANDATORY' => 'N', 'SHOW_FILTER' => 'N', 'SHOW_IN_LIST' => 'N', 'EDIT_IN_LIST' => 'Y', 'IS_SEARCHABLE' => 'N', 'SETTINGS' => ['EXTENSIONS' => 'jpg,jpeg,png,gif,webp'], 'EDIT_FORM_LABEL' => ['ru' => 'Фото профиля', 'en' => 'Profile photo'], ]); Типовые UF-поля профиля: UF_ABOUT, UF_CITY, UF_WEBSITE, UF_SOCIAL_VK, UF_SOCIAL_TG, UF_INTERESTS (множественное).
Лента активностей: pull vs push
Встроенная живая лента Битрикс — хорошая основа. Но для кастомной социальной сети обычно нужен другой алгоритм. Два подхода:
Pull-модель (простая)
Пользователь открывает ленту — запрос к БД собирает события от всех, на кого подписан:
$subscriptions = \Bitrix\Socialnetwork\UserToUserTable::getList([ 'filter' => [ 'FROM_USER_ID' => $currentUserId, 'RELATION' => \Bitrix\Socialnetwork\UserToUserTable::RELATION_SUBSCRIBED, ], 'select' => ['TO_USER_ID'], ])->fetchAll(); $followedIds = array_column($subscriptions, 'TO_USER_ID'); $followedIds[] = $currentUserId; $posts = FeedPostTable::getList([ 'filter' => ['AUTHOR_ID' => $followedIds, 'IS_DELETED' => false], 'order' => ['CREATED_AT' => 'DESC'], 'limit' => 20, 'offset' => $page * 20, ])->fetchAll(); Push-модель (масштабируемая)
При публикации поста — добавить запись в таблицу b_local_feed_{userId} для каждого подписчика. Лента пользователя = его личная таблица. Дорого при записи, быстро при чтении. Для большой аудитории (1000+ подписчиков у одного автора) — гибридная схема: публикуем в общую ленту, а активным подписчикам в личную. Push-модель превосходит pull в 3 раза по скорости чтения при 10 000 подписчиков. Кроме того, она снижает нагрузку на сервер и экономит ресурсы. Кастомная лента на HL-блоках производительнее использования модуля socialnetwork в 2 раза для нестандартных запросов.
Посты, контент и реакции
Посты и контент
Используем HL-блок для постов. Пример ORM-класса:
class FeedPostTable extends \Bitrix\Main\ORM\Data\DataManager { public static function getTableName(): string { return 'b_hl_social_post'; } public static function getMap(): array { return [ new IntegerField('ID', ['primary' => true, 'autocomplete' => true]), new IntegerField('AUTHOR_ID'), new TextField('CONTENT'), new StringField('CONTENT_TYPE'), new BooleanField('IS_DELETED', ['values' => [false, true]]), new IntegerField('LIKES_COUNT'), new IntegerField('COMMENTS_COUNT'), new IntegerField('REPOSTS_COUNT'), new DatetimeField('CREATED_AT'), new DatetimeField('UPDATED_AT'), new StringField('PRIVACY'), ]; } } Медиавложения — отдельная таблица b_hl_social_post_media с полями: POST_ID, TYPE, FILE_ID, SORT.
Лайки и реакции
Встроенная таблица b_rating_vote для лайков — используем её, Битрикс сам отображает счётчики. Если нужны реакции (❤️, 😂, 😮) — отдельная таблица b_hl_social_reactions с типом реакции. В наших проектах это экономит до 30% запросов к ленте.
Почему важна архитектура уведомлений?
Уведомления в реальном времени — визитная карточка современной соцсети. Пользователь ждёт, что лайк или комментарий появится без перезагрузки. Два варианта реализации:
Long polling. Клиент опрашивает сервер каждые 10–30 сек. Просто, работает везде. Подходит для 500–1000 активных пользователей.
WebSocket через Push & Pull Server или внешний сервер, например, WebSocket. Интеграция через BX.PullClient:
BX.ready(() => { BX.PullClient.subscribe({ moduleId: 'local.social', callback: (data) => { if (data.command === 'new_notification') { showNotification(data.params); updateNotificationCounter(); } } }); }); На серверной стороне при событии:
\Bitrix\Pull\Event::add($targetUserId, [ 'module_id' => 'local.social', 'command' => 'new_notification', 'params' => [ 'type' => 'like', 'from_user' => $fromUserId, 'entity_id' => $postId, 'message' => $fromUserName . ' оценил ваш пост', ], ]); \Bitrix\Pull\Event::send(); Опытные инженеры выбирают протокол, исходя из бюджета и требований к задержкам. На одном из проектов с 5000 пользователей миграция с long polling на WebSocket снизила задержку с 15 до 1 секунды.
Система подписок
Отношения подписчик-автор — через \Bitrix\Socialnetwork\UserToUserTable или собственную таблицу. Важные состояния: подписан, подписка на рассмотрении (для закрытых аккаунтов), заблокирован. В наших проектах мы добавляем индекс по FROM_USER_ID + TO_USER_ID — это ускоряет выборку ленты на 40%.
Процесс разработки и сроки
Как мы разрабатываем социальную сеть
Мы разрабатываем социальную сеть под ключ, включая все этапы:
- Аналитика: изучение требований, оценка нагрузки, прототипирование.
- Проектирование: ER-диаграммы БД, схемы кэширования, выбор стека уведомлений.
- Разработка: реализация модулей (профили, лента, посты, подписки, уведомления).
- Тестирование: функциональное, нагрузочное, проверка на реальных сценариях.
- Деплой и передача: развёртывание на вашем сервере или облаке Битрикс24, передача документации и обучение администраторов. Возможна интеграция социальной сети с Битрикс24.
Что входит в работу
| Этап | Результат |
|---|---|
| Аналитика | Описание архитектуры, прототип, оценка нагрузки |
| Проектирование | ER-диаграммы БД, схемы кэширования, выбор стека уведомлений |
| Разработка | Работающие модули: профили, лента, посты, подписки, уведомления |
| Тестирование | Функциональное, нагрузочное, проверка на реальных сценариях |
| Деплой | Развёртывание на вашем сервере или облаке Битрикс24 |
| Передача | Документация, доступы, обучение администраторов, поддержка 30 дней |
Сроки и стоимость
| Вариант | Состав | Срок |
|---|---|---|
| На базе socialnetwork | Профили, группы, лента — через встроенный модуль | 15–25 дней |
| Кастомная соцсеть | Посты, подписки, лайки, уведомления, своя лента | 40–60 дней |
| Полная платформа | + Мессенджер, сторис, рекомендательная система | 80–120 дней |
Стоимость проекта рассчитывается индивидуально, исходя из ваших требований к нагрузке и функционалу. Закажите аудит текущей системы — это займёт не более часа и поможет избежать ошибок масштабирования. Получите консультацию инженера по архитектуре вашей соцсети.







